Name: series-workflowd2xgc Phase: Succeeded StartedAt: 2026-08-12 16:40:45 +0000 UTC FinishedAt: 2026-08-12 18:11:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[0] Phase: Succeeded StartedAt: 2026-08-12 16:40:45 +0000 UTC FinishedAt: 2026-08-12 17:27:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 16:40:45 +0000 UTC FinishedAt: 2026-08-12 17:27:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4f25071afe9218aaae1c63fbf75e229aa6405319", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "RTW88", "RTW88_8822CU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4f25071afe9218aaae1c63fbf75e229aa6405319", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "RTW88", "RTW88_8822CU" ], "series_id": "d2e5353f-b780-4f89-a794-29e43edc1934" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw8822c_phy_set_param", "rtw8822c_phy_calibration" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJDVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0dzg4MjJjX3BoeV9zZXRfcGFyYW0mIzM0OywKICAgICYjMzQ7cnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgcnR3ODggZHJpdmVyIGJ5IHJlcGxhY2luZyBjdXN0b20gMTAtYml0IHNpZ24tbWFnbml0dWRlL3R3byYjMzk7cy1jb21wbGVtZW50IGFyaXRobWV0aWMgYW5kIGEgY3VzdG9tIGJ1YmJsZSBzb3J0IHdpdGggc3RhbmRhcmQgYHMzMmAgdHlwZXMsIGBzaWduX2V4dGVuZDMyKClgLCBhbmQgdGhlIGtlcm5lbCYjMzk7cyBidWlsdC1pbiBgc29ydCgpYCBmdW5jdGlvbi4gXG5cbldoaWxlIHRoZSBzdGFjay1hbGxvY2F0ZWQgYXJyYXlzIGBpdmAgYW5kIGBxdmAgY291bGQgcG90ZW50aWFsbHkgY29udGFpbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpZiB0aGUgc2FtcGxpbmcgbG9vcCBpbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoKWAgdGVybWluYXRlcyBlYXJseSAoZHVlIHRvIHRoZSBgY250IFx1MDAzYyAxMDAwMGAgY29uZGl0aW9uKSwgdGhpcyBiZWhhdmlvciBhbmQgdGhlIHN1YnNlcXVlbnQgcmVhZHMgb2YgdGhlIGVudGlyZSBhcnJheSB3ZXJlIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgb2xkIGNvZGUuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIG5ldyBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBhcml0aG1ldGljIGFuZCBzb3J0aW5nIHJlZmFjdG9yaW5nLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQgZm9yIHRoaXMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQUMgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIFJlYWx0ZWsgcnR3ODgyMmMgd2lyZWxlc3MgZHJpdmVyLCBzaW1wbGlmeWluZyBzb3J0aW5nIGFuZCBvZmZzZXQgY2FsY3VsYXRpb25zLiBUaGlzIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15IEhDRCkgYnkgZW5hYmxpbmcgdGhlIFVTQiB2YXJpYW50IG9mIHRoZSBkcml2ZXIgKENPTkZJR19SVFc4OF84ODIyQ1UpLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBleGVjdXRlZCBkdXJpbmcgUEhZIHBhcmFtZXRlciBzZXR1cCBhbmQgY2FsaWJyYXRpb24sIHdoaWNoIGFyZSBhY2Nlc3NpYmxlIHZpYSB0aGUgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFuZCBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYCBjYWxsYmFja3MuIFRoZXNlIGNhbGxiYWNrcyBhcmUgbm90IGlubGluZWQgYXMgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgaW4gdGhlIGNoaXAgb3BlcmF0aW9ucyBzdHJ1Y3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZjQ2NzdjZmJlODY0NmVmYzhiNjcyNDViYWZiYjlhYmI3Y2RjODY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTc6MjQ6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXG5pbmRleCAyNDRjODAyNjQ3OWMyLi42ZmNkZmM2NGMzYjFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbkBAIC0zLDYgJiM0MzszLDggQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRvcHMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9zb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDttYWluLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtjb2V4LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtmdy5oXCYjMzQ7XG5AQCAtMTUzLDg0ICYjNDM7MTU1LDMwIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSxcbi1cdFx0XHRcdCAgIHUzMiAqbWluLCB1MzIgKm1heClcbiYjNDM7c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuIHtcbi1cdGlmICh2YWx1ZSBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdGlmICgqbWluIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1pbiBcdTAwM2UgdmFsdWUpXG4tXHRcdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXHRcdGlmICgqbWF4IFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdGlmICgqbWluIFx1MDAzYyAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fVxuLVxuLVx0XHRpZiAoKm1heCAgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH1cbi19XG4mIzQzO1x0czMyIHZhID0gKihjb25zdCBzMzIgKilhO1xuJiM0MztcdHMzMiB2YiA9ICooY29uc3QgczMyICopYjtcbiBcbi1zdGF0aWMgdm9pZCBfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdjEsIHUzMiAqdjIpXG4te1xuLVx0aWYgKCp2MSBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRpZiAoKnYxIFx1MDAzZSAqdjIpXG4tXHRcdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9IGVsc2UgaWYgKCp2MSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2ICp2MiBcdTAwM2MgMHgyMDApIHtcbi1cdFx0aWYgKCp2MSBcdTAwM2UgKnYyKVxuLVx0XHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fSBlbHNlIGlmICgqdjEgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH1cbiYjNDM7XHRyZXR1cm4gKHZhIFx1MDAzZSB2YikgLSAodmEgXHUwMDNjIHZiKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbiB7XG4tXHR1MzIgaSwgajtcbi1cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkMgLSAxOyBpJiM0MzsmIzQzOykge1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyAoREFDS19TTl84ODIyQyAtIDEgLSBpKSA7IGomIzQzOyYjNDM7KSB7XG4tXHRcdFx0X19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIFx1MDAyNml2W2pdLCBcdTAwMjZpdltqICYjNDM7IDFdKTtcbi1cdFx0XHRfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgXHUwMDI2cXZbal0sIFx1MDAyNnF2W2ogJiM0MzsgMV0pO1xuLVx0XHR9XG4tXHR9XG4mIzQzO1x0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcbiYjNDM7XHRzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbClcbiYjNDM7c3RhdGljIHMzMiBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqdmVjKVxuIHtcbi1cdHUzMiBwLCBtLCB0LCBpO1xuJiM0MztcdHMzMiBzdW0gPSAwO1xuIFxuLVx0bSA9IDA7XG4tXHRwID0gMDtcbi1cdGZvciAoaSA9IDEwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGlmICh2ZWNbaV0gXHUwMDNlIDB4MjAwKVxuLVx0XHRcdG0gPSAoMHg0MDAgLSB2ZWNbaV0pICYjNDM7IG07XG4tXHRcdGVsc2Vcbi1cdFx0XHRwID0gdmVjW2ldICYjNDM7IHA7XG4tXHR9XG4mIzQzO1x0Zm9yICh1MzIgaSA9IDEwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0c3VtICYjNDM7PSB2ZWNbaV07XG4gXG4tXHRpZiAocCBcdTAwM2UgbSkge1xuLVx0XHR0ID0gcCAtIG07XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHR9IGVsc2Uge1xuLVx0XHR0ID0gbSAtIHA7XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHRcdGlmICh0ICE9IDB4MClcbi1cdFx0XHR0ID0gMHg0MDAgLSB0O1xuLVx0fVxuJiM0MztcdHMzMiBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKTtcbiBcbi1cdCp2YWwgPSB0O1xuJiM0MztcdHJldHVybiBhdmcgXHUwMDNlPSAwID8gYXZnIDogMHg0MDAgJiM0MzsgYXZnO1xuIH1cbiBcbiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcbkBAIC0yNzEsMjkgJiM0MzsyMTksMjcgQEAgc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIodTggcGF0aClcbiBcdHJldHVybiBiYXNlX2FkZHI7XG4gfVxuIFxuLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpXG4mIzQzO3N0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXG4ge1xuLVx0Ym9vbCByZXQgPSB0cnVlO1xuIFxuLVx0aWYgKCh2YWx1ZSBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiAoMHg0MDAgLSB2YWx1ZSkgXHUwMDNlIDB4NjQpIHx8XG4tXHQgICAgKHZhbHVlIFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgdmFsdWUgXHUwMDNlIDB4NjQpKSB7XG4tXHRcdHJldCA9IGZhbHNlO1xuJiM0MztcdGlmICh2YWx1ZSBcdTAwM2UgMTAwIHx8IHZhbHVlIFx1MDAzYyAtMTAwKSB7XG4gXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgXCYjMzQ7W0RBQ0tdIEVycm9yIG92ZXJmbG93XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXG4mIzQzO3N0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG4ge1xuIFx0dTMyIHRlbXA7XG4tXHRpbnQgaSA9IDAsIGNudCA9IDA7XG4mIzQzO1x0dTMyIGkgPSAwLCBjbnQgPSAwO1xuIFxuIFx0d2hpbGUgKGkgXHUwMDNjIERBQ0tfU05fODgyMkMgXHUwMDI2XHUwMDI2IGNudCBcdTAwM2MgMTAwMDApIHtcbiBcdFx0Y250JiM0MzsmIzQzOztcbiBcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRpdltpXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRxdltpXSA9IHRlbXAgXHUwMDI2IDB4M2ZmO1xuJiM0MztcdFx0aXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbiYjNDM7XHRcdHF2W2ldID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXG4gXHRcdGlmIChydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBpdltpXSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXG5AQCAtMzAyLDEzICYjNDM7MjQ4LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4tXHRcdFx0XHQgICAgICAgdTMyICppdiwgdTMyICpxdixcbiYjNDM7XHRcdFx0XHQgICAgICAgczMyICppdiwgczMyICpxdixcbiBcdFx0XHRcdCAgICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcbiB7XG4tXHR1MzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuLVx0dTMyIGlfZGVsdGEsIHFfZGVsdGE7XG4mIzQzO1x0czMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcbiBcdHUzMiB0ZW1wO1xuLVx0aW50IGksIGNudCA9IDA7XG4mIzQzO1x0dTMyIGksIGNudCA9IDA7XG4gXG4gXHRkbyB7XG4gXHRcdGlfbWluID0gaXZbMF07XG5AQCAtMzE2LDIzICYjNDM7MjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdHFfbWluID0gcXZbMF07XG4gXHRcdHFfbWF4ID0gcXZbMF07XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdFx0cnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIGl2W2ldLCBcdTAwMjZpX21pbiwgXHUwMDI2aV9tYXgpO1xuLVx0XHRcdHJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBxdltpXSwgXHUwMDI2cV9taW4sIFx1MDAyNnFfbWF4KTtcbiYjNDM7XHRcdFx0aWYgKGl2W2ldIFx1MDAzYyBpX21pbilcbiYjNDM7XHRcdFx0XHRpX21pbiA9IGl2W2ldO1xuJiM0MztcdFx0XHRpZiAoaXZbaV0gXHUwMDNlIGlfbWF4KVxuJiM0MztcdFx0XHRcdGlfbWF4ID0gaXZbaV07XG4mIzQzO1x0XHRcdGlmIChxdltpXSBcdTAwM2MgcV9taW4pXG4mIzQzO1x0XHRcdFx0cV9taW4gPSBxdltpXTtcbiYjNDM7XHRcdFx0aWYgKHF2W2ldIFx1MDAzZSBxX21heClcbiYjNDM7XHRcdFx0XHRxX21heCA9IHF2W2ldO1xuIFx0XHR9XG4gXG4tXHRcdGlmIChpX21heCBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IGlfbWluIFx1MDAzYyAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZSBpZiAoaV9tYXggXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNlPSAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAmIzQzOyAoMHg0MDAgLSBpX21pbik7XG4tXG4tXHRcdGlmIChxX21heCBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IHFfbWluIFx1MDAzYyAweDIwMClcbi1cdFx0XHRxX2RlbHRhID0gcV9tYXggLSBxX21pbjtcbi1cdFx0ZWxzZSBpZiAocV9tYXggXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgcV9taW4gXHUwMDNlPSAweDIwMClcbi1cdFx0XHRxX2RlbHRhID0gcV9tYXggLSBxX21pbjtcbi1cdFx0ZWxzZVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAmIzQzOyAoMHg0MDAgLSBxX21pbik7XG4mIzQzO1x0XHR1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO1xuJiM0MztcdFx0dTMyIHFfZGVsdGEgPSAodTMyKShxX21heCAtIHFfbWluKTtcbiBcbiBcdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxuIFx0XHRcdFwmIzM0O1tEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcXG5cJiMzNDssXG5AQCAtMzQ1LDI0ICYjNDM7Mjg1LDI0IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXG4gXHRcdGlmIChpX2RlbHRhIFx1MDAzZSA1IHx8IHFfZGVsdGEgXHUwMDNlIDUpIHtcbiBcdFx0XHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XG4tXHRcdFx0aXZbMF0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0XHRxdlswXSA9IHRlbXAgXHUwMDI2IDB4M2ZmO1xuJiM0MztcdFx0XHRpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuJiM0MztcdFx0XHRxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0XHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbiYjNDM7XHRcdFx0aXZbREFDS19TTl84ODIyQyAtIDFdID0gc2lnbl9leHRlbmQzMigodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMiwgOSk7XG4mIzQzO1x0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHR9IHdoaWxlIChjbnQmIzQzOyYjNDM7IFx1MDAzYyAxMDApO1xuIFxuLVx0cnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2LCBpX3ZhbHVlKTtcbi1cdHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdiwgcV92YWx1ZSk7XG4mIzQzO1x0KmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpO1xuJiM0MztcdCpxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuIHtcbi1cdHUzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XG4mIzQzO1x0czMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcbiBcdHUzMiByZl9hLCByZl9iO1xuIFxuIFx0cmZfYSA9IHJ0d19yZWFkX3JmKHJ0d2RldiwgUkZfUEFUSF9BLCAweDAsIFJGUkVHX01BU0spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtSVFc4OCYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIyQ1UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgICAmIzM0O3J0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFDIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4MjJjIHdpcmVsZXNzIGRyaXZlciwgc2ltcGxpZnlpbmcgc29ydGluZyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy4gVGhpcyBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teSBIQ0QpIGJ5IGVuYWJsaW5nIHRoZSBVU0IgdmFyaWFudCBvZiB0aGUgZHJpdmVyIChDT05GSUdfUlRXODhfODgyMkNVKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0ZWQgZHVyaW5nIFBIWSBwYXJhbWV0ZXIgc2V0dXAgYW5kIGNhbGlicmF0aW9uLCB3aGljaCBhcmUgYWNjZXNzaWJsZSB2aWEgdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAgY2FsbGJhY2tzLiBUaGVzZSBjYWxsYmFja3MgYXJlIG5vdCBpbmxpbmVkIGFzIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHRoZSBjaGlwIG9wZXJhdGlvbnMgc3RydWN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWY0Njc3Y2ZiZTg2NDZlZmM4YjY3MjQ1YmFmYmI5YWJiN2NkYzg2NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE3OjI0OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jCmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMKQEAgLTMsNiAmIzQzOzMsOCBAQAogICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0b3BzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NvcnQuaCZndDsKICNpbmNsdWRlICYjMzQ7bWFpbi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y29leC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZncuaCYjMzQ7CkBAIC0xNTMsODQgJiM0MzsxNTUsMzAgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSwKLQkJCQkgICB1MzIgKm1pbiwgdTMyICptYXgpCiYjNDM7c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogewotCWlmICh2YWx1ZSAmZ3Q7PSAweDIwMCkgewotCQlpZiAoKm1pbiAmZ3Q7PSAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0gZWxzZSB7Ci0JCQkqbWluID0gdmFsdWU7Ci0JCX0KLQkJaWYgKCptYXggJmd0Oz0gMHgyMDApIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfSBlbHNlIHsKLQkJaWYgKCptaW4gJmx0OyAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0KLQotCQlpZiAoKm1heCAgJmd0Oz0gMHgyMDApIHsKLQkJCSptYXggPSB2YWx1ZTsKLQkJfSBlbHNlIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfQotfQomIzQzOwlzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7CiYjNDM7CXMzMiB2YiA9ICooY29uc3QgczMyICopYjsKIAotc3RhdGljIHZvaWQgX19ydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnYxLCB1MzIgKnYyKQotewotCWlmICgqdjEgJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmd0Oz0gMHgyMDApIHsKLQkJaWYgKCp2MSAmZ3Q7ICp2MikKLQkJCXN3YXAoKnYxLCAqdjIpOwotCX0gZWxzZSBpZiAoKnYxICZsdDsgMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmx0OyAweDIwMCkgewotCQlpZiAoKnYxICZndDsgKnYyKQotCQkJc3dhcCgqdjEsICp2Mik7Ci0JfSBlbHNlIGlmICgqdjEgJmx0OyAweDIwMCAmYW1wOyZhbXA7ICp2MiAmZ3Q7PSAweDIwMCkgewotCQlzd2FwKCp2MSwgKnYyKTsKLQl9CiYjNDM7CXJldHVybiAodmEgJmd0OyB2YikgLSAodmEgJmx0OyB2Yik7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpCiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdikKIHsKLQl1MzIgaSwgajsKLQotCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDIC0gMTsgaSYjNDM7JiM0MzspIHsKLQkJZm9yIChqID0gMDsgaiAmbHQ7IChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaiYjNDM7JiM0MzspIHsKLQkJCV9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCAmYW1wO2l2W2pdLCAmYW1wO2l2W2ogJiM0MzsgMV0pOwotCQkJX19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsICZhbXA7cXZbal0sICZhbXA7cXZbaiAmIzQzOyAxXSk7Ci0JCX0KLQl9CiYjNDM7CXNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiYjNDM7CXNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKQomIzQzO3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYykKIHsKLQl1MzIgcCwgbSwgdCwgaTsKJiM0MzsJczMyIHN1bSA9IDA7CiAKLQltID0gMDsKLQlwID0gMDsKLQlmb3IgKGkgPSAxMDsgaSAmbHQ7IERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKHZlY1tpXSAmZ3Q7IDB4MjAwKQotCQkJbSA9ICgweDQwMCAtIHZlY1tpXSkgJiM0MzsgbTsKLQkJZWxzZQotCQkJcCA9IHZlY1tpXSAmIzQzOyBwOwotCX0KJiM0MzsJZm9yICh1MzIgaSA9IDEwOyBpICZsdDsgREFDS19TTl84ODIyQyAtIDEwOyBpJiM0MzsmIzQzOykKJiM0MzsJCXN1bSAmIzQzOz0gdmVjW2ldOwogCi0JaWYgKHAgJmd0OyBtKSB7Ci0JCXQgPSBwIC0gbTsKLQkJdCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTsKLQl9IGVsc2UgewotCQl0ID0gbSAtIHA7Ci0JCXQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7Ci0JCWlmICh0ICE9IDB4MCkKLQkJCXQgPSAweDQwMCAtIHQ7Ci0JfQomIzQzOwlzMzIgYXZnID0gc3VtIC8gKERBQ0tfU05fODgyMkMgLSAyMCk7CiAKLQkqdmFsID0gdDsKJiM0MzsJcmV0dXJuIGF2ZyAmZ3Q7PSAwID8gYXZnIDogMHg0MDAgJiM0MzsgYXZnOwogfQogCiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aCkKQEAgLTI3MSwyOSAmIzQzOzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKQogCXJldHVybiBiYXNlX2FkZHI7CiB9CiAKLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpCiYjNDM7c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSkKIHsKLQlib29sIHJldCA9IHRydWU7CiAKLQlpZiAoKHZhbHVlICZndDs9IDB4MjAwICZhbXA7JmFtcDsgKDB4NDAwIC0gdmFsdWUpICZndDsgMHg2NCkgfHwKLQkgICAgKHZhbHVlICZsdDsgMHgyMDAgJmFtcDsmYW1wOyB2YWx1ZSAmZ3Q7IDB4NjQpKSB7Ci0JCXJldCA9IGZhbHNlOwomIzQzOwlpZiAodmFsdWUgJmd0OyAxMDAgfHwgdmFsdWUgJmx0OyAtMTAwKSB7CiAJCXJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgJiMzNDtbREFDS10gRXJyb3Igb3ZlcmZsb3dcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKJiM0MztzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KQogewogCXUzMiB0ZW1wOwotCWludCBpID0gMCwgY250ID0gMDsKJiM0MzsJdTMyIGkgPSAwLCBjbnQgPSAwOwogCiAJd2hpbGUgKGkgJmx0OyBEQUNLX1NOXzg4MjJDICZhbXA7JmFtcDsgY250ICZsdDsgMTAwMDApIHsKIAkJY250JiM0MzsmIzQzOzsKIAkJdGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpOwotCQlpdltpXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJcXZbaV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJaXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMiwgOSk7CiYjNDM7CQlxdltpXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAKIAkJaWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSAmYW1wOyZhbXA7CiAJCSAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpCkBAIC0zMDIsMTMgJiM0MzsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKIH0KIAogc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwKLQkJCQkgICAgICAgdTMyICppdiwgdTMyICpxdiwKJiM0MzsJCQkJICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsCiAJCQkJICAgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKQogewotCXUzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7Ci0JdTMyIGlfZGVsdGEsIHFfZGVsdGE7CiYjNDM7CXMzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7CiAJdTMyIHRlbXA7Ci0JaW50IGksIGNudCA9IDA7CiYjNDM7CXUzMiBpLCBjbnQgPSAwOwogCiAJZG8gewogCQlpX21pbiA9IGl2WzBdOwpAQCAtMzE2LDIzICYjNDM7MjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJCXFfbWluID0gcXZbMF07CiAJCXFfbWF4ID0gcXZbMF07CiAJCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDOyBpJiM0MzsmIzQzOykgewotCQkJcnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIGl2W2ldLCAmYW1wO2lfbWluLCAmYW1wO2lfbWF4KTsKLQkJCXJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBxdltpXSwgJmFtcDtxX21pbiwgJmFtcDtxX21heCk7CiYjNDM7CQkJaWYgKGl2W2ldICZsdDsgaV9taW4pCiYjNDM7CQkJCWlfbWluID0gaXZbaV07CiYjNDM7CQkJaWYgKGl2W2ldICZndDsgaV9tYXgpCiYjNDM7CQkJCWlfbWF4ID0gaXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZsdDsgcV9taW4pCiYjNDM7CQkJCXFfbWluID0gcXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZndDsgcV9tYXgpCiYjNDM7CQkJCXFfbWF4ID0gcXZbaV07CiAJCX0KIAotCQlpZiAoaV9tYXggJmx0OyAweDIwMCAmYW1wOyZhbXA7IGlfbWluICZsdDsgMHgyMDApCi0JCQlpX2RlbHRhID0gaV9tYXggLSBpX21pbjsKLQkJZWxzZSBpZiAoaV9tYXggJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyBpX21pbiAmZ3Q7PSAweDIwMCkKLQkJCWlfZGVsdGEgPSBpX21heCAtIGlfbWluOwotCQllbHNlCi0JCQlpX2RlbHRhID0gaV9tYXggJiM0MzsgKDB4NDAwIC0gaV9taW4pOwotCi0JCWlmIChxX21heCAmbHQ7IDB4MjAwICZhbXA7JmFtcDsgcV9taW4gJmx0OyAweDIwMCkKLQkJCXFfZGVsdGEgPSBxX21heCAtIHFfbWluOwotCQllbHNlIGlmIChxX21heCAmZ3Q7PSAweDIwMCAmYW1wOyZhbXA7IHFfbWluICZndDs9IDB4MjAwKQotCQkJcV9kZWx0YSA9IHFfbWF4IC0gcV9taW47Ci0JCWVsc2UKLQkJCXFfZGVsdGEgPSBxX21heCAmIzQzOyAoMHg0MDAgLSBxX21pbik7CiYjNDM7CQl1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pOwomIzQzOwkJdTMyIHFfZGVsdGEgPSAodTMyKShxX21heCAtIHFfbWluKTsKIAogCQlydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssCiAJCQkmIzM0O1tEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcbiYjMzQ7LApAQCAtMzQ1LDI0ICYjNDM7Mjg1LDI0IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAKIAkJaWYgKGlfZGVsdGEgJmd0OyA1IHx8IHFfZGVsdGEgJmd0OyA1KSB7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdlswXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJCXF2WzBdID0gdGVtcCAmYW1wOyAweDNmZjsKJiM0MzsJCQlpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTI7Ci0JCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJCWl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgJmFtcDsgMHgzZmYsIDkpOwogCQl9IGVsc2UgewogCQkJYnJlYWs7CiAJCX0KIAl9IHdoaWxlIChjbnQmIzQzOyYjNDM7ICZsdDsgMTAwKTsKIAotCXJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7Ci0JcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTsKJiM0MzsJKmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpOwomIzQzOwkqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCQkJCSAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpCiB7Ci0JdTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKJiM0MzsJczMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKIAl1MzIgcmZfYSwgcmZfYjsKIAogCXJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgVmlydHVhbGl6YXRpb24gRmVhc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgcnR3ODgyMmMuY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIFJlYWx0ZWsgd2lyZWxlc3MgaGFyZHdhcmUuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgc2ltcGxpZnlpbmcgc29tZSBJUSBjb21wYXJpc29uIGFuZCBzb3J0aW5nIGxvZ2ljIGFjcm9zcyBzZXZlcmFsIGZ1bmN0aW9uczogYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYW5kIGEgZmV3IG90aGVycyBkZWFsaW5nIHdpdGggREFDIGNhbGlicmF0aW9uLiBUaGV5JiMzOTtyZSBsZXZlcmFnaW5nIGBzaWduX2V4dGVuZDMyYCBhbmQgYHNvcnRgIGZyb20gYGxpbnV4L3NvcnQuaGAsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC4gVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzIGFsd2F5cywgY2FuIEkgYWN0dWFsbHkgdGVzdCB0aGlzIHRoaW5nIGVmZmVjdGl2ZWx5IHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSB0cmlja3kuIEkga25vdyB0aGUgYHJ0dzg4YCBmYW1pbHkgaXMgYSBtYWM4MDIxMSBkcml2ZXIsIGJ1dCBnZW5lcmFsbHksIHRoZXNlIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUg4oCTIGEgUmVhbHRlayBXaS1GaSBjYXJkLiBgbWFjODAyMTFfaHdzaW1gIGlzbiYjMzk7dCBnb2luZyB0byBoZWxwIGhlcmU7IGl0JiMzOTtzIGEgc2VwYXJhdGUgdGhpbmcuIEl0JiMzOTtzIHJhcmUgdG8gZ2V0IGEgZ29vZCBzb2Z0d2FyZSBlbXVsYXRpb24gZ29pbmcgZm9yIGEgZnVsbCB3aXJlbGVzcyBzdGFjayBsaWtlIHRoaXMgdW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUgdmVyeSBzcGVjaWZpYyBRRU1VIGRldmljZSBvciBVU0IgZ2FkZ2V0IHNldHVwLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSBjb25uZWN0aW9uIOKAkyBpcyBpdCBQQ0llIG9yIFVTQiBmb3IgdGhlIDg4MjJjPyBXYWl0Li4uIEkgcmVtZW1iZXIgYHJ0dzg4YCBkb2VzIGhhdmUgVVNCIHN1cHBvcnQgKGBydHc4OF91c2JgKSwgZG9lc24mIzM5O3QgaXQ/IE9rYXksIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIElmIGBydHc4ODIyY2AgKmNhbiogYmUgYSBVU0IgZGV2aWNlLCB0aGVuIHRoZXJlJiMzOTtzIGEgcG9zc2liaWxpdHkuIElmIGl0JiMzOTtzIFVTQiwgdGhlbiBpdCBiZWNvbWVzIHBvdGVudGlhbGx5IGZ1enphYmxlIHVzaW5nIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciYjMzk7cyBkdW1teSBVU0IgZHJpdmVyLiBMZXQgbWUgZGlnIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmNgIGFuZCBzZWUgaWYgdGhlcmUgaXMgVVNCIGNvZGUgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODgyMmMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTYzMyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfUlRXODhfODgyMkMpXHQmIzQzOz0gcnR3ODhfODgyMmMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTozODpydHc4OF84ODIyYy1vYmpzXHRcdDo9IHJ0dzg4MjJjLm8gcnR3ODgyMmNfdGFibGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9NDA9b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDRSlcdCYjNDM7PSBydHc4OF84ODIyY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0MTpydHc4OF84ODIyY2Utb2Jqc1x0XHQ6PSBydHc4ODIyY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9NDM9b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDUylcdCYjNDM7PSBydHc4OF84ODIyY3Mub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NDpydHc4OF84ODIyY3Mtb2Jqc1x0XHQ6PSBydHc4ODIyY3Mub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9NDY9b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDVSlcdCYjNDM7PSBydHc4OF84ODIyY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NzpydHc4OF84ODIyY3Utb2Jqc1x0XHQ6PSBydHc4ODIyY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMtI2luY2x1ZGUgXCYjMzQ7cGh5LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDojaW5jbHVkZSBcJiMzNDtydHc4ODIyYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU6I2luY2x1ZGUgXCYjMzQ7cnR3ODgyMmNfdGFibGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2LSNpbmNsdWRlIFwmIzM0O21hYy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI1OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2NvbmZpZ190cnhfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCB0eF9wYXRoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI2LVx0XHRcdFx0ICAgICB1OCByeF9wYXRoLCBib29sIGlzX3R4Ml9wYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyODpzdGF0aWMgdm9pZCBydHc4ODIyY2VfZWZ1c2VfcGFyc2luZyhzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyOTpcdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjdV9lZnVzZV9wYXJzaW5nKHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM1Olx0XHRcdFx0ICAgIHN0cnVjdCBydHc4ODIyY19lZnVzZSAqbWFwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDA6c3RhdGljIHZvaWQgcnR3ODgyMmNzX2VmdXNlX3BhcnNpbmcoc3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE6XHRcdFx0XHQgICAgc3RydWN0IHJ0dzg4MjJjX2VmdXNlICptYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0NjpzdGF0aWMgaW50IHJ0dzg4MjJjX3JlYWRfZWZ1c2Uoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ4LVx0c3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UgPSBcdTAwMjZydHdkZXYtXHUwMDNlZWZ1c2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDk6XHRzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MC1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjUyOlx0bWFwID0gKHN0cnVjdCBydHc4ODIyY19lZnVzZSAqKWxvZ19tYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTczLVx0Y2FzZSBSVFdfSENJX1RZUEVfUENJRTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3NDpcdFx0cnR3ODgyMmNlX2VmdXNlX3BhcnNpbmcoZWZ1c2UsIG1hcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc2LVx0Y2FzZSBSVFdfSENJX1RZUEVfVVNCOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc3Olx0XHRydHc4ODIyY3VfZWZ1c2VfcGFyc2luZyhlZnVzZSwgbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OC1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzktXHRjYXNlIFJUV19IQ0lfVFlQRV9TRElPOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgwOlx0XHRydHc4ODIyY3NfZWZ1c2VfcGFyc2luZyhlZnVzZSwgbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2hlYWRlcl9maWxlX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBwcmUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTAzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2JiX3Jlc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExMDpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfYmFja3VwX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMS1cdFx0XHRcdCAgICBzdHJ1Y3QgcnR3X2JhY2t1cF9pbmZvICpiYWNrdXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzk6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgcnR3X2JhY2t1cF9pbmZvICpiYWNrdXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTg6c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjY6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2ODpcdHNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY5Olx0c29ydChxdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzI6c3RhdGljIHMzMiBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqdmVjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxODQ6c3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjIwMzpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIwNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMjI6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMjMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjMzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NDpcdFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyNDU6XHRcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjQ2LVx0XHRcdGkmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjUwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjUxLVx0XHRcdFx0ICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyODQ6XHRcdHJ0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgaXYsIHF2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yODUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyOTg6XHQqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Mjk5Olx0KnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMwMjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMDMtXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzE0Olx0cnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUocnR3ZGV2LCBpdiwgcXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxNTpcdHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHJ0d2RldiwgaXYsIHF2LCBpX3ZhbHVlLCBxX3ZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMTg6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2JiX3NldHRpbmcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzM0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYWRjKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzM1LVx0XHRcdFx0IHU4IHBhdGgsIHUzMiAqYWRjX2ljLCB1MzIgKmFkY19xYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM0NTpcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ2LVx0c3dpdGNoIChwYXRoKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3MS1cdFx0cnR3X3dyaXRlMzIocnR3ZGV2LCAweDFjMjQsIDB4MDAwMTAwMDIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM3MjpcdFx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWMsIFx1MDAyNnFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zNzMtXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzkxLVx0XHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMzYywgcGF0aF9zZWwgJiM0MzsgMHg4MTAzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozOTI6XHRcdHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShydHdkZXYsIFx1MDAyNmljLCBcdTAwMjZxYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzkzLVx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTI6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTg6XHRiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxOTpcdHJlYWRfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0NTc6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ1OC1cdFx0XHRcdCAgIHU4IHBhdGgsIHUzMiAqaWNfb3V0LCB1MzIgKnFjX291dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ2MzpcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDY0LVx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIGJhc2VfYWRkciAmIzQzOyAweGJjLCAweGYwMDAwMDAwLCAweDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDc1Olx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWNfaW4sIFx1MDAyNnFjX2luKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NzYtXHRpYyA9IGljX2luO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTA2OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfc3RlcDMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MDctXHRcdFx0XHQgICB1MzIgYWRjX2ljLCB1MzIgYWRjX3FjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTE2Olx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MTc6XHRyZWFkX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTE4LVx0aWMgPSAqaWNfaW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU1Ni1cdHJ0d193cml0ZTMyKHJ0d2RldiwgYmFzZV9hZGRyICYjNDM7IDB4NjAsIDB4ZjAwMDAwMDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU1NzpcdHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShydHdkZXYsIFx1MDAyNmljLCBcdTAwMjZxYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU4LVx0aWYgKGljIFx1MDAzZT0gMHgxMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTg0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1ODU6XHR1MzIgYmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01ODYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1OTM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfdmVjKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTk0LVx0XHRcdFx0XHR1OCBwYXRoLCB1OCB2ZWMsIHUzMiB3X2FkZHIsIHUzMiByX2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MTA6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfcGF0aChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYxMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYxOS1cdC8qIGJhY2t1cCBJIHZlY3RvciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMDpcdHdfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCkgJiM0MzsgMHhiMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MjE6XHRyX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCkgJiM0MzsgMHgxMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MjI6XHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF92ZWMocnR3ZGV2LCBwYXRoLCAwLCB3X2FkZHIsIHJfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYyNC1cdC8qIGJhY2t1cCBRIHZlY3RvciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyNTpcdHdfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCkgJiM0MzsgMHhiMCAmIzQzOyB3X29mZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MjY6XHRyX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCkgJiM0MzsgMHgxMCAmIzQzOyByX29mZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2Mjc6XHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF92ZWMocnR3ZGV2LCBwYXRoLCAxLCB3X2FkZHIsIHJfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02MjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjMwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX2RjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYzMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2NTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NjctXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxODYwLCAweGZjMDAwMDAwLCAweDNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2Njg6XHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9wYXRoKHJ0d2RldiwgUkZfUEFUSF9BKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY3Mi1cdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDQxNjAsIDB4ZmMwMDAwMDAsIDB4M2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY3MzpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2NzU6XHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9kY2socnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NzYtXHRydHdfd3JpdGUzMl9zZXQocnR3ZGV2LCAweDE4MzAsIEJJVCgzMCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Njg0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9kY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02ODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzE0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wcmVwYXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzE1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc0MzpcdHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9kY2socnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3Njc6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NjgtXHRcdFx0XHRcdCAgdTMyIHRhcmdldF9hZGRyLCB1MzIgdG9nZ2xlX2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3ODQ6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03ODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzkzOlx0d19pID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSAmIzQzOyAweGIwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5NDpcdHJfaSA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSAmIzQzOyAweDA4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5NTpcdHdfcSA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCkgJiM0MzsgMHhiMCAmIzQzOyB3X29mZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3OTY6XHRyX3EgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCkgJiM0MzsgMHgwOCAmIzQzOyByX29mZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzk4Olx0aWYgKCFydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfd2FpdChydHdkZXYsIHJfaSwgd19pICYjNDM7IDB4OCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzk5LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4MTE6XHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV93YWl0KHJ0d2Rldiwgcl9xLCB3X3EgJiM0MzsgMHg4KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MTItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgzMTpzdGF0aWMgYm9vbCBfX3J0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgzMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODMzOlx0aWYgKCFydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcGF0aChydHdkZXYsIFJGX1BBVEhfQSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODM0LVx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgzNjpcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0IpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgzNy1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODQyOnN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4NTg6XHRydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcHJlcGFyZShydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg1OS1cdGlmICghY2hlY2tfaHdfcmVhZHkocnR3ZGV2LCAweDI4MDgsIDB4N2ZmZjgwLCAweGZmZmYpIHx8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4NjU6XHRpZiAoIV9fcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHJ0d2RldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NjYtXHRcdHJ0d19lcnIocnR3ZGV2LCBcJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBkYWNrIHZlY3RvcnNcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODgzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX2RhY19jYWwoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04ODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODkyOlx0aWYgKHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShydHdkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODk3Olx0cnR3ODgyMmNfZGFjX2JhY2t1cF9yZWcocnR3ZGV2LCBiYWNrdXAsIGJhY2t1cF9yZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg5OTpcdHJ0dzg4MjJjX2RhY19iYl9zZXR0aW5nKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMS1cdC8qIHBhdGgtQSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkwMjpcdHJ0dzg4MjJjX2RhY19jYWxfYWRjKHJ0d2RldiwgUkZfUEFUSF9BLCBcdTAwMjZhZGNfaWNfYSwgXHUwMDI2YWRjX3FjX2EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMy1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkwNDpcdFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMShydHdkZXYsIFJGX1BBVEhfQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTA1Olx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHJ0d2RldiwgUkZfUEFUSF9BLCBcdTAwMjZpYywgXHUwMDI2cWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwNi1cdFx0aWNfYSA9IGljO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTA5Olx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAzKHJ0d2RldiwgUkZfUEFUSF9BLCBhZGNfaWNfYSwgYWRjX3FjX2EsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTEwLVx0XHRcdFx0ICAgICAgIFx1MDAyNmljLCBcdTAwMjZxYywgXHUwMDI2aV9hLCBcdTAwMjZxX2EpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTQtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTE1Olx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwNChydHdkZXYsIFJGX1BBVEhfQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkxNy1cdC8qIHBhdGgtQiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkxODpcdHJ0dzg4MjJjX2RhY19jYWxfYWRjKHJ0d2RldiwgUkZfUEFUSF9CLCBcdTAwMjZhZGNfaWNfYiwgXHUwMDI2YWRjX3FjX2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkxOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkyMDpcdFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMShydHdkZXYsIFJGX1BBVEhfQik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTIxOlx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHJ0d2RldiwgUkZfUEFUSF9CLCBcdTAwMjZpYywgXHUwMDI2cWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkyMi1cdFx0aWNfYiA9IGljO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTI1Olx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAzKHJ0d2RldiwgUkZfUEFUSF9CLCBhZGNfaWNfYiwgYWRjX3FjX2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTI2LVx0XHRcdFx0ICAgICAgIFx1MDAyNmljLCBcdTAwMjZxYywgXHUwMDI2aV9iLCBcdTAwMjZxX2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MzAtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTMxOlx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwNChydHdkZXYsIFJGX1BBVEhfQik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTMyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTM5Olx0cnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHJ0d2RldiwgYmFja3VwLCBiYWNrdXBfcmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDEtXHQvKiBiYWNrdXAgcmVzdWx0cyB0byByZXN0b3JlLCBzYXZpbmcgYSBsb3Qgb2YgdGltZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjk0MjpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTUwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX3gyX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTUxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjk2NDpzdGF0aWMgdm9pZCBydHc4ODIyY19zZXRfcG93ZXJfdHJpbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzOCBiYl9nYWluWzJdWzhdKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5OTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfcG93ZXJfdHJpbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk5Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMjctXHRpZiAoc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwMjg6XHRcdHJ0dzg4MjJjX3NldF9wb3dlcl90cmltKHJ0d2RldiwgYmJfZ2Fpbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAyOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDMzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3RoZXJtYWxfdHJpbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwNTE6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGFfYmlhcyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwNzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZrX2hhbmRzaGFrZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBib29sIGlzX2JlZm9yZV9rKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExMTk6c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZrX3Bvd2VyX3NhdmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTIwLVx0XHRcdFx0ICAgIGJvb2wgaXNfcG93ZXJfc2F2ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMTMxOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19iYWNrdXBfYmJfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGNvbnN0IHUzMiByZWdbXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTMyLVx0XHRcdFx0XHQgIHUzMiByZWdfYmFja3VwW10sIHUzMiByZWdfbnVtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExNDQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3JlbG9hZF9iYl9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTQ1LVx0XHRcdFx0XHQgIGNvbnN0IHUzMiByZWdbXSwgdTMyIHJlZ19iYWNrdXBbXSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTE1Nz1zdGF0aWMgYm9vbCBjaGVja19yZl9zdGF0dXMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExNzI6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3R4X3BhdXNlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTE3My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTE4ODpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYmJfZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTE4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTIyMDpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYWZlX2RwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEyNTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2FmZV9kcGtfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEyODk6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2JiX2Rwa19yZXN0b3JlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTI5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTMyOTpzdGF0aWMgYm9vbCBfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIGdhaW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTMzODpzdGF0aWMgdm9pZCBfcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzM5LVx0XHRcdFx0XHRcdCB1OCBiYW5kLCB1OCBwYXRoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzY4LVx0XHR2ID0gdHhnYXBrLVx1MDAzZXJmM2ZfYnBbYmFuZF1bZ2Fpbl1bcGF0aF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTM2OTpcdFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTM3MC1cdFx0XHRpZiAoIWNoZWNrX3R4Z2Fpbikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzOTI6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzkzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwMC1cdFx0Zm9yIChwYXRoID0gMDsgcGF0aCBcdTAwM2MgcnR3ZGV2LVx1MDAzZWhhbC5yZl9wYXRoX251bTsgcGF0aCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDAxOlx0XHRcdF9ydHc4ODIyY190eGdhcGtfd3JpdGVfZ2Fpbl9iYl90YWJsZShydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwMi1cdFx0XHRcdFx0XHRcdCAgICAgYmFuZCwgcGF0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQwNzpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDA4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDg0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19jYWxjdWxhdGVfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQ5NTpcdHJ0dzg4MjJjX3R4Z2Fwa19iYWNrdXBfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0OTYtXHRcdFx0XHQgICAgICByZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1MTc6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19yZWFkX29mZnNldChydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1MTgtXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1NTE6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19yZWFkX29mZnNldChydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTItXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTMtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1NDpcdHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTUtXHRcdFx0XHQgICAgICByZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1NTg6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3JmX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTcwOnN0YXRpYyB1MzIgcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBnYWluLCBzOCBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU3NjpcdGlmIChfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQocnR3ZGV2LCBnYWluKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzctXHRcdG5ld19nYWluID0gZ2Fpbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTk0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV90eF9nYWluKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2MjQtXHRcdFx0XHR2ID0gdHhnYXBrLVx1MDAzZXJmM2ZfYnBbYmFuZF1bal1bcGF0aF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTYyNTpcdFx0XHRcdGlmIChfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQocnR3ZGV2LCB2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjI2LVx0XHRcdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYzMi1cdFx0XHR2ID0gdHhnYXBrLVx1MDAzZXJmM2ZfYnBbYmFuZF1baV1bcGF0aF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTYzMzpcdFx0XHRpZiAoX3J0dzg4MjJjX3R4Z2Fwa19nYWluX3ZhbGlkKHJ0d2RldiwgdikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjM0LVx0XHRcdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NTA6XHRcdFx0dG1wXzNmID0gcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjUxLVx0XHRcdFx0XHRcdFx0ICB0eGdhcGstXHUwMDNlcmYzZl9icFtiYW5kXVtpXVtwYXRoXSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2ODEtXHRcdFx0XCYjMzQ7W1RYR0FQS10gQWxyZWFkeSBSZWFkIHR4Z2Fway1cdTAwM2VyZWFkX3R4Z2FpbiByZXR1cm4hISFcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2ODI6XHRcdHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV9nYWluX2JiX3RhYmxlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY4My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzE4LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3MTk6XHRydHc4ODIyY190eGdhcGtfd3JpdGVfZ2Fpbl9iYl90YWJsZShydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MjAtXHR0eGdhcGstXHUwMDNlcmVhZF90eGdhaW4gPSAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3MjM6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTczMjpcdHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTczMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzQ3Olx0cnR3ODgyMmNfdHhnYXBrX2JhY2t1cF9iYl9yZWcocnR3ZGV2LCBiYl9yZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0OC1cdFx0XHRcdCAgICAgIGJiX3JlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc0OTpcdHJ0dzg4MjJjX3R4Z2Fwa190eF9wYXVzZShydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NTAtXHRmb3IgKHBhdGggPSAwOyBwYXRoIFx1MDAzYyBydHdkZXYtXHUwMDNlaGFsLnJmX3BhdGhfbnVtOyBwYXRoJiM0MzsmIzQzOykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzUyLVx0XHRcdFx0XHQgICAgICBSRl9DRkdDSCwgUkZSRUdfTUFTSykgXHUwMDI2IE1BU0tCWVRFMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzUzOlx0XHRydHc4ODIyY190eGdhcGtfYmJfZHBrKHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1NDpcdFx0cnR3ODgyMmNfdHhnYXBrX2FmZV9kcGsocnR3ZGV2LCBwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU1Olx0XHRydHc4ODIyY190eGdhcGtfY2FsY3VsYXRlX29mZnNldChydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTY6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19yZl9yZXN0b3JlKHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1NzpcdFx0cnR3ODgyMmNfdHhnYXBrX2FmZV9kcGtfcmVzdG9yZShydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTg6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19iYl9kcGtfcmVzdG9yZShydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NTktXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2MDpcdHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV90eF9nYWluKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2MTpcdHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjItXHRcdFx0XHQgICAgICBiYl9yZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NjU6c3RhdGljIHZvaWQgcnR3ODgyMmNfZG9fZ2FwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjYte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3MzcKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQgb2YgdGhlIHJ0dzg4MjJjIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgYHJ0dzg4MjJjYCBkcml2ZXIgZ2V0cyBidWlsdCB3aGVuIGBDT05GSUdfUlRXODhfODgyMkNgIGlzIGZsaXBwZWQuIFRoaXMgZmFtaWx5IGFsc28gZW5jb21wYXNzZXMgUENJZSAoYENPTkZJR19SVFc4OF84ODIyQ0VgKSwgU0RJTyAoYENPTkZJR19SVFc4OF84ODIyQ1NgKSwgYW5kIGNyaXRpY2FsbHksIGEgVVNCIHZlcnNpb24gKGBDT05GSUdfUlRXODhfODgyMkNVYCkuIFRoYXQgVVNCIHZhcmlhbnQgaXMgdGhlIGtleSBoZXJlLiBTaW5jZSBhIFVTQiBkZXZpY2UgaXMgYXZhaWxhYmxlLCB0aGlzIGRyaXZlciAqc2hvdWxkKiBiZSBhbWVuYWJsZSB0byBmdXp6aW5nIHdpdGggc3l6a2FsbGVyJiMzOTtzIFVTQiBkdW1teSBkcml2ZXIsIGVtdWxhdGluZyB0aGF0IGhhcmR3YXJlIGludGVyZmFjZS4KCldhaXQgYSBtaW51dGUsIGxldCYjMzk7cyByZS1yZWFkIHRoZSBwcm9tcHQuIEl0JiMzOTtzIGFza2luZyBmb3IgYSBgV29ydGhGdXp6aW5nPWZhbHNlYCByZXR1cm4gaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgdGhlIGNhc2Ugb2Ygc29tZXRoaW5nIGxpa2UgdXNiIGdhZGdldC4gQnV0IGEgVVNCIGRyaXZlciAqaXMqIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IG9yIGEgZHVtbXkgSENELgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50LCBhbmQgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5ICppcyogYXZhaWxhYmxlIGluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0UgYW5kIFFFTVUpLCB0aGlzIGxvb2tzIGxpa2UgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgb2YgYENPTkZJR19SVFc4OF84ODIyQ1VgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBzaG93c3RvcHBlcnMsIGJ1dCB0aGUgcHJlc2VuY2Ugb2YgdGhlIFVTQiB2ZXJzaW9uIGlzIGEgc3Ryb25nIGluZGljYXRvciB0aGF0IHRoaXMgcGF0Y2ggaXMsIGluIGZhY3QsIHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg4Xzg4MjJDVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZz0xMDQ9Y29uZmlnIFJUVzg4Xzg4MjJDU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTE1OmNvbmZpZyBSVFc4OF84ODIyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1MDkKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFJUVzg4Xzg4MjJDVWA6CgoqKkFuYWx5emluZyBgUlRXODhfODgyMkNVYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gd2UmIzM5O3JlIGRpdmluZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFJUVzg4Xzg4MjJDVWAuIE15IGluaXRpYWwgYXBwcm9hY2ggaXMgdG8gbWVudGFsbHkgbWFwIG91dCB0aGUgdHlwaWNhbCBkcml2ZXIgc3RydWN0dXJlLiBXaGF0IGFyZSB0aGUgbGlrZWx5IGZvdW5kYXRpb25hbCBlbGVtZW50cz8gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSB3aXJlbGVzcyBkcml2ZXIsIHNvIEkmIzM5O20gdGhpbmtpbmcgaW1tZWRpYXRlbHkgYWJvdXQgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIChIQUwpLCBsaWtlbHkgc29tZSBzb3J0IG9mIHBvd2VyIG1hbmFnZW1lbnQgaW50ZXJmYWNlLCBhbmQgb2YgY291cnNlLCB0aGUgbmV0d29yayBzdGFjayBpbnRlcmFjdGlvbnMuCgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgdGhpcyBpcyBhIHN0YW5kYXJkIFJlYWx0ZWsgZGVzaWduIG9yIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY3VzdG9tIGVsZW1lbnRzIHRvIGNvbnNpZGVyLCBzdWNoIGFzIGEgdmVuZG9yLXNwZWNpZmljIGZpcm13YXJlIGxvYWRpbmcgbWVjaGFuaXNtLiBBcmUgdGhlcmUgYW55IGV4aXN0aW5nIFJlYWx0ZWsgZHJpdmVyIGFyY2hpdGVjdHVyZXMgSSBzaG91bGQgYmUgZmFtaWxpYXIgd2l0aCwgb3IgYW55IGtub3duIHF1aXJrcz8gVGhhdCB3b3VsZCBiZSB1c2VmdWwgaW5mb3JtYXRpb24gdG8gaGF2ZSB0byB1bmRlcnN0YW5kIGl0cyBpbnRlcnJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHN5c3RlbXMuCgpUaGVuIHRoZXJlIGFyZSB0aGUga2VybmVsIGludGVyZmFjZXMuIFdoYXQgc3BlY2lmaWMga2VybmVsIG1vZHVsZXMgb3IgZnVuY3Rpb25zIGlzIHRoaXMgZHJpdmVyIGdvaW5nIHRvIHJlbHkgb24/IElzIGl0IHVzaW5nIHRoZSBzdGFuZGFyZCB3aXJlbGVzcyBleHRlbnNpb25zIChXRSkgb3IgaXdsd2lmaSwgb3IgaXMgdGhpcyBkcml2ZXIgaW1wbGVtZW50aW5nIHNvbWV0aGluZyBtb3JlIGJlc3Bva2U/IEkgc2hvdWxkIGJlIHRoaW5raW5nIGFib3V0IHRoZSBrZXJuZWwgdmVyc2lvbiBjb21wYXRpYmlsaXR5IGhlcmUsIGFzIHRoYXQgY291bGQgYWxzbyByZXZlYWwgYSBsb3QgYWJvdXQgdGhlIGRlcGVuZGVuY3kgdHJlZS4gQWxzbywgd2lsbCBpdCB1c2UgYW55IGN1c3RvbSBrZXJuZWwgbW9kdWxlcyB0byBnZXQgZGF0YSBmcm9tIHRoZSBib2FyZD8KCkkgaGF2ZSB0byB0aGluayBhYm91dCB0aGUgdG9vbGNoYWluIGFzIHdlbGwuIFdoYXQgY29tcGlsZXIgdmVyc2lvbiBhbmQgbGlicmFyaWVzIGFyZSBsaWtlbHkgbmVlZGVkIGZvciBjb21waWxhdGlvbj8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBidWlsZCBmbGFncyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIHBlcmhhcHMgcmVsYXRlZCB0byBkZWJ1ZyBzeW1ib2xzIG9yIHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucz8gTGV0JiMzOTtzIGFzc3VtZSBpdCBzdXBwb3J0cyB0aGUgbGF0ZXN0IGJ1aWxkLCBidXQgaXQgd2lsbCBiZSB1c2VmdWwgdG8gY2hlY2sgdGhlIGNvbXBhdGliaWxpdHkgbGlzdCwgaWYgaXQgZXhpc3RzLgoKSSYjMzk7bSBtZW50YWxseSBjcmVhdGluZyBhIGRlcGVuZGVuY3kgZ3JhcGgsIHNlZWluZyBob3cgYFJUVzg4Xzg4MjJDVWAgZml0cyB3aXRoaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBJJiMzOTttIGltYWdpbmluZyBhIG11bHRpLXRpZXJlZCBhcmNoaXRlY3R1cmUsIGFuZCB3YW50IHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGVhY2ggb2YgaXRzIGNvbXBvbmVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYXQgZWFjaCBsZXZlbCB0byBlbnN1cmUgSSBjYW4gYWRkcmVzcyBhbnkgcG90ZW50aWFsIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODhfODgyMkNVJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZz0xMDQ9Y29uZmlnIFJUVzg4Xzg4MjJDU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTE1OmNvbmZpZyBSVFc4OF84ODIyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxNDMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIEtjb25maWcqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHNvbWUgZmVhdHVyZSBvciBvcHRpb24gaXMgY29udHJvbGxlZC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBzdGFydCBieSBsb29raW5nIGF0IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnYCBmaWxlLCBhcm91bmQgbGluZSAxMTUuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjaGVjayB0aGUgZ2VuZXJhbCBzZXR0aW5ncyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIGRyaXZlci4gSG9wZWZ1bGx5LCBpdCYjMzk7bGwgcHJvdmlkZSBzb21lIGNsYXJpdHkgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZHJpdmVycyBhcmUgYnVpbHQgYW5kIGNvbmZpZ3VyZWQsIGFuZCBsaW5lIDExNSBmZWVscyBsaWtlIGEgZ29vZCBzcG90IHRvIHN0YXJ0IG15IHNlYXJjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkNFIGNoaXBzZXRcbiAxMDE6XHRcbiAxMDI6XHRcdCAgODAyLjExYWMgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxMDM6XHRcbiAxMDQ6XHRjb25maWcgUlRXODhfODgyMkNTXG4gMTA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDEwNjpcdFx0ZGVwZW5kcyBvbiBNTUNcbiAxMDc6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gMTA4Olx0XHRzZWxlY3QgUlRXODhfU0RJT1xuIDEwOTpcdFx0c2VsZWN0IFJUVzg4Xzg4MjJDXG4gMTEwOlx0XHRoZWxwXG4gMTExOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQ1MgY2hpcHNldFxuIDExMjpcdFxuIDExMzpcdFx0ICA4MDIuMTFhYyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDExNDpcdFxuIDExNTpcdGNvbmZpZyBSVFc4OF84ODIyQ1VcbiAxMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAxMTc6XHRcdGRlcGVuZHMgb24gVVNCXG4gMTE4Olx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDExOTpcdFx0c2VsZWN0IFJUVzg4X1VTQlxuIDEyMDpcdFx0c2VsZWN0IFJUVzg4Xzg4MjJDXG4gMTIxOlx0XHRoZWxwXG4gMTIyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQ1UgY2hpcHNldFxuIDEyMzpcdFxuIDEyNDpcdFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gMTI1Olx0XG4gMTI2Olx0Y29uZmlnIFJUVzg4Xzg3MjNERVxuIDEyNzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDEyODpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAxMjk6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODM5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYFJUVzg4Xzg4MjJDVWAgRGVwZW5kZW5jeSBhbmQgTW9kaWZpZWQgRnVuY3Rpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYFJUVzg4Xzg4MjJDVWAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgVVNCYCBhbmQgaW1wbGljaXRseSBlbmFibGVzIGBSVFc4OF84ODIyQ2AuIFRoaXMgbWFrZXMgc2Vuc2U7IGlmIGl0JiMzOTtzIGEgVVNCIGltcGxlbWVudGF0aW9uLCBpdCB3aWxsIGxpa2VseSBiZSBidWlsdCBvbiB0b3Agb2YgdGhlIGJhc2UgY2hpcC4gVGhlIHBhdGNoIHRhcmdldHMgYHJ0dzg4MjJjLmNgLCB3aGljaCBpcyBvbmx5IGNvbXBpbGVkIGlmIGBSVFc4OF84ODIyQ2AgaXMgY29uZmlndXJlZC4gVGhlcmVmb3JlLCB0byBlZmZlY3RpdmVseSB0ZXN0IHRoaXMsIEkgbmVlZCB0byBlbmFibGUgYFJUVzg4Xzg4MjJDVWAgYmVjYXVzZSB0aGF0IHNob3VsZCBhbGxvdyBtZSB0byB0ZXN0IHRocm91Z2ggVVNCIGVtdWxhdGlvbi4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSBiZWluZyBtb2RpZmllZD8gTGV0JiMzOTtzIHRha2UgYSBsb29rLiBJIHNlZTogYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCAoYSBuZXcgZnVuY3Rpb24pLCBgcnR3ODgyMmNfZGFjX2lxX3NvcnRgLCBgcnR3ODgyMmNfZGFjX2lxX29mZnNldGAsIGBydHc4ODIyY19kYWNfaXFfY2hlY2tgLCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgLCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIFRoZXNlIGFyZSBhbGwgZGVjbGFyZWQgYXMgc3RhdGljLCBzbyB0aGV5JiMzOTtyZSBpbnRlcm5hbCB0byB0aGUgZmlsZS4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBub24tc3RhdGljIGVudHJ5IHBvaW50cyBjYWxsIHRoZXNlIGZ1bmN0aW9ucywgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4KCk9rYXksIGxldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBjYWxscyB0byBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gSSBzZWUgdGhhdCBpdCYjMzk7cyBjYWxsZWQgYnkgYHJ0dzg4MjJjX2RhY19jYWxfc3RlcDJgLCBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwM2AsIGBydHc4ODIyY19kYWNfY2FsX3N0ZXA0YCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX2FkY2AuIFRob3NlIGZvdXIgYXJlIGFsbCBjYWxsZWQgYnkgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiBOb3csIG15IG5leHQgcXVlc3Rpb24gaXMsIHdobyBjYWxscyBgcnR3ODgyMmNfcmZfZGFjX2NhbGA/IFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBleGVjdXRpb24gcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODgyMmNfcmZfZGFjX2NhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz04NDI9c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4ODM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfZGFjX2NhbChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3Nzg9c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3Nzkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3ODA6XHRydHc4ODIyY19yZl9kYWNfY2FsKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc4MS1cdHJ0dzg4MjJjX3JmX3gyX2NoZWNrKHJ0d2Rldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MTIxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgUkYgSW5pdGlhbGl6YXRpb24gQ2FsbCoqCgpBbHJpZ2h0LCBzbyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsICYjMzQ7V2hvJiMzOTtzIGNhbGxpbmcgYHJ0dzg4MjJjX3JmX2luaXRgPyYjMzQ7LiBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIHRoaXMuIFVuZGVyc3RhbmRpbmcgdGhlICpjYWxsZXIqIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWJzb2x1dGVseSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIFJGIGluaXRpYWxpemF0aW9uIGZsb3cgYW5kLCBjb25zZXF1ZW50bHksIHRoZSBzdGF0ZSBvZiB0aGUgc3lzdGVtIHdoZW4gUkYgaXMgcmVhZHkuIElzIGl0IGJlaW5nIGludm9rZWQgZGlyZWN0bHkgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiwgcGVyaGFwcyBmcm9tIHRoZSBib2FyZCBicmluZy11cCBjb2RlPyBPciBpcyBpdCBiZWluZyBjYWxsZWQgbGF0ZXIsIGxpa2VseSBhcyBhIHJlc3BvbnNlIHRvIHNvbWUgZXZlbnQgbGlrZSBhIFBDSSBwcm9iZSwgYSBwb3dlci11cCBzZXF1ZW5jZSwgb3IgYSBjb25uZWN0aW9uIGF0dGVtcHQ/CgpLbm93aW5nIHRoZSBjYWxsIHBhdGggd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGEgdG9uIG9mIHZhbHVhYmxlIGNvbnRleHQuIEl0IGluZm9ybXMgbWUgaWYgSSBuZWVkIHRvIGxvb2sgdXBzdHJlYW0gYXQgdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9ucyBvciBkb3duc3RyZWFtIHRvIHRoZSBzdGF0ZSBtYWNoaW5lcy4gSXQgd2lsbCBzaG93IGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiB0aGUgZHJpdmVy4oCZcyBvcGVyYXRpb24uIEl0IHdpbGwgaW5kaWNhdGUgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIFJGIHBvcnRpb24gaXMgaW5pdGlhbGl6ZWQgYW5kIHRoYXQmIzM5O3MgdGhlIGNvcmUuIEl04oCZcyB0aGUgc3RhcnRpbmcgcG9pbnQuCgpGcm9tIHRoZSBjYWxsZXIsIEkgY2FuIGRlZHVjZToKCiogICAqKlRpbWluZzoqKiBXaGVuIHRoZSBSRiBpcyBpbml0aWFsaXplZCByZWxhdGl2ZSB0byB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtIGJyaW5nLXVwIG9yIG5ldHdvcmsgc3RhY2sgaW5pdGlhbGl6YXRpb24uCiogICAqKkNvbnRleHQ6KiogV2hhdCBvdGhlciBvcGVyYXRpb25zIGFyZSBhbHJlYWR5IGNvbXBsZXRlZCB3aGVuIHRoZSBSRiBpbml0aWFsaXphdGlvbiBoYXBwZW5zLgoqICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBwcmVjb25kaXRpb25zIGFyZSAqYXNzdW1lZCogdG8gYmUgbWV0IGJlZm9yZSB0aGlzIGNhbGwuCgpJIGNhbiB0aGVuIHRyYWNlIHRoYXQgdG8gc2VlIHdoZXJlIHRoZSBjYWxsIGNhbWUgZnJvbSBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBpbiBvcmRlciB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IFJGIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHdvcmtzIGluIHJlbGF0aW9uIHRvIGl0cyBjYWxsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg4MjJjX3JmX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTc2NT1zdGF0aWMgdm9pZCBydHc4ODIyY19kb19nYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc3ODpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE4MDM9c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4NDk6XHRydHc4ODIyY19yZl9pbml0KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg1MC1cdHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQocnR3ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4OTAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIENhbGxlciBvZiBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAqKgoKQWxyaWdodCwgc28gYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gLi4uIHRoYXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gaW4gdGhlIFBIWSBjb25maWd1cmF0aW9uIGZvciB0aGF0IHNwZWNpZmljIFJlYWx0ZWsgV2lGaSBjaGlwLCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFsd2F5cyAqd2hvKiBpcyBjYWxsaW5nIHRoYXQ/IEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcXVlc3Rpb24gd2hlbiBkZWJ1Z2dpbmcsIG9wdGltaXppbmcsIG9yIGV2ZW4ganVzdCB1bmRlcnN0YW5kaW5nIGEgZHJpdmVyJiMzOTtzIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQuCgpJcyBpdCBjYWxsZWQgZGlyZWN0bHkgZnJvbSBhIGhpZ2hlci1sZXZlbCBmdW5jdGlvbiwgbWF5YmUgc29tZXRoaW5nIGV4cG9zZWQgdG8gdGhlIE1BQyBsYXllcj8gUGVyaGFwcyBpdCYjMzk7cyBiZWluZyB0cmlnZ2VyZWQgYnkgYW4gaW50ZXJydXB0IGhhbmRsZXIsIG1lYW5pbmcgaXQmIzM5O3MgcmVhY3RpbmcgdG8gaGFyZHdhcmUgZXZlbnRzPyBNYXliZSBpdCYjMzk7cyBidXJpZWQgZGVlcCB3aXRoaW4gc29tZSBzb3J0IG9mIHBvd2VyIG1hbmFnZW1lbnQgcm91dGluZSwgYWRqdXN0aW5nIFBIWSBwYXJhbWV0ZXJzIGJhc2VkIG9uIGxpbmsgc3RhdGUgb3IgcG93ZXIgcHJvZmlsZXM/IEl0IGNvdWxkIGV2ZW4gYmUgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIERldGVybWluaW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgcGFyYW1vdW50IHRvIHVuZGVyc3RhbmRpbmcgKndoeSogaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlLgoKVGhlIGRlcGVuZGVuY3kgdHJlZSBpcyBrZXk6IElzIGl0IGNhbGxlZCBieSBhIGNvcmUgZnVuY3Rpb24sIG9yIHNvbWUgb3B0aW9uYWwgZmVhdHVyZT8gV2hhdCBkb2VzIGl0IGRvIGZvciB0aGUgUEhZLCB3aGF0IHBhcnRzIG9mIHRoZSBQSFkgZG9lcyBpdCB0YWxrIHRvPyBUaGUgYW5zd2VycyB0byB0aG9zZSBxdWVzdGlvbnMgYXJlIGFsbCBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0aGUgc3lzdGVtLgoKSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBDcm9zcy1yZWZlcmVuY2luZyB0aGUgY29kZSwgdXNpbmcgYSBkZWJ1Z2dlciwgdGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3ODc9c3RhdGljIHZvaWQgcnR3ODgyMmNfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4MDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4MDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMS1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MDI6XHQucGh5X3NldF9wYXJhbVx0XHQ9IHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMy1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODgyMmNfcmVhZF9lZnVzZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2NTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqRGl2aW5nIGludG8gdGhlIGBwaHlfc2V0X3BhcmFtYCBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21ldGhpbmcgd2l0aGluIGBydHc4ODIyY19vcHNgLiBSaWdodCwgdGhhdCYjMzk7cyBwYXJ0IG9mIHRoZSBicm9hZGVyIGBzdHJ1Y3QgcnR3X2NoaXBfb3BzYCBzdHJ1Y3R1cmUuIFRoaXMgbWVhbnMgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQgb2YgdGhlIGRyaXZlciYjMzk7cyBpbnRlcmZhY2UuIE5vdywgSSBzZWUgdGhhdCBgcGh5X3NldF9wYXJhbWAgaXMgYmVpbmcgaW52b2tlZCDigJMgYW5kIHRoZSBjb3JlIGRyaXZlciBpcyB0aGUgb25lIGNhbGxpbmcgaXQuIFRoYXTigJlzIGEga2V5IGRldGFpbCEgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9uKHMpIHdoZXJlIGBwaHlfc2V0X3BhcmFtYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgY29yZSBsb2dpYy4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIHByb3ZpZGUgdmFsdWFibGUgY29udGV4dCBhcm91bmQgd2hhdCBwYXJhbWV0ZXJzIGFyZSBiZWluZyBzZXQgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcywgYW5kIHdpbGwgaW5mb3JtIG15IGRpYWdub3Npcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfc2V0X3BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTM3ND1pbnQgcnR3X3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE0MTM6XHRjaGlwLVx1MDAzZW9wcy1cdTAwM2VwaHlfc2V0X3BhcmFtKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oPTg2Mj1zdHJ1Y3QgcnR3X2NoaXBfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC04NjktXHRpbnQgKCpyZWFkX2VmdXNlKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjg3MDpcdHZvaWQgKCpwaHlfc2V0X3BhcmFtKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTg3MS1cdHZvaWQgKCpzZXRfY2hhbm5lbCkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggY2hhbm5lbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9NTUzPXN0YXRpYyB2b2lkIHJ0dzg3MDNiX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjU3ODpzdGF0aWMgdm9pZCBydHc4NzAzYl9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtNTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE4NDMtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg3MDNiX3JlYWRfZWZ1c2UsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTg0NDpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODcwM2JfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xODQ1LVx0LnNldF9jaGFubmVsXHRcdD0gcnR3ODcwM2Jfc2V0X2NoYW5uZWwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jPTY3PXN0YXRpYyB2b2lkIHJ0dzg3MjNkX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM6ODU6c3RhdGljIHZvaWQgcnR3ODcyM2RfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9MTM5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzIzZF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTEzOTQtXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxMzk1Olx0LnBoeV9zZXRfcGFyYW1cdFx0PSBydHc4NzIzZF9waHlfc2V0X3BhcmFtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTEzOTYtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg3MjN4X3JlYWRfZWZ1c2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODEyYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkxNi1cdC5wb3dlcl9vZmZcdFx0PSBydHc4ODEyYV9wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6OTE3Olx0LnBoeV9zZXRfcGFyYW1cdFx0PSBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkxOC1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODh4eGFfcmVhZF9lZnVzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MjY1PXN0YXRpYyB2b2lkIHJ0dzg4MTRhX2NvbmZpZ19jY2tfcnhfYW50ZW5uYV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTI4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyODM6c3RhdGljIHZvaWQgcnR3ODgxNGFfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTI4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jPTIwNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgxNGFfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDUyLVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MjA1MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODgxNGFfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDU0LVx0LnJlYWRfZWZ1c2VcdFx0PSBydHc4ODE0YV9yZWFkX2VmdXNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYz04NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMWFfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NjItXHQucG93ZXJfb2ZmXHRcdD0gcnR3ODgyMWFfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jOjg2MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NjQtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg4eHhhX3JlYWRfZWZ1c2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jPTE1MT1zdGF0aWMgdm9pZCBydHc4ODIxY19waHlfYmZfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTU4OnN0YXRpYyB2b2lkIHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYz0xNjU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjFjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY2MC1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jOjE2NjE6XHQucGh5X3NldF9wYXJhbVx0XHQ9IHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY2Mi1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODgyMWNfcmVhZF9lZnVzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MTQ1PXN0YXRpYyB2b2lkIHJ0dzg4MjJiX3BoeV9iZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTE1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYzoxNTI6c3RhdGljIHZvaWQgcnR3ODgyMmJfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTE1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jPTIxNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0yMTUyLVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE1MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODgyMmJfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0yMTU0LVx0LnJlYWRfZWZ1c2VcdFx0PSBydHc4ODIyYl9yZWFkX2VmdXNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzg3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTgwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxODAzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDEtXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAyOlx0LnBoeV9zZXRfcGFyYW1cdFx0PSBydHc4ODIyY19waHlfc2V0X3BhcmFtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDMtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg4MjJjX3JlYWRfZWZ1c2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODkxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkZXZpY2UgY29tZXMgdG8gbGlmZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBgcnR3X3Bvd2VyX29uYCwgdGhhdCBzZWVtcyBsaWtlIHRoZSBvYnZpb3VzIGVudHJ5IHBvaW50LCByaWdodD8gQnV0IHRoZW4gSSBzYXcgdGhhdCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgaXMgYWxzbyBjYWxsZWQgYnkgYHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZWAuIFRoYXQgZmVlbHMgaW50ZXJuYWwgdGhvdWdoLCBzbyBJIGRpc21pc3NlZCBpdC4KClNvLCB0aGUgdHJhY2UgbG9va3MgbGlrZSBgcnR3X3Bvd2VyX29uYCAtJmd0OyBgcGh5X3NldF9wYXJhbWAgLSZndDsgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIC0mZ3Q7IGBydHc4ODIyY19yZl9pbml0YCAtJmd0OyBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuCgpOb3csIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhbnRzIG1lIHRvIGF2b2lkIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIE15IGZpcnN0IHRob3VnaHQgd2FzIHdoZXRoZXIgYHJ0d19wb3dlcl9vbmAgd291bGQgYmUgc3VpdGFibGUsIGJ1dCBpdOKAmXMgcHJvYmFibHkgdG9vIGdlbmVyaWMsIHNvIEkgc2hvdWxkIGRpZyBkZWVwZXIuCgpUaGUgcHJvbXB0IHdhbnRzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gT2theSwgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGlzIGEgcG9zc2liaWxpdHkuIEJ1dCB0aGF0JiMzOTtzIHN0YXRpYyEgV2FpdCwgaXQmIzM5O3MgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIGluIGBydHc4ODIyY19vcHNgLiAqQWgqLCB0aGF0JiMzOTtzIHRoZSBrZXkuIEZ1bmN0aW9uIHBvaW50ZXJzIGF2b2lkIGlubGluaW5nIGJlY2F1c2UgdGhlIGNvbXBpbGVyIG5lZWRzIHRvIGJlIGFibGUgdG8gcmVzb2x2ZSBhbiBhZGRyZXNzLiBUaGF0JiMzOTtzIGdvb2Q7IGl0IG1lYW5zIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBoYXMgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMuCgpCdXQsIHRoZSBwcm9tcHQgd2FudHMgdG8gYXZvaWQgc3RhdGljIGZ1bmN0aW9ucywgc28gSSBzaG91bGQgbG9vayBpbnRvIHRoaXMgZnVydGhlci4gSSYjMzk7bGwgY2hlY2sgaXRzIGRlZmluaXRpb24gdG8gY29uZmlybSBpdCYjMzk7cyBzdGF0aWMuIFllcywgaXQgaXMgc3RhdGljLgoKQnV0LCB0aGUgcHJvbXB0IGFsc28gc2F5cyBpdCBwcmVmZXJzIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLCBzbyB3aGF0IGFib3V0IGBydHdfcG93ZXJfb25gPyBUaGF0JiMzOTtzIG5vdCBzdGF0aWMuIEkmIzM5O2xsIGNoZWNrIGBydHdfcG93ZXJfb25gIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY2AgdG8gc2VlIGlmIGl0JiMzOTtzIHRoZSByaWdodCBjaG9pY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19wb3dlcl9vbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTEzNTQ9c3RhdGljIGVudW0gcnR3X2xwc19kZWVwX21vZGUgcnR3X3VwZGF0ZV9scHNfZGVlcF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTM3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjEzNzQ6aW50IHJ0d19wb3dlcl9vbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTM3NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQ0Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNDQzOkVYUE9SVF9TWU1CT0wocnR3X3Bvd2VyX29uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmg9MjI3MT1pbnQgcnR3X3dhaXRfZmlybXdhcmVfY29tcGxldGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjIyNzI6aW50IHJ0d19wb3dlcl9vbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTIyNzMtdm9pZCBydHdfY29yZV9md19zY2FuX25vdGlmeShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBib29sIHN0YXJ0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTgzNzpcdC5wb3dlcl9vblx0XHQ9IHJ0d19wb3dlcl9vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xODM4LVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jPTEzOTI9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODcyM2Rfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jOjEzOTM6XHQucG93ZXJfb25cdFx0PSBydHdfcG93ZXJfb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtMTM5NC1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYz0yMDUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MTRhX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyMDUxOlx0LnBvd2VyX29uXHRcdD0gcnR3X3Bvd2VyX29uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTIwNTItXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIxY19vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTY1OTpcdC5wb3dlcl9vblx0XHQ9IHJ0d19wb3dlcl9vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNjYwLVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jPTIxNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmJfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jOjIxNTE6XHQucG93ZXJfb25cdFx0PSBydHdfcG93ZXJfb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE1Mi1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJjX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAwOlx0LnBvd2VyX29uXHRcdD0gcnR3X3Bvd2VyX29uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDEtXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwNTQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAzMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBydHdfcG93ZXJfb24gQ2FsbCBDaGFpbioqCgpPa2F5LCBzbyBgcnR3X3Bvd2VyX29uYCBpcyBleHBvcnRlZCwgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEJ1dCwgaGFuZyBvbiBhIHNlY29uZCwgbXkgaW50dWl0aW9uIGtpY2tzIGluLCBpdCYjMzk7cyBjYWxsZWQgYnkgbWFjODAyMTEgd2hlbiB0aGUgaW50ZXJmYWNlIGNvbWVzIHVwLiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBjYWxsIGNoYWluPyBMZXQmIzM5O3MgdHJhY2UgaXQgYW5kIHNlZS4KClRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyBzZXZlcmFsIGZ1bmN0aW9uczogYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgLCBgcnR3ODgyMmNfZGFjX2lxX2NoZWNrYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBJbW1lZGlhdGVseSBJIHJlY29nbml6ZSB0aGF0IHRoZXkgYWxsIHJlbGF0ZSB0byBEQUMgY2FsaWJyYXRpb24sIGFzIGV4cGVjdGVkLiBUaGV5IGFyZSBhbGwgY2FsbGVkIGZyb20gYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiBFeGNlbGxlbnQsIHRoYXQmIzM5O3Mgb3VyIG5leHQgbGluay4KCk5vdywgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGlzIHRyaWdnZXJlZCBieSBgcnR3ODgyMmNfcmZfaW5pdGAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIGBydHc4ODIyY19yZl9pbml0YCBpcyBjYWxsZWQgYnkgYm90aCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19kb19nYXBrYC4gQWhhIQoKQnV0IHdoYXQgYWJvdXQgYHJ0dzg4MjJjX2RvX2dhcGtgPyBpcyBpdCBjYWxsZWQgYnkgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gLCB0aGF0JiMzOTtzIGFuIGludGVyZXN0aW5nIHF1ZXN0aW9uLiBMZXQmIzM5O3MgbWFrZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY19kb19nYXBrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3MjM9c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2NTpzdGF0aWMgdm9pZCBydHc4ODIyY19kb19nYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQxMTk9c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMjEtXHRydHc4ODIyY19yZmtfcG93ZXJfc2F2ZShydHdkZXYsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTIyOlx0cnR3ODgyMmNfZG9fZ2FwayhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMjMtXHRydHc4ODIyY19kb19pcWsocnR3ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxODUKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgUEhZIENhbGlicmF0aW9uIFJvdXRpbmUqKgoKT2theSwgc28gSSBzZWUgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAgaXMgbWVudGlvbmVkIGluIHRoZSBjb2RlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoZXJlIGlzIGl0IGJlaW5nICpjYWxsZWQqIGZyb20/IEkgc3VzcGVjdCBpdCYjMzk7cyBsaWtlbHkgY2FsbGVkIHdpdGhpbiB0aGUgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UsIGdpdmVuIHRoZSBuYW1lLiBUbyBjb25maXJtIHRoaXMsIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCBhbmQgdmVyaWZ5IHRoZSByZWxhdGlvbnNoaXAuIExldCBtZSBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGVzZSB0d28gZnVuY3Rpb25zIGFuZCBzZWUgaWYgbXkgaHVuY2ggaXMgY29ycmVjdC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IHRyaWdnZXJpbmcgbWVjaGFuaXNtIGZvciB0aGlzIGNhbGlicmF0aW9uOyBpcyBpdCBiYXNlZCBvbiBwYXJhbWV0ZXIgY2hhbmdlcywgcG93ZXItdXAgc2VxdWVuY2UsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIGNoZWNrIHNob3VsZCBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQwNzc9c3RhdGljIHZvaWQgcnR3ODgyMmNfZG9fZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDExOTpzdGF0aWMgdm9pZCBydHc4ODIyY19waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00MTIwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MTYtXHQuZHBrX3RyYWNrXHRcdD0gcnR3ODgyMmNfZHBrX3RyYWNrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MTc6XHQucGh5X2NhbGlicmF0aW9uXHQ9IHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTE4LVx0LmNja19wZF9zZXRcdFx0PSBydHc4ODIyY19waHlfY2NrX3BkX3NldCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MjkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIENhbGlicmF0aW9uIFJvdXRpbmUqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgY2x1ZSBwb2ludHMgdG8gYHJ0dzg4MjJjX29wc2AsIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb250ZXh0IG9mIHRoZSBgcGh5X2NhbGlicmF0aW9uYCBjYWxsLiBUbyBkbyB0aGF0LCBJIG5lZWQgdG8gdHJhY2UgaXQuIFdoZXJlIGV4YWN0bHkgaXMgdGhpcyBjYWxpYnJhdGlvbiBmdW5jdGlvbiBpbnZva2VkPyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbGwgdGhlIHBvaW50cyBpbiB0aGUgY29kZSB3aGVyZSBgcGh5X2NhbGlicmF0aW9uYCBpcyBjYWxsZWQgd2l0aGluIHRoYXQgbW9kdWxlLCBvciBwb3RlbnRpYWxseSBldmVuIGZ1cnRoZXIgYWZpZWxkIGlmIGl0JiMzOTtzIGEgY3JpdGljYWwgY29tcG9uZW50LiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGFyZWFzIG9mIGltcGFjdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBmdW5jdGlvbnMsIHdoYXQgdHJpZ2dlcnMgaXQsIGFuZCB3aGF0IGRhdGEgaXQgdXRpbGl6ZXMgdG8gYWNoaWV2ZSBpdHMgZ29hbC4gTGV0JiMzOTtzIHN0YXJ0IHRoZSBzZWFyY2guLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2NhbGlicmF0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWM4MDIxMS5jPTQ2Mj1zdGF0aWMgaW50IHJ0d19vcHNfc3RhcnRfYXAoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWM4MDIxMS5jLTQ3Mi1cdHJ0d19zdG9yZV9vcF9jaGFuKHJ0d2RldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21hYzgwMjExLmM6NDczOlx0Y2hpcC1cdTAwM2VvcHMtXHUwMDNlcGh5X2NhbGlicmF0aW9uKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21hYzgwMjExLmMtNDc0LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJ0d2Rldi1cdTAwM2VtdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9OTE1PXZvaWQgcnR3X2NoaXBfcHJlcGFyZV90eChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkyMC1cdFx0cnR3ZGV2LVx1MDAzZW5lZWRfcmZrID0gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5MjE6XHRcdGNoaXAtXHUwMDNlb3BzLVx1MDAzZXBoeV9jYWxpYnJhdGlvbihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTIyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oPTg2Mj1zdHJ1Y3QgcnR3X2NoaXBfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC04ODgtXHR2b2lkICgqZmFsc2VfYWxhcm1fc3RhdGlzdGljcykoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaDo4ODk6XHR2b2lkICgqcGh5X2NhbGlicmF0aW9uKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTg5MC1cdHZvaWQgKCpkcGtfdHJhY2spKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYz0xMjc1PXZvaWQgcnR3ODcwM2JfaXFrX2ZpbGxfYV9tYXRyaXgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgY29uc3QgczMyIHJlc3VsdFtdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xMzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjEzMjE6c3RhdGljIHZvaWQgcnR3ODcwM2JfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTMyMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jPTE1ODc9c3RhdGljIHZvaWQgcnR3ODcwM2JfcGh5X3B3cnRyYWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE2MzQtXHRpZiAoZG9faXFrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjE2MzU6XHRcdHJ0dzg3MDNiX3BoeV9jYWxpYnJhdGlvbihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE2MzYtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYz0xODM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg3MDNiX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTg1NC1cdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXHQ9IHJ0dzg3MjN4X2ZhbHNlX2FsYXJtX3N0YXRpc3RpY3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTg1NTpcdC5waHlfY2FsaWJyYXRpb25cdD0gcnR3ODcwM2JfcGh5X2NhbGlicmF0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE4NTYtXHQuZHBrX3RyYWNrXHRcdD0gTlVMTCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9ODI0PXZvaWQgcnR3ODcyM2RfaXFrX29uZV9yb3VuZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgcmVzdWx0W11bSVFLX05SXSwgdTggdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtOTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jOjkyNTpzdGF0aWMgdm9pZCBydHc4NzIzZF9waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy05MjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYz0xMzIyPXN0YXRpYyB2b2lkIHJ0dzg3MjNkX3BoeV9wd3J0cmFjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xMzY5LVx0aWYgKGRvX2lxaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxMzcwOlx0XHRydHc4NzIzZF9waHlfY2FsaWJyYXRpb24ocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xMzcxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9MTM5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzIzZF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTE0MDktXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1x0PSBydHc4NzIzeF9mYWxzZV9hbGFybV9zdGF0aXN0aWNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jOjE0MTA6XHQucGh5X2NhbGlicmF0aW9uXHQ9IHJ0dzg3MjNkX3BoeV9jYWxpYnJhdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xNDExLVx0LmNja19wZF9zZXRcdFx0PSBydHc4NzIzZF9waHlfY2NrX3BkX3NldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM9Nzg4PXN0YXRpYyB2b2lkIHJ0dzg4MTJhX2RvX2lxayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYy04MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6ODQwOnN0YXRpYyB2b2lkIHJ0dzg4MTJhX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTg0MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODEyYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkzMC1cdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXHQ9IHJ0dzg4eHhhX2ZhbHNlX2FsYXJtX3N0YXRpc3RpY3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6OTMxOlx0LnBoeV9jYWxpYnJhdGlvblx0PSBydHc4ODEyYV9waHlfY2FsaWJyYXRpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmMtOTMyLVx0LmNja19wZF9zZXRcdFx0PSBydHc4OHh4YV9waHlfY2NrX3BkX3NldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MTc2Nz1zdGF0aWMgdm9pZCBydHc4ODE0YV9kb19pcWsoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMTc5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoxNzkyOnN0YXRpYyB2b2lkIHJ0dzg4MTRhX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTE3OTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYz0yMDUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MTRhX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMjA2Ni1cdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXHQ9IHJ0dzg4MTRhX2ZhbHNlX2FsYXJtX3N0YXRpc3RpY3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MjA2NzpcdC5waHlfY2FsaWJyYXRpb25cdD0gcnR3ODgxNGFfcGh5X2NhbGlicmF0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTIwNjgtXHQuY2NrX3BkX3NldFx0XHQ9IHJ0dzg4MTRhX3BoeV9jY2tfcGRfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYz02NTU9c3RhdGljIHZvaWQgcnR3ODgyMWFfZG9faXFrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jLTY4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYzo2ODk6c3RhdGljIHZvaWQgcnR3ODgyMWFfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtNjkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmM9ODYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjFhX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtODc2LVx0LmZhbHNlX2FsYXJtX3N0YXRpc3RpY3NcdD0gcnR3ODh4eGFfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYzo4Nzc6XHQucGh5X2NhbGlicmF0aW9uXHQ9IHJ0dzg4MjFhX3BoeV9jYWxpYnJhdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NzgtXHQuY2NrX3BkX3NldFx0XHQ9IHJ0dzg4eHhhX3BoeV9jY2tfcGRfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYz03NzQ9c3RhdGljIHZvaWQgcnR3ODgyMWNfZG9faXFrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTgwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYzo4MDI6c3RhdGljIHZvaWQgcnR3ODgyMWNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtODAzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIxY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE2NzMtXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1x0PSBydHc4ODIxY19mYWxzZV9hbGFybV9zdGF0aXN0aWNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jOjE2NzQ6XHQucGh5X2NhbGlicmF0aW9uXHQ9IHJ0dzg4MjFjX3BoeV9jYWxpYnJhdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNjc1LVx0LmNja19wZF9zZXRcdFx0PSBydHc4ODIxY19waHlfY2NrX3BkX3NldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MTA3MT1zdGF0aWMgdm9pZCBydHc4ODIyYl9kb19pcWsoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMTA5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYzoxMDk2OnN0YXRpYyB2b2lkIHJ0dzg4MjJiX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTEwOTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYz0yMTUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJiX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE2NS1cdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXHQ9IHJ0dzg4MjJiX2ZhbHNlX2FsYXJtX3N0YXRpc3RpY3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE2NjpcdC5waHlfY2FsaWJyYXRpb25cdD0gcnR3ODgyMmJfcGh5X2NhbGlicmF0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTIxNjctXHQucHdyX3RyYWNrXHRcdD0gcnR3ODgyMmJfcHdyX3RyYWNrLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00MDc3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RvX2RwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00MTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxMTk6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDEyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQ4OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTE2LVx0LmRwa190cmFja1x0XHQ9IHJ0dzg4MjJjX2Rwa190cmFjayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTE3Olx0LnBoeV9jYWxpYnJhdGlvblx0PSBydHc4ODIyY19waHlfY2FsaWJyYXRpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkxOC1cdC5jY2tfcGRfc2V0XHRcdD0gcnR3ODgyMmNfcGh5X2Nja19wZF9zZXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTczCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNzQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZWFsdGVrIERyaXZlciBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBleGVjdXRpb24gZmxvdyBoZXJlLCB0cnlpbmcgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBtb2RpZmllZCBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBydHdfY2hpcF9wcmVwYXJlX3R4YCwgc2luY2UgdGhhdCBjYWxscyBgcGh5X2NhbGlicmF0aW9uYCwgYW5kIGFsc28gYHJ0d19vcHNfc3RhcnRfYXBgIHdoaWNoICphbHNvKiBjYWxscyBgcGh5X2NhbGlicmF0aW9uYC4gQnV0IHdhaXQsIGBydHdfY2hpcF9wcmVwYXJlX3R4YCBpcyBwYXJ0IG9mIHRoZSBNQUM4MDIxMSBwYWNrZXQgdHJhbnNtaXNzaW9uIHByb2Nlc3MsIHNvIHRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlICpiZXN0KiBlbnRyeSBwb2ludC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGRlZXBlci4KCmBydHdfcG93ZXJfb25gIGxvb2tzIHByb21pc2luZyBhcyBhbiBpbml0aWFsIGVudHJ5IHBvaW50LiBMZXQgbWUgY29uZmlybSBpZiBpdCYjMzk7cyBleHBvcnRlZCBhbmQsIHllcCwgaXQgaXMuIEJ1dCwgSSBuZWVkIHRvIGdldCAqZGVlcGVyKiBpbnRvIHRoZSBjb2RlIHRvIHRoZSBhY3R1YWwgZnVuY3Rpb25zIG9mIGludGVyZXN0LgoKTGV0JiMzOTtzIGxvb2sgbW9yZSBjbG9zZWx5IGF0IGBwaHlfY2FsaWJyYXRpb25gIGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4gSSByZWNhbGwgdGhhdCBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYCBhbmQgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFyZSBib3RoIHN0YXRpYywgYnV0IHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBgcGh5X2NhbGlicmF0aW9uYCBhbmQgYHBoeV9zZXRfcGFyYW1gIHJlc3BlY3RpdmVseS4gTm93LCB0aGlzIGlzIGltcG9ydGFudC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0LCBzaW5jZSB0aGVzZSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHRoZXkgd29uJiMzOTt0IGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgdGhlcmVmb3JlLCB0aGV5IGFyZSBkaXN0aW5jdCBzeW1ib2xzLiBTbywgYXMgdGhlIHByb21wdCBkaXJlY3RzLCBJIGNhbiBjb25zaWRlciB0aGVtIHZhbGlkIGVudHJ5IHBvaW50cy4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdCEgQmFzZWQgb24gdGhlIHByb21wdCBJIGNhbiBsaXN0IGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGFuZCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAuCgpCdXQgSSByZW1lbWJlciB0aGUgbW9kaWZpZWQgY29kZSBpcyBpbiBgcnR3ODgyMmNfcmZfZGFjX2NhbGAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBydHc4ODIyY19yZl9pbml0YC4gTGV0IG1lIHRyYWNlIHRoZSBjYWxscy4gT2theSwgYHJ0dzg4MjJjX3JmX2luaXRgIGlzIGNhbGxlZCBieSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19kb19nYXBrYC4gQW5kIGBydHc4ODIyY19kb19nYXBrYCBpcyBjYWxsZWQgYnkgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAuIEJpbmdvISBUaGlzIGNvbmZpcm1zIHRoYXQgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFuZCBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYCBhcmUgdGhlICpleGFjdCogZW50cnkgcG9pbnRzIGZvciB0aGUgcGFydCBvZiB0aGUgY29kZSBJJiMzOTttIGludGVyZXN0ZWQgaW4hCgpOb3cgSSBuZWVkIHRvIGVuc3VyZSB0aGV5IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBzdGF0aWMgbmF0dXJlIG9mIGBydHc4ODIyY19yZl9pbml0YCBhbmQgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiBZZXAsIHRoZXkmIzM5O3JlIGJvdGggc3RhdGljLiBBbmQgdGhleSBhcmUgb25seSBjYWxsZWQgaW4gYSBjb3VwbGUgb2YgcGxhY2VzLiBUaGlzICptaWdodCogbWVhbiB0aGUgY29tcGlsZXIgaXMgZnJlZSB0byBpbmxpbmUgdGhlbS4gQnV0LCBzaW5jZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGFyZSBmdW5jdGlvbiBwb2ludGVycywgSSB0aGluayBpdCYjMzk7cyBzYWZlc3QgdG8gZm9jdXMgb24gdGhlc2UuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24uIEkgcmVjYWxsIGZyb20gdGhlIGNvbmZpZyBmaWxlIHRoYXQgYFJUVzg4Xzg4MjJDVWAgaXMgbmVlZGVkIHRvIGVuYWJsZSB0aGUgVVNCIGRyaXZlci4gV2FpdCwgd2FpdCwgYFJUVzg4Xzg4MjJDYCBpcyB0aGUgY29uZmlnIHRoYXQgYWN0dWFsbHkgY29tcGlsZXMgYHJ0dzg4MjJjLmNgLCB3aGljaCBpcyB0aGUgZmlsZSB3aXRoIHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdC4gSG1tLCBpdCYjMzk7cyBhIGhpZGRlbiBjb25maWcsIHNlbGVjdGVkIGJ5IGBSVFc4OF84ODIyQ0VgLCBgUlRXODhfODgyMkNTYCwgYW5kIGBSVFc4OF84ODIyQ1VgLiBSaWdodCwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODhfODgyMkMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTI2PWNvbmZpZyBSVFc4OF84ODIyQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOTpjb25maWcgUlRXODhfODgyMkNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTgyPWNvbmZpZyBSVFc4OF84ODIyQlVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6OTM6Y29uZmlnIFJUVzg4Xzg4MjJDRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTA0OmNvbmZpZyBSVFc4OF84ODIyQ1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMDUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTE1OmNvbmZpZyBSVFc4OF84ODIyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDU4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVFc4OCBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgUlRXODhfODgyMkNgIGlzIGEgdHJpc3RhdGUgc2V0dGluZywgYW5kIGltcG9ydGFudGx5LCBpdCBkb2VzbiYjMzk7dCBoYXZlIGEgcHJvbXB0LiBUaGF0IG1lYW5zIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBVU0IgdmFyaWFudCwgYFJUVzg4Xzg4MjJDVWAsIGlzIGNvbXBpbGVkIGluIG9yZGVyIHRvIHRlc3QgaXQgZWZmZWN0aXZlbHkgdGhyb3VnaCBVU0IuIFdhaXQgYSBtaW51dGXigKYgYFJUVzg4Xzg4MjJDVWAgaXMgKmRlcGVuZGVudCogb24gYFVTQmAuIFRoYXTigJlzIGdvb2QsIGJ1dCBpdCBtYWtlcyBtZSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB1bmRlcmx5aW5nIHJlcXVpcmVtZW50cy4gQmV0dGVyIHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgYnJvYWRlciBgUlRXODhgIGNvbmZpZ3VyYXRpb24gdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdlJiMzOTt2ZSBjb3ZlcmVkIGFsbCB0aGUgYmFzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVFc4OCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTExPWlmIFJUVzg4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTM6Y29uZmlnIFJUVzg4X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OF9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjA6Y29uZmlnIFJUVzg4X1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM6Y29uZmlnIFJUVzg4X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI0LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNjpjb25maWcgUlRXODhfODgyMkJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6Mjk6Y29uZmlnIFJUVzg4Xzg4MjJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzAtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OF84NzIzWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzozNTpjb25maWcgUlRXODhfODcwM0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM5OmNvbmZpZyBSVFc4OF84NzIzRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDM6Y29uZmlnIFJUVzg4Xzg4MjFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ2OmNvbmZpZyBSVFc4OF84OFhYQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ3LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0OTpjb25maWcgUlRXODhfODgyMUFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjUzOmNvbmZpZyBSVFc4OF84ODEyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NTc6Y29uZmlnIFJUVzg4Xzg4MTRBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTgtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjYwOmNvbmZpZyBSVFc4OF84ODIyQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NzE6Y29uZmlnIFJUVzg4Xzg4MjJCU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTcyLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6ODI6Y29uZmlnIFJUVzg4Xzg4MjJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgzLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo5Mzpjb25maWcgUlRXODhfODgyMkNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUVzg4Xzg4MjJDU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwNS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg4Xzg4MjJDVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEyNjpjb25maWcgUlRXODhfODcyM0RFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTI3LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTM3OmNvbmZpZyBSVFc4OF84NzIzRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNEUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTQ4OmNvbmZpZyBSVFc4OF84NzIzQ1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTYyOmNvbmZpZyBSVFc4OF84NzIzRFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNEVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNzM6Y29uZmlnIFJUVzg4Xzg4MjFDRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3NC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMUNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE4NDpjb25maWcgUlRXODhfODgyMUNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTg1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE5NTpjb25maWcgUlRXODhfODgyMUNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTk2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjA2OmNvbmZpZyBSVFc4OF84ODIxQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFBVS84ODExQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjE3OmNvbmZpZyBSVFc4OF84ODEyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMjg6Y29uZmlnIFJUVzg4Xzg4MTRBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIyOS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgxNEFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIzOTpjb25maWcgUlRXODhfODgxNEFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQwLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODE0QVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjUwOmNvbmZpZyBSVFc4OF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1MS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OCBkZWJ1ZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTg6Y29uZmlnIFJUVzg4X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNTktXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODggZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNjY6Y29uZmlnIFJUVzg4X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNjctXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDcyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlIHNlZW1zIHRvIGJlIGBSVFc4OGAuIFJpZ2h0LCBzbyB0aGF0IG1lYW5zIHdlJiMzOTtsbCBkZWZpbml0ZWx5IG5lZWQgdG8gaW5jbHVkZSBgUlRXODhgLCBhbmQgYWxzbywgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgUlRXODhfODgyMkNVYC4gTm8gc3VycHJpc2VzIHRoZXJlLiBIb2xkIG9uLi4uIEkmIzM5O20ganVzdCByZWNhbGxpbmcgc29tZXRoaW5nOyBgUlRXODhgIHJlbGllcyBvbiBgTUFDODAyMTFgLiBUaGF0JiMzOTtzIGFuIGltcG9ydGFudCBkZXBlbmRlbmN5IHRvIGtlZXAgaW4gbWluZDsgZ290dGEgbWFrZSBzdXJlIHRoYXQmIzM5O3MgaGFuZGxlZCBjb3JyZWN0bHkgaW4gdGhpcyBzZXR1cC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayBgUlRXODhgJiMzOTtzIGRlcGVuZGVuY2llcyBhZ2FpbiB0byBiZSBjZXJ0YWluIGV2ZXJ5dGhpbmcmIzM5O3MgaW4gb3JkZXIsIGp1c3QgdG8gY3Jvc3MtcmVmZXJlbmNlIGFuZCBjb25maXJtIGl0IGFsbCBqaXZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRtZW51Y29uZmlnIFJUVzg4XG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgwMi4xMWFjIHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBtYWM4MDIxMS1iYXNlZCB3aXJlbGVzcyBkcml2ZXJzIHRoYXRcbiAgIDc6XHRcdCAgZW5hYmxlcyBSZWFsdGVrIElFRUUgODAyLjExYWMgd2lyZWxlc3MgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgcnR3ODguXG4gIDEwOlx0XG4gIDExOlx0aWYgUlRXODhcbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgUlRXODhfQ09SRVxuICAxNDpcdFx0dHJpc3RhdGVcbiAgMTU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBSVFc4OF9QQ0lcbiAgMTg6XHRcdHRyaXN0YXRlXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFJUVzg4X1NESU9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYwMDMKCQkJCQkJCW91dHB1dDogMjIyCgkJCQkJCQl0aG91Z2h0czogMTM1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUmVhbHRlayBydHc4ODIyYyBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcqKgoKT2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBhcHByb2FjaCBmb3IgZnV6emluZyB0aGlzIFJlYWx0ZWsgZHJpdmVyIHBhdGNoLgoKRmlyc3QsIEkgc2VlIHRoYXQgdGhpcyBtb2RpZmljYXRpb24gdGFyZ2V0cyB0aGUgREFDIElRIGNhbGlicmF0aW9uIHByb2Nlc3Mgd2l0aGluIHRoZSBgcnR3ODgyMmNgIGNoaXAuIFRoaXMgY2FsaWJyYXRpb24gaXMgcGVyZm9ybWVkIGR1cmluZyBQSFkgcGFyYW1ldGVyIHNldHRpbmcgYW5kIGNhbGlicmF0aW9uLiBGcm9tIGEgY29uZmlndXJhdGlvbiBzdGFuZHBvaW50LCBgTUFDODAyMTFgIGlzIG9idmlvdXNseSByZXF1aXJlZCwgYXMgaXMgYFJUVzg4YCBmb3IgdGhlIGRyaXZlciBpdHNlbGYsIGFuZCBzcGVjaWZpY2FsbHkgYFJUVzg4Xzg4MjJDVWAgdG8gZW5hYmxlIHRoZSBVU0IgdmFyaWFudCwgd2hpY2ggd2lsbCBiZSB1c2VmdWwgZm9yIHZpcnR1YWxpemVkIGZ1enppbmcuIGBVU0JgIGlzIGFsc28gcmVxdWlyZWQsIGJ1dCBpdCYjMzk7cyBhIHN0YW5kYXJkIGNvbmZpZywgc28gSSYjMzk7bGwgaW5jbHVkZSBpdC4KCk5vdywgdGhlIGNydWNpYWwgcGFydDogaWRlbnRpZnlpbmcgdGhlIHJlbGV2YW50IHN5bWJvbHMuIFRoZSBwcm9tcHQgc3VnZ2VzdHMgcHJpb3JpdGl6aW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgYHJ0d19wb3dlcl9vbmAsIGJ1dCB0aGF0JiMzOTtzIHRvbyBicm9hZDsgaXQgbWlnaHQgdHJpZ2dlciBmdW5jdGlvbnMgYWNyb3NzIHZhcmlvdXMgYHJ0dzg4YCBjaGlwcy4gSSB3YW50IHRvIGJlIGFzIHByZWNpc2UgYXMgcG9zc2libGUuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgZnVuY3Rpb25zIGxpa2UgYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYW5kIHNvIG9uLiBTbywgd2hhdCYjMzk7cyB0aGUgYmVzdCB3YXkgdG8gaGl0IHRoYXQgY29kZT8KCkkgbG9va2VkIGF0IGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAuIFRoZXkgc2VlbSBpZGVhbCBiZWNhdXNlIHRoZXkgYXJlIHNwZWNpZmljIHRvIHRoZSBgcnR3ODgyMmNgIGNoaXAuIEkgY2hlY2tlZCBhbmQgdGhleSBhcmUgYm90aCBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gdGhlIGBydHc4ODIyY19vcHNgIHN0cnVjdC4gVGhhdCBtZWFucyB0aGUgY29tcGlsZXIgKmNhbm5vdCogaW5saW5lIHRoZW0sIHNpbmNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgbmVlZGVkLiBUaGV5JiMzOTtyZSBub24tc3RhdGljLCBzbyB0aGUgcHJvbXB0IHJlcXVpcmVtZW50cyBhcmUgc2F0aXNmaWVkLiBBbHRob3VnaCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgKmlzKiBzdGF0aWMsIHRoZSBwcm9tcHQgaXMgc2F0aXNmaWVkIGJlY2F1c2UgaXQgaXMgbm90IGlubGluZWQgYW5kIGl0cyBhZGRyZXNzIGlzIHRha2VuLgoKSSBhbHNvIGNvbnNpZGVyZWQgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLCBhcyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0ICpkaXJlY3RseSogY29udGFpbnMgdGhlIG1vZGlmaWVkIGNvZGUuIEhvd2V2ZXIsIGl0JiMzOTtzIGNhbGxlZCBieSBgcnR3ODgyMmNfcmZfaW5pdGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVgLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBJdCYjMzk7cyBsZXNzIGxpa2VseSwgYnV0IHN0aWxsIGEgcG9zc2liaWxpdHkuIFRvIGJlIHNhZmUsIEkmIzM5O2xsIHN0aWNrIHdpdGggYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFuZCBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYC4gVGhlc2Ugc2hvdWxkIGdpdmUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHRyaWdnZXIgdGhlIGNvZGUsIGFzIHRoZSBwcm9tcHQgc3BlY2lmaWVzLgoKVG8gc3VtbWFyaXplLCB0aGUgcGF0Y2ggbW9kaWZpZXMgREFDIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIGBydHc4ODIyY2Agd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgc2ltcGxpZnlpbmcgc29ydGluZyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy4gVGhpcyBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbiB1c2luZyB0aGUgYENPTkZJR19SVFc4OF84ODIyQ1VgIG9wdGlvbi4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgYWNjZXNzZWQgZHVyaW5nIFBIWSBwYXJhbWV0ZXIgc2V0dXAgYW5kIGNhbGlicmF0aW9uLCB3aGljaCBpcyB0cmlnZ2VyZWQgdmlhIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAsIHdoaWNoIGFyZSBub24taW5saW5lZCBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHJ0dzg4MjJjX29wc2AuIFRoaXMgaXMgZnVuY3Rpb25hbCBiZWNhdXNlIHRoZSBjdXN0b20gc29ydCBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9uIGlzIHJlcGxhY2VkIGJ5IHN0YW5kYXJkIGBzb3J0YCBhbmQgc2ltcGxpZmllZCBtYXRoLCBmaXhpbmcgcG90ZW50aWFsIGJ1Z3Mgb3Igc2ltcGxpZnlpbmcgY29kZS4gVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpNeSBjaG9zZW4gY29uZmlncyBhcmU6CiogICBgTUFDODAyMTFgCiogICBgUlRXODhgCiogICBgUlRXODhfODgyMkNVYAoKTXkgY2hvc2VuIHN5bWJvbHMgYXJlOgoqICAgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gCiogICBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7UlRXODgmIzM0OywKICAgICYjMzQ7UlRXODhfODgyMkNVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODgyMmNfcGh5X3NldF9wYXJhbSYjMzQ7LAogICAgJiMzNDtydHc4ODIyY19waHlfY2FsaWJyYXRpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBQyBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4ODIyYyB3aXJlbGVzcyBkcml2ZXIsIHNpbXBsaWZ5aW5nIHNvcnRpbmcgYW5kIG9mZnNldCBjYWxjdWxhdGlvbnMuIFRoaXMgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoZHVtbXkgSENEKSBieSBlbmFibGluZyB0aGUgVVNCIHZhcmlhbnQgb2YgdGhlIGRyaXZlciAoQ09ORklHX1JUVzg4Xzg4MjJDVSkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBQSFkgcGFyYW1ldGVyIHNldHVwIGFuZCBjYWxpYnJhdGlvbiwgd2hpY2ggYXJlIGFjY2Vzc2libGUgdmlhIHRoZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGNhbGxiYWNrcy4gVGhlc2UgY2FsbGJhY2tzIGFyZSBub3QgaW5saW5lZCBhcyB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyBpbiB0aGUgY2hpcCBvcGVyYXRpb25zIHN0cnVjdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7UlRXODgmIzM0OywKICAgICYjMzQ7UlRXODhfODgyMkNVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODgyMmNfcGh5X3NldF9wYXJhbSYjMzQ7LAogICAgJiMzNDtydHc4ODIyY19waHlfY2FsaWJyYXRpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBQyBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4ODIyYyB3aXJlbGVzcyBkcml2ZXIsIHNpbXBsaWZ5aW5nIHNvcnRpbmcgYW5kIG9mZnNldCBjYWxjdWxhdGlvbnMuIFRoaXMgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoZHVtbXkgSENEKSBieSBlbmFibGluZyB0aGUgVVNCIHZhcmlhbnQgb2YgdGhlIGRyaXZlciAoQ09ORklHX1JUVzg4Xzg4MjJDVSkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBQSFkgcGFyYW1ldGVyIHNldHVwIGFuZCBjYWxpYnJhdGlvbiwgd2hpY2ggYXJlIGFjY2Vzc2libGUgdmlhIHRoZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGNhbGxiYWNrcy4gVGhlc2UgY2FsbGJhY2tzIGFyZSBub3QgaW5saW5lZCBhcyB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyBpbiB0aGUgY2hpcCBvcGVyYXRpb25zIHN0cnVjdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBydHc4OCBkcml2ZXIgYnkgcmVwbGFjaW5nIGN1c3RvbSAxMC1iaXQgc2lnbi1tYWduaXR1ZGUvdHdvJiMzOTtzLWNvbXBsZW1lbnQgYXJpdGhtZXRpYyBhbmQgYSBjdXN0b20gYnViYmxlIHNvcnQgd2l0aCBzdGFuZGFyZCBgczMyYCB0eXBlcywgYHNpZ25fZXh0ZW5kMzIoKWAsIGFuZCB0aGUga2VybmVsJiMzOTtzIGJ1aWx0LWluIGBzb3J0KClgIGZ1bmN0aW9uLiBcblxuV2hpbGUgdGhlIHN0YWNrLWFsbG9jYXRlZCBhcnJheXMgYGl2YCBhbmQgYHF2YCBjb3VsZCBwb3RlbnRpYWxseSBjb250YWluIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlmIHRoZSBzYW1wbGluZyBsb29wIGluIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZSgpYCB0ZXJtaW5hdGVzIGVhcmx5IChkdWUgdG8gdGhlIGBjbnQgXHUwMDNjIDEwMDAwYCBjb25kaXRpb24pLCB0aGlzIGJlaGF2aW9yIGFuZCB0aGUgc3Vic2VxdWVudCByZWFkcyBvZiB0aGUgZW50aXJlIGFycmF5IHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBvbGQgY29kZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGFyaXRobWV0aWMgYW5kIHNvcnRpbmcgcmVmYWN0b3JpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWY0Njc3Y2ZiZTg2NDZlZmM4YjY3MjQ1YmFmYmI5YWJiN2NkYzg2NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE3OjI0OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jCmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMKQEAgLTMsNiAmIzQzOzMsOCBAQAogICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0b3BzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NvcnQuaCZndDsKICNpbmNsdWRlICYjMzQ7bWFpbi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y29leC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZncuaCYjMzQ7CkBAIC0xNTMsODQgJiM0MzsxNTUsMzAgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSwKLQkJCQkgICB1MzIgKm1pbiwgdTMyICptYXgpCiYjNDM7c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogewotCWlmICh2YWx1ZSAmZ3Q7PSAweDIwMCkgewotCQlpZiAoKm1pbiAmZ3Q7PSAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0gZWxzZSB7Ci0JCQkqbWluID0gdmFsdWU7Ci0JCX0KLQkJaWYgKCptYXggJmd0Oz0gMHgyMDApIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfSBlbHNlIHsKLQkJaWYgKCptaW4gJmx0OyAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0KLQotCQlpZiAoKm1heCAgJmd0Oz0gMHgyMDApIHsKLQkJCSptYXggPSB2YWx1ZTsKLQkJfSBlbHNlIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfQotfQomIzQzOwlzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7CiYjNDM7CXMzMiB2YiA9ICooY29uc3QgczMyICopYjsKIAotc3RhdGljIHZvaWQgX19ydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnYxLCB1MzIgKnYyKQotewotCWlmICgqdjEgJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmd0Oz0gMHgyMDApIHsKLQkJaWYgKCp2MSAmZ3Q7ICp2MikKLQkJCXN3YXAoKnYxLCAqdjIpOwotCX0gZWxzZSBpZiAoKnYxICZsdDsgMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmx0OyAweDIwMCkgewotCQlpZiAoKnYxICZndDsgKnYyKQotCQkJc3dhcCgqdjEsICp2Mik7Ci0JfSBlbHNlIGlmICgqdjEgJmx0OyAweDIwMCAmYW1wOyZhbXA7ICp2MiAmZ3Q7PSAweDIwMCkgewotCQlzd2FwKCp2MSwgKnYyKTsKLQl9CiYjNDM7CXJldHVybiAodmEgJmd0OyB2YikgLSAodmEgJmx0OyB2Yik7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpCiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdikKIHsKLQl1MzIgaSwgajsKLQotCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDIC0gMTsgaSYjNDM7JiM0MzspIHsKLQkJZm9yIChqID0gMDsgaiAmbHQ7IChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaiYjNDM7JiM0MzspIHsKLQkJCV9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCAmYW1wO2l2W2pdLCAmYW1wO2l2W2ogJiM0MzsgMV0pOwotCQkJX19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsICZhbXA7cXZbal0sICZhbXA7cXZbaiAmIzQzOyAxXSk7Ci0JCX0KLQl9CiYjNDM7CXNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiYjNDM7CXNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKQomIzQzO3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYykKIHsKLQl1MzIgcCwgbSwgdCwgaTsKJiM0MzsJczMyIHN1bSA9IDA7CiAKLQltID0gMDsKLQlwID0gMDsKLQlmb3IgKGkgPSAxMDsgaSAmbHQ7IERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKHZlY1tpXSAmZ3Q7IDB4MjAwKQotCQkJbSA9ICgweDQwMCAtIHZlY1tpXSkgJiM0MzsgbTsKLQkJZWxzZQotCQkJcCA9IHZlY1tpXSAmIzQzOyBwOwotCX0KJiM0MzsJZm9yICh1MzIgaSA9IDEwOyBpICZsdDsgREFDS19TTl84ODIyQyAtIDEwOyBpJiM0MzsmIzQzOykKJiM0MzsJCXN1bSAmIzQzOz0gdmVjW2ldOwogCi0JaWYgKHAgJmd0OyBtKSB7Ci0JCXQgPSBwIC0gbTsKLQkJdCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTsKLQl9IGVsc2UgewotCQl0ID0gbSAtIHA7Ci0JCXQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7Ci0JCWlmICh0ICE9IDB4MCkKLQkJCXQgPSAweDQwMCAtIHQ7Ci0JfQomIzQzOwlzMzIgYXZnID0gc3VtIC8gKERBQ0tfU05fODgyMkMgLSAyMCk7CiAKLQkqdmFsID0gdDsKJiM0MzsJcmV0dXJuIGF2ZyAmZ3Q7PSAwID8gYXZnIDogMHg0MDAgJiM0MzsgYXZnOwogfQogCiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aCkKQEAgLTI3MSwyOSAmIzQzOzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKQogCXJldHVybiBiYXNlX2FkZHI7CiB9CiAKLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpCiYjNDM7c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSkKIHsKLQlib29sIHJldCA9IHRydWU7CiAKLQlpZiAoKHZhbHVlICZndDs9IDB4MjAwICZhbXA7JmFtcDsgKDB4NDAwIC0gdmFsdWUpICZndDsgMHg2NCkgfHwKLQkgICAgKHZhbHVlICZsdDsgMHgyMDAgJmFtcDsmYW1wOyB2YWx1ZSAmZ3Q7IDB4NjQpKSB7Ci0JCXJldCA9IGZhbHNlOwomIzQzOwlpZiAodmFsdWUgJmd0OyAxMDAgfHwgdmFsdWUgJmx0OyAtMTAwKSB7CiAJCXJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgJiMzNDtbREFDS10gRXJyb3Igb3ZlcmZsb3dcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKJiM0MztzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KQogewogCXUzMiB0ZW1wOwotCWludCBpID0gMCwgY250ID0gMDsKJiM0MzsJdTMyIGkgPSAwLCBjbnQgPSAwOwogCiAJd2hpbGUgKGkgJmx0OyBEQUNLX1NOXzg4MjJDICZhbXA7JmFtcDsgY250ICZsdDsgMTAwMDApIHsKIAkJY250JiM0MzsmIzQzOzsKIAkJdGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpOwotCQlpdltpXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJcXZbaV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJaXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMiwgOSk7CiYjNDM7CQlxdltpXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAKIAkJaWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSAmYW1wOyZhbXA7CiAJCSAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpCkBAIC0zMDIsMTMgJiM0MzsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKIH0KIAogc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwKLQkJCQkgICAgICAgdTMyICppdiwgdTMyICpxdiwKJiM0MzsJCQkJICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsCiAJCQkJICAgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKQogewotCXUzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7Ci0JdTMyIGlfZGVsdGEsIHFfZGVsdGE7CiYjNDM7CXMzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7CiAJdTMyIHRlbXA7Ci0JaW50IGksIGNudCA9IDA7CiYjNDM7CXUzMiBpLCBjbnQgPSAwOwogCiAJZG8gewogCQlpX21pbiA9IGl2WzBdOwpAQCAtMzE2LDIzICYjNDM7MjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJCXFfbWluID0gcXZbMF07CiAJCXFfbWF4ID0gcXZbMF07CiAJCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDOyBpJiM0MzsmIzQzOykgewotCQkJcnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIGl2W2ldLCAmYW1wO2lfbWluLCAmYW1wO2lfbWF4KTsKLQkJCXJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBxdltpXSwgJmFtcDtxX21pbiwgJmFtcDtxX21heCk7CiYjNDM7CQkJaWYgKGl2W2ldICZsdDsgaV9taW4pCiYjNDM7CQkJCWlfbWluID0gaXZbaV07CiYjNDM7CQkJaWYgKGl2W2ldICZndDsgaV9tYXgpCiYjNDM7CQkJCWlfbWF4ID0gaXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZsdDsgcV9taW4pCiYjNDM7CQkJCXFfbWluID0gcXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZndDsgcV9tYXgpCiYjNDM7CQkJCXFfbWF4ID0gcXZbaV07CiAJCX0KIAotCQlpZiAoaV9tYXggJmx0OyAweDIwMCAmYW1wOyZhbXA7IGlfbWluICZsdDsgMHgyMDApCi0JCQlpX2RlbHRhID0gaV9tYXggLSBpX21pbjsKLQkJZWxzZSBpZiAoaV9tYXggJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyBpX21pbiAmZ3Q7PSAweDIwMCkKLQkJCWlfZGVsdGEgPSBpX21heCAtIGlfbWluOwotCQllbHNlCi0JCQlpX2RlbHRhID0gaV9tYXggJiM0MzsgKDB4NDAwIC0gaV9taW4pOwotCi0JCWlmIChxX21heCAmbHQ7IDB4MjAwICZhbXA7JmFtcDsgcV9taW4gJmx0OyAweDIwMCkKLQkJCXFfZGVsdGEgPSBxX21heCAtIHFfbWluOwotCQllbHNlIGlmIChxX21heCAmZ3Q7PSAweDIwMCAmYW1wOyZhbXA7IHFfbWluICZndDs9IDB4MjAwKQotCQkJcV9kZWx0YSA9IHFfbWF4IC0gcV9taW47Ci0JCWVsc2UKLQkJCXFfZGVsdGEgPSBxX21heCAmIzQzOyAoMHg0MDAgLSBxX21pbik7CiYjNDM7CQl1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pOwomIzQzOwkJdTMyIHFfZGVsdGEgPSAodTMyKShxX21heCAtIHFfbWluKTsKIAogCQlydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssCiAJCQkmIzM0O1tEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcbiYjMzQ7LApAQCAtMzQ1LDI0ICYjNDM7Mjg1LDI0IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAKIAkJaWYgKGlfZGVsdGEgJmd0OyA1IHx8IHFfZGVsdGEgJmd0OyA1KSB7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdlswXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJCXF2WzBdID0gdGVtcCAmYW1wOyAweDNmZjsKJiM0MzsJCQlpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTI7Ci0JCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJCWl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgJmFtcDsgMHgzZmYsIDkpOwogCQl9IGVsc2UgewogCQkJYnJlYWs7CiAJCX0KIAl9IHdoaWxlIChjbnQmIzQzOyYjNDM7ICZsdDsgMTAwKTsKIAotCXJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7Ci0JcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTsKJiM0MzsJKmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpOwomIzQzOwkqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCQkJCSAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpCiB7Ci0JdTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKJiM0MzsJczMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKIAl1MzIgcmZfYSwgcmZfYjsKIAogCXJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjgKCQkJCQkJCW91dHB1dDogNTgKCQkJCQkJCXRob3VnaHRzOiAzMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVFc4ODIyQyBEQUMgQ2FsaWJyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBSVFc4ODIyQyBEQUMgY2FsaWJyYXRpb24uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgY2hhbmdlcyB0byBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhbmQgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHJ0dzg4MjJjLmNgIGRyaXZlci4gVGhlIHN3aXRjaCBmcm9tIGB1MzJgIHRvIGBzMzJgIGZvciB0aGUgYGl2YCBhbmQgYHF2YCBhcnJheXMgaXMgc3RyYWlnaHRmb3J3YXJkLCBpbmRpY2F0aW5nIGEgc2hpZnQgdG93YXJkcyBzaWduZWQgaW50ZWdlciByZXByZXNlbnRhdGlvbiwgbGlrZWx5IHRvIGFjY29tbW9kYXRlIGJvdGggcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcyBpbiB0aGUgSVEgZGF0YS4gVGhhdCYjMzk7cyBhIHNlbnNpYmxlIGNoYW5nZS4gUmVwbGFjaW5nIHRoZSBjdXN0b20gc29ydGluZyBsb2dpYyB3aXRoIGBzb3J0KClgIGZyb20gYGxpbnV4L3NvcnQuaGAgaXMgYWxzbyBnb29kLiBVc2luZyB0aGUga2VybmVsJiMzOTtzIGJ1aWx0LWluIHNvcnRpbmcgZnVuY3Rpb24gaXMgZ2VuZXJhbGx5IG1vcmUgZWZmaWNpZW50LCByZWxpYWJsZSwgYW5kIG1haW50YWluYWJsZS4gQW5kIHNpbXBsaWZ5aW5nIHRoZSBvZmZzZXQgY2FsY3VsYXRpb24sIEkgbGlrZSB0aGF0LCBpdCB3b3VsZCBtYWtlIHRoZSBjb2RlIGVhc2llciB0byBmb2xsb3cuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIGFsbG9jYXRlZCBvbiB0aGUgKnN0YWNrKiBpbnNpZGUgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWA6CgpgYGBjCnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAoJCQkJICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSkKewoJczMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKLi4uCmBgYAoKUmlnaHQsIGJ1dCBhcmUgYGl2YCBhbmQgYHF2YCBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgdGhleSYjMzk7cmUgcmVhZD8gVGhhdCYjMzk7cyBteSBtYWluIGNvbmNlcm4uIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkLCB3aGljaCBjb3VsZCBsZWFkIHRvIHJhbmRvbSBiZWhhdmlvciBhbmQgaW5zdGFiaWxpdHkuIExldCYjMzk7cyBsb29rIGF0IGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBhc3N1bWUgdGhleSYjMzk7cmUgcG9wdWxhdGVkLiBXYWl0LCBkb2VzIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIGFjdHVhbGx5IGNhbGwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29udHJvbCBmbG93IGFuZCBtYWtlIHN1cmUgdGhlIGFycmF5cyBhcmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBhbGdvcml0aG0gcHJvY2Vzc2VzIHRoZW0uIEkmIzM5O2xsIHNjYW4gdGhyb3VnaCB0aGUgcmVzdCBvZiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCB0byBjb25maXJtLiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyBpZiB0aGVzZSBzdGFjayB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IHBvcHVsYXRlZCBiZWZvcmUgYmVpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0yNTA9c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMwMjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMDMtXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0zMzQ9c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9hZGMoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzcxLVx0XHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMyNCwgMHgwMDAxMDAwMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzcyOlx0XHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcdTAwMjZpYywgXHUwMDI2cWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3My1cdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zOTEtXHRcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYzNjLCBwYXRoX3NlbCAmIzQzOyAweDgxMDMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM5MjpcdFx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWMsIFx1MDAyNnFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zOTMtXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDU3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ3NTpcdHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShydHdkZXYsIFx1MDAyNmljX2luLCBcdTAwMjZxY19pbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDc2LVx0aWMgPSBpY19pbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NTA2PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfc3RlcDMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU2LVx0cnR3X3dyaXRlMzIocnR3ZGV2LCBiYXNlX2FkZHIgJiM0MzsgMHg2MCwgMHhmMDAwMDAwMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTU3Olx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWMsIFx1MDAyNnFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01NTgtXHRpZiAoaWMgXHUwMDNlPSAweDEwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDM1CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQW5hbHl6aW5nIHRoZSBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBGdW5jdGlvbioqCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBpdmAgYW5kIGBxdmAgdmFyaWFibGVzIGFyZSBwb3B1bGF0ZWQgd2l0aGluIHRoaXMgY29udGV4dC4gTXkgaW5zdGluY3QgaXMgdG8gZXhhbWluZSB0aGUgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgZnVuY3Rpb24gZGlyZWN0bHkuIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBpdCYjMzk7cyBuYW1lZCBpbiBhIHdheSB0aGF0IHN1Z2dlc3RzIGl0JiMzOTtzIGludm9sdmVkIGluIGNhbGlicmF0aW9uIGFuZCBsaWtlbHkgZGVhbHMgd2l0aCBSRiBtb2RlIHNldHRpbmdzLCB3aGljaCBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIGl0IHRvdWNoZXMgdXBvbiB0aGVzZSBpbi1waGFzZSAoSSkgYW5kIHF1YWRyYXR1cmUtcGhhc2UgKFEpIGNvbXBvbmVudHMsIGBpdmAgYW5kIGBxdmAuIExldCYjMzk7cyBnZXQgdG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMDI6XHRzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiAzMDM6XHRcdFx0XHRcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4gMzA0Olx0e1xuIDMwNTpcdFx0czMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcbiAzMDY6XHRcdHUzMiByZl9hLCByZl9iO1xuIDMwNzpcdFxuIDMwODpcdFx0cmZfYSA9IHJ0d19yZWFkX3JmKHJ0d2RldiwgUkZfUEFUSF9BLCAweDAsIFJGUkVHX01BU0spO1xuIDMwOTpcdFx0cmZfYiA9IHJ0d19yZWFkX3JmKHJ0d2RldiwgUkZfUEFUSF9CLCAweDAsIFJGUkVHX01BU0spO1xuIDMxMDpcdFxuIDMxMTpcdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcJiMzNDtbREFDS10gUkYgcGF0aC1BPTB4JTA1eFxcblwmIzM0OywgcmZfYSk7XG4gMzEyOlx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFwmIzM0O1tEQUNLXSBSRiBwYXRoLUI9MHglMDV4XFxuXCYjMzQ7LCByZl9iKTtcbiAzMTM6XHRcbiAzMTQ6XHRcdHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHJ0d2RldiwgaXYsIHF2KTtcbiAzMTU6XHRcdHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHJ0d2RldiwgaXYsIHF2LCBpX3ZhbHVlLCBxX3ZhbHVlKTtcbiAzMTY6XHR9XG4gMzE3Olx0XG4gMzE4Olx0c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2JiX3NldHRpbmcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbiAzMTk6XHR7XG4gMzIwOlx0XHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxZDU4LCAweGZmOCwgMHgxZmYpO1xuIDMyMTpcdFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MWEwMCwgMHgzLCAweDIpO1xuIDMyMjpcdFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MWExNCwgMHgzMDAsIDB4Myk7XG4gMzIzOlx0XHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWQ3MCwgMHg3ZTdlN2U3ZSk7XG4gMzI0Olx0XHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxODBjLCAweDMsIDB4MCk7XG4gMzI1Olx0XHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHg0MTBjLCAweDMsIDB4MCk7XG4gMzI2Olx0XHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWIwMCwgMHgwMDAwMDAwOCk7XG4gMzI3Olx0XHRydHdfd3JpdGU4KHJ0d2RldiwgMHgxYmNjLCAweDNmKTtcbiAzMjg6XHRcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYjAwLCAweDAwMDAwMDBhKTtcbiAzMjk6XHRcdHJ0d193cml0ZTgocnR3ZGV2LCAweDFiY2MsIDB4M2YpO1xuIDMzMDpcdFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MWUyNCwgQklUKDMxKSwgMHgwKTtcbiAzMzE6XHRcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDFlMjgsIDB4ZiwgMHgzKTtcbiAzMzI6XHR9XG4gMzMzOlx0XG4gMzM0Olx0c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9hZGMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiAzMzU6XHRcdFx0XHRcdCB1OCBwYXRoLCB1MzIgKmFkY19pYywgdTMyICphZGNfcWMpXG4gMzM2Olx0e1xuIDMzNzpcdFx0c3RydWN0IHJ0d19kbV9pbmZvICpkbV9pbmZvID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWRtX2luZm87XG4gMzM4Olx0XHR1MzIgaWMgPSAwLCBxYyA9IDAsIHRlbXAgPSAwO1xuIDMzOTpcdFx0dTMyIGJhc2VfYWRkcjtcbiAzNDA6XHRcdHUzMiBwYXRoX3NlbDtcbiAzNDE6XHRcdGludCBpO1xuIDM0MjpcdFxuIDM0MzpcdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcJiMzNDtbREFDS10gQURDSyBwYXRoKCVkKVxcblwmIzM0OywgcGF0aCk7XG4gMzQ0Olx0XG4gMzQ1Olx0XHRiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xuIDM0NjpcdFx0c3dpdGNoIChwYXRoKSB7XG4gMzQ3Olx0XHRjYXNlIFJGX1BBVEhfQTpcbiAzNDg6XHRcdFx0cGF0aF9zZWwgPSAweGEwMDAwO1xuIDM0OTpcdFx0XHRicmVhaztcbiAzNTA6XHRcdGNhc2UgUkZfUEFUSF9COlxuIDM1MTpcdFx0XHRwYXRoX3NlbCA9IDB4ODAwMDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MTUKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgQ2FsaWJyYXRpb24gUm91dGluZSoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSBnZXR0aW5nIHRob3NlIGBpdmAgYW5kIGBxdmAgdmFsdWVzIHBvcHVsYXRlZC4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGlzIGNhbGlicmF0aW9uIHN0ZXAuIEkgbmVlZCB0byByZXZpc2l0IHRoYXQgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgKmhvdyogZXhhY3RseSB0aGlzIGZ1bmN0aW9uIGlzIGFjcXVpcmluZyB0aGUgaW4tcGhhc2UgKEkpIGFuZCBxdWFkcmF0dXJlLXBoYXNlIChRKSBzYW1wbGVzLiBXaGF0JiMzOTtzIHRoZSBzaWduYWwgcGF0aD8gSXMgaXQgdXNpbmcgZGlyZWN0IGNvbnZlcnNpb24sIHN1cGVyaGV0ZXJvZHluZSwgb3Igc29tZXRoaW5nIGVsc2U/IEkgYWxzbyB3YW50IHRvIHZlcmlmeSB3aGV0aGVyIEkgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBEQUMgYW5kIEFEQyB3aXRoaW4gdGhlIFJGSUMgYXJjaGl0ZWN0dXJlLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgdGhlIEFEQyYjMzk7cyBzYW1wbGluZyByYXRlLCByZXNvbHV0aW9uLCBhbmQgYW55IHBvdGVudGlhbCBvZmZzZXRzLCB0byBwcm9wZXJseSBpbnRlcnByZXQgdGhlIHZhbHVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzMjpcdFxuIDIzMzpcdHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG4gMjM0Olx0e1xuIDIzNTpcdFx0dTMyIHRlbXA7XG4gMjM2Olx0XHR1MzIgaSA9IDAsIGNudCA9IDA7XG4gMjM3Olx0XG4gMjM4Olx0XHR3aGlsZSAoaSBcdTAwM2MgREFDS19TTl84ODIyQyBcdTAwMjZcdTAwMjYgY250IFx1MDAzYyAxMDAwMCkge1xuIDIzOTpcdFx0XHRjbnQmIzQzOyYjNDM7O1xuIDI0MDpcdFx0XHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XG4gMjQxOlx0XHRcdGl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMiwgOSk7XG4gMjQyOlx0XHRcdHF2W2ldID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gMjQzOlx0XG4gMjQ0Olx0XHRcdGlmIChydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBpdltpXSkgXHUwMDI2XHUwMDI2XG4gMjQ1Olx0XHRcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXG4gMjQ2Olx0XHRcdFx0aSYjNDM7JiM0Mzs7XG4gMjQ3Olx0XHR9XG4gMjQ4Olx0fVxuIDI0OTpcdFxuIDI1MDpcdHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gMjUxOlx0XHRcdFx0XHQgICAgICAgczMyICppdiwgczMyICpxdixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTYyMAoJCQkJCQkJb3V0cHV0OiA1OAoJCQkJCQkJdGhvdWdodHM6IDcyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbmluaXRpYWxpemVkIE1lbW9yeSBBY2Nlc3MgaW4gREFDIENhbGlicmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5LCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhpcyBsb29wLiBJdCYjMzk7cyByZWFkaW5nIElRIHNhbXBsZXMsIGFuZCB0aGVyZSYjMzk7cyBhIHNhZmV0eSBjaGVjazogYSBgY250YCBsaW1pdCBvZiAxMDAwMC4gVGhhdCYjMzk7cyBmaW5lLCBidXQgdGhlIGltcGxpY2F0aW9uIGlzLi4uIGlmIGBjbnRgIGhpdHMgMTAwMDAgKmJlZm9yZSogd2UmIzM5O3ZlIGNvbGxlY3RlZCB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIHNhbXBsZXMgKGBEQUNLX1NOXzg4MjJDYCksIHRoZSBsb29wIGJyZWFrcy4gVGhhdCBtZWFucyB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIG9mIGBpdmAgYW5kIGBxdmAgYXJlICp1bmluaXRpYWxpemVkKiEgIFRoaXMgaXMgYSBiaWcgcmVkIGZsYWcuCgpUaGVuIEkgc2VlIHRoYXQgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCBpcyBjYWxsZWQgd2l0aCB0aGVzZSBwb3RlbnRpYWxseSBpbmNvbXBsZXRlIGBpdmAgYW5kIGBxdmAgYXJyYXlzLiBBbmQgaGVyZSYjMzk7cyB3aGVyZSBpdCBnZXRzIGRhbmdlcm91cy4gSW5zaWRlIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAsIHRoZSBjb2RlIGl0ZXJhdGVzICp1cCB0byogYERBQ0tfU05fODgyMkNgIHRvIGZpbmQgbWluL21heCB2YWx1ZXMgZm9yIEkgYW5kIFEuIFRoYXQgbWVhbnMgaXQmIzM5O3MgcmVhZGluZyBtZW1vcnkgKmJleW9uZCogdGhlIGluaXRpYWxpemVkIHBhcnQgb2YgYGl2YCBhbmQgYHF2YCBpZiB0aGUgbG9vcCBpbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkuIFdlJiMzOTtyZSBwb3RlbnRpYWxseSByZWFkaW5nIGdhcmJhZ2UgZnJvbSB0aGUgc3RhY2ssIGFuZCB0aGlzIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIHVucHJlZGljdGFibGUgYmVoYXZpb3IuCgpUaGlzIGlzIGNsYXNzaWMgdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHdhcyBpbnRyb2R1Y2VkIGluIGEgcmVjZW50IHBhdGNoLCBvciBpZiBpdCBoYXMgYmVlbiBsdXJraW5nIGhlcmUgYWxsIGFsb25nLiBUaW1lIHRvIGNoZWNrIHRoZSBvbGQgY29kZSBmb3IgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIHByb2JsZW0gd2FzIHByZXNlbnQgKmJlZm9yZSogdGhlIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MjIyPXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0zMDI9c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMTQ6XHRydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShydHdkZXYsIGl2LCBxdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzE1LVx0cnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2gocnR3ZGV2LCBpdiwgcXYsIGlfdmFsdWUsIHFfdmFsdWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTIwMQoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDg3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERBQyBDYWxpYnJhdGlvbiBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRpZmYgZm9yIHRoZSBEQUMgY2FsaWJyYXRpb24gaW4gdGhpcyBgcnR3ODgyMmNgIGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBjaGFuZ2UgZnJvbSB1bnNpZ25lZCBgdTMyYCB0byBzaWduZWQgYHMzMmAgZm9yIGBpdmAgYW5kIGBxdmAgd2l0aGluIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgaXMgaW1wb3J0YW50LiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuIEkgc2VlIHRoZSByZWFkIG1hc2sgaXMgdXNlZCB0byBnZXQgdGhlIGRhdGEgZnJvbSB0aGUgaGFyZHdhcmUuIFRoZSBjb2RlIGlzIGV4dHJhY3RpbmcgYSAxMCBiaXQgc2lnbmVkIHZhbHVlLCB3aGljaCBpcyBhcHByb3ByaWF0ZSBmb3Igc2lnbmVkIGludGVnZXJzLgoKSG93ZXZlciwgSSYjMzk7bSBtb3JlIGNvbmNlcm5lZCBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBzYW1wbGluZyBsb29wLiBUaGUgY29uZGl0aW9uIGBjbnQgJmx0OyAxMDAwMGAgY2F1Z2h0IG15IGV5ZSBiZWNhdXNlIHRoYXQmIzM5O3MgYW4gZXhpc3RpbmcgbG9vcCBicmVhayBjb25kaXRpb24uIEl0IG1lYW5zIGFuIGVhcmx5IHJldHVybiBmcm9tIHRoZSBzYW1wbGluZyBsb29wIGlzIHBvc3NpYmxlLiBJdCBhbHNvIG1lYW5zIHRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBjb3VsZCBoYXZlIHVuaW5pdGlhbGl6ZWQgZWxlbWVudHMuIElmIGBjbnRgIGhpdHMgMTAwMDAsIHRoZW4gc29tZSBlbGVtZW50cyBpbiBgaXZgIGFuZCBgcXZgIHdpbGwgbm90IGJlIGZpbGxlZC4KClRoZW4sIHRoZXJlJiMzOTtzIHRoZSBjaGFuZ2UgdG8gYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgd2hlcmUgdGhlIGN1c3RvbSBzb3J0aW5nIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggdGhlIHN0YW5kYXJkIGBzb3J0KClgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkga25vdyBgc29ydCgpYCBpcyBhbiBlZmZpY2llbnQgc29ydGluZyBhbGdvcml0aG0sIGJ1dCBpZiB0aG9zZSBgaXZgIGFuZCBgcXZgIGFycmF5cyAqYXJlbiYjMzk7dCogZnVsbHkgaW5pdGlhbGl6ZWQsIHRoaXMgaXMgYSBwcm9ibGVtLiBUaGUgb2xkIGN1c3RvbSBzb3J0LCBhbmQgdGhlIG5ldyBzb3J0LCBib3RoIGRlcGVuZCBvbiAqcmVhZGluZyogZGF0YSBmcm9tIGBpdmAgYW5kIGBxdmAuIFRoZSBuZXcgY29kZSBjYWxscyBgc29ydCgpYCB3aGljaCBtZWFucyB0aGF0IGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAgaXMgZ29pbmcgdG8gcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIHRoZSBgaXZgIGFuZCBgcXZgIGJ1ZmZlcnMuIFRoaXMgaXMgYSBwb3RlbnRpYWwgYnVnLiBJIGNhbiYjMzk7dCBiZSBzdXJlIHRoYXQgdGhlIG9sZCBjb2RlIHdhcyBiZXR0ZXI6IGl0IGFsc28gcmVhZHMgdW5pbml0aWFsaXplZCBtZW1vcnksIGJ1dCBpdCYjMzk7cyBub3QgY2xlYXIgdGhhdCB0aGUgb2xkIGNvZGUgaGFzIGEgd2VsbC1kZWZpbmVkIGNvbXBhcmlzb24gZnVuY3Rpb246IGBfX3J0dzg4MjJjX2RhY19pcV9zb3J0YCBtaWdodCBoYXZlIGRpZmZlcmVudCBwcm9wZXJ0aWVzLgoKU28sIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBiZWNvbWVzOiBpcyBgcnR3ODgyMmNfZGFjX2lxX3NvcnRgIGFjdHVhbGx5ICpjYWxsZWQqPyBJZiB0aGlzIHNvcnRpbmcgZnVuY3Rpb24gaXMgbmV2ZXIgaW52b2tlZCwgdGhlbiB0aGlzIGJlY29tZXMgYSBub24taXNzdWUuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBkZXRlcm1pbmUgdGhlIGFjdHVhbCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg4MjJjX2RhY19pcV9zb3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNTg9c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY2OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MjUwPXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyODQ6XHRcdHJ0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgaXYsIHF2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yODUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDExCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogOTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEQUMgQ2FsaWJyYXRpb24gQ29kZSBDaGFuZ2VzKioKCk9rYXksIHNvIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAgY2FsbHMgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgd2hpY2ggaXQgYWx3YXlzIGRpZC4gR29vZCwgbm8gbmV3IGZ1bmN0aW9uIGNhbGxzIGludHJvZHVjZWQgdGhlcmUuIE15IGluaXRpYWwgY29uY2VybiB3YXMgd2hldGhlciB0aGUgcGF0Y2ggaW50cm9kdWNlZCBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBzbyBsZXQmIzM5O3MgZGlnIGludG8gdGhlIGNoYW5nZXMgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCBpdHNlbGYuCgpBbHJpZ2h0LCB0aGUgZmlyc3QgZGlmZiBzaW1wbGlmaWVzIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgZGVsdGFzIGZvciBJIGFuZCBRLiBUaGUgb2xkIGNvZGUgaGFkIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSBtYXggYW5kIG1pbiB2YWx1ZXMgd3JhcHBlZCBhcm91bmQgMHgyMDAgKHByZXN1bWFibHkgcmVwcmVzZW50aW5nIGEgc2lnbmVkIHZhbHVlIHdpdGggMHgyMDAgYXMgdGhlIG1pZHBvaW50KS4gVGhlIG5ldyBjb2RlIGp1c3QgcGVyZm9ybXMgYSBzdHJhaWdodGZvcndhcmQgdW5zaWduZWQgc3VidHJhY3Rpb246IGB1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO2AgYW5kIHRoZSBzYW1lIGZvciBRLiBObyBvYnZpb3VzIHByb2JsZW1zIHRoZXJlLiBUaGlzIHdpbGwgYmUgYW4gaW1wcm92ZW1lbnQgaW4gZWZmaWNpZW5jeSwgYW5kIGxpa2VseSBhY2N1cmFjeSBzaW5jZSB0aGUgbG9naWMgZG9lc24mIzM5O3QgZGVwZW5kIG9uIHRoZSBjb21waWxlciYjMzk7cyBvcHRpbWl6YXRpb25zLgoKVGhlbiwgdGhlcmUmIzM5O3MgYSBjaGFuZ2UgaW4gaG93IGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCBpcyBjYWxsZWQuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBsaWtlIHRoaXM6CmBgYGMKcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2LCBpX3ZhbHVlKTsKcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTsKYGBgCmFuZCBub3cgaXQmIzM5O3MgdGhpczoKYGBgYwoqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7CipxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTsKYGBgCkVzc2VudGlhbGx5LCBgcnR3ODgyMmNfZGFjX2lxX29mZnNldGAgbm93IHJldHVybnMgYSB2YWx1ZS4gQnV0IHRoYXQgbWVhbnMgd2Ugc2hvdWxkIHNlZSBhIGNvcnJlc3BvbmRpbmcgY2hhbmdlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLCB3aGljaCB3ZSBkby4gVGhlIG9yaWdpbmFsIGNvZGUmIzM5O3Mgc2lnbmF0dXJlIHdhczoKYGBgYwpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbCkKYGBgCmFuZCBpcyBub3c6CmBgYGMKc3RhdGljIHMzMiBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqdmVjKQpgYGAKClRoZSBvbGQgZnVuY3Rpb24gaGFkIGEgbG9jYWwgdmFyaWFibGUgYHRgIHRoYXQgY2FsY3VsYXRlZCB0aGUgYXZlcmFnZSBvZmZzZXQgb2YgdGhlIGRhdGEuIFRoZSByZXZpc2VkIGNvZGUgZGlyZWN0bHkgY2FsY3VsYXRlcyB0aGUgYXZlcmFnZSBvZiB0aGUgdmVjdG9yJiMzOTtzIHZhbHVlcyBpbiBhIGBzdW1gIHZhcmlhYmxlLCBhbmQgdGhlbiBkaXJlY3RseSBjYWxjdWxhdGVzIGBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKWAuIFRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGN1bGF0ZWQgYW5kIHJldHVybmVkLCBub3cgdXNpbmcgYSB0ZXJuYXJ5IG9wZXJhdG9yLiBUaGUgYHZlY2AgcG9pbnRlciBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGlzIG5vdyBhIGBzMzIgKmAgaW5zdGVhZCBvZiBgdTMyICpgLCB3aGljaCBpcyBnb29kLiBUaGUgZnVuY3Rpb24gbm93IGNvcnJlY3RseSByZXR1cm5zIGEgc2lnbmVkIG9mZnNldCB2YWx1ZSwgd2hlcmVhcyBiZWZvcmUsIHRoZSBvZmZzZXQgdmFsdWUgd2FzIGFuIG91dCBwYXJhbWV0ZXIuCgpUaGUgbG9vcCBpdGVyYXRpbmcgdGhyb3VnaCBgdmVjYCBub3cgYWxzbyB1c2VzIGEgYHUzMiBpYCBhcyBpdHMgaXRlcmF0b3IuIFRoZSBjb2RlIGlzIG11Y2ggY2xlYW5lci4KCkkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBwcm9ibGVtcywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHdoYXQgYERBQ0tfU05fODgyMkNgIHJlcHJlc2VudHMgYW5kIGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgY2FsaWJyYXRpb24gcHJvY2Vzcy4gSXQmIzM5O3MgbGlrZWx5IGEgc2FtcGxlIGNvdW50LCBidXQgSSBzaG91bGQgbG9vayBpbnRvIHRoYXQgY29uc3RhbnQmIzM5O3MgZGVmaW5pdGlvbiB0byBjb25maXJtLiBJIHNob3VsZCBhbHNvIHRlc3QgdGhpcyBjb2RlIGFnYWluc3Qgc29tZSBleGFtcGxlIGRhdGFzZXRzIHRvIGRldGVybWluZSBpZiB0aGUgc2lnbmVkIGFyaXRobWV0aWMgaW50cm9kdWNlcyBhbnkgdW5leHBlY3RlZCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBEQUNLX1NOXzg4MjJDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oPTEzMz1jb25zdCBzdHJ1Y3QgcnR3X3RhYmxlIG5hbWUgIyMgX3RibCA9IHtcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaC0xNDEtI2RlZmluZSBEQUNLX1JGXzg4MjJDXHRcdDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaDoxNDI6I2RlZmluZSBEQUNLX1NOXzg4MjJDXHRcdDEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oLTE0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5ODYKCQkJCQkJCW91dHB1dDogMjMxCgkJCQkJCQl0aG91Z2h0czogMzYxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgREFDIENhbGlicmF0aW9uIENvZGUgUmVmYWN0b3JpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCwgYW5kIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIERBQyBjYWxpYnJhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIGBydHc4ODIyY2AgZHJpdmVyLiAgVGhlIGNyaXRpY2FsIGFzcGVjdCBoZXJlIGlzIHdoZXRoZXIgdGhpcyByZWZhY3RvcmluZyBpbnRyb2R1Y2VzIGFueSAqbmV3KiB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIGJlIGV4cG9zZWQgYnkgS01TQU4uICBMZXQmIzM5O3Mgd2FsayB0aHJvdWdoIGl0LgoKRmlyc3QsIGBEQUNLX1NOXzg4MjJDYCBkZWZpbmVzIHRoZSBzaXplIOKAkyBpdCYjMzk7cyAxMDAuICBXZSBoYXZlIGFycmF5cyBgaXZgIGFuZCBgcXZgLCBib3RoIG9mIDEwMCBgczMyYCBlbGVtZW50cywgdXNlZCB0byBzdG9yZSBzYW1wbGVzIHJlYWQgZnJvbSBoYXJkd2FyZS4gIFRoZSBmdW5jdGlvbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIGF0dGVtcHRzIHRvIHBvcHVsYXRlIHRoZXNlIGFycmF5cy4gVGhlIGtleSBoZXJlIGlzIHRoZSBsb29wIHRoYXQgcmVhZHMgdGhlIHZhbHVlcyBhbmQgc3RvcmVzIHRoZW0uICBDcnVjaWFsbHksIHRoZXJlJiMzOTtzIGEgYGNudGAgY291bnRlciB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3AsIGFuZCBpZiBpdCByZWFjaGVzIDEwMDAwLCBgaWAgY291bGQgYmUgbGVzcyB0aGFuIDEwMCwgbGVhdmluZyB0aGUgYXJyYXlzIHBhcnRpYWxseSB1bmluaXRpYWxpemVkLiBUaGlzICp3YXMqIGFscmVhZHkgdGhlIGNhc2UgaW4gdGhlIG9sZCBjb2RlLgoKVGhlIG9yaWdpbmFsIGNvZGUgYWxzbyBoYWQgYSBzaW1pbGFyIHNpdHVhdGlvbiwgd2hlcmUgdW5pbml0aWFsaXplZCB2YWx1ZXMgKmNvdWxkKiBiZSByZWFkLiBUaGUgcGF0Y2ggKnJlcGxhY2VzKiBjYWxscyB0byBgcnR3ODgyMmNfcmZfbWlubWF4X2NtcGAsIGFuZCBhIGN1c3RvbSBzb3J0IHdpdGggdGhlIHN0YW5kYXJkIGxpYnJhcnkmIzM5O3MgYHNvcnQoKWAgZnVuY3Rpb24gYW5kIHNpZ25lZCBpbnRlZ2Vycywgc3BlY2lmaWNhbGx5IGBzMzJgLiBUaGlzIGBzb3J0KClgIGZ1bmN0aW9uIHVzZXMgYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgd2hpY2ggaXMgYSBzdGFuZGFyZCBjb21wYXJpc29uIGZ1bmN0aW9uLgoKVGhlIHByZXZpb3VzIGNvZGUgaGFkIHNvbWUgdHJpY2t5IHNpZ24gZXh0ZW5zaW9uIGxvZ2ljLiBUaGUgbmV3IGNvZGUgZG9lcyBpdCBjb3JyZWN0bHkgYnkgY2FsbGluZyBgc2lnbl9leHRlbmQzMmAgd2hpY2ggc2lnbi1leHRlbmRzIHRoZSAxMC1iaXQgdmFsdWVzIHRvIDMyIGJpdCBzaWduZWQgdmFsdWVzIHVzaW5nIGJpdCA5IGFzIHRoZSBzaWduIGJpdC4KCk15IGluaXRpYWwgY29uY2VybiB3YXMgd2hldGhlciB0aGUgcmVmYWN0b3JpbmcgKmV4cG9zZWQqIGFuIGV4aXN0aW5nIHVuaW5pdGlhbGl6ZWQgcmVhZCB0aGF0IHdhcyBub3QgZGV0ZWN0ZWQgYmVmb3JlIGJ5IEtNU0FOLiBJZiB0aGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIG9ubHkgcGFydGlhbGx5IGluaXRpYWxpemVkLCB1c2luZyBgc29ydCgpYCAqd2lsbCogcmVhZCB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnksIEtNU0FOIHNob3VsZCBjYXRjaCB0aGlzLiBCdXQgdGhpcyB3YXMgYWxyZWFkeSB0cnVlIGluIHRoZSBvbGQgY29kZS4KClRoZSBjaGVjayBmb3IgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AgaGFzIGJlZW4gbW9kaWZpZWQsIGJ1dCBub3QgaW4gYSB3YXkgdGhhdCBhZmZlY3RzIHdoZXRoZXIgdGhlIGFycmF5cyBhcmUgaW5pdGlhbGl6ZWQgb3Igbm90LiBJdCYjMzk7cyBlc3NlbnRpYWxseSB0aGUgc2FtZSBsb2dpYyB1c2luZyBzaWduZWQgdHlwZXMuIFRoZSBsaW1pdHMgYXJlIC0xMDAgdG8gMTAwLgoKVGhlIG9mZnNldCBjYWxjdWxhdGlvbnMgYXJlIGFsc28gYmVpbmcgcmVmYWN0b3JlZCwgYnV0IHRoZXkgc3RpbGwgcmVseSBvbiB0aGUgc2FtZSBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGRhdGEuCgpUaGUgYXJyYXlzIHdpdGhpbiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhcmUgc3RpbGwgdW5pbml0aWFsaXplZCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHNhbXBsZSBmdW5jdGlvbiBmYWlscy4KClRoZSBtYWluIGNoYW5nZSBpcyBmcm9tIGEgY3VzdG9tIGNvbXBhcmlzb24gYW5kIHNvcnQgdG8gc3RhbmRhcmQgc2lnbmVkIHR5cGVzLCBzdGFuZGFyZCBgc29ydCgpYCwgYW5kIGEgc2ltcGxpZmllZCBvZmZzZXQgY2FsY3VsYXRpb24uIEFsbCBvZiB0aGlzIGNhbiBzdGlsbCByZWFkIHRoZSBzYW1lIG1lbW9yeSBpZiBpdCBpcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCgpUaGVyZWZvcmUsIHNpbmNlIGFsbCB0aGUgcG90ZW50aWFsIGZvciByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHdhcyBwcmVzZW50ICpiZWZvcmUqIHRoZSBwYXRjaCwgYW5kIHRoZSBwYXRjaCBpcyBwcmltYXJpbHkgYSByZWZhY3RvcmluZyBvZiBleGlzdGluZyBsb2dpYyBhbmQgbWF0aCBhbmQgZG9lcyAqbm90KiBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb24gb3IgY29weSB0byB1c2VyIHNwYWNlLCBLTVNBTiBpcyBub3Qgc3BlY2lmaWNhbGx5IG5lZWRlZCBoZXJlLiAgQW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcywgbGlrZSB0aGUgZWFybHkgbG9vcCB0ZXJtaW5hdGlvbiBhbmQgdGhlIGFycmF5cyBiZWluZyBvbmx5IHBhcnRpYWxseSBmaWxsZWQsICp3b3VsZCogYmUgY2F1Z2h0IGJ5IEtNU0FOIGluIGJvdGggdGhlIG9sZCBhbmQgbmV3IGNvZGUuICBUaGlzIGlzIGEgc3RyYWlnaHQgcmVmYWN0b3JpbmcsIHRoZSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSwgaWYgaXQgZXhpc3RzLCBpcyBzdGlsbCB0aGVyZS4gSSB3aWxsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IEtNU0FOLXNwZWNpZmljIHByb2JsZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBydHc4OCBkcml2ZXIgYnkgcmVwbGFjaW5nIGN1c3RvbSAxMC1iaXQgc2lnbi1tYWduaXR1ZGUvdHdvJiMzOTtzLWNvbXBsZW1lbnQgYXJpdGhtZXRpYyBhbmQgYSBjdXN0b20gYnViYmxlIHNvcnQgd2l0aCBzdGFuZGFyZCBgczMyYCB0eXBlcywgYHNpZ25fZXh0ZW5kMzIoKWAsIGFuZCB0aGUga2VybmVsJiMzOTtzIGJ1aWx0LWluIGBzb3J0KClgIGZ1bmN0aW9uLiBcblxuV2hpbGUgdGhlIHN0YWNrLWFsbG9jYXRlZCBhcnJheXMgYGl2YCBhbmQgYHF2YCBjb3VsZCBwb3RlbnRpYWxseSBjb250YWluIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlmIHRoZSBzYW1wbGluZyBsb29wIGluIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZSgpYCB0ZXJtaW5hdGVzIGVhcmx5IChkdWUgdG8gdGhlIGBjbnQgXHUwMDNjIDEwMDAwYCBjb25kaXRpb24pLCB0aGlzIGJlaGF2aW9yIGFuZCB0aGUgc3Vic2VxdWVudCByZWFkcyBvZiB0aGUgZW50aXJlIGFycmF5IHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBvbGQgY29kZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGFyaXRobWV0aWMgYW5kIHNvcnRpbmcgcmVmYWN0b3JpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIHJ0dzg4IGRyaXZlciBieSByZXBsYWNpbmcgY3VzdG9tIDEwLWJpdCBzaWduLW1hZ25pdHVkZS90d28mIzM5O3MtY29tcGxlbWVudCBhcml0aG1ldGljIGFuZCBhIGN1c3RvbSBidWJibGUgc29ydCB3aXRoIHN0YW5kYXJkIGBzMzJgIHR5cGVzLCBgc2lnbl9leHRlbmQzMigpYCwgYW5kIHRoZSBrZXJuZWwmIzM5O3MgYnVpbHQtaW4gYHNvcnQoKWAgZnVuY3Rpb24uIFxuXG5XaGlsZSB0aGUgc3RhY2stYWxsb2NhdGVkIGFycmF5cyBgaXZgIGFuZCBgcXZgIGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaWYgdGhlIHNhbXBsaW5nIGxvb3AgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKClgIHRlcm1pbmF0ZXMgZWFybHkgKGR1ZSB0byB0aGUgYGNudCBcdTAwM2MgMTAwMDBgIGNvbmRpdGlvbiksIHRoaXMgYmVoYXZpb3IgYW5kIHRoZSBzdWJzZXF1ZW50IHJlYWRzIG9mIHRoZSBlbnRpcmUgYXJyYXkgd2VyZSBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIG9sZCBjb2RlLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSBuZXcgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgYXJpdGhtZXRpYyBhbmQgc29ydGluZyByZWZhY3RvcmluZy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkIGZvciB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDowOS40Mzk4Mzc1NzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE4NjM5MDYzMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlJUVzg4XCIsXG4gICAgXCJSVFc4OF84ODIyQ1VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4ODIyY19waHlfc2V0X3BhcmFtXCIsXG4gICAgXCJydHc4ODIyY19waHlfY2FsaWJyYXRpb25cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIHJ0dzg4IGRyaXZlciBieSByZXBsYWNpbmcgY3VzdG9tIDEwLWJpdCBzaWduLW1hZ25pdHVkZS90d28ncy1jb21wbGVtZW50IGFyaXRobWV0aWMgYW5kIGEgY3VzdG9tIGJ1YmJsZSBzb3J0IHdpdGggc3RhbmRhcmQgYHMzMmAgdHlwZXMsIGBzaWduX2V4dGVuZDMyKClgLCBhbmQgdGhlIGtlcm5lbCdzIGJ1aWx0LWluIGBzb3J0KClgIGZ1bmN0aW9uLiBcXG5cXG5XaGlsZSB0aGUgc3RhY2stYWxsb2NhdGVkIGFycmF5cyBgaXZgIGFuZCBgcXZgIGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaWYgdGhlIHNhbXBsaW5nIGxvb3AgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKClgIHRlcm1pbmF0ZXMgZWFybHkgKGR1ZSB0byB0aGUgYGNudCBcXHUwMDNjIDEwMDAwYCBjb25kaXRpb24pLCB0aGlzIGJlaGF2aW9yIGFuZCB0aGUgc3Vic2VxdWVudCByZWFkcyBvZiB0aGUgZW50aXJlIGFycmF5IHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBvbGQgY29kZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGFyaXRobWV0aWMgYW5kIHNvcnRpbmcgcmVmYWN0b3JpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgdGhpcyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFDIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4MjJjIHdpcmVsZXNzIGRyaXZlciwgc2ltcGxpZnlpbmcgc29ydGluZyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy4gVGhpcyBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teSBIQ0QpIGJ5IGVuYWJsaW5nIHRoZSBVU0IgdmFyaWFudCBvZiB0aGUgZHJpdmVyIChDT05GSUdfUlRXODhfODgyMkNVKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0ZWQgZHVyaW5nIFBIWSBwYXJhbWV0ZXIgc2V0dXAgYW5kIGNhbGlicmF0aW9uLCB3aGljaCBhcmUgYWNjZXNzaWJsZSB2aWEgdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAgY2FsbGJhY2tzLiBUaGVzZSBjYWxsYmFja3MgYXJlIG5vdCBpbmxpbmVkIGFzIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHRoZSBjaGlwIG9wZXJhdGlvbnMgc3RydWN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDowOS40Mzk4NDM1NjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzAzNjE4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZjQ2NzdjZmJlODY0NmVmYzhiNjcyNDViYWZiYjlhYmI3Y2RjODY0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDEyIDE3OjI0OjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xcbmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXFxuQEAgLTMsNiArMyw4IEBAXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0b3BzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zb3J0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJtYWluLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJjb2V4LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJmdy5oXFxcIlxcbkBAIC0xNTMsODQgKzE1NSwzMCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSxcXG4tXFx0XFx0XFx0XFx0ICAgdTMyICptaW4sIHUzMiAqbWF4KVxcbitzdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXFxuIHtcXG4tXFx0aWYgKHZhbHVlIFxcdTAwM2U9IDB4MjAwKSB7XFxuLVxcdFxcdGlmICgqbWluIFxcdTAwM2U9IDB4MjAwKSB7XFxuLVxcdFxcdFxcdGlmICgqbWluIFxcdTAwM2UgdmFsdWUpXFxuLVxcdFxcdFxcdFxcdCptaW4gPSB2YWx1ZTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0Km1pbiA9IHZhbHVlO1xcbi1cXHRcXHR9XFxuLVxcdFxcdGlmICgqbWF4IFxcdTAwM2U9IDB4MjAwKSB7XFxuLVxcdFxcdFxcdGlmICgqbWF4IFxcdTAwM2MgdmFsdWUpXFxuLVxcdFxcdFxcdFxcdCptYXggPSB2YWx1ZTtcXG4tXFx0XFx0fVxcbi1cXHR9IGVsc2Uge1xcbi1cXHRcXHRpZiAoKm1pbiBcXHUwMDNjIDB4MjAwKSB7XFxuLVxcdFxcdFxcdGlmICgqbWluIFxcdTAwM2UgdmFsdWUpXFxuLVxcdFxcdFxcdFxcdCptaW4gPSB2YWx1ZTtcXG4tXFx0XFx0fVxcbi1cXG4tXFx0XFx0aWYgKCptYXggIFxcdTAwM2U9IDB4MjAwKSB7XFxuLVxcdFxcdFxcdCptYXggPSB2YWx1ZTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0aWYgKCptYXggXFx1MDAzYyB2YWx1ZSlcXG4tXFx0XFx0XFx0XFx0Km1heCA9IHZhbHVlO1xcbi1cXHRcXHR9XFxuLVxcdH1cXG4tfVxcbitcXHRzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7XFxuK1xcdHMzMiB2YiA9ICooY29uc3QgczMyICopYjtcXG4gXFxuLXN0YXRpYyB2b2lkIF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2MSwgdTMyICp2MilcXG4te1xcbi1cXHRpZiAoKnYxIFxcdTAwM2U9IDB4MjAwIFxcdTAwMjZcXHUwMDI2ICp2MiBcXHUwMDNlPSAweDIwMCkge1xcbi1cXHRcXHRpZiAoKnYxIFxcdTAwM2UgKnYyKVxcbi1cXHRcXHRcXHRzd2FwKCp2MSwgKnYyKTtcXG4tXFx0fSBlbHNlIGlmICgqdjEgXFx1MDAzYyAweDIwMCBcXHUwMDI2XFx1MDAyNiAqdjIgXFx1MDAzYyAweDIwMCkge1xcbi1cXHRcXHRpZiAoKnYxIFxcdTAwM2UgKnYyKVxcbi1cXHRcXHRcXHRzd2FwKCp2MSwgKnYyKTtcXG4tXFx0fSBlbHNlIGlmICgqdjEgXFx1MDAzYyAweDIwMCBcXHUwMDI2XFx1MDAyNiAqdjIgXFx1MDAzZT0gMHgyMDApIHtcXG4tXFx0XFx0c3dhcCgqdjEsICp2Mik7XFxuLVxcdH1cXG4rXFx0cmV0dXJuICh2YSBcXHUwMDNlIHZiKSAtICh2YSBcXHUwMDNjIHZiKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcXG4rc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG4ge1xcbi1cXHR1MzIgaSwgajtcXG4tXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTsgaSsrKSB7XFxuLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyAoREFDS19TTl84ODIyQyAtIDEgLSBpKSA7IGorKykge1xcbi1cXHRcXHRcXHRfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgXFx1MDAyNml2W2pdLCBcXHUwMDI2aXZbaiArIDFdKTtcXG4tXFx0XFx0XFx0X19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIFxcdTAwMjZxdltqXSwgXFx1MDAyNnF2W2ogKyAxXSk7XFxuLVxcdFxcdH1cXG4tXFx0fVxcbitcXHRzb3J0KGl2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xcbitcXHRzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbClcXG4rc3RhdGljIHMzMiBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqdmVjKVxcbiB7XFxuLVxcdHUzMiBwLCBtLCB0LCBpO1xcbitcXHRzMzIgc3VtID0gMDtcXG4gXFxuLVxcdG0gPSAwO1xcbi1cXHRwID0gMDtcXG4tXFx0Zm9yIChpID0gMTA7IGkgXFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkrKykge1xcbi1cXHRcXHRpZiAodmVjW2ldIFxcdTAwM2UgMHgyMDApXFxuLVxcdFxcdFxcdG0gPSAoMHg0MDAgLSB2ZWNbaV0pICsgbTtcXG4tXFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRwID0gdmVjW2ldICsgcDtcXG4tXFx0fVxcbitcXHRmb3IgKHUzMiBpID0gMTA7IGkgXFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkrKylcXG4rXFx0XFx0c3VtICs9IHZlY1tpXTtcXG4gXFxuLVxcdGlmIChwIFxcdTAwM2UgbSkge1xcbi1cXHRcXHR0ID0gcCAtIG07XFxuLVxcdFxcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHQgPSBtIC0gcDtcXG4tXFx0XFx0dCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTtcXG4tXFx0XFx0aWYgKHQgIT0gMHgwKVxcbi1cXHRcXHRcXHR0ID0gMHg0MDAgLSB0O1xcbi1cXHR9XFxuK1xcdHMzMiBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKTtcXG4gXFxuLVxcdCp2YWwgPSB0O1xcbitcXHRyZXR1cm4gYXZnIFxcdTAwM2U9IDAgPyBhdmcgOiAweDQwMCArIGF2ZztcXG4gfVxcbiBcXG4gc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHU4IHBhdGgpXFxuQEAgLTI3MSwyOSArMjE5LDI3IEBAIHN0YXRpYyB1MzIgcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHU4IHBhdGgpXFxuIFxcdHJldHVybiBiYXNlX2FkZHI7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpXFxuK3N0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXFxuIHtcXG4tXFx0Ym9vbCByZXQgPSB0cnVlO1xcbiBcXG4tXFx0aWYgKCh2YWx1ZSBcXHUwMDNlPSAweDIwMCBcXHUwMDI2XFx1MDAyNiAoMHg0MDAgLSB2YWx1ZSkgXFx1MDAzZSAweDY0KSB8fFxcbi1cXHQgICAgKHZhbHVlIFxcdTAwM2MgMHgyMDAgXFx1MDAyNlxcdTAwMjYgdmFsdWUgXFx1MDAzZSAweDY0KSkge1xcbi1cXHRcXHRyZXQgPSBmYWxzZTtcXG4rXFx0aWYgKHZhbHVlIFxcdTAwM2UgMTAwIHx8IHZhbHVlIFxcdTAwM2MgLTEwMCkge1xcbiBcXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCJbREFDS10gRXJyb3Igb3ZlcmZsb3dcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdH1cXG4gXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxcbitzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxcbiB7XFxuIFxcdHUzMiB0ZW1wO1xcbi1cXHRpbnQgaSA9IDAsIGNudCA9IDA7XFxuK1xcdHUzMiBpID0gMCwgY250ID0gMDtcXG4gXFxuIFxcdHdoaWxlIChpIFxcdTAwM2MgREFDS19TTl84ODIyQyBcXHUwMDI2XFx1MDAyNiBjbnQgXFx1MDAzYyAxMDAwMCkge1xcbiBcXHRcXHRjbnQrKztcXG4gXFx0XFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xcbi1cXHRcXHRpdltpXSA9ICh0ZW1wIFxcdTAwMjYgMHgzZmYwMDApIFxcdTAwM2VcXHUwMDNlIDEyO1xcbi1cXHRcXHRxdltpXSA9IHRlbXAgXFx1MDAyNiAweDNmZjtcXG4rXFx0XFx0aXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFxcdTAwMjYgMHgzZmYwMDApIFxcdTAwM2VcXHUwMDNlIDEyLCA5KTtcXG4rXFx0XFx0cXZbaV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXFx1MDAyNiAweDNmZiwgOSk7XFxuIFxcbiBcXHRcXHRpZiAocnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgaXZbaV0pIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXFxuQEAgLTMwMiwxMyArMjQ4LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuLVxcdFxcdFxcdFxcdCAgICAgICB1MzIgKml2LCB1MzIgKnF2LFxcbitcXHRcXHRcXHRcXHQgICAgICAgczMyICppdiwgczMyICpxdixcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxcbiB7XFxuLVxcdHUzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7XFxuLVxcdHUzMiBpX2RlbHRhLCBxX2RlbHRhO1xcbitcXHRzMzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xcbiBcXHR1MzIgdGVtcDtcXG4tXFx0aW50IGksIGNudCA9IDA7XFxuK1xcdHUzMiBpLCBjbnQgPSAwO1xcbiBcXG4gXFx0ZG8ge1xcbiBcXHRcXHRpX21pbiA9IGl2WzBdO1xcbkBAIC0zMTYsMjMgKzI2MSwxOCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRxX21pbiA9IHF2WzBdO1xcbiBcXHRcXHRxX21heCA9IHF2WzBdO1xcbiBcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgREFDS19TTl84ODIyQzsgaSsrKSB7XFxuLVxcdFxcdFxcdHJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBpdltpXSwgXFx1MDAyNmlfbWluLCBcXHUwMDI2aV9tYXgpO1xcbi1cXHRcXHRcXHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgcXZbaV0sIFxcdTAwMjZxX21pbiwgXFx1MDAyNnFfbWF4KTtcXG4rXFx0XFx0XFx0aWYgKGl2W2ldIFxcdTAwM2MgaV9taW4pXFxuK1xcdFxcdFxcdFxcdGlfbWluID0gaXZbaV07XFxuK1xcdFxcdFxcdGlmIChpdltpXSBcXHUwMDNlIGlfbWF4KVxcbitcXHRcXHRcXHRcXHRpX21heCA9IGl2W2ldO1xcbitcXHRcXHRcXHRpZiAocXZbaV0gXFx1MDAzYyBxX21pbilcXG4rXFx0XFx0XFx0XFx0cV9taW4gPSBxdltpXTtcXG4rXFx0XFx0XFx0aWYgKHF2W2ldIFxcdTAwM2UgcV9tYXgpXFxuK1xcdFxcdFxcdFxcdHFfbWF4ID0gcXZbaV07XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdGlmIChpX21heCBcXHUwMDNjIDB4MjAwIFxcdTAwMjZcXHUwMDI2IGlfbWluIFxcdTAwM2MgMHgyMDApXFxuLVxcdFxcdFxcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xcbi1cXHRcXHRlbHNlIGlmIChpX21heCBcXHUwMDNlPSAweDIwMCBcXHUwMDI2XFx1MDAyNiBpX21pbiBcXHUwMDNlPSAweDIwMClcXG4tXFx0XFx0XFx0aV9kZWx0YSA9IGlfbWF4IC0gaV9taW47XFxuLVxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0aV9kZWx0YSA9IGlfbWF4ICsgKDB4NDAwIC0gaV9taW4pO1xcbi1cXG4tXFx0XFx0aWYgKHFfbWF4IFxcdTAwM2MgMHgyMDAgXFx1MDAyNlxcdTAwMjYgcV9taW4gXFx1MDAzYyAweDIwMClcXG4tXFx0XFx0XFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XFxuLVxcdFxcdGVsc2UgaWYgKHFfbWF4IFxcdTAwM2U9IDB4MjAwIFxcdTAwMjZcXHUwMDI2IHFfbWluIFxcdTAwM2U9IDB4MjAwKVxcbi1cXHRcXHRcXHRxX2RlbHRhID0gcV9tYXggLSBxX21pbjtcXG4tXFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRxX2RlbHRhID0gcV9tYXggKyAoMHg0MDAgLSBxX21pbik7XFxuK1xcdFxcdHUzMiBpX2RlbHRhID0gKHUzMikoaV9tYXggLSBpX21pbik7XFxuK1xcdFxcdHUzMiBxX2RlbHRhID0gKHUzMikocV9tYXggLSBxX21pbik7XFxuIFxcbiBcXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuIFxcdFxcdFxcdFxcXCJbREFDS10gaTogbWluPTB4JTA4eCwgbWF4PTB4JTA4eCwgZGVsdGE9MHglMDh4XFxcXG5cXFwiLFxcbkBAIC0zNDUsMjQgKzI4NSwyNCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbiBcXG4gXFx0XFx0aWYgKGlfZGVsdGEgXFx1MDAzZSA1IHx8IHFfZGVsdGEgXFx1MDAzZSA1KSB7XFxuIFxcdFxcdFxcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcXG4tXFx0XFx0XFx0aXZbMF0gPSAodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMjtcXG4tXFx0XFx0XFx0cXZbMF0gPSB0ZW1wIFxcdTAwMjYgMHgzZmY7XFxuK1xcdFxcdFxcdGl2WzBdID0gc2lnbl9leHRlbmQzMigodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMiwgOSk7XFxuK1xcdFxcdFxcdHF2WzBdID0gc2lnbl9leHRlbmQzMih0ZW1wIFxcdTAwMjYgMHgzZmYsIDkpO1xcbiBcXHRcXHRcXHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XFxuLVxcdFxcdFxcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9ICh0ZW1wIFxcdTAwMjYgMHgzZmYwMDApIFxcdTAwM2VcXHUwMDNlIDEyO1xcbi1cXHRcXHRcXHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wIFxcdTAwMjYgMHgzZmY7XFxuK1xcdFxcdFxcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXFx1MDAyNiAweDNmZjAwMCkgXFx1MDAzZVxcdTAwM2UgMTIsIDkpO1xcbitcXHRcXHRcXHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXFx1MDAyNiAweDNmZiwgOSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcdH0gd2hpbGUgKGNudCsrIFxcdTAwM2MgMTAwKTtcXG4gXFxuLVxcdHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7XFxuLVxcdHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdiwgcV92YWx1ZSk7XFxuK1xcdCppX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTtcXG4rXFx0KnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4gXFx0XFx0XFx0XFx0ICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcXG4ge1xcbi1cXHR1MzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xcbitcXHRzMzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xcbiBcXHR1MzIgcmZfYSwgcmZfYjtcXG4gXFxuIFxcdHJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjQ6MTAuNjEwOTI0NzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTIxODIxNTkwNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlJUVzg4XCIsXG4gICAgXCJSVFc4OF84ODIyQ1VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4ODIyY19waHlfc2V0X3BhcmFtXCIsXG4gICAgXCJydHc4ODIyY19waHlfY2FsaWJyYXRpb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFDIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4MjJjIHdpcmVsZXNzIGRyaXZlciwgc2ltcGxpZnlpbmcgc29ydGluZyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy4gVGhpcyBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teSBIQ0QpIGJ5IGVuYWJsaW5nIHRoZSBVU0IgdmFyaWFudCBvZiB0aGUgZHJpdmVyIChDT05GSUdfUlRXODhfODgyMkNVKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0ZWQgZHVyaW5nIFBIWSBwYXJhbWV0ZXIgc2V0dXAgYW5kIGNhbGlicmF0aW9uLCB3aGljaCBhcmUgYWNjZXNzaWJsZSB2aWEgdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAgY2FsbGJhY2tzLiBUaGVzZSBjYWxsYmFja3MgYXJlIG5vdCBpbmxpbmVkIGFzIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHRoZSBjaGlwIG9wZXJhdGlvbnMgc3RydWN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZjQ2NzdjZmJlODY0NmVmYzhiNjcyNDViYWZiYjlhYmI3Y2RjODY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTc6MjQ6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuQEAgLTMsNiArMyw4IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRvcHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFwibWFpbi5oXCJcbiAjaW5jbHVkZSBcImNvZXguaFwiXG4gI2luY2x1ZGUgXCJmdy5oXCJcbkBAIC0xNTMsODQgKzE1NSwzMCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfbWlubWF4X2NtcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUsXG4tXHRcdFx0XHQgICB1MzIgKm1pbiwgdTMyICptYXgpXG4rc3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuIHtcbi1cdGlmICh2YWx1ZSBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdGlmICgqbWluIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1pbiBcdTAwM2UgdmFsdWUpXG4tXHRcdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXHRcdGlmICgqbWF4IFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdGlmICgqbWluIFx1MDAzYyAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fVxuLVxuLVx0XHRpZiAoKm1heCAgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH1cbi19XG4rXHRzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7XG4rXHRzMzIgdmIgPSAqKGNvbnN0IHMzMiAqKWI7XG4gXG4tc3RhdGljIHZvaWQgX19ydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnYxLCB1MzIgKnYyKVxuLXtcbi1cdGlmICgqdjEgXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgKnYyIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0aWYgKCp2MSBcdTAwM2UgKnYyKVxuLVx0XHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fSBlbHNlIGlmICgqdjEgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNjIDB4MjAwKSB7XG4tXHRcdGlmICgqdjEgXHUwMDNlICp2Milcbi1cdFx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH0gZWxzZSBpZiAoKnYxIFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgKnYyIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9XG4rXHRyZXR1cm4gKHZhIFx1MDAzZSB2YikgLSAodmEgXHUwMDNjIHZiKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbitzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuIHtcbi1cdHUzMiBpLCBqO1xuLVxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDE7IGkrKykge1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyAoREFDS19TTl84ODIyQyAtIDEgLSBpKSA7IGorKykge1xuLVx0XHRcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcdTAwMjZpdltqXSwgXHUwMDI2aXZbaiArIDFdKTtcbi1cdFx0XHRfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgXHUwMDI2cXZbal0sIFx1MDAyNnF2W2ogKyAxXSk7XG4tXHRcdH1cbi1cdH1cbitcdHNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG4rXHRzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbClcbitzdGF0aWMgczMyIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICp2ZWMpXG4ge1xuLVx0dTMyIHAsIG0sIHQsIGk7XG4rXHRzMzIgc3VtID0gMDtcbiBcbi1cdG0gPSAwO1xuLVx0cCA9IDA7XG4tXHRmb3IgKGkgPSAxMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspIHtcbi1cdFx0aWYgKHZlY1tpXSBcdTAwM2UgMHgyMDApXG4tXHRcdFx0bSA9ICgweDQwMCAtIHZlY1tpXSkgKyBtO1xuLVx0XHRlbHNlXG4tXHRcdFx0cCA9IHZlY1tpXSArIHA7XG4tXHR9XG4rXHRmb3IgKHUzMiBpID0gMTA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkMgLSAxMDsgaSsrKVxuK1x0XHRzdW0gKz0gdmVjW2ldO1xuIFxuLVx0aWYgKHAgXHUwMDNlIG0pIHtcbi1cdFx0dCA9IHAgLSBtO1xuLVx0XHR0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuLVx0fSBlbHNlIHtcbi1cdFx0dCA9IG0gLSBwO1xuLVx0XHR0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuLVx0XHRpZiAodCAhPSAweDApXG4tXHRcdFx0dCA9IDB4NDAwIC0gdDtcbi1cdH1cbitcdHMzMiBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKTtcbiBcbi1cdCp2YWwgPSB0O1xuK1x0cmV0dXJuIGF2ZyBcdTAwM2U9IDAgPyBhdmcgOiAweDQwMCArIGF2ZztcbiB9XG4gXG4gc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHU4IHBhdGgpXG5AQCAtMjcxLDI5ICsyMTksMjcgQEAgc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIodTggcGF0aClcbiBcdHJldHVybiBiYXNlX2FkZHI7XG4gfVxuIFxuLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpXG4rc3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSlcbiB7XG4tXHRib29sIHJldCA9IHRydWU7XG4gXG4tXHRpZiAoKHZhbHVlIFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2ICgweDQwMCAtIHZhbHVlKSBcdTAwM2UgMHg2NCkgfHxcbi1cdCAgICAodmFsdWUgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiB2YWx1ZSBcdTAwM2UgMHg2NCkpIHtcbi1cdFx0cmV0ID0gZmFsc2U7XG4rXHRpZiAodmFsdWUgXHUwMDNlIDEwMCB8fCB2YWx1ZSBcdTAwM2MgLTEwMCkge1xuIFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFwiW0RBQ0tdIEVycm9yIG92ZXJmbG93XFxuXCIpO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIHRydWU7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXG4rc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbiB7XG4gXHR1MzIgdGVtcDtcbi1cdGludCBpID0gMCwgY250ID0gMDtcbitcdHUzMiBpID0gMCwgY250ID0gMDtcbiBcbiBcdHdoaWxlIChpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIFx1MDAyNlx1MDAyNiBjbnQgXHUwMDNjIDEwMDAwKSB7XG4gXHRcdGNudCsrO1xuIFx0XHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XG4tXHRcdGl2W2ldID0gKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTI7XG4tXHRcdHF2W2ldID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4rXHRcdGl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMiwgOSk7XG4rXHRcdHF2W2ldID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXG4gXHRcdGlmIChydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBpdltpXSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXG5AQCAtMzAyLDEzICsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi1cdFx0XHRcdCAgICAgICB1MzIgKml2LCB1MzIgKnF2LFxuK1x0XHRcdFx0ICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsXG4gXHRcdFx0XHQgICAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4ge1xuLVx0dTMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcbi1cdHUzMiBpX2RlbHRhLCBxX2RlbHRhO1xuK1x0czMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcbiBcdHUzMiB0ZW1wO1xuLVx0aW50IGksIGNudCA9IDA7XG4rXHR1MzIgaSwgY250ID0gMDtcbiBcbiBcdGRvIHtcbiBcdFx0aV9taW4gPSBpdlswXTtcbkBAIC0zMTYsMjMgKzI2MSwxOCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFx0XHRxX21pbiA9IHF2WzBdO1xuIFx0XHRxX21heCA9IHF2WzBdO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDOyBpKyspIHtcbi1cdFx0XHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgaXZbaV0sIFx1MDAyNmlfbWluLCBcdTAwMjZpX21heCk7XG4tXHRcdFx0cnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIHF2W2ldLCBcdTAwMjZxX21pbiwgXHUwMDI2cV9tYXgpO1xuK1x0XHRcdGlmIChpdltpXSBcdTAwM2MgaV9taW4pXG4rXHRcdFx0XHRpX21pbiA9IGl2W2ldO1xuK1x0XHRcdGlmIChpdltpXSBcdTAwM2UgaV9tYXgpXG4rXHRcdFx0XHRpX21heCA9IGl2W2ldO1xuK1x0XHRcdGlmIChxdltpXSBcdTAwM2MgcV9taW4pXG4rXHRcdFx0XHRxX21pbiA9IHF2W2ldO1xuK1x0XHRcdGlmIChxdltpXSBcdTAwM2UgcV9tYXgpXG4rXHRcdFx0XHRxX21heCA9IHF2W2ldO1xuIFx0XHR9XG4gXG4tXHRcdGlmIChpX21heCBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IGlfbWluIFx1MDAzYyAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZSBpZiAoaV9tYXggXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNlPSAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCArICgweDQwMCAtIGlfbWluKTtcbi1cbi1cdFx0aWYgKHFfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgcV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlIGlmIChxX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBxX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4ICsgKDB4NDAwIC0gcV9taW4pO1xuK1x0XHR1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO1xuK1x0XHR1MzIgcV9kZWx0YSA9ICh1MzIpKHFfbWF4IC0gcV9taW4pO1xuIFxuIFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXG4gXHRcdFx0XCJbREFDS10gaTogbWluPTB4JTA4eCwgbWF4PTB4JTA4eCwgZGVsdGE9MHglMDh4XFxuXCIsXG5AQCAtMzQ1LDI0ICsyODUsMjQgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcbiBcdFx0aWYgKGlfZGVsdGEgXHUwMDNlIDUgfHwgcV9kZWx0YSBcdTAwM2UgNSkge1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdlswXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2WzBdID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4rXHRcdFx0aXZbMF0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0XHRxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0XHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0XHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXHUwMDI2IDB4M2ZmLCA5KTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0fSB3aGlsZSAoY250KysgXHUwMDNjIDEwMCk7XG4gXG4tXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYsIGlfdmFsdWUpO1xuLVx0cnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTtcbitcdCppX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTtcbitcdCpxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuIHtcbi1cdHUzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XG4rXHRzMzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xuIFx0dTMyIHJmX2EsIHJmX2I7XG4gXG4gXHRyZl9hID0gcnR3X3JlYWRfcmYocnR3ZGV2LCBSRl9QQVRIX0EsIDB4MCwgUkZSRUdfTUFTSyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDoxMC42MTA5MjU4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNjYwOTUwMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIFZpcnR1YWxpemF0aW9uIEZlYXNpYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBydHc4ODIyYy5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgUmVhbHRlayB3aXJlbGVzcyBoYXJkd2FyZS4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHNpbXBsaWZ5aW5nIHNvbWUgSVEgY29tcGFyaXNvbiBhbmQgc29ydGluZyBsb2dpYyBhY3Jvc3Mgc2V2ZXJhbCBmdW5jdGlvbnM6IGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGFuZCBhIGZldyBvdGhlcnMgZGVhbGluZyB3aXRoIERBQyBjYWxpYnJhdGlvbi4gVGhleSdyZSBsZXZlcmFnaW5nIGBzaWduX2V4dGVuZDMyYCBhbmQgYHNvcnRgIGZyb20gYGxpbnV4L3NvcnQuaGAsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC4gVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzIGFsd2F5cywgY2FuIEkgYWN0dWFsbHkgdGVzdCB0aGlzIHRoaW5nIGVmZmVjdGl2ZWx5IHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSB0cmlja3kuIEkga25vdyB0aGUgYHJ0dzg4YCBmYW1pbHkgaXMgYSBtYWM4MDIxMSBkcml2ZXIsIGJ1dCBnZW5lcmFsbHksIHRoZXNlIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUg4oCTIGEgUmVhbHRlayBXaS1GaSBjYXJkLiBgbWFjODAyMTFfaHdzaW1gIGlzbid0IGdvaW5nIHRvIGhlbHAgaGVyZTsgaXQncyBhIHNlcGFyYXRlIHRoaW5nLiBJdCdzIHJhcmUgdG8gZ2V0IGEgZ29vZCBzb2Z0d2FyZSBlbXVsYXRpb24gZ29pbmcgZm9yIGEgZnVsbCB3aXJlbGVzcyBzdGFjayBsaWtlIHRoaXMgdW5sZXNzIHRoZXJlJ3Mgc29tZSB2ZXJ5IHNwZWNpZmljIFFFTVUgZGV2aWNlIG9yIFVTQiBnYWRnZXQgc2V0dXAuIEknbSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgY29ubmVjdGlvbiDigJMgaXMgaXQgUENJZSBvciBVU0IgZm9yIHRoZSA4ODIyYz8gV2FpdC4uLiBJIHJlbWVtYmVyIGBydHc4OGAgZG9lcyBoYXZlIFVTQiBzdXBwb3J0IChgcnR3ODhfdXNiYCksIGRvZXNuJ3QgaXQ/IE9rYXksIHRoYXQncyBpbnRlcmVzdGluZy4gSWYgYHJ0dzg4MjJjYCAqY2FuKiBiZSBhIFVTQiBkZXZpY2UsIHRoZW4gdGhlcmUncyBhIHBvc3NpYmlsaXR5LiBJZiBpdCdzIFVTQiwgdGhlbiBpdCBiZWNvbWVzIHBvdGVudGlhbGx5IGZ1enphYmxlIHVzaW5nIHNvbWV0aGluZyBsaWtlIHN5emthbGxlcidzIGR1bW15IFVTQiBkcml2ZXIuIExldCBtZSBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuY2AgYW5kIHNlZSBpZiB0aGVyZSBpcyBVU0IgY29kZSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUzMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjE4Ljg3NzAyMjg5NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjY0OTU0ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODgyMmNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjMzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTM3PW9iai0kKENPTkZJR19SVFc4OF84ODIyQylcXHQrPSBydHc4OF84ODIyYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTozODpydHc4OF84ODIyYy1vYmpzXFx0XFx0Oj0gcnR3ODgyMmMubyBydHc4ODIyY190YWJsZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTQwPW9iai0kKENPTkZJR19SVFc4OF84ODIyQ0UpXFx0Kz0gcnR3ODhfODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQxOnJ0dzg4Xzg4MjJjZS1vYmpzXFx0XFx0Oj0gcnR3ODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9NDM9b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDUylcXHQrPSBydHc4OF84ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NDQ6cnR3ODhfODgyMmNzLW9ianNcXHRcXHQ6PSBydHc4ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT00Nj1vYmotJChDT05GSUdfUlRXODhfODgyMkNVKVxcdCs9IHJ0dzg4Xzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NzpydHc4OF84ODIyY3Utb2Jqc1xcdFxcdDo9IHJ0dzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMy0jaW5jbHVkZSBcXFwicGh5LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE0OiNpbmNsdWRlIFxcXCJydHc4ODIyYy5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTojaW5jbHVkZSBcXFwicnR3ODgyMmNfdGFibGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYtI2luY2x1ZGUgXFxcIm1hYy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyNTpzdGF0aWMgdm9pZCBydHc4ODIyY19jb25maWdfdHJ4X21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggdHhfcGF0aCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjYtXFx0XFx0XFx0XFx0ICAgICB1OCByeF9wYXRoLCBib29sIGlzX3R4Ml9wYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjZV9lZnVzZV9wYXJzaW5nKHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyOTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ0dzg4MjJjX2VmdXNlICptYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzQ6c3RhdGljIHZvaWQgcnR3ODgyMmN1X2VmdXNlX3BhcnNpbmcoc3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM1OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MDpzdGF0aWMgdm9pZCBydHc4ODIyY3NfZWZ1c2VfcGFyc2luZyhzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4ODIyY19lZnVzZSAqbWFwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ2OnN0YXRpYyBpbnQgcnR3ODgyMmNfcmVhZF9lZnVzZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OC1cXHRzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWVmdXNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTpcXHRzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTAtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MjpcXHRtYXAgPSAoc3RydWN0IHJ0dzg4MjJjX2VmdXNlICopbG9nX21hcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzMtXFx0Y2FzZSBSVFdfSENJX1RZUEVfUENJRTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzQ6XFx0XFx0cnR3ODgyMmNlX2VmdXNlX3BhcnNpbmcoZWZ1c2UsIG1hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03Ni1cXHRjYXNlIFJUV19IQ0lfVFlQRV9VU0I6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc3OlxcdFxcdHJ0dzg4MjJjdV9lZnVzZV9wYXJzaW5nKGVmdXNlLCBtYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzktXFx0Y2FzZSBSVFdfSENJX1RZUEVfU0RJTzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODA6XFx0XFx0cnR3ODgyMmNzX2VmdXNlX3BhcnNpbmcoZWZ1c2UsIG1hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDpzdGF0aWMgdm9pZCBydHc4ODIyY19oZWFkZXJfZmlsZV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgcHJlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfYmJfcmVzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExMDpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfYmFja3VwX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHdfYmFja3VwX2luZm8gKmJhY2t1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzOTpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0d19iYWNrdXBfaW5mbyAqYmFja3VwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU4OnN0YXRpYyBpbnQgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjg6XFx0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY5OlxcdHNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTcyOnN0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4NDpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjIwMzpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjIyOnN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NDpcXHRcXHRpZiAocnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgaXZbaV0pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NTpcXHRcXHQgICAgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgcXZbaV0pKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDYtXFx0XFx0XFx0aSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjUwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI1MS1cXHRcXHRcXHRcXHQgICAgICAgczMyICppdiwgczMyICpxdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4NDpcXHRcXHRydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIGl2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5ODpcXHQqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5OTpcXHQqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzAyOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMDMtXFx0XFx0XFx0XFx0ICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxNDpcXHRydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShydHdkZXYsIGl2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxNTpcXHRydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChydHdkZXYsIGl2LCBxdiwgaV92YWx1ZSwgcV92YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzE4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19iYl9zZXR0aW5nKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMzQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9hZGMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzM1LVxcdFxcdFxcdFxcdCB1OCBwYXRoLCB1MzIgKmFkY19pYywgdTMyICphZGNfcWMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozNDU6XFx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ2LVxcdHN3aXRjaCAocGF0aCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3MS1cXHRcXHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMyNCwgMHgwMDAxMDAwMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM3MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzkxLVxcdFxcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYzNjLCBwYXRoX3NlbCArIDB4ODEwMyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM5MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM5My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTI6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE4OlxcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxOTpcXHRyZWFkX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ1NzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ1OC1cXHRcXHRcXHRcXHQgICB1OCBwYXRoLCB1MzIgKmljX291dCwgdTMyICpxY19vdXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0NjM6XFx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDY0LVxcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCBiYXNlX2FkZHIgKyAweGJjLCAweGYwMDAwMDAwLCAweDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDc1OlxcdHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShydHdkZXYsIFxcdTAwMjZpY19pbiwgXFx1MDAyNnFjX2luKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDc2LVxcdGljID0gaWNfaW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MDY6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MDctXFx0XFx0XFx0XFx0ICAgdTMyIGFkY19pYywgdTMyIGFkY19xYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjUxNjpcXHRiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MTc6XFx0cmVhZF9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTgtXFx0aWMgPSAqaWNfaW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU2LVxcdHJ0d193cml0ZTMyKHJ0d2RldiwgYmFzZV9hZGRyICsgMHg2MCwgMHhmMDAwMDAwMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU1NzpcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU1OC1cXHRpZiAoaWMgXFx1MDAzZT0gMHgxMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01ODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU4NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4NTpcXHR1MzIgYmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTkzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01OTQtXFx0XFx0XFx0XFx0XFx0dTggcGF0aCwgdTggdmVjLCB1MzIgd19hZGRyLCB1MzIgcl9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjEwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjExLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02MTktXFx0LyogYmFja3VwIEkgdmVjdG9yICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMDpcXHR3X2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjIxOlxcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MTA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMjpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF92ZWMocnR3ZGV2LCBwYXRoLCAwLCB3X2FkZHIsIHJfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI0LVxcdC8qIGJhY2t1cCBRIHZlY3RvciAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MjU6XFx0d19hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSArIDB4YjAgKyB3X29mZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjI2OlxcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MTAgKyByX29mZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjI3OlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhydHdkZXYsIHBhdGgsIDEsIHdfYWRkciwgcl9hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MzA6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfZGNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYzMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2NTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NjctXFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MTg2MCwgMHhmYzAwMDAwMCwgMHgzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY2ODpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9wYXRoKHJ0d2RldiwgUkZfUEFUSF9BKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY3Mi1cXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHg0MTYwLCAweGZjMDAwMDAwLCAweDNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjczOlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY3NTpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9kY2socnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjc2LVxcdHJ0d193cml0ZTMyX3NldChydHdkZXYsIDB4MTgzMCwgQklUKDMwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2ODQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTcxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzE0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wcmVwYXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTcxNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3NDM6XFx0cnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3Njc6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzY4LVxcdFxcdFxcdFxcdFxcdCAgdTMyIHRhcmdldF9hZGRyLCB1MzIgdG9nZ2xlX2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3ODQ6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5MzpcXHR3X2kgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzk0OlxcdHJfaSA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MDg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5NTpcXHR3X3EgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMCArIHdfb2ZmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3OTY6XFx0cl9xID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpICsgMHgwOCArIHJfb2ZmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5ODpcXHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV93YWl0KHJ0d2Rldiwgcl9pLCB3X2kgKyAweDgpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTktXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODExOlxcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQocnR3ZGV2LCByX3EsIHdfcSArIDB4OCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4MzE6c3RhdGljIGJvb2wgX19ydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODMzOlxcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0EpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgzNjpcXHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wYXRoKHJ0d2RldiwgUkZfUEFUSF9CKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODM3LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg0MjpzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg1ODpcXHRydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcHJlcGFyZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NTktXFx0aWYgKCFjaGVja19od19yZWFkeShydHdkZXYsIDB4MjgwOCwgMHg3ZmZmODAsIDB4ZmZmZikgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg2NTpcXHRpZiAoIV9fcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHJ0d2RldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODY2LVxcdFxcdHJ0d19lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHJlc3RvcmUgZGFjayB2ZWN0b3JzXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04ODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9kYWNfY2FsKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4OTI6XFx0aWYgKHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShydHdkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODk3OlxcdHJ0dzg4MjJjX2RhY19iYWNrdXBfcmVnKHJ0d2RldiwgYmFja3VwLCBiYWNrdXBfcmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg5OTpcXHRydHc4ODIyY19kYWNfYmJfc2V0dGluZyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMS1cXHQvKiBwYXRoLUEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTAyOlxcdHJ0dzg4MjJjX2RhY19jYWxfYWRjKHJ0d2RldiwgUkZfUEFUSF9BLCBcXHUwMDI2YWRjX2ljX2EsIFxcdTAwMjZhZGNfcWNfYSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMy1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMTA7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDQ6XFx0XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMShydHdkZXYsIFJGX1BBVEhfQSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkwNTpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHJ0d2RldiwgUkZfUEFUSF9BLCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwNi1cXHRcXHRpY19hID0gaWM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDk6XFx0XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMyhydHdkZXYsIFJGX1BBVEhfQSwgYWRjX2ljX2EsIGFkY19xY19hLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTAtXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZpYywgXFx1MDAyNnFjLCBcXHUwMDI2aV9hLCBcXHUwMDI2cV9hKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTQtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MTU6XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwNChydHdkZXYsIFJGX1BBVEhfQSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE3LVxcdC8qIHBhdGgtQiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MTg6XFx0cnR3ODgyMmNfZGFjX2NhbF9hZGMocnR3ZGV2LCBSRl9QQVRIX0IsIFxcdTAwMjZhZGNfaWNfYiwgXFx1MDAyNmFkY19xY19iKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkyMDpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAxKHJ0d2RldiwgUkZfUEFUSF9CKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTIxOlxcdFxcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIocnR3ZGV2LCBSRl9QQVRIX0IsIFxcdTAwMjZpYywgXFx1MDAyNnFjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTIyLVxcdFxcdGljX2IgPSBpYztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkyNTpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAzKHJ0d2RldiwgUkZfUEFUSF9CLCBhZGNfaWNfYiwgYWRjX3FjX2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkyNi1cXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmljLCBcXHUwMDI2cWMsIFxcdTAwMjZpX2IsIFxcdTAwMjZxX2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzMC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkzMTpcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHJ0d2RldiwgUkZfUEFUSF9CKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTM5OlxcdHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhydHdkZXYsIGJhY2t1cCwgYmFja3VwX3JmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDEtXFx0LyogYmFja3VwIHJlc3VsdHMgdG8gcmVzdG9yZSwgc2F2aW5nIGEgbG90IG9mIHRpbWUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTQyOlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjk1MDpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl94Ml9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3NldF9wb3dlcl90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHM4IGJiX2dhaW5bMl1bOF0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5OTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfcG93ZXJfdHJpbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05OTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMjctXFx0aWYgKHNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTAyODpcXHRcXHRydHc4ODIyY19zZXRfcG93ZXJfdHJpbShydHdkZXYsIGJiX2dhaW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfdGhlcm1hbF90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwNTE6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGFfYmlhcyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDczOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3Jma19oYW5kc2hha2Uoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBpc19iZWZvcmVfaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTExOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTExOTpzdGF0aWMgdm9pZCBydHc4ODIyY19yZmtfcG93ZXJfc2F2ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTIwLVxcdFxcdFxcdFxcdCAgICBib29sIGlzX3Bvd2VyX3NhdmUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTEzMTpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYmFja3VwX2JiX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCB1MzIgcmVnW10sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMzItXFx0XFx0XFx0XFx0XFx0ICB1MzIgcmVnX2JhY2t1cFtdLCB1MzIgcmVnX251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMTQ0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNDUtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCB1MzIgcmVnW10sIHUzMiByZWdfYmFja3VwW10sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTE1Nz1zdGF0aWMgYm9vbCBjaGVja19yZl9zdGF0dXMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExNzI6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3R4X3BhdXNlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExODg6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2JiX2RwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMjIwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEyNTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2FmZV9kcGtfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMjg5OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19iYl9kcGtfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzI5OnN0YXRpYyBib29sIF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgZ2FpbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTMzODpzdGF0aWMgdm9pZCBfcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzOS1cXHRcXHRcXHRcXHRcXHRcXHQgdTggYmFuZCwgdTggcGF0aClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzY4LVxcdFxcdHYgPSB0eGdhcGstXFx1MDAzZXJmM2ZfYnBbYmFuZF1bZ2Fpbl1bcGF0aF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzNjk6XFx0XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzNzAtXFx0XFx0XFx0aWYgKCFjaGVja190eGdhaW4pIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzkyOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV9nYWluX2JiX3RhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0MDAtXFx0XFx0Zm9yIChwYXRoID0gMDsgcGF0aCBcXHUwMDNjIHJ0d2Rldi1cXHUwMDNlaGFsLnJmX3BhdGhfbnVtOyBwYXRoKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQwMTpcXHRcXHRcXHRfcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDAyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgYmFuZCwgcGF0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQwNzpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQ4NDpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfY2FsY3VsYXRlX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDk1OlxcdHJ0dzg4MjJjX3R4Z2Fwa19iYWNrdXBfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDk2LVxcdFxcdFxcdFxcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTUxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTUxNzpcXHRcXHRydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTUxOC1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1MTpcXHRcXHRydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1Mi1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTMtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTU0OlxcdHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU1LVxcdFxcdFxcdFxcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1ODpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmZfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTcwOnN0YXRpYyB1MzIgcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBnYWluLCBzOCBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1NzY6XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIGdhaW4pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzctXFx0XFx0bmV3X2dhaW4gPSBnYWluO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1OTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYyNC1cXHRcXHRcXHRcXHR2ID0gdHhnYXBrLVxcdTAwM2VyZjNmX2JwW2JhbmRdW2pdW3BhdGhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjI1OlxcdFxcdFxcdFxcdGlmIChfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQocnR3ZGV2LCB2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYyNi1cXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjMyLVxcdFxcdFxcdHYgPSB0eGdhcGstXFx1MDAzZXJmM2ZfYnBbYmFuZF1baV1bcGF0aF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2MzM6XFx0XFx0XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2MzQtXFx0XFx0XFx0XFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NTA6XFx0XFx0XFx0dG1wXzNmID0gcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY1MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHR4Z2Fway1cXHUwMDNlcmYzZl9icFtiYW5kXVtpXVtwYXRoXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2ODEtXFx0XFx0XFx0XFxcIltUWEdBUEtdIEFscmVhZHkgUmVhZCB0eGdhcGstXFx1MDAzZXJlYWRfdHhnYWluIHJldHVybiEhIVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2ODI6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY4My1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcxOC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3MTk6XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcyMC1cXHR0eGdhcGstXFx1MDAzZXJlYWRfdHhnYWluID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzIzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2FwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzMyOlxcdHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc0NzpcXHRydHc4ODIyY190eGdhcGtfYmFja3VwX2JiX3JlZyhydHdkZXYsIGJiX3JlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0OC1cXHRcXHRcXHRcXHQgICAgICBiYl9yZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzQ5OlxcdHJ0dzg4MjJjX3R4Z2Fwa190eF9wYXVzZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzUwLVxcdGZvciAocGF0aCA9IDA7IHBhdGggXFx1MDAzYyBydHdkZXYtXFx1MDAzZWhhbC5yZl9wYXRoX251bTsgcGF0aCsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1Mi1cXHRcXHRcXHRcXHRcXHQgICAgICBSRl9DRkdDSCwgUkZSRUdfTUFTSykgXFx1MDAyNiBNQVNLQllURTA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTM6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX2JiX2RwayhydHdkZXYsIHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU0OlxcdFxcdHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrKHJ0d2RldiwgcGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTU6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX2NhbGN1bGF0ZV9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1NjpcXHRcXHRydHc4ODIyY190eGdhcGtfcmZfcmVzdG9yZShydHdkZXYsIHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU3OlxcdFxcdHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrX3Jlc3RvcmUocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1ODpcXHRcXHRydHc4ODIyY190eGdhcGtfYmJfZHBrX3Jlc3RvcmUocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1OS1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NjA6XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2MTpcXHRydHc4ODIyY190eGdhcGtfcmVsb2FkX2JiX3JlZyhydHdkZXYsIGJiX3JlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2Mi1cXHRcXHRcXHRcXHQgICAgICBiYl9yZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NjU6c3RhdGljIHZvaWQgcnR3ODgyMmNfZG9fZ2FwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzY2LXtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjQ6MTkuNTQzNTIzMDc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI1MjEzOTk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQXNzZXNzbWVudCBvZiB0aGUgcnR3ODgyMmMgRHJpdmVyKipcblxuT2theSwgc28gdGhlIGBydHc4ODIyY2AgZHJpdmVyIGdldHMgYnVpbHQgd2hlbiBgQ09ORklHX1JUVzg4Xzg4MjJDYCBpcyBmbGlwcGVkLiBUaGlzIGZhbWlseSBhbHNvIGVuY29tcGFzc2VzIFBDSWUgKGBDT05GSUdfUlRXODhfODgyMkNFYCksIFNESU8gKGBDT05GSUdfUlRXODhfODgyMkNTYCksIGFuZCBjcml0aWNhbGx5LCBhIFVTQiB2ZXJzaW9uIChgQ09ORklHX1JUVzg4Xzg4MjJDVWApLiBUaGF0IFVTQiB2YXJpYW50IGlzIHRoZSBrZXkgaGVyZS4gU2luY2UgYSBVU0IgZGV2aWNlIGlzIGF2YWlsYWJsZSwgdGhpcyBkcml2ZXIgKnNob3VsZCogYmUgYW1lbmFibGUgdG8gZnV6emluZyB3aXRoIHN5emthbGxlcidzIFVTQiBkdW1teSBkcml2ZXIsIGVtdWxhdGluZyB0aGF0IGhhcmR3YXJlIGludGVyZmFjZS5cblxuV2FpdCBhIG1pbnV0ZSwgbGV0J3MgcmUtcmVhZCB0aGUgcHJvbXB0LiBJdCdzIGFza2luZyBmb3IgYSBgV29ydGhGdXp6aW5nPWZhbHNlYCByZXR1cm4gaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgdGhlIGNhc2Ugb2Ygc29tZXRoaW5nIGxpa2UgdXNiIGdhZGdldC4gQnV0IGEgVVNCIGRyaXZlciAqaXMqIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IG9yIGEgZHVtbXkgSENELlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQsIGFuZCBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgKmlzKiBhdmFpbGFibGUgaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBhbmQgUUVNVSksIHRoaXMgbG9va3MgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIG9mIGBDT05GSUdfUlRXODhfODgyMkNVYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG9idmlvdXMgc2hvd3N0b3BwZXJzLCBidXQgdGhlIHByZXNlbmNlIG9mIHRoZSBVU0IgdmVyc2lvbiBpcyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCB0aGlzIHBhdGNoIGlzLCBpbiBmYWN0LCB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzczNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDoyNS43OTU2NjYyODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk3NjE2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUVzg4Xzg4MjJDVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc9MTA0PWNvbmZpZyBSVFc4OF84ODIyQ1NcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjQ6MjUuODQ1NDMyODY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxMDM2MDg4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiBgUlRXODhfODgyMkNVYDpcblxuKipBbmFseXppbmcgYFJUVzg4Xzg4MjJDVWAgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gd2UncmUgZGl2aW5nIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgUlRXODhfODgyMkNVYC4gTXkgaW5pdGlhbCBhcHByb2FjaCBpcyB0byBtZW50YWxseSBtYXAgb3V0IHRoZSB0eXBpY2FsIGRyaXZlciBzdHJ1Y3R1cmUuIFdoYXQgYXJlIHRoZSBsaWtlbHkgZm91bmRhdGlvbmFsIGVsZW1lbnRzPyBXZSdyZSB0YWxraW5nIGFib3V0IGEgd2lyZWxlc3MgZHJpdmVyLCBzbyBJJ20gdGhpbmtpbmcgaW1tZWRpYXRlbHkgYWJvdXQgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIChIQUwpLCBsaWtlbHkgc29tZSBzb3J0IG9mIHBvd2VyIG1hbmFnZW1lbnQgaW50ZXJmYWNlLCBhbmQgb2YgY291cnNlLCB0aGUgbmV0d29yayBzdGFjayBpbnRlcmFjdGlvbnMuXG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGlzIGlzIGEgc3RhbmRhcmQgUmVhbHRlayBkZXNpZ24gb3IgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjdXN0b20gZWxlbWVudHMgdG8gY29uc2lkZXIsIHN1Y2ggYXMgYSB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uIEFyZSB0aGVyZSBhbnkgZXhpc3RpbmcgUmVhbHRlayBkcml2ZXIgYXJjaGl0ZWN0dXJlcyBJIHNob3VsZCBiZSBmYW1pbGlhciB3aXRoLCBvciBhbnkga25vd24gcXVpcmtzPyBUaGF0IHdvdWxkIGJlIHVzZWZ1bCBpbmZvcm1hdGlvbiB0byBoYXZlIHRvIHVuZGVyc3RhbmQgaXRzIGludGVycmVsYXRpb25zaGlwIHdpdGggb3RoZXIgc3lzdGVtcy5cblxuVGhlbiB0aGVyZSBhcmUgdGhlIGtlcm5lbCBpbnRlcmZhY2VzLiBXaGF0IHNwZWNpZmljIGtlcm5lbCBtb2R1bGVzIG9yIGZ1bmN0aW9ucyBpcyB0aGlzIGRyaXZlciBnb2luZyB0byByZWx5IG9uPyBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgd2lyZWxlc3MgZXh0ZW5zaW9ucyAoV0UpIG9yIGl3bHdpZmksIG9yIGlzIHRoaXMgZHJpdmVyIGltcGxlbWVudGluZyBzb21ldGhpbmcgbW9yZSBiZXNwb2tlPyBJIHNob3VsZCBiZSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIHZlcnNpb24gY29tcGF0aWJpbGl0eSBoZXJlLCBhcyB0aGF0IGNvdWxkIGFsc28gcmV2ZWFsIGEgbG90IGFib3V0IHRoZSBkZXBlbmRlbmN5IHRyZWUuIEFsc28sIHdpbGwgaXQgdXNlIGFueSBjdXN0b20ga2VybmVsIG1vZHVsZXMgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgYm9hcmQ/XG5cbkkgaGF2ZSB0byB0aGluayBhYm91dCB0aGUgdG9vbGNoYWluIGFzIHdlbGwuIFdoYXQgY29tcGlsZXIgdmVyc2lvbiBhbmQgbGlicmFyaWVzIGFyZSBsaWtlbHkgbmVlZGVkIGZvciBjb21waWxhdGlvbj8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBidWlsZCBmbGFncyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIHBlcmhhcHMgcmVsYXRlZCB0byBkZWJ1ZyBzeW1ib2xzIG9yIHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucz8gTGV0J3MgYXNzdW1lIGl0IHN1cHBvcnRzIHRoZSBsYXRlc3QgYnVpbGQsIGJ1dCBpdCB3aWxsIGJlIHVzZWZ1bCB0byBjaGVjayB0aGUgY29tcGF0aWJpbGl0eSBsaXN0LCBpZiBpdCBleGlzdHMuXG5cbkknbSBtZW50YWxseSBjcmVhdGluZyBhIGRlcGVuZGVuY3kgZ3JhcGgsIHNlZWluZyBob3cgYFJUVzg4Xzg4MjJDVWAgZml0cyB3aXRoaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBJJ20gaW1hZ2luaW5nIGEgbXVsdGktdGllcmVkIGFyY2hpdGVjdHVyZSwgYW5kIHdhbnQgdG8gcXVpY2tseSBkZXRlcm1pbmUgZWFjaCBvZiBpdHMgY29tcG9uZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhdCBlYWNoIGxldmVsIHRvIGVuc3VyZSBJIGNhbiBhZGRyZXNzIGFueSBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDUwOSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjMxLjU1NTc5Njk5NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDc4MDQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlRXODhfODgyMkNVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc9MTA0PWNvbmZpZyBSVFc4OF84ODIyQ1NcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjQ6MzEuNjA2NTgwNDE1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzOTQwNjk0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBLY29uZmlnKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHNvbWUgZmVhdHVyZSBvciBvcHRpb24gaXMgY29udHJvbGxlZC4gTGV0J3Mgc2VlLi4uIEknbGwgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ2AgZmlsZSwgYXJvdW5kIGxpbmUgMTE1LiBUaGF0IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2sgdGhlIGdlbmVyYWwgc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBkcml2ZXIuIEhvcGVmdWxseSwgaXQnbGwgcHJvdmlkZSBzb21lIGNsYXJpdHkgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSdtIGludGVyZXN0ZWQgaW4gYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gVGhpcyBLY29uZmlnIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBidWlsdCBhbmQgY29uZmlndXJlZCwgYW5kIGxpbmUgMTE1IGZlZWxzIGxpa2UgYSBnb29kIHNwb3QgdG8gc3RhcnQgbXkgc2VhcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTE0MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjM1LjI0NTk4OTcyOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTAwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAwOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDRSBjaGlwc2V0XFxuIDEwMTpcXHRcXG4gMTAyOlxcdFxcdCAgODAyLjExYWMgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMTAzOlxcdFxcbiAxMDQ6XFx0Y29uZmlnIFJUVzg4Xzg4MjJDU1xcbiAxMDU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkNTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxMDY6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gMTA3OlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDEwODpcXHRcXHRzZWxlY3QgUlRXODhfU0RJT1xcbiAxMDk6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjJDXFxuIDExMDpcXHRcXHRoZWxwXFxuIDExMTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQ1MgY2hpcHNldFxcbiAxMTI6XFx0XFxuIDExMzpcXHRcXHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuIDExNDpcXHRcXG4gMTE1OlxcdGNvbmZpZyBSVFc4OF84ODIyQ1VcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxMTc6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gMTE4OlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDExOTpcXHRcXHRzZWxlY3QgUlRXODhfVVNCXFxuIDEyMDpcXHRcXHRzZWxlY3QgUlRXODhfODgyMkNcXG4gMTIxOlxcdFxcdGhlbHBcXG4gMTIyOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDVSBjaGlwc2V0XFxuIDEyMzpcXHRcXG4gMTI0OlxcdFxcdCAgODAyLjExYWMgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAxMjU6XFx0XFxuIDEyNjpcXHRjb25maWcgUlRXODhfODcyM0RFXFxuIDEyNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTI4OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDEyOTpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDozNS4yNDYwNjQwNThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgwMjEwNDcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBSVFc4OF84ODIyQ1VgIERlcGVuZGVuY3kgYW5kIE1vZGlmaWVkIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgUlRXODhfODgyMkNVYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBVU0JgIGFuZCBpbXBsaWNpdGx5IGVuYWJsZXMgYFJUVzg4Xzg4MjJDYC4gVGhpcyBtYWtlcyBzZW5zZTsgaWYgaXQncyBhIFVTQiBpbXBsZW1lbnRhdGlvbiwgaXQgd2lsbCBsaWtlbHkgYmUgYnVpbHQgb24gdG9wIG9mIHRoZSBiYXNlIGNoaXAuIFRoZSBwYXRjaCB0YXJnZXRzIGBydHc4ODIyYy5jYCwgd2hpY2ggaXMgb25seSBjb21waWxlZCBpZiBgUlRXODhfODgyMkNgIGlzIGNvbmZpZ3VyZWQuIFRoZXJlZm9yZSwgdG8gZWZmZWN0aXZlbHkgdGVzdCB0aGlzLCBJIG5lZWQgdG8gZW5hYmxlIGBSVFc4OF84ODIyQ1VgIGJlY2F1c2UgdGhhdCBzaG91bGQgYWxsb3cgbWUgdG8gdGVzdCB0aHJvdWdoIFVTQiBlbXVsYXRpb24uXG5cbk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSBiZWluZyBtb2RpZmllZD8gTGV0J3MgdGFrZSBhIGxvb2suIEkgc2VlOiBgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzJgIChhIG5ldyBmdW5jdGlvbiksIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCwgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gVGhlc2UgYXJlIGFsbCBkZWNsYXJlZCBhcyBzdGF0aWMsIHNvIHRoZXkncmUgaW50ZXJuYWwgdG8gdGhlIGZpbGUuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgY2FsbCB0aGVzZSBmdW5jdGlvbnMsIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuXG5cbk9rYXksIGxldCdzIHN0YXJ0IHdpdGggdGhlIGNhbGxzIHRvIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBJIHNlZSB0aGF0IGl0J3MgY2FsbGVkIGJ5IGBydHc4ODIyY19kYWNfY2FsX3N0ZXAyYCwgYHJ0dzg4MjJjX2RhY19jYWxfc3RlcDNgLCBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwNGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9hZGNgLiBUaG9zZSBmb3VyIGFyZSBhbGwgY2FsbGVkIGJ5IGBydHc4ODIyY19yZl9kYWNfY2FsYC4gTm93LCBteSBuZXh0IHF1ZXN0aW9uIGlzLCB3aG8gY2FsbHMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgPyBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBleGVjdXRpb24gcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4MzksIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDo0Mi4wNDgxNzEzMTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTUyODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg4MjJjX3JmX2RhY19jYWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTg0Mj1zdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04ODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9kYWNfY2FsKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTc3OD1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3Nzkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzgwOlxcdHJ0dzg4MjJjX3JmX2RhY19jYWwocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc4MS1cXHRydHc4ODIyY19yZl94Ml9jaGVjayhydHdkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDo0Mi4xMDgzMzAxMjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE1MTU3OTUyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgUkYgSW5pdGlhbGl6YXRpb24gQ2FsbCoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgXCJXaG8ncyBjYWxsaW5nIGBydHc4ODIyY19yZl9pbml0YD9cIi4gVGhhdCdzIHRoZSBjcnV4IG9mIHRoaXMuIFVuZGVyc3RhbmRpbmcgdGhlICpjYWxsZXIqIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWJzb2x1dGVseSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIFJGIGluaXRpYWxpemF0aW9uIGZsb3cgYW5kLCBjb25zZXF1ZW50bHksIHRoZSBzdGF0ZSBvZiB0aGUgc3lzdGVtIHdoZW4gUkYgaXMgcmVhZHkuIElzIGl0IGJlaW5nIGludm9rZWQgZGlyZWN0bHkgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiwgcGVyaGFwcyBmcm9tIHRoZSBib2FyZCBicmluZy11cCBjb2RlPyBPciBpcyBpdCBiZWluZyBjYWxsZWQgbGF0ZXIsIGxpa2VseSBhcyBhIHJlc3BvbnNlIHRvIHNvbWUgZXZlbnQgbGlrZSBhIFBDSSBwcm9iZSwgYSBwb3dlci11cCBzZXF1ZW5jZSwgb3IgYSBjb25uZWN0aW9uIGF0dGVtcHQ/XG5cbktub3dpbmcgdGhlIGNhbGwgcGF0aCB3aWxsIGltbWVkaWF0ZWx5IGdpdmUgbWUgYSB0b24gb2YgdmFsdWFibGUgY29udGV4dC4gSXQgaW5mb3JtcyBtZSBpZiBJIG5lZWQgdG8gbG9vayB1cHN0cmVhbSBhdCB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb25zIG9yIGRvd25zdHJlYW0gdG8gdGhlIHN0YXRlIG1hY2hpbmVzLiBJdCB3aWxsIHNob3cgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXLigJlzIG9wZXJhdGlvbi4gSXQgd2lsbCBpbmRpY2F0ZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgUkYgcG9ydGlvbiBpcyBpbml0aWFsaXplZCBhbmQgdGhhdCdzIHRoZSBjb3JlLiBJdOKAmXMgdGhlIHN0YXJ0aW5nIHBvaW50LlxuXG5Gcm9tIHRoZSBjYWxsZXIsIEkgY2FuIGRlZHVjZTpcblxuKiAgICoqVGltaW5nOioqIFdoZW4gdGhlIFJGIGlzIGluaXRpYWxpemVkIHJlbGF0aXZlIHRvIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gYnJpbmctdXAgb3IgbmV0d29yayBzdGFjayBpbml0aWFsaXphdGlvbi5cbiogICAqKkNvbnRleHQ6KiogV2hhdCBvdGhlciBvcGVyYXRpb25zIGFyZSBhbHJlYWR5IGNvbXBsZXRlZCB3aGVuIHRoZSBSRiBpbml0aWFsaXphdGlvbiBoYXBwZW5zLlxuKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgcHJlY29uZGl0aW9ucyBhcmUgKmFzc3VtZWQqIHRvIGJlIG1ldCBiZWZvcmUgdGhpcyBjYWxsLlxuXG5JIGNhbiB0aGVuIHRyYWNlIHRoYXQgdG8gc2VlIHdoZXJlIHRoZSBjYWxsIGNhbWUgZnJvbSBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBpbiBvcmRlciB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IFJGIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHdvcmtzIGluIHJlbGF0aW9uIHRvIGl0cyBjYWxsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MTIxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjQ6NDguMjU5OTEzNjQ4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTUxMjY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4ODIyY19yZl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzY1PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RvX2dhcGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzc4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTgwMz1zdGF0aWMgdm9pZCBydHc4ODIyY19waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTg0OTpcXHRydHc4ODIyY19yZl9pbml0KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4NTAtXFx0cnR3ODgyMmNfcHdydHJhY2tfaW5pdChydHdkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDo0OC4zMTk0MzA2OTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg1NTExNTUzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDYWxsZXIgb2YgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gKipcblxuQWxyaWdodCwgc28gYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gLi4uIHRoYXQncyBhIGtleSBmdW5jdGlvbiBpbiB0aGUgUEhZIGNvbmZpZ3VyYXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgUmVhbHRlayBXaUZpIGNoaXAsIHJpZ2h0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgYWx3YXlzICp3aG8qIGlzIGNhbGxpbmcgdGhhdD8gSXQncyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIHdoZW4gZGVidWdnaW5nLCBvcHRpbWl6aW5nLCBvciBldmVuIGp1c3QgdW5kZXJzdGFuZGluZyBhIGRyaXZlcidzIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQuXG5cbklzIGl0IGNhbGxlZCBkaXJlY3RseSBmcm9tIGEgaGlnaGVyLWxldmVsIGZ1bmN0aW9uLCBtYXliZSBzb21ldGhpbmcgZXhwb3NlZCB0byB0aGUgTUFDIGxheWVyPyBQZXJoYXBzIGl0J3MgYmVpbmcgdHJpZ2dlcmVkIGJ5IGFuIGludGVycnVwdCBoYW5kbGVyLCBtZWFuaW5nIGl0J3MgcmVhY3RpbmcgdG8gaGFyZHdhcmUgZXZlbnRzPyBNYXliZSBpdCdzIGJ1cmllZCBkZWVwIHdpdGhpbiBzb21lIHNvcnQgb2YgcG93ZXIgbWFuYWdlbWVudCByb3V0aW5lLCBhZGp1c3RpbmcgUEhZIHBhcmFtZXRlcnMgYmFzZWQgb24gbGluayBzdGF0ZSBvciBwb3dlciBwcm9maWxlcz8gSXQgY291bGQgZXZlbiBiZSBwYXJ0IG9mIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gRGV0ZXJtaW5pbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBwYXJhbW91bnQgdG8gdW5kZXJzdGFuZGluZyAqd2h5KiBpdCdzIGJlaW5nIGNhbGxlZCBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS5cblxuVGhlIGRlcGVuZGVuY3kgdHJlZSBpcyBrZXk6IElzIGl0IGNhbGxlZCBieSBhIGNvcmUgZnVuY3Rpb24sIG9yIHNvbWUgb3B0aW9uYWwgZmVhdHVyZT8gV2hhdCBkb2VzIGl0IGRvIGZvciB0aGUgUEhZLCB3aGF0IHBhcnRzIG9mIHRoZSBQSFkgZG9lcyBpdCB0YWxrIHRvPyBUaGUgYW5zd2VycyB0byB0aG9zZSBxdWVzdGlvbnMgYXJlIGFsbCBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0aGUgc3lzdGVtLlxuXG5JIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuIENyb3NzLXJlZmVyZW5jaW5nIHRoZSBjb2RlLCB1c2luZyBhIGRlYnVnZ2VyLCB0aGF0J3MgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4OTAsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDo1NC4xNzQ1NTM2NDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTg2NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3ODc9c3RhdGljIHZvaWQgcnR3ODgyMmNfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4MDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4MDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTAxLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MDI6XFx0LnBoeV9zZXRfcGFyYW1cXHRcXHQ9IHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDMtXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg4MjJjX3JlYWRfZWZ1c2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjU0LjIzOTE0NDM0N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzMxNzI4NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRGl2aW5nIGludG8gdGhlIGBwaHlfc2V0X3BhcmFtYCBGdW5jdGlvbiBDYWxsKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgc29tZXRoaW5nIHdpdGhpbiBgcnR3ODgyMmNfb3BzYC4gUmlnaHQsIHRoYXQncyBwYXJ0IG9mIHRoZSBicm9hZGVyIGBzdHJ1Y3QgcnR3X2NoaXBfb3BzYCBzdHJ1Y3R1cmUuIFRoaXMgbWVhbnMgaXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCBvZiB0aGUgZHJpdmVyJ3MgaW50ZXJmYWNlLiBOb3csIEkgc2VlIHRoYXQgYHBoeV9zZXRfcGFyYW1gIGlzIGJlaW5nIGludm9rZWQg4oCTIGFuZCB0aGUgY29yZSBkcml2ZXIgaXMgdGhlIG9uZSBjYWxsaW5nIGl0LiBUaGF04oCZcyBhIGtleSBkZXRhaWwhIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZS4gTXkgbmV4dCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbihzKSB3aGVyZSBgcGh5X3NldF9wYXJhbWAgaXMgY2FsbGVkIHdpdGhpbiB0aGUgZHJpdmVyJ3MgY29yZSBsb2dpYy4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIHByb3ZpZGUgdmFsdWFibGUgY29udGV4dCBhcm91bmQgd2hhdCBwYXJhbWV0ZXJzIGFyZSBiZWluZyBzZXQgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcywgYW5kIHdpbGwgaW5mb3JtIG15IGRpYWdub3Npcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODY1NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjU4LjU3MDg4MzExM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIxMDEzNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X3NldF9wYXJhbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xMzc0PWludCBydHdfcG93ZXJfb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTQxMzpcXHRjaGlwLVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9zZXRfcGFyYW0ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmg9ODYyPXN0cnVjdCBydHdfY2hpcF9vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmgtODY5LVxcdGludCAoKnJlYWRfZWZ1c2UpKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4ICptYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjg3MDpcXHR2b2lkICgqcGh5X3NldF9wYXJhbSkoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmgtODcxLVxcdHZvaWQgKCpzZXRfY2hhbm5lbCkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggY2hhbm5lbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYz01NTM9c3RhdGljIHZvaWQgcnR3ODcwM2JfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTU3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6NTc4OnN0YXRpYyB2b2lkIHJ0dzg3MDNiX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtNTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYz0xODM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg3MDNiX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xODQzLVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4NzAzYl9yZWFkX2VmdXNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYzoxODQ0OlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4NzAzYl9waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xODQ1LVxcdC5zZXRfY2hhbm5lbFxcdFxcdD0gcnR3ODcwM2Jfc2V0X2NoYW5uZWwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9Njc9c3RhdGljIHZvaWQgcnR3ODcyM2RfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzo4NTpzdGF0aWMgdm9pZCBydHc4NzIzZF9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYz0xMzkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg3MjNkX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xMzk0LVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jOjEzOTU6XFx0LnBoeV9zZXRfcGFyYW1cXHRcXHQ9IHJ0dzg3MjNkX3BoeV9zZXRfcGFyYW0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTEzOTYtXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg3MjN4X3JlYWRfZWZ1c2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM9OTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MTJhX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYy05MTYtXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3ODgxMmFfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYzo5MTc6XFx0LnBoeV9zZXRfcGFyYW1cXHRcXHQ9IE5VTEwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkxOC1cXHQucmVhZF9lZnVzZVxcdFxcdD0gcnR3ODh4eGFfcmVhZF9lZnVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYz0yNjU9c3RhdGljIHZvaWQgcnR3ODgxNGFfY29uZmlnX2Nja19yeF9hbnRlbm5hX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jOjI4MzpzdGF0aWMgdm9pZCBydHc4ODE0YV9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTI4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MjA1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODE0YV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMjA1Mi1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyMDUzOlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4ODE0YV9waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDU0LVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4ODE0YV9yZWFkX2VmdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jPTg2MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIxYV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtODYyLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0dzg4MjFhX3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmM6ODYzOlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NjQtXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg4eHhhX3JlYWRfZWZ1c2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM9MTUxPXN0YXRpYyB2b2lkIHJ0dzg4MjFjX3BoeV9iZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYzoxNTg6c3RhdGljIHZvaWQgcnR3ODgyMWNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jPTE2NTg9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE2NjAtXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3X3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTY2MTpcXHQucGh5X3NldF9wYXJhbVxcdFxcdD0gcnR3ODgyMWNfcGh5X3NldF9wYXJhbSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY2Mi1cXHQucmVhZF9lZnVzZVxcdFxcdD0gcnR3ODgyMWNfcmVhZF9lZnVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYz0xNDU9c3RhdGljIHZvaWQgcnR3ODgyMmJfcGh5X2JmX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0xNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jOjE1MjpzdGF0aWMgdm9pZCBydHc4ODIyYl9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTE1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MjE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE1Mi1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYzoyMTUzOlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4ODIyYl9waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0yMTU0LVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4ODIyYl9yZWFkX2VmdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3ODc9c3RhdGljIHZvaWQgcnR3ODgyMmNfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4MDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4MDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTAxLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MDI6XFx0LnBoeV9zZXRfcGFyYW1cXHRcXHQ9IHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDMtXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg4MjJjX3JlYWRfZWZ1c2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjU4LjYyMjk4ODQ1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDAwODQzMjkzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBSZWFsdGVrIHdpcmVsZXNzIGRldmljZSBjb21lcyB0byBsaWZlLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBydHdfcG93ZXJfb25gLCB0aGF0IHNlZW1zIGxpa2UgdGhlIG9idmlvdXMgZW50cnkgcG9pbnQsIHJpZ2h0PyBCdXQgdGhlbiBJIHNhdyB0aGF0IGBydHc4ODIyY19yZl9kYWNfY2FsYCBpcyBhbHNvIGNhbGxlZCBieSBgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlYC4gVGhhdCBmZWVscyBpbnRlcm5hbCB0aG91Z2gsIHNvIEkgZGlzbWlzc2VkIGl0LlxuXG5TbywgdGhlIHRyYWNlIGxvb2tzIGxpa2UgYHJ0d19wb3dlcl9vbmAgLVx1MDAzZSBgcGh5X3NldF9wYXJhbWAgLVx1MDAzZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgLVx1MDAzZSBgcnR3ODgyMmNfcmZfaW5pdGAgLVx1MDAzZSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuXG5cbk5vdywgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FudHMgbWUgdG8gYXZvaWQgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4gTXkgZmlyc3QgdGhvdWdodCB3YXMgd2hldGhlciBgcnR3X3Bvd2VyX29uYCB3b3VsZCBiZSBzdWl0YWJsZSwgYnV0IGl04oCZcyBwcm9iYWJseSB0b28gZ2VuZXJpYywgc28gSSBzaG91bGQgZGlnIGRlZXBlci5cblxuVGhlIHByb21wdCB3YW50cyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIE9rYXksIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBpcyBhIHBvc3NpYmlsaXR5LiBCdXQgdGhhdCdzIHN0YXRpYyEgV2FpdCwgaXQncyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYHJ0dzg4MjJjX29wc2AuICpBaCosIHRoYXQncyB0aGUga2V5LiBGdW5jdGlvbiBwb2ludGVycyBhdm9pZCBpbmxpbmluZyBiZWNhdXNlIHRoZSBjb21waWxlciBuZWVkcyB0byBiZSBhYmxlIHRvIHJlc29sdmUgYW4gYWRkcmVzcy4gVGhhdCdzIGdvb2Q7IGl0IG1lYW5zIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBoYXMgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyBldmVuIHRob3VnaCBpdCdzIHN0YXRpYy5cblxuQnV0LCB0aGUgcHJvbXB0IHdhbnRzIHRvIGF2b2lkIHN0YXRpYyBmdW5jdGlvbnMsIHNvIEkgc2hvdWxkIGxvb2sgaW50byB0aGlzIGZ1cnRoZXIuIEknbGwgY2hlY2sgaXRzIGRlZmluaXRpb24gdG8gY29uZmlybSBpdCdzIHN0YXRpYy4gWWVzLCBpdCBpcyBzdGF0aWMuXG5cbkJ1dCwgdGhlIHByb21wdCBhbHNvIHNheXMgaXQgcHJlZmVycyBub24tc3RhdGljIGVudHJ5IHBvaW50cywgc28gd2hhdCBhYm91dCBgcnR3X3Bvd2VyX29uYD8gVGhhdCdzIG5vdCBzdGF0aWMuIEknbGwgY2hlY2sgYHJ0d19wb3dlcl9vbmAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCB0byBzZWUgaWYgaXQncyB0aGUgcmlnaHQgY2hvaWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTg5MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNTowOC42MzE0MjM4MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQxNDYzMjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0d19wb3dlcl9vblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xMzU0PXN0YXRpYyBlbnVtIHJ0d19scHNfZGVlcF9tb2RlIHJ0d191cGRhdGVfbHBzX2RlZXBfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTM3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxMzc0OmludCBydHdfcG93ZXJfb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NDItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE0NDM6RVhQT1JUX1NZTUJPTChydHdfcG93ZXJfb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaD0yMjcxPWludCBydHdfd2FpdF9maXJtd2FyZV9jb21wbGV0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjIyNzI6aW50IHJ0d19wb3dlcl9vbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC0yMjczLXZvaWQgcnR3X2NvcmVfZndfc2Nhbl9ub3RpZnkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBzdGFydCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjE4Mzc6XFx0LnBvd2VyX29uXFx0XFx0PSBydHdfcG93ZXJfb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE4MzgtXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3X3Bvd2VyX29mZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYz0xMzkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg3MjNkX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM6MTM5MzpcXHQucG93ZXJfb25cXHRcXHQ9IHJ0d19wb3dlcl9vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtMTM5NC1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jPTIwNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgxNGFfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyMDUxOlxcdC5wb3dlcl9vblxcdFxcdD0gcnR3X3Bvd2VyX29uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDUyLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIxY19vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jOjE2NTk6XFx0LnBvd2VyX29uXFx0XFx0PSBydHdfcG93ZXJfb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE2NjAtXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3X3Bvd2VyX29mZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYz0yMTUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJiX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE1MTpcXHQucG93ZXJfb25cXHRcXHQ9IHJ0d19wb3dlcl9vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE1Mi1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQ4OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAwOlxcdC5wb3dlcl9vblxcdFxcdD0gcnR3X3Bvd2VyX29uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTAxLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjA5LjE3Mjg5MjY3NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDUyNTc4MDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgcnR3X3Bvd2VyX29uIENhbGwgQ2hhaW4qKlxuXG5Pa2F5LCBzbyBgcnR3X3Bvd2VyX29uYCBpcyBleHBvcnRlZCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gQnV0LCBoYW5nIG9uIGEgc2Vjb25kLCBteSBpbnR1aXRpb24ga2lja3MgaW4sIGl0J3MgY2FsbGVkIGJ5IG1hYzgwMjExIHdoZW4gdGhlIGludGVyZmFjZSBjb21lcyB1cC4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUgY2FsbCBjaGFpbj8gTGV0J3MgdHJhY2UgaXQgYW5kIHNlZS5cblxuVGhlIHBhdGNoIGZvY3VzZXMgb24gbW9kaWZ5aW5nIHNldmVyYWwgZnVuY3Rpb25zOiBgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzJgLCBgcnR3ODgyMmNfZGFjX2lxX3NvcnRgLCBgcnR3ODgyMmNfZGFjX2lxX29mZnNldGAsIGBydHc4ODIyY19kYWNfaXFfY2hlY2tgLCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgLCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIEltbWVkaWF0ZWx5IEkgcmVjb2duaXplIHRoYXQgdGhleSBhbGwgcmVsYXRlIHRvIERBQyBjYWxpYnJhdGlvbiwgYXMgZXhwZWN0ZWQuIFRoZXkgYXJlIGFsbCBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuIEV4Y2VsbGVudCwgdGhhdCdzIG91ciBuZXh0IGxpbmsuXG5cbk5vdywgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGlzIHRyaWdnZXJlZCBieSBgcnR3ODgyMmNfcmZfaW5pdGAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIGBydHc4ODIyY19yZl9pbml0YCBpcyBjYWxsZWQgYnkgYm90aCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19kb19nYXBrYC4gQWhhIVxuXG5CdXQgd2hhdCBhYm91dCBgcnR3ODgyMmNfZG9fZ2Fwa2A/IGlzIGl0IGNhbGxlZCBieSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAsIHRoYXQncyBhbiBpbnRlcmVzdGluZyBxdWVzdGlvbi4gTGV0J3MgbWFrZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA1NCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNToxNS42MjU0NzMwMTlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDQ4ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg4MjJjX2RvX2dhcGtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3MjM9c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2NTpzdGF0aWMgdm9pZCBydHc4ODIyY19kb19nYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQxMTk9c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDEyMS1cXHRydHc4ODIyY19yZmtfcG93ZXJfc2F2ZShydHdkZXYsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDEyMjpcXHRydHc4ODIyY19kb19nYXBrKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMjMtXFx0cnR3ODgyMmNfZG9faXFrKHJ0d2Rldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjE1LjY3OTUyOTY1OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODExNDM3MzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUEhZIENhbGlicmF0aW9uIFJvdXRpbmUqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYCBpcyBtZW50aW9uZWQgaW4gdGhlIGNvZGUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogd2hlcmUgaXMgaXQgYmVpbmcgKmNhbGxlZCogZnJvbT8gSSBzdXNwZWN0IGl0J3MgbGlrZWx5IGNhbGxlZCB3aXRoaW4gdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlLCBnaXZlbiB0aGUgbmFtZS4gVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggYW5kIHZlcmlmeSB0aGUgcmVsYXRpb25zaGlwLiBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlc2UgdHdvIGZ1bmN0aW9ucyBhbmQgc2VlIGlmIG15IGh1bmNoIGlzIGNvcnJlY3QuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCB0cmlnZ2VyaW5nIG1lY2hhbmlzbSBmb3IgdGhpcyBjYWxpYnJhdGlvbjsgaXMgaXQgYmFzZWQgb24gcGFyYW1ldGVyIGNoYW5nZXMsIHBvd2VyLXVwIHNlcXVlbmNlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBxdWljayBjaGVjayBzaG91bGQgY29uZmlybSBteSBpbml0aWFsIGFzc3VtcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTg1LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjU6MTkuNDkwOTY5NzQ5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjAwMTkzNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00MDc3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RvX2RwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxMTk6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQ4OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MTYtXFx0LmRwa190cmFja1xcdFxcdD0gcnR3ODgyMmNfZHBrX3RyYWNrLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTE3OlxcdC5waHlfY2FsaWJyYXRpb25cXHQ9IHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkxOC1cXHQuY2NrX3BkX3NldFxcdFxcdD0gcnR3ODgyMmNfcGh5X2Nja19wZF9zZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjIwLjE1MDk5NjQzMloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI3OTkxMTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIENhbGlicmF0aW9uIFJvdXRpbmUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBjbHVlIHBvaW50cyB0byBgcnR3ODgyMmNfb3BzYCwgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dCBvZiB0aGUgYHBoeV9jYWxpYnJhdGlvbmAgY2FsbC4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIHRyYWNlIGl0LiBXaGVyZSBleGFjdGx5IGlzIHRoaXMgY2FsaWJyYXRpb24gZnVuY3Rpb24gaW52b2tlZD8gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYWxsIHRoZSBwb2ludHMgaW4gdGhlIGNvZGUgd2hlcmUgYHBoeV9jYWxpYnJhdGlvbmAgaXMgY2FsbGVkIHdpdGhpbiB0aGF0IG1vZHVsZSwgb3IgcG90ZW50aWFsbHkgZXZlbiBmdXJ0aGVyIGFmaWVsZCBpZiBpdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGFyZWFzIG9mIGltcGFjdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBmdW5jdGlvbnMsIHdoYXQgdHJpZ2dlcnMgaXQsIGFuZCB3aGF0IGRhdGEgaXQgdXRpbGl6ZXMgdG8gYWNoaWV2ZSBpdHMgZ29hbC4gTGV0J3Mgc3RhcnQgdGhlIHNlYXJjaC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgyOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjIzLjk3ODk5MDUwNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyOTQxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2NhbGlicmF0aW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFjODAyMTEuYz00NjI9c3RhdGljIGludCBydHdfb3BzX3N0YXJ0X2FwKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWM4MDIxMS5jLTQ3Mi1cXHRydHdfc3RvcmVfb3BfY2hhbihydHdkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFjODAyMTEuYzo0NzM6XFx0Y2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VwaHlfY2FsaWJyYXRpb24ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21hYzgwMjExLmMtNDc0LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cnR3ZGV2LVxcdTAwM2VtdXRleCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz05MTU9dm9pZCBydHdfY2hpcF9wcmVwYXJlX3R4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy05MjAtXFx0XFx0cnR3ZGV2LVxcdTAwM2VuZWVkX3JmayA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjkyMTpcXHRcXHRjaGlwLVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9jYWxpYnJhdGlvbihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkyMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaD04NjI9c3RydWN0IHJ0d19jaGlwX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC04ODgtXFx0dm9pZCAoKmZhbHNlX2FsYXJtX3N0YXRpc3RpY3MpKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjg4OTpcXHR2b2lkICgqcGh5X2NhbGlicmF0aW9uKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC04OTAtXFx0dm9pZCAoKmRwa190cmFjaykoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTI3NT12b2lkIHJ0dzg3MDNiX2lxa19maWxsX2FfbWF0cml4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGNvbnN0IHMzMiByZXN1bHRbXSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xMzIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYzoxMzIxOnN0YXRpYyB2b2lkIHJ0dzg3MDNiX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYz0xNTg3PXN0YXRpYyB2b2lkIHJ0dzg3MDNiX3BoeV9wd3J0cmFjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE2MzQtXFx0aWYgKGRvX2lxaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTYzNTpcXHRcXHRydHc4NzAzYl9waHlfY2FsaWJyYXRpb24ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTYzNi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTg1NC1cXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1xcdD0gcnR3ODcyM3hfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTg1NTpcXHQucGh5X2NhbGlicmF0aW9uXFx0PSBydHc4NzAzYl9waHlfY2FsaWJyYXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE4NTYtXFx0LmRwa190cmFja1xcdFxcdD0gTlVMTCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYz04MjQ9dm9pZCBydHc4NzIzZF9pcWtfb25lX3JvdW5kKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiByZXN1bHRbXVtJUUtfTlJdLCB1OCB0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTkyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM6OTI1OnN0YXRpYyB2b2lkIHJ0dzg3MjNkX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy05MjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jPTEzMjI9c3RhdGljIHZvaWQgcnR3ODcyM2RfcGh5X3B3cnRyYWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtMTM2OS1cXHRpZiAoZG9faXFrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxMzcwOlxcdFxcdHJ0dzg3MjNkX3BoeV9jYWxpYnJhdGlvbihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xMzcxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYz0xMzkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg3MjNkX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xNDA5LVxcdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXFx0PSBydHc4NzIzeF9mYWxzZV9hbGFybV9zdGF0aXN0aWNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxNDEwOlxcdC5waHlfY2FsaWJyYXRpb25cXHQ9IHJ0dzg3MjNkX3BoeV9jYWxpYnJhdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtMTQxMS1cXHQuY2NrX3BkX3NldFxcdFxcdD0gcnR3ODcyM2RfcGh5X2Nja19wZF9zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM9Nzg4PXN0YXRpYyB2b2lkIHJ0dzg4MTJhX2RvX2lxayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTgzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6ODQwOnN0YXRpYyB2b2lkIHJ0dzg4MTJhX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYy04NDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODEyYV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmMtOTMwLVxcdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXFx0PSBydHc4OHh4YV9mYWxzZV9hbGFybV9zdGF0aXN0aWNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYzo5MzE6XFx0LnBoeV9jYWxpYnJhdGlvblxcdD0gcnR3ODgxMmFfcGh5X2NhbGlicmF0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYy05MzItXFx0LmNja19wZF9zZXRcXHRcXHQ9IHJ0dzg4eHhhX3BoeV9jY2tfcGRfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jPTE3Njc9c3RhdGljIHZvaWQgcnR3ODgxNGFfZG9faXFrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMTc5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MTc5MjpzdGF0aWMgdm9pZCBydHc4ODE0YV9waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMTc5My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MjA1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODE0YV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMjA2Ni1cXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1xcdD0gcnR3ODgxNGFfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MjA2NzpcXHQucGh5X2NhbGlicmF0aW9uXFx0PSBydHc4ODE0YV9waHlfY2FsaWJyYXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTIwNjgtXFx0LmNja19wZF9zZXRcXHRcXHQ9IHJ0dzg4MTRhX3BoeV9jY2tfcGRfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jPTY1NT1zdGF0aWMgdm9pZCBydHc4ODIxYV9kb19pcWsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy02ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jOjY4OTpzdGF0aWMgdm9pZCBydHc4ODIxYV9waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtNjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYz04NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jLTg3Ni1cXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1xcdD0gcnR3ODh4eGFfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmM6ODc3OlxcdC5waHlfY2FsaWJyYXRpb25cXHQ9IHJ0dzg4MjFhX3BoeV9jYWxpYnJhdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtODc4LVxcdC5jY2tfcGRfc2V0XFx0XFx0PSBydHc4OHh4YV9waHlfY2NrX3BkX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYz03NzQ9c3RhdGljIHZvaWQgcnR3ODgyMWNfZG9faXFrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtODAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYzo4MDI6c3RhdGljIHZvaWQgcnR3ODgyMWNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTgwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIxY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY3My1cXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1xcdD0gcnR3ODgyMWNfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTY3NDpcXHQucGh5X2NhbGlicmF0aW9uXFx0PSBydHc4ODIxY19waHlfY2FsaWJyYXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE2NzUtXFx0LmNja19wZF9zZXRcXHRcXHQ9IHJ0dzg4MjFjX3BoeV9jY2tfcGRfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jPTEwNzE9c3RhdGljIHZvaWQgcnR3ODgyMmJfZG9faXFrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMTA5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MTA5NjpzdGF0aWMgdm9pZCBydHc4ODIyYl9waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMTA5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MjE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE2NS1cXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1xcdD0gcnR3ODgyMmJfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE2NjpcXHQucGh5X2NhbGlicmF0aW9uXFx0PSBydHc4ODIyYl9waHlfY2FsaWJyYXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTIxNjctXFx0LnB3cl90cmFja1xcdFxcdD0gcnR3ODgyMmJfcHdyX3RyYWNrLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQwNzc9c3RhdGljIHZvaWQgcnR3ODgyMmNfZG9fZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDExOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDExOTpzdGF0aWMgdm9pZCBydHc4ODIyY19waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDEyMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkxNi1cXHQuZHBrX3RyYWNrXFx0XFx0PSBydHc4ODIyY19kcGtfdHJhY2ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MTc6XFx0LnBoeV9jYWxpYnJhdGlvblxcdD0gcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTE4LVxcdC5jY2tfcGRfc2V0XFx0XFx0PSBydHc4ODIyY19waHlfY2NrX3BkX3NldCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjU6MjQuMDI1MjkyMzU0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMzk1MjkzMTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBSZWFsdGVrIERyaXZlciBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgaGVyZSwgdHJ5aW5nIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgZm9yIHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgbW9kaWZpZWQgY29kZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBgcnR3X2NoaXBfcHJlcGFyZV90eGAsIHNpbmNlIHRoYXQgY2FsbHMgYHBoeV9jYWxpYnJhdGlvbmAsIGFuZCBhbHNvIGBydHdfb3BzX3N0YXJ0X2FwYCB3aGljaCAqYWxzbyogY2FsbHMgYHBoeV9jYWxpYnJhdGlvbmAuIEJ1dCB3YWl0LCBgcnR3X2NoaXBfcHJlcGFyZV90eGAgaXMgcGFydCBvZiB0aGUgTUFDODAyMTEgcGFja2V0IHRyYW5zbWlzc2lvbiBwcm9jZXNzLCBzbyB0aGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlICpiZXN0KiBlbnRyeSBwb2ludC4gSSdtIGdvaW5nIHRvIGxvb2sgZGVlcGVyLlxuXG5gcnR3X3Bvd2VyX29uYCBsb29rcyBwcm9taXNpbmcgYXMgYW4gaW5pdGlhbCBlbnRyeSBwb2ludC4gTGV0IG1lIGNvbmZpcm0gaWYgaXQncyBleHBvcnRlZCBhbmQsIHllcCwgaXQgaXMuIEJ1dCwgSSBuZWVkIHRvIGdldCAqZGVlcGVyKiBpbnRvIHRoZSBjb2RlIHRvIHRoZSBhY3R1YWwgZnVuY3Rpb25zIG9mIGludGVyZXN0LlxuXG5MZXQncyBsb29rIG1vcmUgY2xvc2VseSBhdCBgcGh5X2NhbGlicmF0aW9uYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuIEkgcmVjYWxsIHRoYXQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAgYW5kIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhcmUgYm90aCBzdGF0aWMsIGJ1dCB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyBmb3IgYHBoeV9jYWxpYnJhdGlvbmAgYW5kIGBwaHlfc2V0X3BhcmFtYCByZXNwZWN0aXZlbHkuIE5vdywgdGhpcyBpcyBpbXBvcnRhbnQuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCwgc2luY2UgdGhlc2UgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGV5IHdvbid0IGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgdGhlcmVmb3JlLCB0aGV5IGFyZSBkaXN0aW5jdCBzeW1ib2xzLiBTbywgYXMgdGhlIHByb21wdCBkaXJlY3RzLCBJIGNhbiBjb25zaWRlciB0aGVtIHZhbGlkIGVudHJ5IHBvaW50cy4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdCEgQmFzZWQgb24gdGhlIHByb21wdCBJIGNhbiBsaXN0IGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGFuZCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAuXG5cbkJ1dCBJIHJlbWVtYmVyIHRoZSBtb2RpZmllZCBjb2RlIGlzIGluIGBydHc4ODIyY19yZl9kYWNfY2FsYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHJ0dzg4MjJjX3JmX2luaXRgLiBMZXQgbWUgdHJhY2UgdGhlIGNhbGxzLiBPa2F5LCBgcnR3ODgyMmNfcmZfaW5pdGAgaXMgY2FsbGVkIGJ5IGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX2RvX2dhcGtgLiBBbmQgYHJ0dzg4MjJjX2RvX2dhcGtgIGlzIGNhbGxlZCBieSBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYC4gQmluZ28hIFRoaXMgY29uZmlybXMgdGhhdCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGFyZSB0aGUgKmV4YWN0KiBlbnRyeSBwb2ludHMgZm9yIHRoZSBwYXJ0IG9mIHRoZSBjb2RlIEknbSBpbnRlcmVzdGVkIGluIVxuXG5Ob3cgSSBuZWVkIHRvIGVuc3VyZSB0aGV5IHdvbid0IGJlIGlubGluZWQuIExldCdzIGRvdWJsZS1jaGVjayB0aGUgc3RhdGljIG5hdHVyZSBvZiBgcnR3ODgyMmNfcmZfaW5pdGAgYW5kIGBydHc4ODIyY19yZl9kYWNfY2FsYC4gWWVwLCB0aGV5J3JlIGJvdGggc3RhdGljLiBBbmQgdGhleSBhcmUgb25seSBjYWxsZWQgaW4gYSBjb3VwbGUgb2YgcGxhY2VzLiBUaGlzICptaWdodCogbWVhbiB0aGUgY29tcGlsZXIgaXMgZnJlZSB0byBpbmxpbmUgdGhlbS4gQnV0LCBzaW5jZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGFyZSBmdW5jdGlvbiBwb2ludGVycywgSSB0aGluayBpdCdzIHNhZmVzdCB0byBmb2N1cyBvbiB0aGVzZS5cblxuTm93LCBsZXQncyB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24uIEkgcmVjYWxsIGZyb20gdGhlIGNvbmZpZyBmaWxlIHRoYXQgYFJUVzg4Xzg4MjJDVWAgaXMgbmVlZGVkIHRvIGVuYWJsZSB0aGUgVVNCIGRyaXZlci4gV2FpdCwgd2FpdCwgYFJUVzg4Xzg4MjJDYCBpcyB0aGUgY29uZmlnIHRoYXQgYWN0dWFsbHkgY29tcGlsZXMgYHJ0dzg4MjJjLmNgLCB3aGljaCBpcyB0aGUgZmlsZSB3aXRoIHRoZSBjb2RlIEknbSBsb29raW5nIGF0LiBIbW0sIGl0J3MgYSBoaWRkZW4gY29uZmlnLCBzZWxlY3RlZCBieSBgUlRXODhfODgyMkNFYCwgYFJUVzg4Xzg4MjJDU2AsIGFuZCBgUlRXODhfODgyMkNVYC4gUmlnaHQsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5OTczLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjM1LjQyMDU4Nzc1OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI2NDI3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUVzg4Xzg4MjJDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc9MjY9Y29uZmlnIFJUVzg4Xzg4MjJCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI5OmNvbmZpZyBSVFc4OF84ODIyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTgyPWNvbmZpZyBSVFc4OF84ODIyQlVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6OTM6Y29uZmlnIFJUVzg4Xzg4MjJDRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEwNDpjb25maWcgUlRXODhfODgyMkNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwNS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg4Xzg4MjJDVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjM1LjQ3MzIzOTE1OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjA0MjE0MDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlRXODggV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgUlRXODhfODgyMkNgIGlzIGEgdHJpc3RhdGUgc2V0dGluZywgYW5kIGltcG9ydGFudGx5LCBpdCBkb2Vzbid0IGhhdmUgYSBwcm9tcHQuIFRoYXQgbWVhbnMgd2UgbmVlZCB0byBlbnN1cmUgdGhlIFVTQiB2YXJpYW50LCBgUlRXODhfODgyMkNVYCwgaXMgY29tcGlsZWQgaW4gb3JkZXIgdG8gdGVzdCBpdCBlZmZlY3RpdmVseSB0aHJvdWdoIFVTQi4gV2FpdCBhIG1pbnV0ZeKApiBgUlRXODhfODgyMkNVYCBpcyAqZGVwZW5kZW50KiBvbiBgVVNCYC4gVGhhdOKAmXMgZ29vZCwgYnV0IGl0IG1ha2VzIG1lIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHVuZGVybHlpbmcgcmVxdWlyZW1lbnRzLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2guIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGFuZCBleGFtaW5lIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGJyb2FkZXIgYFJUVzg4YCBjb25maWd1cmF0aW9uIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSd2ZSBjb3ZlcmVkIGFsbCB0aGUgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDU4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjU6NDAuNjc3NDU1NTg1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjczOTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlRXODhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTExPWlmIFJUVzg4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMzpjb25maWcgUlRXODhfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNzpjb25maWcgUlRXODhfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMDpjb25maWcgUlRXODhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM6Y29uZmlnIFJUVzg4X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjY6Y29uZmlnIFJUVzg4Xzg4MjJCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOTpjb25maWcgUlRXODhfODgyMkNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzAtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OF84NzIzWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MzU6Y29uZmlnIFJUVzg4Xzg3MDNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM2LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM5OmNvbmZpZyBSVFc4OF84NzIzRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0Mzpjb25maWcgUlRXODhfODgyMUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDQtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ2OmNvbmZpZyBSVFc4OF84OFhYQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDk6Y29uZmlnIFJUVzg4Xzg4MjFBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjUzOmNvbmZpZyBSVFc4OF84ODEyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo1Nzpjb25maWcgUlRXODhfODgxNEFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjYwOmNvbmZpZyBSVFc4OF84ODIyQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjcxOmNvbmZpZyBSVFc4OF84ODIyQlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzItXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo4Mjpjb25maWcgUlRXODhfODgyMkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJCVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo5Mzpjb25maWcgUlRXODhfODgyMkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTA0OmNvbmZpZyBSVFc4OF84ODIyQ1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTA1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEyNjpjb25maWcgUlRXODhfODcyM0RFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEyNy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEzNzpjb25maWcgUlRXODhfODcyM0RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEzOC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzRFMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNDg6Y29uZmlnIFJUVzg4Xzg3MjNDU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0NTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTYyOmNvbmZpZyBSVFc4OF84NzIzRFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg3MjNEVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTczOmNvbmZpZyBSVFc4OF84ODIxQ0VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTc0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjFDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTg0OmNvbmZpZyBSVFc4OF84ODIxQ1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTg1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjFDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE5NTpjb25maWcgUlRXODhfODgyMUNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE5Ni1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIwNjpjb25maWcgUlRXODhfODgyMUFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIwNy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQVUvODgxMUFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMTc6Y29uZmlnIFJUVzg4Xzg4MTJBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMjg6Y29uZmlnIFJUVzg4Xzg4MTRBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxNEFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMzk6Y29uZmlnIFJUVzg4Xzg4MTRBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNDAtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxNEFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTA6Y29uZmlnIFJUVzg4X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1MS1cXHRib29sIFxcXCJSZWFsdGVrIHJ0dzg4IGRlYnVnIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTg6Y29uZmlnIFJUVzg4X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjU5LVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODggZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjY2OmNvbmZpZyBSVFc4OF9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2Ny1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjQwLjcyNDIwMDY3NVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDExMzg3ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2lyZWxlc3MgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gd2UncmUgd29ya2luZyB3aXRoIGhlcmUgc2VlbXMgdG8gYmUgYFJUVzg4YC4gUmlnaHQsIHNvIHRoYXQgbWVhbnMgd2UnbGwgZGVmaW5pdGVseSBuZWVkIHRvIGluY2x1ZGUgYFJUVzg4YCwgYW5kIGFsc28sIGZyb20gd2hhdCBJJ20gc2VlaW5nLCBgUlRXODhfODgyMkNVYC4gTm8gc3VycHJpc2VzIHRoZXJlLiBIb2xkIG9uLi4uIEknbSBqdXN0IHJlY2FsbGluZyBzb21ldGhpbmc7IGBSVFc4OGAgcmVsaWVzIG9uIGBNQUM4MDIxMWAuIFRoYXQncyBhbiBpbXBvcnRhbnQgZGVwZW5kZW5jeSB0byBrZWVwIGluIG1pbmQ7IGdvdHRhIG1ha2Ugc3VyZSB0aGF0J3MgaGFuZGxlZCBjb3JyZWN0bHkgaW4gdGhpcyBzZXR1cC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayBgUlRXODhgJ3MgZGVwZW5kZW5jaWVzIGFnYWluIHRvIGJlIGNlcnRhaW4gZXZlcnl0aGluZydzIGluIG9yZGVyLCBqdXN0IHRvIGNyb3NzLXJlZmVyZW5jZSBhbmQgY29uZmlybSBpdCBhbGwgaml2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDcyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjU6NDQuNzM1NTkxNjY2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudWNvbmZpZyBSVFc4OFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBtYWM4MDIxMS1iYXNlZCB3aXJlbGVzcyBkcml2ZXJzIHRoYXRcXG4gICA3OlxcdFxcdCAgZW5hYmxlcyBSZWFsdGVrIElFRUUgODAyLjExYWMgd2lyZWxlc3MgY2hpcHNldHMuXFxuICAgODpcXHRcXG4gICA5OlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHJ0dzg4LlxcbiAgMTA6XFx0XFxuICAxMTpcXHRpZiBSVFc4OFxcbiAgMTI6XFx0XFxuICAxMzpcXHRjb25maWcgUlRXODhfQ09SRVxcbiAgMTQ6XFx0XFx0dHJpc3RhdGVcXG4gIDE1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgUlRXODhfUENJXFxuICAxODpcXHRcXHR0cmlzdGF0ZVxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgUlRXODhfU0RJT1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNTo0NC43MzU2NjE5MzZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc5ODA5MjI0MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFJlYWx0ZWsgcnR3ODgyMmMgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nKipcblxuT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGFwcHJvYWNoIGZvciBmdXp6aW5nIHRoaXMgUmVhbHRlayBkcml2ZXIgcGF0Y2guXG5cbkZpcnN0LCBJIHNlZSB0aGF0IHRoaXMgbW9kaWZpY2F0aW9uIHRhcmdldHMgdGhlIERBQyBJUSBjYWxpYnJhdGlvbiBwcm9jZXNzIHdpdGhpbiB0aGUgYHJ0dzg4MjJjYCBjaGlwLiBUaGlzIGNhbGlicmF0aW9uIGlzIHBlcmZvcm1lZCBkdXJpbmcgUEhZIHBhcmFtZXRlciBzZXR0aW5nIGFuZCBjYWxpYnJhdGlvbi4gRnJvbSBhIGNvbmZpZ3VyYXRpb24gc3RhbmRwb2ludCwgYE1BQzgwMjExYCBpcyBvYnZpb3VzbHkgcmVxdWlyZWQsIGFzIGlzIGBSVFc4OGAgZm9yIHRoZSBkcml2ZXIgaXRzZWxmLCBhbmQgc3BlY2lmaWNhbGx5IGBSVFc4OF84ODIyQ1VgIHRvIGVuYWJsZSB0aGUgVVNCIHZhcmlhbnQsIHdoaWNoIHdpbGwgYmUgdXNlZnVsIGZvciB2aXJ0dWFsaXplZCBmdXp6aW5nLiBgVVNCYCBpcyBhbHNvIHJlcXVpcmVkLCBidXQgaXQncyBhIHN0YW5kYXJkIGNvbmZpZywgc28gSSdsbCBpbmNsdWRlIGl0LlxuXG5Ob3csIHRoZSBjcnVjaWFsIHBhcnQ6IGlkZW50aWZ5aW5nIHRoZSByZWxldmFudCBzeW1ib2xzLiBUaGUgcHJvbXB0IHN1Z2dlc3RzIHByaW9yaXRpemluZyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIEluaXRpYWxseSwgSSBjb25zaWRlcmVkIGBydHdfcG93ZXJfb25gLCBidXQgdGhhdCdzIHRvbyBicm9hZDsgaXQgbWlnaHQgdHJpZ2dlciBmdW5jdGlvbnMgYWNyb3NzIHZhcmlvdXMgYHJ0dzg4YCBjaGlwcy4gSSB3YW50IHRvIGJlIGFzIHByZWNpc2UgYXMgcG9zc2libGUuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgZnVuY3Rpb25zIGxpa2UgYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYW5kIHNvIG9uLiBTbywgd2hhdCdzIHRoZSBiZXN0IHdheSB0byBoaXQgdGhhdCBjb2RlP1xuXG5JIGxvb2tlZCBhdCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gLiBUaGV5IHNlZW0gaWRlYWwgYmVjYXVzZSB0aGV5IGFyZSBzcGVjaWZpYyB0byB0aGUgYHJ0dzg4MjJjYCBjaGlwLiBJIGNoZWNrZWQgYW5kIHRoZXkgYXJlIGJvdGggYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIHRoZSBgcnR3ODgyMmNfb3BzYCBzdHJ1Y3QuIFRoYXQgbWVhbnMgdGhlIGNvbXBpbGVyICpjYW5ub3QqIGlubGluZSB0aGVtLCBzaW5jZSB0aGVpciBhZGRyZXNzZXMgYXJlIG5lZWRlZC4gVGhleSdyZSBub24tc3RhdGljLCBzbyB0aGUgcHJvbXB0IHJlcXVpcmVtZW50cyBhcmUgc2F0aXNmaWVkLiBBbHRob3VnaCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgKmlzKiBzdGF0aWMsIHRoZSBwcm9tcHQgaXMgc2F0aXNmaWVkIGJlY2F1c2UgaXQgaXMgbm90IGlubGluZWQgYW5kIGl0cyBhZGRyZXNzIGlzIHRha2VuLlxuXG5JIGFsc28gY29uc2lkZXJlZCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAsIGFzIHRoYXQncyB0aGUgZnVuY3Rpb24gdGhhdCAqZGlyZWN0bHkqIGNvbnRhaW5zIHRoZSBtb2RpZmllZCBjb2RlLiBIb3dldmVyLCBpdCdzIGNhbGxlZCBieSBgcnR3ODgyMmNfcmZfaW5pdGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVgLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBJdCdzIGxlc3MgbGlrZWx5LCBidXQgc3RpbGwgYSBwb3NzaWJpbGl0eS4gVG8gYmUgc2FmZSwgSSdsbCBzdGljayB3aXRoIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAuIFRoZXNlIHNob3VsZCBnaXZlIGEgZ29vZCBlbnRyeSBwb2ludCB0byB0cmlnZ2VyIHRoZSBjb2RlLCBhcyB0aGUgcHJvbXB0IHNwZWNpZmllcy5cblxuVG8gc3VtbWFyaXplLCB0aGUgcGF0Y2ggbW9kaWZpZXMgREFDIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIGBydHc4ODIyY2Agd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgc2ltcGxpZnlpbmcgc29ydGluZyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy4gVGhpcyBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbiB1c2luZyB0aGUgYENPTkZJR19SVFc4OF84ODIyQ1VgIG9wdGlvbi4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgYWNjZXNzZWQgZHVyaW5nIFBIWSBwYXJhbWV0ZXIgc2V0dXAgYW5kIGNhbGlicmF0aW9uLCB3aGljaCBpcyB0cmlnZ2VyZWQgdmlhIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAsIHdoaWNoIGFyZSBub24taW5saW5lZCBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHJ0dzg4MjJjX29wc2AuIFRoaXMgaXMgZnVuY3Rpb25hbCBiZWNhdXNlIHRoZSBjdXN0b20gc29ydCBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9uIGlzIHJlcGxhY2VkIGJ5IHN0YW5kYXJkIGBzb3J0YCBhbmQgc2ltcGxpZmllZCBtYXRoLCBmaXhpbmcgcG90ZW50aWFsIGJ1Z3Mgb3Igc2ltcGxpZnlpbmcgY29kZS4gVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXG5cbk15IGNob3NlbiBjb25maWdzIGFyZTpcbiogICBgTUFDODAyMTFgXG4qICAgYFJUVzg4YFxuKiAgIGBSVFc4OF84ODIyQ1VgXG5cbk15IGNob3NlbiBzeW1ib2xzIGFyZTpcbiogICBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWBcbiogICBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYFxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjAwMywiT3V0cHV0VG9rZW5zIjoyMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6MDIuNzE2NTg3MzEyWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY0OTMzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJSVFc4OFwiLFxuICAgIFwiUlRXODhfODgyMkNVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODgyMmNfcGh5X3NldF9wYXJhbVwiLFxuICAgIFwicnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBQyBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4ODIyYyB3aXJlbGVzcyBkcml2ZXIsIHNpbXBsaWZ5aW5nIHNvcnRpbmcgYW5kIG9mZnNldCBjYWxjdWxhdGlvbnMuIFRoaXMgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoZHVtbXkgSENEKSBieSBlbmFibGluZyB0aGUgVVNCIHZhcmlhbnQgb2YgdGhlIGRyaXZlciAoQ09ORklHX1JUVzg4Xzg4MjJDVSkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBQSFkgcGFyYW1ldGVyIHNldHVwIGFuZCBjYWxpYnJhdGlvbiwgd2hpY2ggYXJlIGFjY2Vzc2libGUgdmlhIHRoZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGNhbGxiYWNrcy4gVGhlc2UgY2FsbGJhY2tzIGFyZSBub3QgaW5saW5lZCBhcyB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyBpbiB0aGUgY2hpcCBvcGVyYXRpb25zIHN0cnVjdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiUlRXODhcIixcbiAgICBcIlJUVzg4Xzg4MjJDVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1cIixcbiAgICBcInJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQUMgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIFJlYWx0ZWsgcnR3ODgyMmMgd2lyZWxlc3MgZHJpdmVyLCBzaW1wbGlmeWluZyBzb3J0aW5nIGFuZCBvZmZzZXQgY2FsY3VsYXRpb25zLiBUaGlzIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15IEhDRCkgYnkgZW5hYmxpbmcgdGhlIFVTQiB2YXJpYW50IG9mIHRoZSBkcml2ZXIgKENPTkZJR19SVFc4OF84ODIyQ1UpLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBleGVjdXRlZCBkdXJpbmcgUEhZIHBhcmFtZXRlciBzZXR1cCBhbmQgY2FsaWJyYXRpb24sIHdoaWNoIGFyZSBhY2Nlc3NpYmxlIHZpYSB0aGUgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFuZCBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYCBjYWxsYmFja3MuIFRoZXNlIGNhbGxiYWNrcyBhcmUgbm90IGlubGluZWQgYXMgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgaW4gdGhlIGNoaXAgb3BlcmF0aW9ucyBzdHJ1Y3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI2OjAyLjc5MzA4NzE5MVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg1MTA2NDEyMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNjowMi43OTM1MzQxNTFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODg1MTAxODMzODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIHJ0dzg4IGRyaXZlciBieSByZXBsYWNpbmcgY3VzdG9tIDEwLWJpdCBzaWduLW1hZ25pdHVkZS90d28ncy1jb21wbGVtZW50IGFyaXRobWV0aWMgYW5kIGEgY3VzdG9tIGJ1YmJsZSBzb3J0IHdpdGggc3RhbmRhcmQgYHMzMmAgdHlwZXMsIGBzaWduX2V4dGVuZDMyKClgLCBhbmQgdGhlIGtlcm5lbCdzIGJ1aWx0LWluIGBzb3J0KClgIGZ1bmN0aW9uLiBcXG5cXG5XaGlsZSB0aGUgc3RhY2stYWxsb2NhdGVkIGFycmF5cyBgaXZgIGFuZCBgcXZgIGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaWYgdGhlIHNhbXBsaW5nIGxvb3AgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKClgIHRlcm1pbmF0ZXMgZWFybHkgKGR1ZSB0byB0aGUgYGNudCBcXHUwMDNjIDEwMDAwYCBjb25kaXRpb24pLCB0aGlzIGJlaGF2aW9yIGFuZCB0aGUgc3Vic2VxdWVudCByZWFkcyBvZiB0aGUgZW50aXJlIGFycmF5IHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBvbGQgY29kZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGFyaXRobWV0aWMgYW5kIHNvcnRpbmcgcmVmYWN0b3JpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgdGhpcyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZjQ2NzdjZmJlODY0NmVmYzhiNjcyNDViYWZiYjlhYmI3Y2RjODY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTc6MjQ6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuQEAgLTMsNiArMyw4IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRvcHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFwibWFpbi5oXCJcbiAjaW5jbHVkZSBcImNvZXguaFwiXG4gI2luY2x1ZGUgXCJmdy5oXCJcbkBAIC0xNTMsODQgKzE1NSwzMCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfbWlubWF4X2NtcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUsXG4tXHRcdFx0XHQgICB1MzIgKm1pbiwgdTMyICptYXgpXG4rc3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuIHtcbi1cdGlmICh2YWx1ZSBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdGlmICgqbWluIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1pbiBcdTAwM2UgdmFsdWUpXG4tXHRcdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXHRcdGlmICgqbWF4IFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdGlmICgqbWluIFx1MDAzYyAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fVxuLVxuLVx0XHRpZiAoKm1heCAgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH1cbi19XG4rXHRzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7XG4rXHRzMzIgdmIgPSAqKGNvbnN0IHMzMiAqKWI7XG4gXG4tc3RhdGljIHZvaWQgX19ydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnYxLCB1MzIgKnYyKVxuLXtcbi1cdGlmICgqdjEgXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgKnYyIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0aWYgKCp2MSBcdTAwM2UgKnYyKVxuLVx0XHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fSBlbHNlIGlmICgqdjEgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNjIDB4MjAwKSB7XG4tXHRcdGlmICgqdjEgXHUwMDNlICp2Milcbi1cdFx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH0gZWxzZSBpZiAoKnYxIFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgKnYyIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9XG4rXHRyZXR1cm4gKHZhIFx1MDAzZSB2YikgLSAodmEgXHUwMDNjIHZiKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbitzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuIHtcbi1cdHUzMiBpLCBqO1xuLVxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDE7IGkrKykge1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyAoREFDS19TTl84ODIyQyAtIDEgLSBpKSA7IGorKykge1xuLVx0XHRcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcdTAwMjZpdltqXSwgXHUwMDI2aXZbaiArIDFdKTtcbi1cdFx0XHRfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgXHUwMDI2cXZbal0sIFx1MDAyNnF2W2ogKyAxXSk7XG4tXHRcdH1cbi1cdH1cbitcdHNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG4rXHRzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbClcbitzdGF0aWMgczMyIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICp2ZWMpXG4ge1xuLVx0dTMyIHAsIG0sIHQsIGk7XG4rXHRzMzIgc3VtID0gMDtcbiBcbi1cdG0gPSAwO1xuLVx0cCA9IDA7XG4tXHRmb3IgKGkgPSAxMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspIHtcbi1cdFx0aWYgKHZlY1tpXSBcdTAwM2UgMHgyMDApXG4tXHRcdFx0bSA9ICgweDQwMCAtIHZlY1tpXSkgKyBtO1xuLVx0XHRlbHNlXG4tXHRcdFx0cCA9IHZlY1tpXSArIHA7XG4tXHR9XG4rXHRmb3IgKHUzMiBpID0gMTA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkMgLSAxMDsgaSsrKVxuK1x0XHRzdW0gKz0gdmVjW2ldO1xuIFxuLVx0aWYgKHAgXHUwMDNlIG0pIHtcbi1cdFx0dCA9IHAgLSBtO1xuLVx0XHR0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuLVx0fSBlbHNlIHtcbi1cdFx0dCA9IG0gLSBwO1xuLVx0XHR0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuLVx0XHRpZiAodCAhPSAweDApXG4tXHRcdFx0dCA9IDB4NDAwIC0gdDtcbi1cdH1cbitcdHMzMiBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKTtcbiBcbi1cdCp2YWwgPSB0O1xuK1x0cmV0dXJuIGF2ZyBcdTAwM2U9IDAgPyBhdmcgOiAweDQwMCArIGF2ZztcbiB9XG4gXG4gc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHU4IHBhdGgpXG5AQCAtMjcxLDI5ICsyMTksMjcgQEAgc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIodTggcGF0aClcbiBcdHJldHVybiBiYXNlX2FkZHI7XG4gfVxuIFxuLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpXG4rc3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSlcbiB7XG4tXHRib29sIHJldCA9IHRydWU7XG4gXG4tXHRpZiAoKHZhbHVlIFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2ICgweDQwMCAtIHZhbHVlKSBcdTAwM2UgMHg2NCkgfHxcbi1cdCAgICAodmFsdWUgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiB2YWx1ZSBcdTAwM2UgMHg2NCkpIHtcbi1cdFx0cmV0ID0gZmFsc2U7XG4rXHRpZiAodmFsdWUgXHUwMDNlIDEwMCB8fCB2YWx1ZSBcdTAwM2MgLTEwMCkge1xuIFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFwiW0RBQ0tdIEVycm9yIG92ZXJmbG93XFxuXCIpO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIHRydWU7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXG4rc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbiB7XG4gXHR1MzIgdGVtcDtcbi1cdGludCBpID0gMCwgY250ID0gMDtcbitcdHUzMiBpID0gMCwgY250ID0gMDtcbiBcbiBcdHdoaWxlIChpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIFx1MDAyNlx1MDAyNiBjbnQgXHUwMDNjIDEwMDAwKSB7XG4gXHRcdGNudCsrO1xuIFx0XHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XG4tXHRcdGl2W2ldID0gKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTI7XG4tXHRcdHF2W2ldID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4rXHRcdGl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMiwgOSk7XG4rXHRcdHF2W2ldID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXG4gXHRcdGlmIChydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBpdltpXSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXG5AQCAtMzAyLDEzICsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi1cdFx0XHRcdCAgICAgICB1MzIgKml2LCB1MzIgKnF2LFxuK1x0XHRcdFx0ICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsXG4gXHRcdFx0XHQgICAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4ge1xuLVx0dTMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcbi1cdHUzMiBpX2RlbHRhLCBxX2RlbHRhO1xuK1x0czMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcbiBcdHUzMiB0ZW1wO1xuLVx0aW50IGksIGNudCA9IDA7XG4rXHR1MzIgaSwgY250ID0gMDtcbiBcbiBcdGRvIHtcbiBcdFx0aV9taW4gPSBpdlswXTtcbkBAIC0zMTYsMjMgKzI2MSwxOCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFx0XHRxX21pbiA9IHF2WzBdO1xuIFx0XHRxX21heCA9IHF2WzBdO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDOyBpKyspIHtcbi1cdFx0XHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgaXZbaV0sIFx1MDAyNmlfbWluLCBcdTAwMjZpX21heCk7XG4tXHRcdFx0cnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIHF2W2ldLCBcdTAwMjZxX21pbiwgXHUwMDI2cV9tYXgpO1xuK1x0XHRcdGlmIChpdltpXSBcdTAwM2MgaV9taW4pXG4rXHRcdFx0XHRpX21pbiA9IGl2W2ldO1xuK1x0XHRcdGlmIChpdltpXSBcdTAwM2UgaV9tYXgpXG4rXHRcdFx0XHRpX21heCA9IGl2W2ldO1xuK1x0XHRcdGlmIChxdltpXSBcdTAwM2MgcV9taW4pXG4rXHRcdFx0XHRxX21pbiA9IHF2W2ldO1xuK1x0XHRcdGlmIChxdltpXSBcdTAwM2UgcV9tYXgpXG4rXHRcdFx0XHRxX21heCA9IHF2W2ldO1xuIFx0XHR9XG4gXG4tXHRcdGlmIChpX21heCBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IGlfbWluIFx1MDAzYyAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZSBpZiAoaV9tYXggXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNlPSAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCArICgweDQwMCAtIGlfbWluKTtcbi1cbi1cdFx0aWYgKHFfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgcV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlIGlmIChxX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBxX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4ICsgKDB4NDAwIC0gcV9taW4pO1xuK1x0XHR1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO1xuK1x0XHR1MzIgcV9kZWx0YSA9ICh1MzIpKHFfbWF4IC0gcV9taW4pO1xuIFxuIFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXG4gXHRcdFx0XCJbREFDS10gaTogbWluPTB4JTA4eCwgbWF4PTB4JTA4eCwgZGVsdGE9MHglMDh4XFxuXCIsXG5AQCAtMzQ1LDI0ICsyODUsMjQgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcbiBcdFx0aWYgKGlfZGVsdGEgXHUwMDNlIDUgfHwgcV9kZWx0YSBcdTAwM2UgNSkge1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdlswXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2WzBdID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4rXHRcdFx0aXZbMF0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0XHRxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0XHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0XHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXHUwMDI2IDB4M2ZmLCA5KTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0fSB3aGlsZSAoY250KysgXHUwMDNjIDEwMCk7XG4gXG4tXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYsIGlfdmFsdWUpO1xuLVx0cnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTtcbitcdCppX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTtcbitcdCpxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuIHtcbi1cdHUzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XG4rXHRzMzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xuIFx0dTMyIHJmX2EsIHJmX2I7XG4gXG4gXHRyZl9hID0gcnR3X3JlYWRfcmYocnR3ZGV2LCBSRl9QQVRIX0EsIDB4MCwgUkZSRUdfTUFTSyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNjowMi43OTM1MzQ5MTFaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY1ODY5NzA3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJUVzg4MjJDIERBQyBDYWxpYnJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBSVFc4ODIyQyBEQUMgY2FsaWJyYXRpb24uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgY2hhbmdlcyB0byBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhbmQgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHJ0dzg4MjJjLmNgIGRyaXZlci4gVGhlIHN3aXRjaCBmcm9tIGB1MzJgIHRvIGBzMzJgIGZvciB0aGUgYGl2YCBhbmQgYHF2YCBhcnJheXMgaXMgc3RyYWlnaHRmb3J3YXJkLCBpbmRpY2F0aW5nIGEgc2hpZnQgdG93YXJkcyBzaWduZWQgaW50ZWdlciByZXByZXNlbnRhdGlvbiwgbGlrZWx5IHRvIGFjY29tbW9kYXRlIGJvdGggcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcyBpbiB0aGUgSVEgZGF0YS4gVGhhdCdzIGEgc2Vuc2libGUgY2hhbmdlLiBSZXBsYWNpbmcgdGhlIGN1c3RvbSBzb3J0aW5nIGxvZ2ljIHdpdGggYHNvcnQoKWAgZnJvbSBgbGludXgvc29ydC5oYCBpcyBhbHNvIGdvb2QuIFVzaW5nIHRoZSBrZXJuZWwncyBidWlsdC1pbiBzb3J0aW5nIGZ1bmN0aW9uIGlzIGdlbmVyYWxseSBtb3JlIGVmZmljaWVudCwgcmVsaWFibGUsIGFuZCBtYWludGFpbmFibGUuIEFuZCBzaW1wbGlmeWluZyB0aGUgb2Zmc2V0IGNhbGN1bGF0aW9uLCBJIGxpa2UgdGhhdCwgaXQgd291bGQgbWFrZSB0aGUgY29kZSBlYXNpZXIgdG8gZm9sbG93LlxuXG5CdXQgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIGFsbG9jYXRlZCBvbiB0aGUgKnN0YWNrKiBpbnNpZGUgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWA6XG5cbmBgYGNcbnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxue1xuXHRzMzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xuLi4uXG5gYGBcblxuUmlnaHQsIGJ1dCBhcmUgYGl2YCBhbmQgYHF2YCBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgdGhleSdyZSByZWFkPyBUaGF0J3MgbXkgbWFpbiBjb25jZXJuLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlJ3Mgbm8gcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkLCB3aGljaCBjb3VsZCBsZWFkIHRvIHJhbmRvbSBiZWhhdmlvciBhbmQgaW5zdGFiaWxpdHkuIExldCdzIGxvb2sgYXQgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYC4gVGhhdCdzIHdoZXJlIEkgYXNzdW1lIHRoZXkncmUgcG9wdWxhdGVkLiBXYWl0LCBkb2VzIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIGFjdHVhbGx5IGNhbGwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29udHJvbCBmbG93IGFuZCBtYWtlIHN1cmUgdGhlIGFycmF5cyBhcmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBhbGdvcml0aG0gcHJvY2Vzc2VzIHRoZW0uIEknbGwgc2NhbiB0aHJvdWdoIHRoZSByZXN0IG9mIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIHRvIGNvbmZpcm0uIEl0IGlzIGltcG9ydGFudCB0byBrbm93IGlmIHRoZXNlIHN0YWNrIHZhcmlhYmxlcyBhcmUgcHJvcGVybHkgcG9wdWxhdGVkIGJlZm9yZSBiZWluZyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTI4LCJPdXRwdXRUb2tlbnMiOjU4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6MDkuNDUyMjM1ODkzWiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjkxNzcxMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MjUwPXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMDI6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMy1cXHRcXHRcXHRcXHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTMzND1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2FkYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3MS1cXHRcXHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMyNCwgMHgwMDAxMDAwMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM3MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzkxLVxcdFxcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYzNjLCBwYXRoX3NlbCArIDB4ODEwMyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM5MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM5My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDU3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ3NTpcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWNfaW4sIFxcdTAwMjZxY19pbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ3Ni1cXHRpYyA9IGljX2luO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTUwNj1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXAzKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU2LVxcdHJ0d193cml0ZTMyKHJ0d2RldiwgYmFzZV9hZGRyICsgMHg2MCwgMHhmMDAwMDAwMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU1NzpcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU1OC1cXHRpZiAoaWMgXFx1MDAzZT0gMHgxMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6MDkuOTgxNDE4Njc4WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTUzMjYzNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6XG5cbioqQW5hbHl6aW5nIHRoZSBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBGdW5jdGlvbioqXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGl2YCBhbmQgYHF2YCB2YXJpYWJsZXMgYXJlIHBvcHVsYXRlZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBNeSBpbnN0aW5jdCBpcyB0byBleGFtaW5lIHRoZSBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBmdW5jdGlvbiBkaXJlY3RseS4gSXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCDigJMgaXQncyBuYW1lZCBpbiBhIHdheSB0aGF0IHN1Z2dlc3RzIGl0J3MgaW52b2x2ZWQgaW4gY2FsaWJyYXRpb24gYW5kIGxpa2VseSBkZWFscyB3aXRoIFJGIG1vZGUgc2V0dGluZ3MsIHdoaWNoIGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgaXQgdG91Y2hlcyB1cG9uIHRoZXNlIGluLXBoYXNlIChJKSBhbmQgcXVhZHJhdHVyZS1waGFzZSAoUSkgY29tcG9uZW50cywgYGl2YCBhbmQgYHF2YC4gTGV0J3MgZ2V0IHRvIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDM1LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6MTQuMTM2NzQ4MDg2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMzIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAyLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzAyOlxcdHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbiAzMDM6XFx0XFx0XFx0XFx0XFx0ICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcXG4gMzA0OlxcdHtcXG4gMzA1OlxcdFxcdHMzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XFxuIDMwNjpcXHRcXHR1MzIgcmZfYSwgcmZfYjtcXG4gMzA3OlxcdFxcbiAzMDg6XFx0XFx0cmZfYSA9IHJ0d19yZWFkX3JmKHJ0d2RldiwgUkZfUEFUSF9BLCAweDAsIFJGUkVHX01BU0spO1xcbiAzMDk6XFx0XFx0cmZfYiA9IHJ0d19yZWFkX3JmKHJ0d2RldiwgUkZfUEFUSF9CLCAweDAsIFJGUkVHX01BU0spO1xcbiAzMTA6XFx0XFxuIDMxMTpcXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCJbREFDS10gUkYgcGF0aC1BPTB4JTA1eFxcXFxuXFxcIiwgcmZfYSk7XFxuIDMxMjpcXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCJbREFDS10gUkYgcGF0aC1CPTB4JTA1eFxcXFxuXFxcIiwgcmZfYik7XFxuIDMxMzpcXHRcXG4gMzE0OlxcdFxcdHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHJ0d2RldiwgaXYsIHF2KTtcXG4gMzE1OlxcdFxcdHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHJ0d2RldiwgaXYsIHF2LCBpX3ZhbHVlLCBxX3ZhbHVlKTtcXG4gMzE2OlxcdH1cXG4gMzE3OlxcdFxcbiAzMTg6XFx0c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2JiX3NldHRpbmcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4gMzE5OlxcdHtcXG4gMzIwOlxcdFxcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDFkNTgsIDB4ZmY4LCAweDFmZik7XFxuIDMyMTpcXHRcXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxYTAwLCAweDMsIDB4Mik7XFxuIDMyMjpcXHRcXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxYTE0LCAweDMwMCwgMHgzKTtcXG4gMzIzOlxcdFxcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxZDcwLCAweDdlN2U3ZTdlKTtcXG4gMzI0OlxcdFxcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDE4MGMsIDB4MywgMHgwKTtcXG4gMzI1OlxcdFxcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDQxMGMsIDB4MywgMHgwKTtcXG4gMzI2OlxcdFxcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYjAwLCAweDAwMDAwMDA4KTtcXG4gMzI3OlxcdFxcdHJ0d193cml0ZTgocnR3ZGV2LCAweDFiY2MsIDB4M2YpO1xcbiAzMjg6XFx0XFx0cnR3X3dyaXRlMzIocnR3ZGV2LCAweDFiMDAsIDB4MDAwMDAwMGEpO1xcbiAzMjk6XFx0XFx0cnR3X3dyaXRlOChydHdkZXYsIDB4MWJjYywgMHgzZik7XFxuIDMzMDpcXHRcXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxZTI0LCBCSVQoMzEpLCAweDApO1xcbiAzMzE6XFx0XFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MWUyOCwgMHhmLCAweDMpO1xcbiAzMzI6XFx0fVxcbiAzMzM6XFx0XFxuIDMzNDpcXHRzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2FkYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbiAzMzU6XFx0XFx0XFx0XFx0XFx0IHU4IHBhdGgsIHUzMiAqYWRjX2ljLCB1MzIgKmFkY19xYylcXG4gMzM2OlxcdHtcXG4gMzM3OlxcdFxcdHN0cnVjdCBydHdfZG1faW5mbyAqZG1faW5mbyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWRtX2luZm87XFxuIDMzODpcXHRcXHR1MzIgaWMgPSAwLCBxYyA9IDAsIHRlbXAgPSAwO1xcbiAzMzk6XFx0XFx0dTMyIGJhc2VfYWRkcjtcXG4gMzQwOlxcdFxcdHUzMiBwYXRoX3NlbDtcXG4gMzQxOlxcdFxcdGludCBpO1xcbiAzNDI6XFx0XFxuIDM0MzpcXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCJbREFDS10gQURDSyBwYXRoKCVkKVxcXFxuXFxcIiwgcGF0aCk7XFxuIDM0NDpcXHRcXG4gMzQ1OlxcdFxcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XFxuIDM0NjpcXHRcXHRzd2l0Y2ggKHBhdGgpIHtcXG4gMzQ3OlxcdFxcdGNhc2UgUkZfUEFUSF9BOlxcbiAzNDg6XFx0XFx0XFx0cGF0aF9zZWwgPSAweGEwMDAwO1xcbiAzNDk6XFx0XFx0XFx0YnJlYWs7XFxuIDM1MDpcXHRcXHRjYXNlIFJGX1BBVEhfQjpcXG4gMzUxOlxcdFxcdFxcdHBhdGhfc2VsID0gMHg4MDAwMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6MTQuMTM3MTUzODk2WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTkxODU1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBDYWxpYnJhdGlvbiBSb3V0aW5lKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkgZ2V0dGluZyB0aG9zZSBgaXZgIGFuZCBgcXZgIHZhbHVlcyBwb3B1bGF0ZWQuIFRoYXQncyB0aGUgY29yZSBvZiB0aGlzIGNhbGlicmF0aW9uIHN0ZXAuIEkgbmVlZCB0byByZXZpc2l0IHRoYXQgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgKmhvdyogZXhhY3RseSB0aGlzIGZ1bmN0aW9uIGlzIGFjcXVpcmluZyB0aGUgaW4tcGhhc2UgKEkpIGFuZCBxdWFkcmF0dXJlLXBoYXNlIChRKSBzYW1wbGVzLiBXaGF0J3MgdGhlIHNpZ25hbCBwYXRoPyBJcyBpdCB1c2luZyBkaXJlY3QgY29udmVyc2lvbiwgc3VwZXJoZXRlcm9keW5lLCBvciBzb21ldGhpbmcgZWxzZT8gSSBhbHNvIHdhbnQgdG8gdmVyaWZ5IHdoZXRoZXIgSSB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIERBQyBhbmQgQURDIHdpdGhpbiB0aGUgUkZJQyBhcmNoaXRlY3R1cmUuIE5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCB0aGUgQURDJ3Mgc2FtcGxpbmcgcmF0ZSwgcmVzb2x1dGlvbiwgYW5kIGFueSBwb3RlbnRpYWwgb2Zmc2V0cywgdG8gcHJvcGVybHkgaW50ZXJwcmV0IHRoZSB2YWx1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MTUsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI2OjE3Ljk1NjM0Mjk3NloiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDQ4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIzMixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIzMjpcXHRcXG4gMjMzOlxcdHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXFxuIDIzNDpcXHR7XFxuIDIzNTpcXHRcXHR1MzIgdGVtcDtcXG4gMjM2OlxcdFxcdHUzMiBpID0gMCwgY250ID0gMDtcXG4gMjM3OlxcdFxcbiAyMzg6XFx0XFx0d2hpbGUgKGkgXFx1MDAzYyBEQUNLX1NOXzg4MjJDIFxcdTAwMjZcXHUwMDI2IGNudCBcXHUwMDNjIDEwMDAwKSB7XFxuIDIzOTpcXHRcXHRcXHRjbnQrKztcXG4gMjQwOlxcdFxcdFxcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcXG4gMjQxOlxcdFxcdFxcdGl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMiwgOSk7XFxuIDI0MjpcXHRcXHRcXHRxdltpXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcXHUwMDI2IDB4M2ZmLCA5KTtcXG4gMjQzOlxcdFxcbiAyNDQ6XFx0XFx0XFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcXHUwMDI2XFx1MDAyNlxcbiAyNDU6XFx0XFx0XFx0ICAgIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIHF2W2ldKSlcXG4gMjQ2OlxcdFxcdFxcdFxcdGkrKztcXG4gMjQ3OlxcdFxcdH1cXG4gMjQ4OlxcdH1cXG4gMjQ5OlxcdFxcbiAyNTA6XFx0c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4gMjUxOlxcdFxcdFxcdFxcdFxcdCAgICAgICBzMzIgKml2LCBzMzIgKnF2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNjoxNy45NTY2NDkyNzZaIiwiU2VxIjo0MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTYwMTA3ODU4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbmluaXRpYWxpemVkIE1lbW9yeSBBY2Nlc3MgaW4gREFDIENhbGlicmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIGZ1bmN0aW9uIGFuZCBpbW1lZGlhdGVseSwgbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIHRoaXMgbG9vcC4gSXQncyByZWFkaW5nIElRIHNhbXBsZXMsIGFuZCB0aGVyZSdzIGEgc2FmZXR5IGNoZWNrOiBhIGBjbnRgIGxpbWl0IG9mIDEwMDAwLiBUaGF0J3MgZmluZSwgYnV0IHRoZSBpbXBsaWNhdGlvbiBpcy4uLiBpZiBgY250YCBoaXRzIDEwMDAwICpiZWZvcmUqIHdlJ3ZlIGNvbGxlY3RlZCB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIHNhbXBsZXMgKGBEQUNLX1NOXzg4MjJDYCksIHRoZSBsb29wIGJyZWFrcy4gVGhhdCBtZWFucyB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIG9mIGBpdmAgYW5kIGBxdmAgYXJlICp1bmluaXRpYWxpemVkKiEgIFRoaXMgaXMgYSBiaWcgcmVkIGZsYWcuXG5cblRoZW4gSSBzZWUgdGhhdCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgIGlzIGNhbGxlZCB3aXRoIHRoZXNlIHBvdGVudGlhbGx5IGluY29tcGxldGUgYGl2YCBhbmQgYHF2YCBhcnJheXMuIEFuZCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBkYW5nZXJvdXMuIEluc2lkZSBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCB0aGUgY29kZSBpdGVyYXRlcyAqdXAgdG8qIGBEQUNLX1NOXzg4MjJDYCB0byBmaW5kIG1pbi9tYXggdmFsdWVzIGZvciBJIGFuZCBRLiBUaGF0IG1lYW5zIGl0J3MgcmVhZGluZyBtZW1vcnkgKmJleW9uZCogdGhlIGluaXRpYWxpemVkIHBhcnQgb2YgYGl2YCBhbmQgYHF2YCBpZiB0aGUgbG9vcCBpbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkuIFdlJ3JlIHBvdGVudGlhbGx5IHJlYWRpbmcgZ2FyYmFnZSBmcm9tIHRoZSBzdGFjaywgYW5kIHRoaXMgY291bGQgbGVhZCB0byBhbGwgc29ydHMgb2YgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci5cblxuVGhpcyBpcyBjbGFzc2ljIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyB3YXMgaW50cm9kdWNlZCBpbiBhIHJlY2VudCBwYXRjaCwgb3IgaWYgaXQgaGFzIGJlZW4gbHVya2luZyBoZXJlIGFsbCBhbG9uZy4gVGltZSB0byBjaGVjayB0aGUgb2xkIGNvZGUgZm9yIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBwcm9ibGVtIHdhcyBwcmVzZW50ICpiZWZvcmUqIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYyMCwiT3V0cHV0VG9rZW5zIjo1OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI2OjI3LjU1NzczMDY1OVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjcwODkzNzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MjIyPXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0zMDI9c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMTQ6XFx0cnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUocnR3ZGV2LCBpdiwgcXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTUtXFx0cnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2gocnR3ZGV2LCBpdiwgcXYsIGlfdmFsdWUsIHFfdmFsdWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNjoyOC4yMjg2NDIwNzJaIiwiU2VxIjo0NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE5OTQ5NTk3NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQUMgQ2FsaWJyYXRpb24gQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZGlmZiBmb3IgdGhlIERBQyBjYWxpYnJhdGlvbiBpbiB0aGlzIGBydHc4ODIyY2AgZHJpdmVyLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGNoYW5nZSBmcm9tIHVuc2lnbmVkIGB1MzJgIHRvIHNpZ25lZCBgczMyYCBmb3IgYGl2YCBhbmQgYHF2YCB3aXRoaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCBpcyBpbXBvcnRhbnQuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBJIHNlZSB0aGUgcmVhZCBtYXNrIGlzIHVzZWQgdG8gZ2V0IHRoZSBkYXRhIGZyb20gdGhlIGhhcmR3YXJlLiBUaGUgY29kZSBpcyBleHRyYWN0aW5nIGEgMTAgYml0IHNpZ25lZCB2YWx1ZSwgd2hpY2ggaXMgYXBwcm9wcmlhdGUgZm9yIHNpZ25lZCBpbnRlZ2Vycy5cblxuSG93ZXZlciwgSSdtIG1vcmUgY29uY2VybmVkIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHNhbXBsaW5nIGxvb3AuIFRoZSBjb25kaXRpb24gYGNudCBcdTAwM2MgMTAwMDBgIGNhdWdodCBteSBleWUgYmVjYXVzZSB0aGF0J3MgYW4gZXhpc3RpbmcgbG9vcCBicmVhayBjb25kaXRpb24uIEl0IG1lYW5zIGFuIGVhcmx5IHJldHVybiBmcm9tIHRoZSBzYW1wbGluZyBsb29wIGlzIHBvc3NpYmxlLiBJdCBhbHNvIG1lYW5zIHRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBjb3VsZCBoYXZlIHVuaW5pdGlhbGl6ZWQgZWxlbWVudHMuIElmIGBjbnRgIGhpdHMgMTAwMDAsIHRoZW4gc29tZSBlbGVtZW50cyBpbiBgaXZgIGFuZCBgcXZgIHdpbGwgbm90IGJlIGZpbGxlZC5cblxuVGhlbiwgdGhlcmUncyB0aGUgY2hhbmdlIHRvIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIHdoZXJlIHRoZSBjdXN0b20gc29ydGluZyBpbXBsZW1lbnRhdGlvbiBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIHRoZSBzdGFuZGFyZCBgc29ydCgpYCBmdW5jdGlvbi4gVGhhdCdzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkga25vdyBgc29ydCgpYCBpcyBhbiBlZmZpY2llbnQgc29ydGluZyBhbGdvcml0aG0sIGJ1dCBpZiB0aG9zZSBgaXZgIGFuZCBgcXZgIGFycmF5cyAqYXJlbid0KiBmdWxseSBpbml0aWFsaXplZCwgdGhpcyBpcyBhIHByb2JsZW0uIFRoZSBvbGQgY3VzdG9tIHNvcnQsIGFuZCB0aGUgbmV3IHNvcnQsIGJvdGggZGVwZW5kIG9uICpyZWFkaW5nKiBkYXRhIGZyb20gYGl2YCBhbmQgYHF2YC4gVGhlIG5ldyBjb2RlIGNhbGxzIGBzb3J0KClgIHdoaWNoIG1lYW5zIHRoYXQgYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCBpcyBnb2luZyB0byByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gdGhlIGBpdmAgYW5kIGBxdmAgYnVmZmVycy4gVGhpcyBpcyBhIHBvdGVudGlhbCBidWcuIEkgY2FuJ3QgYmUgc3VyZSB0aGF0IHRoZSBvbGQgY29kZSB3YXMgYmV0dGVyOiBpdCBhbHNvIHJlYWRzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBidXQgaXQncyBub3QgY2xlYXIgdGhhdCB0aGUgb2xkIGNvZGUgaGFzIGEgd2VsbC1kZWZpbmVkIGNvbXBhcmlzb24gZnVuY3Rpb246IGBfX3J0dzg4MjJjX2RhY19pcV9zb3J0YCBtaWdodCBoYXZlIGRpZmZlcmVudCBwcm9wZXJ0aWVzLlxuXG5TbywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGJlY29tZXM6IGlzIGBydHc4ODIyY19kYWNfaXFfc29ydGAgYWN0dWFsbHkgKmNhbGxlZCo/IElmIHRoaXMgc29ydGluZyBmdW5jdGlvbiBpcyBuZXZlciBpbnZva2VkLCB0aGVuIHRoaXMgYmVjb21lcyBhIG5vbi1pc3N1ZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGRldGVybWluZSB0aGUgYWN0dWFsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMDEsIk91dHB1dFRva2VucyI6NTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6NDAuMjIzNjAzOTI5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDMyODE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4ODIyY19kYWNfaXFfc29ydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE1OD1zdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjY6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0yNTA9c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4NDpcXHRcXHRydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIGl2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6NDAuMjY3OTQxNjE5WiIsIlNlcSI6NDcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MDkxNDY4OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEQUMgQ2FsaWJyYXRpb24gQ29kZSBDaGFuZ2VzKipcblxuT2theSwgc28gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCBjYWxscyBgcnR3ODgyMmNfZGFjX2lxX3NvcnRgLCB3aGljaCBpdCBhbHdheXMgZGlkLiBHb29kLCBubyBuZXcgZnVuY3Rpb24gY2FsbHMgaW50cm9kdWNlZCB0aGVyZS4gTXkgaW5pdGlhbCBjb25jZXJuIHdhcyB3aGV0aGVyIHRoZSBwYXRjaCBpbnRyb2R1Y2VkIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHNvIGxldCdzIGRpZyBpbnRvIHRoZSBjaGFuZ2VzIGluIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAgaXRzZWxmLlxuXG5BbHJpZ2h0LCB0aGUgZmlyc3QgZGlmZiBzaW1wbGlmaWVzIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgZGVsdGFzIGZvciBJIGFuZCBRLiBUaGUgb2xkIGNvZGUgaGFkIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSBtYXggYW5kIG1pbiB2YWx1ZXMgd3JhcHBlZCBhcm91bmQgMHgyMDAgKHByZXN1bWFibHkgcmVwcmVzZW50aW5nIGEgc2lnbmVkIHZhbHVlIHdpdGggMHgyMDAgYXMgdGhlIG1pZHBvaW50KS4gVGhlIG5ldyBjb2RlIGp1c3QgcGVyZm9ybXMgYSBzdHJhaWdodGZvcndhcmQgdW5zaWduZWQgc3VidHJhY3Rpb246IGB1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO2AgYW5kIHRoZSBzYW1lIGZvciBRLiBObyBvYnZpb3VzIHByb2JsZW1zIHRoZXJlLiBUaGlzIHdpbGwgYmUgYW4gaW1wcm92ZW1lbnQgaW4gZWZmaWNpZW5jeSwgYW5kIGxpa2VseSBhY2N1cmFjeSBzaW5jZSB0aGUgbG9naWMgZG9lc24ndCBkZXBlbmQgb24gdGhlIGNvbXBpbGVyJ3Mgb3B0aW1pemF0aW9ucy5cblxuVGhlbiwgdGhlcmUncyBhIGNoYW5nZSBpbiBob3cgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgIGlzIGNhbGxlZC4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIGxpa2UgdGhpczpcbmBgYGNcbnJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7XG5ydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYsIHFfdmFsdWUpO1xuYGBgXG5hbmQgbm93IGl0J3MgdGhpczpcbmBgYGNcbippX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTtcbipxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTtcbmBgYFxuRXNzZW50aWFsbHksIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCBub3cgcmV0dXJucyBhIHZhbHVlLiBCdXQgdGhhdCBtZWFucyB3ZSBzaG91bGQgc2VlIGEgY29ycmVzcG9uZGluZyBjaGFuZ2UgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24sIHdoaWNoIHdlIGRvLiBUaGUgb3JpZ2luYWwgY29kZSdzIHNpZ25hdHVyZSB3YXM6XG5gYGBjXG5zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbClcbmBgYFxuYW5kIGlzIG5vdzpcbmBgYGNcbnN0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcbmBgYFxuXG5UaGUgb2xkIGZ1bmN0aW9uIGhhZCBhIGxvY2FsIHZhcmlhYmxlIGB0YCB0aGF0IGNhbGN1bGF0ZWQgdGhlIGF2ZXJhZ2Ugb2Zmc2V0IG9mIHRoZSBkYXRhLiBUaGUgcmV2aXNlZCBjb2RlIGRpcmVjdGx5IGNhbGN1bGF0ZXMgdGhlIGF2ZXJhZ2Ugb2YgdGhlIHZlY3RvcidzIHZhbHVlcyBpbiBhIGBzdW1gIHZhcmlhYmxlLCBhbmQgdGhlbiBkaXJlY3RseSBjYWxjdWxhdGVzIGBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKWAuIFRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGN1bGF0ZWQgYW5kIHJldHVybmVkLCBub3cgdXNpbmcgYSB0ZXJuYXJ5IG9wZXJhdG9yLiBUaGUgYHZlY2AgcG9pbnRlciBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGlzIG5vdyBhIGBzMzIgKmAgaW5zdGVhZCBvZiBgdTMyICpgLCB3aGljaCBpcyBnb29kLiBUaGUgZnVuY3Rpb24gbm93IGNvcnJlY3RseSByZXR1cm5zIGEgc2lnbmVkIG9mZnNldCB2YWx1ZSwgd2hlcmVhcyBiZWZvcmUsIHRoZSBvZmZzZXQgdmFsdWUgd2FzIGFuIG91dCBwYXJhbWV0ZXIuXG5cblRoZSBsb29wIGl0ZXJhdGluZyB0aHJvdWdoIGB2ZWNgIG5vdyBhbHNvIHVzZXMgYSBgdTMyIGlgIGFzIGl0cyBpdGVyYXRvci4gVGhlIGNvZGUgaXMgbXVjaCBjbGVhbmVyLlxuXG5JIGRvbid0IHNlZSBhbnkgb2J2aW91cyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBwcm9ibGVtcywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHdoYXQgYERBQ0tfU05fODgyMkNgIHJlcHJlc2VudHMgYW5kIGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgY2FsaWJyYXRpb24gcHJvY2Vzcy4gSXQncyBsaWtlbHkgYSBzYW1wbGUgY291bnQsIGJ1dCBJIHNob3VsZCBsb29rIGludG8gdGhhdCBjb25zdGFudCdzIGRlZmluaXRpb24gdG8gY29uZmlybS4gSSBzaG91bGQgYWxzbyB0ZXN0IHRoaXMgY29kZSBhZ2FpbnN0IHNvbWUgZXhhbXBsZSBkYXRhc2V0cyB0byBkZXRlcm1pbmUgaWYgdGhlIHNpZ25lZCBhcml0aG1ldGljIGludHJvZHVjZXMgYW55IHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDExLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI2OjU3LjM1OTQxMzIyNVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE2ODEzNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBEQUNLX1NOXzg4MjJDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaD0xMzM9Y29uc3Qgc3RydWN0IHJ0d190YWJsZSBuYW1lICMjIF90YmwgPSB7XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oLTE0MS0jZGVmaW5lIERBQ0tfUkZfODgyMkNcXHRcXHQxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oOjE0MjojZGVmaW5lIERBQ0tfU05fODgyMkNcXHRcXHQxMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmgtMTQzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNjo1Ny40MTEwOTkwOTRaIiwiU2VxIjo0OSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4OTI1OTE0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIERBQyBDYWxpYnJhdGlvbiBDb2RlIFJlZmFjdG9yaW5nKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLCBhbmQgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0J3MgaGFwcGVuaW5nLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIERBQyBjYWxpYnJhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIGBydHc4ODIyY2AgZHJpdmVyLiAgVGhlIGNyaXRpY2FsIGFzcGVjdCBoZXJlIGlzIHdoZXRoZXIgdGhpcyByZWZhY3RvcmluZyBpbnRyb2R1Y2VzIGFueSAqbmV3KiB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIGJlIGV4cG9zZWQgYnkgS01TQU4uICBMZXQncyB3YWxrIHRocm91Z2ggaXQuXG5cbkZpcnN0LCBgREFDS19TTl84ODIyQ2AgZGVmaW5lcyB0aGUgc2l6ZSDigJMgaXQncyAxMDAuICBXZSBoYXZlIGFycmF5cyBgaXZgIGFuZCBgcXZgLCBib3RoIG9mIDEwMCBgczMyYCBlbGVtZW50cywgdXNlZCB0byBzdG9yZSBzYW1wbGVzIHJlYWQgZnJvbSBoYXJkd2FyZS4gIFRoZSBmdW5jdGlvbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIGF0dGVtcHRzIHRvIHBvcHVsYXRlIHRoZXNlIGFycmF5cy4gVGhlIGtleSBoZXJlIGlzIHRoZSBsb29wIHRoYXQgcmVhZHMgdGhlIHZhbHVlcyBhbmQgc3RvcmVzIHRoZW0uICBDcnVjaWFsbHksIHRoZXJlJ3MgYSBgY250YCBjb3VudGVyIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCwgYW5kIGlmIGl0IHJlYWNoZXMgMTAwMDAsIGBpYCBjb3VsZCBiZSBsZXNzIHRoYW4gMTAwLCBsZWF2aW5nIHRoZSBhcnJheXMgcGFydGlhbGx5IHVuaW5pdGlhbGl6ZWQuIFRoaXMgKndhcyogYWxyZWFkeSB0aGUgY2FzZSBpbiB0aGUgb2xkIGNvZGUuXG5cblRoZSBvcmlnaW5hbCBjb2RlIGFsc28gaGFkIGEgc2ltaWxhciBzaXR1YXRpb24sIHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFsdWVzICpjb3VsZCogYmUgcmVhZC4gVGhlIHBhdGNoICpyZXBsYWNlcyogY2FsbHMgdG8gYHJ0dzg4MjJjX3JmX21pbm1heF9jbXBgLCBhbmQgYSBjdXN0b20gc29ydCB3aXRoIHRoZSBzdGFuZGFyZCBsaWJyYXJ5J3MgYHNvcnQoKWAgZnVuY3Rpb24gYW5kIHNpZ25lZCBpbnRlZ2Vycywgc3BlY2lmaWNhbGx5IGBzMzJgLiBUaGlzIGBzb3J0KClgIGZ1bmN0aW9uIHVzZXMgYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgd2hpY2ggaXMgYSBzdGFuZGFyZCBjb21wYXJpc29uIGZ1bmN0aW9uLlxuXG5UaGUgcHJldmlvdXMgY29kZSBoYWQgc29tZSB0cmlja3kgc2lnbiBleHRlbnNpb24gbG9naWMuIFRoZSBuZXcgY29kZSBkb2VzIGl0IGNvcnJlY3RseSBieSBjYWxsaW5nIGBzaWduX2V4dGVuZDMyYCB3aGljaCBzaWduLWV4dGVuZHMgdGhlIDEwLWJpdCB2YWx1ZXMgdG8gMzIgYml0IHNpZ25lZCB2YWx1ZXMgdXNpbmcgYml0IDkgYXMgdGhlIHNpZ24gYml0LlxuXG5NeSBpbml0aWFsIGNvbmNlcm4gd2FzIHdoZXRoZXIgdGhlIHJlZmFjdG9yaW5nICpleHBvc2VkKiBhbiBleGlzdGluZyB1bmluaXRpYWxpemVkIHJlYWQgdGhhdCB3YXMgbm90IGRldGVjdGVkIGJlZm9yZSBieSBLTVNBTi4gSWYgdGhlIGFycmF5cyBgaXZgIGFuZCBgcXZgIGFyZSBvbmx5IHBhcnRpYWxseSBpbml0aWFsaXplZCwgdXNpbmcgYHNvcnQoKWAgKndpbGwqIHJlYWQgdGhlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBLTVNBTiBzaG91bGQgY2F0Y2ggdGhpcy4gQnV0IHRoaXMgd2FzIGFscmVhZHkgdHJ1ZSBpbiB0aGUgb2xkIGNvZGUuXG5cblRoZSBjaGVjayBmb3IgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AgaGFzIGJlZW4gbW9kaWZpZWQsIGJ1dCBub3QgaW4gYSB3YXkgdGhhdCBhZmZlY3RzIHdoZXRoZXIgdGhlIGFycmF5cyBhcmUgaW5pdGlhbGl6ZWQgb3Igbm90LiBJdCdzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGxvZ2ljIHVzaW5nIHNpZ25lZCB0eXBlcy4gVGhlIGxpbWl0cyBhcmUgLTEwMCB0byAxMDAuXG5cblRoZSBvZmZzZXQgY2FsY3VsYXRpb25zIGFyZSBhbHNvIGJlaW5nIHJlZmFjdG9yZWQsIGJ1dCB0aGV5IHN0aWxsIHJlbHkgb24gdGhlIHNhbWUgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBkYXRhLlxuXG5UaGUgYXJyYXlzIHdpdGhpbiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhcmUgc3RpbGwgdW5pbml0aWFsaXplZCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHNhbXBsZSBmdW5jdGlvbiBmYWlscy5cblxuVGhlIG1haW4gY2hhbmdlIGlzIGZyb20gYSBjdXN0b20gY29tcGFyaXNvbiBhbmQgc29ydCB0byBzdGFuZGFyZCBzaWduZWQgdHlwZXMsIHN0YW5kYXJkIGBzb3J0KClgLCBhbmQgYSBzaW1wbGlmaWVkIG9mZnNldCBjYWxjdWxhdGlvbi4gQWxsIG9mIHRoaXMgY2FuIHN0aWxsIHJlYWQgdGhlIHNhbWUgbWVtb3J5IGlmIGl0IGlzIG5vdCBwcm9wZXJseSBpbml0aWFsaXplZC5cblxuVGhlcmVmb3JlLCBzaW5jZSBhbGwgdGhlIHBvdGVudGlhbCBmb3IgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB3YXMgcHJlc2VudCAqYmVmb3JlKiB0aGUgcGF0Y2gsIGFuZCB0aGUgcGF0Y2ggaXMgcHJpbWFyaWx5IGEgcmVmYWN0b3Jpbmcgb2YgZXhpc3RpbmcgbG9naWMgYW5kIG1hdGggYW5kIGRvZXMgKm5vdCogaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9uIG9yIGNvcHkgdG8gdXNlciBzcGFjZSwgS01TQU4gaXMgbm90IHNwZWNpZmljYWxseSBuZWVkZWQgaGVyZS4gIEFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIGxpa2UgdGhlIGVhcmx5IGxvb3AgdGVybWluYXRpb24gYW5kIHRoZSBhcnJheXMgYmVpbmcgb25seSBwYXJ0aWFsbHkgZmlsbGVkLCAqd291bGQqIGJlIGNhdWdodCBieSBLTVNBTiBpbiBib3RoIHRoZSBvbGQgYW5kIG5ldyBjb2RlLiAgVGhpcyBpcyBhIHN0cmFpZ2h0IHJlZmFjdG9yaW5nLCB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUsIGlmIGl0IGV4aXN0cywgaXMgc3RpbGwgdGhlcmUuIEkgd2lsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGJlY2F1c2UgaXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBLTVNBTi1zcGVjaWZpYyBwcm9ibGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5ODYsIk91dHB1dFRva2VucyI6MjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNzozMS4zMDM2OTM0MDRaIiwiU2VxIjo1MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIHJ0dzg4IGRyaXZlciBieSByZXBsYWNpbmcgY3VzdG9tIDEwLWJpdCBzaWduLW1hZ25pdHVkZS90d28ncy1jb21wbGVtZW50IGFyaXRobWV0aWMgYW5kIGEgY3VzdG9tIGJ1YmJsZSBzb3J0IHdpdGggc3RhbmRhcmQgYHMzMmAgdHlwZXMsIGBzaWduX2V4dGVuZDMyKClgLCBhbmQgdGhlIGtlcm5lbCdzIGJ1aWx0LWluIGBzb3J0KClgIGZ1bmN0aW9uLiBcXG5cXG5XaGlsZSB0aGUgc3RhY2stYWxsb2NhdGVkIGFycmF5cyBgaXZgIGFuZCBgcXZgIGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaWYgdGhlIHNhbXBsaW5nIGxvb3AgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKClgIHRlcm1pbmF0ZXMgZWFybHkgKGR1ZSB0byB0aGUgYGNudCBcXHUwMDNjIDEwMDAwYCBjb25kaXRpb24pLCB0aGlzIGJlaGF2aW9yIGFuZCB0aGUgc3Vic2VxdWVudCByZWFkcyBvZiB0aGUgZW50aXJlIGFycmF5IHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBvbGQgY29kZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGFyaXRobWV0aWMgYW5kIHNvcnRpbmcgcmVmYWN0b3JpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgdGhpcyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBydHc4OCBkcml2ZXIgYnkgcmVwbGFjaW5nIGN1c3RvbSAxMC1iaXQgc2lnbi1tYWduaXR1ZGUvdHdvJ3MtY29tcGxlbWVudCBhcml0aG1ldGljIGFuZCBhIGN1c3RvbSBidWJibGUgc29ydCB3aXRoIHN0YW5kYXJkIGBzMzJgIHR5cGVzLCBgc2lnbl9leHRlbmQzMigpYCwgYW5kIHRoZSBrZXJuZWwncyBidWlsdC1pbiBgc29ydCgpYCBmdW5jdGlvbi4gXFxuXFxuV2hpbGUgdGhlIHN0YWNrLWFsbG9jYXRlZCBhcnJheXMgYGl2YCBhbmQgYHF2YCBjb3VsZCBwb3RlbnRpYWxseSBjb250YWluIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlmIHRoZSBzYW1wbGluZyBsb29wIGluIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZSgpYCB0ZXJtaW5hdGVzIGVhcmx5IChkdWUgdG8gdGhlIGBjbnQgXFx1MDAzYyAxMDAwMGAgY29uZGl0aW9uKSwgdGhpcyBiZWhhdmlvciBhbmQgdGhlIHN1YnNlcXVlbnQgcmVhZHMgb2YgdGhlIGVudGlyZSBhcnJheSB3ZXJlIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgb2xkIGNvZGUuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIG5ldyBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBhcml0aG1ldGljIGFuZCBzb3J0aW5nIHJlZmFjdG9yaW5nLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQgZm9yIHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2xgc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 16:40:45 +0000 UTC FinishedAt: 2026-08-12 17:27:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4f25071afe9218aaae1c63fbf75e229aa6405319", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "RTW88", "RTW88_8822CU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4f25071afe9218aaae1c63fbf75e229aa6405319", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "RTW88", "RTW88_8822CU" ], "series_id": "d2e5353f-b780-4f89-a794-29e43edc1934" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw8822c_phy_set_param", "rtw8822c_phy_calibration" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJDVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0dzg4MjJjX3BoeV9zZXRfcGFyYW0mIzM0OywKICAgICYjMzQ7cnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgcnR3ODggZHJpdmVyIGJ5IHJlcGxhY2luZyBjdXN0b20gMTAtYml0IHNpZ24tbWFnbml0dWRlL3R3byYjMzk7cy1jb21wbGVtZW50IGFyaXRobWV0aWMgYW5kIGEgY3VzdG9tIGJ1YmJsZSBzb3J0IHdpdGggc3RhbmRhcmQgYHMzMmAgdHlwZXMsIGBzaWduX2V4dGVuZDMyKClgLCBhbmQgdGhlIGtlcm5lbCYjMzk7cyBidWlsdC1pbiBgc29ydCgpYCBmdW5jdGlvbi4gXG5cbldoaWxlIHRoZSBzdGFjay1hbGxvY2F0ZWQgYXJyYXlzIGBpdmAgYW5kIGBxdmAgY291bGQgcG90ZW50aWFsbHkgY29udGFpbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpZiB0aGUgc2FtcGxpbmcgbG9vcCBpbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoKWAgdGVybWluYXRlcyBlYXJseSAoZHVlIHRvIHRoZSBgY250IFx1MDAzYyAxMDAwMGAgY29uZGl0aW9uKSwgdGhpcyBiZWhhdmlvciBhbmQgdGhlIHN1YnNlcXVlbnQgcmVhZHMgb2YgdGhlIGVudGlyZSBhcnJheSB3ZXJlIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgb2xkIGNvZGUuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIG5ldyBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBhcml0aG1ldGljIGFuZCBzb3J0aW5nIHJlZmFjdG9yaW5nLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQgZm9yIHRoaXMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQUMgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIFJlYWx0ZWsgcnR3ODgyMmMgd2lyZWxlc3MgZHJpdmVyLCBzaW1wbGlmeWluZyBzb3J0aW5nIGFuZCBvZmZzZXQgY2FsY3VsYXRpb25zLiBUaGlzIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15IEhDRCkgYnkgZW5hYmxpbmcgdGhlIFVTQiB2YXJpYW50IG9mIHRoZSBkcml2ZXIgKENPTkZJR19SVFc4OF84ODIyQ1UpLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBleGVjdXRlZCBkdXJpbmcgUEhZIHBhcmFtZXRlciBzZXR1cCBhbmQgY2FsaWJyYXRpb24sIHdoaWNoIGFyZSBhY2Nlc3NpYmxlIHZpYSB0aGUgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFuZCBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYCBjYWxsYmFja3MuIFRoZXNlIGNhbGxiYWNrcyBhcmUgbm90IGlubGluZWQgYXMgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgaW4gdGhlIGNoaXAgb3BlcmF0aW9ucyBzdHJ1Y3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZjQ2NzdjZmJlODY0NmVmYzhiNjcyNDViYWZiYjlhYmI3Y2RjODY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTc6MjQ6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXG5pbmRleCAyNDRjODAyNjQ3OWMyLi42ZmNkZmM2NGMzYjFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbkBAIC0zLDYgJiM0MzszLDggQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRvcHMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9zb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDttYWluLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtjb2V4LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtmdy5oXCYjMzQ7XG5AQCAtMTUzLDg0ICYjNDM7MTU1LDMwIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSxcbi1cdFx0XHRcdCAgIHUzMiAqbWluLCB1MzIgKm1heClcbiYjNDM7c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuIHtcbi1cdGlmICh2YWx1ZSBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdGlmICgqbWluIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1pbiBcdTAwM2UgdmFsdWUpXG4tXHRcdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXHRcdGlmICgqbWF4IFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdGlmICgqbWluIFx1MDAzYyAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fVxuLVxuLVx0XHRpZiAoKm1heCAgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH1cbi19XG4mIzQzO1x0czMyIHZhID0gKihjb25zdCBzMzIgKilhO1xuJiM0MztcdHMzMiB2YiA9ICooY29uc3QgczMyICopYjtcbiBcbi1zdGF0aWMgdm9pZCBfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdjEsIHUzMiAqdjIpXG4te1xuLVx0aWYgKCp2MSBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRpZiAoKnYxIFx1MDAzZSAqdjIpXG4tXHRcdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9IGVsc2UgaWYgKCp2MSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2ICp2MiBcdTAwM2MgMHgyMDApIHtcbi1cdFx0aWYgKCp2MSBcdTAwM2UgKnYyKVxuLVx0XHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fSBlbHNlIGlmICgqdjEgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH1cbiYjNDM7XHRyZXR1cm4gKHZhIFx1MDAzZSB2YikgLSAodmEgXHUwMDNjIHZiKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbiB7XG4tXHR1MzIgaSwgajtcbi1cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkMgLSAxOyBpJiM0MzsmIzQzOykge1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyAoREFDS19TTl84ODIyQyAtIDEgLSBpKSA7IGomIzQzOyYjNDM7KSB7XG4tXHRcdFx0X19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIFx1MDAyNml2W2pdLCBcdTAwMjZpdltqICYjNDM7IDFdKTtcbi1cdFx0XHRfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgXHUwMDI2cXZbal0sIFx1MDAyNnF2W2ogJiM0MzsgMV0pO1xuLVx0XHR9XG4tXHR9XG4mIzQzO1x0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcbiYjNDM7XHRzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbClcbiYjNDM7c3RhdGljIHMzMiBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqdmVjKVxuIHtcbi1cdHUzMiBwLCBtLCB0LCBpO1xuJiM0MztcdHMzMiBzdW0gPSAwO1xuIFxuLVx0bSA9IDA7XG4tXHRwID0gMDtcbi1cdGZvciAoaSA9IDEwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGlmICh2ZWNbaV0gXHUwMDNlIDB4MjAwKVxuLVx0XHRcdG0gPSAoMHg0MDAgLSB2ZWNbaV0pICYjNDM7IG07XG4tXHRcdGVsc2Vcbi1cdFx0XHRwID0gdmVjW2ldICYjNDM7IHA7XG4tXHR9XG4mIzQzO1x0Zm9yICh1MzIgaSA9IDEwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0c3VtICYjNDM7PSB2ZWNbaV07XG4gXG4tXHRpZiAocCBcdTAwM2UgbSkge1xuLVx0XHR0ID0gcCAtIG07XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHR9IGVsc2Uge1xuLVx0XHR0ID0gbSAtIHA7XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHRcdGlmICh0ICE9IDB4MClcbi1cdFx0XHR0ID0gMHg0MDAgLSB0O1xuLVx0fVxuJiM0MztcdHMzMiBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKTtcbiBcbi1cdCp2YWwgPSB0O1xuJiM0MztcdHJldHVybiBhdmcgXHUwMDNlPSAwID8gYXZnIDogMHg0MDAgJiM0MzsgYXZnO1xuIH1cbiBcbiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcbkBAIC0yNzEsMjkgJiM0MzsyMTksMjcgQEAgc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIodTggcGF0aClcbiBcdHJldHVybiBiYXNlX2FkZHI7XG4gfVxuIFxuLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpXG4mIzQzO3N0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXG4ge1xuLVx0Ym9vbCByZXQgPSB0cnVlO1xuIFxuLVx0aWYgKCh2YWx1ZSBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiAoMHg0MDAgLSB2YWx1ZSkgXHUwMDNlIDB4NjQpIHx8XG4tXHQgICAgKHZhbHVlIFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgdmFsdWUgXHUwMDNlIDB4NjQpKSB7XG4tXHRcdHJldCA9IGZhbHNlO1xuJiM0MztcdGlmICh2YWx1ZSBcdTAwM2UgMTAwIHx8IHZhbHVlIFx1MDAzYyAtMTAwKSB7XG4gXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgXCYjMzQ7W0RBQ0tdIEVycm9yIG92ZXJmbG93XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXG4mIzQzO3N0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG4ge1xuIFx0dTMyIHRlbXA7XG4tXHRpbnQgaSA9IDAsIGNudCA9IDA7XG4mIzQzO1x0dTMyIGkgPSAwLCBjbnQgPSAwO1xuIFxuIFx0d2hpbGUgKGkgXHUwMDNjIERBQ0tfU05fODgyMkMgXHUwMDI2XHUwMDI2IGNudCBcdTAwM2MgMTAwMDApIHtcbiBcdFx0Y250JiM0MzsmIzQzOztcbiBcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRpdltpXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRxdltpXSA9IHRlbXAgXHUwMDI2IDB4M2ZmO1xuJiM0MztcdFx0aXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbiYjNDM7XHRcdHF2W2ldID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXG4gXHRcdGlmIChydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBpdltpXSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXG5AQCAtMzAyLDEzICYjNDM7MjQ4LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4tXHRcdFx0XHQgICAgICAgdTMyICppdiwgdTMyICpxdixcbiYjNDM7XHRcdFx0XHQgICAgICAgczMyICppdiwgczMyICpxdixcbiBcdFx0XHRcdCAgICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcbiB7XG4tXHR1MzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuLVx0dTMyIGlfZGVsdGEsIHFfZGVsdGE7XG4mIzQzO1x0czMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcbiBcdHUzMiB0ZW1wO1xuLVx0aW50IGksIGNudCA9IDA7XG4mIzQzO1x0dTMyIGksIGNudCA9IDA7XG4gXG4gXHRkbyB7XG4gXHRcdGlfbWluID0gaXZbMF07XG5AQCAtMzE2LDIzICYjNDM7MjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdHFfbWluID0gcXZbMF07XG4gXHRcdHFfbWF4ID0gcXZbMF07XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdFx0cnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIGl2W2ldLCBcdTAwMjZpX21pbiwgXHUwMDI2aV9tYXgpO1xuLVx0XHRcdHJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBxdltpXSwgXHUwMDI2cV9taW4sIFx1MDAyNnFfbWF4KTtcbiYjNDM7XHRcdFx0aWYgKGl2W2ldIFx1MDAzYyBpX21pbilcbiYjNDM7XHRcdFx0XHRpX21pbiA9IGl2W2ldO1xuJiM0MztcdFx0XHRpZiAoaXZbaV0gXHUwMDNlIGlfbWF4KVxuJiM0MztcdFx0XHRcdGlfbWF4ID0gaXZbaV07XG4mIzQzO1x0XHRcdGlmIChxdltpXSBcdTAwM2MgcV9taW4pXG4mIzQzO1x0XHRcdFx0cV9taW4gPSBxdltpXTtcbiYjNDM7XHRcdFx0aWYgKHF2W2ldIFx1MDAzZSBxX21heClcbiYjNDM7XHRcdFx0XHRxX21heCA9IHF2W2ldO1xuIFx0XHR9XG4gXG4tXHRcdGlmIChpX21heCBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IGlfbWluIFx1MDAzYyAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZSBpZiAoaV9tYXggXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNlPSAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAmIzQzOyAoMHg0MDAgLSBpX21pbik7XG4tXG4tXHRcdGlmIChxX21heCBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IHFfbWluIFx1MDAzYyAweDIwMClcbi1cdFx0XHRxX2RlbHRhID0gcV9tYXggLSBxX21pbjtcbi1cdFx0ZWxzZSBpZiAocV9tYXggXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgcV9taW4gXHUwMDNlPSAweDIwMClcbi1cdFx0XHRxX2RlbHRhID0gcV9tYXggLSBxX21pbjtcbi1cdFx0ZWxzZVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAmIzQzOyAoMHg0MDAgLSBxX21pbik7XG4mIzQzO1x0XHR1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO1xuJiM0MztcdFx0dTMyIHFfZGVsdGEgPSAodTMyKShxX21heCAtIHFfbWluKTtcbiBcbiBcdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxuIFx0XHRcdFwmIzM0O1tEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcXG5cJiMzNDssXG5AQCAtMzQ1LDI0ICYjNDM7Mjg1LDI0IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXG4gXHRcdGlmIChpX2RlbHRhIFx1MDAzZSA1IHx8IHFfZGVsdGEgXHUwMDNlIDUpIHtcbiBcdFx0XHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XG4tXHRcdFx0aXZbMF0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0XHRxdlswXSA9IHRlbXAgXHUwMDI2IDB4M2ZmO1xuJiM0MztcdFx0XHRpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuJiM0MztcdFx0XHRxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0XHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbiYjNDM7XHRcdFx0aXZbREFDS19TTl84ODIyQyAtIDFdID0gc2lnbl9leHRlbmQzMigodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMiwgOSk7XG4mIzQzO1x0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHR9IHdoaWxlIChjbnQmIzQzOyYjNDM7IFx1MDAzYyAxMDApO1xuIFxuLVx0cnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2LCBpX3ZhbHVlKTtcbi1cdHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdiwgcV92YWx1ZSk7XG4mIzQzO1x0KmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpO1xuJiM0MztcdCpxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuIHtcbi1cdHUzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XG4mIzQzO1x0czMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcbiBcdHUzMiByZl9hLCByZl9iO1xuIFxuIFx0cmZfYSA9IHJ0d19yZWFkX3JmKHJ0d2RldiwgUkZfUEFUSF9BLCAweDAsIFJGUkVHX01BU0spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtSVFc4OCYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIyQ1UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgICAmIzM0O3J0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFDIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4MjJjIHdpcmVsZXNzIGRyaXZlciwgc2ltcGxpZnlpbmcgc29ydGluZyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy4gVGhpcyBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teSBIQ0QpIGJ5IGVuYWJsaW5nIHRoZSBVU0IgdmFyaWFudCBvZiB0aGUgZHJpdmVyIChDT05GSUdfUlRXODhfODgyMkNVKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0ZWQgZHVyaW5nIFBIWSBwYXJhbWV0ZXIgc2V0dXAgYW5kIGNhbGlicmF0aW9uLCB3aGljaCBhcmUgYWNjZXNzaWJsZSB2aWEgdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAgY2FsbGJhY2tzLiBUaGVzZSBjYWxsYmFja3MgYXJlIG5vdCBpbmxpbmVkIGFzIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHRoZSBjaGlwIG9wZXJhdGlvbnMgc3RydWN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWY0Njc3Y2ZiZTg2NDZlZmM4YjY3MjQ1YmFmYmI5YWJiN2NkYzg2NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE3OjI0OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jCmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMKQEAgLTMsNiAmIzQzOzMsOCBAQAogICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0b3BzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NvcnQuaCZndDsKICNpbmNsdWRlICYjMzQ7bWFpbi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y29leC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZncuaCYjMzQ7CkBAIC0xNTMsODQgJiM0MzsxNTUsMzAgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSwKLQkJCQkgICB1MzIgKm1pbiwgdTMyICptYXgpCiYjNDM7c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogewotCWlmICh2YWx1ZSAmZ3Q7PSAweDIwMCkgewotCQlpZiAoKm1pbiAmZ3Q7PSAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0gZWxzZSB7Ci0JCQkqbWluID0gdmFsdWU7Ci0JCX0KLQkJaWYgKCptYXggJmd0Oz0gMHgyMDApIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfSBlbHNlIHsKLQkJaWYgKCptaW4gJmx0OyAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0KLQotCQlpZiAoKm1heCAgJmd0Oz0gMHgyMDApIHsKLQkJCSptYXggPSB2YWx1ZTsKLQkJfSBlbHNlIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfQotfQomIzQzOwlzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7CiYjNDM7CXMzMiB2YiA9ICooY29uc3QgczMyICopYjsKIAotc3RhdGljIHZvaWQgX19ydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnYxLCB1MzIgKnYyKQotewotCWlmICgqdjEgJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmd0Oz0gMHgyMDApIHsKLQkJaWYgKCp2MSAmZ3Q7ICp2MikKLQkJCXN3YXAoKnYxLCAqdjIpOwotCX0gZWxzZSBpZiAoKnYxICZsdDsgMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmx0OyAweDIwMCkgewotCQlpZiAoKnYxICZndDsgKnYyKQotCQkJc3dhcCgqdjEsICp2Mik7Ci0JfSBlbHNlIGlmICgqdjEgJmx0OyAweDIwMCAmYW1wOyZhbXA7ICp2MiAmZ3Q7PSAweDIwMCkgewotCQlzd2FwKCp2MSwgKnYyKTsKLQl9CiYjNDM7CXJldHVybiAodmEgJmd0OyB2YikgLSAodmEgJmx0OyB2Yik7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpCiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdikKIHsKLQl1MzIgaSwgajsKLQotCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDIC0gMTsgaSYjNDM7JiM0MzspIHsKLQkJZm9yIChqID0gMDsgaiAmbHQ7IChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaiYjNDM7JiM0MzspIHsKLQkJCV9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCAmYW1wO2l2W2pdLCAmYW1wO2l2W2ogJiM0MzsgMV0pOwotCQkJX19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsICZhbXA7cXZbal0sICZhbXA7cXZbaiAmIzQzOyAxXSk7Ci0JCX0KLQl9CiYjNDM7CXNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiYjNDM7CXNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKQomIzQzO3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYykKIHsKLQl1MzIgcCwgbSwgdCwgaTsKJiM0MzsJczMyIHN1bSA9IDA7CiAKLQltID0gMDsKLQlwID0gMDsKLQlmb3IgKGkgPSAxMDsgaSAmbHQ7IERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKHZlY1tpXSAmZ3Q7IDB4MjAwKQotCQkJbSA9ICgweDQwMCAtIHZlY1tpXSkgJiM0MzsgbTsKLQkJZWxzZQotCQkJcCA9IHZlY1tpXSAmIzQzOyBwOwotCX0KJiM0MzsJZm9yICh1MzIgaSA9IDEwOyBpICZsdDsgREFDS19TTl84ODIyQyAtIDEwOyBpJiM0MzsmIzQzOykKJiM0MzsJCXN1bSAmIzQzOz0gdmVjW2ldOwogCi0JaWYgKHAgJmd0OyBtKSB7Ci0JCXQgPSBwIC0gbTsKLQkJdCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTsKLQl9IGVsc2UgewotCQl0ID0gbSAtIHA7Ci0JCXQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7Ci0JCWlmICh0ICE9IDB4MCkKLQkJCXQgPSAweDQwMCAtIHQ7Ci0JfQomIzQzOwlzMzIgYXZnID0gc3VtIC8gKERBQ0tfU05fODgyMkMgLSAyMCk7CiAKLQkqdmFsID0gdDsKJiM0MzsJcmV0dXJuIGF2ZyAmZ3Q7PSAwID8gYXZnIDogMHg0MDAgJiM0MzsgYXZnOwogfQogCiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aCkKQEAgLTI3MSwyOSAmIzQzOzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKQogCXJldHVybiBiYXNlX2FkZHI7CiB9CiAKLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpCiYjNDM7c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSkKIHsKLQlib29sIHJldCA9IHRydWU7CiAKLQlpZiAoKHZhbHVlICZndDs9IDB4MjAwICZhbXA7JmFtcDsgKDB4NDAwIC0gdmFsdWUpICZndDsgMHg2NCkgfHwKLQkgICAgKHZhbHVlICZsdDsgMHgyMDAgJmFtcDsmYW1wOyB2YWx1ZSAmZ3Q7IDB4NjQpKSB7Ci0JCXJldCA9IGZhbHNlOwomIzQzOwlpZiAodmFsdWUgJmd0OyAxMDAgfHwgdmFsdWUgJmx0OyAtMTAwKSB7CiAJCXJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgJiMzNDtbREFDS10gRXJyb3Igb3ZlcmZsb3dcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKJiM0MztzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KQogewogCXUzMiB0ZW1wOwotCWludCBpID0gMCwgY250ID0gMDsKJiM0MzsJdTMyIGkgPSAwLCBjbnQgPSAwOwogCiAJd2hpbGUgKGkgJmx0OyBEQUNLX1NOXzg4MjJDICZhbXA7JmFtcDsgY250ICZsdDsgMTAwMDApIHsKIAkJY250JiM0MzsmIzQzOzsKIAkJdGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpOwotCQlpdltpXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJcXZbaV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJaXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMiwgOSk7CiYjNDM7CQlxdltpXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAKIAkJaWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSAmYW1wOyZhbXA7CiAJCSAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpCkBAIC0zMDIsMTMgJiM0MzsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKIH0KIAogc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwKLQkJCQkgICAgICAgdTMyICppdiwgdTMyICpxdiwKJiM0MzsJCQkJICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsCiAJCQkJICAgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKQogewotCXUzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7Ci0JdTMyIGlfZGVsdGEsIHFfZGVsdGE7CiYjNDM7CXMzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7CiAJdTMyIHRlbXA7Ci0JaW50IGksIGNudCA9IDA7CiYjNDM7CXUzMiBpLCBjbnQgPSAwOwogCiAJZG8gewogCQlpX21pbiA9IGl2WzBdOwpAQCAtMzE2LDIzICYjNDM7MjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJCXFfbWluID0gcXZbMF07CiAJCXFfbWF4ID0gcXZbMF07CiAJCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDOyBpJiM0MzsmIzQzOykgewotCQkJcnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIGl2W2ldLCAmYW1wO2lfbWluLCAmYW1wO2lfbWF4KTsKLQkJCXJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBxdltpXSwgJmFtcDtxX21pbiwgJmFtcDtxX21heCk7CiYjNDM7CQkJaWYgKGl2W2ldICZsdDsgaV9taW4pCiYjNDM7CQkJCWlfbWluID0gaXZbaV07CiYjNDM7CQkJaWYgKGl2W2ldICZndDsgaV9tYXgpCiYjNDM7CQkJCWlfbWF4ID0gaXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZsdDsgcV9taW4pCiYjNDM7CQkJCXFfbWluID0gcXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZndDsgcV9tYXgpCiYjNDM7CQkJCXFfbWF4ID0gcXZbaV07CiAJCX0KIAotCQlpZiAoaV9tYXggJmx0OyAweDIwMCAmYW1wOyZhbXA7IGlfbWluICZsdDsgMHgyMDApCi0JCQlpX2RlbHRhID0gaV9tYXggLSBpX21pbjsKLQkJZWxzZSBpZiAoaV9tYXggJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyBpX21pbiAmZ3Q7PSAweDIwMCkKLQkJCWlfZGVsdGEgPSBpX21heCAtIGlfbWluOwotCQllbHNlCi0JCQlpX2RlbHRhID0gaV9tYXggJiM0MzsgKDB4NDAwIC0gaV9taW4pOwotCi0JCWlmIChxX21heCAmbHQ7IDB4MjAwICZhbXA7JmFtcDsgcV9taW4gJmx0OyAweDIwMCkKLQkJCXFfZGVsdGEgPSBxX21heCAtIHFfbWluOwotCQllbHNlIGlmIChxX21heCAmZ3Q7PSAweDIwMCAmYW1wOyZhbXA7IHFfbWluICZndDs9IDB4MjAwKQotCQkJcV9kZWx0YSA9IHFfbWF4IC0gcV9taW47Ci0JCWVsc2UKLQkJCXFfZGVsdGEgPSBxX21heCAmIzQzOyAoMHg0MDAgLSBxX21pbik7CiYjNDM7CQl1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pOwomIzQzOwkJdTMyIHFfZGVsdGEgPSAodTMyKShxX21heCAtIHFfbWluKTsKIAogCQlydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssCiAJCQkmIzM0O1tEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcbiYjMzQ7LApAQCAtMzQ1LDI0ICYjNDM7Mjg1LDI0IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAKIAkJaWYgKGlfZGVsdGEgJmd0OyA1IHx8IHFfZGVsdGEgJmd0OyA1KSB7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdlswXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJCXF2WzBdID0gdGVtcCAmYW1wOyAweDNmZjsKJiM0MzsJCQlpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTI7Ci0JCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJCWl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgJmFtcDsgMHgzZmYsIDkpOwogCQl9IGVsc2UgewogCQkJYnJlYWs7CiAJCX0KIAl9IHdoaWxlIChjbnQmIzQzOyYjNDM7ICZsdDsgMTAwKTsKIAotCXJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7Ci0JcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTsKJiM0MzsJKmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpOwomIzQzOwkqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCQkJCSAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpCiB7Ci0JdTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKJiM0MzsJczMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKIAl1MzIgcmZfYSwgcmZfYjsKIAogCXJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgVmlydHVhbGl6YXRpb24gRmVhc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgcnR3ODgyMmMuY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIFJlYWx0ZWsgd2lyZWxlc3MgaGFyZHdhcmUuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgc2ltcGxpZnlpbmcgc29tZSBJUSBjb21wYXJpc29uIGFuZCBzb3J0aW5nIGxvZ2ljIGFjcm9zcyBzZXZlcmFsIGZ1bmN0aW9uczogYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYW5kIGEgZmV3IG90aGVycyBkZWFsaW5nIHdpdGggREFDIGNhbGlicmF0aW9uLiBUaGV5JiMzOTtyZSBsZXZlcmFnaW5nIGBzaWduX2V4dGVuZDMyYCBhbmQgYHNvcnRgIGZyb20gYGxpbnV4L3NvcnQuaGAsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC4gVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzIGFsd2F5cywgY2FuIEkgYWN0dWFsbHkgdGVzdCB0aGlzIHRoaW5nIGVmZmVjdGl2ZWx5IHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSB0cmlja3kuIEkga25vdyB0aGUgYHJ0dzg4YCBmYW1pbHkgaXMgYSBtYWM4MDIxMSBkcml2ZXIsIGJ1dCBnZW5lcmFsbHksIHRoZXNlIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUg4oCTIGEgUmVhbHRlayBXaS1GaSBjYXJkLiBgbWFjODAyMTFfaHdzaW1gIGlzbiYjMzk7dCBnb2luZyB0byBoZWxwIGhlcmU7IGl0JiMzOTtzIGEgc2VwYXJhdGUgdGhpbmcuIEl0JiMzOTtzIHJhcmUgdG8gZ2V0IGEgZ29vZCBzb2Z0d2FyZSBlbXVsYXRpb24gZ29pbmcgZm9yIGEgZnVsbCB3aXJlbGVzcyBzdGFjayBsaWtlIHRoaXMgdW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUgdmVyeSBzcGVjaWZpYyBRRU1VIGRldmljZSBvciBVU0IgZ2FkZ2V0IHNldHVwLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSBjb25uZWN0aW9uIOKAkyBpcyBpdCBQQ0llIG9yIFVTQiBmb3IgdGhlIDg4MjJjPyBXYWl0Li4uIEkgcmVtZW1iZXIgYHJ0dzg4YCBkb2VzIGhhdmUgVVNCIHN1cHBvcnQgKGBydHc4OF91c2JgKSwgZG9lc24mIzM5O3QgaXQ/IE9rYXksIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIElmIGBydHc4ODIyY2AgKmNhbiogYmUgYSBVU0IgZGV2aWNlLCB0aGVuIHRoZXJlJiMzOTtzIGEgcG9zc2liaWxpdHkuIElmIGl0JiMzOTtzIFVTQiwgdGhlbiBpdCBiZWNvbWVzIHBvdGVudGlhbGx5IGZ1enphYmxlIHVzaW5nIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciYjMzk7cyBkdW1teSBVU0IgZHJpdmVyLiBMZXQgbWUgZGlnIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmNgIGFuZCBzZWUgaWYgdGhlcmUgaXMgVVNCIGNvZGUgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODgyMmMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTYzMyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfUlRXODhfODgyMkMpXHQmIzQzOz0gcnR3ODhfODgyMmMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTozODpydHc4OF84ODIyYy1vYmpzXHRcdDo9IHJ0dzg4MjJjLm8gcnR3ODgyMmNfdGFibGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9NDA9b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDRSlcdCYjNDM7PSBydHc4OF84ODIyY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0MTpydHc4OF84ODIyY2Utb2Jqc1x0XHQ6PSBydHc4ODIyY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9NDM9b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDUylcdCYjNDM7PSBydHc4OF84ODIyY3Mub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NDpydHc4OF84ODIyY3Mtb2Jqc1x0XHQ6PSBydHc4ODIyY3Mub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9NDY9b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDVSlcdCYjNDM7PSBydHc4OF84ODIyY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NzpydHc4OF84ODIyY3Utb2Jqc1x0XHQ6PSBydHc4ODIyY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMtI2luY2x1ZGUgXCYjMzQ7cGh5LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDojaW5jbHVkZSBcJiMzNDtydHc4ODIyYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU6I2luY2x1ZGUgXCYjMzQ7cnR3ODgyMmNfdGFibGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2LSNpbmNsdWRlIFwmIzM0O21hYy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI1OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2NvbmZpZ190cnhfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCB0eF9wYXRoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI2LVx0XHRcdFx0ICAgICB1OCByeF9wYXRoLCBib29sIGlzX3R4Ml9wYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyODpzdGF0aWMgdm9pZCBydHc4ODIyY2VfZWZ1c2VfcGFyc2luZyhzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyOTpcdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjdV9lZnVzZV9wYXJzaW5nKHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM1Olx0XHRcdFx0ICAgIHN0cnVjdCBydHc4ODIyY19lZnVzZSAqbWFwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDA6c3RhdGljIHZvaWQgcnR3ODgyMmNzX2VmdXNlX3BhcnNpbmcoc3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE6XHRcdFx0XHQgICAgc3RydWN0IHJ0dzg4MjJjX2VmdXNlICptYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0NjpzdGF0aWMgaW50IHJ0dzg4MjJjX3JlYWRfZWZ1c2Uoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ4LVx0c3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UgPSBcdTAwMjZydHdkZXYtXHUwMDNlZWZ1c2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDk6XHRzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MC1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjUyOlx0bWFwID0gKHN0cnVjdCBydHc4ODIyY19lZnVzZSAqKWxvZ19tYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTczLVx0Y2FzZSBSVFdfSENJX1RZUEVfUENJRTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3NDpcdFx0cnR3ODgyMmNlX2VmdXNlX3BhcnNpbmcoZWZ1c2UsIG1hcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc2LVx0Y2FzZSBSVFdfSENJX1RZUEVfVVNCOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc3Olx0XHRydHc4ODIyY3VfZWZ1c2VfcGFyc2luZyhlZnVzZSwgbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OC1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzktXHRjYXNlIFJUV19IQ0lfVFlQRV9TRElPOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgwOlx0XHRydHc4ODIyY3NfZWZ1c2VfcGFyc2luZyhlZnVzZSwgbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2hlYWRlcl9maWxlX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBwcmUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTAzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2JiX3Jlc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExMDpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfYmFja3VwX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMS1cdFx0XHRcdCAgICBzdHJ1Y3QgcnR3X2JhY2t1cF9pbmZvICpiYWNrdXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzk6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgcnR3X2JhY2t1cF9pbmZvICpiYWNrdXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTg6c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjY6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2ODpcdHNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY5Olx0c29ydChxdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzI6c3RhdGljIHMzMiBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqdmVjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxODQ6c3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjIwMzpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIwNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMjI6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMjMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjMzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NDpcdFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyNDU6XHRcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjQ2LVx0XHRcdGkmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjUwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjUxLVx0XHRcdFx0ICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyODQ6XHRcdHJ0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgaXYsIHF2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yODUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyOTg6XHQqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Mjk5Olx0KnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMwMjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMDMtXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzE0Olx0cnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUocnR3ZGV2LCBpdiwgcXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxNTpcdHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHJ0d2RldiwgaXYsIHF2LCBpX3ZhbHVlLCBxX3ZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMTg6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2JiX3NldHRpbmcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzM0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYWRjKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzM1LVx0XHRcdFx0IHU4IHBhdGgsIHUzMiAqYWRjX2ljLCB1MzIgKmFkY19xYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM0NTpcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ2LVx0c3dpdGNoIChwYXRoKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3MS1cdFx0cnR3X3dyaXRlMzIocnR3ZGV2LCAweDFjMjQsIDB4MDAwMTAwMDIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM3MjpcdFx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWMsIFx1MDAyNnFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zNzMtXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzkxLVx0XHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMzYywgcGF0aF9zZWwgJiM0MzsgMHg4MTAzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozOTI6XHRcdHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShydHdkZXYsIFx1MDAyNmljLCBcdTAwMjZxYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzkzLVx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTI6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTg6XHRiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxOTpcdHJlYWRfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0NTc6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ1OC1cdFx0XHRcdCAgIHU4IHBhdGgsIHUzMiAqaWNfb3V0LCB1MzIgKnFjX291dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ2MzpcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDY0LVx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIGJhc2VfYWRkciAmIzQzOyAweGJjLCAweGYwMDAwMDAwLCAweDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDc1Olx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWNfaW4sIFx1MDAyNnFjX2luKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NzYtXHRpYyA9IGljX2luO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTA2OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfc3RlcDMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MDctXHRcdFx0XHQgICB1MzIgYWRjX2ljLCB1MzIgYWRjX3FjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTE2Olx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MTc6XHRyZWFkX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTE4LVx0aWMgPSAqaWNfaW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU1Ni1cdHJ0d193cml0ZTMyKHJ0d2RldiwgYmFzZV9hZGRyICYjNDM7IDB4NjAsIDB4ZjAwMDAwMDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU1NzpcdHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShydHdkZXYsIFx1MDAyNmljLCBcdTAwMjZxYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU4LVx0aWYgKGljIFx1MDAzZT0gMHgxMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTg0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1ODU6XHR1MzIgYmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01ODYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1OTM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfdmVjKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTk0LVx0XHRcdFx0XHR1OCBwYXRoLCB1OCB2ZWMsIHUzMiB3X2FkZHIsIHUzMiByX2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MTA6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfcGF0aChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYxMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYxOS1cdC8qIGJhY2t1cCBJIHZlY3RvciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMDpcdHdfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCkgJiM0MzsgMHhiMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MjE6XHRyX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCkgJiM0MzsgMHgxMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MjI6XHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF92ZWMocnR3ZGV2LCBwYXRoLCAwLCB3X2FkZHIsIHJfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYyNC1cdC8qIGJhY2t1cCBRIHZlY3RvciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyNTpcdHdfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCkgJiM0MzsgMHhiMCAmIzQzOyB3X29mZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MjY6XHRyX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCkgJiM0MzsgMHgxMCAmIzQzOyByX29mZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2Mjc6XHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF92ZWMocnR3ZGV2LCBwYXRoLCAxLCB3X2FkZHIsIHJfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02MjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjMwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX2RjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYzMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2NTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NjctXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxODYwLCAweGZjMDAwMDAwLCAweDNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2Njg6XHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9wYXRoKHJ0d2RldiwgUkZfUEFUSF9BKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY3Mi1cdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDQxNjAsIDB4ZmMwMDAwMDAsIDB4M2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY3MzpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2NzU6XHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9kY2socnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NzYtXHRydHdfd3JpdGUzMl9zZXQocnR3ZGV2LCAweDE4MzAsIEJJVCgzMCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Njg0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9kY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02ODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzE0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wcmVwYXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzE1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc0MzpcdHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9kY2socnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3Njc6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NjgtXHRcdFx0XHRcdCAgdTMyIHRhcmdldF9hZGRyLCB1MzIgdG9nZ2xlX2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3ODQ6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03ODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzkzOlx0d19pID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSAmIzQzOyAweGIwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5NDpcdHJfaSA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSAmIzQzOyAweDA4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5NTpcdHdfcSA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCkgJiM0MzsgMHhiMCAmIzQzOyB3X29mZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3OTY6XHRyX3EgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCkgJiM0MzsgMHgwOCAmIzQzOyByX29mZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzk4Olx0aWYgKCFydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfd2FpdChydHdkZXYsIHJfaSwgd19pICYjNDM7IDB4OCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzk5LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4MTE6XHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV93YWl0KHJ0d2Rldiwgcl9xLCB3X3EgJiM0MzsgMHg4KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MTItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgzMTpzdGF0aWMgYm9vbCBfX3J0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgzMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODMzOlx0aWYgKCFydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcGF0aChydHdkZXYsIFJGX1BBVEhfQSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODM0LVx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgzNjpcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0IpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgzNy1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODQyOnN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4NTg6XHRydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcHJlcGFyZShydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg1OS1cdGlmICghY2hlY2tfaHdfcmVhZHkocnR3ZGV2LCAweDI4MDgsIDB4N2ZmZjgwLCAweGZmZmYpIHx8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4NjU6XHRpZiAoIV9fcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHJ0d2RldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NjYtXHRcdHJ0d19lcnIocnR3ZGV2LCBcJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBkYWNrIHZlY3RvcnNcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODgzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX2RhY19jYWwoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04ODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODkyOlx0aWYgKHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShydHdkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODk3Olx0cnR3ODgyMmNfZGFjX2JhY2t1cF9yZWcocnR3ZGV2LCBiYWNrdXAsIGJhY2t1cF9yZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg5OTpcdHJ0dzg4MjJjX2RhY19iYl9zZXR0aW5nKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMS1cdC8qIHBhdGgtQSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkwMjpcdHJ0dzg4MjJjX2RhY19jYWxfYWRjKHJ0d2RldiwgUkZfUEFUSF9BLCBcdTAwMjZhZGNfaWNfYSwgXHUwMDI2YWRjX3FjX2EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMy1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkwNDpcdFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMShydHdkZXYsIFJGX1BBVEhfQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTA1Olx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHJ0d2RldiwgUkZfUEFUSF9BLCBcdTAwMjZpYywgXHUwMDI2cWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwNi1cdFx0aWNfYSA9IGljO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTA5Olx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAzKHJ0d2RldiwgUkZfUEFUSF9BLCBhZGNfaWNfYSwgYWRjX3FjX2EsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTEwLVx0XHRcdFx0ICAgICAgIFx1MDAyNmljLCBcdTAwMjZxYywgXHUwMDI2aV9hLCBcdTAwMjZxX2EpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTQtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTE1Olx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwNChydHdkZXYsIFJGX1BBVEhfQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkxNy1cdC8qIHBhdGgtQiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkxODpcdHJ0dzg4MjJjX2RhY19jYWxfYWRjKHJ0d2RldiwgUkZfUEFUSF9CLCBcdTAwMjZhZGNfaWNfYiwgXHUwMDI2YWRjX3FjX2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkxOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkyMDpcdFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMShydHdkZXYsIFJGX1BBVEhfQik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTIxOlx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHJ0d2RldiwgUkZfUEFUSF9CLCBcdTAwMjZpYywgXHUwMDI2cWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkyMi1cdFx0aWNfYiA9IGljO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTI1Olx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAzKHJ0d2RldiwgUkZfUEFUSF9CLCBhZGNfaWNfYiwgYWRjX3FjX2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTI2LVx0XHRcdFx0ICAgICAgIFx1MDAyNmljLCBcdTAwMjZxYywgXHUwMDI2aV9iLCBcdTAwMjZxX2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MzAtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTMxOlx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwNChydHdkZXYsIFJGX1BBVEhfQik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTMyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTM5Olx0cnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHJ0d2RldiwgYmFja3VwLCBiYWNrdXBfcmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDEtXHQvKiBiYWNrdXAgcmVzdWx0cyB0byByZXN0b3JlLCBzYXZpbmcgYSBsb3Qgb2YgdGltZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjk0MjpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTUwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX3gyX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTUxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjk2NDpzdGF0aWMgdm9pZCBydHc4ODIyY19zZXRfcG93ZXJfdHJpbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzOCBiYl9nYWluWzJdWzhdKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5OTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfcG93ZXJfdHJpbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk5Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMjctXHRpZiAoc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwMjg6XHRcdHJ0dzg4MjJjX3NldF9wb3dlcl90cmltKHJ0d2RldiwgYmJfZ2Fpbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAyOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDMzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3RoZXJtYWxfdHJpbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwNTE6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGFfYmlhcyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwNzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZrX2hhbmRzaGFrZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBib29sIGlzX2JlZm9yZV9rKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExMTk6c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZrX3Bvd2VyX3NhdmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTIwLVx0XHRcdFx0ICAgIGJvb2wgaXNfcG93ZXJfc2F2ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMTMxOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19iYWNrdXBfYmJfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGNvbnN0IHUzMiByZWdbXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTMyLVx0XHRcdFx0XHQgIHUzMiByZWdfYmFja3VwW10sIHUzMiByZWdfbnVtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExNDQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3JlbG9hZF9iYl9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTQ1LVx0XHRcdFx0XHQgIGNvbnN0IHUzMiByZWdbXSwgdTMyIHJlZ19iYWNrdXBbXSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTE1Nz1zdGF0aWMgYm9vbCBjaGVja19yZl9zdGF0dXMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExNzI6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3R4X3BhdXNlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTE3My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTE4ODpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYmJfZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTE4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTIyMDpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYWZlX2RwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEyNTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2FmZV9kcGtfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEyODk6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2JiX2Rwa19yZXN0b3JlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTI5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTMyOTpzdGF0aWMgYm9vbCBfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIGdhaW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTMzODpzdGF0aWMgdm9pZCBfcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzM5LVx0XHRcdFx0XHRcdCB1OCBiYW5kLCB1OCBwYXRoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzY4LVx0XHR2ID0gdHhnYXBrLVx1MDAzZXJmM2ZfYnBbYmFuZF1bZ2Fpbl1bcGF0aF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTM2OTpcdFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTM3MC1cdFx0XHRpZiAoIWNoZWNrX3R4Z2Fpbikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzOTI6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzkzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwMC1cdFx0Zm9yIChwYXRoID0gMDsgcGF0aCBcdTAwM2MgcnR3ZGV2LVx1MDAzZWhhbC5yZl9wYXRoX251bTsgcGF0aCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDAxOlx0XHRcdF9ydHc4ODIyY190eGdhcGtfd3JpdGVfZ2Fpbl9iYl90YWJsZShydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwMi1cdFx0XHRcdFx0XHRcdCAgICAgYmFuZCwgcGF0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQwNzpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDA4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDg0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19jYWxjdWxhdGVfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQ5NTpcdHJ0dzg4MjJjX3R4Z2Fwa19iYWNrdXBfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0OTYtXHRcdFx0XHQgICAgICByZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1MTc6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19yZWFkX29mZnNldChydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1MTgtXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1NTE6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19yZWFkX29mZnNldChydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTItXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTMtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1NDpcdHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTUtXHRcdFx0XHQgICAgICByZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1NTg6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3JmX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTcwOnN0YXRpYyB1MzIgcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBnYWluLCBzOCBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU3NjpcdGlmIChfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQocnR3ZGV2LCBnYWluKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzctXHRcdG5ld19nYWluID0gZ2Fpbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTk0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV90eF9nYWluKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2MjQtXHRcdFx0XHR2ID0gdHhnYXBrLVx1MDAzZXJmM2ZfYnBbYmFuZF1bal1bcGF0aF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTYyNTpcdFx0XHRcdGlmIChfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQocnR3ZGV2LCB2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjI2LVx0XHRcdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYzMi1cdFx0XHR2ID0gdHhnYXBrLVx1MDAzZXJmM2ZfYnBbYmFuZF1baV1bcGF0aF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTYzMzpcdFx0XHRpZiAoX3J0dzg4MjJjX3R4Z2Fwa19nYWluX3ZhbGlkKHJ0d2RldiwgdikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjM0LVx0XHRcdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NTA6XHRcdFx0dG1wXzNmID0gcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjUxLVx0XHRcdFx0XHRcdFx0ICB0eGdhcGstXHUwMDNlcmYzZl9icFtiYW5kXVtpXVtwYXRoXSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2ODEtXHRcdFx0XCYjMzQ7W1RYR0FQS10gQWxyZWFkeSBSZWFkIHR4Z2Fway1cdTAwM2VyZWFkX3R4Z2FpbiByZXR1cm4hISFcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2ODI6XHRcdHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV9nYWluX2JiX3RhYmxlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY4My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzE4LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3MTk6XHRydHc4ODIyY190eGdhcGtfd3JpdGVfZ2Fpbl9iYl90YWJsZShydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MjAtXHR0eGdhcGstXHUwMDNlcmVhZF90eGdhaW4gPSAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3MjM6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTczMjpcdHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTczMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzQ3Olx0cnR3ODgyMmNfdHhnYXBrX2JhY2t1cF9iYl9yZWcocnR3ZGV2LCBiYl9yZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0OC1cdFx0XHRcdCAgICAgIGJiX3JlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc0OTpcdHJ0dzg4MjJjX3R4Z2Fwa190eF9wYXVzZShydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NTAtXHRmb3IgKHBhdGggPSAwOyBwYXRoIFx1MDAzYyBydHdkZXYtXHUwMDNlaGFsLnJmX3BhdGhfbnVtOyBwYXRoJiM0MzsmIzQzOykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzUyLVx0XHRcdFx0XHQgICAgICBSRl9DRkdDSCwgUkZSRUdfTUFTSykgXHUwMDI2IE1BU0tCWVRFMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzUzOlx0XHRydHc4ODIyY190eGdhcGtfYmJfZHBrKHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1NDpcdFx0cnR3ODgyMmNfdHhnYXBrX2FmZV9kcGsocnR3ZGV2LCBwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU1Olx0XHRydHc4ODIyY190eGdhcGtfY2FsY3VsYXRlX29mZnNldChydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTY6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19yZl9yZXN0b3JlKHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1NzpcdFx0cnR3ODgyMmNfdHhnYXBrX2FmZV9kcGtfcmVzdG9yZShydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTg6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19iYl9kcGtfcmVzdG9yZShydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NTktXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2MDpcdHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV90eF9nYWluKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2MTpcdHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjItXHRcdFx0XHQgICAgICBiYl9yZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NjU6c3RhdGljIHZvaWQgcnR3ODgyMmNfZG9fZ2FwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjYte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3MzcKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQgb2YgdGhlIHJ0dzg4MjJjIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgYHJ0dzg4MjJjYCBkcml2ZXIgZ2V0cyBidWlsdCB3aGVuIGBDT05GSUdfUlRXODhfODgyMkNgIGlzIGZsaXBwZWQuIFRoaXMgZmFtaWx5IGFsc28gZW5jb21wYXNzZXMgUENJZSAoYENPTkZJR19SVFc4OF84ODIyQ0VgKSwgU0RJTyAoYENPTkZJR19SVFc4OF84ODIyQ1NgKSwgYW5kIGNyaXRpY2FsbHksIGEgVVNCIHZlcnNpb24gKGBDT05GSUdfUlRXODhfODgyMkNVYCkuIFRoYXQgVVNCIHZhcmlhbnQgaXMgdGhlIGtleSBoZXJlLiBTaW5jZSBhIFVTQiBkZXZpY2UgaXMgYXZhaWxhYmxlLCB0aGlzIGRyaXZlciAqc2hvdWxkKiBiZSBhbWVuYWJsZSB0byBmdXp6aW5nIHdpdGggc3l6a2FsbGVyJiMzOTtzIFVTQiBkdW1teSBkcml2ZXIsIGVtdWxhdGluZyB0aGF0IGhhcmR3YXJlIGludGVyZmFjZS4KCldhaXQgYSBtaW51dGUsIGxldCYjMzk7cyByZS1yZWFkIHRoZSBwcm9tcHQuIEl0JiMzOTtzIGFza2luZyBmb3IgYSBgV29ydGhGdXp6aW5nPWZhbHNlYCByZXR1cm4gaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgdGhlIGNhc2Ugb2Ygc29tZXRoaW5nIGxpa2UgdXNiIGdhZGdldC4gQnV0IGEgVVNCIGRyaXZlciAqaXMqIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IG9yIGEgZHVtbXkgSENELgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50LCBhbmQgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5ICppcyogYXZhaWxhYmxlIGluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0UgYW5kIFFFTVUpLCB0aGlzIGxvb2tzIGxpa2UgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgb2YgYENPTkZJR19SVFc4OF84ODIyQ1VgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBzaG93c3RvcHBlcnMsIGJ1dCB0aGUgcHJlc2VuY2Ugb2YgdGhlIFVTQiB2ZXJzaW9uIGlzIGEgc3Ryb25nIGluZGljYXRvciB0aGF0IHRoaXMgcGF0Y2ggaXMsIGluIGZhY3QsIHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg4Xzg4MjJDVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZz0xMDQ9Y29uZmlnIFJUVzg4Xzg4MjJDU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTE1OmNvbmZpZyBSVFc4OF84ODIyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1MDkKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFJUVzg4Xzg4MjJDVWA6CgoqKkFuYWx5emluZyBgUlRXODhfODgyMkNVYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gd2UmIzM5O3JlIGRpdmluZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFJUVzg4Xzg4MjJDVWAuIE15IGluaXRpYWwgYXBwcm9hY2ggaXMgdG8gbWVudGFsbHkgbWFwIG91dCB0aGUgdHlwaWNhbCBkcml2ZXIgc3RydWN0dXJlLiBXaGF0IGFyZSB0aGUgbGlrZWx5IGZvdW5kYXRpb25hbCBlbGVtZW50cz8gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSB3aXJlbGVzcyBkcml2ZXIsIHNvIEkmIzM5O20gdGhpbmtpbmcgaW1tZWRpYXRlbHkgYWJvdXQgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIChIQUwpLCBsaWtlbHkgc29tZSBzb3J0IG9mIHBvd2VyIG1hbmFnZW1lbnQgaW50ZXJmYWNlLCBhbmQgb2YgY291cnNlLCB0aGUgbmV0d29yayBzdGFjayBpbnRlcmFjdGlvbnMuCgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgdGhpcyBpcyBhIHN0YW5kYXJkIFJlYWx0ZWsgZGVzaWduIG9yIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY3VzdG9tIGVsZW1lbnRzIHRvIGNvbnNpZGVyLCBzdWNoIGFzIGEgdmVuZG9yLXNwZWNpZmljIGZpcm13YXJlIGxvYWRpbmcgbWVjaGFuaXNtLiBBcmUgdGhlcmUgYW55IGV4aXN0aW5nIFJlYWx0ZWsgZHJpdmVyIGFyY2hpdGVjdHVyZXMgSSBzaG91bGQgYmUgZmFtaWxpYXIgd2l0aCwgb3IgYW55IGtub3duIHF1aXJrcz8gVGhhdCB3b3VsZCBiZSB1c2VmdWwgaW5mb3JtYXRpb24gdG8gaGF2ZSB0byB1bmRlcnN0YW5kIGl0cyBpbnRlcnJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHN5c3RlbXMuCgpUaGVuIHRoZXJlIGFyZSB0aGUga2VybmVsIGludGVyZmFjZXMuIFdoYXQgc3BlY2lmaWMga2VybmVsIG1vZHVsZXMgb3IgZnVuY3Rpb25zIGlzIHRoaXMgZHJpdmVyIGdvaW5nIHRvIHJlbHkgb24/IElzIGl0IHVzaW5nIHRoZSBzdGFuZGFyZCB3aXJlbGVzcyBleHRlbnNpb25zIChXRSkgb3IgaXdsd2lmaSwgb3IgaXMgdGhpcyBkcml2ZXIgaW1wbGVtZW50aW5nIHNvbWV0aGluZyBtb3JlIGJlc3Bva2U/IEkgc2hvdWxkIGJlIHRoaW5raW5nIGFib3V0IHRoZSBrZXJuZWwgdmVyc2lvbiBjb21wYXRpYmlsaXR5IGhlcmUsIGFzIHRoYXQgY291bGQgYWxzbyByZXZlYWwgYSBsb3QgYWJvdXQgdGhlIGRlcGVuZGVuY3kgdHJlZS4gQWxzbywgd2lsbCBpdCB1c2UgYW55IGN1c3RvbSBrZXJuZWwgbW9kdWxlcyB0byBnZXQgZGF0YSBmcm9tIHRoZSBib2FyZD8KCkkgaGF2ZSB0byB0aGluayBhYm91dCB0aGUgdG9vbGNoYWluIGFzIHdlbGwuIFdoYXQgY29tcGlsZXIgdmVyc2lvbiBhbmQgbGlicmFyaWVzIGFyZSBsaWtlbHkgbmVlZGVkIGZvciBjb21waWxhdGlvbj8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBidWlsZCBmbGFncyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIHBlcmhhcHMgcmVsYXRlZCB0byBkZWJ1ZyBzeW1ib2xzIG9yIHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucz8gTGV0JiMzOTtzIGFzc3VtZSBpdCBzdXBwb3J0cyB0aGUgbGF0ZXN0IGJ1aWxkLCBidXQgaXQgd2lsbCBiZSB1c2VmdWwgdG8gY2hlY2sgdGhlIGNvbXBhdGliaWxpdHkgbGlzdCwgaWYgaXQgZXhpc3RzLgoKSSYjMzk7bSBtZW50YWxseSBjcmVhdGluZyBhIGRlcGVuZGVuY3kgZ3JhcGgsIHNlZWluZyBob3cgYFJUVzg4Xzg4MjJDVWAgZml0cyB3aXRoaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBJJiMzOTttIGltYWdpbmluZyBhIG11bHRpLXRpZXJlZCBhcmNoaXRlY3R1cmUsIGFuZCB3YW50IHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGVhY2ggb2YgaXRzIGNvbXBvbmVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYXQgZWFjaCBsZXZlbCB0byBlbnN1cmUgSSBjYW4gYWRkcmVzcyBhbnkgcG90ZW50aWFsIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODhfODgyMkNVJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZz0xMDQ9Y29uZmlnIFJUVzg4Xzg4MjJDU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTE1OmNvbmZpZyBSVFc4OF84ODIyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxNDMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIEtjb25maWcqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHNvbWUgZmVhdHVyZSBvciBvcHRpb24gaXMgY29udHJvbGxlZC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBzdGFydCBieSBsb29raW5nIGF0IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnYCBmaWxlLCBhcm91bmQgbGluZSAxMTUuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjaGVjayB0aGUgZ2VuZXJhbCBzZXR0aW5ncyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIGRyaXZlci4gSG9wZWZ1bGx5LCBpdCYjMzk7bGwgcHJvdmlkZSBzb21lIGNsYXJpdHkgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZHJpdmVycyBhcmUgYnVpbHQgYW5kIGNvbmZpZ3VyZWQsIGFuZCBsaW5lIDExNSBmZWVscyBsaWtlIGEgZ29vZCBzcG90IHRvIHN0YXJ0IG15IHNlYXJjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkNFIGNoaXBzZXRcbiAxMDE6XHRcbiAxMDI6XHRcdCAgODAyLjExYWMgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxMDM6XHRcbiAxMDQ6XHRjb25maWcgUlRXODhfODgyMkNTXG4gMTA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDEwNjpcdFx0ZGVwZW5kcyBvbiBNTUNcbiAxMDc6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gMTA4Olx0XHRzZWxlY3QgUlRXODhfU0RJT1xuIDEwOTpcdFx0c2VsZWN0IFJUVzg4Xzg4MjJDXG4gMTEwOlx0XHRoZWxwXG4gMTExOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQ1MgY2hpcHNldFxuIDExMjpcdFxuIDExMzpcdFx0ICA4MDIuMTFhYyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDExNDpcdFxuIDExNTpcdGNvbmZpZyBSVFc4OF84ODIyQ1VcbiAxMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAxMTc6XHRcdGRlcGVuZHMgb24gVVNCXG4gMTE4Olx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDExOTpcdFx0c2VsZWN0IFJUVzg4X1VTQlxuIDEyMDpcdFx0c2VsZWN0IFJUVzg4Xzg4MjJDXG4gMTIxOlx0XHRoZWxwXG4gMTIyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQ1UgY2hpcHNldFxuIDEyMzpcdFxuIDEyNDpcdFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gMTI1Olx0XG4gMTI2Olx0Y29uZmlnIFJUVzg4Xzg3MjNERVxuIDEyNzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDEyODpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAxMjk6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODM5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYFJUVzg4Xzg4MjJDVWAgRGVwZW5kZW5jeSBhbmQgTW9kaWZpZWQgRnVuY3Rpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYFJUVzg4Xzg4MjJDVWAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgVVNCYCBhbmQgaW1wbGljaXRseSBlbmFibGVzIGBSVFc4OF84ODIyQ2AuIFRoaXMgbWFrZXMgc2Vuc2U7IGlmIGl0JiMzOTtzIGEgVVNCIGltcGxlbWVudGF0aW9uLCBpdCB3aWxsIGxpa2VseSBiZSBidWlsdCBvbiB0b3Agb2YgdGhlIGJhc2UgY2hpcC4gVGhlIHBhdGNoIHRhcmdldHMgYHJ0dzg4MjJjLmNgLCB3aGljaCBpcyBvbmx5IGNvbXBpbGVkIGlmIGBSVFc4OF84ODIyQ2AgaXMgY29uZmlndXJlZC4gVGhlcmVmb3JlLCB0byBlZmZlY3RpdmVseSB0ZXN0IHRoaXMsIEkgbmVlZCB0byBlbmFibGUgYFJUVzg4Xzg4MjJDVWAgYmVjYXVzZSB0aGF0IHNob3VsZCBhbGxvdyBtZSB0byB0ZXN0IHRocm91Z2ggVVNCIGVtdWxhdGlvbi4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSBiZWluZyBtb2RpZmllZD8gTGV0JiMzOTtzIHRha2UgYSBsb29rLiBJIHNlZTogYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCAoYSBuZXcgZnVuY3Rpb24pLCBgcnR3ODgyMmNfZGFjX2lxX3NvcnRgLCBgcnR3ODgyMmNfZGFjX2lxX29mZnNldGAsIGBydHc4ODIyY19kYWNfaXFfY2hlY2tgLCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgLCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIFRoZXNlIGFyZSBhbGwgZGVjbGFyZWQgYXMgc3RhdGljLCBzbyB0aGV5JiMzOTtyZSBpbnRlcm5hbCB0byB0aGUgZmlsZS4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBub24tc3RhdGljIGVudHJ5IHBvaW50cyBjYWxsIHRoZXNlIGZ1bmN0aW9ucywgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4KCk9rYXksIGxldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBjYWxscyB0byBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gSSBzZWUgdGhhdCBpdCYjMzk7cyBjYWxsZWQgYnkgYHJ0dzg4MjJjX2RhY19jYWxfc3RlcDJgLCBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwM2AsIGBydHc4ODIyY19kYWNfY2FsX3N0ZXA0YCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX2FkY2AuIFRob3NlIGZvdXIgYXJlIGFsbCBjYWxsZWQgYnkgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiBOb3csIG15IG5leHQgcXVlc3Rpb24gaXMsIHdobyBjYWxscyBgcnR3ODgyMmNfcmZfZGFjX2NhbGA/IFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBleGVjdXRpb24gcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODgyMmNfcmZfZGFjX2NhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz04NDI9c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4ODM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfZGFjX2NhbChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3Nzg9c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3Nzkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3ODA6XHRydHc4ODIyY19yZl9kYWNfY2FsKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc4MS1cdHJ0dzg4MjJjX3JmX3gyX2NoZWNrKHJ0d2Rldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MTIxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgUkYgSW5pdGlhbGl6YXRpb24gQ2FsbCoqCgpBbHJpZ2h0LCBzbyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsICYjMzQ7V2hvJiMzOTtzIGNhbGxpbmcgYHJ0dzg4MjJjX3JmX2luaXRgPyYjMzQ7LiBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIHRoaXMuIFVuZGVyc3RhbmRpbmcgdGhlICpjYWxsZXIqIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWJzb2x1dGVseSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIFJGIGluaXRpYWxpemF0aW9uIGZsb3cgYW5kLCBjb25zZXF1ZW50bHksIHRoZSBzdGF0ZSBvZiB0aGUgc3lzdGVtIHdoZW4gUkYgaXMgcmVhZHkuIElzIGl0IGJlaW5nIGludm9rZWQgZGlyZWN0bHkgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiwgcGVyaGFwcyBmcm9tIHRoZSBib2FyZCBicmluZy11cCBjb2RlPyBPciBpcyBpdCBiZWluZyBjYWxsZWQgbGF0ZXIsIGxpa2VseSBhcyBhIHJlc3BvbnNlIHRvIHNvbWUgZXZlbnQgbGlrZSBhIFBDSSBwcm9iZSwgYSBwb3dlci11cCBzZXF1ZW5jZSwgb3IgYSBjb25uZWN0aW9uIGF0dGVtcHQ/CgpLbm93aW5nIHRoZSBjYWxsIHBhdGggd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGEgdG9uIG9mIHZhbHVhYmxlIGNvbnRleHQuIEl0IGluZm9ybXMgbWUgaWYgSSBuZWVkIHRvIGxvb2sgdXBzdHJlYW0gYXQgdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9ucyBvciBkb3duc3RyZWFtIHRvIHRoZSBzdGF0ZSBtYWNoaW5lcy4gSXQgd2lsbCBzaG93IGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiB0aGUgZHJpdmVy4oCZcyBvcGVyYXRpb24uIEl0IHdpbGwgaW5kaWNhdGUgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIFJGIHBvcnRpb24gaXMgaW5pdGlhbGl6ZWQgYW5kIHRoYXQmIzM5O3MgdGhlIGNvcmUuIEl04oCZcyB0aGUgc3RhcnRpbmcgcG9pbnQuCgpGcm9tIHRoZSBjYWxsZXIsIEkgY2FuIGRlZHVjZToKCiogICAqKlRpbWluZzoqKiBXaGVuIHRoZSBSRiBpcyBpbml0aWFsaXplZCByZWxhdGl2ZSB0byB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtIGJyaW5nLXVwIG9yIG5ldHdvcmsgc3RhY2sgaW5pdGlhbGl6YXRpb24uCiogICAqKkNvbnRleHQ6KiogV2hhdCBvdGhlciBvcGVyYXRpb25zIGFyZSBhbHJlYWR5IGNvbXBsZXRlZCB3aGVuIHRoZSBSRiBpbml0aWFsaXphdGlvbiBoYXBwZW5zLgoqICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBwcmVjb25kaXRpb25zIGFyZSAqYXNzdW1lZCogdG8gYmUgbWV0IGJlZm9yZSB0aGlzIGNhbGwuCgpJIGNhbiB0aGVuIHRyYWNlIHRoYXQgdG8gc2VlIHdoZXJlIHRoZSBjYWxsIGNhbWUgZnJvbSBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBpbiBvcmRlciB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IFJGIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHdvcmtzIGluIHJlbGF0aW9uIHRvIGl0cyBjYWxsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg4MjJjX3JmX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTc2NT1zdGF0aWMgdm9pZCBydHc4ODIyY19kb19nYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc3ODpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE4MDM9c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4NDk6XHRydHc4ODIyY19yZl9pbml0KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg1MC1cdHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQocnR3ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4OTAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIENhbGxlciBvZiBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAqKgoKQWxyaWdodCwgc28gYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gLi4uIHRoYXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gaW4gdGhlIFBIWSBjb25maWd1cmF0aW9uIGZvciB0aGF0IHNwZWNpZmljIFJlYWx0ZWsgV2lGaSBjaGlwLCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFsd2F5cyAqd2hvKiBpcyBjYWxsaW5nIHRoYXQ/IEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcXVlc3Rpb24gd2hlbiBkZWJ1Z2dpbmcsIG9wdGltaXppbmcsIG9yIGV2ZW4ganVzdCB1bmRlcnN0YW5kaW5nIGEgZHJpdmVyJiMzOTtzIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQuCgpJcyBpdCBjYWxsZWQgZGlyZWN0bHkgZnJvbSBhIGhpZ2hlci1sZXZlbCBmdW5jdGlvbiwgbWF5YmUgc29tZXRoaW5nIGV4cG9zZWQgdG8gdGhlIE1BQyBsYXllcj8gUGVyaGFwcyBpdCYjMzk7cyBiZWluZyB0cmlnZ2VyZWQgYnkgYW4gaW50ZXJydXB0IGhhbmRsZXIsIG1lYW5pbmcgaXQmIzM5O3MgcmVhY3RpbmcgdG8gaGFyZHdhcmUgZXZlbnRzPyBNYXliZSBpdCYjMzk7cyBidXJpZWQgZGVlcCB3aXRoaW4gc29tZSBzb3J0IG9mIHBvd2VyIG1hbmFnZW1lbnQgcm91dGluZSwgYWRqdXN0aW5nIFBIWSBwYXJhbWV0ZXJzIGJhc2VkIG9uIGxpbmsgc3RhdGUgb3IgcG93ZXIgcHJvZmlsZXM/IEl0IGNvdWxkIGV2ZW4gYmUgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIERldGVybWluaW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgcGFyYW1vdW50IHRvIHVuZGVyc3RhbmRpbmcgKndoeSogaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlLgoKVGhlIGRlcGVuZGVuY3kgdHJlZSBpcyBrZXk6IElzIGl0IGNhbGxlZCBieSBhIGNvcmUgZnVuY3Rpb24sIG9yIHNvbWUgb3B0aW9uYWwgZmVhdHVyZT8gV2hhdCBkb2VzIGl0IGRvIGZvciB0aGUgUEhZLCB3aGF0IHBhcnRzIG9mIHRoZSBQSFkgZG9lcyBpdCB0YWxrIHRvPyBUaGUgYW5zd2VycyB0byB0aG9zZSBxdWVzdGlvbnMgYXJlIGFsbCBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0aGUgc3lzdGVtLgoKSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBDcm9zcy1yZWZlcmVuY2luZyB0aGUgY29kZSwgdXNpbmcgYSBkZWJ1Z2dlciwgdGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3ODc9c3RhdGljIHZvaWQgcnR3ODgyMmNfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4MDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4MDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMS1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MDI6XHQucGh5X3NldF9wYXJhbVx0XHQ9IHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMy1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODgyMmNfcmVhZF9lZnVzZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2NTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqRGl2aW5nIGludG8gdGhlIGBwaHlfc2V0X3BhcmFtYCBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21ldGhpbmcgd2l0aGluIGBydHc4ODIyY19vcHNgLiBSaWdodCwgdGhhdCYjMzk7cyBwYXJ0IG9mIHRoZSBicm9hZGVyIGBzdHJ1Y3QgcnR3X2NoaXBfb3BzYCBzdHJ1Y3R1cmUuIFRoaXMgbWVhbnMgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQgb2YgdGhlIGRyaXZlciYjMzk7cyBpbnRlcmZhY2UuIE5vdywgSSBzZWUgdGhhdCBgcGh5X3NldF9wYXJhbWAgaXMgYmVpbmcgaW52b2tlZCDigJMgYW5kIHRoZSBjb3JlIGRyaXZlciBpcyB0aGUgb25lIGNhbGxpbmcgaXQuIFRoYXTigJlzIGEga2V5IGRldGFpbCEgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9uKHMpIHdoZXJlIGBwaHlfc2V0X3BhcmFtYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgY29yZSBsb2dpYy4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIHByb3ZpZGUgdmFsdWFibGUgY29udGV4dCBhcm91bmQgd2hhdCBwYXJhbWV0ZXJzIGFyZSBiZWluZyBzZXQgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcywgYW5kIHdpbGwgaW5mb3JtIG15IGRpYWdub3Npcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfc2V0X3BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTM3ND1pbnQgcnR3X3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE0MTM6XHRjaGlwLVx1MDAzZW9wcy1cdTAwM2VwaHlfc2V0X3BhcmFtKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oPTg2Mj1zdHJ1Y3QgcnR3X2NoaXBfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC04NjktXHRpbnQgKCpyZWFkX2VmdXNlKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjg3MDpcdHZvaWQgKCpwaHlfc2V0X3BhcmFtKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTg3MS1cdHZvaWQgKCpzZXRfY2hhbm5lbCkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggY2hhbm5lbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9NTUzPXN0YXRpYyB2b2lkIHJ0dzg3MDNiX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjU3ODpzdGF0aWMgdm9pZCBydHc4NzAzYl9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtNTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE4NDMtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg3MDNiX3JlYWRfZWZ1c2UsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTg0NDpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODcwM2JfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xODQ1LVx0LnNldF9jaGFubmVsXHRcdD0gcnR3ODcwM2Jfc2V0X2NoYW5uZWwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jPTY3PXN0YXRpYyB2b2lkIHJ0dzg3MjNkX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM6ODU6c3RhdGljIHZvaWQgcnR3ODcyM2RfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9MTM5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzIzZF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTEzOTQtXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxMzk1Olx0LnBoeV9zZXRfcGFyYW1cdFx0PSBydHc4NzIzZF9waHlfc2V0X3BhcmFtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTEzOTYtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg3MjN4X3JlYWRfZWZ1c2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODEyYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkxNi1cdC5wb3dlcl9vZmZcdFx0PSBydHc4ODEyYV9wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6OTE3Olx0LnBoeV9zZXRfcGFyYW1cdFx0PSBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkxOC1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODh4eGFfcmVhZF9lZnVzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MjY1PXN0YXRpYyB2b2lkIHJ0dzg4MTRhX2NvbmZpZ19jY2tfcnhfYW50ZW5uYV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTI4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyODM6c3RhdGljIHZvaWQgcnR3ODgxNGFfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTI4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jPTIwNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgxNGFfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDUyLVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MjA1MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODgxNGFfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDU0LVx0LnJlYWRfZWZ1c2VcdFx0PSBydHc4ODE0YV9yZWFkX2VmdXNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYz04NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMWFfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NjItXHQucG93ZXJfb2ZmXHRcdD0gcnR3ODgyMWFfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jOjg2MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NjQtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg4eHhhX3JlYWRfZWZ1c2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jPTE1MT1zdGF0aWMgdm9pZCBydHc4ODIxY19waHlfYmZfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTU4OnN0YXRpYyB2b2lkIHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYz0xNjU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjFjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY2MC1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jOjE2NjE6XHQucGh5X3NldF9wYXJhbVx0XHQ9IHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY2Mi1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODgyMWNfcmVhZF9lZnVzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MTQ1PXN0YXRpYyB2b2lkIHJ0dzg4MjJiX3BoeV9iZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTE1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYzoxNTI6c3RhdGljIHZvaWQgcnR3ODgyMmJfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTE1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jPTIxNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0yMTUyLVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE1MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODgyMmJfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0yMTU0LVx0LnJlYWRfZWZ1c2VcdFx0PSBydHc4ODIyYl9yZWFkX2VmdXNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzg3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTgwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxODAzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDEtXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAyOlx0LnBoeV9zZXRfcGFyYW1cdFx0PSBydHc4ODIyY19waHlfc2V0X3BhcmFtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDMtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg4MjJjX3JlYWRfZWZ1c2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODkxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkZXZpY2UgY29tZXMgdG8gbGlmZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBgcnR3X3Bvd2VyX29uYCwgdGhhdCBzZWVtcyBsaWtlIHRoZSBvYnZpb3VzIGVudHJ5IHBvaW50LCByaWdodD8gQnV0IHRoZW4gSSBzYXcgdGhhdCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgaXMgYWxzbyBjYWxsZWQgYnkgYHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZWAuIFRoYXQgZmVlbHMgaW50ZXJuYWwgdGhvdWdoLCBzbyBJIGRpc21pc3NlZCBpdC4KClNvLCB0aGUgdHJhY2UgbG9va3MgbGlrZSBgcnR3X3Bvd2VyX29uYCAtJmd0OyBgcGh5X3NldF9wYXJhbWAgLSZndDsgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIC0mZ3Q7IGBydHc4ODIyY19yZl9pbml0YCAtJmd0OyBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuCgpOb3csIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhbnRzIG1lIHRvIGF2b2lkIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIE15IGZpcnN0IHRob3VnaHQgd2FzIHdoZXRoZXIgYHJ0d19wb3dlcl9vbmAgd291bGQgYmUgc3VpdGFibGUsIGJ1dCBpdOKAmXMgcHJvYmFibHkgdG9vIGdlbmVyaWMsIHNvIEkgc2hvdWxkIGRpZyBkZWVwZXIuCgpUaGUgcHJvbXB0IHdhbnRzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gT2theSwgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGlzIGEgcG9zc2liaWxpdHkuIEJ1dCB0aGF0JiMzOTtzIHN0YXRpYyEgV2FpdCwgaXQmIzM5O3MgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIGluIGBydHc4ODIyY19vcHNgLiAqQWgqLCB0aGF0JiMzOTtzIHRoZSBrZXkuIEZ1bmN0aW9uIHBvaW50ZXJzIGF2b2lkIGlubGluaW5nIGJlY2F1c2UgdGhlIGNvbXBpbGVyIG5lZWRzIHRvIGJlIGFibGUgdG8gcmVzb2x2ZSBhbiBhZGRyZXNzLiBUaGF0JiMzOTtzIGdvb2Q7IGl0IG1lYW5zIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBoYXMgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMuCgpCdXQsIHRoZSBwcm9tcHQgd2FudHMgdG8gYXZvaWQgc3RhdGljIGZ1bmN0aW9ucywgc28gSSBzaG91bGQgbG9vayBpbnRvIHRoaXMgZnVydGhlci4gSSYjMzk7bGwgY2hlY2sgaXRzIGRlZmluaXRpb24gdG8gY29uZmlybSBpdCYjMzk7cyBzdGF0aWMuIFllcywgaXQgaXMgc3RhdGljLgoKQnV0LCB0aGUgcHJvbXB0IGFsc28gc2F5cyBpdCBwcmVmZXJzIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLCBzbyB3aGF0IGFib3V0IGBydHdfcG93ZXJfb25gPyBUaGF0JiMzOTtzIG5vdCBzdGF0aWMuIEkmIzM5O2xsIGNoZWNrIGBydHdfcG93ZXJfb25gIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY2AgdG8gc2VlIGlmIGl0JiMzOTtzIHRoZSByaWdodCBjaG9pY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19wb3dlcl9vbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTEzNTQ9c3RhdGljIGVudW0gcnR3X2xwc19kZWVwX21vZGUgcnR3X3VwZGF0ZV9scHNfZGVlcF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTM3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjEzNzQ6aW50IHJ0d19wb3dlcl9vbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTM3NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQ0Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNDQzOkVYUE9SVF9TWU1CT0wocnR3X3Bvd2VyX29uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmg9MjI3MT1pbnQgcnR3X3dhaXRfZmlybXdhcmVfY29tcGxldGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjIyNzI6aW50IHJ0d19wb3dlcl9vbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTIyNzMtdm9pZCBydHdfY29yZV9md19zY2FuX25vdGlmeShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBib29sIHN0YXJ0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTgzNzpcdC5wb3dlcl9vblx0XHQ9IHJ0d19wb3dlcl9vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xODM4LVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jPTEzOTI9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODcyM2Rfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jOjEzOTM6XHQucG93ZXJfb25cdFx0PSBydHdfcG93ZXJfb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtMTM5NC1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYz0yMDUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MTRhX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyMDUxOlx0LnBvd2VyX29uXHRcdD0gcnR3X3Bvd2VyX29uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTIwNTItXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIxY19vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTY1OTpcdC5wb3dlcl9vblx0XHQ9IHJ0d19wb3dlcl9vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNjYwLVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jPTIxNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmJfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jOjIxNTE6XHQucG93ZXJfb25cdFx0PSBydHdfcG93ZXJfb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE1Mi1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJjX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAwOlx0LnBvd2VyX29uXHRcdD0gcnR3X3Bvd2VyX29uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDEtXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwNTQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAzMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBydHdfcG93ZXJfb24gQ2FsbCBDaGFpbioqCgpPa2F5LCBzbyBgcnR3X3Bvd2VyX29uYCBpcyBleHBvcnRlZCwgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEJ1dCwgaGFuZyBvbiBhIHNlY29uZCwgbXkgaW50dWl0aW9uIGtpY2tzIGluLCBpdCYjMzk7cyBjYWxsZWQgYnkgbWFjODAyMTEgd2hlbiB0aGUgaW50ZXJmYWNlIGNvbWVzIHVwLiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBjYWxsIGNoYWluPyBMZXQmIzM5O3MgdHJhY2UgaXQgYW5kIHNlZS4KClRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyBzZXZlcmFsIGZ1bmN0aW9uczogYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgLCBgcnR3ODgyMmNfZGFjX2lxX2NoZWNrYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBJbW1lZGlhdGVseSBJIHJlY29nbml6ZSB0aGF0IHRoZXkgYWxsIHJlbGF0ZSB0byBEQUMgY2FsaWJyYXRpb24sIGFzIGV4cGVjdGVkLiBUaGV5IGFyZSBhbGwgY2FsbGVkIGZyb20gYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiBFeGNlbGxlbnQsIHRoYXQmIzM5O3Mgb3VyIG5leHQgbGluay4KCk5vdywgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGlzIHRyaWdnZXJlZCBieSBgcnR3ODgyMmNfcmZfaW5pdGAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIGBydHc4ODIyY19yZl9pbml0YCBpcyBjYWxsZWQgYnkgYm90aCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19kb19nYXBrYC4gQWhhIQoKQnV0IHdoYXQgYWJvdXQgYHJ0dzg4MjJjX2RvX2dhcGtgPyBpcyBpdCBjYWxsZWQgYnkgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gLCB0aGF0JiMzOTtzIGFuIGludGVyZXN0aW5nIHF1ZXN0aW9uLiBMZXQmIzM5O3MgbWFrZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY19kb19nYXBrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3MjM9c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2NTpzdGF0aWMgdm9pZCBydHc4ODIyY19kb19nYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQxMTk9c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMjEtXHRydHc4ODIyY19yZmtfcG93ZXJfc2F2ZShydHdkZXYsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTIyOlx0cnR3ODgyMmNfZG9fZ2FwayhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMjMtXHRydHc4ODIyY19kb19pcWsocnR3ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxODUKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgUEhZIENhbGlicmF0aW9uIFJvdXRpbmUqKgoKT2theSwgc28gSSBzZWUgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAgaXMgbWVudGlvbmVkIGluIHRoZSBjb2RlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoZXJlIGlzIGl0IGJlaW5nICpjYWxsZWQqIGZyb20/IEkgc3VzcGVjdCBpdCYjMzk7cyBsaWtlbHkgY2FsbGVkIHdpdGhpbiB0aGUgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UsIGdpdmVuIHRoZSBuYW1lLiBUbyBjb25maXJtIHRoaXMsIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCBhbmQgdmVyaWZ5IHRoZSByZWxhdGlvbnNoaXAuIExldCBtZSBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGVzZSB0d28gZnVuY3Rpb25zIGFuZCBzZWUgaWYgbXkgaHVuY2ggaXMgY29ycmVjdC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IHRyaWdnZXJpbmcgbWVjaGFuaXNtIGZvciB0aGlzIGNhbGlicmF0aW9uOyBpcyBpdCBiYXNlZCBvbiBwYXJhbWV0ZXIgY2hhbmdlcywgcG93ZXItdXAgc2VxdWVuY2UsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIGNoZWNrIHNob3VsZCBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQwNzc9c3RhdGljIHZvaWQgcnR3ODgyMmNfZG9fZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDExOTpzdGF0aWMgdm9pZCBydHc4ODIyY19waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00MTIwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MTYtXHQuZHBrX3RyYWNrXHRcdD0gcnR3ODgyMmNfZHBrX3RyYWNrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MTc6XHQucGh5X2NhbGlicmF0aW9uXHQ9IHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTE4LVx0LmNja19wZF9zZXRcdFx0PSBydHc4ODIyY19waHlfY2NrX3BkX3NldCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MjkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIENhbGlicmF0aW9uIFJvdXRpbmUqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgY2x1ZSBwb2ludHMgdG8gYHJ0dzg4MjJjX29wc2AsIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb250ZXh0IG9mIHRoZSBgcGh5X2NhbGlicmF0aW9uYCBjYWxsLiBUbyBkbyB0aGF0LCBJIG5lZWQgdG8gdHJhY2UgaXQuIFdoZXJlIGV4YWN0bHkgaXMgdGhpcyBjYWxpYnJhdGlvbiBmdW5jdGlvbiBpbnZva2VkPyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbGwgdGhlIHBvaW50cyBpbiB0aGUgY29kZSB3aGVyZSBgcGh5X2NhbGlicmF0aW9uYCBpcyBjYWxsZWQgd2l0aGluIHRoYXQgbW9kdWxlLCBvciBwb3RlbnRpYWxseSBldmVuIGZ1cnRoZXIgYWZpZWxkIGlmIGl0JiMzOTtzIGEgY3JpdGljYWwgY29tcG9uZW50LiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGFyZWFzIG9mIGltcGFjdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBmdW5jdGlvbnMsIHdoYXQgdHJpZ2dlcnMgaXQsIGFuZCB3aGF0IGRhdGEgaXQgdXRpbGl6ZXMgdG8gYWNoaWV2ZSBpdHMgZ29hbC4gTGV0JiMzOTtzIHN0YXJ0IHRoZSBzZWFyY2guLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2NhbGlicmF0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWM4MDIxMS5jPTQ2Mj1zdGF0aWMgaW50IHJ0d19vcHNfc3RhcnRfYXAoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWM4MDIxMS5jLTQ3Mi1cdHJ0d19zdG9yZV9vcF9jaGFuKHJ0d2RldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21hYzgwMjExLmM6NDczOlx0Y2hpcC1cdTAwM2VvcHMtXHUwMDNlcGh5X2NhbGlicmF0aW9uKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21hYzgwMjExLmMtNDc0LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJ0d2Rldi1cdTAwM2VtdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9OTE1PXZvaWQgcnR3X2NoaXBfcHJlcGFyZV90eChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkyMC1cdFx0cnR3ZGV2LVx1MDAzZW5lZWRfcmZrID0gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5MjE6XHRcdGNoaXAtXHUwMDNlb3BzLVx1MDAzZXBoeV9jYWxpYnJhdGlvbihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTIyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oPTg2Mj1zdHJ1Y3QgcnR3X2NoaXBfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC04ODgtXHR2b2lkICgqZmFsc2VfYWxhcm1fc3RhdGlzdGljcykoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaDo4ODk6XHR2b2lkICgqcGh5X2NhbGlicmF0aW9uKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTg5MC1cdHZvaWQgKCpkcGtfdHJhY2spKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYz0xMjc1PXZvaWQgcnR3ODcwM2JfaXFrX2ZpbGxfYV9tYXRyaXgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgY29uc3QgczMyIHJlc3VsdFtdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xMzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjEzMjE6c3RhdGljIHZvaWQgcnR3ODcwM2JfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTMyMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jPTE1ODc9c3RhdGljIHZvaWQgcnR3ODcwM2JfcGh5X3B3cnRyYWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE2MzQtXHRpZiAoZG9faXFrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjE2MzU6XHRcdHJ0dzg3MDNiX3BoeV9jYWxpYnJhdGlvbihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE2MzYtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYz0xODM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg3MDNiX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTg1NC1cdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXHQ9IHJ0dzg3MjN4X2ZhbHNlX2FsYXJtX3N0YXRpc3RpY3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTg1NTpcdC5waHlfY2FsaWJyYXRpb25cdD0gcnR3ODcwM2JfcGh5X2NhbGlicmF0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE4NTYtXHQuZHBrX3RyYWNrXHRcdD0gTlVMTCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9ODI0PXZvaWQgcnR3ODcyM2RfaXFrX29uZV9yb3VuZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgcmVzdWx0W11bSVFLX05SXSwgdTggdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtOTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jOjkyNTpzdGF0aWMgdm9pZCBydHc4NzIzZF9waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy05MjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYz0xMzIyPXN0YXRpYyB2b2lkIHJ0dzg3MjNkX3BoeV9wd3J0cmFjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xMzY5LVx0aWYgKGRvX2lxaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxMzcwOlx0XHRydHc4NzIzZF9waHlfY2FsaWJyYXRpb24ocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xMzcxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9MTM5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzIzZF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTE0MDktXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1x0PSBydHc4NzIzeF9mYWxzZV9hbGFybV9zdGF0aXN0aWNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jOjE0MTA6XHQucGh5X2NhbGlicmF0aW9uXHQ9IHJ0dzg3MjNkX3BoeV9jYWxpYnJhdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xNDExLVx0LmNja19wZF9zZXRcdFx0PSBydHc4NzIzZF9waHlfY2NrX3BkX3NldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM9Nzg4PXN0YXRpYyB2b2lkIHJ0dzg4MTJhX2RvX2lxayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYy04MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6ODQwOnN0YXRpYyB2b2lkIHJ0dzg4MTJhX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTg0MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODEyYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkzMC1cdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXHQ9IHJ0dzg4eHhhX2ZhbHNlX2FsYXJtX3N0YXRpc3RpY3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6OTMxOlx0LnBoeV9jYWxpYnJhdGlvblx0PSBydHc4ODEyYV9waHlfY2FsaWJyYXRpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmMtOTMyLVx0LmNja19wZF9zZXRcdFx0PSBydHc4OHh4YV9waHlfY2NrX3BkX3NldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MTc2Nz1zdGF0aWMgdm9pZCBydHc4ODE0YV9kb19pcWsoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMTc5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoxNzkyOnN0YXRpYyB2b2lkIHJ0dzg4MTRhX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTE3OTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYz0yMDUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MTRhX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMjA2Ni1cdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXHQ9IHJ0dzg4MTRhX2ZhbHNlX2FsYXJtX3N0YXRpc3RpY3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MjA2NzpcdC5waHlfY2FsaWJyYXRpb25cdD0gcnR3ODgxNGFfcGh5X2NhbGlicmF0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTIwNjgtXHQuY2NrX3BkX3NldFx0XHQ9IHJ0dzg4MTRhX3BoeV9jY2tfcGRfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYz02NTU9c3RhdGljIHZvaWQgcnR3ODgyMWFfZG9faXFrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jLTY4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYzo2ODk6c3RhdGljIHZvaWQgcnR3ODgyMWFfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtNjkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmM9ODYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjFhX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtODc2LVx0LmZhbHNlX2FsYXJtX3N0YXRpc3RpY3NcdD0gcnR3ODh4eGFfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYzo4Nzc6XHQucGh5X2NhbGlicmF0aW9uXHQ9IHJ0dzg4MjFhX3BoeV9jYWxpYnJhdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NzgtXHQuY2NrX3BkX3NldFx0XHQ9IHJ0dzg4eHhhX3BoeV9jY2tfcGRfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYz03NzQ9c3RhdGljIHZvaWQgcnR3ODgyMWNfZG9faXFrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTgwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYzo4MDI6c3RhdGljIHZvaWQgcnR3ODgyMWNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtODAzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIxY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE2NzMtXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1x0PSBydHc4ODIxY19mYWxzZV9hbGFybV9zdGF0aXN0aWNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jOjE2NzQ6XHQucGh5X2NhbGlicmF0aW9uXHQ9IHJ0dzg4MjFjX3BoeV9jYWxpYnJhdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNjc1LVx0LmNja19wZF9zZXRcdFx0PSBydHc4ODIxY19waHlfY2NrX3BkX3NldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MTA3MT1zdGF0aWMgdm9pZCBydHc4ODIyYl9kb19pcWsoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMTA5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYzoxMDk2OnN0YXRpYyB2b2lkIHJ0dzg4MjJiX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTEwOTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYz0yMTUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJiX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE2NS1cdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXHQ9IHJ0dzg4MjJiX2ZhbHNlX2FsYXJtX3N0YXRpc3RpY3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE2NjpcdC5waHlfY2FsaWJyYXRpb25cdD0gcnR3ODgyMmJfcGh5X2NhbGlicmF0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTIxNjctXHQucHdyX3RyYWNrXHRcdD0gcnR3ODgyMmJfcHdyX3RyYWNrLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00MDc3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RvX2RwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00MTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxMTk6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDEyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQ4OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTE2LVx0LmRwa190cmFja1x0XHQ9IHJ0dzg4MjJjX2Rwa190cmFjayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTE3Olx0LnBoeV9jYWxpYnJhdGlvblx0PSBydHc4ODIyY19waHlfY2FsaWJyYXRpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkxOC1cdC5jY2tfcGRfc2V0XHRcdD0gcnR3ODgyMmNfcGh5X2Nja19wZF9zZXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTczCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNzQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZWFsdGVrIERyaXZlciBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBleGVjdXRpb24gZmxvdyBoZXJlLCB0cnlpbmcgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBtb2RpZmllZCBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBydHdfY2hpcF9wcmVwYXJlX3R4YCwgc2luY2UgdGhhdCBjYWxscyBgcGh5X2NhbGlicmF0aW9uYCwgYW5kIGFsc28gYHJ0d19vcHNfc3RhcnRfYXBgIHdoaWNoICphbHNvKiBjYWxscyBgcGh5X2NhbGlicmF0aW9uYC4gQnV0IHdhaXQsIGBydHdfY2hpcF9wcmVwYXJlX3R4YCBpcyBwYXJ0IG9mIHRoZSBNQUM4MDIxMSBwYWNrZXQgdHJhbnNtaXNzaW9uIHByb2Nlc3MsIHNvIHRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlICpiZXN0KiBlbnRyeSBwb2ludC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGRlZXBlci4KCmBydHdfcG93ZXJfb25gIGxvb2tzIHByb21pc2luZyBhcyBhbiBpbml0aWFsIGVudHJ5IHBvaW50LiBMZXQgbWUgY29uZmlybSBpZiBpdCYjMzk7cyBleHBvcnRlZCBhbmQsIHllcCwgaXQgaXMuIEJ1dCwgSSBuZWVkIHRvIGdldCAqZGVlcGVyKiBpbnRvIHRoZSBjb2RlIHRvIHRoZSBhY3R1YWwgZnVuY3Rpb25zIG9mIGludGVyZXN0LgoKTGV0JiMzOTtzIGxvb2sgbW9yZSBjbG9zZWx5IGF0IGBwaHlfY2FsaWJyYXRpb25gIGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4gSSByZWNhbGwgdGhhdCBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYCBhbmQgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFyZSBib3RoIHN0YXRpYywgYnV0IHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBgcGh5X2NhbGlicmF0aW9uYCBhbmQgYHBoeV9zZXRfcGFyYW1gIHJlc3BlY3RpdmVseS4gTm93LCB0aGlzIGlzIGltcG9ydGFudC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0LCBzaW5jZSB0aGVzZSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHRoZXkgd29uJiMzOTt0IGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgdGhlcmVmb3JlLCB0aGV5IGFyZSBkaXN0aW5jdCBzeW1ib2xzLiBTbywgYXMgdGhlIHByb21wdCBkaXJlY3RzLCBJIGNhbiBjb25zaWRlciB0aGVtIHZhbGlkIGVudHJ5IHBvaW50cy4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdCEgQmFzZWQgb24gdGhlIHByb21wdCBJIGNhbiBsaXN0IGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGFuZCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAuCgpCdXQgSSByZW1lbWJlciB0aGUgbW9kaWZpZWQgY29kZSBpcyBpbiBgcnR3ODgyMmNfcmZfZGFjX2NhbGAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBydHc4ODIyY19yZl9pbml0YC4gTGV0IG1lIHRyYWNlIHRoZSBjYWxscy4gT2theSwgYHJ0dzg4MjJjX3JmX2luaXRgIGlzIGNhbGxlZCBieSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19kb19nYXBrYC4gQW5kIGBydHc4ODIyY19kb19nYXBrYCBpcyBjYWxsZWQgYnkgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAuIEJpbmdvISBUaGlzIGNvbmZpcm1zIHRoYXQgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFuZCBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYCBhcmUgdGhlICpleGFjdCogZW50cnkgcG9pbnRzIGZvciB0aGUgcGFydCBvZiB0aGUgY29kZSBJJiMzOTttIGludGVyZXN0ZWQgaW4hCgpOb3cgSSBuZWVkIHRvIGVuc3VyZSB0aGV5IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBzdGF0aWMgbmF0dXJlIG9mIGBydHc4ODIyY19yZl9pbml0YCBhbmQgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiBZZXAsIHRoZXkmIzM5O3JlIGJvdGggc3RhdGljLiBBbmQgdGhleSBhcmUgb25seSBjYWxsZWQgaW4gYSBjb3VwbGUgb2YgcGxhY2VzLiBUaGlzICptaWdodCogbWVhbiB0aGUgY29tcGlsZXIgaXMgZnJlZSB0byBpbmxpbmUgdGhlbS4gQnV0LCBzaW5jZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGFyZSBmdW5jdGlvbiBwb2ludGVycywgSSB0aGluayBpdCYjMzk7cyBzYWZlc3QgdG8gZm9jdXMgb24gdGhlc2UuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24uIEkgcmVjYWxsIGZyb20gdGhlIGNvbmZpZyBmaWxlIHRoYXQgYFJUVzg4Xzg4MjJDVWAgaXMgbmVlZGVkIHRvIGVuYWJsZSB0aGUgVVNCIGRyaXZlci4gV2FpdCwgd2FpdCwgYFJUVzg4Xzg4MjJDYCBpcyB0aGUgY29uZmlnIHRoYXQgYWN0dWFsbHkgY29tcGlsZXMgYHJ0dzg4MjJjLmNgLCB3aGljaCBpcyB0aGUgZmlsZSB3aXRoIHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdC4gSG1tLCBpdCYjMzk7cyBhIGhpZGRlbiBjb25maWcsIHNlbGVjdGVkIGJ5IGBSVFc4OF84ODIyQ0VgLCBgUlRXODhfODgyMkNTYCwgYW5kIGBSVFc4OF84ODIyQ1VgLiBSaWdodCwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODhfODgyMkMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTI2PWNvbmZpZyBSVFc4OF84ODIyQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOTpjb25maWcgUlRXODhfODgyMkNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTgyPWNvbmZpZyBSVFc4OF84ODIyQlVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6OTM6Y29uZmlnIFJUVzg4Xzg4MjJDRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTA0OmNvbmZpZyBSVFc4OF84ODIyQ1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMDUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTE1OmNvbmZpZyBSVFc4OF84ODIyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDU4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVFc4OCBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgUlRXODhfODgyMkNgIGlzIGEgdHJpc3RhdGUgc2V0dGluZywgYW5kIGltcG9ydGFudGx5LCBpdCBkb2VzbiYjMzk7dCBoYXZlIGEgcHJvbXB0LiBUaGF0IG1lYW5zIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBVU0IgdmFyaWFudCwgYFJUVzg4Xzg4MjJDVWAsIGlzIGNvbXBpbGVkIGluIG9yZGVyIHRvIHRlc3QgaXQgZWZmZWN0aXZlbHkgdGhyb3VnaCBVU0IuIFdhaXQgYSBtaW51dGXigKYgYFJUVzg4Xzg4MjJDVWAgaXMgKmRlcGVuZGVudCogb24gYFVTQmAuIFRoYXTigJlzIGdvb2QsIGJ1dCBpdCBtYWtlcyBtZSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB1bmRlcmx5aW5nIHJlcXVpcmVtZW50cy4gQmV0dGVyIHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgYnJvYWRlciBgUlRXODhgIGNvbmZpZ3VyYXRpb24gdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdlJiMzOTt2ZSBjb3ZlcmVkIGFsbCB0aGUgYmFzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVFc4OCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTExPWlmIFJUVzg4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTM6Y29uZmlnIFJUVzg4X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OF9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjA6Y29uZmlnIFJUVzg4X1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM6Y29uZmlnIFJUVzg4X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI0LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNjpjb25maWcgUlRXODhfODgyMkJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6Mjk6Y29uZmlnIFJUVzg4Xzg4MjJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzAtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OF84NzIzWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzozNTpjb25maWcgUlRXODhfODcwM0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM5OmNvbmZpZyBSVFc4OF84NzIzRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDM6Y29uZmlnIFJUVzg4Xzg4MjFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ2OmNvbmZpZyBSVFc4OF84OFhYQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ3LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0OTpjb25maWcgUlRXODhfODgyMUFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjUzOmNvbmZpZyBSVFc4OF84ODEyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NTc6Y29uZmlnIFJUVzg4Xzg4MTRBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTgtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjYwOmNvbmZpZyBSVFc4OF84ODIyQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NzE6Y29uZmlnIFJUVzg4Xzg4MjJCU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTcyLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6ODI6Y29uZmlnIFJUVzg4Xzg4MjJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgzLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo5Mzpjb25maWcgUlRXODhfODgyMkNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUVzg4Xzg4MjJDU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwNS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg4Xzg4MjJDVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEyNjpjb25maWcgUlRXODhfODcyM0RFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTI3LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTM3OmNvbmZpZyBSVFc4OF84NzIzRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNEUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTQ4OmNvbmZpZyBSVFc4OF84NzIzQ1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTYyOmNvbmZpZyBSVFc4OF84NzIzRFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNEVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNzM6Y29uZmlnIFJUVzg4Xzg4MjFDRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3NC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMUNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE4NDpjb25maWcgUlRXODhfODgyMUNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTg1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE5NTpjb25maWcgUlRXODhfODgyMUNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTk2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjA2OmNvbmZpZyBSVFc4OF84ODIxQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFBVS84ODExQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjE3OmNvbmZpZyBSVFc4OF84ODEyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMjg6Y29uZmlnIFJUVzg4Xzg4MTRBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIyOS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgxNEFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIzOTpjb25maWcgUlRXODhfODgxNEFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQwLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODE0QVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjUwOmNvbmZpZyBSVFc4OF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1MS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OCBkZWJ1ZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTg6Y29uZmlnIFJUVzg4X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNTktXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODggZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNjY6Y29uZmlnIFJUVzg4X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNjctXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDcyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlIHNlZW1zIHRvIGJlIGBSVFc4OGAuIFJpZ2h0LCBzbyB0aGF0IG1lYW5zIHdlJiMzOTtsbCBkZWZpbml0ZWx5IG5lZWQgdG8gaW5jbHVkZSBgUlRXODhgLCBhbmQgYWxzbywgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgUlRXODhfODgyMkNVYC4gTm8gc3VycHJpc2VzIHRoZXJlLiBIb2xkIG9uLi4uIEkmIzM5O20ganVzdCByZWNhbGxpbmcgc29tZXRoaW5nOyBgUlRXODhgIHJlbGllcyBvbiBgTUFDODAyMTFgLiBUaGF0JiMzOTtzIGFuIGltcG9ydGFudCBkZXBlbmRlbmN5IHRvIGtlZXAgaW4gbWluZDsgZ290dGEgbWFrZSBzdXJlIHRoYXQmIzM5O3MgaGFuZGxlZCBjb3JyZWN0bHkgaW4gdGhpcyBzZXR1cC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayBgUlRXODhgJiMzOTtzIGRlcGVuZGVuY2llcyBhZ2FpbiB0byBiZSBjZXJ0YWluIGV2ZXJ5dGhpbmcmIzM5O3MgaW4gb3JkZXIsIGp1c3QgdG8gY3Jvc3MtcmVmZXJlbmNlIGFuZCBjb25maXJtIGl0IGFsbCBqaXZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRtZW51Y29uZmlnIFJUVzg4XG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgwMi4xMWFjIHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBtYWM4MDIxMS1iYXNlZCB3aXJlbGVzcyBkcml2ZXJzIHRoYXRcbiAgIDc6XHRcdCAgZW5hYmxlcyBSZWFsdGVrIElFRUUgODAyLjExYWMgd2lyZWxlc3MgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgcnR3ODguXG4gIDEwOlx0XG4gIDExOlx0aWYgUlRXODhcbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgUlRXODhfQ09SRVxuICAxNDpcdFx0dHJpc3RhdGVcbiAgMTU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBSVFc4OF9QQ0lcbiAgMTg6XHRcdHRyaXN0YXRlXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFJUVzg4X1NESU9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYwMDMKCQkJCQkJCW91dHB1dDogMjIyCgkJCQkJCQl0aG91Z2h0czogMTM1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUmVhbHRlayBydHc4ODIyYyBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcqKgoKT2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBhcHByb2FjaCBmb3IgZnV6emluZyB0aGlzIFJlYWx0ZWsgZHJpdmVyIHBhdGNoLgoKRmlyc3QsIEkgc2VlIHRoYXQgdGhpcyBtb2RpZmljYXRpb24gdGFyZ2V0cyB0aGUgREFDIElRIGNhbGlicmF0aW9uIHByb2Nlc3Mgd2l0aGluIHRoZSBgcnR3ODgyMmNgIGNoaXAuIFRoaXMgY2FsaWJyYXRpb24gaXMgcGVyZm9ybWVkIGR1cmluZyBQSFkgcGFyYW1ldGVyIHNldHRpbmcgYW5kIGNhbGlicmF0aW9uLiBGcm9tIGEgY29uZmlndXJhdGlvbiBzdGFuZHBvaW50LCBgTUFDODAyMTFgIGlzIG9idmlvdXNseSByZXF1aXJlZCwgYXMgaXMgYFJUVzg4YCBmb3IgdGhlIGRyaXZlciBpdHNlbGYsIGFuZCBzcGVjaWZpY2FsbHkgYFJUVzg4Xzg4MjJDVWAgdG8gZW5hYmxlIHRoZSBVU0IgdmFyaWFudCwgd2hpY2ggd2lsbCBiZSB1c2VmdWwgZm9yIHZpcnR1YWxpemVkIGZ1enppbmcuIGBVU0JgIGlzIGFsc28gcmVxdWlyZWQsIGJ1dCBpdCYjMzk7cyBhIHN0YW5kYXJkIGNvbmZpZywgc28gSSYjMzk7bGwgaW5jbHVkZSBpdC4KCk5vdywgdGhlIGNydWNpYWwgcGFydDogaWRlbnRpZnlpbmcgdGhlIHJlbGV2YW50IHN5bWJvbHMuIFRoZSBwcm9tcHQgc3VnZ2VzdHMgcHJpb3JpdGl6aW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgYHJ0d19wb3dlcl9vbmAsIGJ1dCB0aGF0JiMzOTtzIHRvbyBicm9hZDsgaXQgbWlnaHQgdHJpZ2dlciBmdW5jdGlvbnMgYWNyb3NzIHZhcmlvdXMgYHJ0dzg4YCBjaGlwcy4gSSB3YW50IHRvIGJlIGFzIHByZWNpc2UgYXMgcG9zc2libGUuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgZnVuY3Rpb25zIGxpa2UgYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYW5kIHNvIG9uLiBTbywgd2hhdCYjMzk7cyB0aGUgYmVzdCB3YXkgdG8gaGl0IHRoYXQgY29kZT8KCkkgbG9va2VkIGF0IGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAuIFRoZXkgc2VlbSBpZGVhbCBiZWNhdXNlIHRoZXkgYXJlIHNwZWNpZmljIHRvIHRoZSBgcnR3ODgyMmNgIGNoaXAuIEkgY2hlY2tlZCBhbmQgdGhleSBhcmUgYm90aCBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gdGhlIGBydHc4ODIyY19vcHNgIHN0cnVjdC4gVGhhdCBtZWFucyB0aGUgY29tcGlsZXIgKmNhbm5vdCogaW5saW5lIHRoZW0sIHNpbmNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgbmVlZGVkLiBUaGV5JiMzOTtyZSBub24tc3RhdGljLCBzbyB0aGUgcHJvbXB0IHJlcXVpcmVtZW50cyBhcmUgc2F0aXNmaWVkLiBBbHRob3VnaCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgKmlzKiBzdGF0aWMsIHRoZSBwcm9tcHQgaXMgc2F0aXNmaWVkIGJlY2F1c2UgaXQgaXMgbm90IGlubGluZWQgYW5kIGl0cyBhZGRyZXNzIGlzIHRha2VuLgoKSSBhbHNvIGNvbnNpZGVyZWQgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLCBhcyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0ICpkaXJlY3RseSogY29udGFpbnMgdGhlIG1vZGlmaWVkIGNvZGUuIEhvd2V2ZXIsIGl0JiMzOTtzIGNhbGxlZCBieSBgcnR3ODgyMmNfcmZfaW5pdGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVgLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBJdCYjMzk7cyBsZXNzIGxpa2VseSwgYnV0IHN0aWxsIGEgcG9zc2liaWxpdHkuIFRvIGJlIHNhZmUsIEkmIzM5O2xsIHN0aWNrIHdpdGggYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFuZCBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYC4gVGhlc2Ugc2hvdWxkIGdpdmUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHRyaWdnZXIgdGhlIGNvZGUsIGFzIHRoZSBwcm9tcHQgc3BlY2lmaWVzLgoKVG8gc3VtbWFyaXplLCB0aGUgcGF0Y2ggbW9kaWZpZXMgREFDIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIGBydHc4ODIyY2Agd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgc2ltcGxpZnlpbmcgc29ydGluZyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy4gVGhpcyBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbiB1c2luZyB0aGUgYENPTkZJR19SVFc4OF84ODIyQ1VgIG9wdGlvbi4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgYWNjZXNzZWQgZHVyaW5nIFBIWSBwYXJhbWV0ZXIgc2V0dXAgYW5kIGNhbGlicmF0aW9uLCB3aGljaCBpcyB0cmlnZ2VyZWQgdmlhIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAsIHdoaWNoIGFyZSBub24taW5saW5lZCBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHJ0dzg4MjJjX29wc2AuIFRoaXMgaXMgZnVuY3Rpb25hbCBiZWNhdXNlIHRoZSBjdXN0b20gc29ydCBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9uIGlzIHJlcGxhY2VkIGJ5IHN0YW5kYXJkIGBzb3J0YCBhbmQgc2ltcGxpZmllZCBtYXRoLCBmaXhpbmcgcG90ZW50aWFsIGJ1Z3Mgb3Igc2ltcGxpZnlpbmcgY29kZS4gVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpNeSBjaG9zZW4gY29uZmlncyBhcmU6CiogICBgTUFDODAyMTFgCiogICBgUlRXODhgCiogICBgUlRXODhfODgyMkNVYAoKTXkgY2hvc2VuIHN5bWJvbHMgYXJlOgoqICAgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gCiogICBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7UlRXODgmIzM0OywKICAgICYjMzQ7UlRXODhfODgyMkNVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODgyMmNfcGh5X3NldF9wYXJhbSYjMzQ7LAogICAgJiMzNDtydHc4ODIyY19waHlfY2FsaWJyYXRpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBQyBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4ODIyYyB3aXJlbGVzcyBkcml2ZXIsIHNpbXBsaWZ5aW5nIHNvcnRpbmcgYW5kIG9mZnNldCBjYWxjdWxhdGlvbnMuIFRoaXMgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoZHVtbXkgSENEKSBieSBlbmFibGluZyB0aGUgVVNCIHZhcmlhbnQgb2YgdGhlIGRyaXZlciAoQ09ORklHX1JUVzg4Xzg4MjJDVSkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBQSFkgcGFyYW1ldGVyIHNldHVwIGFuZCBjYWxpYnJhdGlvbiwgd2hpY2ggYXJlIGFjY2Vzc2libGUgdmlhIHRoZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGNhbGxiYWNrcy4gVGhlc2UgY2FsbGJhY2tzIGFyZSBub3QgaW5saW5lZCBhcyB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyBpbiB0aGUgY2hpcCBvcGVyYXRpb25zIHN0cnVjdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7UlRXODgmIzM0OywKICAgICYjMzQ7UlRXODhfODgyMkNVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODgyMmNfcGh5X3NldF9wYXJhbSYjMzQ7LAogICAgJiMzNDtydHc4ODIyY19waHlfY2FsaWJyYXRpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBQyBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4ODIyYyB3aXJlbGVzcyBkcml2ZXIsIHNpbXBsaWZ5aW5nIHNvcnRpbmcgYW5kIG9mZnNldCBjYWxjdWxhdGlvbnMuIFRoaXMgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoZHVtbXkgSENEKSBieSBlbmFibGluZyB0aGUgVVNCIHZhcmlhbnQgb2YgdGhlIGRyaXZlciAoQ09ORklHX1JUVzg4Xzg4MjJDVSkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBQSFkgcGFyYW1ldGVyIHNldHVwIGFuZCBjYWxpYnJhdGlvbiwgd2hpY2ggYXJlIGFjY2Vzc2libGUgdmlhIHRoZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGNhbGxiYWNrcy4gVGhlc2UgY2FsbGJhY2tzIGFyZSBub3QgaW5saW5lZCBhcyB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyBpbiB0aGUgY2hpcCBvcGVyYXRpb25zIHN0cnVjdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBydHc4OCBkcml2ZXIgYnkgcmVwbGFjaW5nIGN1c3RvbSAxMC1iaXQgc2lnbi1tYWduaXR1ZGUvdHdvJiMzOTtzLWNvbXBsZW1lbnQgYXJpdGhtZXRpYyBhbmQgYSBjdXN0b20gYnViYmxlIHNvcnQgd2l0aCBzdGFuZGFyZCBgczMyYCB0eXBlcywgYHNpZ25fZXh0ZW5kMzIoKWAsIGFuZCB0aGUga2VybmVsJiMzOTtzIGJ1aWx0LWluIGBzb3J0KClgIGZ1bmN0aW9uLiBcblxuV2hpbGUgdGhlIHN0YWNrLWFsbG9jYXRlZCBhcnJheXMgYGl2YCBhbmQgYHF2YCBjb3VsZCBwb3RlbnRpYWxseSBjb250YWluIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlmIHRoZSBzYW1wbGluZyBsb29wIGluIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZSgpYCB0ZXJtaW5hdGVzIGVhcmx5IChkdWUgdG8gdGhlIGBjbnQgXHUwMDNjIDEwMDAwYCBjb25kaXRpb24pLCB0aGlzIGJlaGF2aW9yIGFuZCB0aGUgc3Vic2VxdWVudCByZWFkcyBvZiB0aGUgZW50aXJlIGFycmF5IHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBvbGQgY29kZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGFyaXRobWV0aWMgYW5kIHNvcnRpbmcgcmVmYWN0b3JpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWY0Njc3Y2ZiZTg2NDZlZmM4YjY3MjQ1YmFmYmI5YWJiN2NkYzg2NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE3OjI0OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jCmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMKQEAgLTMsNiAmIzQzOzMsOCBAQAogICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0b3BzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NvcnQuaCZndDsKICNpbmNsdWRlICYjMzQ7bWFpbi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y29leC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZncuaCYjMzQ7CkBAIC0xNTMsODQgJiM0MzsxNTUsMzAgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSwKLQkJCQkgICB1MzIgKm1pbiwgdTMyICptYXgpCiYjNDM7c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogewotCWlmICh2YWx1ZSAmZ3Q7PSAweDIwMCkgewotCQlpZiAoKm1pbiAmZ3Q7PSAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0gZWxzZSB7Ci0JCQkqbWluID0gdmFsdWU7Ci0JCX0KLQkJaWYgKCptYXggJmd0Oz0gMHgyMDApIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfSBlbHNlIHsKLQkJaWYgKCptaW4gJmx0OyAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0KLQotCQlpZiAoKm1heCAgJmd0Oz0gMHgyMDApIHsKLQkJCSptYXggPSB2YWx1ZTsKLQkJfSBlbHNlIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfQotfQomIzQzOwlzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7CiYjNDM7CXMzMiB2YiA9ICooY29uc3QgczMyICopYjsKIAotc3RhdGljIHZvaWQgX19ydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnYxLCB1MzIgKnYyKQotewotCWlmICgqdjEgJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmd0Oz0gMHgyMDApIHsKLQkJaWYgKCp2MSAmZ3Q7ICp2MikKLQkJCXN3YXAoKnYxLCAqdjIpOwotCX0gZWxzZSBpZiAoKnYxICZsdDsgMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmx0OyAweDIwMCkgewotCQlpZiAoKnYxICZndDsgKnYyKQotCQkJc3dhcCgqdjEsICp2Mik7Ci0JfSBlbHNlIGlmICgqdjEgJmx0OyAweDIwMCAmYW1wOyZhbXA7ICp2MiAmZ3Q7PSAweDIwMCkgewotCQlzd2FwKCp2MSwgKnYyKTsKLQl9CiYjNDM7CXJldHVybiAodmEgJmd0OyB2YikgLSAodmEgJmx0OyB2Yik7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpCiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdikKIHsKLQl1MzIgaSwgajsKLQotCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDIC0gMTsgaSYjNDM7JiM0MzspIHsKLQkJZm9yIChqID0gMDsgaiAmbHQ7IChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaiYjNDM7JiM0MzspIHsKLQkJCV9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCAmYW1wO2l2W2pdLCAmYW1wO2l2W2ogJiM0MzsgMV0pOwotCQkJX19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsICZhbXA7cXZbal0sICZhbXA7cXZbaiAmIzQzOyAxXSk7Ci0JCX0KLQl9CiYjNDM7CXNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiYjNDM7CXNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKQomIzQzO3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYykKIHsKLQl1MzIgcCwgbSwgdCwgaTsKJiM0MzsJczMyIHN1bSA9IDA7CiAKLQltID0gMDsKLQlwID0gMDsKLQlmb3IgKGkgPSAxMDsgaSAmbHQ7IERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKHZlY1tpXSAmZ3Q7IDB4MjAwKQotCQkJbSA9ICgweDQwMCAtIHZlY1tpXSkgJiM0MzsgbTsKLQkJZWxzZQotCQkJcCA9IHZlY1tpXSAmIzQzOyBwOwotCX0KJiM0MzsJZm9yICh1MzIgaSA9IDEwOyBpICZsdDsgREFDS19TTl84ODIyQyAtIDEwOyBpJiM0MzsmIzQzOykKJiM0MzsJCXN1bSAmIzQzOz0gdmVjW2ldOwogCi0JaWYgKHAgJmd0OyBtKSB7Ci0JCXQgPSBwIC0gbTsKLQkJdCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTsKLQl9IGVsc2UgewotCQl0ID0gbSAtIHA7Ci0JCXQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7Ci0JCWlmICh0ICE9IDB4MCkKLQkJCXQgPSAweDQwMCAtIHQ7Ci0JfQomIzQzOwlzMzIgYXZnID0gc3VtIC8gKERBQ0tfU05fODgyMkMgLSAyMCk7CiAKLQkqdmFsID0gdDsKJiM0MzsJcmV0dXJuIGF2ZyAmZ3Q7PSAwID8gYXZnIDogMHg0MDAgJiM0MzsgYXZnOwogfQogCiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aCkKQEAgLTI3MSwyOSAmIzQzOzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKQogCXJldHVybiBiYXNlX2FkZHI7CiB9CiAKLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpCiYjNDM7c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSkKIHsKLQlib29sIHJldCA9IHRydWU7CiAKLQlpZiAoKHZhbHVlICZndDs9IDB4MjAwICZhbXA7JmFtcDsgKDB4NDAwIC0gdmFsdWUpICZndDsgMHg2NCkgfHwKLQkgICAgKHZhbHVlICZsdDsgMHgyMDAgJmFtcDsmYW1wOyB2YWx1ZSAmZ3Q7IDB4NjQpKSB7Ci0JCXJldCA9IGZhbHNlOwomIzQzOwlpZiAodmFsdWUgJmd0OyAxMDAgfHwgdmFsdWUgJmx0OyAtMTAwKSB7CiAJCXJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgJiMzNDtbREFDS10gRXJyb3Igb3ZlcmZsb3dcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKJiM0MztzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KQogewogCXUzMiB0ZW1wOwotCWludCBpID0gMCwgY250ID0gMDsKJiM0MzsJdTMyIGkgPSAwLCBjbnQgPSAwOwogCiAJd2hpbGUgKGkgJmx0OyBEQUNLX1NOXzg4MjJDICZhbXA7JmFtcDsgY250ICZsdDsgMTAwMDApIHsKIAkJY250JiM0MzsmIzQzOzsKIAkJdGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpOwotCQlpdltpXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJcXZbaV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJaXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMiwgOSk7CiYjNDM7CQlxdltpXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAKIAkJaWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSAmYW1wOyZhbXA7CiAJCSAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpCkBAIC0zMDIsMTMgJiM0MzsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKIH0KIAogc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwKLQkJCQkgICAgICAgdTMyICppdiwgdTMyICpxdiwKJiM0MzsJCQkJICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsCiAJCQkJICAgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKQogewotCXUzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7Ci0JdTMyIGlfZGVsdGEsIHFfZGVsdGE7CiYjNDM7CXMzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7CiAJdTMyIHRlbXA7Ci0JaW50IGksIGNudCA9IDA7CiYjNDM7CXUzMiBpLCBjbnQgPSAwOwogCiAJZG8gewogCQlpX21pbiA9IGl2WzBdOwpAQCAtMzE2LDIzICYjNDM7MjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJCXFfbWluID0gcXZbMF07CiAJCXFfbWF4ID0gcXZbMF07CiAJCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDOyBpJiM0MzsmIzQzOykgewotCQkJcnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIGl2W2ldLCAmYW1wO2lfbWluLCAmYW1wO2lfbWF4KTsKLQkJCXJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBxdltpXSwgJmFtcDtxX21pbiwgJmFtcDtxX21heCk7CiYjNDM7CQkJaWYgKGl2W2ldICZsdDsgaV9taW4pCiYjNDM7CQkJCWlfbWluID0gaXZbaV07CiYjNDM7CQkJaWYgKGl2W2ldICZndDsgaV9tYXgpCiYjNDM7CQkJCWlfbWF4ID0gaXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZsdDsgcV9taW4pCiYjNDM7CQkJCXFfbWluID0gcXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZndDsgcV9tYXgpCiYjNDM7CQkJCXFfbWF4ID0gcXZbaV07CiAJCX0KIAotCQlpZiAoaV9tYXggJmx0OyAweDIwMCAmYW1wOyZhbXA7IGlfbWluICZsdDsgMHgyMDApCi0JCQlpX2RlbHRhID0gaV9tYXggLSBpX21pbjsKLQkJZWxzZSBpZiAoaV9tYXggJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyBpX21pbiAmZ3Q7PSAweDIwMCkKLQkJCWlfZGVsdGEgPSBpX21heCAtIGlfbWluOwotCQllbHNlCi0JCQlpX2RlbHRhID0gaV9tYXggJiM0MzsgKDB4NDAwIC0gaV9taW4pOwotCi0JCWlmIChxX21heCAmbHQ7IDB4MjAwICZhbXA7JmFtcDsgcV9taW4gJmx0OyAweDIwMCkKLQkJCXFfZGVsdGEgPSBxX21heCAtIHFfbWluOwotCQllbHNlIGlmIChxX21heCAmZ3Q7PSAweDIwMCAmYW1wOyZhbXA7IHFfbWluICZndDs9IDB4MjAwKQotCQkJcV9kZWx0YSA9IHFfbWF4IC0gcV9taW47Ci0JCWVsc2UKLQkJCXFfZGVsdGEgPSBxX21heCAmIzQzOyAoMHg0MDAgLSBxX21pbik7CiYjNDM7CQl1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pOwomIzQzOwkJdTMyIHFfZGVsdGEgPSAodTMyKShxX21heCAtIHFfbWluKTsKIAogCQlydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssCiAJCQkmIzM0O1tEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcbiYjMzQ7LApAQCAtMzQ1LDI0ICYjNDM7Mjg1LDI0IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAKIAkJaWYgKGlfZGVsdGEgJmd0OyA1IHx8IHFfZGVsdGEgJmd0OyA1KSB7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdlswXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJCXF2WzBdID0gdGVtcCAmYW1wOyAweDNmZjsKJiM0MzsJCQlpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTI7Ci0JCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJCWl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgJmFtcDsgMHgzZmYsIDkpOwogCQl9IGVsc2UgewogCQkJYnJlYWs7CiAJCX0KIAl9IHdoaWxlIChjbnQmIzQzOyYjNDM7ICZsdDsgMTAwKTsKIAotCXJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7Ci0JcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTsKJiM0MzsJKmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpOwomIzQzOwkqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCQkJCSAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpCiB7Ci0JdTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKJiM0MzsJczMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKIAl1MzIgcmZfYSwgcmZfYjsKIAogCXJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjgKCQkJCQkJCW91dHB1dDogNTgKCQkJCQkJCXRob3VnaHRzOiAzMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVFc4ODIyQyBEQUMgQ2FsaWJyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBSVFc4ODIyQyBEQUMgY2FsaWJyYXRpb24uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgY2hhbmdlcyB0byBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhbmQgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHJ0dzg4MjJjLmNgIGRyaXZlci4gVGhlIHN3aXRjaCBmcm9tIGB1MzJgIHRvIGBzMzJgIGZvciB0aGUgYGl2YCBhbmQgYHF2YCBhcnJheXMgaXMgc3RyYWlnaHRmb3J3YXJkLCBpbmRpY2F0aW5nIGEgc2hpZnQgdG93YXJkcyBzaWduZWQgaW50ZWdlciByZXByZXNlbnRhdGlvbiwgbGlrZWx5IHRvIGFjY29tbW9kYXRlIGJvdGggcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcyBpbiB0aGUgSVEgZGF0YS4gVGhhdCYjMzk7cyBhIHNlbnNpYmxlIGNoYW5nZS4gUmVwbGFjaW5nIHRoZSBjdXN0b20gc29ydGluZyBsb2dpYyB3aXRoIGBzb3J0KClgIGZyb20gYGxpbnV4L3NvcnQuaGAgaXMgYWxzbyBnb29kLiBVc2luZyB0aGUga2VybmVsJiMzOTtzIGJ1aWx0LWluIHNvcnRpbmcgZnVuY3Rpb24gaXMgZ2VuZXJhbGx5IG1vcmUgZWZmaWNpZW50LCByZWxpYWJsZSwgYW5kIG1haW50YWluYWJsZS4gQW5kIHNpbXBsaWZ5aW5nIHRoZSBvZmZzZXQgY2FsY3VsYXRpb24sIEkgbGlrZSB0aGF0LCBpdCB3b3VsZCBtYWtlIHRoZSBjb2RlIGVhc2llciB0byBmb2xsb3cuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIGFsbG9jYXRlZCBvbiB0aGUgKnN0YWNrKiBpbnNpZGUgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWA6CgpgYGBjCnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAoJCQkJICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSkKewoJczMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKLi4uCmBgYAoKUmlnaHQsIGJ1dCBhcmUgYGl2YCBhbmQgYHF2YCBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgdGhleSYjMzk7cmUgcmVhZD8gVGhhdCYjMzk7cyBteSBtYWluIGNvbmNlcm4uIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkLCB3aGljaCBjb3VsZCBsZWFkIHRvIHJhbmRvbSBiZWhhdmlvciBhbmQgaW5zdGFiaWxpdHkuIExldCYjMzk7cyBsb29rIGF0IGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBhc3N1bWUgdGhleSYjMzk7cmUgcG9wdWxhdGVkLiBXYWl0LCBkb2VzIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIGFjdHVhbGx5IGNhbGwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29udHJvbCBmbG93IGFuZCBtYWtlIHN1cmUgdGhlIGFycmF5cyBhcmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBhbGdvcml0aG0gcHJvY2Vzc2VzIHRoZW0uIEkmIzM5O2xsIHNjYW4gdGhyb3VnaCB0aGUgcmVzdCBvZiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCB0byBjb25maXJtLiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyBpZiB0aGVzZSBzdGFjayB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IHBvcHVsYXRlZCBiZWZvcmUgYmVpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0yNTA9c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMwMjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMDMtXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0zMzQ9c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9hZGMoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzcxLVx0XHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMyNCwgMHgwMDAxMDAwMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzcyOlx0XHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcdTAwMjZpYywgXHUwMDI2cWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3My1cdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zOTEtXHRcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYzNjLCBwYXRoX3NlbCAmIzQzOyAweDgxMDMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM5MjpcdFx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWMsIFx1MDAyNnFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zOTMtXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDU3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ3NTpcdHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShydHdkZXYsIFx1MDAyNmljX2luLCBcdTAwMjZxY19pbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDc2LVx0aWMgPSBpY19pbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NTA2PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfc3RlcDMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU2LVx0cnR3X3dyaXRlMzIocnR3ZGV2LCBiYXNlX2FkZHIgJiM0MzsgMHg2MCwgMHhmMDAwMDAwMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTU3Olx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWMsIFx1MDAyNnFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01NTgtXHRpZiAoaWMgXHUwMDNlPSAweDEwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDM1CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQW5hbHl6aW5nIHRoZSBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBGdW5jdGlvbioqCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBpdmAgYW5kIGBxdmAgdmFyaWFibGVzIGFyZSBwb3B1bGF0ZWQgd2l0aGluIHRoaXMgY29udGV4dC4gTXkgaW5zdGluY3QgaXMgdG8gZXhhbWluZSB0aGUgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgZnVuY3Rpb24gZGlyZWN0bHkuIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBpdCYjMzk7cyBuYW1lZCBpbiBhIHdheSB0aGF0IHN1Z2dlc3RzIGl0JiMzOTtzIGludm9sdmVkIGluIGNhbGlicmF0aW9uIGFuZCBsaWtlbHkgZGVhbHMgd2l0aCBSRiBtb2RlIHNldHRpbmdzLCB3aGljaCBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIGl0IHRvdWNoZXMgdXBvbiB0aGVzZSBpbi1waGFzZSAoSSkgYW5kIHF1YWRyYXR1cmUtcGhhc2UgKFEpIGNvbXBvbmVudHMsIGBpdmAgYW5kIGBxdmAuIExldCYjMzk7cyBnZXQgdG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMDI6XHRzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiAzMDM6XHRcdFx0XHRcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4gMzA0Olx0e1xuIDMwNTpcdFx0czMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcbiAzMDY6XHRcdHUzMiByZl9hLCByZl9iO1xuIDMwNzpcdFxuIDMwODpcdFx0cmZfYSA9IHJ0d19yZWFkX3JmKHJ0d2RldiwgUkZfUEFUSF9BLCAweDAsIFJGUkVHX01BU0spO1xuIDMwOTpcdFx0cmZfYiA9IHJ0d19yZWFkX3JmKHJ0d2RldiwgUkZfUEFUSF9CLCAweDAsIFJGUkVHX01BU0spO1xuIDMxMDpcdFxuIDMxMTpcdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcJiMzNDtbREFDS10gUkYgcGF0aC1BPTB4JTA1eFxcblwmIzM0OywgcmZfYSk7XG4gMzEyOlx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFwmIzM0O1tEQUNLXSBSRiBwYXRoLUI9MHglMDV4XFxuXCYjMzQ7LCByZl9iKTtcbiAzMTM6XHRcbiAzMTQ6XHRcdHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHJ0d2RldiwgaXYsIHF2KTtcbiAzMTU6XHRcdHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHJ0d2RldiwgaXYsIHF2LCBpX3ZhbHVlLCBxX3ZhbHVlKTtcbiAzMTY6XHR9XG4gMzE3Olx0XG4gMzE4Olx0c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2JiX3NldHRpbmcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbiAzMTk6XHR7XG4gMzIwOlx0XHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxZDU4LCAweGZmOCwgMHgxZmYpO1xuIDMyMTpcdFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MWEwMCwgMHgzLCAweDIpO1xuIDMyMjpcdFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MWExNCwgMHgzMDAsIDB4Myk7XG4gMzIzOlx0XHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWQ3MCwgMHg3ZTdlN2U3ZSk7XG4gMzI0Olx0XHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxODBjLCAweDMsIDB4MCk7XG4gMzI1Olx0XHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHg0MTBjLCAweDMsIDB4MCk7XG4gMzI2Olx0XHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWIwMCwgMHgwMDAwMDAwOCk7XG4gMzI3Olx0XHRydHdfd3JpdGU4KHJ0d2RldiwgMHgxYmNjLCAweDNmKTtcbiAzMjg6XHRcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYjAwLCAweDAwMDAwMDBhKTtcbiAzMjk6XHRcdHJ0d193cml0ZTgocnR3ZGV2LCAweDFiY2MsIDB4M2YpO1xuIDMzMDpcdFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MWUyNCwgQklUKDMxKSwgMHgwKTtcbiAzMzE6XHRcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDFlMjgsIDB4ZiwgMHgzKTtcbiAzMzI6XHR9XG4gMzMzOlx0XG4gMzM0Olx0c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9hZGMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiAzMzU6XHRcdFx0XHRcdCB1OCBwYXRoLCB1MzIgKmFkY19pYywgdTMyICphZGNfcWMpXG4gMzM2Olx0e1xuIDMzNzpcdFx0c3RydWN0IHJ0d19kbV9pbmZvICpkbV9pbmZvID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWRtX2luZm87XG4gMzM4Olx0XHR1MzIgaWMgPSAwLCBxYyA9IDAsIHRlbXAgPSAwO1xuIDMzOTpcdFx0dTMyIGJhc2VfYWRkcjtcbiAzNDA6XHRcdHUzMiBwYXRoX3NlbDtcbiAzNDE6XHRcdGludCBpO1xuIDM0MjpcdFxuIDM0MzpcdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcJiMzNDtbREFDS10gQURDSyBwYXRoKCVkKVxcblwmIzM0OywgcGF0aCk7XG4gMzQ0Olx0XG4gMzQ1Olx0XHRiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xuIDM0NjpcdFx0c3dpdGNoIChwYXRoKSB7XG4gMzQ3Olx0XHRjYXNlIFJGX1BBVEhfQTpcbiAzNDg6XHRcdFx0cGF0aF9zZWwgPSAweGEwMDAwO1xuIDM0OTpcdFx0XHRicmVhaztcbiAzNTA6XHRcdGNhc2UgUkZfUEFUSF9COlxuIDM1MTpcdFx0XHRwYXRoX3NlbCA9IDB4ODAwMDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MTUKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgQ2FsaWJyYXRpb24gUm91dGluZSoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSBnZXR0aW5nIHRob3NlIGBpdmAgYW5kIGBxdmAgdmFsdWVzIHBvcHVsYXRlZC4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGlzIGNhbGlicmF0aW9uIHN0ZXAuIEkgbmVlZCB0byByZXZpc2l0IHRoYXQgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgKmhvdyogZXhhY3RseSB0aGlzIGZ1bmN0aW9uIGlzIGFjcXVpcmluZyB0aGUgaW4tcGhhc2UgKEkpIGFuZCBxdWFkcmF0dXJlLXBoYXNlIChRKSBzYW1wbGVzLiBXaGF0JiMzOTtzIHRoZSBzaWduYWwgcGF0aD8gSXMgaXQgdXNpbmcgZGlyZWN0IGNvbnZlcnNpb24sIHN1cGVyaGV0ZXJvZHluZSwgb3Igc29tZXRoaW5nIGVsc2U/IEkgYWxzbyB3YW50IHRvIHZlcmlmeSB3aGV0aGVyIEkgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBEQUMgYW5kIEFEQyB3aXRoaW4gdGhlIFJGSUMgYXJjaGl0ZWN0dXJlLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgdGhlIEFEQyYjMzk7cyBzYW1wbGluZyByYXRlLCByZXNvbHV0aW9uLCBhbmQgYW55IHBvdGVudGlhbCBvZmZzZXRzLCB0byBwcm9wZXJseSBpbnRlcnByZXQgdGhlIHZhbHVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzMjpcdFxuIDIzMzpcdHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG4gMjM0Olx0e1xuIDIzNTpcdFx0dTMyIHRlbXA7XG4gMjM2Olx0XHR1MzIgaSA9IDAsIGNudCA9IDA7XG4gMjM3Olx0XG4gMjM4Olx0XHR3aGlsZSAoaSBcdTAwM2MgREFDS19TTl84ODIyQyBcdTAwMjZcdTAwMjYgY250IFx1MDAzYyAxMDAwMCkge1xuIDIzOTpcdFx0XHRjbnQmIzQzOyYjNDM7O1xuIDI0MDpcdFx0XHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XG4gMjQxOlx0XHRcdGl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMiwgOSk7XG4gMjQyOlx0XHRcdHF2W2ldID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gMjQzOlx0XG4gMjQ0Olx0XHRcdGlmIChydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBpdltpXSkgXHUwMDI2XHUwMDI2XG4gMjQ1Olx0XHRcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXG4gMjQ2Olx0XHRcdFx0aSYjNDM7JiM0Mzs7XG4gMjQ3Olx0XHR9XG4gMjQ4Olx0fVxuIDI0OTpcdFxuIDI1MDpcdHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gMjUxOlx0XHRcdFx0XHQgICAgICAgczMyICppdiwgczMyICpxdixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTYyMAoJCQkJCQkJb3V0cHV0OiA1OAoJCQkJCQkJdGhvdWdodHM6IDcyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbmluaXRpYWxpemVkIE1lbW9yeSBBY2Nlc3MgaW4gREFDIENhbGlicmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5LCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhpcyBsb29wLiBJdCYjMzk7cyByZWFkaW5nIElRIHNhbXBsZXMsIGFuZCB0aGVyZSYjMzk7cyBhIHNhZmV0eSBjaGVjazogYSBgY250YCBsaW1pdCBvZiAxMDAwMC4gVGhhdCYjMzk7cyBmaW5lLCBidXQgdGhlIGltcGxpY2F0aW9uIGlzLi4uIGlmIGBjbnRgIGhpdHMgMTAwMDAgKmJlZm9yZSogd2UmIzM5O3ZlIGNvbGxlY3RlZCB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIHNhbXBsZXMgKGBEQUNLX1NOXzg4MjJDYCksIHRoZSBsb29wIGJyZWFrcy4gVGhhdCBtZWFucyB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIG9mIGBpdmAgYW5kIGBxdmAgYXJlICp1bmluaXRpYWxpemVkKiEgIFRoaXMgaXMgYSBiaWcgcmVkIGZsYWcuCgpUaGVuIEkgc2VlIHRoYXQgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCBpcyBjYWxsZWQgd2l0aCB0aGVzZSBwb3RlbnRpYWxseSBpbmNvbXBsZXRlIGBpdmAgYW5kIGBxdmAgYXJyYXlzLiBBbmQgaGVyZSYjMzk7cyB3aGVyZSBpdCBnZXRzIGRhbmdlcm91cy4gSW5zaWRlIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAsIHRoZSBjb2RlIGl0ZXJhdGVzICp1cCB0byogYERBQ0tfU05fODgyMkNgIHRvIGZpbmQgbWluL21heCB2YWx1ZXMgZm9yIEkgYW5kIFEuIFRoYXQgbWVhbnMgaXQmIzM5O3MgcmVhZGluZyBtZW1vcnkgKmJleW9uZCogdGhlIGluaXRpYWxpemVkIHBhcnQgb2YgYGl2YCBhbmQgYHF2YCBpZiB0aGUgbG9vcCBpbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkuIFdlJiMzOTtyZSBwb3RlbnRpYWxseSByZWFkaW5nIGdhcmJhZ2UgZnJvbSB0aGUgc3RhY2ssIGFuZCB0aGlzIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIHVucHJlZGljdGFibGUgYmVoYXZpb3IuCgpUaGlzIGlzIGNsYXNzaWMgdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHdhcyBpbnRyb2R1Y2VkIGluIGEgcmVjZW50IHBhdGNoLCBvciBpZiBpdCBoYXMgYmVlbiBsdXJraW5nIGhlcmUgYWxsIGFsb25nLiBUaW1lIHRvIGNoZWNrIHRoZSBvbGQgY29kZSBmb3IgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIHByb2JsZW0gd2FzIHByZXNlbnQgKmJlZm9yZSogdGhlIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MjIyPXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0zMDI9c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMTQ6XHRydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShydHdkZXYsIGl2LCBxdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzE1LVx0cnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2gocnR3ZGV2LCBpdiwgcXYsIGlfdmFsdWUsIHFfdmFsdWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTIwMQoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDg3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERBQyBDYWxpYnJhdGlvbiBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRpZmYgZm9yIHRoZSBEQUMgY2FsaWJyYXRpb24gaW4gdGhpcyBgcnR3ODgyMmNgIGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBjaGFuZ2UgZnJvbSB1bnNpZ25lZCBgdTMyYCB0byBzaWduZWQgYHMzMmAgZm9yIGBpdmAgYW5kIGBxdmAgd2l0aGluIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgaXMgaW1wb3J0YW50LiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuIEkgc2VlIHRoZSByZWFkIG1hc2sgaXMgdXNlZCB0byBnZXQgdGhlIGRhdGEgZnJvbSB0aGUgaGFyZHdhcmUuIFRoZSBjb2RlIGlzIGV4dHJhY3RpbmcgYSAxMCBiaXQgc2lnbmVkIHZhbHVlLCB3aGljaCBpcyBhcHByb3ByaWF0ZSBmb3Igc2lnbmVkIGludGVnZXJzLgoKSG93ZXZlciwgSSYjMzk7bSBtb3JlIGNvbmNlcm5lZCBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBzYW1wbGluZyBsb29wLiBUaGUgY29uZGl0aW9uIGBjbnQgJmx0OyAxMDAwMGAgY2F1Z2h0IG15IGV5ZSBiZWNhdXNlIHRoYXQmIzM5O3MgYW4gZXhpc3RpbmcgbG9vcCBicmVhayBjb25kaXRpb24uIEl0IG1lYW5zIGFuIGVhcmx5IHJldHVybiBmcm9tIHRoZSBzYW1wbGluZyBsb29wIGlzIHBvc3NpYmxlLiBJdCBhbHNvIG1lYW5zIHRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBjb3VsZCBoYXZlIHVuaW5pdGlhbGl6ZWQgZWxlbWVudHMuIElmIGBjbnRgIGhpdHMgMTAwMDAsIHRoZW4gc29tZSBlbGVtZW50cyBpbiBgaXZgIGFuZCBgcXZgIHdpbGwgbm90IGJlIGZpbGxlZC4KClRoZW4sIHRoZXJlJiMzOTtzIHRoZSBjaGFuZ2UgdG8gYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgd2hlcmUgdGhlIGN1c3RvbSBzb3J0aW5nIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggdGhlIHN0YW5kYXJkIGBzb3J0KClgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkga25vdyBgc29ydCgpYCBpcyBhbiBlZmZpY2llbnQgc29ydGluZyBhbGdvcml0aG0sIGJ1dCBpZiB0aG9zZSBgaXZgIGFuZCBgcXZgIGFycmF5cyAqYXJlbiYjMzk7dCogZnVsbHkgaW5pdGlhbGl6ZWQsIHRoaXMgaXMgYSBwcm9ibGVtLiBUaGUgb2xkIGN1c3RvbSBzb3J0LCBhbmQgdGhlIG5ldyBzb3J0LCBib3RoIGRlcGVuZCBvbiAqcmVhZGluZyogZGF0YSBmcm9tIGBpdmAgYW5kIGBxdmAuIFRoZSBuZXcgY29kZSBjYWxscyBgc29ydCgpYCB3aGljaCBtZWFucyB0aGF0IGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAgaXMgZ29pbmcgdG8gcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIHRoZSBgaXZgIGFuZCBgcXZgIGJ1ZmZlcnMuIFRoaXMgaXMgYSBwb3RlbnRpYWwgYnVnLiBJIGNhbiYjMzk7dCBiZSBzdXJlIHRoYXQgdGhlIG9sZCBjb2RlIHdhcyBiZXR0ZXI6IGl0IGFsc28gcmVhZHMgdW5pbml0aWFsaXplZCBtZW1vcnksIGJ1dCBpdCYjMzk7cyBub3QgY2xlYXIgdGhhdCB0aGUgb2xkIGNvZGUgaGFzIGEgd2VsbC1kZWZpbmVkIGNvbXBhcmlzb24gZnVuY3Rpb246IGBfX3J0dzg4MjJjX2RhY19pcV9zb3J0YCBtaWdodCBoYXZlIGRpZmZlcmVudCBwcm9wZXJ0aWVzLgoKU28sIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBiZWNvbWVzOiBpcyBgcnR3ODgyMmNfZGFjX2lxX3NvcnRgIGFjdHVhbGx5ICpjYWxsZWQqPyBJZiB0aGlzIHNvcnRpbmcgZnVuY3Rpb24gaXMgbmV2ZXIgaW52b2tlZCwgdGhlbiB0aGlzIGJlY29tZXMgYSBub24taXNzdWUuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBkZXRlcm1pbmUgdGhlIGFjdHVhbCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg4MjJjX2RhY19pcV9zb3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNTg9c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY2OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MjUwPXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyODQ6XHRcdHJ0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgaXYsIHF2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yODUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDExCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogOTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEQUMgQ2FsaWJyYXRpb24gQ29kZSBDaGFuZ2VzKioKCk9rYXksIHNvIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAgY2FsbHMgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgd2hpY2ggaXQgYWx3YXlzIGRpZC4gR29vZCwgbm8gbmV3IGZ1bmN0aW9uIGNhbGxzIGludHJvZHVjZWQgdGhlcmUuIE15IGluaXRpYWwgY29uY2VybiB3YXMgd2hldGhlciB0aGUgcGF0Y2ggaW50cm9kdWNlZCBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBzbyBsZXQmIzM5O3MgZGlnIGludG8gdGhlIGNoYW5nZXMgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCBpdHNlbGYuCgpBbHJpZ2h0LCB0aGUgZmlyc3QgZGlmZiBzaW1wbGlmaWVzIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgZGVsdGFzIGZvciBJIGFuZCBRLiBUaGUgb2xkIGNvZGUgaGFkIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSBtYXggYW5kIG1pbiB2YWx1ZXMgd3JhcHBlZCBhcm91bmQgMHgyMDAgKHByZXN1bWFibHkgcmVwcmVzZW50aW5nIGEgc2lnbmVkIHZhbHVlIHdpdGggMHgyMDAgYXMgdGhlIG1pZHBvaW50KS4gVGhlIG5ldyBjb2RlIGp1c3QgcGVyZm9ybXMgYSBzdHJhaWdodGZvcndhcmQgdW5zaWduZWQgc3VidHJhY3Rpb246IGB1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO2AgYW5kIHRoZSBzYW1lIGZvciBRLiBObyBvYnZpb3VzIHByb2JsZW1zIHRoZXJlLiBUaGlzIHdpbGwgYmUgYW4gaW1wcm92ZW1lbnQgaW4gZWZmaWNpZW5jeSwgYW5kIGxpa2VseSBhY2N1cmFjeSBzaW5jZSB0aGUgbG9naWMgZG9lc24mIzM5O3QgZGVwZW5kIG9uIHRoZSBjb21waWxlciYjMzk7cyBvcHRpbWl6YXRpb25zLgoKVGhlbiwgdGhlcmUmIzM5O3MgYSBjaGFuZ2UgaW4gaG93IGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCBpcyBjYWxsZWQuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBsaWtlIHRoaXM6CmBgYGMKcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2LCBpX3ZhbHVlKTsKcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTsKYGBgCmFuZCBub3cgaXQmIzM5O3MgdGhpczoKYGBgYwoqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7CipxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTsKYGBgCkVzc2VudGlhbGx5LCBgcnR3ODgyMmNfZGFjX2lxX29mZnNldGAgbm93IHJldHVybnMgYSB2YWx1ZS4gQnV0IHRoYXQgbWVhbnMgd2Ugc2hvdWxkIHNlZSBhIGNvcnJlc3BvbmRpbmcgY2hhbmdlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLCB3aGljaCB3ZSBkby4gVGhlIG9yaWdpbmFsIGNvZGUmIzM5O3Mgc2lnbmF0dXJlIHdhczoKYGBgYwpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbCkKYGBgCmFuZCBpcyBub3c6CmBgYGMKc3RhdGljIHMzMiBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqdmVjKQpgYGAKClRoZSBvbGQgZnVuY3Rpb24gaGFkIGEgbG9jYWwgdmFyaWFibGUgYHRgIHRoYXQgY2FsY3VsYXRlZCB0aGUgYXZlcmFnZSBvZmZzZXQgb2YgdGhlIGRhdGEuIFRoZSByZXZpc2VkIGNvZGUgZGlyZWN0bHkgY2FsY3VsYXRlcyB0aGUgYXZlcmFnZSBvZiB0aGUgdmVjdG9yJiMzOTtzIHZhbHVlcyBpbiBhIGBzdW1gIHZhcmlhYmxlLCBhbmQgdGhlbiBkaXJlY3RseSBjYWxjdWxhdGVzIGBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKWAuIFRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGN1bGF0ZWQgYW5kIHJldHVybmVkLCBub3cgdXNpbmcgYSB0ZXJuYXJ5IG9wZXJhdG9yLiBUaGUgYHZlY2AgcG9pbnRlciBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGlzIG5vdyBhIGBzMzIgKmAgaW5zdGVhZCBvZiBgdTMyICpgLCB3aGljaCBpcyBnb29kLiBUaGUgZnVuY3Rpb24gbm93IGNvcnJlY3RseSByZXR1cm5zIGEgc2lnbmVkIG9mZnNldCB2YWx1ZSwgd2hlcmVhcyBiZWZvcmUsIHRoZSBvZmZzZXQgdmFsdWUgd2FzIGFuIG91dCBwYXJhbWV0ZXIuCgpUaGUgbG9vcCBpdGVyYXRpbmcgdGhyb3VnaCBgdmVjYCBub3cgYWxzbyB1c2VzIGEgYHUzMiBpYCBhcyBpdHMgaXRlcmF0b3IuIFRoZSBjb2RlIGlzIG11Y2ggY2xlYW5lci4KCkkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBwcm9ibGVtcywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHdoYXQgYERBQ0tfU05fODgyMkNgIHJlcHJlc2VudHMgYW5kIGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgY2FsaWJyYXRpb24gcHJvY2Vzcy4gSXQmIzM5O3MgbGlrZWx5IGEgc2FtcGxlIGNvdW50LCBidXQgSSBzaG91bGQgbG9vayBpbnRvIHRoYXQgY29uc3RhbnQmIzM5O3MgZGVmaW5pdGlvbiB0byBjb25maXJtLiBJIHNob3VsZCBhbHNvIHRlc3QgdGhpcyBjb2RlIGFnYWluc3Qgc29tZSBleGFtcGxlIGRhdGFzZXRzIHRvIGRldGVybWluZSBpZiB0aGUgc2lnbmVkIGFyaXRobWV0aWMgaW50cm9kdWNlcyBhbnkgdW5leHBlY3RlZCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBEQUNLX1NOXzg4MjJDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oPTEzMz1jb25zdCBzdHJ1Y3QgcnR3X3RhYmxlIG5hbWUgIyMgX3RibCA9IHtcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaC0xNDEtI2RlZmluZSBEQUNLX1JGXzg4MjJDXHRcdDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaDoxNDI6I2RlZmluZSBEQUNLX1NOXzg4MjJDXHRcdDEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oLTE0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5ODYKCQkJCQkJCW91dHB1dDogMjMxCgkJCQkJCQl0aG91Z2h0czogMzYxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgREFDIENhbGlicmF0aW9uIENvZGUgUmVmYWN0b3JpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCwgYW5kIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIERBQyBjYWxpYnJhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIGBydHc4ODIyY2AgZHJpdmVyLiAgVGhlIGNyaXRpY2FsIGFzcGVjdCBoZXJlIGlzIHdoZXRoZXIgdGhpcyByZWZhY3RvcmluZyBpbnRyb2R1Y2VzIGFueSAqbmV3KiB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIGJlIGV4cG9zZWQgYnkgS01TQU4uICBMZXQmIzM5O3Mgd2FsayB0aHJvdWdoIGl0LgoKRmlyc3QsIGBEQUNLX1NOXzg4MjJDYCBkZWZpbmVzIHRoZSBzaXplIOKAkyBpdCYjMzk7cyAxMDAuICBXZSBoYXZlIGFycmF5cyBgaXZgIGFuZCBgcXZgLCBib3RoIG9mIDEwMCBgczMyYCBlbGVtZW50cywgdXNlZCB0byBzdG9yZSBzYW1wbGVzIHJlYWQgZnJvbSBoYXJkd2FyZS4gIFRoZSBmdW5jdGlvbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIGF0dGVtcHRzIHRvIHBvcHVsYXRlIHRoZXNlIGFycmF5cy4gVGhlIGtleSBoZXJlIGlzIHRoZSBsb29wIHRoYXQgcmVhZHMgdGhlIHZhbHVlcyBhbmQgc3RvcmVzIHRoZW0uICBDcnVjaWFsbHksIHRoZXJlJiMzOTtzIGEgYGNudGAgY291bnRlciB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3AsIGFuZCBpZiBpdCByZWFjaGVzIDEwMDAwLCBgaWAgY291bGQgYmUgbGVzcyB0aGFuIDEwMCwgbGVhdmluZyB0aGUgYXJyYXlzIHBhcnRpYWxseSB1bmluaXRpYWxpemVkLiBUaGlzICp3YXMqIGFscmVhZHkgdGhlIGNhc2UgaW4gdGhlIG9sZCBjb2RlLgoKVGhlIG9yaWdpbmFsIGNvZGUgYWxzbyBoYWQgYSBzaW1pbGFyIHNpdHVhdGlvbiwgd2hlcmUgdW5pbml0aWFsaXplZCB2YWx1ZXMgKmNvdWxkKiBiZSByZWFkLiBUaGUgcGF0Y2ggKnJlcGxhY2VzKiBjYWxscyB0byBgcnR3ODgyMmNfcmZfbWlubWF4X2NtcGAsIGFuZCBhIGN1c3RvbSBzb3J0IHdpdGggdGhlIHN0YW5kYXJkIGxpYnJhcnkmIzM5O3MgYHNvcnQoKWAgZnVuY3Rpb24gYW5kIHNpZ25lZCBpbnRlZ2Vycywgc3BlY2lmaWNhbGx5IGBzMzJgLiBUaGlzIGBzb3J0KClgIGZ1bmN0aW9uIHVzZXMgYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgd2hpY2ggaXMgYSBzdGFuZGFyZCBjb21wYXJpc29uIGZ1bmN0aW9uLgoKVGhlIHByZXZpb3VzIGNvZGUgaGFkIHNvbWUgdHJpY2t5IHNpZ24gZXh0ZW5zaW9uIGxvZ2ljLiBUaGUgbmV3IGNvZGUgZG9lcyBpdCBjb3JyZWN0bHkgYnkgY2FsbGluZyBgc2lnbl9leHRlbmQzMmAgd2hpY2ggc2lnbi1leHRlbmRzIHRoZSAxMC1iaXQgdmFsdWVzIHRvIDMyIGJpdCBzaWduZWQgdmFsdWVzIHVzaW5nIGJpdCA5IGFzIHRoZSBzaWduIGJpdC4KCk15IGluaXRpYWwgY29uY2VybiB3YXMgd2hldGhlciB0aGUgcmVmYWN0b3JpbmcgKmV4cG9zZWQqIGFuIGV4aXN0aW5nIHVuaW5pdGlhbGl6ZWQgcmVhZCB0aGF0IHdhcyBub3QgZGV0ZWN0ZWQgYmVmb3JlIGJ5IEtNU0FOLiBJZiB0aGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIG9ubHkgcGFydGlhbGx5IGluaXRpYWxpemVkLCB1c2luZyBgc29ydCgpYCAqd2lsbCogcmVhZCB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnksIEtNU0FOIHNob3VsZCBjYXRjaCB0aGlzLiBCdXQgdGhpcyB3YXMgYWxyZWFkeSB0cnVlIGluIHRoZSBvbGQgY29kZS4KClRoZSBjaGVjayBmb3IgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AgaGFzIGJlZW4gbW9kaWZpZWQsIGJ1dCBub3QgaW4gYSB3YXkgdGhhdCBhZmZlY3RzIHdoZXRoZXIgdGhlIGFycmF5cyBhcmUgaW5pdGlhbGl6ZWQgb3Igbm90LiBJdCYjMzk7cyBlc3NlbnRpYWxseSB0aGUgc2FtZSBsb2dpYyB1c2luZyBzaWduZWQgdHlwZXMuIFRoZSBsaW1pdHMgYXJlIC0xMDAgdG8gMTAwLgoKVGhlIG9mZnNldCBjYWxjdWxhdGlvbnMgYXJlIGFsc28gYmVpbmcgcmVmYWN0b3JlZCwgYnV0IHRoZXkgc3RpbGwgcmVseSBvbiB0aGUgc2FtZSBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGRhdGEuCgpUaGUgYXJyYXlzIHdpdGhpbiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhcmUgc3RpbGwgdW5pbml0aWFsaXplZCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHNhbXBsZSBmdW5jdGlvbiBmYWlscy4KClRoZSBtYWluIGNoYW5nZSBpcyBmcm9tIGEgY3VzdG9tIGNvbXBhcmlzb24gYW5kIHNvcnQgdG8gc3RhbmRhcmQgc2lnbmVkIHR5cGVzLCBzdGFuZGFyZCBgc29ydCgpYCwgYW5kIGEgc2ltcGxpZmllZCBvZmZzZXQgY2FsY3VsYXRpb24uIEFsbCBvZiB0aGlzIGNhbiBzdGlsbCByZWFkIHRoZSBzYW1lIG1lbW9yeSBpZiBpdCBpcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCgpUaGVyZWZvcmUsIHNpbmNlIGFsbCB0aGUgcG90ZW50aWFsIGZvciByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHdhcyBwcmVzZW50ICpiZWZvcmUqIHRoZSBwYXRjaCwgYW5kIHRoZSBwYXRjaCBpcyBwcmltYXJpbHkgYSByZWZhY3RvcmluZyBvZiBleGlzdGluZyBsb2dpYyBhbmQgbWF0aCBhbmQgZG9lcyAqbm90KiBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb24gb3IgY29weSB0byB1c2VyIHNwYWNlLCBLTVNBTiBpcyBub3Qgc3BlY2lmaWNhbGx5IG5lZWRlZCBoZXJlLiAgQW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcywgbGlrZSB0aGUgZWFybHkgbG9vcCB0ZXJtaW5hdGlvbiBhbmQgdGhlIGFycmF5cyBiZWluZyBvbmx5IHBhcnRpYWxseSBmaWxsZWQsICp3b3VsZCogYmUgY2F1Z2h0IGJ5IEtNU0FOIGluIGJvdGggdGhlIG9sZCBhbmQgbmV3IGNvZGUuICBUaGlzIGlzIGEgc3RyYWlnaHQgcmVmYWN0b3JpbmcsIHRoZSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSwgaWYgaXQgZXhpc3RzLCBpcyBzdGlsbCB0aGVyZS4gSSB3aWxsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IEtNU0FOLXNwZWNpZmljIHByb2JsZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBydHc4OCBkcml2ZXIgYnkgcmVwbGFjaW5nIGN1c3RvbSAxMC1iaXQgc2lnbi1tYWduaXR1ZGUvdHdvJiMzOTtzLWNvbXBsZW1lbnQgYXJpdGhtZXRpYyBhbmQgYSBjdXN0b20gYnViYmxlIHNvcnQgd2l0aCBzdGFuZGFyZCBgczMyYCB0eXBlcywgYHNpZ25fZXh0ZW5kMzIoKWAsIGFuZCB0aGUga2VybmVsJiMzOTtzIGJ1aWx0LWluIGBzb3J0KClgIGZ1bmN0aW9uLiBcblxuV2hpbGUgdGhlIHN0YWNrLWFsbG9jYXRlZCBhcnJheXMgYGl2YCBhbmQgYHF2YCBjb3VsZCBwb3RlbnRpYWxseSBjb250YWluIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlmIHRoZSBzYW1wbGluZyBsb29wIGluIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZSgpYCB0ZXJtaW5hdGVzIGVhcmx5IChkdWUgdG8gdGhlIGBjbnQgXHUwMDNjIDEwMDAwYCBjb25kaXRpb24pLCB0aGlzIGJlaGF2aW9yIGFuZCB0aGUgc3Vic2VxdWVudCByZWFkcyBvZiB0aGUgZW50aXJlIGFycmF5IHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBvbGQgY29kZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGFyaXRobWV0aWMgYW5kIHNvcnRpbmcgcmVmYWN0b3JpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIHJ0dzg4IGRyaXZlciBieSByZXBsYWNpbmcgY3VzdG9tIDEwLWJpdCBzaWduLW1hZ25pdHVkZS90d28mIzM5O3MtY29tcGxlbWVudCBhcml0aG1ldGljIGFuZCBhIGN1c3RvbSBidWJibGUgc29ydCB3aXRoIHN0YW5kYXJkIGBzMzJgIHR5cGVzLCBgc2lnbl9leHRlbmQzMigpYCwgYW5kIHRoZSBrZXJuZWwmIzM5O3MgYnVpbHQtaW4gYHNvcnQoKWAgZnVuY3Rpb24uIFxuXG5XaGlsZSB0aGUgc3RhY2stYWxsb2NhdGVkIGFycmF5cyBgaXZgIGFuZCBgcXZgIGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaWYgdGhlIHNhbXBsaW5nIGxvb3AgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKClgIHRlcm1pbmF0ZXMgZWFybHkgKGR1ZSB0byB0aGUgYGNudCBcdTAwM2MgMTAwMDBgIGNvbmRpdGlvbiksIHRoaXMgYmVoYXZpb3IgYW5kIHRoZSBzdWJzZXF1ZW50IHJlYWRzIG9mIHRoZSBlbnRpcmUgYXJyYXkgd2VyZSBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIG9sZCBjb2RlLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSBuZXcgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgYXJpdGhtZXRpYyBhbmQgc29ydGluZyByZWZhY3RvcmluZy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkIGZvciB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDowOS40Mzk4Mzc1NzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE4NjM5MDYzMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlJUVzg4XCIsXG4gICAgXCJSVFc4OF84ODIyQ1VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4ODIyY19waHlfc2V0X3BhcmFtXCIsXG4gICAgXCJydHc4ODIyY19waHlfY2FsaWJyYXRpb25cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIHJ0dzg4IGRyaXZlciBieSByZXBsYWNpbmcgY3VzdG9tIDEwLWJpdCBzaWduLW1hZ25pdHVkZS90d28ncy1jb21wbGVtZW50IGFyaXRobWV0aWMgYW5kIGEgY3VzdG9tIGJ1YmJsZSBzb3J0IHdpdGggc3RhbmRhcmQgYHMzMmAgdHlwZXMsIGBzaWduX2V4dGVuZDMyKClgLCBhbmQgdGhlIGtlcm5lbCdzIGJ1aWx0LWluIGBzb3J0KClgIGZ1bmN0aW9uLiBcXG5cXG5XaGlsZSB0aGUgc3RhY2stYWxsb2NhdGVkIGFycmF5cyBgaXZgIGFuZCBgcXZgIGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaWYgdGhlIHNhbXBsaW5nIGxvb3AgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKClgIHRlcm1pbmF0ZXMgZWFybHkgKGR1ZSB0byB0aGUgYGNudCBcXHUwMDNjIDEwMDAwYCBjb25kaXRpb24pLCB0aGlzIGJlaGF2aW9yIGFuZCB0aGUgc3Vic2VxdWVudCByZWFkcyBvZiB0aGUgZW50aXJlIGFycmF5IHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBvbGQgY29kZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGFyaXRobWV0aWMgYW5kIHNvcnRpbmcgcmVmYWN0b3JpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgdGhpcyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFDIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4MjJjIHdpcmVsZXNzIGRyaXZlciwgc2ltcGxpZnlpbmcgc29ydGluZyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy4gVGhpcyBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teSBIQ0QpIGJ5IGVuYWJsaW5nIHRoZSBVU0IgdmFyaWFudCBvZiB0aGUgZHJpdmVyIChDT05GSUdfUlRXODhfODgyMkNVKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0ZWQgZHVyaW5nIFBIWSBwYXJhbWV0ZXIgc2V0dXAgYW5kIGNhbGlicmF0aW9uLCB3aGljaCBhcmUgYWNjZXNzaWJsZSB2aWEgdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAgY2FsbGJhY2tzLiBUaGVzZSBjYWxsYmFja3MgYXJlIG5vdCBpbmxpbmVkIGFzIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHRoZSBjaGlwIG9wZXJhdGlvbnMgc3RydWN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDowOS40Mzk4NDM1NjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzAzNjE4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZjQ2NzdjZmJlODY0NmVmYzhiNjcyNDViYWZiYjlhYmI3Y2RjODY0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDEyIDE3OjI0OjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xcbmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXFxuQEAgLTMsNiArMyw4IEBAXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0b3BzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zb3J0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJtYWluLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJjb2V4LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJmdy5oXFxcIlxcbkBAIC0xNTMsODQgKzE1NSwzMCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSxcXG4tXFx0XFx0XFx0XFx0ICAgdTMyICptaW4sIHUzMiAqbWF4KVxcbitzdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXFxuIHtcXG4tXFx0aWYgKHZhbHVlIFxcdTAwM2U9IDB4MjAwKSB7XFxuLVxcdFxcdGlmICgqbWluIFxcdTAwM2U9IDB4MjAwKSB7XFxuLVxcdFxcdFxcdGlmICgqbWluIFxcdTAwM2UgdmFsdWUpXFxuLVxcdFxcdFxcdFxcdCptaW4gPSB2YWx1ZTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0Km1pbiA9IHZhbHVlO1xcbi1cXHRcXHR9XFxuLVxcdFxcdGlmICgqbWF4IFxcdTAwM2U9IDB4MjAwKSB7XFxuLVxcdFxcdFxcdGlmICgqbWF4IFxcdTAwM2MgdmFsdWUpXFxuLVxcdFxcdFxcdFxcdCptYXggPSB2YWx1ZTtcXG4tXFx0XFx0fVxcbi1cXHR9IGVsc2Uge1xcbi1cXHRcXHRpZiAoKm1pbiBcXHUwMDNjIDB4MjAwKSB7XFxuLVxcdFxcdFxcdGlmICgqbWluIFxcdTAwM2UgdmFsdWUpXFxuLVxcdFxcdFxcdFxcdCptaW4gPSB2YWx1ZTtcXG4tXFx0XFx0fVxcbi1cXG4tXFx0XFx0aWYgKCptYXggIFxcdTAwM2U9IDB4MjAwKSB7XFxuLVxcdFxcdFxcdCptYXggPSB2YWx1ZTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0aWYgKCptYXggXFx1MDAzYyB2YWx1ZSlcXG4tXFx0XFx0XFx0XFx0Km1heCA9IHZhbHVlO1xcbi1cXHRcXHR9XFxuLVxcdH1cXG4tfVxcbitcXHRzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7XFxuK1xcdHMzMiB2YiA9ICooY29uc3QgczMyICopYjtcXG4gXFxuLXN0YXRpYyB2b2lkIF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2MSwgdTMyICp2MilcXG4te1xcbi1cXHRpZiAoKnYxIFxcdTAwM2U9IDB4MjAwIFxcdTAwMjZcXHUwMDI2ICp2MiBcXHUwMDNlPSAweDIwMCkge1xcbi1cXHRcXHRpZiAoKnYxIFxcdTAwM2UgKnYyKVxcbi1cXHRcXHRcXHRzd2FwKCp2MSwgKnYyKTtcXG4tXFx0fSBlbHNlIGlmICgqdjEgXFx1MDAzYyAweDIwMCBcXHUwMDI2XFx1MDAyNiAqdjIgXFx1MDAzYyAweDIwMCkge1xcbi1cXHRcXHRpZiAoKnYxIFxcdTAwM2UgKnYyKVxcbi1cXHRcXHRcXHRzd2FwKCp2MSwgKnYyKTtcXG4tXFx0fSBlbHNlIGlmICgqdjEgXFx1MDAzYyAweDIwMCBcXHUwMDI2XFx1MDAyNiAqdjIgXFx1MDAzZT0gMHgyMDApIHtcXG4tXFx0XFx0c3dhcCgqdjEsICp2Mik7XFxuLVxcdH1cXG4rXFx0cmV0dXJuICh2YSBcXHUwMDNlIHZiKSAtICh2YSBcXHUwMDNjIHZiKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcXG4rc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG4ge1xcbi1cXHR1MzIgaSwgajtcXG4tXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTsgaSsrKSB7XFxuLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyAoREFDS19TTl84ODIyQyAtIDEgLSBpKSA7IGorKykge1xcbi1cXHRcXHRcXHRfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgXFx1MDAyNml2W2pdLCBcXHUwMDI2aXZbaiArIDFdKTtcXG4tXFx0XFx0XFx0X19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIFxcdTAwMjZxdltqXSwgXFx1MDAyNnF2W2ogKyAxXSk7XFxuLVxcdFxcdH1cXG4tXFx0fVxcbitcXHRzb3J0KGl2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xcbitcXHRzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbClcXG4rc3RhdGljIHMzMiBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqdmVjKVxcbiB7XFxuLVxcdHUzMiBwLCBtLCB0LCBpO1xcbitcXHRzMzIgc3VtID0gMDtcXG4gXFxuLVxcdG0gPSAwO1xcbi1cXHRwID0gMDtcXG4tXFx0Zm9yIChpID0gMTA7IGkgXFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkrKykge1xcbi1cXHRcXHRpZiAodmVjW2ldIFxcdTAwM2UgMHgyMDApXFxuLVxcdFxcdFxcdG0gPSAoMHg0MDAgLSB2ZWNbaV0pICsgbTtcXG4tXFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRwID0gdmVjW2ldICsgcDtcXG4tXFx0fVxcbitcXHRmb3IgKHUzMiBpID0gMTA7IGkgXFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkrKylcXG4rXFx0XFx0c3VtICs9IHZlY1tpXTtcXG4gXFxuLVxcdGlmIChwIFxcdTAwM2UgbSkge1xcbi1cXHRcXHR0ID0gcCAtIG07XFxuLVxcdFxcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHQgPSBtIC0gcDtcXG4tXFx0XFx0dCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTtcXG4tXFx0XFx0aWYgKHQgIT0gMHgwKVxcbi1cXHRcXHRcXHR0ID0gMHg0MDAgLSB0O1xcbi1cXHR9XFxuK1xcdHMzMiBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKTtcXG4gXFxuLVxcdCp2YWwgPSB0O1xcbitcXHRyZXR1cm4gYXZnIFxcdTAwM2U9IDAgPyBhdmcgOiAweDQwMCArIGF2ZztcXG4gfVxcbiBcXG4gc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHU4IHBhdGgpXFxuQEAgLTI3MSwyOSArMjE5LDI3IEBAIHN0YXRpYyB1MzIgcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHU4IHBhdGgpXFxuIFxcdHJldHVybiBiYXNlX2FkZHI7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpXFxuK3N0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXFxuIHtcXG4tXFx0Ym9vbCByZXQgPSB0cnVlO1xcbiBcXG4tXFx0aWYgKCh2YWx1ZSBcXHUwMDNlPSAweDIwMCBcXHUwMDI2XFx1MDAyNiAoMHg0MDAgLSB2YWx1ZSkgXFx1MDAzZSAweDY0KSB8fFxcbi1cXHQgICAgKHZhbHVlIFxcdTAwM2MgMHgyMDAgXFx1MDAyNlxcdTAwMjYgdmFsdWUgXFx1MDAzZSAweDY0KSkge1xcbi1cXHRcXHRyZXQgPSBmYWxzZTtcXG4rXFx0aWYgKHZhbHVlIFxcdTAwM2UgMTAwIHx8IHZhbHVlIFxcdTAwM2MgLTEwMCkge1xcbiBcXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCJbREFDS10gRXJyb3Igb3ZlcmZsb3dcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdH1cXG4gXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxcbitzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxcbiB7XFxuIFxcdHUzMiB0ZW1wO1xcbi1cXHRpbnQgaSA9IDAsIGNudCA9IDA7XFxuK1xcdHUzMiBpID0gMCwgY250ID0gMDtcXG4gXFxuIFxcdHdoaWxlIChpIFxcdTAwM2MgREFDS19TTl84ODIyQyBcXHUwMDI2XFx1MDAyNiBjbnQgXFx1MDAzYyAxMDAwMCkge1xcbiBcXHRcXHRjbnQrKztcXG4gXFx0XFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xcbi1cXHRcXHRpdltpXSA9ICh0ZW1wIFxcdTAwMjYgMHgzZmYwMDApIFxcdTAwM2VcXHUwMDNlIDEyO1xcbi1cXHRcXHRxdltpXSA9IHRlbXAgXFx1MDAyNiAweDNmZjtcXG4rXFx0XFx0aXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFxcdTAwMjYgMHgzZmYwMDApIFxcdTAwM2VcXHUwMDNlIDEyLCA5KTtcXG4rXFx0XFx0cXZbaV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXFx1MDAyNiAweDNmZiwgOSk7XFxuIFxcbiBcXHRcXHRpZiAocnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgaXZbaV0pIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXFxuQEAgLTMwMiwxMyArMjQ4LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuLVxcdFxcdFxcdFxcdCAgICAgICB1MzIgKml2LCB1MzIgKnF2LFxcbitcXHRcXHRcXHRcXHQgICAgICAgczMyICppdiwgczMyICpxdixcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxcbiB7XFxuLVxcdHUzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7XFxuLVxcdHUzMiBpX2RlbHRhLCBxX2RlbHRhO1xcbitcXHRzMzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xcbiBcXHR1MzIgdGVtcDtcXG4tXFx0aW50IGksIGNudCA9IDA7XFxuK1xcdHUzMiBpLCBjbnQgPSAwO1xcbiBcXG4gXFx0ZG8ge1xcbiBcXHRcXHRpX21pbiA9IGl2WzBdO1xcbkBAIC0zMTYsMjMgKzI2MSwxOCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRxX21pbiA9IHF2WzBdO1xcbiBcXHRcXHRxX21heCA9IHF2WzBdO1xcbiBcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgREFDS19TTl84ODIyQzsgaSsrKSB7XFxuLVxcdFxcdFxcdHJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBpdltpXSwgXFx1MDAyNmlfbWluLCBcXHUwMDI2aV9tYXgpO1xcbi1cXHRcXHRcXHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgcXZbaV0sIFxcdTAwMjZxX21pbiwgXFx1MDAyNnFfbWF4KTtcXG4rXFx0XFx0XFx0aWYgKGl2W2ldIFxcdTAwM2MgaV9taW4pXFxuK1xcdFxcdFxcdFxcdGlfbWluID0gaXZbaV07XFxuK1xcdFxcdFxcdGlmIChpdltpXSBcXHUwMDNlIGlfbWF4KVxcbitcXHRcXHRcXHRcXHRpX21heCA9IGl2W2ldO1xcbitcXHRcXHRcXHRpZiAocXZbaV0gXFx1MDAzYyBxX21pbilcXG4rXFx0XFx0XFx0XFx0cV9taW4gPSBxdltpXTtcXG4rXFx0XFx0XFx0aWYgKHF2W2ldIFxcdTAwM2UgcV9tYXgpXFxuK1xcdFxcdFxcdFxcdHFfbWF4ID0gcXZbaV07XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdGlmIChpX21heCBcXHUwMDNjIDB4MjAwIFxcdTAwMjZcXHUwMDI2IGlfbWluIFxcdTAwM2MgMHgyMDApXFxuLVxcdFxcdFxcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xcbi1cXHRcXHRlbHNlIGlmIChpX21heCBcXHUwMDNlPSAweDIwMCBcXHUwMDI2XFx1MDAyNiBpX21pbiBcXHUwMDNlPSAweDIwMClcXG4tXFx0XFx0XFx0aV9kZWx0YSA9IGlfbWF4IC0gaV9taW47XFxuLVxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0aV9kZWx0YSA9IGlfbWF4ICsgKDB4NDAwIC0gaV9taW4pO1xcbi1cXG4tXFx0XFx0aWYgKHFfbWF4IFxcdTAwM2MgMHgyMDAgXFx1MDAyNlxcdTAwMjYgcV9taW4gXFx1MDAzYyAweDIwMClcXG4tXFx0XFx0XFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XFxuLVxcdFxcdGVsc2UgaWYgKHFfbWF4IFxcdTAwM2U9IDB4MjAwIFxcdTAwMjZcXHUwMDI2IHFfbWluIFxcdTAwM2U9IDB4MjAwKVxcbi1cXHRcXHRcXHRxX2RlbHRhID0gcV9tYXggLSBxX21pbjtcXG4tXFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRxX2RlbHRhID0gcV9tYXggKyAoMHg0MDAgLSBxX21pbik7XFxuK1xcdFxcdHUzMiBpX2RlbHRhID0gKHUzMikoaV9tYXggLSBpX21pbik7XFxuK1xcdFxcdHUzMiBxX2RlbHRhID0gKHUzMikocV9tYXggLSBxX21pbik7XFxuIFxcbiBcXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuIFxcdFxcdFxcdFxcXCJbREFDS10gaTogbWluPTB4JTA4eCwgbWF4PTB4JTA4eCwgZGVsdGE9MHglMDh4XFxcXG5cXFwiLFxcbkBAIC0zNDUsMjQgKzI4NSwyNCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbiBcXG4gXFx0XFx0aWYgKGlfZGVsdGEgXFx1MDAzZSA1IHx8IHFfZGVsdGEgXFx1MDAzZSA1KSB7XFxuIFxcdFxcdFxcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcXG4tXFx0XFx0XFx0aXZbMF0gPSAodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMjtcXG4tXFx0XFx0XFx0cXZbMF0gPSB0ZW1wIFxcdTAwMjYgMHgzZmY7XFxuK1xcdFxcdFxcdGl2WzBdID0gc2lnbl9leHRlbmQzMigodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMiwgOSk7XFxuK1xcdFxcdFxcdHF2WzBdID0gc2lnbl9leHRlbmQzMih0ZW1wIFxcdTAwMjYgMHgzZmYsIDkpO1xcbiBcXHRcXHRcXHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XFxuLVxcdFxcdFxcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9ICh0ZW1wIFxcdTAwMjYgMHgzZmYwMDApIFxcdTAwM2VcXHUwMDNlIDEyO1xcbi1cXHRcXHRcXHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wIFxcdTAwMjYgMHgzZmY7XFxuK1xcdFxcdFxcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXFx1MDAyNiAweDNmZjAwMCkgXFx1MDAzZVxcdTAwM2UgMTIsIDkpO1xcbitcXHRcXHRcXHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXFx1MDAyNiAweDNmZiwgOSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcdH0gd2hpbGUgKGNudCsrIFxcdTAwM2MgMTAwKTtcXG4gXFxuLVxcdHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7XFxuLVxcdHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdiwgcV92YWx1ZSk7XFxuK1xcdCppX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTtcXG4rXFx0KnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4gXFx0XFx0XFx0XFx0ICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcXG4ge1xcbi1cXHR1MzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xcbitcXHRzMzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xcbiBcXHR1MzIgcmZfYSwgcmZfYjtcXG4gXFxuIFxcdHJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjQ6MTAuNjEwOTI0NzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTIxODIxNTkwNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlJUVzg4XCIsXG4gICAgXCJSVFc4OF84ODIyQ1VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4ODIyY19waHlfc2V0X3BhcmFtXCIsXG4gICAgXCJydHc4ODIyY19waHlfY2FsaWJyYXRpb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgREFDIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4MjJjIHdpcmVsZXNzIGRyaXZlciwgc2ltcGxpZnlpbmcgc29ydGluZyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy4gVGhpcyBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teSBIQ0QpIGJ5IGVuYWJsaW5nIHRoZSBVU0IgdmFyaWFudCBvZiB0aGUgZHJpdmVyIChDT05GSUdfUlRXODhfODgyMkNVKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0ZWQgZHVyaW5nIFBIWSBwYXJhbWV0ZXIgc2V0dXAgYW5kIGNhbGlicmF0aW9uLCB3aGljaCBhcmUgYWNjZXNzaWJsZSB2aWEgdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAgY2FsbGJhY2tzLiBUaGVzZSBjYWxsYmFja3MgYXJlIG5vdCBpbmxpbmVkIGFzIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHRoZSBjaGlwIG9wZXJhdGlvbnMgc3RydWN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZjQ2NzdjZmJlODY0NmVmYzhiNjcyNDViYWZiYjlhYmI3Y2RjODY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTc6MjQ6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuQEAgLTMsNiArMyw4IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRvcHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFwibWFpbi5oXCJcbiAjaW5jbHVkZSBcImNvZXguaFwiXG4gI2luY2x1ZGUgXCJmdy5oXCJcbkBAIC0xNTMsODQgKzE1NSwzMCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfbWlubWF4X2NtcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUsXG4tXHRcdFx0XHQgICB1MzIgKm1pbiwgdTMyICptYXgpXG4rc3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuIHtcbi1cdGlmICh2YWx1ZSBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdGlmICgqbWluIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1pbiBcdTAwM2UgdmFsdWUpXG4tXHRcdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXHRcdGlmICgqbWF4IFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdGlmICgqbWluIFx1MDAzYyAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fVxuLVxuLVx0XHRpZiAoKm1heCAgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH1cbi19XG4rXHRzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7XG4rXHRzMzIgdmIgPSAqKGNvbnN0IHMzMiAqKWI7XG4gXG4tc3RhdGljIHZvaWQgX19ydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnYxLCB1MzIgKnYyKVxuLXtcbi1cdGlmICgqdjEgXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgKnYyIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0aWYgKCp2MSBcdTAwM2UgKnYyKVxuLVx0XHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fSBlbHNlIGlmICgqdjEgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNjIDB4MjAwKSB7XG4tXHRcdGlmICgqdjEgXHUwMDNlICp2Milcbi1cdFx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH0gZWxzZSBpZiAoKnYxIFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgKnYyIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9XG4rXHRyZXR1cm4gKHZhIFx1MDAzZSB2YikgLSAodmEgXHUwMDNjIHZiKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbitzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuIHtcbi1cdHUzMiBpLCBqO1xuLVxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDE7IGkrKykge1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyAoREFDS19TTl84ODIyQyAtIDEgLSBpKSA7IGorKykge1xuLVx0XHRcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcdTAwMjZpdltqXSwgXHUwMDI2aXZbaiArIDFdKTtcbi1cdFx0XHRfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgXHUwMDI2cXZbal0sIFx1MDAyNnF2W2ogKyAxXSk7XG4tXHRcdH1cbi1cdH1cbitcdHNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG4rXHRzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbClcbitzdGF0aWMgczMyIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICp2ZWMpXG4ge1xuLVx0dTMyIHAsIG0sIHQsIGk7XG4rXHRzMzIgc3VtID0gMDtcbiBcbi1cdG0gPSAwO1xuLVx0cCA9IDA7XG4tXHRmb3IgKGkgPSAxMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspIHtcbi1cdFx0aWYgKHZlY1tpXSBcdTAwM2UgMHgyMDApXG4tXHRcdFx0bSA9ICgweDQwMCAtIHZlY1tpXSkgKyBtO1xuLVx0XHRlbHNlXG4tXHRcdFx0cCA9IHZlY1tpXSArIHA7XG4tXHR9XG4rXHRmb3IgKHUzMiBpID0gMTA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkMgLSAxMDsgaSsrKVxuK1x0XHRzdW0gKz0gdmVjW2ldO1xuIFxuLVx0aWYgKHAgXHUwMDNlIG0pIHtcbi1cdFx0dCA9IHAgLSBtO1xuLVx0XHR0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuLVx0fSBlbHNlIHtcbi1cdFx0dCA9IG0gLSBwO1xuLVx0XHR0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuLVx0XHRpZiAodCAhPSAweDApXG4tXHRcdFx0dCA9IDB4NDAwIC0gdDtcbi1cdH1cbitcdHMzMiBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKTtcbiBcbi1cdCp2YWwgPSB0O1xuK1x0cmV0dXJuIGF2ZyBcdTAwM2U9IDAgPyBhdmcgOiAweDQwMCArIGF2ZztcbiB9XG4gXG4gc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHU4IHBhdGgpXG5AQCAtMjcxLDI5ICsyMTksMjcgQEAgc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIodTggcGF0aClcbiBcdHJldHVybiBiYXNlX2FkZHI7XG4gfVxuIFxuLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpXG4rc3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSlcbiB7XG4tXHRib29sIHJldCA9IHRydWU7XG4gXG4tXHRpZiAoKHZhbHVlIFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2ICgweDQwMCAtIHZhbHVlKSBcdTAwM2UgMHg2NCkgfHxcbi1cdCAgICAodmFsdWUgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiB2YWx1ZSBcdTAwM2UgMHg2NCkpIHtcbi1cdFx0cmV0ID0gZmFsc2U7XG4rXHRpZiAodmFsdWUgXHUwMDNlIDEwMCB8fCB2YWx1ZSBcdTAwM2MgLTEwMCkge1xuIFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFwiW0RBQ0tdIEVycm9yIG92ZXJmbG93XFxuXCIpO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIHRydWU7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXG4rc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbiB7XG4gXHR1MzIgdGVtcDtcbi1cdGludCBpID0gMCwgY250ID0gMDtcbitcdHUzMiBpID0gMCwgY250ID0gMDtcbiBcbiBcdHdoaWxlIChpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIFx1MDAyNlx1MDAyNiBjbnQgXHUwMDNjIDEwMDAwKSB7XG4gXHRcdGNudCsrO1xuIFx0XHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XG4tXHRcdGl2W2ldID0gKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTI7XG4tXHRcdHF2W2ldID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4rXHRcdGl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMiwgOSk7XG4rXHRcdHF2W2ldID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXG4gXHRcdGlmIChydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBpdltpXSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXG5AQCAtMzAyLDEzICsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi1cdFx0XHRcdCAgICAgICB1MzIgKml2LCB1MzIgKnF2LFxuK1x0XHRcdFx0ICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsXG4gXHRcdFx0XHQgICAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4ge1xuLVx0dTMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcbi1cdHUzMiBpX2RlbHRhLCBxX2RlbHRhO1xuK1x0czMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcbiBcdHUzMiB0ZW1wO1xuLVx0aW50IGksIGNudCA9IDA7XG4rXHR1MzIgaSwgY250ID0gMDtcbiBcbiBcdGRvIHtcbiBcdFx0aV9taW4gPSBpdlswXTtcbkBAIC0zMTYsMjMgKzI2MSwxOCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFx0XHRxX21pbiA9IHF2WzBdO1xuIFx0XHRxX21heCA9IHF2WzBdO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDOyBpKyspIHtcbi1cdFx0XHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgaXZbaV0sIFx1MDAyNmlfbWluLCBcdTAwMjZpX21heCk7XG4tXHRcdFx0cnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIHF2W2ldLCBcdTAwMjZxX21pbiwgXHUwMDI2cV9tYXgpO1xuK1x0XHRcdGlmIChpdltpXSBcdTAwM2MgaV9taW4pXG4rXHRcdFx0XHRpX21pbiA9IGl2W2ldO1xuK1x0XHRcdGlmIChpdltpXSBcdTAwM2UgaV9tYXgpXG4rXHRcdFx0XHRpX21heCA9IGl2W2ldO1xuK1x0XHRcdGlmIChxdltpXSBcdTAwM2MgcV9taW4pXG4rXHRcdFx0XHRxX21pbiA9IHF2W2ldO1xuK1x0XHRcdGlmIChxdltpXSBcdTAwM2UgcV9tYXgpXG4rXHRcdFx0XHRxX21heCA9IHF2W2ldO1xuIFx0XHR9XG4gXG4tXHRcdGlmIChpX21heCBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IGlfbWluIFx1MDAzYyAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZSBpZiAoaV9tYXggXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNlPSAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCArICgweDQwMCAtIGlfbWluKTtcbi1cbi1cdFx0aWYgKHFfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgcV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlIGlmIChxX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBxX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4ICsgKDB4NDAwIC0gcV9taW4pO1xuK1x0XHR1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO1xuK1x0XHR1MzIgcV9kZWx0YSA9ICh1MzIpKHFfbWF4IC0gcV9taW4pO1xuIFxuIFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXG4gXHRcdFx0XCJbREFDS10gaTogbWluPTB4JTA4eCwgbWF4PTB4JTA4eCwgZGVsdGE9MHglMDh4XFxuXCIsXG5AQCAtMzQ1LDI0ICsyODUsMjQgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcbiBcdFx0aWYgKGlfZGVsdGEgXHUwMDNlIDUgfHwgcV9kZWx0YSBcdTAwM2UgNSkge1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdlswXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2WzBdID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4rXHRcdFx0aXZbMF0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0XHRxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0XHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0XHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXHUwMDI2IDB4M2ZmLCA5KTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0fSB3aGlsZSAoY250KysgXHUwMDNjIDEwMCk7XG4gXG4tXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYsIGlfdmFsdWUpO1xuLVx0cnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTtcbitcdCppX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTtcbitcdCpxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuIHtcbi1cdHUzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XG4rXHRzMzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xuIFx0dTMyIHJmX2EsIHJmX2I7XG4gXG4gXHRyZl9hID0gcnR3X3JlYWRfcmYocnR3ZGV2LCBSRl9QQVRIX0EsIDB4MCwgUkZSRUdfTUFTSyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDoxMC42MTA5MjU4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNjYwOTUwMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIFZpcnR1YWxpemF0aW9uIEZlYXNpYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBydHc4ODIyYy5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgUmVhbHRlayB3aXJlbGVzcyBoYXJkd2FyZS4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHNpbXBsaWZ5aW5nIHNvbWUgSVEgY29tcGFyaXNvbiBhbmQgc29ydGluZyBsb2dpYyBhY3Jvc3Mgc2V2ZXJhbCBmdW5jdGlvbnM6IGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGFuZCBhIGZldyBvdGhlcnMgZGVhbGluZyB3aXRoIERBQyBjYWxpYnJhdGlvbi4gVGhleSdyZSBsZXZlcmFnaW5nIGBzaWduX2V4dGVuZDMyYCBhbmQgYHNvcnRgIGZyb20gYGxpbnV4L3NvcnQuaGAsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC4gVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzIGFsd2F5cywgY2FuIEkgYWN0dWFsbHkgdGVzdCB0aGlzIHRoaW5nIGVmZmVjdGl2ZWx5IHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSB0cmlja3kuIEkga25vdyB0aGUgYHJ0dzg4YCBmYW1pbHkgaXMgYSBtYWM4MDIxMSBkcml2ZXIsIGJ1dCBnZW5lcmFsbHksIHRoZXNlIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUg4oCTIGEgUmVhbHRlayBXaS1GaSBjYXJkLiBgbWFjODAyMTFfaHdzaW1gIGlzbid0IGdvaW5nIHRvIGhlbHAgaGVyZTsgaXQncyBhIHNlcGFyYXRlIHRoaW5nLiBJdCdzIHJhcmUgdG8gZ2V0IGEgZ29vZCBzb2Z0d2FyZSBlbXVsYXRpb24gZ29pbmcgZm9yIGEgZnVsbCB3aXJlbGVzcyBzdGFjayBsaWtlIHRoaXMgdW5sZXNzIHRoZXJlJ3Mgc29tZSB2ZXJ5IHNwZWNpZmljIFFFTVUgZGV2aWNlIG9yIFVTQiBnYWRnZXQgc2V0dXAuIEknbSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgY29ubmVjdGlvbiDigJMgaXMgaXQgUENJZSBvciBVU0IgZm9yIHRoZSA4ODIyYz8gV2FpdC4uLiBJIHJlbWVtYmVyIGBydHc4OGAgZG9lcyBoYXZlIFVTQiBzdXBwb3J0IChgcnR3ODhfdXNiYCksIGRvZXNuJ3QgaXQ/IE9rYXksIHRoYXQncyBpbnRlcmVzdGluZy4gSWYgYHJ0dzg4MjJjYCAqY2FuKiBiZSBhIFVTQiBkZXZpY2UsIHRoZW4gdGhlcmUncyBhIHBvc3NpYmlsaXR5LiBJZiBpdCdzIFVTQiwgdGhlbiBpdCBiZWNvbWVzIHBvdGVudGlhbGx5IGZ1enphYmxlIHVzaW5nIHNvbWV0aGluZyBsaWtlIHN5emthbGxlcidzIGR1bW15IFVTQiBkcml2ZXIuIExldCBtZSBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuY2AgYW5kIHNlZSBpZiB0aGVyZSBpcyBVU0IgY29kZSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUzMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjE4Ljg3NzAyMjg5NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjY0OTU0ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODgyMmNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjMzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTM3PW9iai0kKENPTkZJR19SVFc4OF84ODIyQylcXHQrPSBydHc4OF84ODIyYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTozODpydHc4OF84ODIyYy1vYmpzXFx0XFx0Oj0gcnR3ODgyMmMubyBydHc4ODIyY190YWJsZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTQwPW9iai0kKENPTkZJR19SVFc4OF84ODIyQ0UpXFx0Kz0gcnR3ODhfODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQxOnJ0dzg4Xzg4MjJjZS1vYmpzXFx0XFx0Oj0gcnR3ODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9NDM9b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDUylcXHQrPSBydHc4OF84ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NDQ6cnR3ODhfODgyMmNzLW9ianNcXHRcXHQ6PSBydHc4ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT00Nj1vYmotJChDT05GSUdfUlRXODhfODgyMkNVKVxcdCs9IHJ0dzg4Xzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NzpydHc4OF84ODIyY3Utb2Jqc1xcdFxcdDo9IHJ0dzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMy0jaW5jbHVkZSBcXFwicGh5LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE0OiNpbmNsdWRlIFxcXCJydHc4ODIyYy5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTojaW5jbHVkZSBcXFwicnR3ODgyMmNfdGFibGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYtI2luY2x1ZGUgXFxcIm1hYy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyNTpzdGF0aWMgdm9pZCBydHc4ODIyY19jb25maWdfdHJ4X21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggdHhfcGF0aCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjYtXFx0XFx0XFx0XFx0ICAgICB1OCByeF9wYXRoLCBib29sIGlzX3R4Ml9wYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjZV9lZnVzZV9wYXJzaW5nKHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyOTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ0dzg4MjJjX2VmdXNlICptYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzQ6c3RhdGljIHZvaWQgcnR3ODgyMmN1X2VmdXNlX3BhcnNpbmcoc3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM1OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MDpzdGF0aWMgdm9pZCBydHc4ODIyY3NfZWZ1c2VfcGFyc2luZyhzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4ODIyY19lZnVzZSAqbWFwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ2OnN0YXRpYyBpbnQgcnR3ODgyMmNfcmVhZF9lZnVzZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OC1cXHRzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWVmdXNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTpcXHRzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTAtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MjpcXHRtYXAgPSAoc3RydWN0IHJ0dzg4MjJjX2VmdXNlICopbG9nX21hcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzMtXFx0Y2FzZSBSVFdfSENJX1RZUEVfUENJRTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzQ6XFx0XFx0cnR3ODgyMmNlX2VmdXNlX3BhcnNpbmcoZWZ1c2UsIG1hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03Ni1cXHRjYXNlIFJUV19IQ0lfVFlQRV9VU0I6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc3OlxcdFxcdHJ0dzg4MjJjdV9lZnVzZV9wYXJzaW5nKGVmdXNlLCBtYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzktXFx0Y2FzZSBSVFdfSENJX1RZUEVfU0RJTzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODA6XFx0XFx0cnR3ODgyMmNzX2VmdXNlX3BhcnNpbmcoZWZ1c2UsIG1hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDpzdGF0aWMgdm9pZCBydHc4ODIyY19oZWFkZXJfZmlsZV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgcHJlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfYmJfcmVzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExMDpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfYmFja3VwX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHdfYmFja3VwX2luZm8gKmJhY2t1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzOTpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0d19iYWNrdXBfaW5mbyAqYmFja3VwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU4OnN0YXRpYyBpbnQgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjg6XFx0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY5OlxcdHNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTcyOnN0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4NDpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjIwMzpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjIyOnN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NDpcXHRcXHRpZiAocnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgaXZbaV0pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NTpcXHRcXHQgICAgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgcXZbaV0pKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDYtXFx0XFx0XFx0aSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjUwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI1MS1cXHRcXHRcXHRcXHQgICAgICAgczMyICppdiwgczMyICpxdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4NDpcXHRcXHRydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIGl2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5ODpcXHQqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5OTpcXHQqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzAyOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMDMtXFx0XFx0XFx0XFx0ICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxNDpcXHRydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShydHdkZXYsIGl2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxNTpcXHRydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChydHdkZXYsIGl2LCBxdiwgaV92YWx1ZSwgcV92YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzE4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19iYl9zZXR0aW5nKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMzQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9hZGMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzM1LVxcdFxcdFxcdFxcdCB1OCBwYXRoLCB1MzIgKmFkY19pYywgdTMyICphZGNfcWMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozNDU6XFx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ2LVxcdHN3aXRjaCAocGF0aCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3MS1cXHRcXHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMyNCwgMHgwMDAxMDAwMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM3MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzkxLVxcdFxcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYzNjLCBwYXRoX3NlbCArIDB4ODEwMyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM5MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM5My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTI6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE4OlxcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxOTpcXHRyZWFkX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ1NzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ1OC1cXHRcXHRcXHRcXHQgICB1OCBwYXRoLCB1MzIgKmljX291dCwgdTMyICpxY19vdXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0NjM6XFx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDY0LVxcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCBiYXNlX2FkZHIgKyAweGJjLCAweGYwMDAwMDAwLCAweDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDc1OlxcdHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShydHdkZXYsIFxcdTAwMjZpY19pbiwgXFx1MDAyNnFjX2luKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDc2LVxcdGljID0gaWNfaW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MDY6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MDctXFx0XFx0XFx0XFx0ICAgdTMyIGFkY19pYywgdTMyIGFkY19xYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjUxNjpcXHRiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MTc6XFx0cmVhZF9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTgtXFx0aWMgPSAqaWNfaW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU2LVxcdHJ0d193cml0ZTMyKHJ0d2RldiwgYmFzZV9hZGRyICsgMHg2MCwgMHhmMDAwMDAwMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU1NzpcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU1OC1cXHRpZiAoaWMgXFx1MDAzZT0gMHgxMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01ODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU4NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4NTpcXHR1MzIgYmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTkzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01OTQtXFx0XFx0XFx0XFx0XFx0dTggcGF0aCwgdTggdmVjLCB1MzIgd19hZGRyLCB1MzIgcl9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjEwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjExLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02MTktXFx0LyogYmFja3VwIEkgdmVjdG9yICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMDpcXHR3X2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjIxOlxcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MTA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMjpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF92ZWMocnR3ZGV2LCBwYXRoLCAwLCB3X2FkZHIsIHJfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI0LVxcdC8qIGJhY2t1cCBRIHZlY3RvciAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MjU6XFx0d19hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSArIDB4YjAgKyB3X29mZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjI2OlxcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MTAgKyByX29mZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjI3OlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhydHdkZXYsIHBhdGgsIDEsIHdfYWRkciwgcl9hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MzA6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfZGNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYzMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2NTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NjctXFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MTg2MCwgMHhmYzAwMDAwMCwgMHgzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY2ODpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9wYXRoKHJ0d2RldiwgUkZfUEFUSF9BKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY3Mi1cXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHg0MTYwLCAweGZjMDAwMDAwLCAweDNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjczOlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY3NTpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9kY2socnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjc2LVxcdHJ0d193cml0ZTMyX3NldChydHdkZXYsIDB4MTgzMCwgQklUKDMwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2ODQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTcxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzE0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wcmVwYXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTcxNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3NDM6XFx0cnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3Njc6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzY4LVxcdFxcdFxcdFxcdFxcdCAgdTMyIHRhcmdldF9hZGRyLCB1MzIgdG9nZ2xlX2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3ODQ6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5MzpcXHR3X2kgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzk0OlxcdHJfaSA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MDg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5NTpcXHR3X3EgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMCArIHdfb2ZmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3OTY6XFx0cl9xID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpICsgMHgwOCArIHJfb2ZmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5ODpcXHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV93YWl0KHJ0d2Rldiwgcl9pLCB3X2kgKyAweDgpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTktXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODExOlxcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQocnR3ZGV2LCByX3EsIHdfcSArIDB4OCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4MzE6c3RhdGljIGJvb2wgX19ydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODMzOlxcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0EpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgzNjpcXHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wYXRoKHJ0d2RldiwgUkZfUEFUSF9CKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODM3LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg0MjpzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg1ODpcXHRydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcHJlcGFyZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NTktXFx0aWYgKCFjaGVja19od19yZWFkeShydHdkZXYsIDB4MjgwOCwgMHg3ZmZmODAsIDB4ZmZmZikgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg2NTpcXHRpZiAoIV9fcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHJ0d2RldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODY2LVxcdFxcdHJ0d19lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHJlc3RvcmUgZGFjayB2ZWN0b3JzXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04ODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9kYWNfY2FsKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4OTI6XFx0aWYgKHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShydHdkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODk3OlxcdHJ0dzg4MjJjX2RhY19iYWNrdXBfcmVnKHJ0d2RldiwgYmFja3VwLCBiYWNrdXBfcmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg5OTpcXHRydHc4ODIyY19kYWNfYmJfc2V0dGluZyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMS1cXHQvKiBwYXRoLUEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTAyOlxcdHJ0dzg4MjJjX2RhY19jYWxfYWRjKHJ0d2RldiwgUkZfUEFUSF9BLCBcXHUwMDI2YWRjX2ljX2EsIFxcdTAwMjZhZGNfcWNfYSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMy1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMTA7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDQ6XFx0XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMShydHdkZXYsIFJGX1BBVEhfQSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkwNTpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHJ0d2RldiwgUkZfUEFUSF9BLCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwNi1cXHRcXHRpY19hID0gaWM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDk6XFx0XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMyhydHdkZXYsIFJGX1BBVEhfQSwgYWRjX2ljX2EsIGFkY19xY19hLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTAtXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZpYywgXFx1MDAyNnFjLCBcXHUwMDI2aV9hLCBcXHUwMDI2cV9hKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTQtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MTU6XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwNChydHdkZXYsIFJGX1BBVEhfQSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE3LVxcdC8qIHBhdGgtQiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MTg6XFx0cnR3ODgyMmNfZGFjX2NhbF9hZGMocnR3ZGV2LCBSRl9QQVRIX0IsIFxcdTAwMjZhZGNfaWNfYiwgXFx1MDAyNmFkY19xY19iKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkyMDpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAxKHJ0d2RldiwgUkZfUEFUSF9CKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTIxOlxcdFxcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIocnR3ZGV2LCBSRl9QQVRIX0IsIFxcdTAwMjZpYywgXFx1MDAyNnFjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTIyLVxcdFxcdGljX2IgPSBpYztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkyNTpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAzKHJ0d2RldiwgUkZfUEFUSF9CLCBhZGNfaWNfYiwgYWRjX3FjX2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkyNi1cXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmljLCBcXHUwMDI2cWMsIFxcdTAwMjZpX2IsIFxcdTAwMjZxX2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzMC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkzMTpcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHJ0d2RldiwgUkZfUEFUSF9CKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTM5OlxcdHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhydHdkZXYsIGJhY2t1cCwgYmFja3VwX3JmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDEtXFx0LyogYmFja3VwIHJlc3VsdHMgdG8gcmVzdG9yZSwgc2F2aW5nIGEgbG90IG9mIHRpbWUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTQyOlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjk1MDpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl94Ml9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3NldF9wb3dlcl90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHM4IGJiX2dhaW5bMl1bOF0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5OTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfcG93ZXJfdHJpbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05OTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMjctXFx0aWYgKHNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTAyODpcXHRcXHRydHc4ODIyY19zZXRfcG93ZXJfdHJpbShydHdkZXYsIGJiX2dhaW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfdGhlcm1hbF90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwNTE6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGFfYmlhcyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDczOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3Jma19oYW5kc2hha2Uoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBpc19iZWZvcmVfaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTExOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTExOTpzdGF0aWMgdm9pZCBydHc4ODIyY19yZmtfcG93ZXJfc2F2ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTIwLVxcdFxcdFxcdFxcdCAgICBib29sIGlzX3Bvd2VyX3NhdmUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTEzMTpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYmFja3VwX2JiX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCB1MzIgcmVnW10sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMzItXFx0XFx0XFx0XFx0XFx0ICB1MzIgcmVnX2JhY2t1cFtdLCB1MzIgcmVnX251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMTQ0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNDUtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCB1MzIgcmVnW10sIHUzMiByZWdfYmFja3VwW10sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTE1Nz1zdGF0aWMgYm9vbCBjaGVja19yZl9zdGF0dXMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExNzI6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3R4X3BhdXNlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExODg6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2JiX2RwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMjIwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEyNTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2FmZV9kcGtfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMjg5OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19iYl9kcGtfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzI5OnN0YXRpYyBib29sIF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgZ2FpbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTMzODpzdGF0aWMgdm9pZCBfcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzOS1cXHRcXHRcXHRcXHRcXHRcXHQgdTggYmFuZCwgdTggcGF0aClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzY4LVxcdFxcdHYgPSB0eGdhcGstXFx1MDAzZXJmM2ZfYnBbYmFuZF1bZ2Fpbl1bcGF0aF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzNjk6XFx0XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzNzAtXFx0XFx0XFx0aWYgKCFjaGVja190eGdhaW4pIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzkyOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV9nYWluX2JiX3RhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0MDAtXFx0XFx0Zm9yIChwYXRoID0gMDsgcGF0aCBcXHUwMDNjIHJ0d2Rldi1cXHUwMDNlaGFsLnJmX3BhdGhfbnVtOyBwYXRoKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQwMTpcXHRcXHRcXHRfcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDAyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgYmFuZCwgcGF0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQwNzpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQ4NDpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfY2FsY3VsYXRlX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDk1OlxcdHJ0dzg4MjJjX3R4Z2Fwa19iYWNrdXBfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDk2LVxcdFxcdFxcdFxcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTUxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTUxNzpcXHRcXHRydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTUxOC1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1MTpcXHRcXHRydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1Mi1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTMtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTU0OlxcdHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU1LVxcdFxcdFxcdFxcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1ODpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmZfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTcwOnN0YXRpYyB1MzIgcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBnYWluLCBzOCBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1NzY6XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIGdhaW4pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzctXFx0XFx0bmV3X2dhaW4gPSBnYWluO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1OTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYyNC1cXHRcXHRcXHRcXHR2ID0gdHhnYXBrLVxcdTAwM2VyZjNmX2JwW2JhbmRdW2pdW3BhdGhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjI1OlxcdFxcdFxcdFxcdGlmIChfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQocnR3ZGV2LCB2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYyNi1cXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjMyLVxcdFxcdFxcdHYgPSB0eGdhcGstXFx1MDAzZXJmM2ZfYnBbYmFuZF1baV1bcGF0aF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2MzM6XFx0XFx0XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2MzQtXFx0XFx0XFx0XFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NTA6XFx0XFx0XFx0dG1wXzNmID0gcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY1MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHR4Z2Fway1cXHUwMDNlcmYzZl9icFtiYW5kXVtpXVtwYXRoXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2ODEtXFx0XFx0XFx0XFxcIltUWEdBUEtdIEFscmVhZHkgUmVhZCB0eGdhcGstXFx1MDAzZXJlYWRfdHhnYWluIHJldHVybiEhIVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2ODI6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY4My1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcxOC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3MTk6XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcyMC1cXHR0eGdhcGstXFx1MDAzZXJlYWRfdHhnYWluID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzIzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2FwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzMyOlxcdHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc0NzpcXHRydHc4ODIyY190eGdhcGtfYmFja3VwX2JiX3JlZyhydHdkZXYsIGJiX3JlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0OC1cXHRcXHRcXHRcXHQgICAgICBiYl9yZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzQ5OlxcdHJ0dzg4MjJjX3R4Z2Fwa190eF9wYXVzZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzUwLVxcdGZvciAocGF0aCA9IDA7IHBhdGggXFx1MDAzYyBydHdkZXYtXFx1MDAzZWhhbC5yZl9wYXRoX251bTsgcGF0aCsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1Mi1cXHRcXHRcXHRcXHRcXHQgICAgICBSRl9DRkdDSCwgUkZSRUdfTUFTSykgXFx1MDAyNiBNQVNLQllURTA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTM6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX2JiX2RwayhydHdkZXYsIHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU0OlxcdFxcdHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrKHJ0d2RldiwgcGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTU6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX2NhbGN1bGF0ZV9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1NjpcXHRcXHRydHc4ODIyY190eGdhcGtfcmZfcmVzdG9yZShydHdkZXYsIHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU3OlxcdFxcdHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrX3Jlc3RvcmUocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1ODpcXHRcXHRydHc4ODIyY190eGdhcGtfYmJfZHBrX3Jlc3RvcmUocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1OS1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NjA6XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2MTpcXHRydHc4ODIyY190eGdhcGtfcmVsb2FkX2JiX3JlZyhydHdkZXYsIGJiX3JlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2Mi1cXHRcXHRcXHRcXHQgICAgICBiYl9yZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NjU6c3RhdGljIHZvaWQgcnR3ODgyMmNfZG9fZ2FwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzY2LXtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjQ6MTkuNTQzNTIzMDc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI1MjEzOTk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQXNzZXNzbWVudCBvZiB0aGUgcnR3ODgyMmMgRHJpdmVyKipcblxuT2theSwgc28gdGhlIGBydHc4ODIyY2AgZHJpdmVyIGdldHMgYnVpbHQgd2hlbiBgQ09ORklHX1JUVzg4Xzg4MjJDYCBpcyBmbGlwcGVkLiBUaGlzIGZhbWlseSBhbHNvIGVuY29tcGFzc2VzIFBDSWUgKGBDT05GSUdfUlRXODhfODgyMkNFYCksIFNESU8gKGBDT05GSUdfUlRXODhfODgyMkNTYCksIGFuZCBjcml0aWNhbGx5LCBhIFVTQiB2ZXJzaW9uIChgQ09ORklHX1JUVzg4Xzg4MjJDVWApLiBUaGF0IFVTQiB2YXJpYW50IGlzIHRoZSBrZXkgaGVyZS4gU2luY2UgYSBVU0IgZGV2aWNlIGlzIGF2YWlsYWJsZSwgdGhpcyBkcml2ZXIgKnNob3VsZCogYmUgYW1lbmFibGUgdG8gZnV6emluZyB3aXRoIHN5emthbGxlcidzIFVTQiBkdW1teSBkcml2ZXIsIGVtdWxhdGluZyB0aGF0IGhhcmR3YXJlIGludGVyZmFjZS5cblxuV2FpdCBhIG1pbnV0ZSwgbGV0J3MgcmUtcmVhZCB0aGUgcHJvbXB0LiBJdCdzIGFza2luZyBmb3IgYSBgV29ydGhGdXp6aW5nPWZhbHNlYCByZXR1cm4gaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgdGhlIGNhc2Ugb2Ygc29tZXRoaW5nIGxpa2UgdXNiIGdhZGdldC4gQnV0IGEgVVNCIGRyaXZlciAqaXMqIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IG9yIGEgZHVtbXkgSENELlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQsIGFuZCBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgKmlzKiBhdmFpbGFibGUgaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBhbmQgUUVNVSksIHRoaXMgbG9va3MgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIG9mIGBDT05GSUdfUlRXODhfODgyMkNVYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG9idmlvdXMgc2hvd3N0b3BwZXJzLCBidXQgdGhlIHByZXNlbmNlIG9mIHRoZSBVU0IgdmVyc2lvbiBpcyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCB0aGlzIHBhdGNoIGlzLCBpbiBmYWN0LCB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzczNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDoyNS43OTU2NjYyODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk3NjE2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUVzg4Xzg4MjJDVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc9MTA0PWNvbmZpZyBSVFc4OF84ODIyQ1NcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjQ6MjUuODQ1NDMyODY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxMDM2MDg4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiBgUlRXODhfODgyMkNVYDpcblxuKipBbmFseXppbmcgYFJUVzg4Xzg4MjJDVWAgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gd2UncmUgZGl2aW5nIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgUlRXODhfODgyMkNVYC4gTXkgaW5pdGlhbCBhcHByb2FjaCBpcyB0byBtZW50YWxseSBtYXAgb3V0IHRoZSB0eXBpY2FsIGRyaXZlciBzdHJ1Y3R1cmUuIFdoYXQgYXJlIHRoZSBsaWtlbHkgZm91bmRhdGlvbmFsIGVsZW1lbnRzPyBXZSdyZSB0YWxraW5nIGFib3V0IGEgd2lyZWxlc3MgZHJpdmVyLCBzbyBJJ20gdGhpbmtpbmcgaW1tZWRpYXRlbHkgYWJvdXQgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIChIQUwpLCBsaWtlbHkgc29tZSBzb3J0IG9mIHBvd2VyIG1hbmFnZW1lbnQgaW50ZXJmYWNlLCBhbmQgb2YgY291cnNlLCB0aGUgbmV0d29yayBzdGFjayBpbnRlcmFjdGlvbnMuXG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGlzIGlzIGEgc3RhbmRhcmQgUmVhbHRlayBkZXNpZ24gb3IgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjdXN0b20gZWxlbWVudHMgdG8gY29uc2lkZXIsIHN1Y2ggYXMgYSB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uIEFyZSB0aGVyZSBhbnkgZXhpc3RpbmcgUmVhbHRlayBkcml2ZXIgYXJjaGl0ZWN0dXJlcyBJIHNob3VsZCBiZSBmYW1pbGlhciB3aXRoLCBvciBhbnkga25vd24gcXVpcmtzPyBUaGF0IHdvdWxkIGJlIHVzZWZ1bCBpbmZvcm1hdGlvbiB0byBoYXZlIHRvIHVuZGVyc3RhbmQgaXRzIGludGVycmVsYXRpb25zaGlwIHdpdGggb3RoZXIgc3lzdGVtcy5cblxuVGhlbiB0aGVyZSBhcmUgdGhlIGtlcm5lbCBpbnRlcmZhY2VzLiBXaGF0IHNwZWNpZmljIGtlcm5lbCBtb2R1bGVzIG9yIGZ1bmN0aW9ucyBpcyB0aGlzIGRyaXZlciBnb2luZyB0byByZWx5IG9uPyBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgd2lyZWxlc3MgZXh0ZW5zaW9ucyAoV0UpIG9yIGl3bHdpZmksIG9yIGlzIHRoaXMgZHJpdmVyIGltcGxlbWVudGluZyBzb21ldGhpbmcgbW9yZSBiZXNwb2tlPyBJIHNob3VsZCBiZSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIHZlcnNpb24gY29tcGF0aWJpbGl0eSBoZXJlLCBhcyB0aGF0IGNvdWxkIGFsc28gcmV2ZWFsIGEgbG90IGFib3V0IHRoZSBkZXBlbmRlbmN5IHRyZWUuIEFsc28sIHdpbGwgaXQgdXNlIGFueSBjdXN0b20ga2VybmVsIG1vZHVsZXMgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgYm9hcmQ/XG5cbkkgaGF2ZSB0byB0aGluayBhYm91dCB0aGUgdG9vbGNoYWluIGFzIHdlbGwuIFdoYXQgY29tcGlsZXIgdmVyc2lvbiBhbmQgbGlicmFyaWVzIGFyZSBsaWtlbHkgbmVlZGVkIGZvciBjb21waWxhdGlvbj8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBidWlsZCBmbGFncyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIHBlcmhhcHMgcmVsYXRlZCB0byBkZWJ1ZyBzeW1ib2xzIG9yIHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucz8gTGV0J3MgYXNzdW1lIGl0IHN1cHBvcnRzIHRoZSBsYXRlc3QgYnVpbGQsIGJ1dCBpdCB3aWxsIGJlIHVzZWZ1bCB0byBjaGVjayB0aGUgY29tcGF0aWJpbGl0eSBsaXN0LCBpZiBpdCBleGlzdHMuXG5cbkknbSBtZW50YWxseSBjcmVhdGluZyBhIGRlcGVuZGVuY3kgZ3JhcGgsIHNlZWluZyBob3cgYFJUVzg4Xzg4MjJDVWAgZml0cyB3aXRoaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBJJ20gaW1hZ2luaW5nIGEgbXVsdGktdGllcmVkIGFyY2hpdGVjdHVyZSwgYW5kIHdhbnQgdG8gcXVpY2tseSBkZXRlcm1pbmUgZWFjaCBvZiBpdHMgY29tcG9uZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhdCBlYWNoIGxldmVsIHRvIGVuc3VyZSBJIGNhbiBhZGRyZXNzIGFueSBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDUwOSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjMxLjU1NTc5Njk5NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDc4MDQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlRXODhfODgyMkNVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc9MTA0PWNvbmZpZyBSVFc4OF84ODIyQ1NcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjQ6MzEuNjA2NTgwNDE1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzOTQwNjk0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBLY29uZmlnKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHNvbWUgZmVhdHVyZSBvciBvcHRpb24gaXMgY29udHJvbGxlZC4gTGV0J3Mgc2VlLi4uIEknbGwgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ2AgZmlsZSwgYXJvdW5kIGxpbmUgMTE1LiBUaGF0IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2sgdGhlIGdlbmVyYWwgc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBkcml2ZXIuIEhvcGVmdWxseSwgaXQnbGwgcHJvdmlkZSBzb21lIGNsYXJpdHkgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSdtIGludGVyZXN0ZWQgaW4gYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gVGhpcyBLY29uZmlnIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBidWlsdCBhbmQgY29uZmlndXJlZCwgYW5kIGxpbmUgMTE1IGZlZWxzIGxpa2UgYSBnb29kIHNwb3QgdG8gc3RhcnQgbXkgc2VhcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTE0MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjM1LjI0NTk4OTcyOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTAwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAwOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDRSBjaGlwc2V0XFxuIDEwMTpcXHRcXG4gMTAyOlxcdFxcdCAgODAyLjExYWMgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMTAzOlxcdFxcbiAxMDQ6XFx0Y29uZmlnIFJUVzg4Xzg4MjJDU1xcbiAxMDU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkNTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxMDY6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gMTA3OlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDEwODpcXHRcXHRzZWxlY3QgUlRXODhfU0RJT1xcbiAxMDk6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjJDXFxuIDExMDpcXHRcXHRoZWxwXFxuIDExMTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQ1MgY2hpcHNldFxcbiAxMTI6XFx0XFxuIDExMzpcXHRcXHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuIDExNDpcXHRcXG4gMTE1OlxcdGNvbmZpZyBSVFc4OF84ODIyQ1VcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxMTc6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gMTE4OlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDExOTpcXHRcXHRzZWxlY3QgUlRXODhfVVNCXFxuIDEyMDpcXHRcXHRzZWxlY3QgUlRXODhfODgyMkNcXG4gMTIxOlxcdFxcdGhlbHBcXG4gMTIyOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDVSBjaGlwc2V0XFxuIDEyMzpcXHRcXG4gMTI0OlxcdFxcdCAgODAyLjExYWMgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAxMjU6XFx0XFxuIDEyNjpcXHRjb25maWcgUlRXODhfODcyM0RFXFxuIDEyNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTI4OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDEyOTpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDozNS4yNDYwNjQwNThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgwMjEwNDcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBSVFc4OF84ODIyQ1VgIERlcGVuZGVuY3kgYW5kIE1vZGlmaWVkIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgUlRXODhfODgyMkNVYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBVU0JgIGFuZCBpbXBsaWNpdGx5IGVuYWJsZXMgYFJUVzg4Xzg4MjJDYC4gVGhpcyBtYWtlcyBzZW5zZTsgaWYgaXQncyBhIFVTQiBpbXBsZW1lbnRhdGlvbiwgaXQgd2lsbCBsaWtlbHkgYmUgYnVpbHQgb24gdG9wIG9mIHRoZSBiYXNlIGNoaXAuIFRoZSBwYXRjaCB0YXJnZXRzIGBydHc4ODIyYy5jYCwgd2hpY2ggaXMgb25seSBjb21waWxlZCBpZiBgUlRXODhfODgyMkNgIGlzIGNvbmZpZ3VyZWQuIFRoZXJlZm9yZSwgdG8gZWZmZWN0aXZlbHkgdGVzdCB0aGlzLCBJIG5lZWQgdG8gZW5hYmxlIGBSVFc4OF84ODIyQ1VgIGJlY2F1c2UgdGhhdCBzaG91bGQgYWxsb3cgbWUgdG8gdGVzdCB0aHJvdWdoIFVTQiBlbXVsYXRpb24uXG5cbk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSBiZWluZyBtb2RpZmllZD8gTGV0J3MgdGFrZSBhIGxvb2suIEkgc2VlOiBgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzJgIChhIG5ldyBmdW5jdGlvbiksIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCwgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gVGhlc2UgYXJlIGFsbCBkZWNsYXJlZCBhcyBzdGF0aWMsIHNvIHRoZXkncmUgaW50ZXJuYWwgdG8gdGhlIGZpbGUuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgY2FsbCB0aGVzZSBmdW5jdGlvbnMsIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuXG5cbk9rYXksIGxldCdzIHN0YXJ0IHdpdGggdGhlIGNhbGxzIHRvIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBJIHNlZSB0aGF0IGl0J3MgY2FsbGVkIGJ5IGBydHc4ODIyY19kYWNfY2FsX3N0ZXAyYCwgYHJ0dzg4MjJjX2RhY19jYWxfc3RlcDNgLCBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwNGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9hZGNgLiBUaG9zZSBmb3VyIGFyZSBhbGwgY2FsbGVkIGJ5IGBydHc4ODIyY19yZl9kYWNfY2FsYC4gTm93LCBteSBuZXh0IHF1ZXN0aW9uIGlzLCB3aG8gY2FsbHMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgPyBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBleGVjdXRpb24gcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4MzksIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDo0Mi4wNDgxNzEzMTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTUyODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg4MjJjX3JmX2RhY19jYWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTg0Mj1zdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04ODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9kYWNfY2FsKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTc3OD1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3Nzkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzgwOlxcdHJ0dzg4MjJjX3JmX2RhY19jYWwocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc4MS1cXHRydHc4ODIyY19yZl94Ml9jaGVjayhydHdkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDo0Mi4xMDgzMzAxMjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE1MTU3OTUyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgUkYgSW5pdGlhbGl6YXRpb24gQ2FsbCoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgXCJXaG8ncyBjYWxsaW5nIGBydHc4ODIyY19yZl9pbml0YD9cIi4gVGhhdCdzIHRoZSBjcnV4IG9mIHRoaXMuIFVuZGVyc3RhbmRpbmcgdGhlICpjYWxsZXIqIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWJzb2x1dGVseSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIFJGIGluaXRpYWxpemF0aW9uIGZsb3cgYW5kLCBjb25zZXF1ZW50bHksIHRoZSBzdGF0ZSBvZiB0aGUgc3lzdGVtIHdoZW4gUkYgaXMgcmVhZHkuIElzIGl0IGJlaW5nIGludm9rZWQgZGlyZWN0bHkgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiwgcGVyaGFwcyBmcm9tIHRoZSBib2FyZCBicmluZy11cCBjb2RlPyBPciBpcyBpdCBiZWluZyBjYWxsZWQgbGF0ZXIsIGxpa2VseSBhcyBhIHJlc3BvbnNlIHRvIHNvbWUgZXZlbnQgbGlrZSBhIFBDSSBwcm9iZSwgYSBwb3dlci11cCBzZXF1ZW5jZSwgb3IgYSBjb25uZWN0aW9uIGF0dGVtcHQ/XG5cbktub3dpbmcgdGhlIGNhbGwgcGF0aCB3aWxsIGltbWVkaWF0ZWx5IGdpdmUgbWUgYSB0b24gb2YgdmFsdWFibGUgY29udGV4dC4gSXQgaW5mb3JtcyBtZSBpZiBJIG5lZWQgdG8gbG9vayB1cHN0cmVhbSBhdCB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb25zIG9yIGRvd25zdHJlYW0gdG8gdGhlIHN0YXRlIG1hY2hpbmVzLiBJdCB3aWxsIHNob3cgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXLigJlzIG9wZXJhdGlvbi4gSXQgd2lsbCBpbmRpY2F0ZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgUkYgcG9ydGlvbiBpcyBpbml0aWFsaXplZCBhbmQgdGhhdCdzIHRoZSBjb3JlLiBJdOKAmXMgdGhlIHN0YXJ0aW5nIHBvaW50LlxuXG5Gcm9tIHRoZSBjYWxsZXIsIEkgY2FuIGRlZHVjZTpcblxuKiAgICoqVGltaW5nOioqIFdoZW4gdGhlIFJGIGlzIGluaXRpYWxpemVkIHJlbGF0aXZlIHRvIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gYnJpbmctdXAgb3IgbmV0d29yayBzdGFjayBpbml0aWFsaXphdGlvbi5cbiogICAqKkNvbnRleHQ6KiogV2hhdCBvdGhlciBvcGVyYXRpb25zIGFyZSBhbHJlYWR5IGNvbXBsZXRlZCB3aGVuIHRoZSBSRiBpbml0aWFsaXphdGlvbiBoYXBwZW5zLlxuKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgcHJlY29uZGl0aW9ucyBhcmUgKmFzc3VtZWQqIHRvIGJlIG1ldCBiZWZvcmUgdGhpcyBjYWxsLlxuXG5JIGNhbiB0aGVuIHRyYWNlIHRoYXQgdG8gc2VlIHdoZXJlIHRoZSBjYWxsIGNhbWUgZnJvbSBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBpbiBvcmRlciB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IFJGIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHdvcmtzIGluIHJlbGF0aW9uIHRvIGl0cyBjYWxsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MTIxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjQ6NDguMjU5OTEzNjQ4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTUxMjY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4ODIyY19yZl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzY1PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RvX2dhcGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzc4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTgwMz1zdGF0aWMgdm9pZCBydHc4ODIyY19waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTg0OTpcXHRydHc4ODIyY19yZl9pbml0KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4NTAtXFx0cnR3ODgyMmNfcHdydHJhY2tfaW5pdChydHdkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDo0OC4zMTk0MzA2OTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg1NTExNTUzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDYWxsZXIgb2YgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gKipcblxuQWxyaWdodCwgc28gYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gLi4uIHRoYXQncyBhIGtleSBmdW5jdGlvbiBpbiB0aGUgUEhZIGNvbmZpZ3VyYXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgUmVhbHRlayBXaUZpIGNoaXAsIHJpZ2h0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgYWx3YXlzICp3aG8qIGlzIGNhbGxpbmcgdGhhdD8gSXQncyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIHdoZW4gZGVidWdnaW5nLCBvcHRpbWl6aW5nLCBvciBldmVuIGp1c3QgdW5kZXJzdGFuZGluZyBhIGRyaXZlcidzIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQuXG5cbklzIGl0IGNhbGxlZCBkaXJlY3RseSBmcm9tIGEgaGlnaGVyLWxldmVsIGZ1bmN0aW9uLCBtYXliZSBzb21ldGhpbmcgZXhwb3NlZCB0byB0aGUgTUFDIGxheWVyPyBQZXJoYXBzIGl0J3MgYmVpbmcgdHJpZ2dlcmVkIGJ5IGFuIGludGVycnVwdCBoYW5kbGVyLCBtZWFuaW5nIGl0J3MgcmVhY3RpbmcgdG8gaGFyZHdhcmUgZXZlbnRzPyBNYXliZSBpdCdzIGJ1cmllZCBkZWVwIHdpdGhpbiBzb21lIHNvcnQgb2YgcG93ZXIgbWFuYWdlbWVudCByb3V0aW5lLCBhZGp1c3RpbmcgUEhZIHBhcmFtZXRlcnMgYmFzZWQgb24gbGluayBzdGF0ZSBvciBwb3dlciBwcm9maWxlcz8gSXQgY291bGQgZXZlbiBiZSBwYXJ0IG9mIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gRGV0ZXJtaW5pbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBwYXJhbW91bnQgdG8gdW5kZXJzdGFuZGluZyAqd2h5KiBpdCdzIGJlaW5nIGNhbGxlZCBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS5cblxuVGhlIGRlcGVuZGVuY3kgdHJlZSBpcyBrZXk6IElzIGl0IGNhbGxlZCBieSBhIGNvcmUgZnVuY3Rpb24sIG9yIHNvbWUgb3B0aW9uYWwgZmVhdHVyZT8gV2hhdCBkb2VzIGl0IGRvIGZvciB0aGUgUEhZLCB3aGF0IHBhcnRzIG9mIHRoZSBQSFkgZG9lcyBpdCB0YWxrIHRvPyBUaGUgYW5zd2VycyB0byB0aG9zZSBxdWVzdGlvbnMgYXJlIGFsbCBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0aGUgc3lzdGVtLlxuXG5JIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuIENyb3NzLXJlZmVyZW5jaW5nIHRoZSBjb2RlLCB1c2luZyBhIGRlYnVnZ2VyLCB0aGF0J3MgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4OTAsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNDo1NC4xNzQ1NTM2NDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTg2NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3ODc9c3RhdGljIHZvaWQgcnR3ODgyMmNfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4MDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4MDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTAxLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MDI6XFx0LnBoeV9zZXRfcGFyYW1cXHRcXHQ9IHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDMtXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg4MjJjX3JlYWRfZWZ1c2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjU0LjIzOTE0NDM0N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzMxNzI4NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRGl2aW5nIGludG8gdGhlIGBwaHlfc2V0X3BhcmFtYCBGdW5jdGlvbiBDYWxsKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgc29tZXRoaW5nIHdpdGhpbiBgcnR3ODgyMmNfb3BzYC4gUmlnaHQsIHRoYXQncyBwYXJ0IG9mIHRoZSBicm9hZGVyIGBzdHJ1Y3QgcnR3X2NoaXBfb3BzYCBzdHJ1Y3R1cmUuIFRoaXMgbWVhbnMgaXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCBvZiB0aGUgZHJpdmVyJ3MgaW50ZXJmYWNlLiBOb3csIEkgc2VlIHRoYXQgYHBoeV9zZXRfcGFyYW1gIGlzIGJlaW5nIGludm9rZWQg4oCTIGFuZCB0aGUgY29yZSBkcml2ZXIgaXMgdGhlIG9uZSBjYWxsaW5nIGl0LiBUaGF04oCZcyBhIGtleSBkZXRhaWwhIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZS4gTXkgbmV4dCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbihzKSB3aGVyZSBgcGh5X3NldF9wYXJhbWAgaXMgY2FsbGVkIHdpdGhpbiB0aGUgZHJpdmVyJ3MgY29yZSBsb2dpYy4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIHByb3ZpZGUgdmFsdWFibGUgY29udGV4dCBhcm91bmQgd2hhdCBwYXJhbWV0ZXJzIGFyZSBiZWluZyBzZXQgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcywgYW5kIHdpbGwgaW5mb3JtIG15IGRpYWdub3Npcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODY1NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjU4LjU3MDg4MzExM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIxMDEzNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X3NldF9wYXJhbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xMzc0PWludCBydHdfcG93ZXJfb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTQxMzpcXHRjaGlwLVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9zZXRfcGFyYW0ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmg9ODYyPXN0cnVjdCBydHdfY2hpcF9vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmgtODY5LVxcdGludCAoKnJlYWRfZWZ1c2UpKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4ICptYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjg3MDpcXHR2b2lkICgqcGh5X3NldF9wYXJhbSkoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmgtODcxLVxcdHZvaWQgKCpzZXRfY2hhbm5lbCkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggY2hhbm5lbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYz01NTM9c3RhdGljIHZvaWQgcnR3ODcwM2JfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTU3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6NTc4OnN0YXRpYyB2b2lkIHJ0dzg3MDNiX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtNTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYz0xODM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg3MDNiX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xODQzLVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4NzAzYl9yZWFkX2VmdXNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYzoxODQ0OlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4NzAzYl9waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xODQ1LVxcdC5zZXRfY2hhbm5lbFxcdFxcdD0gcnR3ODcwM2Jfc2V0X2NoYW5uZWwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9Njc9c3RhdGljIHZvaWQgcnR3ODcyM2RfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzo4NTpzdGF0aWMgdm9pZCBydHc4NzIzZF9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYz0xMzkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg3MjNkX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xMzk0LVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jOjEzOTU6XFx0LnBoeV9zZXRfcGFyYW1cXHRcXHQ9IHJ0dzg3MjNkX3BoeV9zZXRfcGFyYW0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTEzOTYtXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg3MjN4X3JlYWRfZWZ1c2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM9OTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MTJhX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYy05MTYtXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3ODgxMmFfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYzo5MTc6XFx0LnBoeV9zZXRfcGFyYW1cXHRcXHQ9IE5VTEwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkxOC1cXHQucmVhZF9lZnVzZVxcdFxcdD0gcnR3ODh4eGFfcmVhZF9lZnVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYz0yNjU9c3RhdGljIHZvaWQgcnR3ODgxNGFfY29uZmlnX2Nja19yeF9hbnRlbm5hX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jOjI4MzpzdGF0aWMgdm9pZCBydHc4ODE0YV9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTI4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MjA1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODE0YV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMjA1Mi1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyMDUzOlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4ODE0YV9waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDU0LVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4ODE0YV9yZWFkX2VmdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jPTg2MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIxYV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtODYyLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0dzg4MjFhX3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmM6ODYzOlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NjQtXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg4eHhhX3JlYWRfZWZ1c2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM9MTUxPXN0YXRpYyB2b2lkIHJ0dzg4MjFjX3BoeV9iZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYzoxNTg6c3RhdGljIHZvaWQgcnR3ODgyMWNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jPTE2NTg9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE2NjAtXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3X3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTY2MTpcXHQucGh5X3NldF9wYXJhbVxcdFxcdD0gcnR3ODgyMWNfcGh5X3NldF9wYXJhbSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY2Mi1cXHQucmVhZF9lZnVzZVxcdFxcdD0gcnR3ODgyMWNfcmVhZF9lZnVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYz0xNDU9c3RhdGljIHZvaWQgcnR3ODgyMmJfcGh5X2JmX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0xNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jOjE1MjpzdGF0aWMgdm9pZCBydHc4ODIyYl9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTE1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MjE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE1Mi1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYzoyMTUzOlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4ODIyYl9waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0yMTU0LVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4ODIyYl9yZWFkX2VmdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3ODc9c3RhdGljIHZvaWQgcnR3ODgyMmNfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4MDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4MDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTAxLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MDI6XFx0LnBoeV9zZXRfcGFyYW1cXHRcXHQ9IHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDMtXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg4MjJjX3JlYWRfZWZ1c2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI0OjU4LjYyMjk4ODQ1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDAwODQzMjkzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBSZWFsdGVrIHdpcmVsZXNzIGRldmljZSBjb21lcyB0byBsaWZlLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBydHdfcG93ZXJfb25gLCB0aGF0IHNlZW1zIGxpa2UgdGhlIG9idmlvdXMgZW50cnkgcG9pbnQsIHJpZ2h0PyBCdXQgdGhlbiBJIHNhdyB0aGF0IGBydHc4ODIyY19yZl9kYWNfY2FsYCBpcyBhbHNvIGNhbGxlZCBieSBgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlYC4gVGhhdCBmZWVscyBpbnRlcm5hbCB0aG91Z2gsIHNvIEkgZGlzbWlzc2VkIGl0LlxuXG5TbywgdGhlIHRyYWNlIGxvb2tzIGxpa2UgYHJ0d19wb3dlcl9vbmAgLVx1MDAzZSBgcGh5X3NldF9wYXJhbWAgLVx1MDAzZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgLVx1MDAzZSBgcnR3ODgyMmNfcmZfaW5pdGAgLVx1MDAzZSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuXG5cbk5vdywgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FudHMgbWUgdG8gYXZvaWQgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4gTXkgZmlyc3QgdGhvdWdodCB3YXMgd2hldGhlciBgcnR3X3Bvd2VyX29uYCB3b3VsZCBiZSBzdWl0YWJsZSwgYnV0IGl04oCZcyBwcm9iYWJseSB0b28gZ2VuZXJpYywgc28gSSBzaG91bGQgZGlnIGRlZXBlci5cblxuVGhlIHByb21wdCB3YW50cyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIE9rYXksIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBpcyBhIHBvc3NpYmlsaXR5LiBCdXQgdGhhdCdzIHN0YXRpYyEgV2FpdCwgaXQncyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYHJ0dzg4MjJjX29wc2AuICpBaCosIHRoYXQncyB0aGUga2V5LiBGdW5jdGlvbiBwb2ludGVycyBhdm9pZCBpbmxpbmluZyBiZWNhdXNlIHRoZSBjb21waWxlciBuZWVkcyB0byBiZSBhYmxlIHRvIHJlc29sdmUgYW4gYWRkcmVzcy4gVGhhdCdzIGdvb2Q7IGl0IG1lYW5zIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBoYXMgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyBldmVuIHRob3VnaCBpdCdzIHN0YXRpYy5cblxuQnV0LCB0aGUgcHJvbXB0IHdhbnRzIHRvIGF2b2lkIHN0YXRpYyBmdW5jdGlvbnMsIHNvIEkgc2hvdWxkIGxvb2sgaW50byB0aGlzIGZ1cnRoZXIuIEknbGwgY2hlY2sgaXRzIGRlZmluaXRpb24gdG8gY29uZmlybSBpdCdzIHN0YXRpYy4gWWVzLCBpdCBpcyBzdGF0aWMuXG5cbkJ1dCwgdGhlIHByb21wdCBhbHNvIHNheXMgaXQgcHJlZmVycyBub24tc3RhdGljIGVudHJ5IHBvaW50cywgc28gd2hhdCBhYm91dCBgcnR3X3Bvd2VyX29uYD8gVGhhdCdzIG5vdCBzdGF0aWMuIEknbGwgY2hlY2sgYHJ0d19wb3dlcl9vbmAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCB0byBzZWUgaWYgaXQncyB0aGUgcmlnaHQgY2hvaWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTg5MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNTowOC42MzE0MjM4MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQxNDYzMjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0d19wb3dlcl9vblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xMzU0PXN0YXRpYyBlbnVtIHJ0d19scHNfZGVlcF9tb2RlIHJ0d191cGRhdGVfbHBzX2RlZXBfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTM3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxMzc0OmludCBydHdfcG93ZXJfb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NDItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE0NDM6RVhQT1JUX1NZTUJPTChydHdfcG93ZXJfb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaD0yMjcxPWludCBydHdfd2FpdF9maXJtd2FyZV9jb21wbGV0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjIyNzI6aW50IHJ0d19wb3dlcl9vbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC0yMjczLXZvaWQgcnR3X2NvcmVfZndfc2Nhbl9ub3RpZnkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBzdGFydCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjE4Mzc6XFx0LnBvd2VyX29uXFx0XFx0PSBydHdfcG93ZXJfb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE4MzgtXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3X3Bvd2VyX29mZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYz0xMzkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg3MjNkX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM6MTM5MzpcXHQucG93ZXJfb25cXHRcXHQ9IHJ0d19wb3dlcl9vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtMTM5NC1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jPTIwNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgxNGFfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyMDUxOlxcdC5wb3dlcl9vblxcdFxcdD0gcnR3X3Bvd2VyX29uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDUyLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIxY19vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jOjE2NTk6XFx0LnBvd2VyX29uXFx0XFx0PSBydHdfcG93ZXJfb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE2NjAtXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3X3Bvd2VyX29mZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYz0yMTUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJiX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE1MTpcXHQucG93ZXJfb25cXHRcXHQ9IHJ0d19wb3dlcl9vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE1Mi1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQ4OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAwOlxcdC5wb3dlcl9vblxcdFxcdD0gcnR3X3Bvd2VyX29uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTAxLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjA5LjE3Mjg5MjY3NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDUyNTc4MDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgcnR3X3Bvd2VyX29uIENhbGwgQ2hhaW4qKlxuXG5Pa2F5LCBzbyBgcnR3X3Bvd2VyX29uYCBpcyBleHBvcnRlZCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gQnV0LCBoYW5nIG9uIGEgc2Vjb25kLCBteSBpbnR1aXRpb24ga2lja3MgaW4sIGl0J3MgY2FsbGVkIGJ5IG1hYzgwMjExIHdoZW4gdGhlIGludGVyZmFjZSBjb21lcyB1cC4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUgY2FsbCBjaGFpbj8gTGV0J3MgdHJhY2UgaXQgYW5kIHNlZS5cblxuVGhlIHBhdGNoIGZvY3VzZXMgb24gbW9kaWZ5aW5nIHNldmVyYWwgZnVuY3Rpb25zOiBgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzJgLCBgcnR3ODgyMmNfZGFjX2lxX3NvcnRgLCBgcnR3ODgyMmNfZGFjX2lxX29mZnNldGAsIGBydHc4ODIyY19kYWNfaXFfY2hlY2tgLCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgLCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIEltbWVkaWF0ZWx5IEkgcmVjb2duaXplIHRoYXQgdGhleSBhbGwgcmVsYXRlIHRvIERBQyBjYWxpYnJhdGlvbiwgYXMgZXhwZWN0ZWQuIFRoZXkgYXJlIGFsbCBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuIEV4Y2VsbGVudCwgdGhhdCdzIG91ciBuZXh0IGxpbmsuXG5cbk5vdywgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGlzIHRyaWdnZXJlZCBieSBgcnR3ODgyMmNfcmZfaW5pdGAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIGBydHc4ODIyY19yZl9pbml0YCBpcyBjYWxsZWQgYnkgYm90aCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19kb19nYXBrYC4gQWhhIVxuXG5CdXQgd2hhdCBhYm91dCBgcnR3ODgyMmNfZG9fZ2Fwa2A/IGlzIGl0IGNhbGxlZCBieSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAsIHRoYXQncyBhbiBpbnRlcmVzdGluZyBxdWVzdGlvbi4gTGV0J3MgbWFrZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA1NCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNToxNS42MjU0NzMwMTlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDQ4ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg4MjJjX2RvX2dhcGtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3MjM9c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2NTpzdGF0aWMgdm9pZCBydHc4ODIyY19kb19nYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQxMTk9c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDEyMS1cXHRydHc4ODIyY19yZmtfcG93ZXJfc2F2ZShydHdkZXYsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDEyMjpcXHRydHc4ODIyY19kb19nYXBrKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMjMtXFx0cnR3ODgyMmNfZG9faXFrKHJ0d2Rldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjE1LjY3OTUyOTY1OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODExNDM3MzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUEhZIENhbGlicmF0aW9uIFJvdXRpbmUqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYCBpcyBtZW50aW9uZWQgaW4gdGhlIGNvZGUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogd2hlcmUgaXMgaXQgYmVpbmcgKmNhbGxlZCogZnJvbT8gSSBzdXNwZWN0IGl0J3MgbGlrZWx5IGNhbGxlZCB3aXRoaW4gdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlLCBnaXZlbiB0aGUgbmFtZS4gVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggYW5kIHZlcmlmeSB0aGUgcmVsYXRpb25zaGlwLiBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlc2UgdHdvIGZ1bmN0aW9ucyBhbmQgc2VlIGlmIG15IGh1bmNoIGlzIGNvcnJlY3QuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCB0cmlnZ2VyaW5nIG1lY2hhbmlzbSBmb3IgdGhpcyBjYWxpYnJhdGlvbjsgaXMgaXQgYmFzZWQgb24gcGFyYW1ldGVyIGNoYW5nZXMsIHBvd2VyLXVwIHNlcXVlbmNlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBxdWljayBjaGVjayBzaG91bGQgY29uZmlybSBteSBpbml0aWFsIGFzc3VtcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTg1LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjU6MTkuNDkwOTY5NzQ5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjAwMTkzNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00MDc3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RvX2RwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxMTk6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQ4OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MTYtXFx0LmRwa190cmFja1xcdFxcdD0gcnR3ODgyMmNfZHBrX3RyYWNrLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTE3OlxcdC5waHlfY2FsaWJyYXRpb25cXHQ9IHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkxOC1cXHQuY2NrX3BkX3NldFxcdFxcdD0gcnR3ODgyMmNfcGh5X2Nja19wZF9zZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjIwLjE1MDk5NjQzMloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI3OTkxMTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIENhbGlicmF0aW9uIFJvdXRpbmUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBjbHVlIHBvaW50cyB0byBgcnR3ODgyMmNfb3BzYCwgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dCBvZiB0aGUgYHBoeV9jYWxpYnJhdGlvbmAgY2FsbC4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIHRyYWNlIGl0LiBXaGVyZSBleGFjdGx5IGlzIHRoaXMgY2FsaWJyYXRpb24gZnVuY3Rpb24gaW52b2tlZD8gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYWxsIHRoZSBwb2ludHMgaW4gdGhlIGNvZGUgd2hlcmUgYHBoeV9jYWxpYnJhdGlvbmAgaXMgY2FsbGVkIHdpdGhpbiB0aGF0IG1vZHVsZSwgb3IgcG90ZW50aWFsbHkgZXZlbiBmdXJ0aGVyIGFmaWVsZCBpZiBpdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGFyZWFzIG9mIGltcGFjdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBmdW5jdGlvbnMsIHdoYXQgdHJpZ2dlcnMgaXQsIGFuZCB3aGF0IGRhdGEgaXQgdXRpbGl6ZXMgdG8gYWNoaWV2ZSBpdHMgZ29hbC4gTGV0J3Mgc3RhcnQgdGhlIHNlYXJjaC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgyOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjIzLjk3ODk5MDUwNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyOTQxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2NhbGlicmF0aW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFjODAyMTEuYz00NjI9c3RhdGljIGludCBydHdfb3BzX3N0YXJ0X2FwKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWM4MDIxMS5jLTQ3Mi1cXHRydHdfc3RvcmVfb3BfY2hhbihydHdkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFjODAyMTEuYzo0NzM6XFx0Y2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VwaHlfY2FsaWJyYXRpb24ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21hYzgwMjExLmMtNDc0LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cnR3ZGV2LVxcdTAwM2VtdXRleCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz05MTU9dm9pZCBydHdfY2hpcF9wcmVwYXJlX3R4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy05MjAtXFx0XFx0cnR3ZGV2LVxcdTAwM2VuZWVkX3JmayA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjkyMTpcXHRcXHRjaGlwLVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9jYWxpYnJhdGlvbihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkyMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaD04NjI9c3RydWN0IHJ0d19jaGlwX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC04ODgtXFx0dm9pZCAoKmZhbHNlX2FsYXJtX3N0YXRpc3RpY3MpKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjg4OTpcXHR2b2lkICgqcGh5X2NhbGlicmF0aW9uKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC04OTAtXFx0dm9pZCAoKmRwa190cmFjaykoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTI3NT12b2lkIHJ0dzg3MDNiX2lxa19maWxsX2FfbWF0cml4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGNvbnN0IHMzMiByZXN1bHRbXSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xMzIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYzoxMzIxOnN0YXRpYyB2b2lkIHJ0dzg3MDNiX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYz0xNTg3PXN0YXRpYyB2b2lkIHJ0dzg3MDNiX3BoeV9wd3J0cmFjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE2MzQtXFx0aWYgKGRvX2lxaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTYzNTpcXHRcXHRydHc4NzAzYl9waHlfY2FsaWJyYXRpb24ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTYzNi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTg1NC1cXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1xcdD0gcnR3ODcyM3hfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTg1NTpcXHQucGh5X2NhbGlicmF0aW9uXFx0PSBydHc4NzAzYl9waHlfY2FsaWJyYXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE4NTYtXFx0LmRwa190cmFja1xcdFxcdD0gTlVMTCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYz04MjQ9dm9pZCBydHc4NzIzZF9pcWtfb25lX3JvdW5kKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiByZXN1bHRbXVtJUUtfTlJdLCB1OCB0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTkyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM6OTI1OnN0YXRpYyB2b2lkIHJ0dzg3MjNkX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy05MjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jPTEzMjI9c3RhdGljIHZvaWQgcnR3ODcyM2RfcGh5X3B3cnRyYWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtMTM2OS1cXHRpZiAoZG9faXFrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxMzcwOlxcdFxcdHJ0dzg3MjNkX3BoeV9jYWxpYnJhdGlvbihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xMzcxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYz0xMzkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg3MjNkX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xNDA5LVxcdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXFx0PSBydHc4NzIzeF9mYWxzZV9hbGFybV9zdGF0aXN0aWNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxNDEwOlxcdC5waHlfY2FsaWJyYXRpb25cXHQ9IHJ0dzg3MjNkX3BoeV9jYWxpYnJhdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtMTQxMS1cXHQuY2NrX3BkX3NldFxcdFxcdD0gcnR3ODcyM2RfcGh5X2Nja19wZF9zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM9Nzg4PXN0YXRpYyB2b2lkIHJ0dzg4MTJhX2RvX2lxayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTgzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6ODQwOnN0YXRpYyB2b2lkIHJ0dzg4MTJhX3BoeV9jYWxpYnJhdGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYy04NDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODEyYV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmMtOTMwLVxcdC5mYWxzZV9hbGFybV9zdGF0aXN0aWNzXFx0PSBydHc4OHh4YV9mYWxzZV9hbGFybV9zdGF0aXN0aWNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYzo5MzE6XFx0LnBoeV9jYWxpYnJhdGlvblxcdD0gcnR3ODgxMmFfcGh5X2NhbGlicmF0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYy05MzItXFx0LmNja19wZF9zZXRcXHRcXHQ9IHJ0dzg4eHhhX3BoeV9jY2tfcGRfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jPTE3Njc9c3RhdGljIHZvaWQgcnR3ODgxNGFfZG9faXFrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMTc5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MTc5MjpzdGF0aWMgdm9pZCBydHc4ODE0YV9waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMTc5My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MjA1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODE0YV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMjA2Ni1cXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1xcdD0gcnR3ODgxNGFfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MjA2NzpcXHQucGh5X2NhbGlicmF0aW9uXFx0PSBydHc4ODE0YV9waHlfY2FsaWJyYXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTIwNjgtXFx0LmNja19wZF9zZXRcXHRcXHQ9IHJ0dzg4MTRhX3BoeV9jY2tfcGRfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jPTY1NT1zdGF0aWMgdm9pZCBydHc4ODIxYV9kb19pcWsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy02ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jOjY4OTpzdGF0aWMgdm9pZCBydHc4ODIxYV9waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtNjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYz04NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jLTg3Ni1cXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1xcdD0gcnR3ODh4eGFfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmM6ODc3OlxcdC5waHlfY2FsaWJyYXRpb25cXHQ9IHJ0dzg4MjFhX3BoeV9jYWxpYnJhdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtODc4LVxcdC5jY2tfcGRfc2V0XFx0XFx0PSBydHc4OHh4YV9waHlfY2NrX3BkX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYz03NzQ9c3RhdGljIHZvaWQgcnR3ODgyMWNfZG9faXFrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtODAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYzo4MDI6c3RhdGljIHZvaWQgcnR3ODgyMWNfcGh5X2NhbGlicmF0aW9uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTgwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIxY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY3My1cXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1xcdD0gcnR3ODgyMWNfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTY3NDpcXHQucGh5X2NhbGlicmF0aW9uXFx0PSBydHc4ODIxY19waHlfY2FsaWJyYXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE2NzUtXFx0LmNja19wZF9zZXRcXHRcXHQ9IHJ0dzg4MjFjX3BoeV9jY2tfcGRfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jPTEwNzE9c3RhdGljIHZvaWQgcnR3ODgyMmJfZG9faXFrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMTA5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MTA5NjpzdGF0aWMgdm9pZCBydHc4ODIyYl9waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMTA5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MjE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE2NS1cXHQuZmFsc2VfYWxhcm1fc3RhdGlzdGljc1xcdD0gcnR3ODgyMmJfZmFsc2VfYWxhcm1fc3RhdGlzdGljcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE2NjpcXHQucGh5X2NhbGlicmF0aW9uXFx0PSBydHc4ODIyYl9waHlfY2FsaWJyYXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTIxNjctXFx0LnB3cl90cmFja1xcdFxcdD0gcnR3ODgyMmJfcHdyX3RyYWNrLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTQwNzc9c3RhdGljIHZvaWQgcnR3ODgyMmNfZG9fZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDExOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDExOTpzdGF0aWMgdm9pZCBydHc4ODIyY19waHlfY2FsaWJyYXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDEyMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkxNi1cXHQuZHBrX3RyYWNrXFx0XFx0PSBydHc4ODIyY19kcGtfdHJhY2ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MTc6XFx0LnBoeV9jYWxpYnJhdGlvblxcdD0gcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTE4LVxcdC5jY2tfcGRfc2V0XFx0XFx0PSBydHc4ODIyY19waHlfY2NrX3BkX3NldCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjU6MjQuMDI1MjkyMzU0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMzk1MjkzMTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBSZWFsdGVrIERyaXZlciBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgaGVyZSwgdHJ5aW5nIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgZm9yIHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgbW9kaWZpZWQgY29kZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBgcnR3X2NoaXBfcHJlcGFyZV90eGAsIHNpbmNlIHRoYXQgY2FsbHMgYHBoeV9jYWxpYnJhdGlvbmAsIGFuZCBhbHNvIGBydHdfb3BzX3N0YXJ0X2FwYCB3aGljaCAqYWxzbyogY2FsbHMgYHBoeV9jYWxpYnJhdGlvbmAuIEJ1dCB3YWl0LCBgcnR3X2NoaXBfcHJlcGFyZV90eGAgaXMgcGFydCBvZiB0aGUgTUFDODAyMTEgcGFja2V0IHRyYW5zbWlzc2lvbiBwcm9jZXNzLCBzbyB0aGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlICpiZXN0KiBlbnRyeSBwb2ludC4gSSdtIGdvaW5nIHRvIGxvb2sgZGVlcGVyLlxuXG5gcnR3X3Bvd2VyX29uYCBsb29rcyBwcm9taXNpbmcgYXMgYW4gaW5pdGlhbCBlbnRyeSBwb2ludC4gTGV0IG1lIGNvbmZpcm0gaWYgaXQncyBleHBvcnRlZCBhbmQsIHllcCwgaXQgaXMuIEJ1dCwgSSBuZWVkIHRvIGdldCAqZGVlcGVyKiBpbnRvIHRoZSBjb2RlIHRvIHRoZSBhY3R1YWwgZnVuY3Rpb25zIG9mIGludGVyZXN0LlxuXG5MZXQncyBsb29rIG1vcmUgY2xvc2VseSBhdCBgcGh5X2NhbGlicmF0aW9uYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuIEkgcmVjYWxsIHRoYXQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAgYW5kIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhcmUgYm90aCBzdGF0aWMsIGJ1dCB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyBmb3IgYHBoeV9jYWxpYnJhdGlvbmAgYW5kIGBwaHlfc2V0X3BhcmFtYCByZXNwZWN0aXZlbHkuIE5vdywgdGhpcyBpcyBpbXBvcnRhbnQuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCwgc2luY2UgdGhlc2UgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGV5IHdvbid0IGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgdGhlcmVmb3JlLCB0aGV5IGFyZSBkaXN0aW5jdCBzeW1ib2xzLiBTbywgYXMgdGhlIHByb21wdCBkaXJlY3RzLCBJIGNhbiBjb25zaWRlciB0aGVtIHZhbGlkIGVudHJ5IHBvaW50cy4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdCEgQmFzZWQgb24gdGhlIHByb21wdCBJIGNhbiBsaXN0IGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGFuZCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAuXG5cbkJ1dCBJIHJlbWVtYmVyIHRoZSBtb2RpZmllZCBjb2RlIGlzIGluIGBydHc4ODIyY19yZl9kYWNfY2FsYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHJ0dzg4MjJjX3JmX2luaXRgLiBMZXQgbWUgdHJhY2UgdGhlIGNhbGxzLiBPa2F5LCBgcnR3ODgyMmNfcmZfaW5pdGAgaXMgY2FsbGVkIGJ5IGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX2RvX2dhcGtgLiBBbmQgYHJ0dzg4MjJjX2RvX2dhcGtgIGlzIGNhbGxlZCBieSBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYC4gQmluZ28hIFRoaXMgY29uZmlybXMgdGhhdCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGFyZSB0aGUgKmV4YWN0KiBlbnRyeSBwb2ludHMgZm9yIHRoZSBwYXJ0IG9mIHRoZSBjb2RlIEknbSBpbnRlcmVzdGVkIGluIVxuXG5Ob3cgSSBuZWVkIHRvIGVuc3VyZSB0aGV5IHdvbid0IGJlIGlubGluZWQuIExldCdzIGRvdWJsZS1jaGVjayB0aGUgc3RhdGljIG5hdHVyZSBvZiBgcnR3ODgyMmNfcmZfaW5pdGAgYW5kIGBydHc4ODIyY19yZl9kYWNfY2FsYC4gWWVwLCB0aGV5J3JlIGJvdGggc3RhdGljLiBBbmQgdGhleSBhcmUgb25seSBjYWxsZWQgaW4gYSBjb3VwbGUgb2YgcGxhY2VzLiBUaGlzICptaWdodCogbWVhbiB0aGUgY29tcGlsZXIgaXMgZnJlZSB0byBpbmxpbmUgdGhlbS4gQnV0LCBzaW5jZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGFyZSBmdW5jdGlvbiBwb2ludGVycywgSSB0aGluayBpdCdzIHNhZmVzdCB0byBmb2N1cyBvbiB0aGVzZS5cblxuTm93LCBsZXQncyB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24uIEkgcmVjYWxsIGZyb20gdGhlIGNvbmZpZyBmaWxlIHRoYXQgYFJUVzg4Xzg4MjJDVWAgaXMgbmVlZGVkIHRvIGVuYWJsZSB0aGUgVVNCIGRyaXZlci4gV2FpdCwgd2FpdCwgYFJUVzg4Xzg4MjJDYCBpcyB0aGUgY29uZmlnIHRoYXQgYWN0dWFsbHkgY29tcGlsZXMgYHJ0dzg4MjJjLmNgLCB3aGljaCBpcyB0aGUgZmlsZSB3aXRoIHRoZSBjb2RlIEknbSBsb29raW5nIGF0LiBIbW0sIGl0J3MgYSBoaWRkZW4gY29uZmlnLCBzZWxlY3RlZCBieSBgUlRXODhfODgyMkNFYCwgYFJUVzg4Xzg4MjJDU2AsIGFuZCBgUlRXODhfODgyMkNVYC4gUmlnaHQsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5OTczLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjM1LjQyMDU4Nzc1OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI2NDI3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUVzg4Xzg4MjJDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc9MjY9Y29uZmlnIFJUVzg4Xzg4MjJCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI5OmNvbmZpZyBSVFc4OF84ODIyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTgyPWNvbmZpZyBSVFc4OF84ODIyQlVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6OTM6Y29uZmlnIFJUVzg4Xzg4MjJDRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEwNDpjb25maWcgUlRXODhfODgyMkNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwNS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg4Xzg4MjJDVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjM1LjQ3MzIzOTE1OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjA0MjE0MDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlRXODggV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgUlRXODhfODgyMkNgIGlzIGEgdHJpc3RhdGUgc2V0dGluZywgYW5kIGltcG9ydGFudGx5LCBpdCBkb2Vzbid0IGhhdmUgYSBwcm9tcHQuIFRoYXQgbWVhbnMgd2UgbmVlZCB0byBlbnN1cmUgdGhlIFVTQiB2YXJpYW50LCBgUlRXODhfODgyMkNVYCwgaXMgY29tcGlsZWQgaW4gb3JkZXIgdG8gdGVzdCBpdCBlZmZlY3RpdmVseSB0aHJvdWdoIFVTQi4gV2FpdCBhIG1pbnV0ZeKApiBgUlRXODhfODgyMkNVYCBpcyAqZGVwZW5kZW50KiBvbiBgVVNCYC4gVGhhdOKAmXMgZ29vZCwgYnV0IGl0IG1ha2VzIG1lIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHVuZGVybHlpbmcgcmVxdWlyZW1lbnRzLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2guIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGFuZCBleGFtaW5lIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGJyb2FkZXIgYFJUVzg4YCBjb25maWd1cmF0aW9uIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSd2ZSBjb3ZlcmVkIGFsbCB0aGUgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDU4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjU6NDAuNjc3NDU1NTg1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjczOTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlRXODhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTExPWlmIFJUVzg4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMzpjb25maWcgUlRXODhfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNzpjb25maWcgUlRXODhfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMDpjb25maWcgUlRXODhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM6Y29uZmlnIFJUVzg4X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjY6Y29uZmlnIFJUVzg4Xzg4MjJCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOTpjb25maWcgUlRXODhfODgyMkNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzAtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OF84NzIzWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MzU6Y29uZmlnIFJUVzg4Xzg3MDNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM2LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM5OmNvbmZpZyBSVFc4OF84NzIzRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0Mzpjb25maWcgUlRXODhfODgyMUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDQtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ2OmNvbmZpZyBSVFc4OF84OFhYQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDk6Y29uZmlnIFJUVzg4Xzg4MjFBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjUzOmNvbmZpZyBSVFc4OF84ODEyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo1Nzpjb25maWcgUlRXODhfODgxNEFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjYwOmNvbmZpZyBSVFc4OF84ODIyQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjcxOmNvbmZpZyBSVFc4OF84ODIyQlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzItXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo4Mjpjb25maWcgUlRXODhfODgyMkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJCVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo5Mzpjb25maWcgUlRXODhfODgyMkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTA0OmNvbmZpZyBSVFc4OF84ODIyQ1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTA1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEyNjpjb25maWcgUlRXODhfODcyM0RFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEyNy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEzNzpjb25maWcgUlRXODhfODcyM0RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEzOC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzRFMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNDg6Y29uZmlnIFJUVzg4Xzg3MjNDU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0NTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTYyOmNvbmZpZyBSVFc4OF84NzIzRFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg3MjNEVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTczOmNvbmZpZyBSVFc4OF84ODIxQ0VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTc0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjFDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTg0OmNvbmZpZyBSVFc4OF84ODIxQ1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTg1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjFDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE5NTpjb25maWcgUlRXODhfODgyMUNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE5Ni1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIwNjpjb25maWcgUlRXODhfODgyMUFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIwNy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQVUvODgxMUFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMTc6Y29uZmlnIFJUVzg4Xzg4MTJBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMjg6Y29uZmlnIFJUVzg4Xzg4MTRBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxNEFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMzk6Y29uZmlnIFJUVzg4Xzg4MTRBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNDAtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxNEFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTA6Y29uZmlnIFJUVzg4X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1MS1cXHRib29sIFxcXCJSZWFsdGVrIHJ0dzg4IGRlYnVnIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTg6Y29uZmlnIFJUVzg4X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjU5LVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODggZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjY2OmNvbmZpZyBSVFc4OF9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2Ny1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI1OjQwLjcyNDIwMDY3NVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDExMzg3ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2lyZWxlc3MgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gd2UncmUgd29ya2luZyB3aXRoIGhlcmUgc2VlbXMgdG8gYmUgYFJUVzg4YC4gUmlnaHQsIHNvIHRoYXQgbWVhbnMgd2UnbGwgZGVmaW5pdGVseSBuZWVkIHRvIGluY2x1ZGUgYFJUVzg4YCwgYW5kIGFsc28sIGZyb20gd2hhdCBJJ20gc2VlaW5nLCBgUlRXODhfODgyMkNVYC4gTm8gc3VycHJpc2VzIHRoZXJlLiBIb2xkIG9uLi4uIEknbSBqdXN0IHJlY2FsbGluZyBzb21ldGhpbmc7IGBSVFc4OGAgcmVsaWVzIG9uIGBNQUM4MDIxMWAuIFRoYXQncyBhbiBpbXBvcnRhbnQgZGVwZW5kZW5jeSB0byBrZWVwIGluIG1pbmQ7IGdvdHRhIG1ha2Ugc3VyZSB0aGF0J3MgaGFuZGxlZCBjb3JyZWN0bHkgaW4gdGhpcyBzZXR1cC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayBgUlRXODhgJ3MgZGVwZW5kZW5jaWVzIGFnYWluIHRvIGJlIGNlcnRhaW4gZXZlcnl0aGluZydzIGluIG9yZGVyLCBqdXN0IHRvIGNyb3NzLXJlZmVyZW5jZSBhbmQgY29uZmlybSBpdCBhbGwgaml2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDcyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjU6NDQuNzM1NTkxNjY2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudWNvbmZpZyBSVFc4OFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBtYWM4MDIxMS1iYXNlZCB3aXJlbGVzcyBkcml2ZXJzIHRoYXRcXG4gICA3OlxcdFxcdCAgZW5hYmxlcyBSZWFsdGVrIElFRUUgODAyLjExYWMgd2lyZWxlc3MgY2hpcHNldHMuXFxuICAgODpcXHRcXG4gICA5OlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHJ0dzg4LlxcbiAgMTA6XFx0XFxuICAxMTpcXHRpZiBSVFc4OFxcbiAgMTI6XFx0XFxuICAxMzpcXHRjb25maWcgUlRXODhfQ09SRVxcbiAgMTQ6XFx0XFx0dHJpc3RhdGVcXG4gIDE1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgUlRXODhfUENJXFxuICAxODpcXHRcXHR0cmlzdGF0ZVxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgUlRXODhfU0RJT1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNTo0NC43MzU2NjE5MzZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc5ODA5MjI0MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFJlYWx0ZWsgcnR3ODgyMmMgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nKipcblxuT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGFwcHJvYWNoIGZvciBmdXp6aW5nIHRoaXMgUmVhbHRlayBkcml2ZXIgcGF0Y2guXG5cbkZpcnN0LCBJIHNlZSB0aGF0IHRoaXMgbW9kaWZpY2F0aW9uIHRhcmdldHMgdGhlIERBQyBJUSBjYWxpYnJhdGlvbiBwcm9jZXNzIHdpdGhpbiB0aGUgYHJ0dzg4MjJjYCBjaGlwLiBUaGlzIGNhbGlicmF0aW9uIGlzIHBlcmZvcm1lZCBkdXJpbmcgUEhZIHBhcmFtZXRlciBzZXR0aW5nIGFuZCBjYWxpYnJhdGlvbi4gRnJvbSBhIGNvbmZpZ3VyYXRpb24gc3RhbmRwb2ludCwgYE1BQzgwMjExYCBpcyBvYnZpb3VzbHkgcmVxdWlyZWQsIGFzIGlzIGBSVFc4OGAgZm9yIHRoZSBkcml2ZXIgaXRzZWxmLCBhbmQgc3BlY2lmaWNhbGx5IGBSVFc4OF84ODIyQ1VgIHRvIGVuYWJsZSB0aGUgVVNCIHZhcmlhbnQsIHdoaWNoIHdpbGwgYmUgdXNlZnVsIGZvciB2aXJ0dWFsaXplZCBmdXp6aW5nLiBgVVNCYCBpcyBhbHNvIHJlcXVpcmVkLCBidXQgaXQncyBhIHN0YW5kYXJkIGNvbmZpZywgc28gSSdsbCBpbmNsdWRlIGl0LlxuXG5Ob3csIHRoZSBjcnVjaWFsIHBhcnQ6IGlkZW50aWZ5aW5nIHRoZSByZWxldmFudCBzeW1ib2xzLiBUaGUgcHJvbXB0IHN1Z2dlc3RzIHByaW9yaXRpemluZyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIEluaXRpYWxseSwgSSBjb25zaWRlcmVkIGBydHdfcG93ZXJfb25gLCBidXQgdGhhdCdzIHRvbyBicm9hZDsgaXQgbWlnaHQgdHJpZ2dlciBmdW5jdGlvbnMgYWNyb3NzIHZhcmlvdXMgYHJ0dzg4YCBjaGlwcy4gSSB3YW50IHRvIGJlIGFzIHByZWNpc2UgYXMgcG9zc2libGUuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgZnVuY3Rpb25zIGxpa2UgYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYW5kIHNvIG9uLiBTbywgd2hhdCdzIHRoZSBiZXN0IHdheSB0byBoaXQgdGhhdCBjb2RlP1xuXG5JIGxvb2tlZCBhdCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gLiBUaGV5IHNlZW0gaWRlYWwgYmVjYXVzZSB0aGV5IGFyZSBzcGVjaWZpYyB0byB0aGUgYHJ0dzg4MjJjYCBjaGlwLiBJIGNoZWNrZWQgYW5kIHRoZXkgYXJlIGJvdGggYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIHRoZSBgcnR3ODgyMmNfb3BzYCBzdHJ1Y3QuIFRoYXQgbWVhbnMgdGhlIGNvbXBpbGVyICpjYW5ub3QqIGlubGluZSB0aGVtLCBzaW5jZSB0aGVpciBhZGRyZXNzZXMgYXJlIG5lZWRlZC4gVGhleSdyZSBub24tc3RhdGljLCBzbyB0aGUgcHJvbXB0IHJlcXVpcmVtZW50cyBhcmUgc2F0aXNmaWVkLiBBbHRob3VnaCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgKmlzKiBzdGF0aWMsIHRoZSBwcm9tcHQgaXMgc2F0aXNmaWVkIGJlY2F1c2UgaXQgaXMgbm90IGlubGluZWQgYW5kIGl0cyBhZGRyZXNzIGlzIHRha2VuLlxuXG5JIGFsc28gY29uc2lkZXJlZCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAsIGFzIHRoYXQncyB0aGUgZnVuY3Rpb24gdGhhdCAqZGlyZWN0bHkqIGNvbnRhaW5zIHRoZSBtb2RpZmllZCBjb2RlLiBIb3dldmVyLCBpdCdzIGNhbGxlZCBieSBgcnR3ODgyMmNfcmZfaW5pdGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVgLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBJdCdzIGxlc3MgbGlrZWx5LCBidXQgc3RpbGwgYSBwb3NzaWJpbGl0eS4gVG8gYmUgc2FmZSwgSSdsbCBzdGljayB3aXRoIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAuIFRoZXNlIHNob3VsZCBnaXZlIGEgZ29vZCBlbnRyeSBwb2ludCB0byB0cmlnZ2VyIHRoZSBjb2RlLCBhcyB0aGUgcHJvbXB0IHNwZWNpZmllcy5cblxuVG8gc3VtbWFyaXplLCB0aGUgcGF0Y2ggbW9kaWZpZXMgREFDIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIGBydHc4ODIyY2Agd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgc2ltcGxpZnlpbmcgc29ydGluZyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy4gVGhpcyBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbiB1c2luZyB0aGUgYENPTkZJR19SVFc4OF84ODIyQ1VgIG9wdGlvbi4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgYWNjZXNzZWQgZHVyaW5nIFBIWSBwYXJhbWV0ZXIgc2V0dXAgYW5kIGNhbGlicmF0aW9uLCB3aGljaCBpcyB0cmlnZ2VyZWQgdmlhIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBhbmQgYHJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvbmAsIHdoaWNoIGFyZSBub24taW5saW5lZCBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHJ0dzg4MjJjX29wc2AuIFRoaXMgaXMgZnVuY3Rpb25hbCBiZWNhdXNlIHRoZSBjdXN0b20gc29ydCBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9uIGlzIHJlcGxhY2VkIGJ5IHN0YW5kYXJkIGBzb3J0YCBhbmQgc2ltcGxpZmllZCBtYXRoLCBmaXhpbmcgcG90ZW50aWFsIGJ1Z3Mgb3Igc2ltcGxpZnlpbmcgY29kZS4gVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXG5cbk15IGNob3NlbiBjb25maWdzIGFyZTpcbiogICBgTUFDODAyMTFgXG4qICAgYFJUVzg4YFxuKiAgIGBSVFc4OF84ODIyQ1VgXG5cbk15IGNob3NlbiBzeW1ib2xzIGFyZTpcbiogICBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWBcbiogICBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYFxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjAwMywiT3V0cHV0VG9rZW5zIjoyMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6MDIuNzE2NTg3MzEyWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY0OTMzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJSVFc4OFwiLFxuICAgIFwiUlRXODhfODgyMkNVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODgyMmNfcGh5X3NldF9wYXJhbVwiLFxuICAgIFwicnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERBQyBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4ODIyYyB3aXJlbGVzcyBkcml2ZXIsIHNpbXBsaWZ5aW5nIHNvcnRpbmcgYW5kIG9mZnNldCBjYWxjdWxhdGlvbnMuIFRoaXMgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoZHVtbXkgSENEKSBieSBlbmFibGluZyB0aGUgVVNCIHZhcmlhbnQgb2YgdGhlIGRyaXZlciAoQ09ORklHX1JUVzg4Xzg4MjJDVSkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBQSFkgcGFyYW1ldGVyIHNldHVwIGFuZCBjYWxpYnJhdGlvbiwgd2hpY2ggYXJlIGFjY2Vzc2libGUgdmlhIHRoZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYW5kIGBydHc4ODIyY19waHlfY2FsaWJyYXRpb25gIGNhbGxiYWNrcy4gVGhlc2UgY2FsbGJhY2tzIGFyZSBub3QgaW5saW5lZCBhcyB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyBpbiB0aGUgY2hpcCBvcGVyYXRpb25zIHN0cnVjdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiUlRXODhcIixcbiAgICBcIlJUVzg4Xzg4MjJDVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1cIixcbiAgICBcInJ0dzg4MjJjX3BoeV9jYWxpYnJhdGlvblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEQUMgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIFJlYWx0ZWsgcnR3ODgyMmMgd2lyZWxlc3MgZHJpdmVyLCBzaW1wbGlmeWluZyBzb3J0aW5nIGFuZCBvZmZzZXQgY2FsY3VsYXRpb25zLiBUaGlzIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15IEhDRCkgYnkgZW5hYmxpbmcgdGhlIFVTQiB2YXJpYW50IG9mIHRoZSBkcml2ZXIgKENPTkZJR19SVFc4OF84ODIyQ1UpLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBleGVjdXRlZCBkdXJpbmcgUEhZIHBhcmFtZXRlciBzZXR1cCBhbmQgY2FsaWJyYXRpb24sIHdoaWNoIGFyZSBhY2Nlc3NpYmxlIHZpYSB0aGUgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFuZCBgcnR3ODgyMmNfcGh5X2NhbGlicmF0aW9uYCBjYWxsYmFja3MuIFRoZXNlIGNhbGxiYWNrcyBhcmUgbm90IGlubGluZWQgYXMgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgaW4gdGhlIGNoaXAgb3BlcmF0aW9ucyBzdHJ1Y3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI2OjAyLjc5MzA4NzE5MVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg1MTA2NDEyMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNjowMi43OTM1MzQxNTFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODg1MTAxODMzODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIHJ0dzg4IGRyaXZlciBieSByZXBsYWNpbmcgY3VzdG9tIDEwLWJpdCBzaWduLW1hZ25pdHVkZS90d28ncy1jb21wbGVtZW50IGFyaXRobWV0aWMgYW5kIGEgY3VzdG9tIGJ1YmJsZSBzb3J0IHdpdGggc3RhbmRhcmQgYHMzMmAgdHlwZXMsIGBzaWduX2V4dGVuZDMyKClgLCBhbmQgdGhlIGtlcm5lbCdzIGJ1aWx0LWluIGBzb3J0KClgIGZ1bmN0aW9uLiBcXG5cXG5XaGlsZSB0aGUgc3RhY2stYWxsb2NhdGVkIGFycmF5cyBgaXZgIGFuZCBgcXZgIGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaWYgdGhlIHNhbXBsaW5nIGxvb3AgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKClgIHRlcm1pbmF0ZXMgZWFybHkgKGR1ZSB0byB0aGUgYGNudCBcXHUwMDNjIDEwMDAwYCBjb25kaXRpb24pLCB0aGlzIGJlaGF2aW9yIGFuZCB0aGUgc3Vic2VxdWVudCByZWFkcyBvZiB0aGUgZW50aXJlIGFycmF5IHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBvbGQgY29kZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGFyaXRobWV0aWMgYW5kIHNvcnRpbmcgcmVmYWN0b3JpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgdGhpcyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZjQ2NzdjZmJlODY0NmVmYzhiNjcyNDViYWZiYjlhYmI3Y2RjODY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTc6MjQ6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuQEAgLTMsNiArMyw4IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRvcHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFwibWFpbi5oXCJcbiAjaW5jbHVkZSBcImNvZXguaFwiXG4gI2luY2x1ZGUgXCJmdy5oXCJcbkBAIC0xNTMsODQgKzE1NSwzMCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfbWlubWF4X2NtcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUsXG4tXHRcdFx0XHQgICB1MzIgKm1pbiwgdTMyICptYXgpXG4rc3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuIHtcbi1cdGlmICh2YWx1ZSBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdGlmICgqbWluIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1pbiBcdTAwM2UgdmFsdWUpXG4tXHRcdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXHRcdGlmICgqbWF4IFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdGlmICgqbWluIFx1MDAzYyAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fVxuLVxuLVx0XHRpZiAoKm1heCAgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoKm1heCBcdTAwM2MgdmFsdWUpXG4tXHRcdFx0XHQqbWF4ID0gdmFsdWU7XG4tXHRcdH1cbi1cdH1cbi19XG4rXHRzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7XG4rXHRzMzIgdmIgPSAqKGNvbnN0IHMzMiAqKWI7XG4gXG4tc3RhdGljIHZvaWQgX19ydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnYxLCB1MzIgKnYyKVxuLXtcbi1cdGlmICgqdjEgXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgKnYyIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0aWYgKCp2MSBcdTAwM2UgKnYyKVxuLVx0XHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fSBlbHNlIGlmICgqdjEgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNjIDB4MjAwKSB7XG4tXHRcdGlmICgqdjEgXHUwMDNlICp2Milcbi1cdFx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH0gZWxzZSBpZiAoKnYxIFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgKnYyIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9XG4rXHRyZXR1cm4gKHZhIFx1MDAzZSB2YikgLSAodmEgXHUwMDNjIHZiKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbitzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuIHtcbi1cdHUzMiBpLCBqO1xuLVxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDE7IGkrKykge1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyAoREFDS19TTl84ODIyQyAtIDEgLSBpKSA7IGorKykge1xuLVx0XHRcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcdTAwMjZpdltqXSwgXHUwMDI2aXZbaiArIDFdKTtcbi1cdFx0XHRfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgXHUwMDI2cXZbal0sIFx1MDAyNnF2W2ogKyAxXSk7XG4tXHRcdH1cbi1cdH1cbitcdHNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG4rXHRzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbClcbitzdGF0aWMgczMyIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICp2ZWMpXG4ge1xuLVx0dTMyIHAsIG0sIHQsIGk7XG4rXHRzMzIgc3VtID0gMDtcbiBcbi1cdG0gPSAwO1xuLVx0cCA9IDA7XG4tXHRmb3IgKGkgPSAxMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspIHtcbi1cdFx0aWYgKHZlY1tpXSBcdTAwM2UgMHgyMDApXG4tXHRcdFx0bSA9ICgweDQwMCAtIHZlY1tpXSkgKyBtO1xuLVx0XHRlbHNlXG4tXHRcdFx0cCA9IHZlY1tpXSArIHA7XG4tXHR9XG4rXHRmb3IgKHUzMiBpID0gMTA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkMgLSAxMDsgaSsrKVxuK1x0XHRzdW0gKz0gdmVjW2ldO1xuIFxuLVx0aWYgKHAgXHUwMDNlIG0pIHtcbi1cdFx0dCA9IHAgLSBtO1xuLVx0XHR0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuLVx0fSBlbHNlIHtcbi1cdFx0dCA9IG0gLSBwO1xuLVx0XHR0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuLVx0XHRpZiAodCAhPSAweDApXG4tXHRcdFx0dCA9IDB4NDAwIC0gdDtcbi1cdH1cbitcdHMzMiBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKTtcbiBcbi1cdCp2YWwgPSB0O1xuK1x0cmV0dXJuIGF2ZyBcdTAwM2U9IDAgPyBhdmcgOiAweDQwMCArIGF2ZztcbiB9XG4gXG4gc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHU4IHBhdGgpXG5AQCAtMjcxLDI5ICsyMTksMjcgQEAgc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIodTggcGF0aClcbiBcdHJldHVybiBiYXNlX2FkZHI7XG4gfVxuIFxuLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpXG4rc3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSlcbiB7XG4tXHRib29sIHJldCA9IHRydWU7XG4gXG4tXHRpZiAoKHZhbHVlIFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2ICgweDQwMCAtIHZhbHVlKSBcdTAwM2UgMHg2NCkgfHxcbi1cdCAgICAodmFsdWUgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiB2YWx1ZSBcdTAwM2UgMHg2NCkpIHtcbi1cdFx0cmV0ID0gZmFsc2U7XG4rXHRpZiAodmFsdWUgXHUwMDNlIDEwMCB8fCB2YWx1ZSBcdTAwM2MgLTEwMCkge1xuIFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFwiW0RBQ0tdIEVycm9yIG92ZXJmbG93XFxuXCIpO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIHRydWU7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXG4rc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbiB7XG4gXHR1MzIgdGVtcDtcbi1cdGludCBpID0gMCwgY250ID0gMDtcbitcdHUzMiBpID0gMCwgY250ID0gMDtcbiBcbiBcdHdoaWxlIChpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIFx1MDAyNlx1MDAyNiBjbnQgXHUwMDNjIDEwMDAwKSB7XG4gXHRcdGNudCsrO1xuIFx0XHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XG4tXHRcdGl2W2ldID0gKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTI7XG4tXHRcdHF2W2ldID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4rXHRcdGl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMiwgOSk7XG4rXHRcdHF2W2ldID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXG4gXHRcdGlmIChydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBpdltpXSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpXG5AQCAtMzAyLDEzICsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi1cdFx0XHRcdCAgICAgICB1MzIgKml2LCB1MzIgKnF2LFxuK1x0XHRcdFx0ICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsXG4gXHRcdFx0XHQgICAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4ge1xuLVx0dTMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcbi1cdHUzMiBpX2RlbHRhLCBxX2RlbHRhO1xuK1x0czMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcbiBcdHUzMiB0ZW1wO1xuLVx0aW50IGksIGNudCA9IDA7XG4rXHR1MzIgaSwgY250ID0gMDtcbiBcbiBcdGRvIHtcbiBcdFx0aV9taW4gPSBpdlswXTtcbkBAIC0zMTYsMjMgKzI2MSwxOCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFx0XHRxX21pbiA9IHF2WzBdO1xuIFx0XHRxX21heCA9IHF2WzBdO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDOyBpKyspIHtcbi1cdFx0XHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgaXZbaV0sIFx1MDAyNmlfbWluLCBcdTAwMjZpX21heCk7XG4tXHRcdFx0cnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIHF2W2ldLCBcdTAwMjZxX21pbiwgXHUwMDI2cV9tYXgpO1xuK1x0XHRcdGlmIChpdltpXSBcdTAwM2MgaV9taW4pXG4rXHRcdFx0XHRpX21pbiA9IGl2W2ldO1xuK1x0XHRcdGlmIChpdltpXSBcdTAwM2UgaV9tYXgpXG4rXHRcdFx0XHRpX21heCA9IGl2W2ldO1xuK1x0XHRcdGlmIChxdltpXSBcdTAwM2MgcV9taW4pXG4rXHRcdFx0XHRxX21pbiA9IHF2W2ldO1xuK1x0XHRcdGlmIChxdltpXSBcdTAwM2UgcV9tYXgpXG4rXHRcdFx0XHRxX21heCA9IHF2W2ldO1xuIFx0XHR9XG4gXG4tXHRcdGlmIChpX21heCBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IGlfbWluIFx1MDAzYyAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZSBpZiAoaV9tYXggXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNlPSAweDIwMClcbi1cdFx0XHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcbi1cdFx0ZWxzZVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCArICgweDQwMCAtIGlfbWluKTtcbi1cbi1cdFx0aWYgKHFfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgcV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlIGlmIChxX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBxX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4ICsgKDB4NDAwIC0gcV9taW4pO1xuK1x0XHR1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO1xuK1x0XHR1MzIgcV9kZWx0YSA9ICh1MzIpKHFfbWF4IC0gcV9taW4pO1xuIFxuIFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXG4gXHRcdFx0XCJbREFDS10gaTogbWluPTB4JTA4eCwgbWF4PTB4JTA4eCwgZGVsdGE9MHglMDh4XFxuXCIsXG5AQCAtMzQ1LDI0ICsyODUsMjQgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcbiBcdFx0aWYgKGlfZGVsdGEgXHUwMDNlIDUgfHwgcV9kZWx0YSBcdTAwM2UgNSkge1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdlswXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2WzBdID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4rXHRcdFx0aXZbMF0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0XHRxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0XHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0XHRxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXHUwMDI2IDB4M2ZmLCA5KTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0fSB3aGlsZSAoY250KysgXHUwMDNjIDEwMCk7XG4gXG4tXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYsIGlfdmFsdWUpO1xuLVx0cnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTtcbitcdCppX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTtcbitcdCpxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuIHtcbi1cdHUzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XG4rXHRzMzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xuIFx0dTMyIHJmX2EsIHJmX2I7XG4gXG4gXHRyZl9hID0gcnR3X3JlYWRfcmYocnR3ZGV2LCBSRl9QQVRIX0EsIDB4MCwgUkZSRUdfTUFTSyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNjowMi43OTM1MzQ5MTFaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY1ODY5NzA3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJUVzg4MjJDIERBQyBDYWxpYnJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBSVFc4ODIyQyBEQUMgY2FsaWJyYXRpb24uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgY2hhbmdlcyB0byBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhbmQgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHJ0dzg4MjJjLmNgIGRyaXZlci4gVGhlIHN3aXRjaCBmcm9tIGB1MzJgIHRvIGBzMzJgIGZvciB0aGUgYGl2YCBhbmQgYHF2YCBhcnJheXMgaXMgc3RyYWlnaHRmb3J3YXJkLCBpbmRpY2F0aW5nIGEgc2hpZnQgdG93YXJkcyBzaWduZWQgaW50ZWdlciByZXByZXNlbnRhdGlvbiwgbGlrZWx5IHRvIGFjY29tbW9kYXRlIGJvdGggcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcyBpbiB0aGUgSVEgZGF0YS4gVGhhdCdzIGEgc2Vuc2libGUgY2hhbmdlLiBSZXBsYWNpbmcgdGhlIGN1c3RvbSBzb3J0aW5nIGxvZ2ljIHdpdGggYHNvcnQoKWAgZnJvbSBgbGludXgvc29ydC5oYCBpcyBhbHNvIGdvb2QuIFVzaW5nIHRoZSBrZXJuZWwncyBidWlsdC1pbiBzb3J0aW5nIGZ1bmN0aW9uIGlzIGdlbmVyYWxseSBtb3JlIGVmZmljaWVudCwgcmVsaWFibGUsIGFuZCBtYWludGFpbmFibGUuIEFuZCBzaW1wbGlmeWluZyB0aGUgb2Zmc2V0IGNhbGN1bGF0aW9uLCBJIGxpa2UgdGhhdCwgaXQgd291bGQgbWFrZSB0aGUgY29kZSBlYXNpZXIgdG8gZm9sbG93LlxuXG5CdXQgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIGFsbG9jYXRlZCBvbiB0aGUgKnN0YWNrKiBpbnNpZGUgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWA6XG5cbmBgYGNcbnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuXHRcdFx0XHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxue1xuXHRzMzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xuLi4uXG5gYGBcblxuUmlnaHQsIGJ1dCBhcmUgYGl2YCBhbmQgYHF2YCBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgdGhleSdyZSByZWFkPyBUaGF0J3MgbXkgbWFpbiBjb25jZXJuLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlJ3Mgbm8gcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkLCB3aGljaCBjb3VsZCBsZWFkIHRvIHJhbmRvbSBiZWhhdmlvciBhbmQgaW5zdGFiaWxpdHkuIExldCdzIGxvb2sgYXQgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYC4gVGhhdCdzIHdoZXJlIEkgYXNzdW1lIHRoZXkncmUgcG9wdWxhdGVkLiBXYWl0LCBkb2VzIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIGFjdHVhbGx5IGNhbGwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29udHJvbCBmbG93IGFuZCBtYWtlIHN1cmUgdGhlIGFycmF5cyBhcmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBhbGdvcml0aG0gcHJvY2Vzc2VzIHRoZW0uIEknbGwgc2NhbiB0aHJvdWdoIHRoZSByZXN0IG9mIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIHRvIGNvbmZpcm0uIEl0IGlzIGltcG9ydGFudCB0byBrbm93IGlmIHRoZXNlIHN0YWNrIHZhcmlhYmxlcyBhcmUgcHJvcGVybHkgcG9wdWxhdGVkIGJlZm9yZSBiZWluZyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTI4LCJPdXRwdXRUb2tlbnMiOjU4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6MDkuNDUyMjM1ODkzWiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjkxNzcxMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MjUwPXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMDI6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMy1cXHRcXHRcXHRcXHQgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTMzND1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2FkYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3MS1cXHRcXHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMyNCwgMHgwMDAxMDAwMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM3MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzkxLVxcdFxcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYzNjLCBwYXRoX3NlbCArIDB4ODEwMyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM5MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM5My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDU3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ3NTpcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWNfaW4sIFxcdTAwMjZxY19pbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ3Ni1cXHRpYyA9IGljX2luO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTUwNj1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXAzKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU2LVxcdHJ0d193cml0ZTMyKHJ0d2RldiwgYmFzZV9hZGRyICsgMHg2MCwgMHhmMDAwMDAwMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU1NzpcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU1OC1cXHRpZiAoaWMgXFx1MDAzZT0gMHgxMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6MDkuOTgxNDE4Njc4WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTUzMjYzNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6XG5cbioqQW5hbHl6aW5nIHRoZSBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBGdW5jdGlvbioqXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGl2YCBhbmQgYHF2YCB2YXJpYWJsZXMgYXJlIHBvcHVsYXRlZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBNeSBpbnN0aW5jdCBpcyB0byBleGFtaW5lIHRoZSBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBmdW5jdGlvbiBkaXJlY3RseS4gSXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCDigJMgaXQncyBuYW1lZCBpbiBhIHdheSB0aGF0IHN1Z2dlc3RzIGl0J3MgaW52b2x2ZWQgaW4gY2FsaWJyYXRpb24gYW5kIGxpa2VseSBkZWFscyB3aXRoIFJGIG1vZGUgc2V0dGluZ3MsIHdoaWNoIGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgaXQgdG91Y2hlcyB1cG9uIHRoZXNlIGluLXBoYXNlIChJKSBhbmQgcXVhZHJhdHVyZS1waGFzZSAoUSkgY29tcG9uZW50cywgYGl2YCBhbmQgYHF2YC4gTGV0J3MgZ2V0IHRvIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDM1LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6MTQuMTM2NzQ4MDg2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMzIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAyLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzAyOlxcdHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbiAzMDM6XFx0XFx0XFx0XFx0XFx0ICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcXG4gMzA0OlxcdHtcXG4gMzA1OlxcdFxcdHMzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XFxuIDMwNjpcXHRcXHR1MzIgcmZfYSwgcmZfYjtcXG4gMzA3OlxcdFxcbiAzMDg6XFx0XFx0cmZfYSA9IHJ0d19yZWFkX3JmKHJ0d2RldiwgUkZfUEFUSF9BLCAweDAsIFJGUkVHX01BU0spO1xcbiAzMDk6XFx0XFx0cmZfYiA9IHJ0d19yZWFkX3JmKHJ0d2RldiwgUkZfUEFUSF9CLCAweDAsIFJGUkVHX01BU0spO1xcbiAzMTA6XFx0XFxuIDMxMTpcXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCJbREFDS10gUkYgcGF0aC1BPTB4JTA1eFxcXFxuXFxcIiwgcmZfYSk7XFxuIDMxMjpcXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCJbREFDS10gUkYgcGF0aC1CPTB4JTA1eFxcXFxuXFxcIiwgcmZfYik7XFxuIDMxMzpcXHRcXG4gMzE0OlxcdFxcdHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHJ0d2RldiwgaXYsIHF2KTtcXG4gMzE1OlxcdFxcdHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHJ0d2RldiwgaXYsIHF2LCBpX3ZhbHVlLCBxX3ZhbHVlKTtcXG4gMzE2OlxcdH1cXG4gMzE3OlxcdFxcbiAzMTg6XFx0c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2JiX3NldHRpbmcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4gMzE5OlxcdHtcXG4gMzIwOlxcdFxcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDFkNTgsIDB4ZmY4LCAweDFmZik7XFxuIDMyMTpcXHRcXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxYTAwLCAweDMsIDB4Mik7XFxuIDMyMjpcXHRcXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxYTE0LCAweDMwMCwgMHgzKTtcXG4gMzIzOlxcdFxcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxZDcwLCAweDdlN2U3ZTdlKTtcXG4gMzI0OlxcdFxcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDE4MGMsIDB4MywgMHgwKTtcXG4gMzI1OlxcdFxcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDQxMGMsIDB4MywgMHgwKTtcXG4gMzI2OlxcdFxcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYjAwLCAweDAwMDAwMDA4KTtcXG4gMzI3OlxcdFxcdHJ0d193cml0ZTgocnR3ZGV2LCAweDFiY2MsIDB4M2YpO1xcbiAzMjg6XFx0XFx0cnR3X3dyaXRlMzIocnR3ZGV2LCAweDFiMDAsIDB4MDAwMDAwMGEpO1xcbiAzMjk6XFx0XFx0cnR3X3dyaXRlOChydHdkZXYsIDB4MWJjYywgMHgzZik7XFxuIDMzMDpcXHRcXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHgxZTI0LCBCSVQoMzEpLCAweDApO1xcbiAzMzE6XFx0XFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MWUyOCwgMHhmLCAweDMpO1xcbiAzMzI6XFx0fVxcbiAzMzM6XFx0XFxuIDMzNDpcXHRzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2FkYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbiAzMzU6XFx0XFx0XFx0XFx0XFx0IHU4IHBhdGgsIHUzMiAqYWRjX2ljLCB1MzIgKmFkY19xYylcXG4gMzM2OlxcdHtcXG4gMzM3OlxcdFxcdHN0cnVjdCBydHdfZG1faW5mbyAqZG1faW5mbyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWRtX2luZm87XFxuIDMzODpcXHRcXHR1MzIgaWMgPSAwLCBxYyA9IDAsIHRlbXAgPSAwO1xcbiAzMzk6XFx0XFx0dTMyIGJhc2VfYWRkcjtcXG4gMzQwOlxcdFxcdHUzMiBwYXRoX3NlbDtcXG4gMzQxOlxcdFxcdGludCBpO1xcbiAzNDI6XFx0XFxuIDM0MzpcXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCJbREFDS10gQURDSyBwYXRoKCVkKVxcXFxuXFxcIiwgcGF0aCk7XFxuIDM0NDpcXHRcXG4gMzQ1OlxcdFxcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XFxuIDM0NjpcXHRcXHRzd2l0Y2ggKHBhdGgpIHtcXG4gMzQ3OlxcdFxcdGNhc2UgUkZfUEFUSF9BOlxcbiAzNDg6XFx0XFx0XFx0cGF0aF9zZWwgPSAweGEwMDAwO1xcbiAzNDk6XFx0XFx0XFx0YnJlYWs7XFxuIDM1MDpcXHRcXHRjYXNlIFJGX1BBVEhfQjpcXG4gMzUxOlxcdFxcdFxcdHBhdGhfc2VsID0gMHg4MDAwMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6MTQuMTM3MTUzODk2WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTkxODU1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBDYWxpYnJhdGlvbiBSb3V0aW5lKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkgZ2V0dGluZyB0aG9zZSBgaXZgIGFuZCBgcXZgIHZhbHVlcyBwb3B1bGF0ZWQuIFRoYXQncyB0aGUgY29yZSBvZiB0aGlzIGNhbGlicmF0aW9uIHN0ZXAuIEkgbmVlZCB0byByZXZpc2l0IHRoYXQgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgKmhvdyogZXhhY3RseSB0aGlzIGZ1bmN0aW9uIGlzIGFjcXVpcmluZyB0aGUgaW4tcGhhc2UgKEkpIGFuZCBxdWFkcmF0dXJlLXBoYXNlIChRKSBzYW1wbGVzLiBXaGF0J3MgdGhlIHNpZ25hbCBwYXRoPyBJcyBpdCB1c2luZyBkaXJlY3QgY29udmVyc2lvbiwgc3VwZXJoZXRlcm9keW5lLCBvciBzb21ldGhpbmcgZWxzZT8gSSBhbHNvIHdhbnQgdG8gdmVyaWZ5IHdoZXRoZXIgSSB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIERBQyBhbmQgQURDIHdpdGhpbiB0aGUgUkZJQyBhcmNoaXRlY3R1cmUuIE5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCB0aGUgQURDJ3Mgc2FtcGxpbmcgcmF0ZSwgcmVzb2x1dGlvbiwgYW5kIGFueSBwb3RlbnRpYWwgb2Zmc2V0cywgdG8gcHJvcGVybHkgaW50ZXJwcmV0IHRoZSB2YWx1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MTUsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI2OjE3Ljk1NjM0Mjk3NloiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDQ4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIzMixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIzMjpcXHRcXG4gMjMzOlxcdHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXFxuIDIzNDpcXHR7XFxuIDIzNTpcXHRcXHR1MzIgdGVtcDtcXG4gMjM2OlxcdFxcdHUzMiBpID0gMCwgY250ID0gMDtcXG4gMjM3OlxcdFxcbiAyMzg6XFx0XFx0d2hpbGUgKGkgXFx1MDAzYyBEQUNLX1NOXzg4MjJDIFxcdTAwMjZcXHUwMDI2IGNudCBcXHUwMDNjIDEwMDAwKSB7XFxuIDIzOTpcXHRcXHRcXHRjbnQrKztcXG4gMjQwOlxcdFxcdFxcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcXG4gMjQxOlxcdFxcdFxcdGl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMiwgOSk7XFxuIDI0MjpcXHRcXHRcXHRxdltpXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcXHUwMDI2IDB4M2ZmLCA5KTtcXG4gMjQzOlxcdFxcbiAyNDQ6XFx0XFx0XFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcXHUwMDI2XFx1MDAyNlxcbiAyNDU6XFx0XFx0XFx0ICAgIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIHF2W2ldKSlcXG4gMjQ2OlxcdFxcdFxcdFxcdGkrKztcXG4gMjQ3OlxcdFxcdH1cXG4gMjQ4OlxcdH1cXG4gMjQ5OlxcdFxcbiAyNTA6XFx0c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4gMjUxOlxcdFxcdFxcdFxcdFxcdCAgICAgICBzMzIgKml2LCBzMzIgKnF2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNjoxNy45NTY2NDkyNzZaIiwiU2VxIjo0MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTYwMTA3ODU4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbmluaXRpYWxpemVkIE1lbW9yeSBBY2Nlc3MgaW4gREFDIENhbGlicmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIGZ1bmN0aW9uIGFuZCBpbW1lZGlhdGVseSwgbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIHRoaXMgbG9vcC4gSXQncyByZWFkaW5nIElRIHNhbXBsZXMsIGFuZCB0aGVyZSdzIGEgc2FmZXR5IGNoZWNrOiBhIGBjbnRgIGxpbWl0IG9mIDEwMDAwLiBUaGF0J3MgZmluZSwgYnV0IHRoZSBpbXBsaWNhdGlvbiBpcy4uLiBpZiBgY250YCBoaXRzIDEwMDAwICpiZWZvcmUqIHdlJ3ZlIGNvbGxlY3RlZCB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIHNhbXBsZXMgKGBEQUNLX1NOXzg4MjJDYCksIHRoZSBsb29wIGJyZWFrcy4gVGhhdCBtZWFucyB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIG9mIGBpdmAgYW5kIGBxdmAgYXJlICp1bmluaXRpYWxpemVkKiEgIFRoaXMgaXMgYSBiaWcgcmVkIGZsYWcuXG5cblRoZW4gSSBzZWUgdGhhdCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgIGlzIGNhbGxlZCB3aXRoIHRoZXNlIHBvdGVudGlhbGx5IGluY29tcGxldGUgYGl2YCBhbmQgYHF2YCBhcnJheXMuIEFuZCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBkYW5nZXJvdXMuIEluc2lkZSBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCB0aGUgY29kZSBpdGVyYXRlcyAqdXAgdG8qIGBEQUNLX1NOXzg4MjJDYCB0byBmaW5kIG1pbi9tYXggdmFsdWVzIGZvciBJIGFuZCBRLiBUaGF0IG1lYW5zIGl0J3MgcmVhZGluZyBtZW1vcnkgKmJleW9uZCogdGhlIGluaXRpYWxpemVkIHBhcnQgb2YgYGl2YCBhbmQgYHF2YCBpZiB0aGUgbG9vcCBpbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkuIFdlJ3JlIHBvdGVudGlhbGx5IHJlYWRpbmcgZ2FyYmFnZSBmcm9tIHRoZSBzdGFjaywgYW5kIHRoaXMgY291bGQgbGVhZCB0byBhbGwgc29ydHMgb2YgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci5cblxuVGhpcyBpcyBjbGFzc2ljIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyB3YXMgaW50cm9kdWNlZCBpbiBhIHJlY2VudCBwYXRjaCwgb3IgaWYgaXQgaGFzIGJlZW4gbHVya2luZyBoZXJlIGFsbCBhbG9uZy4gVGltZSB0byBjaGVjayB0aGUgb2xkIGNvZGUgZm9yIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBwcm9ibGVtIHdhcyBwcmVzZW50ICpiZWZvcmUqIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYyMCwiT3V0cHV0VG9rZW5zIjo1OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI2OjI3LjU1NzczMDY1OVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjcwODkzNzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MjIyPXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0zMDI9c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMTQ6XFx0cnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUocnR3ZGV2LCBpdiwgcXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTUtXFx0cnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2gocnR3ZGV2LCBpdiwgcXYsIGlfdmFsdWUsIHFfdmFsdWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNjoyOC4yMjg2NDIwNzJaIiwiU2VxIjo0NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE5OTQ5NTk3NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQUMgQ2FsaWJyYXRpb24gQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZGlmZiBmb3IgdGhlIERBQyBjYWxpYnJhdGlvbiBpbiB0aGlzIGBydHc4ODIyY2AgZHJpdmVyLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGNoYW5nZSBmcm9tIHVuc2lnbmVkIGB1MzJgIHRvIHNpZ25lZCBgczMyYCBmb3IgYGl2YCBhbmQgYHF2YCB3aXRoaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCBpcyBpbXBvcnRhbnQuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBJIHNlZSB0aGUgcmVhZCBtYXNrIGlzIHVzZWQgdG8gZ2V0IHRoZSBkYXRhIGZyb20gdGhlIGhhcmR3YXJlLiBUaGUgY29kZSBpcyBleHRyYWN0aW5nIGEgMTAgYml0IHNpZ25lZCB2YWx1ZSwgd2hpY2ggaXMgYXBwcm9wcmlhdGUgZm9yIHNpZ25lZCBpbnRlZ2Vycy5cblxuSG93ZXZlciwgSSdtIG1vcmUgY29uY2VybmVkIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHNhbXBsaW5nIGxvb3AuIFRoZSBjb25kaXRpb24gYGNudCBcdTAwM2MgMTAwMDBgIGNhdWdodCBteSBleWUgYmVjYXVzZSB0aGF0J3MgYW4gZXhpc3RpbmcgbG9vcCBicmVhayBjb25kaXRpb24uIEl0IG1lYW5zIGFuIGVhcmx5IHJldHVybiBmcm9tIHRoZSBzYW1wbGluZyBsb29wIGlzIHBvc3NpYmxlLiBJdCBhbHNvIG1lYW5zIHRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBjb3VsZCBoYXZlIHVuaW5pdGlhbGl6ZWQgZWxlbWVudHMuIElmIGBjbnRgIGhpdHMgMTAwMDAsIHRoZW4gc29tZSBlbGVtZW50cyBpbiBgaXZgIGFuZCBgcXZgIHdpbGwgbm90IGJlIGZpbGxlZC5cblxuVGhlbiwgdGhlcmUncyB0aGUgY2hhbmdlIHRvIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIHdoZXJlIHRoZSBjdXN0b20gc29ydGluZyBpbXBsZW1lbnRhdGlvbiBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIHRoZSBzdGFuZGFyZCBgc29ydCgpYCBmdW5jdGlvbi4gVGhhdCdzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkga25vdyBgc29ydCgpYCBpcyBhbiBlZmZpY2llbnQgc29ydGluZyBhbGdvcml0aG0sIGJ1dCBpZiB0aG9zZSBgaXZgIGFuZCBgcXZgIGFycmF5cyAqYXJlbid0KiBmdWxseSBpbml0aWFsaXplZCwgdGhpcyBpcyBhIHByb2JsZW0uIFRoZSBvbGQgY3VzdG9tIHNvcnQsIGFuZCB0aGUgbmV3IHNvcnQsIGJvdGggZGVwZW5kIG9uICpyZWFkaW5nKiBkYXRhIGZyb20gYGl2YCBhbmQgYHF2YC4gVGhlIG5ldyBjb2RlIGNhbGxzIGBzb3J0KClgIHdoaWNoIG1lYW5zIHRoYXQgYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCBpcyBnb2luZyB0byByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gdGhlIGBpdmAgYW5kIGBxdmAgYnVmZmVycy4gVGhpcyBpcyBhIHBvdGVudGlhbCBidWcuIEkgY2FuJ3QgYmUgc3VyZSB0aGF0IHRoZSBvbGQgY29kZSB3YXMgYmV0dGVyOiBpdCBhbHNvIHJlYWRzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBidXQgaXQncyBub3QgY2xlYXIgdGhhdCB0aGUgb2xkIGNvZGUgaGFzIGEgd2VsbC1kZWZpbmVkIGNvbXBhcmlzb24gZnVuY3Rpb246IGBfX3J0dzg4MjJjX2RhY19pcV9zb3J0YCBtaWdodCBoYXZlIGRpZmZlcmVudCBwcm9wZXJ0aWVzLlxuXG5TbywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGJlY29tZXM6IGlzIGBydHc4ODIyY19kYWNfaXFfc29ydGAgYWN0dWFsbHkgKmNhbGxlZCo/IElmIHRoaXMgc29ydGluZyBmdW5jdGlvbiBpcyBuZXZlciBpbnZva2VkLCB0aGVuIHRoaXMgYmVjb21lcyBhIG5vbi1pc3N1ZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGRldGVybWluZSB0aGUgYWN0dWFsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMDEsIk91dHB1dFRva2VucyI6NTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6NDAuMjIzNjAzOTI5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDMyODE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4ODIyY19kYWNfaXFfc29ydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE1OD1zdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjY6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0yNTA9c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4NDpcXHRcXHRydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIGl2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTc6MjY6NDAuMjY3OTQxNjE5WiIsIlNlcSI6NDcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MDkxNDY4OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEQUMgQ2FsaWJyYXRpb24gQ29kZSBDaGFuZ2VzKipcblxuT2theSwgc28gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCBjYWxscyBgcnR3ODgyMmNfZGFjX2lxX3NvcnRgLCB3aGljaCBpdCBhbHdheXMgZGlkLiBHb29kLCBubyBuZXcgZnVuY3Rpb24gY2FsbHMgaW50cm9kdWNlZCB0aGVyZS4gTXkgaW5pdGlhbCBjb25jZXJuIHdhcyB3aGV0aGVyIHRoZSBwYXRjaCBpbnRyb2R1Y2VkIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHNvIGxldCdzIGRpZyBpbnRvIHRoZSBjaGFuZ2VzIGluIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAgaXRzZWxmLlxuXG5BbHJpZ2h0LCB0aGUgZmlyc3QgZGlmZiBzaW1wbGlmaWVzIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgZGVsdGFzIGZvciBJIGFuZCBRLiBUaGUgb2xkIGNvZGUgaGFkIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSBtYXggYW5kIG1pbiB2YWx1ZXMgd3JhcHBlZCBhcm91bmQgMHgyMDAgKHByZXN1bWFibHkgcmVwcmVzZW50aW5nIGEgc2lnbmVkIHZhbHVlIHdpdGggMHgyMDAgYXMgdGhlIG1pZHBvaW50KS4gVGhlIG5ldyBjb2RlIGp1c3QgcGVyZm9ybXMgYSBzdHJhaWdodGZvcndhcmQgdW5zaWduZWQgc3VidHJhY3Rpb246IGB1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO2AgYW5kIHRoZSBzYW1lIGZvciBRLiBObyBvYnZpb3VzIHByb2JsZW1zIHRoZXJlLiBUaGlzIHdpbGwgYmUgYW4gaW1wcm92ZW1lbnQgaW4gZWZmaWNpZW5jeSwgYW5kIGxpa2VseSBhY2N1cmFjeSBzaW5jZSB0aGUgbG9naWMgZG9lc24ndCBkZXBlbmQgb24gdGhlIGNvbXBpbGVyJ3Mgb3B0aW1pemF0aW9ucy5cblxuVGhlbiwgdGhlcmUncyBhIGNoYW5nZSBpbiBob3cgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgIGlzIGNhbGxlZC4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIGxpa2UgdGhpczpcbmBgYGNcbnJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7XG5ydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYsIHFfdmFsdWUpO1xuYGBgXG5hbmQgbm93IGl0J3MgdGhpczpcbmBgYGNcbippX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTtcbipxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTtcbmBgYFxuRXNzZW50aWFsbHksIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCBub3cgcmV0dXJucyBhIHZhbHVlLiBCdXQgdGhhdCBtZWFucyB3ZSBzaG91bGQgc2VlIGEgY29ycmVzcG9uZGluZyBjaGFuZ2UgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24sIHdoaWNoIHdlIGRvLiBUaGUgb3JpZ2luYWwgY29kZSdzIHNpZ25hdHVyZSB3YXM6XG5gYGBjXG5zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbClcbmBgYFxuYW5kIGlzIG5vdzpcbmBgYGNcbnN0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcbmBgYFxuXG5UaGUgb2xkIGZ1bmN0aW9uIGhhZCBhIGxvY2FsIHZhcmlhYmxlIGB0YCB0aGF0IGNhbGN1bGF0ZWQgdGhlIGF2ZXJhZ2Ugb2Zmc2V0IG9mIHRoZSBkYXRhLiBUaGUgcmV2aXNlZCBjb2RlIGRpcmVjdGx5IGNhbGN1bGF0ZXMgdGhlIGF2ZXJhZ2Ugb2YgdGhlIHZlY3RvcidzIHZhbHVlcyBpbiBhIGBzdW1gIHZhcmlhYmxlLCBhbmQgdGhlbiBkaXJlY3RseSBjYWxjdWxhdGVzIGBhdmcgPSBzdW0gLyAoREFDS19TTl84ODIyQyAtIDIwKWAuIFRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGN1bGF0ZWQgYW5kIHJldHVybmVkLCBub3cgdXNpbmcgYSB0ZXJuYXJ5IG9wZXJhdG9yLiBUaGUgYHZlY2AgcG9pbnRlciBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGlzIG5vdyBhIGBzMzIgKmAgaW5zdGVhZCBvZiBgdTMyICpgLCB3aGljaCBpcyBnb29kLiBUaGUgZnVuY3Rpb24gbm93IGNvcnJlY3RseSByZXR1cm5zIGEgc2lnbmVkIG9mZnNldCB2YWx1ZSwgd2hlcmVhcyBiZWZvcmUsIHRoZSBvZmZzZXQgdmFsdWUgd2FzIGFuIG91dCBwYXJhbWV0ZXIuXG5cblRoZSBsb29wIGl0ZXJhdGluZyB0aHJvdWdoIGB2ZWNgIG5vdyBhbHNvIHVzZXMgYSBgdTMyIGlgIGFzIGl0cyBpdGVyYXRvci4gVGhlIGNvZGUgaXMgbXVjaCBjbGVhbmVyLlxuXG5JIGRvbid0IHNlZSBhbnkgb2J2aW91cyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBwcm9ibGVtcywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHdoYXQgYERBQ0tfU05fODgyMkNgIHJlcHJlc2VudHMgYW5kIGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgY2FsaWJyYXRpb24gcHJvY2Vzcy4gSXQncyBsaWtlbHkgYSBzYW1wbGUgY291bnQsIGJ1dCBJIHNob3VsZCBsb29rIGludG8gdGhhdCBjb25zdGFudCdzIGRlZmluaXRpb24gdG8gY29uZmlybS4gSSBzaG91bGQgYWxzbyB0ZXN0IHRoaXMgY29kZSBhZ2FpbnN0IHNvbWUgZXhhbXBsZSBkYXRhc2V0cyB0byBkZXRlcm1pbmUgaWYgdGhlIHNpZ25lZCBhcml0aG1ldGljIGludHJvZHVjZXMgYW55IHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDExLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE3OjI2OjU3LjM1OTQxMzIyNVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE2ODEzNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBEQUNLX1NOXzg4MjJDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaD0xMzM9Y29uc3Qgc3RydWN0IHJ0d190YWJsZSBuYW1lICMjIF90YmwgPSB7XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oLTE0MS0jZGVmaW5lIERBQ0tfUkZfODgyMkNcXHRcXHQxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oOjE0MjojZGVmaW5lIERBQ0tfU05fODgyMkNcXHRcXHQxMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmgtMTQzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNjo1Ny40MTEwOTkwOTRaIiwiU2VxIjo0OSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4OTI1OTE0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIERBQyBDYWxpYnJhdGlvbiBDb2RlIFJlZmFjdG9yaW5nKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLCBhbmQgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0J3MgaGFwcGVuaW5nLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIERBQyBjYWxpYnJhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIGBydHc4ODIyY2AgZHJpdmVyLiAgVGhlIGNyaXRpY2FsIGFzcGVjdCBoZXJlIGlzIHdoZXRoZXIgdGhpcyByZWZhY3RvcmluZyBpbnRyb2R1Y2VzIGFueSAqbmV3KiB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIGJlIGV4cG9zZWQgYnkgS01TQU4uICBMZXQncyB3YWxrIHRocm91Z2ggaXQuXG5cbkZpcnN0LCBgREFDS19TTl84ODIyQ2AgZGVmaW5lcyB0aGUgc2l6ZSDigJMgaXQncyAxMDAuICBXZSBoYXZlIGFycmF5cyBgaXZgIGFuZCBgcXZgLCBib3RoIG9mIDEwMCBgczMyYCBlbGVtZW50cywgdXNlZCB0byBzdG9yZSBzYW1wbGVzIHJlYWQgZnJvbSBoYXJkd2FyZS4gIFRoZSBmdW5jdGlvbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIGF0dGVtcHRzIHRvIHBvcHVsYXRlIHRoZXNlIGFycmF5cy4gVGhlIGtleSBoZXJlIGlzIHRoZSBsb29wIHRoYXQgcmVhZHMgdGhlIHZhbHVlcyBhbmQgc3RvcmVzIHRoZW0uICBDcnVjaWFsbHksIHRoZXJlJ3MgYSBgY250YCBjb3VudGVyIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCwgYW5kIGlmIGl0IHJlYWNoZXMgMTAwMDAsIGBpYCBjb3VsZCBiZSBsZXNzIHRoYW4gMTAwLCBsZWF2aW5nIHRoZSBhcnJheXMgcGFydGlhbGx5IHVuaW5pdGlhbGl6ZWQuIFRoaXMgKndhcyogYWxyZWFkeSB0aGUgY2FzZSBpbiB0aGUgb2xkIGNvZGUuXG5cblRoZSBvcmlnaW5hbCBjb2RlIGFsc28gaGFkIGEgc2ltaWxhciBzaXR1YXRpb24sIHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFsdWVzICpjb3VsZCogYmUgcmVhZC4gVGhlIHBhdGNoICpyZXBsYWNlcyogY2FsbHMgdG8gYHJ0dzg4MjJjX3JmX21pbm1heF9jbXBgLCBhbmQgYSBjdXN0b20gc29ydCB3aXRoIHRoZSBzdGFuZGFyZCBsaWJyYXJ5J3MgYHNvcnQoKWAgZnVuY3Rpb24gYW5kIHNpZ25lZCBpbnRlZ2Vycywgc3BlY2lmaWNhbGx5IGBzMzJgLiBUaGlzIGBzb3J0KClgIGZ1bmN0aW9uIHVzZXMgYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgd2hpY2ggaXMgYSBzdGFuZGFyZCBjb21wYXJpc29uIGZ1bmN0aW9uLlxuXG5UaGUgcHJldmlvdXMgY29kZSBoYWQgc29tZSB0cmlja3kgc2lnbiBleHRlbnNpb24gbG9naWMuIFRoZSBuZXcgY29kZSBkb2VzIGl0IGNvcnJlY3RseSBieSBjYWxsaW5nIGBzaWduX2V4dGVuZDMyYCB3aGljaCBzaWduLWV4dGVuZHMgdGhlIDEwLWJpdCB2YWx1ZXMgdG8gMzIgYml0IHNpZ25lZCB2YWx1ZXMgdXNpbmcgYml0IDkgYXMgdGhlIHNpZ24gYml0LlxuXG5NeSBpbml0aWFsIGNvbmNlcm4gd2FzIHdoZXRoZXIgdGhlIHJlZmFjdG9yaW5nICpleHBvc2VkKiBhbiBleGlzdGluZyB1bmluaXRpYWxpemVkIHJlYWQgdGhhdCB3YXMgbm90IGRldGVjdGVkIGJlZm9yZSBieSBLTVNBTi4gSWYgdGhlIGFycmF5cyBgaXZgIGFuZCBgcXZgIGFyZSBvbmx5IHBhcnRpYWxseSBpbml0aWFsaXplZCwgdXNpbmcgYHNvcnQoKWAgKndpbGwqIHJlYWQgdGhlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBLTVNBTiBzaG91bGQgY2F0Y2ggdGhpcy4gQnV0IHRoaXMgd2FzIGFscmVhZHkgdHJ1ZSBpbiB0aGUgb2xkIGNvZGUuXG5cblRoZSBjaGVjayBmb3IgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AgaGFzIGJlZW4gbW9kaWZpZWQsIGJ1dCBub3QgaW4gYSB3YXkgdGhhdCBhZmZlY3RzIHdoZXRoZXIgdGhlIGFycmF5cyBhcmUgaW5pdGlhbGl6ZWQgb3Igbm90LiBJdCdzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGxvZ2ljIHVzaW5nIHNpZ25lZCB0eXBlcy4gVGhlIGxpbWl0cyBhcmUgLTEwMCB0byAxMDAuXG5cblRoZSBvZmZzZXQgY2FsY3VsYXRpb25zIGFyZSBhbHNvIGJlaW5nIHJlZmFjdG9yZWQsIGJ1dCB0aGV5IHN0aWxsIHJlbHkgb24gdGhlIHNhbWUgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBkYXRhLlxuXG5UaGUgYXJyYXlzIHdpdGhpbiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhcmUgc3RpbGwgdW5pbml0aWFsaXplZCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHNhbXBsZSBmdW5jdGlvbiBmYWlscy5cblxuVGhlIG1haW4gY2hhbmdlIGlzIGZyb20gYSBjdXN0b20gY29tcGFyaXNvbiBhbmQgc29ydCB0byBzdGFuZGFyZCBzaWduZWQgdHlwZXMsIHN0YW5kYXJkIGBzb3J0KClgLCBhbmQgYSBzaW1wbGlmaWVkIG9mZnNldCBjYWxjdWxhdGlvbi4gQWxsIG9mIHRoaXMgY2FuIHN0aWxsIHJlYWQgdGhlIHNhbWUgbWVtb3J5IGlmIGl0IGlzIG5vdCBwcm9wZXJseSBpbml0aWFsaXplZC5cblxuVGhlcmVmb3JlLCBzaW5jZSBhbGwgdGhlIHBvdGVudGlhbCBmb3IgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB3YXMgcHJlc2VudCAqYmVmb3JlKiB0aGUgcGF0Y2gsIGFuZCB0aGUgcGF0Y2ggaXMgcHJpbWFyaWx5IGEgcmVmYWN0b3Jpbmcgb2YgZXhpc3RpbmcgbG9naWMgYW5kIG1hdGggYW5kIGRvZXMgKm5vdCogaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9uIG9yIGNvcHkgdG8gdXNlciBzcGFjZSwgS01TQU4gaXMgbm90IHNwZWNpZmljYWxseSBuZWVkZWQgaGVyZS4gIEFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIGxpa2UgdGhlIGVhcmx5IGxvb3AgdGVybWluYXRpb24gYW5kIHRoZSBhcnJheXMgYmVpbmcgb25seSBwYXJ0aWFsbHkgZmlsbGVkLCAqd291bGQqIGJlIGNhdWdodCBieSBLTVNBTiBpbiBib3RoIHRoZSBvbGQgYW5kIG5ldyBjb2RlLiAgVGhpcyBpcyBhIHN0cmFpZ2h0IHJlZmFjdG9yaW5nLCB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUsIGlmIGl0IGV4aXN0cywgaXMgc3RpbGwgdGhlcmUuIEkgd2lsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGJlY2F1c2UgaXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBLTVNBTi1zcGVjaWZpYyBwcm9ibGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5ODYsIk91dHB1dFRva2VucyI6MjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNzoyNzozMS4zMDM2OTM0MDRaIiwiU2VxIjo1MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIHJ0dzg4IGRyaXZlciBieSByZXBsYWNpbmcgY3VzdG9tIDEwLWJpdCBzaWduLW1hZ25pdHVkZS90d28ncy1jb21wbGVtZW50IGFyaXRobWV0aWMgYW5kIGEgY3VzdG9tIGJ1YmJsZSBzb3J0IHdpdGggc3RhbmRhcmQgYHMzMmAgdHlwZXMsIGBzaWduX2V4dGVuZDMyKClgLCBhbmQgdGhlIGtlcm5lbCdzIGJ1aWx0LWluIGBzb3J0KClgIGZ1bmN0aW9uLiBcXG5cXG5XaGlsZSB0aGUgc3RhY2stYWxsb2NhdGVkIGFycmF5cyBgaXZgIGFuZCBgcXZgIGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaWYgdGhlIHNhbXBsaW5nIGxvb3AgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKClgIHRlcm1pbmF0ZXMgZWFybHkgKGR1ZSB0byB0aGUgYGNudCBcXHUwMDNjIDEwMDAwYCBjb25kaXRpb24pLCB0aGlzIGJlaGF2aW9yIGFuZCB0aGUgc3Vic2VxdWVudCByZWFkcyBvZiB0aGUgZW50aXJlIGFycmF5IHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBvbGQgY29kZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGFyaXRobWV0aWMgYW5kIHNvcnRpbmcgcmVmYWN0b3JpbmcuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgdGhpcyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBydHc4OCBkcml2ZXIgYnkgcmVwbGFjaW5nIGN1c3RvbSAxMC1iaXQgc2lnbi1tYWduaXR1ZGUvdHdvJ3MtY29tcGxlbWVudCBhcml0aG1ldGljIGFuZCBhIGN1c3RvbSBidWJibGUgc29ydCB3aXRoIHN0YW5kYXJkIGBzMzJgIHR5cGVzLCBgc2lnbl9leHRlbmQzMigpYCwgYW5kIHRoZSBrZXJuZWwncyBidWlsdC1pbiBgc29ydCgpYCBmdW5jdGlvbi4gXFxuXFxuV2hpbGUgdGhlIHN0YWNrLWFsbG9jYXRlZCBhcnJheXMgYGl2YCBhbmQgYHF2YCBjb3VsZCBwb3RlbnRpYWxseSBjb250YWluIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlmIHRoZSBzYW1wbGluZyBsb29wIGluIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZSgpYCB0ZXJtaW5hdGVzIGVhcmx5IChkdWUgdG8gdGhlIGBjbnQgXFx1MDAzYyAxMDAwMGAgY29uZGl0aW9uKSwgdGhpcyBiZWhhdmlvciBhbmQgdGhlIHN1YnNlcXVlbnQgcmVhZHMgb2YgdGhlIGVudGlyZSBhcnJheSB3ZXJlIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgb2xkIGNvZGUuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIG5ldyBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBhcml0aG1ldGljIGFuZCBzb3J0aW5nIHJlZmFjdG9yaW5nLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQgZm9yIHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2xgc[1] Phase: Succeeded StartedAt: 2026-08-12 17:27:42 +0000 UTC FinishedAt: 2026-08-12 17:27:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 17:27:42 +0000 UTC FinishedAt: 2026-08-12 17:27:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2] Phase: Succeeded StartedAt: 2026-08-12 17:27:42 +0000 UTC FinishedAt: 2026-08-12 18:11:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-12 17:27:42 +0000 UTC FinishedAt: 2026-08-12 18:11:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-12 17:27:42 +0000 UTC FinishedAt: 2026-08-12 17:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-12 17:27:42 +0000 UTC FinishedAt: 2026-08-12 17:27:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-convert-artifact-228851553/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-12 17:27:52 +0000 UTC FinishedAt: 2026-08-12 17:48:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-12 17:27:52 +0000 UTC FinishedAt: 2026-08-12 17:48:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4406b6c1-a489-4019-9af2-36e8a072ebb5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-convert-artifact-228851553/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "9b37bdd2-15c7-4cd3-bd48-c63c7f22f026", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-build-action-1315163279/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-12 17:27:52 +0000 UTC FinishedAt: 2026-08-12 17:48:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4406b6c1-a489-4019-9af2-36e8a072ebb5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-convert-artifact-228851553/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "9b37bdd2-15c7-4cd3-bd48-c63c7f22f026", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-build-action-1315163279/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-12 17:48:33 +0000 UTC FinishedAt: 2026-08-12 17:48:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-12 17:48:33 +0000 UTC FinishedAt: 2026-08-12 17:48:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-12 17:48:33 +0000 UTC FinishedAt: 2026-08-12 17:48:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-12 17:48:33 +0000 UTC FinishedAt: 2026-08-12 17:48:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-convert-artifact-675150004/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-12 17:48:44 +0000 UTC FinishedAt: 2026-08-12 17:50:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-12 17:48:44 +0000 UTC FinishedAt: 2026-08-12 17:50:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9b37bdd2-15c7-4cd3-bd48-c63c7f22f026,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-build-action-1315163279/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-12 17:50:49 +0000 UTC FinishedAt: 2026-08-12 17:50:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-12 17:50:49 +0000 UTC FinishedAt: 2026-08-12 17:50:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-12 17:50:49 +0000 UTC FinishedAt: 2026-08-12 18:07:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-12 17:50:49 +0000 UTC FinishedAt: 2026-08-12 18:07:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4406b6c1-a489-4019-9af2-36e8a072ebb5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-convert-artifact-675150004/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "41957005-fd62-4efb-9170-0e92ecc6f776", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-build-action-2559072896/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-12 17:50:49 +0000 UTC FinishedAt: 2026-08-12 18:07:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4406b6c1-a489-4019-9af2-36e8a072ebb5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-convert-artifact-675150004/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "41957005-fd62-4efb-9170-0e92ecc6f776", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-build-action-2559072896/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-12 18:07:19 +0000 UTC FinishedAt: 2026-08-12 18:07:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-12 18:07:19 +0000 UTC FinishedAt: 2026-08-12 18:07:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-12 18:07:19 +0000 UTC FinishedAt: 2026-08-12 18:09:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-12 18:07:19 +0000 UTC FinishedAt: 2026-08-12 18:09:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*41957005-fd62-4efb-9170-0e92ecc6f776,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-build-action-2559072896/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-12 18:09:39 +0000 UTC FinishedAt: 2026-08-12 18:11:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-12 18:09:39 +0000 UTC FinishedAt: 2026-08-12 18:11:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*9b37bdd2-15c7-4cd3-bd48-c63c7f22f026,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*41957005-fd62-4efb-9170-0e92ecc6f776,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-build-action-1315163279/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-build-action-2559072896/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-12 18:09:39 +0000 UTC FinishedAt: 2026-08-12 18:09:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-12 18:09:39 +0000 UTC FinishedAt: 2026-08-12 18:09:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-convert-artifact-2093349341/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-12 18:09:39 +0000 UTC FinishedAt: 2026-08-12 18:09:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-12 18:09:39 +0000 UTC FinishedAt: 2026-08-12 18:09:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-12 18:09:39 +0000 UTC FinishedAt: 2026-08-12 18:09:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-12 18:09:49 +0000 UTC FinishedAt: 2026-08-12 18:11:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2xgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_phy_calibration"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4f25071afe9218aaae1c63fbf75e229aa6405319","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","RTW88","RTW88_8822CU"],"series_id":"d2e5353f-b780-4f89-a794-29e43edc1934","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-12 18:09:49 +0000 UTC FinishedAt: 2026-08-12 18:11:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9b37bdd2-15c7-4cd3-bd48-c63c7f22f026,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*41957005-fd62-4efb-9170-0e92ecc6f776,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-build-action-1315163279/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-build-action-2559072896/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd2xgc/series-workflowd2xgc-convert-artifact-2093349341/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}