Name: series-workflowcbhth Phase: Succeeded StartedAt: 2026-09-02 19:00:50 +0000 UTC FinishedAt: 2026-09-02 19:43:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[0] Phase: Succeeded StartedAt: 2026-09-02 19:00:50 +0000 UTC FinishedAt: 2026-09-02 19:04:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 19:00:50 +0000 UTC FinishedAt: 2026-09-02 19:04:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "cee9395acd8043be0644b25c34bfa86623f2b935", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "cee9395acd8043be0644b25c34bfa86623f2b935", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "c6c52c71-832c-4b9a-af45-70e272003c20" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "handle_sthyi", "kvm_s390_handle_b2", "kvm_arch_init_vm", "kvm_s390_vcpu_setup_cmma" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hhbmRsZV9zdGh5aSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfYjImIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb252ZXJ0cyBwYWdlIGFsbG9jYXRpb25zIHZpYSBnZXRfemVyb2VkX3BhZ2UoKSBhbmQgZnJlZV9wYWdlKCkgdG8gc2xhYiBhbGxvY2F0aW9ucyB2aWEga3phbGxvYygpL2t6YWxsb2Nfb2JqKCkgYW5kIGtmcmVlKCkgYWNyb3NzIHMzOTAgS1ZNIGNvZGUgKGludGVyY2VwdC5jLCBpbnRlcnJ1cHQuYywgcHJpdi5jLCBzMzkwLmMpLiBcblxuU2luY2Uga3phbGxvYy9remFsbG9jX29iaiB6ZXJvLWluaXRpYWxpemVzIHRoZSBtZW1vcnkgaWRlbnRpY2FsbHkgdG8gZ2V0X3plcm9lZF9wYWdlKCksIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBjb25kaXRpb25hbCBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIHVuaW5pdGlhbGl6ZWQgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UvZ3Vlc3QgYXJlIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgc2xhYi1yZWxhdGVkIG1lbW9yeSBzYWZldHkgaXNzdWVzIChlLmcuIG91dC1vZi1ib3VuZHMsIHVzZS1hZnRlci1mcmVlLCBvciBkb3VibGUtZnJlZSkgYXJlIG1vbml0b3JlZCBieSBzdGFuZGFyZCBLQVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBwYWdlLWxldmVsIG1lbW9yeSBhbGxvY2F0aW9ucyAoZ2V0X3plcm9lZF9wYWdlL2ZyZWVfcGFnZSkgdG8gc2xhYiBhbGxvY2F0aW9ucyAoa3phbGxvYy9rZnJlZSkgaW4gS1ZNIG9uIHMzOTAgZm9yIGd1ZXN0IGludGVyY2VwdCBoYW5kbGluZyAoU1RIWUksIFNUU0kpLCBWTSBpbml0aWFsaXphdGlvbiAoc2llX3BhZ2UyKSwgR0lCIHNldHVwLCBhbmQgVkNQVSBDTU1BIHNldHVwLiBUaGVzZSBhZmZlY3QgcmVhY2hhYmxlIEtWTSBleGVjdXRpb24gcGF0aHMgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9uIHMzOTAsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDZkZmNlMDdjODlhZWI3ZDZjYmRlYzhjNWFiNWM4NWYyNjk5MzY2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTk6MDI6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jXG5pbmRleCBjYTEyMDVkZmFjOGIwLi5hYWY5ODI4ZDFmNDRkIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcbkBAIC0xMSw2ICYjNDM7MTEsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGFnZW1hcC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9hc20tb2Zmc2V0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2lycS5oXHUwMDNlXG5AQCAtNDM4LDEzICYjNDM7NDM5LDEzIEBAIGludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0aWYgKCFrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpIFx1MDAyNlx1MDAyNiAoYWRkciBcdTAwMjYgflBBR0VfTUFTSykpXG4gXHRcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pO1xuIFxuLVx0c2N0bnMgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpO1xuJiM0MztcdHNjdG5zID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIXNjdG5zKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGNjID0gc3RoeWlfZmlsbChzY3RucywgXHUwMDI2cmMpO1xuIFx0aWYgKGNjIFx1MDAzYyAwKSB7XG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7XG4mIzQzO1x0XHRrZnJlZShzY3Rucyk7XG4gXHRcdHJldHVybiBjYztcbiBcdH1cbiBvdXQ6XG5AQCAtNDU0LDEzICYjNDM7NDU1LDEzIEBAIGludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdHIgPSB3cml0ZV9ndWVzdCh2Y3B1LCBhZGRyLCByZWcyLCBzY3RucywgUEFHRV9TSVpFKTtcbiBcdFx0XHRpZiAocikge1xuLVx0XHRcdFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNjdG5zKTtcbiYjNDM7XHRcdFx0XHRrZnJlZShzY3Rucyk7XG4gXHRcdFx0XHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdH1cbiBcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7XG4mIzQzO1x0a2ZyZWUoc2N0bnMpO1xuIFx0dmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbcmVnMiAmIzQzOyAxXSA9IHJjO1xuIFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCBjYyk7XG4gXHRyZXR1cm4gcjtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmNcbmluZGV4IDAzODFhZTk4MTcwMzUuLjAyMDY1ZmI4ZDA1M2UgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xuQEAgLTM2ODksNyAmIzQzOzM2ODksNyBAQCB2b2lkIGt2bV9zMzkwX2dpYl9kZXN0cm95KHZvaWQpXG4gXHR9XG4gXHRjaHNjX3NnaWIoMCk7XG4gXHR1bnJlZ2lzdGVyX2FkYXB0ZXJfaW50ZXJydXB0KFx1MDAyNmdpYl9hbGVydF9pcnEpO1xuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7XG4mIzQzO1x0a2ZyZWUoZ2liKTtcbiBcdGdpYiA9IE5VTEw7XG4gfVxuIFxuQEAgLTM3MDMsNyAmIzQzOzM3MDMsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpXG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuLVx0Z2liID0gKHN0cnVjdCBrdm1fczM5MF9naWIgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4mIzQzO1x0Z2liID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpO1xuIFx0aWYgKCFnaWIpIHtcbiBcdFx0cmMgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG91dDtcbkBAIC0zNzIyLDcgJiM0MzszNzIyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxuIFx0Z2liX29yaWdpbiA9IHZpcnRfdG9fcGh5cyhnaWIpO1xuIFx0aWYgKGNoc2Nfc2dpYihnaWJfb3JpZ2luKSkge1xuIFx0XHRwcl9lcnIoXCYjMzQ7QXNzb2NpYXRpbmcgdGhlIEdJQiB3aXRoIHRoZSBBSVYgZmFjaWxpdHkgZmFpbGVkXFxuXCYjMzQ7KTtcbi1cdFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7XG4mIzQzO1x0XHRrZnJlZShnaWIpO1xuIFx0XHRnaWIgPSBOVUxMO1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gb3V0X3VucmVnX2dhbDtcbkBAIC0zNzQyLDcgJiM0MzszNzQyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxuIG91dF91bnJlZ19nYWw6XG4gXHR1bnJlZ2lzdGVyX2FkYXB0ZXJfaW50ZXJydXB0KFx1MDAyNmdpYl9hbGVydF9pcnEpO1xuIG91dF9mcmVlX2dpYjpcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpO1xuJiM0MztcdGtmcmVlKGdpYik7XG4gXHRnaWIgPSBOVUxMO1xuIG91dDpcbiBcdHJldHVybiByYztcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY1xuaW5kZXggYjNjYjJjMmMzYWE3MS4uODU2OTM5YWNmMDEyZiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmNcbkBAIC0xNCw2ICYjNDM7MTQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tX3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZ3RhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9hc20tb2Zmc2V0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2ZhY2lsaXR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY3VycmVudC5oXHUwMDNlXG5AQCAtODY5LDcgJiM0Mzs4NzAsNyBAQCBzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGludCBmYyA9ICh2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VzLnJlZ3MuZ3Byc1swXSBcdTAwMjYgMHhmMDAwMDAwMCkgXHUwMDNlXHUwMDNlIDI4O1xuIFx0aW50IHNlbDEgPSB2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VzLnJlZ3MuZ3Byc1swXSBcdTAwMjYgMHhmZjtcbiBcdGludCBzZWwyID0gdmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMV0gXHUwMDI2IDB4ZmZmZjtcbi1cdHVuc2lnbmVkIGxvbmcgbWVtID0gMDtcbiYjNDM7XHR2b2lkICptZW0gPSBOVUxMO1xuIFx0dTY0IG9wZXJhbmQyO1xuIFx0aW50IHJjID0gMDtcbiBcdHU4IGFyO1xuQEAgLTkxMSwxOSAmIzQzOzkxMiwxOSBAQCBzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdHN3aXRjaCAoZmMpIHtcbiBcdGNhc2UgMTogLyogc2FtZSBoYW5kbGluZyBmb3IgMSBhbmQgMiAqL1xuIFx0Y2FzZSAyOlxuLVx0XHRtZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiYjNDM7XHRcdG1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0XHRpZiAoIW1lbSlcbiBcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuLVx0XHRpZiAoc3RzaSgodm9pZCAqKSBtZW0sIGZjLCBzZWwxLCBzZWwyKSlcbiYjNDM7XHRcdGlmIChzdHNpKG1lbSwgZmMsIHNlbDEsIHNlbDIpKVxuIFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAzOlxuIFx0XHRpZiAoc2VsMSAhPSAyIHx8IHNlbDIgIT0gMilcbiBcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuLVx0XHRtZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiYjNDM7XHRcdG1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0XHRpZiAoIW1lbSlcbiBcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuLVx0XHRoYW5kbGVfc3RzaV8zXzJfMih2Y3B1LCAodm9pZCAqKSBtZW0pO1xuJiM0MztcdFx0aGFuZGxlX3N0c2lfM18yXzIodmNwdSwgbWVtKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIDE1OiAvKiBmYyAxNSBpcyBmdWxseSBoYW5kbGVkIGluIHVzZXJzcGFjZSAqL1xuIFx0XHRpbnNlcnRfc3RzaV91c3JfZGF0YSh2Y3B1LCBvcGVyYW5kMiwgYXIsIGZjLCBzZWwxLCBzZWwyKTtcbkBAIC05MzEsMTAgJiM0Mzs5MzIsMTAgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHJldHVybiAtRVJFTU9URTtcbiBcdH1cbiBcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4tXHRcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayksICh2b2lkICopbWVtLCBQQUdFX1NJWkUpO1xuJiM0MztcdFx0bWVtY3B5KHNpZGFfYWRkcih2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrKSwgbWVtLCBQQUdFX1NJWkUpO1xuIFx0XHRyYyA9IDA7XG4gXHR9IGVsc2Uge1xuLVx0XHRyYyA9IHdyaXRlX2d1ZXN0KHZjcHUsIG9wZXJhbmQyLCBhciwgKHZvaWQgKiltZW0sIFBBR0VfU0laRSk7XG4mIzQzO1x0XHRyYyA9IHdyaXRlX2d1ZXN0KHZjcHUsIG9wZXJhbmQyLCBhciwgbWVtLCBQQUdFX1NJWkUpO1xuIFx0fVxuIFx0aWYgKHJjKSB7XG4gXHRcdHJjID0ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7XG5AQCAtOTQ1LDE0ICYjNDM7OTQ2LDE0IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRyYyA9IC1FUkVNT1RFO1xuIFx0fVxuIFx0dHJhY2Vfa3ZtX3MzOTBfaGFuZGxlX3N0c2kodmNwdSwgZmMsIHNlbDEsIHNlbDIsIG9wZXJhbmQyKTtcbi1cdGZyZWVfcGFnZShtZW0pO1xuJiM0MztcdGtmcmVlKG1lbSk7XG4gXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDApO1xuIFx0dmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMF0gPSAwO1xuIFx0cmV0dXJuIHJjO1xuIG91dF9ub19kYXRhOlxuIFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAzKTtcbiBvdXQ6XG4tXHRmcmVlX3BhZ2UobWVtKTtcbiYjNDM7XHRrZnJlZShtZW0pO1xuIFx0cmV0dXJuIHJjO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY1xuaW5kZXggYjA4MzllODg3MjIxZS4uOGVjNTA1MDYwZjhjMCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNcbkBAIC0zMjczLDggJiM0MzszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcbiBcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7XG4tXHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIgPVxuLVx0ICAgICAoc3RydWN0IHNpZV9wYWdlMiAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4mIzQzO1x0a3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyID0ga3phbGxvY19vYmooKmt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMixcbiYjNDM7XHRcdFx0XHRcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4gXHRpZiAoIWt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMilcbiBcdFx0Z290byBvdXRfZXJyO1xuIFxuQEAgLTMzNjksNyAmIzQzOzMzNjksNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcbiBcdHJldHVybiAwO1xuIG91dF9lcnI6XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyKTtcbiYjNDM7XHRrZnJlZShrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xuIFx0ZGVidWdfdW5yZWdpc3Rlcihrdm0tXHUwMDNlYXJjaC5kYmYpO1xuIFx0c2NhX2Rpc3Bvc2Uoa3ZtKTtcbiBcdEtWTV9FVkVOVCgzLCBcJiMzNDtjcmVhdGlvbiBvZiB2bSBmYWlsZWQ6ICVkXCYjMzQ7LCByYyk7XG5AQCAtMzQyNyw3ICYjNDM7MzQyNyw3IEBAIHZvaWQga3ZtX2FyY2hfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4gXHRcdG1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnB2Lm1tdV9ub3RpZmllciwga3ZtLVx1MDAzZW1tKTtcbiBcbiBcdGRlYnVnX3VucmVnaXN0ZXIoa3ZtLVx1MDAzZWFyY2guZGJmKTtcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xuJiM0MztcdGtmcmVlKGt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMik7XG4gXHRrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKGt2bSk7XG4gXHRrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKGt2bSk7XG4gXHRrdm1fczM5MF92c2llX2Rlc3Ryb3koa3ZtKTtcbkBAIC0zNjU3LDEzICYjNDM7MzY1NywxMyBAQCBzdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gdm9pZCBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8pXG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylwaHlzX3RvX3ZpcnQodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbykpO1xuJiM0MztcdFx0a2ZyZWUocGh5c190b192aXJ0KHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8pKTtcbiBcdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8gPSAwO1xuIH1cbiBcbiBpbnQga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR2b2lkICpjYnJsb19wYWdlID0gKHZvaWQgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiYjNDM7XHR2b2lkICpjYnJsb19wYWdlID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXG4gXHRpZiAoIWNicmxvX3BhZ2UpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hhbmRsZV9zdGh5aSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfYjImIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBwYWdlLWxldmVsIG1lbW9yeSBhbGxvY2F0aW9ucyAoZ2V0X3plcm9lZF9wYWdlL2ZyZWVfcGFnZSkgdG8gc2xhYiBhbGxvY2F0aW9ucyAoa3phbGxvYy9rZnJlZSkgaW4gS1ZNIG9uIHMzOTAgZm9yIGd1ZXN0IGludGVyY2VwdCBoYW5kbGluZyAoU1RIWUksIFNUU0kpLCBWTSBpbml0aWFsaXphdGlvbiAoc2llX3BhZ2UyKSwgR0lCIHNldHVwLCBhbmQgVkNQVSBDTU1BIHNldHVwLiBUaGVzZSBhZmZlY3QgcmVhY2hhYmxlIEtWTSBleGVjdXRpb24gcGF0aHMgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9uIHMzOTAsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDZkZmNlMDdjODlhZWI3ZDZjYmRlYzhjNWFiNWM4NWYyNjk5MzY2ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTk6MDI6NTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMKaW5kZXggY2ExMjA1ZGZhYzhiMC4uYWFmOTgyOGQxZjQ0ZCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYwpAQCAtMTEsNiAmIzQzOzExLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGFnZW1hcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiAKICNpbmNsdWRlICZsdDthc20vYXNtLW9mZnNldHMuaCZndDsKICNpbmNsdWRlICZsdDthc20vaXJxLmgmZ3Q7CkBAIC00MzgsMTMgJiM0Mzs0MzksMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKCFrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpICZhbXA7JmFtcDsgKGFkZHIgJmFtcDsgflBBR0VfTUFTSykpCiAJCXJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pOwogCi0Jc2N0bnMgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwlzY3RucyA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghc2N0bnMpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJY2MgPSBzdGh5aV9maWxsKHNjdG5zLCAmYW1wO3JjKTsKIAlpZiAoY2MgJmx0OyAwKSB7Ci0JCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CQlrZnJlZShzY3Rucyk7CiAJCXJldHVybiBjYzsKIAl9CiBvdXQ6CkBAIC00NTQsMTMgJiM0Mzs0NTUsMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCX0gZWxzZSB7CiAJCQlyID0gd3JpdGVfZ3Vlc3QodmNwdSwgYWRkciwgcmVnMiwgc2N0bnMsIFBBR0VfU0laRSk7CiAJCQlpZiAocikgewotCQkJCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CQkJCWtmcmVlKHNjdG5zKTsKIAkJCQlyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByKTsKIAkJCX0KIAkJfQogCX0KIAotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CWtmcmVlKHNjdG5zKTsKIAl2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzW3JlZzIgJiM0MzsgMV0gPSByYzsKIAlrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTsKIAlyZXR1cm4gcjsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYwppbmRleCAwMzgxYWU5ODE3MDM1Li4wMjA2NWZiOGQwNTNlIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jCkBAIC0zNjg5LDcgJiM0MzszNjg5LDcgQEAgdm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKQogCX0KIAljaHNjX3NnaWIoMCk7CiAJdW5yZWdpc3Rlcl9hZGFwdGVyX2ludGVycnVwdCgmYW1wO2dpYl9hbGVydF9pcnEpOwotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpOwomIzQzOwlrZnJlZShnaWIpOwogCWdpYiA9IE5VTEw7CiB9CiAKQEAgLTM3MDMsNyAmIzQzOzM3MDMsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpCiAJCWdvdG8gb3V0OwogCX0KIAotCWdpYiA9IChzdHJ1Y3Qga3ZtX3MzOTBfZ2liICopZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpOwomIzQzOwlnaWIgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiAJaWYgKCFnaWIpIHsKIAkJcmMgPSAtRU5PTUVNOwogCQlnb3RvIG91dDsKQEAgLTM3MjIsNyAmIzQzOzM3MjIsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpCiAJZ2liX29yaWdpbiA9IHZpcnRfdG9fcGh5cyhnaWIpOwogCWlmIChjaHNjX3NnaWIoZ2liX29yaWdpbikpIHsKIAkJcHJfZXJyKCYjMzQ7QXNzb2NpYXRpbmcgdGhlIEdJQiB3aXRoIHRoZSBBSVYgZmFjaWxpdHkgZmFpbGVkXG4mIzM0Oyk7Ci0JCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpOwomIzQzOwkJa2ZyZWUoZ2liKTsKIAkJZ2liID0gTlVMTDsKIAkJcmMgPSAtRUlPOwogCQlnb3RvIG91dF91bnJlZ19nYWw7CkBAIC0zNzQyLDcgJiM0MzszNzQyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKQogb3V0X3VucmVnX2dhbDoKIAl1bnJlZ2lzdGVyX2FkYXB0ZXJfaW50ZXJydXB0KCZhbXA7Z2liX2FsZXJ0X2lycSk7CiBvdXRfZnJlZV9naWI6Ci0JZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7CiYjNDM7CWtmcmVlKGdpYik7CiAJZ2liID0gTlVMTDsKIG91dDoKIAlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYwppbmRleCBiM2NiMmMyYzNhYTcxLi44NTY5MzlhY2YwMTJmIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmMKQEAgLTE0LDYgJiM0MzsxNCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbW1fdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZ3RhYmxlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9hc20tb2Zmc2V0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9mYWNpbGl0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9jdXJyZW50LmgmZ3Q7CkBAIC04NjksNyAmIzQzOzg3MCw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWludCBmYyA9ICh2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzWzBdICZhbXA7IDB4ZjAwMDAwMDApICZndDsmZ3Q7IDI4OwogCWludCBzZWwxID0gdmNwdS0mZ3Q7cnVuLSZndDtzLnJlZ3MuZ3Byc1swXSAmYW1wOyAweGZmOwogCWludCBzZWwyID0gdmNwdS0mZ3Q7cnVuLSZndDtzLnJlZ3MuZ3Byc1sxXSAmYW1wOyAweGZmZmY7Ci0JdW5zaWduZWQgbG9uZyBtZW0gPSAwOwomIzQzOwl2b2lkICptZW0gPSBOVUxMOwogCXU2NCBvcGVyYW5kMjsKIAlpbnQgcmMgPSAwOwogCXU4IGFyOwpAQCAtOTExLDE5ICYjNDM7OTEyLDE5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXN3aXRjaCAoZmMpIHsKIAljYXNlIDE6IC8qIHNhbWUgaGFuZGxpbmcgZm9yIDEgYW5kIDIgKi8KIAljYXNlIDI6Ci0JCW1lbSA9IGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwkJbWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJCWlmICghbWVtKQogCQkJZ290byBvdXRfbm9fZGF0YTsKLQkJaWYgKHN0c2koKHZvaWQgKikgbWVtLCBmYywgc2VsMSwgc2VsMikpCiYjNDM7CQlpZiAoc3RzaShtZW0sIGZjLCBzZWwxLCBzZWwyKSkKIAkJCWdvdG8gb3V0X25vX2RhdGE7CiAJCWJyZWFrOwogCWNhc2UgMzoKIAkJaWYgKHNlbDEgIT0gMiB8fCBzZWwyICE9IDIpCiAJCQlnb3RvIG91dF9ub19kYXRhOwotCQltZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKJiM0MzsJCW1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCQlpZiAoIW1lbSkKIAkJCWdvdG8gb3V0X25vX2RhdGE7Ci0JCWhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsICh2b2lkICopIG1lbSk7CiYjNDM7CQloYW5kbGVfc3RzaV8zXzJfMih2Y3B1LCBtZW0pOwogCQlicmVhazsKIAljYXNlIDE1OiAvKiBmYyAxNSBpcyBmdWxseSBoYW5kbGVkIGluIHVzZXJzcGFjZSAqLwogCQlpbnNlcnRfc3RzaV91c3JfZGF0YSh2Y3B1LCBvcGVyYW5kMiwgYXIsIGZjLCBzZWwxLCBzZWwyKTsKQEAgLTkzMSwxMCAmIzQzOzkzMiwxMCBAQCBzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJcmV0dXJuIC1FUkVNT1RFOwogCX0KIAlpZiAoa3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSkgewotCQltZW1jcHkoc2lkYV9hZGRyKHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrKSwgKHZvaWQgKiltZW0sIFBBR0VfU0laRSk7CiYjNDM7CQltZW1jcHkoc2lkYV9hZGRyKHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrKSwgbWVtLCBQQUdFX1NJWkUpOwogCQlyYyA9IDA7CiAJfSBlbHNlIHsKLQkJcmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsICh2b2lkICopbWVtLCBQQUdFX1NJWkUpOwomIzQzOwkJcmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTsKIAl9CiAJaWYgKHJjKSB7CiAJCXJjID0ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7CkBAIC05NDUsMTQgJiM0Mzs5NDYsMTQgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCXJjID0gLUVSRU1PVEU7CiAJfQogCXRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7Ci0JZnJlZV9wYWdlKG1lbSk7CiYjNDM7CWtmcmVlKG1lbSk7CiAJa3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAwKTsKIAl2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzWzBdID0gMDsKIAlyZXR1cm4gcmM7CiBvdXRfbm9fZGF0YToKIAlrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDMpOwogb3V0OgotCWZyZWVfcGFnZShtZW0pOwomIzQzOwlrZnJlZShtZW0pOwogCXJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMKaW5kZXggYjA4MzllODg3MjIxZS4uOGVjNTA1MDYwZjhjMCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jCkBAIC0zMjczLDggJiM0MzszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpCiAJCWdvdG8gb3V0X2VycjsKIAogCUJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7Ci0Ja3ZtLSZndDthcmNoLnNpZV9wYWdlMiA9Ci0JICAgICAoc3RydWN0IHNpZV9wYWdlMiAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiYjNDM7CWt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIgPSBremFsbG9jX29iaigqa3ZtLSZndDthcmNoLnNpZV9wYWdlMiwKJiM0MzsJCQkJCSAgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiAJaWYgKCFrdm0tJmd0O2FyY2guc2llX3BhZ2UyKQogCQlnb3RvIG91dF9lcnI7CiAKQEAgLTMzNjksNyAmIzQzOzMzNjksNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSkKIAogCXJldHVybiAwOwogb3V0X2VycjoKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLSZndDthcmNoLnNpZV9wYWdlMik7CiYjNDM7CWtmcmVlKGt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIpOwogCWRlYnVnX3VucmVnaXN0ZXIoa3ZtLSZndDthcmNoLmRiZik7CiAJc2NhX2Rpc3Bvc2Uoa3ZtKTsKIAlLVk1fRVZFTlQoMywgJiMzNDtjcmVhdGlvbiBvZiB2bSBmYWlsZWQ6ICVkJiMzNDssIHJjKTsKQEAgLTM0MjcsNyAmIzQzOzM0MjcsNyBAQCB2b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKQogCQltbXVfbm90aWZpZXJfdW5yZWdpc3RlcigmYW1wO2t2bS0mZ3Q7YXJjaC5wdi5tbXVfbm90aWZpZXIsIGt2bS0mZ3Q7bW0pOwogCiAJZGVidWdfdW5yZWdpc3Rlcihrdm0tJmd0O2FyY2guZGJmKTsKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLSZndDthcmNoLnNpZV9wYWdlMik7CiYjNDM7CWtmcmVlKGt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIpOwogCWt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMoa3ZtKTsKIAlrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKGt2bSk7CiAJa3ZtX3MzOTBfdnNpZV9kZXN0cm95KGt2bSk7CkBAIC0zNjU3LDEzICYjNDM7MzY1NywxMyBAQCBzdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB2b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlpZiAodmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2stJmd0O2NicmxvKQotCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbykpOwomIzQzOwkJa2ZyZWUocGh5c190b192aXJ0KHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbykpOwogCXZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbyA9IDA7CiB9CiAKIGludCBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXZvaWQgKmNicmxvX3BhZ2UgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwl2b2lkICpjYnJsb19wYWdlID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAKIAlpZiAoIWNicmxvX3BhZ2UpCiAJCXJldHVybiAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQ1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogczM5MCBLVk0gTWVtb3J5IEFsbG9jYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBkZXRlcm1pbmUgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBpbnZvbHZlIHN3YXBwaW5nIGBnZXRfemVyb2VkX3BhZ2VgIGFuZCBgZnJlZV9wYWdlYCB3aXRoIGBremFsbG9jYCBhbmQgYGtmcmVlYCB3aXRoaW4gdGhlIHMzOTAgS1ZNIGNvZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBzZWVpbmcgaXQgaW4gYGludGVyY2VwdC5jYCwgYGludGVycnVwdC5jYCwgYHByaXYuY2AsIGFuZCBgczM5MC5jYC4KCkFoYSwgaG9sZCBvbi4gVGhpcyBpcyBpbnRlcmVzdGluZy4gYGdldF96ZXJvZWRfcGFnZWAgaXMgYSBkaXJlY3QgYnVkZHkgYWxsb2NhdG9yIGNhbGwsIGdyYWJiaW5nIGEgc2luZ2xlIHBhZ2UuIGBremFsbG9jKFBBR0VfU0laRSwgLi4uKWAgdXNlcyB0aGUgc2xhYiBhbGxvY2F0b3IsIGVmZmVjdGl2ZWx5IGEgYGttYWxsb2MtNGtgIGFsbG9jYXRpb24uIEkmIzM5O20gc2VlaW5nIHRoaXMgd2l0aCBgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQWAgZmxhZ3MgaW4gY2FsbHMgbGlrZSBga3ZtX3MzOTBfZ2liX2luaXRgIGFuZCBga3ZtX2FyY2hfaW5pdF92bWAsIHdoaWNoIHRoZW4gdXRpbGl6ZSBgdmlydF90b19waHlzYCB0byBnZXQgdGhlIHBoeXNpY2FsIGFkZHJlc3MuIEFuZCBzaW1pbGFyIGxvZ2ljIGluIGBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWFgIGFuZCBga3ZtX3MzOTBfdmNwdV91bnNldHVwX2NtbWFgLgoKVGhlIHNsYWIgYWxsb2NhdG9yIGlzIGluZGVlZCBwYWdlLWFsaWduZWQgKDQwOTYtYnl0ZSBzbGFiIG9iamVjdHMpLiBTbywgdGhlIHF1ZXN0aW9uIGlzICp3aHkqIHRoaXMgY2hhbmdlPyBJcyB0aGlzIHB1cmVseSByZWZhY3RvcmluZywgYSBjbGVhbnVwLCBvciBkb2VzIGl0ICphY3R1YWxseSogYWx0ZXIgYmVoYXZpb3I/IElzIGl0IGFuIG9wdGltaXphdGlvbiBhaW1lZCBhdCBzbGFiIGFsbG9jYXRpb24sIG9yIHNvbWUgc3VidGxlIHNlbWFudGljIGNoYW5nZT8gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgaW5zdHJ1Y3Rpb24gZm9yIGRlY2lkaW5nIGlmIHRoZSBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLgoKUmlnaHQsIHNvIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjb25zdGFudCBjaGFuZ2VzIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QsIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpYyBoYXJkd2FyZS1kZXBlbmRlbnQgZHJpdmVycywgYW5kIHRlYXItZG93biBjYWxsYmFja3MgYXJlIGFsbCBvdXQuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciBzMzkwIEtWTS4gQ2FuIHRoaXMgYmUgZWZmZWN0aXZlbHkgZnV6emVkLCBvciBydW4gd2l0aGluIFFFTVU/IFllcywgczM5MCBLVk0gaXMgdGhlIEtWTSBoeXBlcnZpc29yIG9uIHRoZSBzMzkweCBhcmNoaXRlY3R1cmUsIEkga25vdyB0aGF0LiBCdXQsIGNhbiBpdCBiZSBmdXp6IHRlc3RlZD8gUUVNVSBlbXVsYXRlcyBzMzkweCAocWVtdS1zeXN0ZW0tczM5MHgpLCBidXQgSSB0aGluayBLVk0gaW5zaWRlIFFFTVUgb24gczM5MHggbGlrZWx5IG5lZWRzIG5lc3RlZCBLVk0gb3IgYWN0dWFsIGhhcmR3YXJlLiBTeXprYWxsZXIgZGVmaW5pdGVseSBmdXp6ZXMgczM5MHggTGludXgga2VybmVsczsgZG9lcyBpdCBhbHNvIHRlc3QgczM5MCBLVk0gaWYgaXQgcnVucyBvbiBzMzkweD8gT3IgaXMgaXQgb25seSBUQ0c/CgpUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgYWRkaW5nIG9yIG1vZGlmeWluZyBsb2dpYywgb3IgaWYgdGhpcyBpcyBqdXN0IGEgbWVjaGFuaWNhbCByZXBsYWNlbWVudCBvZiB0aGUgYWxsb2NhdGlvbiByb3V0aW5lcy4gV2hhdCB3YXMgdGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgY2hhbmdlPyBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBnaXQgbG9nIGFuZCBtYXliZSBzZWFyY2ggdGhlIHRyZWUgZm9yIGNvbnRleHQgdG8gc2VlIHdoYXQgdGhlIGF1dGhvciB3YXMgdGhpbmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3phbGxvY19vYmomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9iYXNlLmM9MzQ3PWludCBhcHBsZGF0YV9yZWdpc3Rlcl9vcHMoc3RydWN0IGFwcGxkYXRhX29wcyAqb3BzKVxuLS1cbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9iYXNlLmMtMzUxLVxuYXJjaC9zMzkwL2FwcGxkYXRhL2FwcGxkYXRhX2Jhc2UuYzozNTI6XHRvcHMtXHUwMDNlY3RsX3RhYmxlID0ga3phbGxvY19vYmpzKHN0cnVjdCBjdGxfdGFibGUsIDEpO1xuYXJjaC9zMzkwL2FwcGxkYXRhL2FwcGxkYXRhX2Jhc2UuYy0zNTMtXHRpZiAoIW9wcy1cdTAwM2VjdGxfdGFibGUpXG4tLVxuYXJjaC9zMzkwL2FwcGxkYXRhL2FwcGxkYXRhX21lbS5jPTEyOT1zdGF0aWMgaW50IF9faW5pdCBhcHBsZGF0YV9tZW1faW5pdCh2b2lkKVxuLS1cbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9tZW0uYy0xMzItXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbWVtLmM6MTMzOlx0b3BzLmRhdGEgPSBremFsbG9jX29iaihzdHJ1Y3QgYXBwbGRhdGFfbWVtX2RhdGEpO1xuYXJjaC9zMzkwL2FwcGxkYXRhL2FwcGxkYXRhX21lbS5jLTEzNC1cdGlmICghb3BzLmRhdGEpXG4tLVxuYXJjaC9zMzkwL2FwcGxkYXRhL2FwcGxkYXRhX25ldF9zdW0uYz0xMzE9c3RhdGljIGludCBfX2luaXQgYXBwbGRhdGFfbmV0X2luaXQodm9pZClcbi0tXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbmV0X3N1bS5jLTEzNC1cbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9uZXRfc3VtLmM6MTM1Olx0b3BzLmRhdGEgPSBremFsbG9jX29iaihzdHJ1Y3QgYXBwbGRhdGFfbmV0X3N1bV9kYXRhKTtcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9uZXRfc3VtLmMtMTM2LVx0aWYgKCFvcHMuZGF0YSlcbi0tXG5hcmNoL3MzOTAvaHlwZnMvaHlwZnNfc3BycC5jPTY3PXN0YXRpYyBpbnQgX19oeXBmc19zcHJwX2lvY3RsKHZvaWQgX191c2VyICp1c2VyX2FyZWEpXG4tLVxuYXJjaC9zMzkwL2h5cGZzL2h5cGZzX3NwcnAuYy03Ni1cdGRhdGEgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMKTtcbmFyY2gvczM5MC9oeXBmcy9oeXBmc19zcHJwLmM6Nzc6XHRkaWFnMzA0ID0ga3phbGxvY19vYmooKmRpYWczMDQpO1xuYXJjaC9zMzkwL2h5cGZzL2h5cGZzX3NwcnAuYy03OC1cdGlmICghZGF0YSB8fCAhZGlhZzMwNClcbi0tXG5hcmNoL3MzOTAvaHlwZnMvaW5vZGUuYz0yOTE9c3RhdGljIGludCBoeXBmc19pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmFyY2gvczM5MC9oeXBmcy9pbm9kZS5jLTI5NC1cbmFyY2gvczM5MC9oeXBmcy9pbm9kZS5jOjI5NTpcdHNiaSA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBoeXBmc19zYl9pbmZvKTtcbmFyY2gvczM5MC9oeXBmcy9pbm9kZS5jLTI5Ni1cdGlmICghc2JpKVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9pZGFscy5oPTg4PXN0YXRpYyBpbmxpbmUgaW50IHNldF9ub3JtYWxpemVkX2NkYShzdHJ1Y3QgY2N3MSAqY2N3LCB2b2lkICp2YWRkcilcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vaWRhbHMuaC05Ni1cdGlmIChucmlkYXdzIFx1MDAzZSAwKSB7XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vaWRhbHMuaDo5NzpcdFx0aWRhbCA9IGt6YWxsb2Nfb2JqcygqaWRhbCwgbnJpZGF3cywgR0ZQX0FUT01JQyB8IEdGUF9ETUEpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2lkYWxzLmgtOTgtXHRcdGlmICghaWRhbClcbi0tXG5hcmNoL3MzOTAva2VybmVsL2NlcnRfc3RvcmUuYz0zMTU9c3RhdGljIGludCBpbnZhbGlkYXRlX2tleXJpbmdfa2V5cyhzdHJ1Y3Qga2V5ICprZXlyaW5nKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvY2VydF9zdG9yZS5jLTMyNC1cdG51bV9rZXlzID0ga2V5cmluZ19wYXlsb2FkX2xlbiAvIHNpemVvZihrZXlfc2VyaWFsX3QpO1xuYXJjaC9zMzkwL2tlcm5lbC9jZXJ0X3N0b3JlLmM6MzI1Olx0a2V5X2FycmF5ID0ga3phbGxvY19vYmpzKGtleV9zZXJpYWxfdCwgbnVtX2tleXMpO1xuYXJjaC9zMzkwL2tlcm5lbC9jZXJ0X3N0b3JlLmMtMzI2LVx0aWYgKCFrZXlfYXJyYXkpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jPTMwNz1zdGF0aWMgZGVidWdfaW5mb190ICpkZWJ1Z19pbmZvX2FsbG9jKGNvbnN0IGNoYXIgKm5hbWUsIGludCBwYWdlc19wZXJfYXJlYSxcbi0tXG5hcmNoL3MzOTAva2VybmVsL2RlYnVnLmMtMzE2LVx0XHRnb3RvIGZhaWxfbWFsbG9jX3JjO1xuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jOjMxNzpcdHJjLVx1MDAzZWFjdGl2ZV9lbnRyaWVzID0ga3phbGxvY19vYmpzKGludCwgbnJfYXJlYXMpO1xuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jLTMxOC1cdGlmICghcmMtXHUwMDNlYWN0aXZlX2VudHJpZXMpXG5hcmNoL3MzOTAva2VybmVsL2RlYnVnLmMtMzE5LVx0XHRnb3RvIGZhaWxfbWFsbG9jX2FjdGl2ZV9lbnRyaWVzO1xuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jOjMyMDpcdHJjLVx1MDAzZWFjdGl2ZV9wYWdlcyA9IGt6YWxsb2Nfb2JqcyhpbnQsIG5yX2FyZWFzKTtcbmFyY2gvczM5MC9rZXJuZWwvZGVidWcuYy0zMjEtXHRpZiAoIXJjLVx1MDAzZWFjdGl2ZV9wYWdlcylcbi0tXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jPTIyPXN0YXRpYyBpbnQgZ3NfZW5hYmxlKHZvaWQpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ndWFyZGVkX3N0b3JhZ2UuYy0yNi1cdGlmICghY3VycmVudC1cdTAwM2V0aHJlYWQuZ3NfY2IpIHtcbmFyY2gvczM5MC9rZXJuZWwvZ3VhcmRlZF9zdG9yYWdlLmM6Mjc6XHRcdGdzX2NiID0ga3phbGxvY19vYmooKmdzX2NiKTtcbmFyY2gvczM5MC9rZXJuZWwvZ3VhcmRlZF9zdG9yYWdlLmMtMjgtXHRcdGlmICghZ3NfY2IpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ndWFyZGVkX3N0b3JhZ2UuYz01Mj1zdGF0aWMgaW50IGdzX3NldF9iY19jYihzdHJ1Y3QgZ3NfY2IgX191c2VyICp1X2dzX2NiKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvZ3VhcmRlZF9zdG9yYWdlLmMtNTctXHRpZiAoIWdzX2NiKSB7XG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jOjU4Olx0XHRnc19jYiA9IGt6YWxsb2Nfb2JqKCpnc19jYik7XG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jLTU5LVx0XHRpZiAoIWdzX2NiKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvb3NfaW5mby5jPTE0ND1zdGF0aWMgdm9pZCBvc19pbmZvX29sZF9pbml0KHZvaWQpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9vc19pbmZvLmMtMTU2LVx0XHRnb3RvIGZhaWw7XG5hcmNoL3MzOTAva2VybmVsL29zX2luZm8uYzoxNTc6XHRvc19pbmZvX29sZCA9IGt6YWxsb2Nfb2JqKCpvc19pbmZvX29sZCk7XG5hcmNoL3MzOTAva2VybmVsL29zX2luZm8uYy0xNTgtXHRpZiAoIW9zX2luZm9fb2xkKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX2NmLmM9MjUxPXN0YXRpYyBpbnQgY3B1bV9jZl9hbGxvY19jcHUoaW50IGNwdSwgdW5zaWduZWQgaW50IG51bSlcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jLTI2NC1cdGlmICghY3B1aHcpIHtcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX2NmLmM6MjY1Olx0XHRjcHVodyA9IGt6YWxsb2Nfb2JqKCpjcHVodyk7XG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jLTI2Ni1cdFx0aWYgKGNwdWh3KSB7XG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYz0xNjY0PXN0YXRpYyBsb25nIGNmc2V0X2lvY3RsX3N0YXJ0KHVuc2lnbmVkIGxvbmcgYXJnLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jLTE2ODktXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jOjE2OTA6XHRwcmVxID0ga3phbGxvY19vYmooKnByZXEpO1xuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYy0xNjkxLVx0aWYgKCFwcmVxKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX3NmLmM9MTU5Mj1zdGF0aWMgdm9pZCAqYXV4X2J1ZmZlcl9zZXR1cChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHZvaWQgKipwYWdlcyxcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9zZi5jLTE2MTUtXHQvKiBBbGxvY2F0ZSBhdXhfYnVmZmVyIHN0cnVjdCBmb3IgdGhlIGV2ZW50ICovXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9zZi5jOjE2MTY6XHRhdXggPSBremFsbG9jX29iaihzdHJ1Y3QgYXV4X2J1ZmZlcik7XG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9zZi5jLTE2MTctXHRpZiAoIWF1eClcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmM9MjQ0PXN0YXRpYyBpbnQgcGFpX2FsbG9jX2NwdShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBjcHUpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jLTI2MS1cdFx0cmMgPSAtRU5PTUVNO1xuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jOjI2MjpcdFx0Y3B1bXAgPSBremFsbG9jX29iaigqY3B1bXApO1xuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jLTI2My1cdFx0aWYgKCFjcHVtcClcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmM9MzE5PXN0YXRpYyBpbnQgcGFpX2FsbG9jKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudClcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmMtMzIzLVxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jOjMyNDpcdG1hc2twdHIgPSBremFsbG9jX29iaigqbWFza3B0cik7XG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmMtMzI1LVx0aWYgKCFtYXNrcHRyKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9wYWkuYz0xMDc3PXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICogX19pbml0IGF0dHJfZXZlbnRfaW5pdF9vbmUoaW50IG51bSxcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmMtMTA4Mi1cbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9wYWkuYzoxMDgzOlx0cGEgPSBremFsbG9jX29iaigqcGEpO1xuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jLTEwODQtXHRpZiAoIXBhKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmM9NzQxPXN0YXRpYyBpbnQgczM5MF9nc19jYl9zZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXJnZXQsXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy03NTEtXHRpZiAoIXRhcmdldC1cdTAwM2V0aHJlYWQuZ3NfY2IpIHtcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmM6NzUyOlx0XHRkYXRhID0ga3phbGxvY19vYmooKmRhdGEpO1xuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy03NTMtXHRcdGlmICghZGF0YSlcbi0tXG5hcmNoL3MzOTAva2VybmVsL3B0cmFjZS5jPTc5Mz1zdGF0aWMgaW50IHMzOTBfZ3NfYmNfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmMtODAyLVx0aWYgKCFkYXRhKSB7XG5hcmNoL3MzOTAva2VybmVsL3B0cmFjZS5jOjgwMzpcdFx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmMtODA0LVx0XHRpZiAoIWRhdGEpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYz04NTI9c3RhdGljIGludCBzMzkwX3J1bnRpbWVfaW5zdHJfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmMtODYzLVx0aWYgKCF0YXJnZXQtXHUwMDNldGhyZWFkLnJpX2NiKSB7XG5hcmNoL3MzOTAva2VybmVsL3B0cmFjZS5jOjg2NDpcdFx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmMtODY1LVx0XHRpZiAoIWRhdGEpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ydW50aW1lX2luc3RyLmM9NzA9U1lTQ0FMTF9ERUZJTkUyKHMzOTBfcnVudGltZV9pbnN0ciwgaW50LCBjb21tYW5kLCBpbnQsIHNpZ251bSlcbi0tXG5hcmNoL3MzOTAva2VybmVsL3J1bnRpbWVfaW5zdHIuYy04NS1cdGlmICghY3VycmVudC1cdTAwM2V0aHJlYWQucmlfY2IpIHtcbmFyY2gvczM5MC9rZXJuZWwvcnVudGltZV9pbnN0ci5jOjg2Olx0XHRjYiA9IGt6YWxsb2Nfb2JqKCpjYik7XG5hcmNoL3MzOTAva2VybmVsL3J1bnRpbWVfaW5zdHIuYy04Ny1cdFx0aWYgKCFjYilcbi0tXG5hcmNoL3MzOTAva2VybmVsL3NtcC5jPTExMjE9aW50IF9fcmVmIHNtcF9yZXNjYW5fY3B1cyhib29sIGVhcmx5KVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvc21wLmMtMTEyNS1cbmFyY2gvczM5MC9rZXJuZWwvc21wLmM6MTEyNjpcdGluZm8gPSBremFsbG9jX29iaigqaW5mbyk7XG5hcmNoL3MzOTAva2VybmVsL3NtcC5jLTExMjctXHRpZiAoIWluZm8pXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmM9MTI5PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqKiBfX2luaXQgdmRzb19zZXR1cF9wYWdlcyh2b2lkICpzdGFydCwgdm9pZCAqZW5kKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvdmRzby5jLTEzNC1cbmFyY2gvczM5MC9rZXJuZWwvdmRzby5jOjEzNTpcdHBhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHBhZ2VzICYjNDM7IDEpO1xuYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmMtMTM2LVx0aWYgKCFwYWdlbGlzdClcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmM9MzE9aW50IGt2bV9zMzkwX21tdV9jYWNoZV90b3B1cChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYylcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmMtNDctXHRmb3IgKCA7IG1jLVx1MDAzZW5fcm1hcHMgXHUwMDNjIEtWTV9TMzkwX01NVV9DQUNIRV9OX1JNQVBTOyBtYy1cdTAwM2VuX3JtYXBzJiM0MzsmIzQzOykge1xuYXJjaC9zMzkwL2t2bS9nbWFwL2RhdC5jOjQ4Olx0XHRvID0ga3phbGxvY19vYmooc3RydWN0IHZzaWVfcm1hcCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuYy00OS1cdFx0aWYgKCFvKVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaD01OTE9c3RhdGljIGlubGluZSBzdHJ1Y3QgdnNpZV9ybWFwICprdm1fczM5MF9tbXVfY2FjaGVfYWxsb2Nfcm1hcChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYylcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmgtNTk0LVx0XHRyZXR1cm4gbWMtXHUwMDNlcm1hcHNbLS1tYy1cdTAwM2VuX3JtYXBzXTtcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaDo1OTU6XHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IHZzaWVfcm1hcCwgR0ZQX0tWTV9TMzkwX01NVV9DQUNIRSk7XG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmgtNTk2LX1cbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0Lmg9OTM5PXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqa3ZtX3MzOTBfbmV3X21tdV9jYWNoZSh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaC05NDItXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0Lmg6OTQzOlx0bWMgPSBremFsbG9jX29iaigqbWMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmgtOTQ0LVx0aWYgKG1jIFx1MDAyNlx1MDAyNiAha3ZtX3MzOTBfbW11X2NhY2hlX3RvcHVwKG1jKSlcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAvZ21hcC5jPTQ3PXN0cnVjdCBnbWFwICpnbWFwX25ldyhzdHJ1Y3Qga3ZtICprdm0sIGdmbl90IGxpbWl0KVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC9nbWFwLmMtNTQtXG5hcmNoL3MzOTAva3ZtL2dtYXAvZ21hcC5jOjU1Olx0Z21hcCA9IGt6YWxsb2Nfb2JqKCpnbWFwLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9nbWFwL2dtYXAuYy01Ni1cdGlmICghZ21hcClcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9MTc0OT1zdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0X2luZm8gKmt2bV9zMzkwX2dldF9pb19pbnQoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0xNzczLWdpc2Ffb3V0OlxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jOjE3NzQ6XHR0bXBfaW50aSA9IGt6YWxsb2Nfb2JqKCppbnRpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTE3NzUtXHRpZiAodG1wX2ludGkpIHtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9MjM5Mj1zdGF0aWMgaW50IGVucXVldWVfZmxvYXRpbmdfaXJxKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI0MDQtXHR3aGlsZSAobGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBrdm1fczM5MF9pcnEpKSB7XG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM6MjQwNTpcdFx0aW50aSA9IGt6YWxsb2Nfb2JqKCppbnRpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI0MDYtXHRcdGlmICghaW50aSlcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9MjQzND1zdGF0aWMgaW50IHJlZ2lzdGVyX2lvX2FkYXB0ZXIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMjQ1Ny1cdH1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzoyNDU4Olx0YWRhcHRlciA9IGt6YWxsb2Nfb2JqKCphZGFwdGVyLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI0NTktXHRpZiAoIWFkYXB0ZXIpIHtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9MjUxMj1zdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0yNTIyLVxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jOjI1MjM6XHRtYXAgPSBremFsbG9jX29iaigqbWFwLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI1MjQtXHRpZiAoIW1hcClcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9Mjc3MT1zdGF0aWMgaW50IGt2bV9zMzkwX2luamVjdF9haXJxKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMjc4NC1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzoyNzg1Olx0aW50aSA9IGt6YWxsb2Nfb2JqKCppbnRpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI3ODYtXHRpZiAoIWludGkpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jPTM3NTQ9aW50IGt2bV9hcmNoX3NldF9pcnFfaW5hdG9taWMoc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTM3ODgtXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM6Mzc4OTpcdGludGkgPSBremFsbG9jX29iaigqaW50aSwgR0ZQX0FUT01JQyk7XG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMzc5MC1cdGlmICghaW50aSkge1xuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYz01Mj1zdGF0aWMgaW50IHpwY2lfc2V0dXBfYWlwYih1OCBuaXNjKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy01Ni1cbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYzo1NzpcdHpwY2lfYWlwYiA9IGt6YWxsb2Nfb2JqKHVuaW9uIHpwY2lfc2ljX2lpYik7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtNTgtXHRpZiAoIXpwY2lfYWlwYilcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM9MTIwPWludCBrdm1fczM5MF9wY2lfYWVuX2luaXQodTggbmlzYylcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtMTI4LVx0bXV0ZXhfbG9jayhcdTAwMjZhaWZ0LVx1MDAzZWFpZnRfbG9jayk7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM6MTI5Olx0YWlmdC1cdTAwM2VremRldiA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qga3ZtX3pkZXYgKiwgWlBDSV9OUl9ERVZJQ0VTKTtcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy0xMzAtXHRpZiAoIWFpZnQtXHUwMDNla3pkZXYpIHtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM9NDcxPXN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2Rldl9vcGVuKHN0cnVjdCB6cGNpX2RldiAqemRldilcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtNDc0LVxuYXJjaC9zMzkwL2t2bS9zMzkwL3BjaS5jOjQ3NTpcdGt6ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV96ZGV2KTtcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy00NzYtXHRpZiAoIWt6ZGV2KVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYz03Mjk9aW50IF9faW5pdCBrdm1fczM5MF9wY2lfaW5pdCh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy03MzYtXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM6NzM3Olx0YWlmdCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB6cGNpX2FpZnQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3BjaS5jLTczOC1cdGlmICghYWlmdClcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHYuYz00NzY9aW50IGt2bV9zMzkwX3B2X3NldF9hc2lkZShzdHJ1Y3Qga3ZtICprdm0sIHUxNiAqcmMsIHUxNiAqcnJjKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wdi5jLTQ5Mi1cbmFyY2gvczM5MC9rdm0vczM5MC9wdi5jOjQ5MzpcdHByaXYgPSBremFsbG9jX29iaigqcHJpdik7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHYuYy00OTQtXHRpZiAoIXByaXYpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0xNDczPXN0YXRpYyBpbnQga3ZtX3MzOTBfc2V0X3Byb2Nlc3NvcihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNDgzLVx0fVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzoxNDg0Olx0cHJvYyA9IGt6YWxsb2Nfb2JqKCpwcm9jLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNDg1LVx0aWYgKCFwcm9jKSB7XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0xNjc5PXN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X3Byb2Nlc3NvcihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNjgzLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzoxNjg0Olx0cHJvYyA9IGt6YWxsb2Nfb2JqKCpwcm9jLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNjg1LVx0aWYgKCFwcm9jKSB7XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0xNzA3PXN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X21hY2hpbmUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMTcxMS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6MTcxMjpcdG1hY2ggPSBremFsbG9jX29iaigqbWFjaCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMTcxMy1cdGlmICghbWFjaCkge1xuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MjkwMD1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0yOTE3LVx0XHRcdGJyZWFrO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzoyOTE4Olx0XHRpbnRpID0ga3phbGxvY19vYmooKmludGksIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTI5MTktXHRcdGlmICghaW50aSlcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jPTMyNDA9aW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0zMjc1LVx0QlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3Qgc2llX3BhZ2UyKSAhPSA0MDk2KTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6MzI3NjpcdGt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMiA9IGt6YWxsb2Nfb2JqKCprdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIsXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTMyNzctXHRcdFx0XHRcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz00NDUxPXN0YXRpYyB2b2lkIF9fa3ZtX2luamVjdF9wZmF1bHRfdG9rZW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHN0YXJ0X3Rva2VuLFxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNDQ2My1cdH0gZWxzZSB7XG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjQ0NjQ6XHRcdGludGlfbWVtID0ga3phbGxvY19vYmooKmludGlfbWVtLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy00NDY1LVx0XHRpZiAoV0FSTl9PTl9PTkNFKCFpbnRpX21lbSkpXG4tLVxuYXJjaC9zMzkwL21tL2V4dG1lbS5jPTI5Nz1fX3NlZ21lbnRfbG9hZCAoY2hhciAqbmFtZSwgaW50IGRvX25vbnNoYXJlZCwgdW5zaWduZWQgbG9uZyAqYWRkciwgdW5zaWduZWQgbG9uZyAqZW5kKVxuLS1cbmFyY2gvczM5MC9tbS9leHRtZW0uYy0zMTktXG5hcmNoL3MzOTAvbW0vZXh0bWVtLmM6MzIwOlx0c2VnLVx1MDAzZXJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XG5hcmNoL3MzOTAvbW0vZXh0bWVtLmMtMzIxLVx0aWYgKHNlZy1cdTAwM2VyZXMgPT0gTlVMTCkge1xuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjM4Nj1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpmcClcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTIzOTgtXHRpZiAoIWppdF9kYXRhKSB7XG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjIzOTk6XHRcdGppdF9kYXRhID0ga3phbGxvY19vYmooKmppdF9kYXRhKTtcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjQwMC1cdFx0aWYgKCFqaXRfZGF0YSlcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jPTUyMj1zdGF0aWMgc3RydWN0IHJlc291cmNlICpfX2FsbG9jX3JlcyhzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9zMzkwL3BjaS9wY2kuYy01MjYtXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjUyNzpcdHIgPSBremFsbG9jX29iaigqcik7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTUyOC1cdGlmICghcilcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jPTgyMz1zdHJ1Y3QgenBjaV9kZXYgKnpwY2lfY3JlYXRlX2RldmljZSh1MzIgZmlkLCB1MzIgZmgsIGVudW0genBjaV9zdGF0ZSBzdGF0ZSlcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTgyNy1cbmFyY2gvczM5MC9wY2kvcGNpLmM6ODI4Olx0emRldiA9IGt6YWxsb2Nfb2JqKCp6ZGV2KTtcbmFyY2gvczM5MC9wY2kvcGNpLmMtODI5LVx0aWYgKCF6ZGV2KVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpLmM9MTA2Nj1zdGF0aWMgaW50IHpwY2lfbWVtX2luaXQodm9pZClcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTEwNzctXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjEwNzg6XHR6cGNpX2lvbWFwX3N0YXJ0ID0ga3phbGxvY19vYmpzKCp6cGNpX2lvbWFwX3N0YXJ0LCBaUENJX0lPTUFQX0VOVFJJRVMpO1xuYXJjaC9zMzkwL3BjaS9wY2kuYy0xMDc5LVx0aWYgKCF6cGNpX2lvbWFwX3N0YXJ0KVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpX2J1cy5jPTMxND1zdGF0aWMgc3RydWN0IHpwY2lfYnVzICp6cGNpX2J1c19hbGxvYyhpbnQgdG9wbywgYm9vbCB0b3BvX2lzX3RpZClcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaV9idXMuYy0zMTctXG5hcmNoL3MzOTAvcGNpL3BjaV9idXMuYzozMTg6XHR6YnVzID0ga3phbGxvY19vYmooKnpidXMpO1xuYXJjaC9zMzkwL3BjaS9wY2lfYnVzLmMtMzE5LVx0aWYgKCF6YnVzKVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jPTU1Mj1zdGF0aWMgaW50IF9faW5pdCB6cGNpX2RpcmVjdGVkX2lycV9pbml0KHZvaWQpXG4tLVxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmMtNTY1LVxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmM6NTY2Olx0enBjaV9pYnYgPSBremFsbG9jX29ianMoKnpwY2lfaWJ2LCBudW1fcG9zc2libGVfY3B1cygpKTtcbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jLTU2Ny1cdGlmICghenBjaV9pYnYpXG4tLVxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmM9NTkwPXN0YXRpYyBpbnQgX19pbml0IHpwY2lfZmxvYXRpbmdfaXJxX2luaXQodm9pZClcbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jLTU5MS17XG5hcmNoL3MzOTAvcGNpL3BjaV9pcnEuYzo1OTI6XHR6cGNpX2lidiA9IGt6YWxsb2Nfb2JqcygqenBjaV9pYnYsIFpQQ0lfTlJfREVWSUNFUyk7XG5hcmNoL3MzOTAvcGNpL3BjaV9pcnEuYy01OTMtXHRpZiAoIXpwY2lfaWJ2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTA2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIFJldmlldzogS1ZNIE1lbW9yeSBBbGxvY2F0aW9uIG9uIHMzOTAqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgYmFjayBpbnRvIHRoaXMgcGF0Y2guIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcsIHNvIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IHN0ZXAgdGhyb3VnaCBlYWNoIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgYWRkcmVzc2luZyBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHdpdGhpbiB0aGUgczM5MCBLVk0gY29kZS4gVGhpcyBpcyBjcml0aWNhbDsgZXZlbiBhIHNtYWxsIGxlYWsgb3IgbWlzdXNlIGNhbiBkZXN0YWJpbGl6ZSB0aGUgZW50aXJlIHN5c3RlbSwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuCgpUaGUgZmlyc3QgYmxvY2ssIGBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNgIHNwZWNpZmljYWxseSB0aGUgYGhhbmRsZV9zdGh5aWAgZnVuY3Rpb24sIGlzIHdoZXJlIHRoZSBpbml0aWFsIGNoYW5nZSBjb21lcyBpbjsgYGdldF96ZXJvZWRfcGFnZWAgaXMgYmVpbmcgcmVwbGFjZWQgYnkgYGt6YWxsb2NgIGZvciBgc2N0bnNgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjb252ZXJzaW9uOiBga3phbGxvY2AgY29tYmluZXMgdGhlIGBnZXRfemVyb2VkX3BhZ2VgIHdpdGggYSBgbWVtc2V0KDApYCB0byBpbml0aWFsaXplIHRoZSBtZW1vcnkuIENvcnJlc3BvbmRpbmdseSwgYGZyZWVfcGFnZWAgaXMgcmVwbGFjZWQgd2l0aCBga2ZyZWVgLiBUaGF0JiMzOTtzIGdvb2Q7IGl0JiMzOTtzIGNsZWFuZXIgYW5kIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LiBUaGUgc2FtZSBwYXR0ZXJuIGhvbGRzIGZvciBgYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jYCwgYGt2bV9zMzkwX2dpYl9kZXN0cm95YCBhbmQgYGt2bV9zMzkwX2dpYl9pbml0YCwgYW5kIGFsc28gYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgIGFuZCBgaGFuZGxlX3N0c2lgLCB3aXRoIHRoZSBzYW1lIGNoYW5nZXMgYmV0d2VlbiBgZ2V0X3plcm9lZF9wYWdlYCBhbmQgYGt6YWxsb2NgIGFuZCB0aGUgYXBwcm9wcmlhdGUgYGZyZWVfcGFnZWAgY2FsbHMgYmVpbmcgY2hhbmdlZCB0byBga2ZyZWVgLgoKVGhlIGZvdXJ0aCBjaHVuaywgaW4gYGFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNgLCBpcyBzbGlnaHRseSBtb3JlIGludm9sdmVkLiBIZXJlLCB3aXRoaW4gYGt2bV9hcmNoX2luaXRfdm1gLCBga3ZtX2FyY2hfZGVzdHJveV92bWAsIGBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWFgLCBhbmQgYGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hYCwgd2Ugc2VlIHRoZSBzYW1lIHRyYW5zaXRpb24gZnJvbSBgZ2V0X3plcm9lZF9wYWdlYCB0byBga3phbGxvY2AsIGJ1dCB3aXRoIHRoZSBhZGRpdGlvbiBvZiBgKmAgZm9yIHRoZSBga3ZtLSZndDthcmNoLnNpZV9wYWdlMmAgcG9pbnRlci4gSXQgbG9va3MgbGlrZSBpdCBjb3VsZCBiZSBjYWxsaW5nIGEgaGVscGVyLiBBbmQgZm9yIHRoZSBvdGhlciBjYXNlIGluIHRoaXMgZmlsZSwgd2UgaGF2ZSB0aGUgc2FtZSBzaXR1YXRpb24gYXMgYmVmb3JlIHdpdGggdGhlIHJlcGxhY2VtZW50IG9mIGBmcmVlX3BhZ2VgIHdpdGggYGtmcmVlYCB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgcGh5c2ljYWwgbWVtb3J5LgoKVGhlc2UgYXJlIGFsbCBpbXBvcnRhbnQgZnVuY3Rpb25zOyBhbnkgbWVtb3J5LXJlbGF0ZWQgaXNzdWVzIGluIGBrdm1fYXJjaF9pbml0X3ZtYCBvciBga3ZtX2FyY2hfZGVzdHJveV92bWAgYXJlIGxpa2VseSB0byBjYXVzZSBzb21lIGJpZyBwcm9ibGVtcyB3aGVuIGxhdW5jaGluZyBvciBzaHV0dGluZyBkb3duIFZNcy4gSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIGhvdyB0aGVzZSBmdW5jdGlvbiBjYWxscyBhcmUgc3RydWN0dXJlZC4gVGhpcyBzZWVtcyBsaWtlIGEgcHJldHR5IHN0YW5kYXJkIGFuZCBzZW5zaWJsZSBjaGFuZ2UuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gd2hlcmUgc3VidGxlIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyBjYW4gY3JlZXAgaW4sIHNvIHRoaXMga2luZCBvZiBtb2Rlcm5pemF0aW9uIGlzIHVzdWFsbHkgYSBnb29kIHRoaW5nLiBUaGUgdXNlIG9mIGBremFsbG9jYCBpcyBnZW5lcmFsbHkgcHJlZmVycmVkIG5vdyBiZWNhdXNlIGl0IGlzIGNsZWFuZXIsIGhhbmRsZXMgdGhlIHplcm9pbmcgaW50ZXJuYWxseSwgYW5kIGlzIG1vcmUgY29uc2lzdGVudC4gSSBhc3N1bWUgdGhlcmUgaXNuJiMzOTt0IGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZSBoZXJlLgoKQmVmb3JlIGdpdmluZyBpdCBhIHN0YW1wIG9mIGFwcHJvdmFsLCBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIHZlcmlmeSB0aGUgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBzb21lIHVuZXhwZWN0ZWQgZGVwZW5kZW5jeSBvciBjaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBLY29uZmlnIGZvciBhbnkgc3VidGxlIGVmZmVjdHMuCgpJJiMzOTtsbCBzZWFyY2ggZm9yICYjMzk7S1ZNJiMzOTsgd2l0aGluIHRoZSBgYXJjaC9zMzkwYCBkaXJlY3RvcnkganVzdCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgZGVwZW5kZW5jaWVzIG9yIG90aGVyIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyB0byBnZXQgYSBmdWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzg3MiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuYXJjaC9zMzkwL0tidWlsZD0zPW9iai15XHRcdFx0XHQmIzQzOz0gbW0vXG5hcmNoL3MzOTAvS2J1aWxkOjQ6b2JqLSQoQ09ORklHX0tWTSlcdFx0JiM0Mzs9IGt2bS9cbmFyY2gvczM5MC9LYnVpbGQtNS1vYmoteVx0XHRcdFx0JiM0Mzs9IGNyeXB0by9cbi0tXG5hcmNoL3MzOTAvS2NvbmZpZz04NDY9Y29uZmlnIFZGSU9fQVBcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy04NDgtXHRwcm9tcHQgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBBUCBkZXZpY2VzXCYjMzQ7XG5hcmNoL3MzOTAvS2NvbmZpZzo4NDk6XHRkZXBlbmRzIG9uIEtWTVxuYXJjaC9zMzkwL0tjb25maWctODUwLVx0ZGVwZW5kcyBvbiBWRklPXG4tLVxuYXJjaC9zMzkwL0tjb25maWc9OTkwPWNvbmZpZyBTMzkwX0dVRVNUXG4tLVxuYXJjaC9zMzkwL0tjb25maWctMTAwMC1cdCAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHJ1biB0aGUga2VybmVsIGFzIGEgZ3Vlc3QgdW5kZXJcbmFyY2gvczM5MC9LY29uZmlnOjEwMDE6XHQgIHRoZSBLVk0gaHlwZXJ2aXNvci5cbmFyY2gvczM5MC9LY29uZmlnLTEwMDItXG4tLVxuYXJjaC9zMzkwL2Jvb3QvaXBsX3Bhcm0uYz0yNDk9dm9pZCBwYXJzZV9ib290X2NvbW1hbmRfbGluZSh2b2lkKVxuLS1cbmFyY2gvczM5MC9ib290L2lwbF9wYXJtLmMtMzAyLVxuYXJjaC9zMzkwL2Jvb3QvaXBsX3Bhcm0uYzozMDM6I2lmIElTX0VOQUJMRUQoQ09ORklHX0tWTSlcbmFyY2gvczM5MC9ib290L2lwbF9wYXJtLmMtMzA0LVx0XHRpZiAoIXN0cmNtcChwYXJhbSwgXCYjMzQ7cHJvdF92aXJ0XCYjMzQ7KSkge1xuLS1cbmFyY2gvczM5MC9ib290L3N0YXJ0dXAuYz01Mj1zdGF0aWMgdm9pZCBkZXRlY3RfbWFjaGluZV90eXBlKHZvaWQpXG4tLVxuYXJjaC9zMzkwL2Jvb3Qvc3RhcnR1cC5jLTY1LVx0aWYgKCFtZW1jbXAodm1tcy1cdTAwM2V2bVswXS5jcGksIFwmIzM0O1xceGQyXFx4ZTVcXHhkNFwmIzM0OywgMykpXG5hcmNoL3MzOTAvYm9vdC9zdGFydHVwLmM6NjY6XHRcdHNldF9tYWNoaW5lX2ZlYXR1cmUoTUZFQVRVUkVfS1ZNKTtcbmFyY2gvczM5MC9ib290L3N0YXJ0dXAuYy02Ny1cdGVsc2UgaWYgKCFtZW1jbXAodm1tcy1cdTAwM2V2bVswXS5jcGksIFwmIzM0O1xceGE5XFx4NjFcXHhlNVxceGQ0XCYjMzQ7LCA0KSlcbi0tXG5hcmNoL3MzOTAvYm9vdC91di5jPTE1PXZvaWQgdXZfcXVlcnlfaW5mbyh2b2lkKVxuLS1cbmFyY2gvczM5MC9ib290L3V2LmMtMjgtXG5hcmNoL3MzOTAvYm9vdC91di5jOjI5Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0tWTSkpIHtcbmFyY2gvczM5MC9ib290L3V2LmMtMzAtXHRcdG1lbWNweSh1dl9pbmZvLmluc3RfY2FsbHNfbGlzdCwgdXZjYi5pbnN0X2NhbGxzX2xpc3QsIHNpemVvZih1dl9pbmZvLmluc3RfY2FsbHNfbGlzdCkpO1xuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz02Nz1DT05GSUdfUzM5MF9IWVBGU19GUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6Njg6Q09ORklHX0tWTT1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6Njk6Q09ORklHX0tWTV9TMzkwX1VDT05UUk9MPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy03MC1DT05GSUdfUzM5MF9VTldJTkRfU0VMRlRFU1Q9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz02NT1DT05GSUdfUzM5MF9IWVBGU19GUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6NjY6Q09ORklHX0tWTT1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctNjctQ09ORklHX1MzOTBfVU5XSU5EX1NFTEZURVNUPW1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmg9NTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGFyY2hfaW5fcmN1X2Vxcyh2b2lkKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oLTU1LXtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaDo1NjpcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk0pKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oLTU3LVx0XHRyZXR1cm4gY3VycmVudC1cdTAwM2VmbGFncyBcdTAwMjYgUEZfVkNQVTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZ21hcF9oZWxwZXJzLmgtMi0vKlxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2dtYXBfaGVscGVycy5oOjM6ICogIEhlbHBlciBmdW5jdGlvbnMgZm9yIEtWTSBndWVzdCBhZGRyZXNzIHNwYWNlIG1hcHBpbmcgY29kZVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2dtYXBfaGVscGVycy5oLTQtICpcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0yLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzojaWZuZGVmIEFTTV9LVk1fSE9TVF9IXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo0OiNkZWZpbmUgQVNNX0tWTV9IT1NUX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTUtXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNjQtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo2NTojZW5kaWYgLyogQVNNX0tWTV9IT1NUX0ggKi9cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTEwLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDoxMTojaWZuZGVmIEFTTV9LVk1fSE9TVF9TMzkwX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MTI6I2RlZmluZSBBU01fS1ZNX0hPU1RfUzM5MF9IXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTEzLVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMjktXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMwOiNkZWZpbmUgS1ZNX0hBVkVfTU1VX1JXTE9DS1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMTojZGVmaW5lIEtWTV9NQVhfVkNQVVMgMjU1XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMyLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMzojZGVmaW5lIEtWTV9JTlRFUk5BTF9NRU1fU0xPVFMgMVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zNC1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzU6I2RlZmluZSBLVk1fUzM5MF9NQU5BR0VTX1MzOTBfR1VFU1QgMVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zNi1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTQxLSAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo0MjojZGVmaW5lIEtWTV9OUl9JUlFDSElQUyAxXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjQzOiNkZWZpbmUgS1ZNX0lSUUNISVBfTlVNX1BJTlMgMVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo0NDojZGVmaW5lIEtWTV9IQUxUX1BPTExfTlNfREVGQVVMVCA1MDAwMFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC00NS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNDYtLyogczM5MC1zcGVjaWZpYyB2Y3B1LVx1MDAzZXJlcXVlc3RzIGJpdCBtZW1iZXJzICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjQ3OiNkZWZpbmUgS1ZNX1JFUV9FTkFCTEVfSUJTXHRLVk1fQVJDSF9SRVEoMClcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NDg6I2RlZmluZSBLVk1fUkVRX0RJU0FCTEVfSUJTXHRLVk1fQVJDSF9SRVEoMSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NDk6I2RlZmluZSBLVk1fUkVRX0lDUFRfT1BFUkVYQ1x0S1ZNX0FSQ0hfUkVRKDIpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjUwOiNkZWZpbmUgS1ZNX1JFUV9TVEFSVF9NSUdSQVRJT04gS1ZNX0FSQ0hfUkVRKDMpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjUxOiNkZWZpbmUgS1ZNX1JFUV9TVE9QX01JR1JBVElPTiAgS1ZNX0FSQ0hfUkVRKDQpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjUyOiNkZWZpbmUgS1ZNX1JFUV9WU0lFX1JFU1RBUlRcdEtWTV9BUkNIX1JFUSg1KVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo1MzojZGVmaW5lIEtWTV9SRVFfUkVGUkVTSF9HVUVTVF9QUkVGSVhcdFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjU0Olx0S1ZNX0FSQ0hfUkVRX0ZMQUdTKDYsIEtWTV9SRVFVRVNUX1dBSVQgfCBLVk1fUkVRVUVTVF9OT19XQUtFVVApXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTU1LVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9MTU2PWVudW0gaXJxX3R5cGVzIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTE5MC0gKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MTkxOiNkZWZpbmUgS1ZNX1MzOTBfTUFYX1ZJUlRJT19JUlFTIDg3MzgxXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTE5Mi1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTI2OD1zdHJ1Y3Qga3ZtX3MzOTBfbG9jYWxfaW50ZXJydXB0IHtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMjY5LVx0c3BpbmxvY2tfdCBsb2NrO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDoyNzA6XHRERUNMQVJFX0JJVE1BUChzaWdwX2VtZXJnX3BlbmRpbmcsIEtWTV9NQVhfVkNQVVMpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0yNzEtXHRzdHJ1Y3Qga3ZtX3MzOTBfaXJxX3BheWxvYWQgaXJxO1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMjk0LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDoyOTU6I2RlZmluZSBLVk1fUzM5MF9BSVNfTU9ERV9BTEwgICAgMFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDoyOTY6I2RlZmluZSBLVk1fUzM5MF9BSVNfTU9ERV9TSU5HTEUgMVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0yOTctXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaD0zMTk9c3RydWN0IGt2bV9od19icF9pbmZvX2FyY2gge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzI1LSAqIE9ubHkgdGhlIHVwcGVyIDE2IGJpdHMgb2Yga3ZtX2d1ZXN0X2RlYnVnLVx1MDAzZWNvbnRyb2wgYXJlIGFyY2ggc3BlY2lmaWMuXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMyNjogKiBGdXJ0aGVyIEtWTV9HVUVTVERCRyBmbGFncyB3aGljaCBhbiBiZSB1c2VkIGZyb20gdXNlcnNwYWNlIGNhbiBiZSBmb3VuZCBpblxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zMjctICogYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzI4LSAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMjk6I2RlZmluZSBLVk1fR1VFU1REQkdfRVhJVF9QRU5ESU5HIDB4MTAwMDAwMDBcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzMwLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zMzEtI2RlZmluZSBndWVzdGRiZ19lbmFibGVkKHZjcHUpIFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMzMjpcdFx0KHZjcHUtXHUwMDNlZ3Vlc3RfZGVidWcgXHUwMDI2IEtWTV9HVUVTVERCR19FTkFCTEUpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMzMy0jZGVmaW5lIGd1ZXN0ZGJnX3NzdGVwX2VuYWJsZWQodmNwdSkgXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzM0Olx0XHQodmNwdS1cdTAwM2VndWVzdF9kZWJ1ZyBcdTAwMjYgS1ZNX0dVRVNUREJHX1NJTkdMRVNURVApXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMzNS0jZGVmaW5lIGd1ZXN0ZGJnX2h3X2JwX2VuYWJsZWQodmNwdSkgXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzM2Olx0XHQodmNwdS1cdTAwM2VndWVzdF9kZWJ1ZyBcdTAwMjYgS1ZNX0dVRVNUREJHX1VTRV9IV19CUClcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzM3LSNkZWZpbmUgZ3Vlc3RkYmdfZXhpdF9wZW5kaW5nKHZjcHUpIChndWVzdGRiZ19lbmFibGVkKHZjcHUpIFx1MDAyNlx1MDAyNiBcXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMzg6XHRcdCh2Y3B1LVx1MDAzZWd1ZXN0X2RlYnVnIFx1MDAyNiBLVk1fR1VFU1REQkdfRVhJVF9QRU5ESU5HKSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzM5LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozNDA6I2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozNDE6XHRcdChLVk1fR1VFU1REQkdfRU5BQkxFIHwgS1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjM0MjpcdFx0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IEtWTV9HVUVTVERCR19FWElUX1BFTkRJTkcpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTM0My1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTU3Nj1zdHJ1Y3Qga3ZtX3MzOTBfdnNpZSB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC01ODAtXHRpbnQgbmV4dDtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NTgxOlx0c3RydWN0IHZzaWVfcGFnZSAqcGFnZXNbS1ZNX01BWF9WQ1BVU107XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTU4Mi19O1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NTkwPXN0cnVjdCBrdm1fczM5MF9naXNhX2ludGVycnVwdCB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC01OTQtXHR1NjQgZXhwaXJlcztcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NTk1Olx0REVDTEFSRV9CSVRNQVAoa2lja2VkX21hc2ssIEtWTV9NQVhfVkNQVVMpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC01OTYtfTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTYxMz1zdHJ1Y3Qga3ZtX2FyY2gge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjQ1LVx0Lyogc3Vic2V0IG9mIGF2YWlsYWJsZSBjcHUgZmVhdHVyZXMgZW5hYmxlZCBieSB1c2VyIHNwYWNlICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjY0NjpcdERFQ0xBUkVfQklUTUFQKGNwdV9mZWF0LCBLVk1fUzM5MF9WTV9DUFVfRkVBVF9OUl9CSVRTKTtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjQ3LVx0LyogaW5kZXhlZCBieSB2Y3B1X2lkeCAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo2NDg6XHRERUNMQVJFX0JJVE1BUChpZGxlX21hc2ssIEtWTV9NQVhfVkNQVVMpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02NDktXHRzdHJ1Y3Qga3ZtX3MzOTBfZ2lzYV9pbnRlcnJ1cHQgZ2lzYV9pbnQ7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02NTUtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjY1NjojZGVmaW5lIEtWTV9IVkFfRVJSX0JBRFx0XHQoLTFVTClcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NjU3OiNkZWZpbmUgS1ZNX0hWQV9FUlJfUk9fQkFEXHQoLTJVTClcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjU4LVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NzE3PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fYXJjaF92Y3B1X3VuYmxvY2tpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC03MTgtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjcxOTojZGVmaW5lIF9fS1ZNX0hBVkVfQVJDSF9WTV9GUkVFXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTcyMC12b2lkIGt2bV9hcmNoX2ZyZWVfdm0oc3RydWN0IGt2bSAqa3ZtKTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTcyNz1leHRlcm4gc3RydWN0IHpwY2lfa3ZtX2hvb2sgenBjaV9rdm1faG9vaztcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNzI4LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo3Mjk6I2VuZGlmIC8qIEFTTV9LVk1fSE9TVF9TMzkwX0ggKi9cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTItXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oOjM6I2lmbmRlZiBfQVNNX0tWTV9IT1NUX1MzOTBfVFlQRVNfSFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDo0OiNkZWZpbmUgX0FTTV9LVk1fSE9TVF9TMzkwX1RZUEVTX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtNS1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTgtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oOjk6I2RlZmluZSBLVk1fUzM5MF9CU0NBX0NQVV9TTE9UUyA2NFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDoxMDojZGVmaW5lIEtWTV9TMzkwX0VTQ0FfQ1BVX1NMT1RTIDI0OFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0xMS1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oPTcyPXN0cnVjdCBic2NhX2Jsb2NrIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTc3LVx0X191OFx0cmVzZXJ2ZWQyWzRdO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDo3ODpcdHN0cnVjdCBic2NhX2VudHJ5IGNwdVtLVk1fUzM5MF9CU0NBX0NQVV9TTE9UU107XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTc5LX07XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaD04MT1zdHJ1Y3QgZXNjYV9ibG9jayB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC04Ny1cdF9fdTY0XHRyZXNlcnZlZDNbMjBdO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDo4ODpcdHN0cnVjdCBlc2NhX2VudHJ5IGNwdVtLVk1fUzM5MF9FU0NBX0NQVV9TTE9UU107XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTg5LX07XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaD0xMzk9c3RydWN0IGt2bV9zMzkwX3NpZV9ibG9jayB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0yNTgtXHRfX3U4XHRyZXNlcnZlZGIwWzhdO1x0XHQvKiAweDAwYjAgKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmg6MjU5OiNkZWZpbmUgSFBJRF9LVk1cdDB4NFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0yNjAtI2RlZmluZSBIUElEX1ZTSUVcdDB4NVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmg9MzM5PXN0cnVjdCBzaWVfcGFnZSB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0zNDgtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oOjM0OTojZW5kaWYgLyogX0FTTV9LVk1fSE9TVF9TMzkwX1RZUEVTX0ggKi9cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC0yLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3R5cGVzLmg6MzojaWZuZGVmIEFTTV9LVk1fSE9TVF9UWVBFU19IXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaDo0OiNkZWZpbmUgQVNNX0tWTV9IT1NUX1RZUEVTX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oLTUtXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3R5cGVzLmgtNy1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjg6I2VuZGlmIC8qIEFTTV9LVk1fSE9TVF9UWVBFU19IICovXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtOS0vKlxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6MTA6ICogSHlwZXJjYWxscyBmb3IgS1ZNIG9uIHMzOTAuIFRoZSBjYWxsaW5nIGNvbnZlbnRpb24gaXMgc2ltaWxhciB0byB0aGVcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTExLSAqIHMzOTAgQUJJLCBzbyB3ZSB1c2UgUjItUjYgZm9yIHBhcmFtZXRlcnMgMS01LiBJbiBhZGRpdGlvbiB3ZSB1c2UgUjFcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xNS0gKiB0aGUgaW5zdHJ1Y3Rpb24gZW5jb2RlZCBudW1iZXIsIGJ1dCBzcGVjaWZ5IHRoZSBudW1iZXIgaW4gUjEgYW5kXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaDoxNjogKiB1c2UgMHg1MDAgYXMgS1ZNIGh5cGVyY2FsbFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMTctICpcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0yMC0gKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjIxOiNpZm5kZWYgX19TMzkwX0tWTV9QQVJBX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjIyOiNkZWZpbmUgX19TMzkwX0tWTV9QQVJBX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTIzLVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTY5LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6NzA6I2RlZmluZSBHRU5FUkFURV9LVk1fSFlQRVJDQUxMX0ZVTkMoYXJncylcdFx0XHRcdFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC03MS1zdGF0aWMgaW5saW5lXHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg9ODc9bG9uZyBrdm1faHlwZXJjYWxsIyNhcmdzKHVuc2lnbmVkIGxvbmcgbnIgSFlQRVJDQUxMX1BBUk1fIyNhcmdzKVx0XFxcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC05Mi1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjkzOkdFTkVSQVRFX0tWTV9IWVBFUkNBTExfRlVOQygwKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTQ6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDEpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaDo5NTpHRU5FUkFURV9LVk1fSFlQRVJDQUxMX0ZVTkMoMilcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjk2OkdFTkVSQVRFX0tWTV9IWVBFUkNBTExfRlVOQygzKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTc6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDQpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaDo5ODpHRU5FUkFURV9LVk1fSFlQRVJDQUxMX0ZVTkMoNSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjk5OkdFTkVSQVRFX0tWTV9IWVBFUkNBTExfRlVOQyg2KVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMTAwLVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oPTExOD1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX2NoZWNrX2FuZF9jbGVhcl9ndWVzdF9wYXVzZWQodm9pZClcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xMjItXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaDoxMjM6I2VuZGlmIC8qIF9fUzM5MF9LVk1fUEFSQV9IICovXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21hY2hpbmUuaC0xOC0jZGVmaW5lIE1GRUFUVVJFX1ZNXHRcdDdcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tYWNoaW5lLmg6MTk6I2RlZmluZSBNRkVBVFVSRV9LVk1cdFx0OFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21hY2hpbmUuaC0yMC0jZGVmaW5lIE1GRUFUVVJFX0xQQVJcdFx0OVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tYWNoaW5lLmg9OTU9REVGSU5FX01BQ0hJTkVfSEFTX0ZFQVRVUkUodm0sIE1GRUFUVVJFX1ZNKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21hY2hpbmUuaDo5NjpERUZJTkVfTUFDSElORV9IQVNfRkVBVFVSRShrdm0sIE1GRUFUVVJFX0tWTSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tYWNoaW5lLmgtOTctREVGSU5FX01BQ0hJTkVfSEFTX0ZFQVRVUkUobHBhciwgTUZFQVRVUkVfTFBBUilcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaD0yMD1zdGF0aWMgaW5saW5lIGludCBpbml0X25ld19jb250ZXh0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tbXVfY29udGV4dC5oLTMxLVx0bW0tXHUwMDNlY29udGV4dC5mbHVzaF9tbSA9IDA7XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaDozMjojaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgtMzMtXHRtbS1cdTAwM2Vjb250ZXh0LmFsbG93X2Nvd19zaGFyaW5nID0gMTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTU0OT1zdGF0aWMgaW5saW5lIGludCBtbV9pc19wcm90ZWN0ZWQoc3RydWN0IG1tX3N0cnVjdCAqbW0pXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTU1MC17XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjU1MTojaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC01NTItXHRpZiAodW5saWtlbHkoYXRvbWljX3JlYWQoXHUwMDI2bW0tXHUwMDNlY29udGV4dC5wcm90ZWN0ZWRfY291bnQpKSlcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTU5ND1zdGF0aWMgaW5saW5lIGludCBtbV9mb3JiaWRzX3plcm9wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC01OTUte1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDo1OTY6I2lmIElTX0VOQUJMRUQoQ09ORklHX0tWTSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTk3LVx0aWYgKCFtbS1cdTAwM2Vjb250ZXh0LmFsbG93X2Nvd19zaGFyaW5nKVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oPTUyPXZvaWQgYXJjaF9zZXR1cF9uZXdfZXhlYyh2b2lkKTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaC03MC0jZGVmaW5lIFRJRl9HVUFSREVEX1NUT1JBR0VcdDE3XHQvKiBsb2FkIGd1YXJkZWQgc3RvcmFnZSBjb250cm9sIGJsb2NrICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaDo3MTojZGVmaW5lIFRJRl9JU09MQVRFX0JQX0dVRVNUXHQxOFx0LyogUnVuIEtWTSBndWVzdHMgd2l0aCBpc29sYXRlZCBCUCAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgtNzItI2RlZmluZSBUSUZfUEVSX1RSQVBcdFx0MTlcdC8qIE5lZWQgdG8gaGFuZGxlIFBFUiB0cmFwIG9uIGV4aXQgdG8gdXNlcm1vZGUgKi9cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyOiNpZm5kZWYgX19MSU5VWF9LVk1fUzM5MF9IXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOiNkZWZpbmUgX19MSU5VWF9LVk1fUzM5MF9IXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00LS8qXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1OiAqIEtWTSBzMzkwIHNwZWNpZmljIHN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC02LSAqXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTMtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNDojZGVmaW5lIF9fS1ZNX1MzOTBcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTE1LVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MTY9c3RydWN0IGt2bV9zMzkwX3NrZXlzIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0yMy1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI0OiNkZWZpbmUgS1ZNX1MzOTBfQ01NQV9QRUVLICgxIFx1MDAzY1x1MDAzYyAwKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMjUtXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzItICogQGNvdW50OiBTaXplIG9mIHRoZSByZXN1bHQgYnVmZmVyLlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM6ICogQGZsYWdzOiBDb250cm9sIG9wZXJhdGlvbiBtb2RlIHZpYSBLVk1fUzM5MF9DTU1BXyogZmxhZ3NcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM0OiAqIEByZW1haW5pbmc6IFVzZWQgd2l0aCBLVk1fUzM5MF9HRVRfQ01NQV9CSVRTLiBJbmRpY2F0ZXMgaG93IG1hbnkgZGlydHlcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM1LSAqICAgICAgICAgICAgIHBhZ2VzIGFyZSBzdGlsbCByZW1haW5pbmcuXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNjogKiBAbWFzazogVXNlZCB3aXRoIEtWTV9TMzkwX1NFVF9DTU1BX0JJVFMuIEJpdG1hcCBvZiBiaXRzIHRvIGFjdHVhbGx5IHNldFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzctICogICAgICAgIGluIHRoZSBQR1NURS5cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zOS0gKlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDA6ICogVXNlZCBpbiBLVk1fUzM5MF97RyxTfUVUX0NNTUFfQklUUyBpb2N0bHMuXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MS0gKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTQyPXN0cnVjdCBrdm1fczM5MF9jbW1hX2xvZyB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNTItXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1MzojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX1BPUiAgICAgICAxXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1NDojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX0NMRUFSICAgICAyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1NTojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX1NVQlNZU1RFTSA0XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1NjojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX0NQVV9JTklUICA4XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1NzojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX0lQTCAgICAgICAxNlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNTgtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1OTovKiBmb3IgS1ZNX1MzOTBfTUVNX09QICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC02MC1zdHJ1Y3Qga3ZtX3MzOTBfbWVtX29wIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC03OC0vKiB0eXBlcyBmb3Iga3ZtX3MzOTBfbWVtX29wLVx1MDAzZW9wICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo3OTojZGVmaW5lIEtWTV9TMzkwX01FTU9QX0xPR0lDQUxfUkVBRFx0MFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6ODA6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9MT0dJQ0FMX1dSSVRFXHQxXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo4MTojZGVmaW5lIEtWTV9TMzkwX01FTU9QX1NJREFfUkVBRFx0MlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6ODI6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9TSURBX1dSSVRFXHQzXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo4MzojZGVmaW5lIEtWTV9TMzkwX01FTU9QX0FCU09MVVRFX1JFQURcdDRcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjg0OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfQUJTT0xVVEVfV1JJVEVcdDVcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjg1OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfQUJTT0xVVEVfQ01QWENIR1x0NlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtODYtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC04Ny0vKiBmbGFncyBmb3Iga3ZtX3MzOTBfbWVtX29wLVx1MDAzZWZsYWdzICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo4ODojZGVmaW5lIEtWTV9TMzkwX01FTU9QX0ZfQ0hFQ0tfT05MWVx0XHQoMVVMTCBcdTAwM2NcdTAwM2MgMClcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjg5OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfRl9JTkpFQ1RfRVhDRVBUSU9OXHQoMVVMTCBcdTAwM2NcdTAwM2MgMSlcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjkwOiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfRl9TS0VZX1BST1RFQ1RJT05cdCgxVUxMIFx1MDAzY1x1MDAzYyAyKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtOTEtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo5MjovKiBmbGFncyBzcGVjaWZ5aW5nIGV4dGVuc2lvbiBzdXBwb3J0IHZpYSBLVk1fQ0FQX1MzOTBfTUVNX09QX0VYVEVOU0lPTiAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6OTM6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9FWFRFTlNJT05fQ0FQX0JBU0VcdCgxIFx1MDAzY1x1MDAzYyAwKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6OTQ6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9FWFRFTlNJT05fQ0FQX0NNUFhDSEdcdCgxIFx1MDAzY1x1MDAzYyAxKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtOTUtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD05Nj1zdHJ1Y3Qga3ZtX3MzOTBfcHN3IHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xMDEtLyogdmFsaWQgdmFsdWVzIGZvciB0eXBlIGluIGt2bV9zMzkwX2ludGVycnVwdCAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTAyOiNkZWZpbmUgS1ZNX1MzOTBfU0lHUF9TVE9QXHRcdDB4ZmZmZTAwMDB1XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMDM6I2RlZmluZSBLVk1fUzM5MF9QUk9HUkFNX0lOVFx0XHQweGZmZmUwMDAxdVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA0OiNkZWZpbmUgS1ZNX1MzOTBfU0lHUF9TRVRfUFJFRklYXHQweGZmZmUwMDAydVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA1OiNkZWZpbmUgS1ZNX1MzOTBfUkVTVEFSVFx0XHQweGZmZmUwMDAzdVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA2OiNkZWZpbmUgS1ZNX1MzOTBfSU5UX1BGQVVMVF9JTklUXHQweGZmZmUwMDA0dVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA3OiNkZWZpbmUgS1ZNX1MzOTBfSU5UX1BGQVVMVF9ET05FXHQweGZmZmUwMDA1dVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA4OiNkZWZpbmUgS1ZNX1MzOTBfTUNIS1x0XHRcdDB4ZmZmZTEwMDB1XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMDk6I2RlZmluZSBLVk1fUzM5MF9JTlRfQ0xPQ0tfQ09NUFx0XHQweGZmZmYxMDA0dVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTEwOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0NQVV9USU1FUlx0XHQweGZmZmYxMDA1dVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTExOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX1ZJUlRJT1x0XHQweGZmZmYyNjAzdVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTEyOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX1NFUlZJQ0VcdFx0MHhmZmZmMjQwMXVcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjExMzojZGVmaW5lIEtWTV9TMzkwX0lOVF9FTUVSR0VOQ1lcdFx0MHhmZmZmMTIwMXVcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjExNDojZGVmaW5lIEtWTV9TMzkwX0lOVF9FWFRFUk5BTF9DQUxMXHQweGZmZmYxMjAydVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTE1LS8qIEFueXRoaW5nIGJlbG93IDB4ZmZmZTAwMDB1IGlzIHRha2VuIGJ5IElOVF9JTyAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTE2OiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0lPKGFpLGNzc2lkLHNzaWQsc2NoaWQpICAgXFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTExNy1cdCgoKHNjaGlkKSkgfFx0XHRcdCAgICAgICBcXFxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTEyMC1cdCAoKGFpKSBcdTAwM2NcdTAwM2MgMjYpKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTIxOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0lPX01JTlx0XHQweDAwMDAwMDAwdVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTIyOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0lPX01BWFx0XHQweGZmZmRmZmZmdVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTIzOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0lPX0FJX01BU0tcdFx0MHgwNDAwMDAwMHVcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTEyNC1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD0xNDU9c3RydWN0IGt2bV9zMzkwX3BnbV9pbmZvIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xNTYtXHRfX3U4IG9wX2FjY2Vzc19pZDtcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjE1NzojZGVmaW5lIEtWTV9TMzkwX1BHTV9GTEFHU19JTENfVkFMSURcdDB4MDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjE1ODojZGVmaW5lIEtWTV9TMzkwX1BHTV9GTEFHU19JTENfMFx0MHgwMlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTU5OiNkZWZpbmUgS1ZNX1MzOTBfUEdNX0ZMQUdTX0lMQ18xXHQweDA0XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNjA6I2RlZmluZSBLVk1fUzM5MF9QR01fRkxBR1NfSUxDX01BU0tcdDB4MDZcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjE2MTojZGVmaW5lIEtWTV9TMzkwX1BHTV9GTEFHU19OT19SRVdJTkRcdDB4MDhcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTE2Mi1cdF9fdTggZmxhZ3M7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MTc0PXN0cnVjdCBrdm1fczM5MF9lbWVyZ19pbmZvIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xNzctXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNzg6I2RlZmluZSBLVk1fUzM5MF9TVE9QX0ZMQUdfU1RPUkVfU1RBVFVTXHQweDAxXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xNzktc3RydWN0IGt2bV9zMzkwX3N0b3BfaW5mbyB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MjMxPWVudW0gcHZfY21kX2RtcF9pZCB7XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyMzI6XHRLVk1fUFZfRFVNUF9JTklULFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjMzOlx0S1ZNX1BWX0RVTVBfQ09ORklHX1NUT1JfU1RBVEUsXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyMzQ6XHRLVk1fUFZfRFVNUF9DT01QTEVURSxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjIzNTpcdEtWTV9QVl9EVU1QX0NQVSxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTIzNi19O1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTI0Nj1lbnVtIHB2X2NtZF9pbmZvX2lkIHtcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI0NzpcdEtWTV9QVl9JTkZPX1ZNLFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjQ4Olx0S1ZNX1BWX0lORk9fRFVNUCxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTI0OS19O1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTI4MD1lbnVtIHB2X2NtZF9pZCB7XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODE6XHRLVk1fUFZfRU5BQkxFLFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjgyOlx0S1ZNX1BWX0RJU0FCTEUsXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODM6XHRLVk1fUFZfU0VUX1NFQ19QQVJNUyxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4NDpcdEtWTV9QVl9VTlBBQ0ssXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODU6XHRLVk1fUFZfVkVSSUZZLFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mjg2Olx0S1ZNX1BWX1BSRVBfUkVTRVQsXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODc6XHRLVk1fUFZfVU5TSEFSRV9BTEwsXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODg6XHRLVk1fUFZfSU5GTyxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4OTpcdEtWTV9QVl9EVU1QLFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjkwOlx0S1ZNX1BWX0FTWU5DX0NMRUFOVVBfUFJFUEFSRSxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI5MTpcdEtWTV9QVl9BU1lOQ19DTEVBTlVQX1BFUkZPUk0sXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0yOTItfTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD0zMDM9c3RydWN0IGt2bV9zMzkwX3pwY2lfb3Age1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTMwOC1cdHVuaW9uIHtcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjMwOTpcdFx0LyogZm9yIEtWTV9TMzkwX1pQQ0lPUF9SRUdfQUVOICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMTAtXHRcdHN0cnVjdCB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzIzLS8qIHR5cGVzIGZvciBrdm1fczM5MF96cGNpX29wLVx1MDAzZW9wICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMjQ6I2RlZmluZSBLVk1fUzM5MF9aUENJT1BfUkVHX0FFTiAgICAgICAgICAgICAgICAwXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMjU6I2RlZmluZSBLVk1fUzM5MF9aUENJT1BfREVSRUdfQUVOICAgICAgMVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzI2LVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzI3LS8qIGZsYWdzIGZvciBrdm1fczM5MF96cGNpX29wLVx1MDAzZXUucmVnX2Flbi5mbGFncyAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzI4OiNkZWZpbmUgS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTl9IT1NUICAgICgxIFx1MDAzY1x1MDAzYyAwKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzI5LVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzMwLS8qIERldmljZSBjb250cm9sIEFQSTogczM5MC1zcGVjaWZpYyBkZXZpY2VzICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzE6I2RlZmluZSBLVk1fREVWX0ZMSUNfR0VUX0FMTF9JUlFTXHQxXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzI6I2RlZmluZSBLVk1fREVWX0ZMSUNfRU5RVUVVRVx0XHQyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzM6I2RlZmluZSBLVk1fREVWX0ZMSUNfQ0xFQVJfSVJRU1x0XHQzXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzQ6I2RlZmluZSBLVk1fREVWX0ZMSUNfQVBGX0VOQUJMRVx0XHQ0XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzU6I2RlZmluZSBLVk1fREVWX0ZMSUNfQVBGX0RJU0FCTEVfV0FJVFx0NVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM2OiNkZWZpbmUgS1ZNX0RFVl9GTElDX0FEQVBURVJfUkVHSVNURVJcdDZcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjMzNzojZGVmaW5lIEtWTV9ERVZfRkxJQ19BREFQVEVSX01PRElGWVx0N1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM4OiNkZWZpbmUgS1ZNX0RFVl9GTElDX0NMRUFSX0lPX0lSUVx0OFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM5OiNkZWZpbmUgS1ZNX0RFVl9GTElDX0FJU01cdFx0OVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzQwOiNkZWZpbmUgS1ZNX0RFVl9GTElDX0FJUlFfSU5KRUNUXHQxMFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzQxOiNkZWZpbmUgS1ZNX0RFVl9GTElDX0FJU01fQUxMXHRcdDExXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zNDItLypcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM0My0gKiBXZSBjYW4gaGF2ZSB1cCB0byA0KjY0ayBwZW5kaW5nIHN1YmNoYW5uZWxzICYjNDM7IDggYWRhcHRlciBpbnRlcnJ1cHRzLFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzQ0OiAqIGFzIHdlbGwgYXMgdXAgIHRvIEFTWU5DX1BGX1BFUl9WQ1BVKktWTV9NQVhfVkNQVVMgcGZhdWx0IGRvbmUgaW50ZXJydXB0cy5cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM0NS0gKiBUaGVyZSBhcmUgYWxzbyBzY2xwIGFuZCBtYWNoaW5lIGNoZWNrcy4gVGhpcyBnaXZlcyB1c1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM0OC0gKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM0OTojZGVmaW5lIEtWTV9TMzkwX01BWF9GTE9BVF9JUlFTXHQyNjYyNTBcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM1MDojZGVmaW5lIEtWTV9TMzkwX0ZMSUNfTUFYX0JVRkZFUlx0MHgyMDAwMDAwXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zNTEtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD0zNTI9c3RydWN0IGt2bV9zMzkwX2lvX2FkYXB0ZXIge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM1OS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM2MDojZGVmaW5lIEtWTV9TMzkwX0FEQVBURVJfU1VQUFJFU1NJQkxFIDB4MDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM2MS1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD0zNjc9c3RydWN0IGt2bV9zMzkwX2Fpc19hbGwge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM3MS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM3MjojZGVmaW5lIEtWTV9TMzkwX0lPX0FEQVBURVJfTUFTSyAxXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNzM6I2RlZmluZSBLVk1fUzM5MF9JT19BREFQVEVSX01BUCAyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNzQ6I2RlZmluZSBLVk1fUzM5MF9JT19BREFQVEVSX1VOTUFQIDNcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM3NS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTM3Nj1zdHJ1Y3Qga3ZtX3MzOTBfaW9fYWRhcHRlcl9yZXEge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM4NC0vKiBrdm0gYXR0cl9ncm91cCAgb24gdm0gZmQgKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4NTojZGVmaW5lIEtWTV9TMzkwX1ZNX01FTV9DVFJMXHRcdDBcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4NjojZGVmaW5lIEtWTV9TMzkwX1ZNX1RPRFx0XHRcdDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4NzojZGVmaW5lIEtWTV9TMzkwX1ZNX0NSWVBUT1x0XHQyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozODg6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfTU9ERUxcdFx0M1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mzg5OiNkZWZpbmUgS1ZNX1MzOTBfVk1fTUlHUkFUSU9OXHRcdDRcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM5MDojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9UT1BPTE9HWVx0NVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzkxLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzkyLS8qIGt2bSBhdHRyaWJ1dGVzIGZvciBtZW1fY3RybCAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzkzOiNkZWZpbmUgS1ZNX1MzOTBfVk1fTUVNX0VOQUJMRV9DTU1BXHQwXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOTQ6I2RlZmluZSBLVk1fUzM5MF9WTV9NRU1fQ0xSX0NNTUFcdDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM5NTojZGVmaW5lIEtWTV9TMzkwX1ZNX01FTV9MSU1JVF9TSVpFXHQyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zOTYtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOTc6I2RlZmluZSBLVk1fUzM5MF9OT19NRU1fTElNSVRcdFx0VTY0X01BWFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzk4LVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mzk5Oi8qIGt2bSBhdHRyaWJ1dGVzIGZvciBLVk1fUzM5MF9WTV9UT0QgKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQwMDojZGVmaW5lIEtWTV9TMzkwX1ZNX1RPRF9MT1dcdFx0MFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDAxOiNkZWZpbmUgS1ZNX1MzOTBfVk1fVE9EX0hJR0hcdFx0MVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDAyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fVE9EX0VYVFx0XHQyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MDMtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD00MDQ9c3RydWN0IGt2bV9zMzkwX3ZtX3RvZF9jbG9jayB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDA4LVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDA5Oi8qIGt2bSBhdHRyaWJ1dGVzIGZvciBLVk1fUzM5MF9WTV9DUFVfTU9ERUwgKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQxMC0vKiBwcm9jZXNzb3IgcmVsYXRlZCBhdHRyaWJ1dGVzIGFyZSByL3cgKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQxMTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9QUk9DRVNTT1JcdDBcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQxMi1zdHJ1Y3Qga3ZtX3MzOTBfdm1fY3B1X3Byb2Nlc3NvciB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDE5LS8qIG1hY2hpbmUgcmVsYXRlZCBhdHRyaWJ1dGVzIGFyZSByL28gKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQyMDojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9NQUNISU5FXHRcdDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQyMS1zdHJ1Y3Qga3ZtX3MzOTBfdm1fY3B1X21hY2hpbmUge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQyOC1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQyOTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9QUk9DRVNTT1JfRkVBVFx0MlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDMwOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX01BQ0hJTkVfRkVBVFx0M1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDMxLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDMyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfTlJfQklUU1x0MTAyNFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDMzOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfRVNPUFx0MFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDM0OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0lFRjJcdDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzNTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUXzY0QlNDQU9cdDJcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzNjojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX1NJSUZcdDNcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzNzojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX0dQRVJFXHQ0XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0Mzg6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9HU0xTXHQ1XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0Mzk6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9JQlx0XHQ2XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NDA6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9DRUlcdDdcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQ0MTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX0lCU1x0OFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0tFWVx0OVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQzOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfQ01NQVx0MTBcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQ0NDojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX1BGTUZJXHQxMVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQ1OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0lHUElGXHQxMlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQ2OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfS1NTXHQxM1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQ3OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfQVNURkxFSUUyXHQxNFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDQ4LXN0cnVjdCBrdm1fczM5MF92bV9jcHVfZmVhdCB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDUxLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDUyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX1BST0NFU1NPUl9TVUJGVU5DXHQ0XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NTM6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfTUFDSElORV9TVUJGVU5DXHRcdDVcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQ1NC0vKiBmb3IgXCYjMzQ7dGVzdCBiaXRcJiMzNDsgaW5zdHJ1Y3Rpb25zIE1TQiAwIGJpdCBvcmRlcmluZywgZm9yIFwmIzM0O3F1ZXJ5XCYjMzQ7IHJhdyBibG9ja3MgKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTQ1NT1zdHJ1Y3Qga3ZtX3MzOTBfdm1fY3B1X3N1YmZ1bmMge1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTI0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRXhhbWluaW5nIEtjb25maWcgZm9yIHMzOTAgS1ZNIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBLVk0gaXMgY29uZmlndXJlZCBmb3IgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBHaXZlbiBteSBkZWVwIGtub3dsZWRnZSBvZiBrZXJuZWwgY29uZmlndXJhdGlvbiwgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgYXJjaC9zMzkwL2t2bS9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgYWxsIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZGVmaW5pdGlvbnMuIEl0JiMzOTtsbCBzaG93IG1lIHRoZSBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHNldHRpbmdzIHRoYXQgZ292ZXJuIEtWTSYjMzk7cyBiZWhhdmlvciBvbiB0aGF0IHNwZWNpZmljIHBsYXRmb3JtLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGNvbmZpZ3VyYXRpb24ga25vYnMgaXMgY3J1Y2lhbCBmb3IgYW55IGZ1cnRoZXIgd29yayBJIG5lZWQgdG8gZG8gb24gdGhpcyBhc3BlY3Qgb2YgdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIEtWTSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdHNvdXJjZSBcJiMzNDt2aXJ0L2t2bS9LY29uZmlnXCYjMzQ7XG4gICA2Olx0XG4gICA3Olx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuICAgODpcdFx0ZGVmX2Jvb2wgeVxuICAgOTpcdFx0cHJvbXB0IFwmIzM0O0tWTVwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1biBvdGhlclxuICAxMjpcdFx0ICBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZCBkaXNhYmxlZC5cbiAgMTY6XHRcbiAgMTc6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBLVk1cbiAgMjA6XHRcdGRlZl90cmlzdGF0ZSB5XG4gIDIxOlx0XHRwcm9tcHQgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuICAyMzpcdFx0c2VsZWN0IEtWTV9BU1lOQ19QRlxuICAyNDpcdFx0c2VsZWN0IEtWTV9BU1lOQ19QRl9TWU5DXG4gIDI1Olx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcbiAgMjc6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xuICAyODpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuICAyOTpcdFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcbiAgMzA6XHRcdHNlbGVjdCBLVk1fVkZJT1xuICAzMTpcdFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXG4gIDMyOlx0XHRzZWxlY3QgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xuICAzMzpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgU3VwcG9ydCBob3N0aW5nIHBhcmF2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcyB1c2luZyB0aGUgU0lFXG4gIDM2Olx0XHQgIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdHkgb24gdGhlIG1haW5mcmFtZS4gVGhpcyBzaG91bGQgd29ya1xuICAzNzpcdFx0ICBvbiBhbnkgNjRiaXQgbWFjaGluZS5cbiAgMzg6XHRcbiAgMzk6XHRcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdGhyb3VnaFxuICA0MDpcdFx0ICBhIGNoYXJhY3RlciBkZXZpY2Ugbm9kZSBuYW1lZCAvZGV2L2t2bS5cbiAgNDE6XHRcbiAgNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDQzOlx0XHQgIHdpbGwgYmUgY2FsbGVkIGt2bS5cbiAgNDQ6XHRcbiAgNDU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbiAgNDg6XHRcdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBLVk1cbiAgNTA6XHRcdGhlbHBcbiAgNTE6XHRcdCAgQWxsb3cgQ0FQX1NZU19BRE1JTiB1c2VycyB0byBjcmVhdGUgS1ZNIHZpcnR1YWwgbWFjaGluZXMgdGhhdCBhcmVcbiAgNTI6XHRcdCAgY29udHJvbGxlZCBieSB1c2Vyc3BhY2UuXG4gIDUzOlx0XG4gIDU0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDU1Olx0XG4gIDU2Olx0ZW5kaWYgIyBWSVJUVUFMSVpBVElPTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDg2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgcGF0Y2ggcmVsYXRlZCB0byBgVklSVFVBTElaQVRJT05gIGFuZCBzcGVjaWZpY2FsbHkgYEtWTWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcy4KCkxldCYjMzk7cyBkaXZlIGluIGFuZCByZXZpZXcgdGhlIGRpZmYuIEl0IHNlZW1zIHdlIGhhdmUgc2V2ZXJhbCBmaWxlIG1vZGlmaWNhdGlvbnMgYWNyb3NzIGBhcmNoL3MzOTAva3ZtL3MzOTAvYC4gVGhlIGNoYW5nZXMgYXBwZWFyIHRvIGJlIG1haW5seSBjb25jZXJuZWQgd2l0aCBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uOgoKMS4gIGBoYW5kbGVfc3RoeWlgIGlzIGNoYW5naW5nIGBnZXRfemVyb2VkX3BhZ2VgIHRvIGBremFsbG9jYCwgYW5kIGBmcmVlX3BhZ2VgIHRvIGBrZnJlZWAuCjIuICBga3ZtX3MzOTBfZ2liX2Rlc3Ryb3lgIGFuZCBga3ZtX3MzOTBfZ2liX2luaXRgIGhhdmUgc2ltaWxhciBjaGFuZ2VzLCB1c2luZyBga3phbGxvY2AgaW5zdGVhZCBvZiBgZ2V0X3plcm9lZF9wYWdlYCBhbmQgYGtmcmVlYCBpbnN0ZWFkIG9mIGBmcmVlX3BhZ2VgLgozLiAgYGhhbmRsZV9zdHNpYCBhbHNvIHJlZmxlY3RzIHRoaXMgcGF0dGVybiBvZiBzd2l0Y2hpbmcgZnJvbSBgZ2V0X3plcm9lZF9wYWdlYCBhbmQgYGZyZWVfcGFnZWAgdG8gYGt6YWxsb2NgIGFuZCBga2ZyZWVgLgo0LiAgYGt2bV9hcmNoX2luaXRfdm1gICBhbmQgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAgYXJlIGRvaW5nIHRoZSBzYW1lIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMuCgpOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogSXMgdGhpcyBXb3J0aEZ1enppbmc/IEkgbmVlZCB0byBhcHBseSBteSBrbm93bGVkZ2Ugb2Ygd2hhdCBtYWtlcyBhIHBhdGNoIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBndWlkZWxpbmVzIGFyZSBwcmV0dHkgY2xlYXIuIEl0JiMzOTtzIGEgJiMzNDtubyYjMzQ7IGlmIGl0JiMzOTtzIHB1cmVseSBkb2N1bWVudGF0aW9uLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBwYXJ0aWN1bGFybHkgdGhvc2UgcmVseWluZyBvbiBzb2Z0d2FyZSBlbXVsYXRpb24sIGxpa2UgUUVNVS4KCkJ1dCB0aGlzIHBhdGNoIGNsZWFybHkgbW9kaWZpZXMgYGFyY2gvczM5MGAgS1ZNIGNvZGUhIEEgY29yZSBhcmNoaXRlY3R1cmUgY29tcG9uZW50LiBTbywgbXkgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBCdXQgSSBtdXN0IGJlIHN1cmUuIEkgbmVlZCB0byBiZSBzdXJlIHRoaXMgaXMgYSBjb2RlIHBhdGggSSBjYW4gZXZlbiBleGVjdXRlISBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIEtWTSBvbiBzMzkwIGNhbiBiZSBydW4gYW5kIGZ1enplZC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBDYW4gczM5MCBLVk0gKnJ1biogaW4gUUVNVT8gQW5kICp3aHkqIGRvZXMgUUVNVSBtYXR0ZXI/IFRoZSBndWlkZWxpbmVzIG1lbnRpb24gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhpcyBzZWVtcyBjZW50cmFsIHRvIHRoZSBkZXRlcm1pbmF0aW9uLgoKSSByZWNhbGwgdGhhdCBzMzkwIEtWTSBpcyB1c2VkIHdoZW4gTGludXggczM5MCBpcyBydW5uaW5nIHdpdGggS1ZNLiBCdXQgd2hhdCBhYm91dCBRRU1VPyBJIGtub3cgUUVNVSBzdXBwb3J0cyBzMzkweCB1c2luZyBUQ0csIGJ1dCBkb2VzbiYjMzk7dCB0aGUgVENHIGltcGxlbWVudGF0aW9uIG9uIHMzOTB4ICpub3QqIHN1cHBvcnQgbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBwYXJ0aWN1bGFybHkgdGhlIFNJRSAoU3lzdGVtIEluc3RydWN0aW9uIEV4dGVuc2lvbikgaW5zdHJ1Y3Rpb24gc2V0PyBJc24mIzM5O3QgU0lFIGVzc2VudGlhbCBmb3IgS1ZNPwoKVGhlbiBJIHJlYWxpemUgSSBuZWVkIHRvIGNvbmZpcm06IERvZXMgUUVNVSBUQ0cgczM5MHggc3VwcG9ydCBLVk0/IEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgbGlrZSBgYXJjaC9zMzkwL2t2bS9zMzkwL3NpZS5TYCBvciBTSUUgaW5zdHJ1Y3Rpb25zIGluIHMzOTAuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIG1hdHRlci4gSWYgczM5MCBLVk0gcmVsaWVzIG9uIFNJRSwgYW5kIFFFTVUmIzM5O3MgVENHIGxhY2tzIFNJRSBzdXBwb3J0LCB0aGVuIHRoaXMgcGF0Y2ggaXMgdW5mb3J0dW5hdGVseSAqbm90KiBmdXp6YWJsZSB1bmRlciBzdGFuZGFyZCBRRU1VLiBCdXQgSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIFNJRSBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NpZTY0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaD02ODM9dm9pZCBrdm1fYXJjaF9jcnlwdG9fc2V0X21hc2tzKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyAqYXBtLFxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjg4LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo2ODk6aW50IF9fc2llNjRhKHBoeXNfYWRkcl90IHNpZV9ibG9ja19waHlzLCBzdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrICpzaWVfYmxvY2ssIHU2NCAqcnNhLFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02OTAtXHQgICAgIHVuc2lnbmVkIGxvbmcgZ2FzY2UpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02OTEtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjY5MjpzdGF0aWMgaW5saW5lIGludCBzaWU2NGEoc3RydWN0IGt2bV9zMzkwX3NpZV9ibG9jayAqc2llX2Jsb2NrLCB1NjQgKnJzYSwgdW5zaWduZWQgbG9uZyBnYXNjZSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjkzLXtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6Njk0Olx0cmV0dXJuIF9fc2llNjRhKHZpcnRfdG9fcGh5cyhzaWVfYmxvY2spLCBzaWVfYmxvY2ssIHJzYSwgZ2FzY2UpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02OTUtfVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUz0xODQ9RVhQT1JUX1NZTUJPTChfX1dBUk5fdHJhcClcbi0tXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlMtMTg5LS8qXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MTkwOiAqIF9fc2llNjRhIGNhbGxpbmcgY29udmVudGlvbjpcbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUy0xOTEtICogJXIyIHBvaW50ZXIgdG8gc2llIGNvbnRyb2wgYmxvY2sgcGh5c1xuLS1cbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUy0xOTUtICovXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MTk2OlNZTV9GVU5DX1NUQVJUKF9fc2llNjRhKVxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TLTE5Ny1cdHN0bWdcdCVyNiwlcjE0LF9fU0ZfR1BSUyglcjE1KVx0IyBzYXZlIGtlcm5lbCByZWdpc3RlcnNcbi0tXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM9MjMxPVNZTV9JTk5FUl9MQUJFTChzaWVfZXhpdCwgU1lNX0xfR0xPQkFMKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUy0yNDItXHRCUl9FWFx0JXIxNFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TOjI0MzpTWU1fRlVOQ19FTkQoX19zaWU2NGEpXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MjQ0OkVYUE9SVF9TWU1CT0woX19zaWU2NGEpXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlMtMjQ1LUVYUE9SVF9TWU1CT0woc2llX2V4aXQpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYz0zMzM9c3RhdGljIHZvaWQgbm90cmFjZSBzMzkwX2JhY2t1cF9tY2NrX2luZm8oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zMzctXG5hcmNoL3MzOTAva2VybmVsL25taS5jOjMzODpcdC8qIHIxNCBjb250YWlucyB0aGUgc2llIGJsb2NrLCB3aGljaCB3YXMgc2V0IGluIHNpZTY0YSAqL1xuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zMzktXHRzdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrICpzaWVfYmxvY2sgPSBwaHlzX3RvX3ZpcnQocmVncy1cdTAwM2VncHJzWzE0XSk7XG4tLVxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jPTMzOD12b2lkIG5vaW5zdHIgX19kb19wZ21fY2hlY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jLTM1Ni1cdCAqIEluIGNhc2Ugb2YgYSBndWVzdCBmYXVsdCwgc2hvcnQtY2lyY3VpdCB0aGUgZmF1bHQgaGFuZGxlciBhbmQgcmV0dXJuLlxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jOjM1NzpcdCAqIFRoaXMgd2F5IHRoZSBzaWU2NGEoKSBmdW5jdGlvbiB3aWxsIHJldHVybiAwOyBmYXVsdCBhZGRyZXNzIGFuZFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jLTM1OC1cdCAqIG90aGVyIHJlbGV2YW50IGJpdHMgYXJlIHNhdmVkIGluIGN1cnJlbnQtXHUwMDNldGhyZWFkLmdtYXBfdGVpZCwgYW5kXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz00NzQ4PWludCBub2luc3RyIGt2bV9zMzkwX2VudGVyX2V4aXRfc2llKHN0cnVjdCBrdm1fczM5MF9zaWVfYmxvY2sgKnNjYixcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTQ3NTktXHQgKi9cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6NDc2MDpcdHJldCA9IHNpZTY0YShzY2IsIGdwcnMsIGdhc2NlKTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNDc2MS1cbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvdnNpZS5jPTExODc9c3RhdGljIGludCBkb192c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSwgc3RydWN0IGdtYXAgKnNnKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC92c2llLmMtMTIxNC1cdC8qXG5hcmNoL3MzOTAva3ZtL3MzOTAvdnNpZS5jOjEyMTU6XHQgKiBTaW11bGF0ZSBhIFNJRSBlbnRyeSBvZiB0aGUgVkNQVSAoc2VlIHNpZTY0YSksIHNvIFZDUFUgYmxvY2tpbmdcbmFyY2gvczM5MC9rdm0vczM5MC92c2llLmMtMTIxNi1cdCAqIGFuZCBWQ1BVIHJlcXVlc3RzIGFsc28gaGluZGVyIHRoZSB2U0lFIGZyb20gcnVubmluZyBhbmQgbGVhZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTM0OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIEFzc2Vzc21lbnQqKgoKT2theSwgd2FpdCBhIG1pbnV0ZSEgU3l6a2FsbGVyICpkb2VzKiB0YXJnZXQgczM5MHghIFJpZ2h0LCBMaW51eC9zMzkweCBpcyBzdXBwb3J0ZWQuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnM6IGBrdm1fYXJjaF9pbml0X3ZtYCwgYGhhbmRsZV9zdGh5aWAsIGBoYW5kbGVfc3RzaWAsIGFuZCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYC4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBhY3R1YWxseSAqcmVhY2hhYmxlKiB3aGVuIHJ1bm5pbmcgU3l6a2FsbGVyIG9uIHMzOTB4PwoKWWVzLCBjb25maXJtZWQuIFRoZSBgS1ZNX0NSRUFURV9WTWAgaW9jdGwgY2FsbHMgYGt2bV9hcmNoX2luaXRfdm1gIG9uIHMzOTB4LiBBbmQgYEtWTV9SVU5gIGhhbmRsZXMgZXhpdHMgYW5kIGludGVyY2VwdHMsIHNwZWNpZmljYWxseSBjYWxsaW5nIGBoYW5kbGVfc3RoeWlgIGFuZCBgaGFuZGxlX3N0c2lgLiBGdXJ0aGVybW9yZSwgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAgZ2V0cyBjYWxsZWQgZHVyaW5nIENNTUEgc2V0dXAsIGFuZCBga3ZtX3MzOTBfZ2liX2luaXRgIGhhcHBlbnMgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbi4KClRoZSBrZXkgcXVlc3Rpb246IGlzIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgKndvcnRoKiBmdXp6aW5nPyBMZXQmIzM5O3MgZ28gdGhyb3VnaCB0aGUgY2hlY2tsaXN0LgoKVGhlIGNyaXRlcmlhIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzOyBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciB0cmFjZXBvaW50czsgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cy9tYWNyb3MgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3c7IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzOyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVyIGNvZGUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZTsgb3IgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpOb25lIG9mIHRob3NlIGV4Y2x1c2lvbiBjcml0ZXJpYSBhcHBseSBoZXJlISBUaGlzIGxvb2tzIGdvb2QhCgpPa2F5LCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsICYjMzQ7SWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4mIzM0OwoKQWxyaWdodCwgbGV0JiMzOTtzIHZlcmlmeSB3aGF0IGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gcmV0dXJuLgoKRmlyc3QgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczoKMS4gIGBoYW5kbGVfc3RoeWlgIChpbiBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMpIC0gKlRoaXMqIGlzIGEga2V5IG9uZS4gSXQmIzM5O3MgYSBub24tc3RhdGljIGZ1bmN0aW9uISBMZXQmIzM5O3MgY2hlY2sgYGludGVyY2VwdC5jYCBtb3JlIGNsb3NlbHkuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IGhhbmRsZV9zdGh5aVxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYz0zOTY9c3RhdGljIGludCBoYW5kbGVfcGFydGlhbF9leGVjdXRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYy00MTItICovXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmM6NDEzOmludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jLTQxNC17XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaD00MjE9c3RhdGljIGlubGluZSB2b2lkIGt2bV9zMzkwX3JldHJ5X2luc3RyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5oLTQyNy1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg6NDI4OmludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmgtNDI5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjc1MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgYGhhbmRsZV9zdHNpYCBGdW5jdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGBoYW5kbGVfc3RzaWAgaW4gdGhlIHMzOTAgS1ZNIGFyY2hpdGVjdHVyZS4gTGV0JiMzOTtzIHNlZSwgdGhlIGZpbGUgaXMgYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGFuZCB0aGlzIGlzIGNydWNpYWwgZm9yIGhvdyBpdCYjMzk7cyB1c2VkLCBpcyBgaGFuZGxlX3N0c2lgIGRlY2xhcmVkIGFzIGBzdGF0aWNgIG9yIG5vbi1zdGF0aWM/IFRoYXQgd2lsbCBkaWN0YXRlIGl0cyBzY29wZSBhbmQgaG93IGl0JiMzOTtzIGFjdHVhbGx5IGFjY2Vzc2VkIHdpdGhpbiB0aGUgYnJvYWRlciBLVk0gZnJhbWV3b3JrLiBJIG5lZWQgdG8gY2hlY2sgaXRzIGRlY2xhcmF0aW9uIHRvIGFzY2VydGFpbiBpdHMgdmlzaWJpbGl0eSBhbmQgaW50ZW5kZWQgdXNhZ2UuIFRoaXMgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgb3RoZXIgcGFydHMgb2YgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYW5kbGVfc3RzaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmM9ODA1PXN0YXRpYyBpbnQgaGFuZGxlX3N0aWRwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTgyOS1cbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmM6ODMwOnN0YXRpYyB2b2lkIGhhbmRsZV9zdHNpXzNfMl8yKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHN5c2luZm9fM18yXzIgKm1lbSlcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtODMxLXtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jPTg1Nz1zdGF0aWMgdm9pZCBpbnNlcnRfc3RzaV91c3JfZGF0YShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBhZGRyLCB1OCBhcixcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTg2Ny1cbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmM6ODY4OnN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYy04Njkte1xuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTI2LVx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjkyNzpcdFx0aGFuZGxlX3N0c2lfM18yXzIodmNwdSwgbWVtKTtcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTI4LVx0XHRicmVhaztcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTkzMC1cdFx0aW5zZXJ0X3N0c2lfdXNyX2RhdGEodmNwdSwgb3BlcmFuZDIsIGFyLCBmYywgc2VsMSwgc2VsMik7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjkzMTpcdFx0dHJhY2Vfa3ZtX3MzOTBfaGFuZGxlX3N0c2kodmNwdSwgZmMsIHNlbDEsIHNlbDIsIG9wZXJhbmQyKTtcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTMyLVx0XHRyZXR1cm4gLUVSRU1PVEU7XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYy05NDctXHR9XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjk0ODpcdHRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTk0OS1cdGtmcmVlKG1lbSk7XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYz05NjA9aW50IGt2bV9zMzkwX2hhbmRsZV9iMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYy0xMDA1LVx0Y2FzZSAweDdkOlxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYzoxMDA2Olx0XHRyZXR1cm4gaGFuZGxlX3N0c2kodmNwdSk7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTEwMDctXHRjYXNlIDB4YWY6XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3RyYWNlLmg9Mzg3PVRSQUNFX0VWRU5UKGt2bV9zMzkwX2hhbmRsZV9zdGZsLFxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC90cmFjZS5oLTQwNC1cbmFyY2gvczM5MC9rdm0vczM5MC90cmFjZS5oOjQwNTpUUkFDRV9FVkVOVChrdm1fczM5MF9oYW5kbGVfc3RzaSxcbmFyY2gvczM5MC9rdm0vczM5MC90cmFjZS5oLTQwNi1cdCAgICBUUF9QUk9UTyhWQ1BVX1BST1RPX0NPTU1PTiwgaW50IGZjLCBpbnQgc2VsMSwgaW50IHNlbDIsIHU2NCBhZGRyKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5ODcKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgS1ZNL3MzOTAgQ29kZSBDaGFuZ2VzKioKCk9rYXksIHNvIGBrdm1fczM5MF9oYW5kbGVfYjJgIGNhbGxzIGBoYW5kbGVfc3RzaWAsIGFuZCBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSByZWNlbnQgbW9kaWZpY2F0aW9ucy4gRmlyc3QsIGxldCYjMzk7cyBjb25maXJtIHRoYXQgYGt2bV9zMzkwX2hhbmRsZV9iMmAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXQgaXNuJiMzOTt0LiBHb29kLiBOb3csIEkgd2FudCB0byByZXZpZXcgYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZCBhcyBhIHJlc3VsdCBvZiB0aGlzIGNoYW5nZS4KCkhlcmUmIzM5O3MgdGhlIGxpc3QgSSYjMzk7dmUgY29tcGlsZWQ6CgoxLiAgYGhhbmRsZV9zdGh5aWAgaXMgbm9uLXN0YXRpYywgd2hpY2ggaXMgcmVsZXZhbnQuCjIuICBga3ZtX3MzOTBfZ2liX2luaXRgIGFuZCBga3ZtX3MzOTBfZ2liX2Rlc3Ryb3lgIGFyZSBub24tc3RhdGljLCB0aG91Z2ggdGhlIGluaXQgaXMgbWFya2VkIGFzIGBfX2luaXRgLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBub3QgYSBiaWcgY29uY2VybiBoZXJlLgozLiAgYGhhbmRsZV9zdHNpYCwgb2J2aW91c2x5LCBzaW5jZSBpdCYjMzk7cyBjYWxsZWQgYnkgYGt2bV9zMzkwX2hhbmRsZV9iMmAgYW5kIGlzIGFsc28gbm9uLXN0YXRpYy4KNC4gIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gIGFyZSBub24tc3RhdGljIGFzIHdlbGwuIFRoaXMgbWFrZXMgbWUgY3VyaW91cyBhYm91dCB0aGUgb3ZlcmFsbCBWTSBsaWZlY3ljbGUuCjUuICBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCBhbmQgYGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hYCBhcmUgYWxzbyBub24tc3RhdGljIGFuZCB3YXJyYW50IHNvbWUgaW52ZXN0aWdhdGlvbi4KCk5vdywgSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAg4oCTIEkmIzM5O2xsIGdvIHRvIGBhcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jYCB0byBleGFtaW5lIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MzY1Nz12b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTM2NjMtXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjM2NjQ6aW50IGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTM2NjUte1xuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MzY4ND1zdGF0aWMgaW50IGt2bV9zMzkwX3ZjcHVfc2V0dXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzc0Ni1cdGlmICh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnVzZV9jbW1hKSB7XG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjM3NDc6XHRcdHJjID0ga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hKHZjcHUpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0zNzQ4LVx0XHRpZiAocmMpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaD00NjU9dm9pZCBrdm1fczM5MF9zeW5jX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg6NDY2OmludCBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmgtNDY3LXZvaWQga3ZtX3MzOTBfdmNwdV91bnNldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyMjEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBsaWZlY3ljbGUgb2YgYSBLVk0gdmlydHVhbCBtYWNoaW5lLCBzcGVjaWZpY2FsbHkgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemF0aW9uIGFuZCBkZXN0cnVjdGlvbi4gU28sIEkmIzM5O20gdGhpbmtpbmcsIGxldCYjMzk7cyBkaXNzZWN0IGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gLiBJJiMzOTtsbCBiZSBsb29raW5nIGF0IGhvdyB0aGV5JiMzOTtyZSBpbXBsZW1lbnRlZCwgd2hhdCByZXNvdXJjZXMgdGhleSBhbGxvY2F0ZSBhbmQgZGVhbGxvY2F0ZSwgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIHMzOTAtc3BlY2lmaWMgYXJjaGl0ZWN0dXJhbCBjb21wb25lbnRzIHdpdGhpbiB0aGUgS1ZNIGZyYW1ld29yay4gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IHRvIGBhcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHZpcnR1YWwgbWFjaGluZSYjMzk7cyBlbnRyeSBhbmQgZXhpdCBwb2ludHMgb24gdGhpcyBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MzIzMj12b2lkIGt2bV9hcmNoX2ZyZWVfdm0oc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzIzOS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6MzI0MDppbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzI0MS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NjQ3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgS1ZNL3MzOTAgR0lCIEluaXRpYWxpemF0aW9uIGFuZCBEZXN0cnVjdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gdGhlIEtWTS9zMzkwIGFyY2hpdGVjdHVyZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBob3cgR2xvYmFsIEludGVycnVwdCBCbG9ja3MsIG9yIEdJQnMsIGFyZSBoYW5kbGVkLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBga3ZtX3MzOTBfZ2liX2luaXRgIGFuZCBga3ZtX3MzOTBfZ2liX2Rlc3Ryb3lgIGZ1bmN0aW9ucy4gVGhleSBzaG91bGQgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBhbGxvY2F0aW9uLCBzZXR1cCwgYW5kIGNsZWFudXAgb2YgdGhlc2UgR0lCIHN0cnVjdHVyZXMuIEkmIzM5O2xsIGZpbmQgdGhlbSB3aXRoaW4gYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIG1hbmFnaW5nIHRoZXNlIGludGVycnVwdHMgc2hvdWxkIHJlc2lkZSwgc28gdGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgdG8gcHJvdmlkZSB0aGUgZGV0YWlscyBJIG5lZWQuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfZ2liXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYz0zNjc3PXN0YXRpYyBzdHJ1Y3QgYWlycV9zdHJ1Y3QgZ2liX2FsZXJ0X2lycSA9IHtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMzY4MC1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzozNjgxOnZvaWQga3ZtX3MzOTBfZ2liX2Rlc3Ryb3kodm9pZClcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0zNjgyLXtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMzY5NS1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzozNjk2OmludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYylcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0zNjk3LXtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jPTQ5Nj1zdGF0aWMgaW50IF9faW5pdCBfX2t2bV9zMzkwX2luaXQodm9pZClcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTUyOC1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6NTI5Olx0cmMgPSBrdm1fczM5MF9naWJfaW5pdChHQUxfSVNDKTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNTMwLVx0aWYgKHJjKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9NTUwPXN0YXRpYyB2b2lkIF9fa3ZtX3MzOTBfZXhpdCh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNTU0LVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzo1NTU6XHRrdm1fczM5MF9naWJfZGVzdHJveSgpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy01NTYtXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg9NTY0PXZvaWQga3ZtX3MzOTBfZ2lzYV9lbmFibGUoc3RydWN0IGt2bSAqa3ZtKTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg6NTY1OmludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYyk7XG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5oOjU2Njp2b2lkIGt2bV9zMzkwX2dpYl9kZXN0cm95KHZvaWQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaC01Njctdm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2NjcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gS1ZNIGZvciBzMzkwIEFyY2hpdGVjdHVyZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBjbG9zZSBsb29rIGF0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciBLVk0sIHNwZWNpZmljYWxseSBmb3IgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBuYXZpZ2F0ZSB0byB0aGUgYGFyY2gvczM5MC9rdm0vYCBkaXJlY3RvcnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBJJiMzOTttIHRoaW5raW5nIHRoZSBgTWFrZWZpbGVgIGluIHRoZXJlIHdpbGwgZ2l2ZSBtZSB0aGUgbG93ZG93biBvbiB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgdGhlIEtWTSBjb21wb25lbnRzIHNwZWNpZmljIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGBLY29uZmlnYCBkZXBlbmRlbmNpZXMgdG8gc2VlIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkLCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIGhvdyBldmVyeXRoaW5nIGlzIGludGVyY29ubmVjdGVkIGZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGRlcGVuZGVuY2llcyBvciBwb3RlbnRpYWwgY29uZmxpY3RzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgdW5kZXJzdGFuZGluZyB0aGUgczM5MCBLVk0gYnVpbGQgcHJvY2VzcyBhbmQgYW55IHJlbGF0ZWQgaXNzdWVzIG9yIG1vZGlmaWNhdGlvbnMgSSBtaWdodCB3YW50IHRvIG1ha2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjIE1ha2VmaWxlIGZvciBrZXJuZWwgdmlydHVhbCBtYWNoaW5lcyBvbiBzMzkwXG4gICAzOlx0I1xuICAgNDpcdCMgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDA4XG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IHMzOTAvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDUzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBTMzkwIEtWTSBNYWtlZmlsZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoZSBzMzkwIEtWTSBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgc3RydWN0dXJlZCBmb3IgdGhhdCBhcmNoaXRlY3R1cmUuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBgTWFrZWZpbGVgIGxvY2F0ZWQgaW4gYGFyY2gvczM5MC9rdm0vczM5MC9gLiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IOKAkyB0aGUgYnVpbGQgc2NyaXB0cyBhcmUgb2Z0ZW4gdGhlIGJlc3QgcGxhY2UgdG8gZ2FpbiBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgYSBwcm9qZWN0LiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgY29tcG9uZW50cywgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBvciBzZXR0aW5ncyBiZWluZyB1c2VkIGZvciB0aGUgczM5MCBLVk0gaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiBob3cgdGhlIGNvcmUgS1ZNIG1vZHVsZXMgYXJlIGNvbXBpbGVkLCBhbnkgY3VzdG9tIG9iamVjdCBmaWxlcywgYW55IHNwZWNpZmljIGluY2x1ZGUgcGF0aHMsIGFuZCBhbnkgbGluayBmbGFncy4gSeKAmW0gYWxzbyBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHNwZWNpZmljIGZlYXR1cmVzIG9yIG9wdGltaXphdGlvbnMgZm9yIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBgTWFrZWZpbGVgIHNob3VsZCBwcm92aWRlIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCBmb3IgZGVlcGVyIGludmVzdGlnYXRpb24uIExldOKAmXMgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9zMzkwL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdEtWTSA6PSAuLi8uLi8uLi8uLi92aXJ0L2t2bVxuICAgNDpcdGluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1cbiAgIDU6XHRpbmNsdWRlICQoc3JjdHJlZSkvYXJjaC9zMzkwL2t2bS9nbWFwL01ha2VmaWxlXG4gICA2Olx0XG4gICA3Olx0Y2NmbGFncy15IDo9IC1JJChzcmMpIC1JJChzcmN0cmVlKS9hcmNoL3MzOTAva3ZtL2dtYXBcbiAgIDg6XHRcbiAgIDk6XHRrdm0teSAmIzQzOz0gczM5MC5vIGludGVyY2VwdC5vIGludGVycnVwdC5vIHByaXYubyBzaWdwLm9cbiAgMTA6XHRrdm0teSAmIzQzOz0gZGlhZy5vIGdhY2Nlc3MubyBndWVzdGRiZy5vIHZzaWUubyBwdi5vXG4gIDExOlx0a3ZtLXkgJiM0Mzs9ICQoZ21hcC15KVxuICAxMjpcdFxuICAxMzpcdGt2bS0kKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgJiM0Mzs9IHBjaS5vXG4gIDE0Olx0b2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IGt2bS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjEyCgkJCQkJCQlvdXRwdXQ6IDE4NAoJCQkJCQkJdGhvdWdodHM6IDc1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBLVk0gQ29uZmlndXJhdGlvbiBhbmQgUmVsZXZhbnQgU3ltYm9scyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgS1ZNLXJlbGF0ZWQgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBDT05GSUdfS1ZNYCBhcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoaXMgaXMgYWxsIHdpcmVkIHVwLCBzbyBJIHN0YXJ0ZWQgYnkgY2hlY2tpbmcgYGFyY2gvczM5MC9LY29uZmlnYCBhbmQgYHZpcnQva3ZtL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBJIG5lZWQgdG8gY29uc2lkZXIuCgpXaXRoaW4gYGFyY2gvczM5MC9rdm0vS2NvbmZpZ2AsIEkgZm91bmQgdGhlIGBWSVJUVUFMSVpBVElPTmAgbWVudSBhbmQgdGhlIGBLVk1gIGNvbmZpZywgd2hpY2ggZGVwZW5kcyBvbiBgVklSVFVBTElaQVRJT05gLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UuIEkmIzM5O20gdHJ5aW5nIHRvIGRlY2lkZSBpZiBJIG5lZWQgYm90aCBgVklSVFVBTElaQVRJT05gICphbmQqIGBLVk1gLCBvciBpZiBlbmFibGluZyBgS1ZNYCBpbXBsaWNpdGx5IGhhbmRsZXMgYFZJUlRVQUxJWkFUSU9OYCwgb3IgcGVyaGFwcyBpZiBpdCYjMzk7cyB0aGUgb3RoZXIgd2F5IGFyb3VuZC4gSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLgoKTmV4dCwgSSB0dXJuZWQgbXkgYXR0ZW50aW9uIHRvIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZCBpbiB0aGlzIHBhdGNoIHRvIHNlZSBob3cgdGhleSYjMzk7cmUgY29ubmVjdGVkLiBJIGlkZW50aWZpZWQgYSBmZXcga2V5IG9uZXM6IGBoYW5kbGVfc3RoeWlgICh3aGljaCBoYW5kbGVzIHRoZSBTVEhZSSBpbnN0cnVjdGlvbiBpbnRlcmNlcHQpLCBga3ZtX3MzOTBfaGFuZGxlX2IyYCAod2hpY2ggaGFuZGxlcyBCMiBpbnN0cnVjdGlvbiBpbnRlcmNlcHRzLCBpbmNsdWRpbmcgU1RTSSB0aHJvdWdoIGBoYW5kbGVfc3RzaWApLCBga3ZtX2FyY2hfaW5pdF92bWAgKHdoaWNoIGluaXRpYWxpemVzIHMzOTAgVk0gYXJjaGl0ZWN0dXJlIHN0cnVjdHVyZXMgaW5jbHVkaW5nIHNpZV9wYWdlMiksIGFuZCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCAod2hpY2ggc2V0cyB1cCBDTU1BIENCUi9DQlJMRSBzdHJ1Y3R1cmVzKS4KCkkgY2hlY2tlZCB0aGUgc3RhdGljL25vbi1zdGF0aWMgbmF0dXJlIG9mIHRoZXNlIHN5bWJvbHMgdG8gc2VlIGhvdyB0aGV5IGFyZSBleHBvc2VkLCBhbmQgaWYgYW55IGFyZSBpbnRlcm5hbCBkZXRhaWxzIG9ubHkuIFNwZWNpZmljYWxseSwgSSBub3RlZCB0aGF0IGBoYW5kbGVfc3RzaWAgaXMgc3RhdGljLCBkZWZpbmVkIGluIGBhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jYCwgYnV0IGl0JiMzOTtzIGNhbGxlZCBieSB0aGUgbm9uLXN0YXRpYyBga3ZtX3MzOTBfaGFuZGxlX2IyYC4gVGhlIHJlc3QgYXJlIG5vbi1zdGF0aWMuCgpGaW5hbGx5LCBJIHJldmlld2VkIHRoZSBwYXRjaCBkaWZmIGl0c2VsZiB0byBjb25maXJtIHRoZSBmaWxlcyBhbmQgc3ltYm9scyBpbnZvbHZlZC4gVGhlIHBhdGNoIHRvdWNoZXMgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY2AgKHdoZXJlIGBoYW5kbGVfc3RoeWlgIGxpdmVzKSwgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY2AgKHdpdGggYGt2bV9zMzkwX2dpYl9pbml0YCBhbmQgYGt2bV9zMzkwX2dpYl9kZXN0cm95YCksIGBhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jYCAod2hlcmUgYGhhbmRsZV9zdHNpYCBpcyBkZWZpbmVkIGFuZCBjYWxsZWQpLCBhbmQgYGFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNgICh3aXRoIGBrdm1fYXJjaF9pbml0X3ZtYCwgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gLCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCwgYW5kIGBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYWApLiBUaGlzIHNvbGlkaWZpZXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgbW9kdWxlcyBhbmQgZnVuY3Rpb25zLgoKU28sIHRvIHN1bW1hcml6ZSwgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIGBoYW5kbGVfc3RoeWlgLCBga3ZtX3MzOTBfaGFuZGxlX2IyYCwgYGt2bV9hcmNoX2luaXRfdm1gLCBhbmQgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAuIFRoZSByZWxldmFudCBjb25maWdzIGFyZSBgS1ZNYCBhbmQgYFZJUlRVQUxJWkFUSU9OYC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoYW5kbGVfc3RoeWkmIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfaGFuZGxlX2IyJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX2luaXRfdm0mIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgcGFnZS1sZXZlbCBtZW1vcnkgYWxsb2NhdGlvbnMgKGdldF96ZXJvZWRfcGFnZS9mcmVlX3BhZ2UpIHRvIHNsYWIgYWxsb2NhdGlvbnMgKGt6YWxsb2Mva2ZyZWUpIGluIEtWTSBvbiBzMzkwIGZvciBndWVzdCBpbnRlcmNlcHQgaGFuZGxpbmcgKFNUSFlJLCBTVFNJKSwgVk0gaW5pdGlhbGl6YXRpb24gKHNpZV9wYWdlMiksIEdJQiBzZXR1cCwgYW5kIFZDUFUgQ01NQSBzZXR1cC4gVGhlc2UgYWZmZWN0IHJlYWNoYWJsZSBLVk0gZXhlY3V0aW9uIHBhdGhzIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBvbiBzMzkwLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGFuZGxlX3N0aHlpJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX2hhbmRsZV9iMiYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9pbml0X3ZtJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHBhZ2UtbGV2ZWwgbWVtb3J5IGFsbG9jYXRpb25zIChnZXRfemVyb2VkX3BhZ2UvZnJlZV9wYWdlKSB0byBzbGFiIGFsbG9jYXRpb25zIChremFsbG9jL2tmcmVlKSBpbiBLVk0gb24gczM5MCBmb3IgZ3Vlc3QgaW50ZXJjZXB0IGhhbmRsaW5nIChTVEhZSSwgU1RTSSksIFZNIGluaXRpYWxpemF0aW9uIChzaWVfcGFnZTIpLCBHSUIgc2V0dXAsIGFuZCBWQ1BVIENNTUEgc2V0dXAuIFRoZXNlIGFmZmVjdCByZWFjaGFibGUgS1ZNIGV4ZWN1dGlvbiBwYXRocyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgb24gczM5MCwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb252ZXJ0cyBwYWdlIGFsbG9jYXRpb25zIHZpYSBnZXRfemVyb2VkX3BhZ2UoKSBhbmQgZnJlZV9wYWdlKCkgdG8gc2xhYiBhbGxvY2F0aW9ucyB2aWEga3phbGxvYygpL2t6YWxsb2Nfb2JqKCkgYW5kIGtmcmVlKCkgYWNyb3NzIHMzOTAgS1ZNIGNvZGUgKGludGVyY2VwdC5jLCBpbnRlcnJ1cHQuYywgcHJpdi5jLCBzMzkwLmMpLiBcblxuU2luY2Uga3phbGxvYy9remFsbG9jX29iaiB6ZXJvLWluaXRpYWxpemVzIHRoZSBtZW1vcnkgaWRlbnRpY2FsbHkgdG8gZ2V0X3plcm9lZF9wYWdlKCksIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBjb25kaXRpb25hbCBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIHVuaW5pdGlhbGl6ZWQgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UvZ3Vlc3QgYXJlIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgc2xhYi1yZWxhdGVkIG1lbW9yeSBzYWZldHkgaXNzdWVzIChlLmcuIG91dC1vZi1ib3VuZHMsIHVzZS1hZnRlci1mcmVlLCBvciBkb3VibGUtZnJlZSkgYXJlIG1vbml0b3JlZCBieSBzdGFuZGFyZCBLQVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDZkZmNlMDdjODlhZWI3ZDZjYmRlYzhjNWFiNWM4NWYyNjk5MzY2ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTk6MDI6NTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMKaW5kZXggY2ExMjA1ZGZhYzhiMC4uYWFmOTgyOGQxZjQ0ZCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYwpAQCAtMTEsNiAmIzQzOzExLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGFnZW1hcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiAKICNpbmNsdWRlICZsdDthc20vYXNtLW9mZnNldHMuaCZndDsKICNpbmNsdWRlICZsdDthc20vaXJxLmgmZ3Q7CkBAIC00MzgsMTMgJiM0Mzs0MzksMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKCFrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpICZhbXA7JmFtcDsgKGFkZHIgJmFtcDsgflBBR0VfTUFTSykpCiAJCXJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pOwogCi0Jc2N0bnMgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwlzY3RucyA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghc2N0bnMpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJY2MgPSBzdGh5aV9maWxsKHNjdG5zLCAmYW1wO3JjKTsKIAlpZiAoY2MgJmx0OyAwKSB7Ci0JCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CQlrZnJlZShzY3Rucyk7CiAJCXJldHVybiBjYzsKIAl9CiBvdXQ6CkBAIC00NTQsMTMgJiM0Mzs0NTUsMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCX0gZWxzZSB7CiAJCQlyID0gd3JpdGVfZ3Vlc3QodmNwdSwgYWRkciwgcmVnMiwgc2N0bnMsIFBBR0VfU0laRSk7CiAJCQlpZiAocikgewotCQkJCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CQkJCWtmcmVlKHNjdG5zKTsKIAkJCQlyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByKTsKIAkJCX0KIAkJfQogCX0KIAotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CWtmcmVlKHNjdG5zKTsKIAl2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzW3JlZzIgJiM0MzsgMV0gPSByYzsKIAlrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTsKIAlyZXR1cm4gcjsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYwppbmRleCAwMzgxYWU5ODE3MDM1Li4wMjA2NWZiOGQwNTNlIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jCkBAIC0zNjg5LDcgJiM0MzszNjg5LDcgQEAgdm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKQogCX0KIAljaHNjX3NnaWIoMCk7CiAJdW5yZWdpc3Rlcl9hZGFwdGVyX2ludGVycnVwdCgmYW1wO2dpYl9hbGVydF9pcnEpOwotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpOwomIzQzOwlrZnJlZShnaWIpOwogCWdpYiA9IE5VTEw7CiB9CiAKQEAgLTM3MDMsNyAmIzQzOzM3MDMsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpCiAJCWdvdG8gb3V0OwogCX0KIAotCWdpYiA9IChzdHJ1Y3Qga3ZtX3MzOTBfZ2liICopZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpOwomIzQzOwlnaWIgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiAJaWYgKCFnaWIpIHsKIAkJcmMgPSAtRU5PTUVNOwogCQlnb3RvIG91dDsKQEAgLTM3MjIsNyAmIzQzOzM3MjIsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpCiAJZ2liX29yaWdpbiA9IHZpcnRfdG9fcGh5cyhnaWIpOwogCWlmIChjaHNjX3NnaWIoZ2liX29yaWdpbikpIHsKIAkJcHJfZXJyKCYjMzQ7QXNzb2NpYXRpbmcgdGhlIEdJQiB3aXRoIHRoZSBBSVYgZmFjaWxpdHkgZmFpbGVkXG4mIzM0Oyk7Ci0JCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpOwomIzQzOwkJa2ZyZWUoZ2liKTsKIAkJZ2liID0gTlVMTDsKIAkJcmMgPSAtRUlPOwogCQlnb3RvIG91dF91bnJlZ19nYWw7CkBAIC0zNzQyLDcgJiM0MzszNzQyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKQogb3V0X3VucmVnX2dhbDoKIAl1bnJlZ2lzdGVyX2FkYXB0ZXJfaW50ZXJydXB0KCZhbXA7Z2liX2FsZXJ0X2lycSk7CiBvdXRfZnJlZV9naWI6Ci0JZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7CiYjNDM7CWtmcmVlKGdpYik7CiAJZ2liID0gTlVMTDsKIG91dDoKIAlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYwppbmRleCBiM2NiMmMyYzNhYTcxLi44NTY5MzlhY2YwMTJmIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmMKQEAgLTE0LDYgJiM0MzsxNCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbW1fdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZ3RhYmxlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9hc20tb2Zmc2V0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9mYWNpbGl0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9jdXJyZW50LmgmZ3Q7CkBAIC04NjksNyAmIzQzOzg3MCw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWludCBmYyA9ICh2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzWzBdICZhbXA7IDB4ZjAwMDAwMDApICZndDsmZ3Q7IDI4OwogCWludCBzZWwxID0gdmNwdS0mZ3Q7cnVuLSZndDtzLnJlZ3MuZ3Byc1swXSAmYW1wOyAweGZmOwogCWludCBzZWwyID0gdmNwdS0mZ3Q7cnVuLSZndDtzLnJlZ3MuZ3Byc1sxXSAmYW1wOyAweGZmZmY7Ci0JdW5zaWduZWQgbG9uZyBtZW0gPSAwOwomIzQzOwl2b2lkICptZW0gPSBOVUxMOwogCXU2NCBvcGVyYW5kMjsKIAlpbnQgcmMgPSAwOwogCXU4IGFyOwpAQCAtOTExLDE5ICYjNDM7OTEyLDE5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXN3aXRjaCAoZmMpIHsKIAljYXNlIDE6IC8qIHNhbWUgaGFuZGxpbmcgZm9yIDEgYW5kIDIgKi8KIAljYXNlIDI6Ci0JCW1lbSA9IGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwkJbWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJCWlmICghbWVtKQogCQkJZ290byBvdXRfbm9fZGF0YTsKLQkJaWYgKHN0c2koKHZvaWQgKikgbWVtLCBmYywgc2VsMSwgc2VsMikpCiYjNDM7CQlpZiAoc3RzaShtZW0sIGZjLCBzZWwxLCBzZWwyKSkKIAkJCWdvdG8gb3V0X25vX2RhdGE7CiAJCWJyZWFrOwogCWNhc2UgMzoKIAkJaWYgKHNlbDEgIT0gMiB8fCBzZWwyICE9IDIpCiAJCQlnb3RvIG91dF9ub19kYXRhOwotCQltZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKJiM0MzsJCW1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCQlpZiAoIW1lbSkKIAkJCWdvdG8gb3V0X25vX2RhdGE7Ci0JCWhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsICh2b2lkICopIG1lbSk7CiYjNDM7CQloYW5kbGVfc3RzaV8zXzJfMih2Y3B1LCBtZW0pOwogCQlicmVhazsKIAljYXNlIDE1OiAvKiBmYyAxNSBpcyBmdWxseSBoYW5kbGVkIGluIHVzZXJzcGFjZSAqLwogCQlpbnNlcnRfc3RzaV91c3JfZGF0YSh2Y3B1LCBvcGVyYW5kMiwgYXIsIGZjLCBzZWwxLCBzZWwyKTsKQEAgLTkzMSwxMCAmIzQzOzkzMiwxMCBAQCBzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJcmV0dXJuIC1FUkVNT1RFOwogCX0KIAlpZiAoa3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSkgewotCQltZW1jcHkoc2lkYV9hZGRyKHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrKSwgKHZvaWQgKiltZW0sIFBBR0VfU0laRSk7CiYjNDM7CQltZW1jcHkoc2lkYV9hZGRyKHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrKSwgbWVtLCBQQUdFX1NJWkUpOwogCQlyYyA9IDA7CiAJfSBlbHNlIHsKLQkJcmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsICh2b2lkICopbWVtLCBQQUdFX1NJWkUpOwomIzQzOwkJcmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTsKIAl9CiAJaWYgKHJjKSB7CiAJCXJjID0ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7CkBAIC05NDUsMTQgJiM0Mzs5NDYsMTQgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCXJjID0gLUVSRU1PVEU7CiAJfQogCXRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7Ci0JZnJlZV9wYWdlKG1lbSk7CiYjNDM7CWtmcmVlKG1lbSk7CiAJa3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAwKTsKIAl2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzWzBdID0gMDsKIAlyZXR1cm4gcmM7CiBvdXRfbm9fZGF0YToKIAlrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDMpOwogb3V0OgotCWZyZWVfcGFnZShtZW0pOwomIzQzOwlrZnJlZShtZW0pOwogCXJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMKaW5kZXggYjA4MzllODg3MjIxZS4uOGVjNTA1MDYwZjhjMCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jCkBAIC0zMjczLDggJiM0MzszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpCiAJCWdvdG8gb3V0X2VycjsKIAogCUJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7Ci0Ja3ZtLSZndDthcmNoLnNpZV9wYWdlMiA9Ci0JICAgICAoc3RydWN0IHNpZV9wYWdlMiAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiYjNDM7CWt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIgPSBremFsbG9jX29iaigqa3ZtLSZndDthcmNoLnNpZV9wYWdlMiwKJiM0MzsJCQkJCSAgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiAJaWYgKCFrdm0tJmd0O2FyY2guc2llX3BhZ2UyKQogCQlnb3RvIG91dF9lcnI7CiAKQEAgLTMzNjksNyAmIzQzOzMzNjksNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSkKIAogCXJldHVybiAwOwogb3V0X2VycjoKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLSZndDthcmNoLnNpZV9wYWdlMik7CiYjNDM7CWtmcmVlKGt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIpOwogCWRlYnVnX3VucmVnaXN0ZXIoa3ZtLSZndDthcmNoLmRiZik7CiAJc2NhX2Rpc3Bvc2Uoa3ZtKTsKIAlLVk1fRVZFTlQoMywgJiMzNDtjcmVhdGlvbiBvZiB2bSBmYWlsZWQ6ICVkJiMzNDssIHJjKTsKQEAgLTM0MjcsNyAmIzQzOzM0MjcsNyBAQCB2b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKQogCQltbXVfbm90aWZpZXJfdW5yZWdpc3RlcigmYW1wO2t2bS0mZ3Q7YXJjaC5wdi5tbXVfbm90aWZpZXIsIGt2bS0mZ3Q7bW0pOwogCiAJZGVidWdfdW5yZWdpc3Rlcihrdm0tJmd0O2FyY2guZGJmKTsKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLSZndDthcmNoLnNpZV9wYWdlMik7CiYjNDM7CWtmcmVlKGt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIpOwogCWt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMoa3ZtKTsKIAlrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKGt2bSk7CiAJa3ZtX3MzOTBfdnNpZV9kZXN0cm95KGt2bSk7CkBAIC0zNjU3LDEzICYjNDM7MzY1NywxMyBAQCBzdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB2b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlpZiAodmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2stJmd0O2NicmxvKQotCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbykpOwomIzQzOwkJa2ZyZWUocGh5c190b192aXJ0KHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbykpOwogCXZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbyA9IDA7CiB9CiAKIGludCBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXZvaWQgKmNicmxvX3BhZ2UgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwl2b2lkICpjYnJsb19wYWdlID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAKIAlpZiAoIWNicmxvX3BhZ2UpCiAJCXJldHVybiAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDkyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiBpdCBpbnRyb2R1Y2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb25jZXJucyB0aGF0IHdvdWxkIHdhcnJhbnQgYSBLTVNBTiBzZXNzaW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGRpZmYsIHdoaWNoIHRvdWNoZXMgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY2AsIGBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmNgLCBgYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY2AsIGFuZCBgYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY2AuCgpSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhlIHBhdHRlcm46IGl0JiMzOTtzIHJlcGxhY2luZyBgZ2V0X3plcm9lZF9wYWdlKClgIGFuZCBgZnJlZV9wYWdlKClgIHdpdGggYGt6YWxsb2MoKWAgYW5kIGBrZnJlZSgpYCwgb3IgYGt6YWxsb2Nfb2JqYCBhbmQgYGtmcmVlKClgIGluIHRoZSBjYXNlIG9mIGBzaWVfcGFnZTJgLiBUaGUgY3JpdGljYWwgdGhpbmcgaXMgdGhhdCB3ZSYjMzk7cmUgKnN0aWxsKiB6ZXJvLWluaXRpYWxpemluZyB0aGUgbWVtb3J5IOKAkyB0aGUgY2hhbmdlIGlzIHVzaW5nIGBremFsbG9jYCBpbnN0ZWFkIG9mIGBnZXRfemVyb2VkX3BhZ2VgLCB3aGljaCBpcyBlc3NlbnRpYWxseSBhIHNhZmUgb3BlcmF0aW9uLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMsIGFyZSB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgKmludHJvZHVjZWQqIGJ5IHRoZXNlIGNoYW5nZXM/IE5vLCBiZWNhdXNlIGFsbCB0aGUgYWxsb2NhdGlvbnMgYXJlIHN0aWxsIHplcm8taW5pdGlhbGl6ZWQuIEkmIzM5O3ZlIGdvdCB0byBjaGVjayB3aGV0aGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkLCBjb3BpZWQgdG8gdXNlcnNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdywgYnV0LCB0aGVyZSBpcyBubyBzdWNoIHRoaW5nLiBBcmUgdGhlcmUgdW5pbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzLCBvciBsZWFrcyBvZiBpbmZvcm1hdGlvbj8gQWdhaW4sIGl0IGRvZXNuJiMzOTt0IHNlZW0gbGlrZSBpdC4KCkl0JiMzOTtzIGFjdHVhbGx5IGEgZ29vZCB0aGluZyBpbiB0aGF0IEtNU0FOIHdpbGwgcHJvYmFibHkgY2F0Y2ggb3V0LW9mLWJvdW5kcy91c2UtYWZ0ZXItZnJlZSB3aXRoIHNsYWIgYWxsb2NhdGlvbnMsIHdoZXJlYXMgcGFnZSBhbGxvY2F0aW9ucyBoYWQgcGFnZS1sZXZlbCB0cmFja2luZy4gQmVjYXVzZSB3ZSYjMzk7cmUgdXNpbmcgemVyby1hbGxvY2F0b3JzIChga3phbGxvY2ApLCBldmVyeXRoaW5nIHJlbWFpbnMgZnVsbHkgaW5pdGlhbGl6ZWQuCgpMZXQgbWUganVzdCBkbyBhIHF1aWNrIHNjYW4gdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGFuZCBkb3VibGUtY2hlY2sgYGt6YWxsb2Nfb2JqKCprdm0tJmd0O2FyY2guc2llX3BhZ2UyLCAuLi4pYC4gSSYjMzk7bGwgcnVuIGEgcXVpY2sgc2VhcmNoIGZvciBga3phbGxvY19vYmpgIGFuZCBgc3RydWN0IHNpZV9wYWdlMmAganVzdCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgYmUgZXh0cmEgY2VydGFpbi4gT3ZlcmFsbCwgaXQgYXBwZWFycyB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGFuZCBzYWZlIG9wdGltaXphdGlvbiwgcmVwbGFjaW5nIHRoZSBvbGRlciBhbGxvY2F0aW9uIGZ1bmN0aW9ucyB3aXRoIHRoZSBuZXdlciBvbmVzLCB3aGljaCBtYWludGFpbiB0aGUgZGVzaXJlZCB6ZXJvLWluaXRpYWxpemF0aW9uIGJlaGF2aW9yLiBObyBLTVNBTiBzZXNzaW9uIG5lY2Vzc2FyeSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtremFsbG9jX29iaiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzkzNzggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q9MTAzPWxpc3Q6XG4tLVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTQtXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0OjExNTogICAgICAgICAgZ3JvY2sgPSBremFsbG9jX29iaigqZ3JvY2spO1xuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTYtICAgICAgICAgIGlmICghZ3JvY2spXG4tLVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMjUtXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0OjEyNjogICAgICAgICAgZGltaXRyaSA9IGt6YWxsb2Nfb2JqKCpkaW1pdHJpKTtcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI3LSAgICAgICAgICBpZiAoIWRpbWl0cmkpXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0PTQ1PWEgbWVzc2FnZSBhbmQgYSBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgQVBJIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkpLlxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdC04OS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MDpcdFx0ZGNfc3luYyA9IGt6YWxsb2Nfb2JqKCpkY19zeW5jKTtcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MTpcdFx0ZGNfYXN5bmMgPSBremFsbG9jX29iaigqZGNfYXN5bmMpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0LTkyLVxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdD0yNj1FeGFtcGxlOlxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00NC1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdDo0NTpcdFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0LTQ2LVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTkzOD1UaGUga2VybmVsIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBwdXJwb3NlIG1lbW9yeSBhbGxvY2F0b3JzOlxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTM5OmttYWxsb2MoKSwga3phbGxvYygpLCBrbWFsbG9jX29ianMoKSwga3phbGxvY19vYmpzKCksIHZtYWxsb2MoKSwgYW5kXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NDAtdnphbGxvYygpLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgZnVydGhlciBpbmZvcm1hdGlvblxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTk2ND1UaGUgcHJlZmVycmVkIGZvcm0gZm9yIGFsbG9jYXRpbmcgYSB6ZXJvZWQgYXJyYXkgaXMgdGhlIGZvbGxvd2luZzpcbi0tXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NjctXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdDo5Njg6XHRwID0ga3phbGxvY19vYmpzKCpwLCBuLCAuLi4pO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3QtOTY5LVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdD0zOTg9YmVjb21lLCByZXNwZWN0aXZlbHk6OlxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDAtXHRwdHIgPSBrbWFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDE6XHRwdHIgPSBremFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDItXHRwdHIgPSBrbWFsbG9jX29ianMoKnB0ciwgY291bnQgWywgZ2ZwXSApO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0OjQwMzpcdHB0ciA9IGt6YWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDA0LVx0cHRyID0ga21hbGxvY19mbGV4KCpwdHIsIGZsZXhfbWVtYmVyLCBjb3VudCBbLCBnZnBdICk7XG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTIwOD10byBkZXRhaWxzIGV4cGxhaW5lZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTI2OC0gICAgICAgICAgICAgIC8qIGFsbG9jYXRlIGEgY2hpcC1zcGVjaWZpYyBkYXRhIHdpdGggemVybyBmaWxsZWQgKi9cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDoyNjk6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTI3MC0gICAgICAgICAgICAgIGlmIChjaGlwID09IE5VTEwpXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTYyMz1BZnRlciBhbGxvY2F0aW5nIGEgY2FyZCBpbnN0YW5jZSB2aWEgOmM6ZnVuYzpgc25kX2NhcmRfbmV3KClgXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTYzMC0gIC4uLi4uXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6NjMxOiAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC02MzItXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTY5OD1kZXN0cnVjdG9yIGFuZCBQQ0kgZW50cmllcy4gRXhhbXBsZSBjb2RlIGlzIHNob3duIGZpcnN0LCBiZWxvdzo6XG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTc0OS1cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDo3NTA6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTc1MS0gICAgICAgICAgICAgIGlmIChjaGlwID09IE5VTEwpIHtcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9MzgyMz1jaGlwIGRhdGEgaW5kaXZpZHVhbGx5Ojpcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMzgzNS0gICAgICAgICAgLi4uLlxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjM4MzY6ICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMzgzNy0gICAgICAgICAgLi4uLlxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdD05NDA9SWwga2VybmVsIGZvcm5pc2NlIGkgc2VndWVudGkgYXNzZWduYXRvcmkgYWQgdXNvIGdlbmVyaWNvOlxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0Ojk0MTprbWFsbG9jKCksIGt6YWxsb2MoKSwga21hbGxvY19vYmpzKCksIGt6YWxsb2Nfb2JqcygpLCB2bWFsbG9jKCksIGUgdnphbGxvYygpLlxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk0Mi1QZXIgbWFnZ2lvcmkgaW5mb3JtYXppb25pLCBjb25zdWx0YXRlIGxhIGRvY3VtZW50YXppb25lIGRlbGwmIzM5O0FQSTpcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q9OTY1PUlsIG1vZG8gcHJlZmVyaXRvIHBlciBhc3NlZ25hcmUgdW4gdmV0dG9yZSBhIHplcm8gw6ggaWwgc2VndWVudGU6XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk2OC1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdDo5Njk6XHRwID0ga3phbGxvY19vYmpzKCpwLCBuLCAuLi4pO1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk3MC1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0PTQ0MT1kaXZlbnRhbm8sIHJpc3BldHRpdmFtZW50ZTo6XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00NDMtXHRwdHIgPSBrbWFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDQ0Olx0cHRyID0ga3phbGxvY19vYmooKnB0ciBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQ0NS1cdHB0ciA9IGttYWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0OjQ0NjpcdHB0ciA9IGt6YWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQ0Ny1cdHB0ciA9IGttYWxsb2NfZmxleCgqcHRyLCBmbGV4X21lbWJlciwgY291bnQgWywgZ2ZwXSApO1xuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q9NDEwPXRvcm5hbS1zZSwgcmVzcGVjdGl2YW1lbnRlOjpcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9wdF9CUi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQxMi0gICAgICAgIHB0ciA9IGttYWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvcHRfQlIvcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MTM6ICAgICAgICBwdHIgPSBremFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDE0LSAgICAgICAgcHRyID0ga21hbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDE1OiAgICAgICAgcHRyID0ga3phbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDE2LSAgICAgICAgcHRyID0ga21hbGxvY19mbGV4KCpwdHIsIGZsZXhfbWVtYmVyLCBjb3VudCBbLCBnZnBdICk7XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0PTc5ND1pbnQgbXlfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAxLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0OjgwMjpcdG15X2ZoID0ga3phbGxvY19vYmooKm15X2ZoKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dC04MDMtXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM9NjQ9bW9kdWxlX2Zyb2JfYXJjaF9zZWN0aW9ucyhFbGY2NF9FaGRyICpoZHIsIEVsZjY0X1NoZHIgKnNlY2hkcnMsXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmMtOTUtXHRuc3ltcyA9IHN5bXRhYi1cdTAwM2VzaF9zaXplIC8gc2l6ZW9mKEVsZjY0X1N5bSk7XG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYzo5NjpcdGNoYWlucyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgZ290X2VudHJ5LCBuc3ltcyk7XG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYy05Ny1cdGlmICghY2hhaW5zKSB7XG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYz0zOTA9cmVnaXN0ZXJfY3B1cyh2b2lkKVxuLS1cbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk0LVx0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGkpIHtcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmM6Mzk1Olx0XHRzdHJ1Y3QgY3B1ICpwID0ga3phbGxvY19vYmooKnApO1xuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYy0zOTYtXHRcdGlmICghcClcbi0tXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM9MTEyMD1zdGF0aWMgaW50IGppdF9wcmVwYXJlX2ZpbmFsX21lbV9hbGxvYyhzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbi0tXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMS1cdGlmIChjdHgtXHUwMDNlbmVlZF9leHRyYV9wYXNzKSB7XG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM6MTEzMjpcdFx0Y3R4LVx1MDAzZWppdF9kYXRhID0ga3phbGxvY19vYmooKmN0eC1cdTAwM2VqaXRfZGF0YSk7XG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMy1cdFx0aWYgKCFjdHgtXHUwMDNlaml0X2RhdGEpXG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTIyMD1sb2NvbW9faW5pdF9vbmVfY2hpbGQoc3RydWN0IGxvY29tbyAqbGNoaXAsIHN0cnVjdCBsb2NvbW9fZGV2X2luZm8gKmluZm8pXG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTIyNC1cbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzoyMjU6XHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vX2Rldik7XG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMjI2LVx0aWYgKCFkZXYpIHtcbi0tXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM9MzU2PV9fbG9jb21vX3Byb2JlKHN0cnVjdCBkZXZpY2UgKm1lLCBzdHJ1Y3QgcmVzb3VyY2UgKm1lbSwgaW50IGlycSlcbi0tXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzYyLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jOjM2MzpcdGxjaGlwID0ga3phbGxvY19vYmooc3RydWN0IGxvY29tbyk7XG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzY0LVx0aWYgKCFsY2hpcClcbi0tXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM9NzMzPXNhMTExMV9pbml0X29uZV9jaGlsZChzdHJ1Y3Qgc2ExMTExICpzYWNoaXAsIHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LFxuLS1cbmFyY2gvYXJtL2NvbW1vbi9zYTExMTEuYy03MzktXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM6NzQwOlx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IHNhMTExMV9kZXYpO1xuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jLTc0MS1cdGlmICghZGV2KSB7XG4tLVxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmM9MTc4PXN0YXRpYyBpbnQgc2Nvb3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYy0xODctXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYzoxODg6XHRkZXZwdHIgPSBremFsbG9jX29iaihzdHJ1Y3Qgc2Nvb3BfZGV2KTtcbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jLTE4OS1cdGlmICghZGV2cHRyKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9zbXAuYz0xMDg9c3RhdGljIGludCBzZWNvbmRhcnlfYmlnbGl0dGxlX3ByZXBhcmUodW5zaWduZWQgaW50IGNwdSlcbi0tXG5hcmNoL2FybS9rZXJuZWwvc21wLmMtMTEwLVx0aWYgKCFjcHVfdnRhYmxlW2NwdV0pXG5hcmNoL2FybS9rZXJuZWwvc21wLmM6MTExOlx0XHRjcHVfdnRhYmxlW2NwdV0gPSBremFsbG9jX29iaigqY3B1X3Z0YWJsZVtjcHVdKTtcbmFyY2gvYXJtL2tlcm5lbC9zbXAuYy0xMTItXG4tLVxuYXJjaC9hcm0va2VybmVsL3Zkc28uYz0xNjk9c3RhdGljIGludCBfX2luaXQgdmRzb19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0va2VybmVsL3Zkc28uYy0xODEtXHQvKiBBbGxvY2F0ZSB0aGUgVkRTTyB0ZXh0IHBhZ2VsaXN0ICovXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jOjE4MjpcdHZkc29fdGV4dF9wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB0ZXh0X3BhZ2VzKTtcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmMtMTgzLVx0aWYgKHZkc29fdGV4dF9wYWdlbGlzdCA9PSBOVUxMKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9kYzIxMjg1LmM9MjYxPWludCBfX2luaXQgZGMyMTI4NV9zZXR1cChpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cylcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2NC1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9kYzIxMjg1LmM6MjY1Olx0cmVzID0ga3phbGxvY19vYmpzKHN0cnVjdCByZXNvdXJjZSwgMik7XG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2Ni1cdGlmICghcmVzKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYz02OT1zdGF0aWMgaW50IF9faW5pdCBlYnNhMjg1X2xlZHNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODYtXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jOjg3Olx0XHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODgtXHRcdGlmICghbGVkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYz03MjA9c3RhdGljIGludCBfX2luaXQgbmV0d2luZGVyX2xlZHNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MjktXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmM6NzMwOlx0XHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MzEtXHRcdGlmICghbGVkKVxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYz00NzM9c3RhdGljIGludCBpbXhfbW1kY19wZXJmX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdm9pZCBfX2lvbWVtICptbWRjX2Jhc2UsXG4tLVxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTQ3OS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYzo0ODA6XHRwbXVfbW1kYyA9IGt6YWxsb2Nfb2JqKCpwbXVfbW1kYyk7XG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmMtNDgxLVx0aWYgKCFwbXVfbW1kYykge1xuLS1cbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYz0xMTQ9c3RhdGljIHZvaWQgX19pbml0IGkyY19xdWlyayh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMjktXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmM6MTMwOlx0XHRuZXdfY29tcGF0ID0ga3phbGxvY19vYmooKm5ld19jb21wYXQpO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jLTEzMS1cbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jPTE2Mz1zdGF0aWMgdm9pZCBfX2luaXQgYXJtYWRhXzM3NV8zODBfY29oZXJlbmN5X2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jLTE4Ny1cbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmM6MTg4Olx0XHRwID0ga3phbGxvY19vYmooKnApO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYy0xODktXHRcdHAtXHUwMDNlbmFtZSA9IGtzdHJkdXAoXCYjMzQ7YXJtLGlvLWNvaGVyZW50XCYjMzQ7LCBHRlBfS0VSTkVMKTtcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L212ZWJ1LXNvYy1pZC5jPTE0OD1zdGF0aWMgaW50IF9faW5pdCBtdmVidV9zb2NfZGV2aWNlKHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTYtXG5hcmNoL2FybS9tYWNoLW12ZWJ1L212ZWJ1LXNvYy1pZC5jOjE1NzpcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTgtXHRpZiAoIXNvY19kZXZfYXR0cilcbi0tXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTM4MD1zdGF0aWMgdm9pZCBfX2luaXQgbXhzX21hY2hpbmVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzg5LVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozOTA6XHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzkxLVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYz0yOTQ9c3RhdGljIGludCBfX2luaXQgb21hcDFfc3lzdGVtX2RtYV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYy0zMjEtXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jOjMyMjpcdGQgPSBremFsbG9jX29iaigqZCk7XG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jLTMyMy1cdGlmICghZCkge1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYz0yOTI9c3RhdGljIHZvaWQgb21hcF9tY2JzcF9yZWdpc3Rlcl9ib2FyZF9jZmcoc3RydWN0IHJlc291cmNlICpyZXMsIGludCByZXNfY291bnQsXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jLTI5Ni1cbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYzoyOTc6XHRvbWFwX21jYnNwX2RldmljZXMgPSBremFsbG9jX29ianMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqLCBzaXplKTtcbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTgtXHRpZiAoIW9tYXBfbWNic3BfZGV2aWNlcykge1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYz01MT1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9kbV90aW1lcl9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS90aW1lci5jLTEyNy1cbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYzoxMjg6XHRcdHBkYXRhID0ga3phbGxvY19vYmooKnBkYXRhKTtcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYy0xMjktXHRcdGlmICghcGRhdGEpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL2Nsa3QyeHh4X3ZpcnRfcHJjbV9zZXQuYz0yMzA9dm9pZCBvbWFwMnh4eF9jbGt0X3Zwc19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjM5LVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmM6MjQwOlx0aHcgPSBremFsbG9jX29iaigqaHcpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjQxLVx0aWYgKCFodylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM9Nzg2PXZvaWQgX19pbml0IG9tYXBfc29jX2RldmljZV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jLTc5MC1cbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYzo3OTE6XHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYy03OTItXHRpZiAoIXNvY19kZXZfYXR0cilcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM9MTMxPXN0YXRpYyBpbnQgb21hcF9kZXZpY2VfYnVpbGRfZnJvbV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYy0xNTgtXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM6MTU5Olx0aHdtb2RzID0ga3phbGxvY19vYmpzKHN0cnVjdCBvbWFwX2h3bW9kICosIG9oX2NudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmMtMTYwLVx0aWYgKCFod21vZHMpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYz0zMzg5PXN0YXRpYyBpbnQgb21hcF9od21vZF9hbGxvY2F0ZV9tb2R1bGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb21hcF9od21vZCAqb2gsXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQwMi1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jOjM0MDM6XHRzeXNjID0ga3phbGxvY19vYmooKnN5c2MpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQwNC1cdGlmICghc3lzYylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDMyLVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2b2gtXHUwMDNlc2xhdmVfcG9ydHMpKSB7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNDMzOlx0XHRvaSA9IGt6YWxsb2Nfb2JqKCpvaSk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDM0LVx0XHRpZiAoIW9pKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jPTM1MjE9aW50IG9tYXBfaHdtb2RfaW5pdF9tb2R1bGUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM1MzUtXHRpZiAoIW9oKSB7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTM2Olx0XHRvaCA9IGt6YWxsb2Nfb2JqKCpvaCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTM3LVx0XHRpZiAoIW9oKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM1NDYtXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTQ3Olx0XHRvaC1cdTAwM2VjbGFzcyA9IGt6YWxsb2Nfb2JqKCpvaC1cdTAwM2VjbGFzcyk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTQ4LVx0XHRpZiAoIW9oLVx1MDAzZWNsYXNzKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jPTM3OT1zdGF0aWMgaW50IF9faW5pdCBhbXgzX2lkbGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdV9ub2RlLCBpbnQgY3B1KVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYy00MTItXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmM6NDEzOlx0aWRsZV9zdGF0ZXMgPSBremFsbG9jX29ianMoKmlkbGVfc3RhdGVzLCBzdGF0ZV9jb3VudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmMtNDE0LVx0aWYgKCFpZGxlX3N0YXRlcylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jPTMwPXN0YXRpYyB2b2lkIF9faW5pdCBzcl9zZXRfbnZhbHVlcyhzdHJ1Y3Qgb21hcF92b2x0X2RhdGEgKnZvbHRfZGF0YSxcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jLTQxLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYzo0MjpcdG52YWx1ZV90YWJsZSA9IGt6YWxsb2Nfb2JqcygqbnZhbHVlX3RhYmxlLCBjb3VudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jLTQzLVx0aWYgKCFudmFsdWVfdGFibGUpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jPTEzOT1zdGF0aWMgaW50IF9faW5pdCBwY2llX3NldHVwKHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cylcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTcxLVx0ICovXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM6MTcyOlx0cmVzID0ga3phbGxvY19vYmooc3RydWN0IHJlc291cmNlKTtcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYy0xNzMtXHRpZiAoIXJlcylcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IHBjaV9zZXR1cChzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5Mi1cdCAqL1xuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jOjQ5MzpcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtNDk0LVx0aWYgKCFyZXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYz02ODk9c3RhdGljIHN0cnVjdCBleHBhbnNpb25fY2FyZCAqX19pbml0IGVjYXJkX2FsbG9jX2NhcmQoaW50IHR5cGUsIGludCBzbG90KVxuLS1cbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk0LVxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYzo2OTU6XHRlYyA9IGt6YWxsb2Nfb2JqKGVjYXJkX3QpO1xuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYy02OTYtXHRpZiAoIWVjKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYz05Mz1pbnQgX19pbml0IHNhMTF4eF9jbGtfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTA5LVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMTA6XHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTExMS1cdGlmICghaHcpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMzEtXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jOjEzMjpcdGh3ID0ga3phbGxvY19vYmooKmh3KTtcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTMzLVx0aWYgKCFodylcbi0tXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmM9MzE3PWludCBfX2luaXQgc2ExMXgwX3JlZ2lzdGVyX2ZpeGVkX3JlZ3VsYXRvcihpbnQgbixcbi0tXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmMtMzIzLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jOjMyNDpcdGNmZy1cdTAwM2Vpbml0X2RhdGEgPSBpZCA9IGt6YWxsb2Nfb2JqKCpjZmctXHUwMDNlaW5pdF9kYXRhKTtcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYy0zMjUtXHRpZiAoIWNmZy1cdTAwM2Vpbml0X2RhdGEpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYz0yMjU9c3RhdGljIGludCBuZXBvbnNldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yNzgtXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jOjI3OTpcdGQgPSBremFsbG9jX29iaigqZCk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jLTI4MC1cdGlmICghZCkge1xuLS1cbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jPTE0MT1zdGF0aWMgaW50IF9faW5pdCByY2FyX2dlbjJfcmVndWxhdG9yX3F1aXJrKHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmMtMTY2LVxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmM6MTY3Olx0XHRxdWlyayA9IGt6YWxsb2Nfb2JqKCpxdWlyayk7XG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjgtXHRcdGlmICghcXVpcmspIHtcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz0zOTM9c3RhdGljIGludCB2ZV9zcGNfcG9wdWxhdGVfb3Bwcyh1aW50MzJfdCBjbHVzdGVyKVxuLS1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5Ny1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jOjM5ODpcdG9wcHMgPSBremFsbG9jX29ianMoKm9wcHMsIE1BWF9PUFBTKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5OS1cdGlmICghb3Bwcylcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz00NDI9aW50IF9faW5pdCB2ZV9zcGNfaW5pdCh2b2lkIF9faW9tZW0gKmJhc2VhZGRyLCB1MzIgYTE1X2NsdXNpZCwgaW50IGlycSlcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy00NDQtXHRpbnQgcmV0O1xuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM6NDQ1Olx0aW5mbyA9IGt6YWxsb2Nfb2JqKCppbmZvKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0Ni1cdGlmICghaW5mbylcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz01MjM9c3RhdGljIHN0cnVjdCBjbGsgKnZlX3NwY19jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqY3B1X2Rldilcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy01MjctXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzo1Mjg6XHRzcGMgPSBremFsbG9jX29iaigqc3BjKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTUyOS1cdGlmICghc3BjKVxuLS1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jPTEyMz1zdGF0aWMgdm9pZCBfX2luaXQgdmVyc2F0aWxlX2R0X3BjaV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmMtMTQ0LVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmM6MTQ1Olx0bmV3cHJvcCA9IGt6YWxsb2Nfb2JqKCpuZXdwcm9wKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jLTE0Ni1cdGlmICghbmV3cHJvcClcbi0tXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmM9MTA1PXN0YXRpYyB2b2lkIF9faW5pdCB6eW5xX2luaXRfbWFjaGluZSh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYy0xMTAtXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmM6MTExOlx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEyLVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYz01MDM9c3RhdGljIF9faW5pdCBpbnQgbDJ4MF9wbXVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmMtNTA5LVxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYzo1MTA6XHRsMngwX3BtdSA9IGt6YWxsb2Nfb2JqKCpsMngwX3BtdSk7XG5hcmNoL2FybS9tbS9jYWNoZS1sMngwLXBtdS5jLTUxMS1cdGlmICghbDJ4MF9wbXUpIHtcbi0tXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jPTMxNT1zdGF0aWMgaW50IF9faW5pdCBfX3VuaXBoaWVyX2NhY2hlX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jLTM0NC1cbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmM6MzQ1Olx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmMtMzQ2LVx0aWYgKCFkYXRhKVxuLS1cbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmM9NTMzPXN0YXRpYyB2b2lkICpfX2RtYV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLCBkbWFfYWRkcl90ICpoYW5kbGUsXG4tLVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjAtXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjU2MTpcdGJ1ZiA9IGt6YWxsb2Nfb2JqKCpidWYsXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTU2Mi1cdFx0XHQgIGdmcCBcdTAwMjYgfihfX0dGUF9ETUEgfCBfX0dGUF9ETUEzMiB8IF9fR0ZQX0hJR0hNRU0pKTtcbi0tXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTE0ODc9YXJtX2lvbW11X2NyZWF0ZV9tYXBwaW5nKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBiYXNlLCB1NjQgc2l6ZSlcbi0tXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTE1MDYtXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjE1MDc6XHRtYXBwaW5nID0ga3phbGxvY19vYmooc3RydWN0IGRtYV9pb21tdV9tYXBwaW5nKTtcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtMTUwOC1cdGlmICghbWFwcGluZylcbi0tXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM9MzE2PWludCBfX2luaXQgYXJjaF94ZW5fdW5wb3B1bGF0ZWRfaW5pdChzdHJ1Y3QgcmVzb3VyY2UgKipyZXMpXG4tLVxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM0My1cbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYzozNDQ6XHRyZWdzID0ga3phbGxvY19vYmpzKCpyZWdzLCBucl9yZWcpO1xuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM0NS1cdGlmICghcmVncykge1xuLS1cbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zODctXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM6Mzg4Olx0XHR0bXBfcmVzID0ga3phbGxvY19vYmooKnRtcF9yZXMpO1xuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM4OS1cdFx0aWYgKCF0bXBfcmVzKSB7XG4tLVxuYXJjaC9hcm0veGVuL3AybS5jPTE1MD1ib29sIF9fc2V0X3BoeXNfdG9fbWFjaGluZV9tdWx0aSh1bnNpZ25lZCBsb25nIHBmbixcbi0tXG5hcmNoL2FybS94ZW4vcDJtLmMtMTc4LVxuYXJjaC9hcm0veGVuL3AybS5jOjE3OTpcdHAybV9lbnRyeSA9IGt6YWxsb2Nfb2JqKCpwMm1fZW50cnksIEdGUF9OT1dBSVQpO1xuYXJjaC9hcm0veGVuL3AybS5jLTE4MC1cdGlmICghcDJtX2VudHJ5KVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYz02OD1zdGF0aWMgaW50IF9faW5pdCBfX3Zkc29faW5pdChlbnVtIHZkc29fYWJpIGFiaSlcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmMtODMtXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmM6ODQ6XHR2ZHNvX3BhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mb1thYmldLnZkc29fcGFnZXMpO1xuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jLTg1LVx0aWYgKHZkc29fcGFnZWxpc3QgPT0gTlVMTClcbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYz00ODA9c3RhdGljIGludCBzaGFyZV9wZm5faHlwKHU2NCBwZm4pXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtNDkyLVxuYXJjaC9hcm02NC9rdm0vbW11LmM6NDkzOlx0dGhpcyA9IGt6YWxsb2Nfb2JqKCp0aGlzKTtcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5NC1cdGlmICghdGhpcykge1xuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jPTk4MT1pbnQga3ZtX2luaXRfc3RhZ2UyX21tdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczJfbW11ICptbXUsIHVuc2lnbmVkIGxvbmcgdHlwZSlcbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA3LVxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTAwODpcdHBndCA9IGt6YWxsb2Nfb2JqKCpwZ3QsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA5LVx0aWYgKCFwZ3QpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmM9MTE4MD1pbnQgdG9wdXBfaHlwX21lbWNhY2hlKHN0cnVjdCBrdm1faHlwX21lbWNhY2hlICptYywgdW5zaWduZWQgbG9uZyBtaW5fcGFnZXMpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTE4NS1cdGlmICghbWMtXHUwMDNlbWFwcGluZykge1xuYXJjaC9hcm02NC9rdm0vbW11LmM6MTE4NjpcdFx0bWMtXHUwMDNlbWFwcGluZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBwa3ZtX21hcHBpbmcsXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMTg3LVx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmM9MjUxMz1pbnQgX19pbml0IGt2bV9tbXVfaW5pdCh1MzIgaHlwX3ZhX2JpdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMjU0Ni1cbmFyY2gvYXJtNjQva3ZtL21tdS5jOjI1NDc6XHRoeXBfcGd0YWJsZSA9IGt6YWxsb2Nfb2JqKCpoeXBfcGd0YWJsZSk7XG5hcmNoL2FybTY0L2t2bS9tbXUuYy0yNTQ4LVx0aWYgKCFoeXBfcGd0YWJsZSkge1xuLS1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTEzODI9aW50IGt2bV92Y3B1X2FsbG9jYXRlX3ZuY3JfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xMzg3LVx0aWYgKCF2Y3B1LVx1MDAzZWFyY2gudm5jcl90bGIpIHtcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jOjEzODg6XHRcdHN0cnVjdCB2bmNyX3RsYiAqdnQgPSBremFsbG9jX29iaigqdmNwdS1cdTAwM2VhcmNoLnZuY3JfdGxiLFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTM4OS1cdFx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM9MTg2OT1pbnQga3ZtX2luaXRfbnZfc3lzcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTg3OC1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jOjE4Nzk6XHRrdm0tXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MgPSBremFsbG9jX29iaigqKGt2bS1cdTAwM2VhcmNoLnN5c3JlZ19tYXNrcyksXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xODgwLVx0XHRcdFx0XHQgICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM9MTE2PXN0YXRpYyBzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSAqa3ZtX3B0ZHVtcF9wYXJzZXJfY3JlYXRlKHN0cnVjdCBrdm1fczJfbW11ICptbXUpXG4tLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmMtMTIxLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM6MTIyOlx0c3QgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jLTEyMy1cdGlmICghc3QpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz0yMDg9c3RhdGljIGludCBrdm1fdmdpY19kaXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgbnJfc3Bpcylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTIxNy1cdGRpc3QtXHUwMDNlYWN0aXZlX3NwaXMgPSAoYXRvbWljX3QpQVRPTUlDX0lOSVQoMCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjIxODpcdGRpc3QtXHUwMDNlc3BpcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsIG5yX3NwaXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTIxOS1cdGlmICghZGlzdC1cdTAwM2VzcGlzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9MzIwPXN0YXRpYyBpbnQgdmdpY19hbGxvY2F0ZV9wcml2YXRlX2lycXNfbG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0zMzUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjMzNjpcdHZnaWNfY3B1LVx1MDAzZXByaXZhdGVfaXJxcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTMzNy1cdFx0XHRcdFx0ICAgICAgbnVtX3ByaXZhdGVfaXJxcyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xNDI9aW50IGt2bV92Z2ljX3NldHVwX2RlZmF1bHRfaXJxX3JvdXRpbmcoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTE0OC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjE0OTpcdGVudHJpZXMgPSBremFsbG9jX29ianMoKmVudHJpZXMsIG5yLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTUwLVx0aWYgKCFlbnRyaWVzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz03Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2FkZF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTg3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjg4Olx0aXJxID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXJxLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTg5LVx0aWYgKCFpcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTk3MT1zdGF0aWMgaW50IHZnaWNfaXRzX2FsbG9jX2NvbGxlY3Rpb24oc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk3Ni1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo5Nzc6XHRjb2xsZWN0aW9uID0ga3phbGxvY19vYmooKmNvbGxlY3Rpb24sIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTc4LVx0aWYgKCFjb2xsZWN0aW9uKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMDE1PXN0YXRpYyBzdHJ1Y3QgaXRzX2l0ZSAqdmdpY19pdHNfYWxsb2NfaXRlKHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2UsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEwMjAtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTAyMTpcdGl0ZSA9IGt6YWxsb2Nfb2JqKCppdGUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTAyMi1cdGlmICghaXRlKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMTQyPXN0YXRpYyBzdHJ1Y3QgaXRzX2RldmljZSAqdmdpY19pdHNfYWxsb2NfZGV2aWNlKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMTQ3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjExNDg6XHRkZXZpY2UgPSBremFsbG9jX29iaigqZGV2aWNlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExNDktXHRpZiAoIWRldmljZSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTg1NT1zdGF0aWMgaW50IHZnaWNfaXRzX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTg2Mi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODYzOlx0aXRzID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXRzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NjQtXHRpZiAoIWl0cylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTg4Nj1zdGF0aWMgaW50IHZnaWNfdjNfYWxsb2NfcmVkaXN0X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIHVpbnQzMl90IGluZGV4LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMxLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo5MzI6XHRyZHJlZyA9IGt6YWxsb2Nfb2JqKCpyZHJlZywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMzLVx0aWYgKCFyZHJlZylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYz0yNDI9aW50IHZnaWNfdjRfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmMtMjU4LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM6MjU5Olx0ZGlzdC1cdTAwM2VpdHNfdm0udnBlcyA9IGt6YWxsb2Nfb2JqcygqZGlzdC1cdTAwM2VpdHNfdm0udnBlcywgbnJfdmNwdXMsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy0yNjAtXHRcdFx0XHRcdCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jPTIxNTY9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTc3LVx0aWYgKCFqaXRfZGF0YSkge1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjE3ODpcdFx0aml0X2RhdGEgPSBremFsbG9jX29iaigqaml0X2RhdGEpO1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjE3OS1cdFx0aWYgKCFqaXRfZGF0YSlcbi0tXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYz0xNz1zdGF0aWMgaW50IF9faW5pdCB2ZHNvX2luaXQodm9pZClcbi0tXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yMi1cdHZkc29fcGFnZWxpc3QgPVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTY0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGVuc3VyaW5nIHRoaXMgY29kZSBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBzdWJ0bGUgbmFzdGllcy4gSSBuZWVkIHRvIG1ldGljdWxvdXNseSBpbnNwZWN0IGV2ZXJ5IHNpbmdsZSBmaWxlIHRoaXMgcGF0Y2ggbW9kaWZpZXMuIEkmIzM5O20gZXNwZWNpYWxseSBvbiB0aGUgbG9va291dCBmb3IgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIHRoYXQgbWlnaHQgYmUgZXhwb3NlZCBieSB0aGVzZSBjaGFuZ2VzLiBUaGluayBhYm91dCBzY2VuYXJpb3Mgd2hlcmUgdW5leHBlY3RlZCBpbnB1dHMgY291bGQgbGVhZCB0byB0cm91YmxlLiBJIG5lZWQgdG8gYmUgKnN1cmUqIHRoaXMgcGF0Y2ggaGFuZGxlcyB0aG9zZSBncmFjZWZ1bGx5LiBCZXlvbmQgZWRnZSBjYXNlcywgSeKAmW0gYWxzbyBleHRyZW1lbHkgd2FyeSBvZiB0aGUgcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gQSBjYXJlbGVzcyBjaGFuZ2UgaGVyZSBjb3VsZCBvcGVuIHRoZSBkb29yIHRvIGFsbCBzb3J0cyBvZiB2dWxuZXJhYmlsaXRpZXMsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLiBTbywgbXkgZ29hbCBpcyB0byB2ZXJpZnkgdGhhdCBtZW1vcnkgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGFueSByZWFkIG9yIHdyaXRlIG9wZXJhdGlvbiBvY2N1cnMuIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IHRyYWNlIHRoZSBkYXRhIGZsb3dzIGFuZCBsb2dpYyBwYXRocyBhZmZlY3RlZCBieSB0aGlzIHBhdGNoIHdpdGggdGhlIHNvbGUgcHVycG9zZSBvZiBjb25maXJtaW5nIHRoZXJlIGFyZSBubyBuZXcgb3Bwb3J0dW5pdGllcyBmb3Igc3VidGxlLCBoYXJkLXRvLWRlYnVnIGRlZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MzA6XHRcdGlmIChyZWcxID09IHJlZzIgfHwgcmVnMSBcdTAwMjYgMSB8fCByZWcyIFx1MDAyNiAxKVxuIDQzMTpcdFx0XHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dyYW1faW50KHZjcHUsIFBHTV9TUEVDSUZJQ0FUSU9OKTtcbiA0MzI6XHRcbiA0MzM6XHRcdGlmIChjb2RlIFx1MDAyNiAweGZmZmYpIHtcbiA0MzQ6XHRcdFx0Y2MgPSAzO1xuIDQzNTpcdFx0XHRyYyA9IDQ7XG4gNDM2Olx0XHRcdGdvdG8gb3V0O1xuIDQzNzpcdFx0fVxuIDQzODpcdFxuIDQzOTpcdFx0aWYgKCFrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpIFx1MDAyNlx1MDAyNiAoYWRkciBcdTAwMjYgflBBR0VfTUFTSykpXG4gNDQwOlx0XHRcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pO1xuIDQ0MTpcdFxuIDQ0MjpcdFx0c2N0bnMgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiA0NDM6XHRcdGlmICghc2N0bnMpXG4gNDQ0Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDQ0NTpcdFxuIDQ0NjpcdFx0Y2MgPSBzdGh5aV9maWxsKHNjdG5zLCBcdTAwMjZyYyk7XG4gNDQ3Olx0XHRpZiAoY2MgXHUwMDNjIDApIHtcbiA0NDg6XHRcdFx0a2ZyZWUoc2N0bnMpO1xuIDQ0OTpcdFx0XHRyZXR1cm4gY2M7XG4gNDUwOlx0XHR9XG4gNDUxOlx0b3V0OlxuIDQ1MjpcdFx0aWYgKCFjYykge1xuIDQ1MzpcdFx0XHRpZiAoa3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSkge1xuIDQ1NDpcdFx0XHRcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayksIHNjdG5zLCBQQUdFX1NJWkUpO1xuIDQ1NTpcdFx0XHR9IGVsc2Uge1xuIDQ1NjpcdFx0XHRcdHIgPSB3cml0ZV9ndWVzdCh2Y3B1LCBhZGRyLCByZWcyLCBzY3RucywgUEFHRV9TSVpFKTtcbiA0NTc6XHRcdFx0XHRpZiAocikge1xuIDQ1ODpcdFx0XHRcdFx0a2ZyZWUoc2N0bnMpO1xuIDQ1OTpcdFx0XHRcdFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcik7XG4gNDYwOlx0XHRcdFx0fVxuIDQ2MTpcdFx0XHR9XG4gNDYyOlx0XHR9XG4gNDYzOlx0XG4gNDY0Olx0XHRrZnJlZShzY3Rucyk7XG4gNDY1Olx0XHR2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VzLnJlZ3MuZ3Byc1tyZWcyICYjNDM7IDFdID0gcmM7XG4gNDY2Olx0XHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTtcbiA0Njc6XHRcdHJldHVybiByO1xuIDQ2ODpcdH1cbiA0Njk6XHRcbiA0NzA6XHRzdGF0aWMgaW50IGhhbmRsZV9vcGVyZXhjKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiA0NzE6XHR7XG4gNDcyOlx0XHRwc3dfdCBvbGRwc3csIG5ld3BzdztcbiA0NzM6XHRcdGludCByYztcbiA0NzQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1NjEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgKioKCk9rYXksIEkgbmVlZCB0byBnZXQgbXkgYmVhcmluZ3Mgb24gdGhpcyBzcGVjaWZpYyBhcmVhIG9mIHRoZSBzMzkwIEtWTSBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byB0YWtlIGEgbG9vayBhdCBgYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY2AuIFRoaXMgZmlsZSBhbG1vc3QgY2VydGFpbmx5IGRlYWxzIHdpdGggcHJpdmlsZWdlZCBpbnN0cnVjdGlvbiBoYW5kbGluZyBhbmQgcG90ZW50aWFsbHkgdGhlIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBndWVzdCBhbmQgdGhlIGhvc3QgZm9yIHRob3NlIHR5cGVzIG9mIG9wZXJhdGlvbnMsIGdpdmVuIHRoZSBuYW1lLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgZGVmaW5pdGlvbnMgZm9yIHRoaW5ncyBsaWtlIHRoZSBoeXBlcmNhbGwgaW50ZXJmYWNlcywgYW55IGVtdWxhdGVkIGluc3RydWN0aW9ucyB0aGF0IG5lZWQgc3BlY2lhbCB0cmVhdG1lbnQsIGFuZCBwb3NzaWJseSB0aGUgc3RydWN0dXJlcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgZ3Vlc3QmIzM5O3MgcHJpdmlsZWdlZCBzdGF0ZSB0aGF0IEtWTSBuZWVkcyB0byBtYW5hZ2UuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgaGFuZGxlcnMgZm9yIERJQUcgaW5zdHJ1Y3Rpb24gaW50ZXJjZXB0aW9uLCBQU1cgbWFuaXB1bGF0aW9uIHdpdGhpbiB0aGUgdmlydHVhbCBtYWNoaW5lLCBhbmQgYW55IGNvZGUgcmVsYXRlZCB0byB2aXJ0dWFsaXphdGlvbiBvZiBjb250cm9sIHJlZ2lzdGVycy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsb2NrIHVzYWdlIHdpdGhpbiB0aGlzIGZpbGUsIGVzcGVjaWFsbHkgaWYgdGhlcmUgYXJlIGFueSByYWNlIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBiZSBleHBsb2l0YWJsZSB3aGVuIGRlYWxpbmcgd2l0aCBzZW5zaXRpdmUgb3BlcmF0aW9ucy4gTXkgZmlyc3QgcGFzcyB3aWxsIGxpa2VseSBiZSBoaWdoIGxldmVsIHRvIGdldCB0aGUgc3RydWN0dXJlIG9mIHRoZSBmaWxlLCB0aGVuIEkmIzM5O2xsIGRyaWxsIGRvd24gdG8gYW55IHNwZWNpZmljIGFyZWFzIHRoYXQgbG9vayBpbnRlcmVzdGluZyB0byBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5MDU6XHRcdH1cbiA5MDY6XHRcbiA5MDc6XHRcdG9wZXJhbmQyID0ga3ZtX3MzOTBfZ2V0X2Jhc2VfZGlzcF9zKHZjcHUsIFx1MDAyNmFyKTtcbiA5MDg6XHRcbiA5MDk6XHRcdGlmICgha3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSBcdTAwMjZcdTAwMjYgKG9wZXJhbmQyIFx1MDAyNiAweGZmZikpXG4gOTEwOlx0XHRcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pO1xuIDkxMTpcdFxuIDkxMjpcdFx0c3dpdGNoIChmYykge1xuIDkxMzpcdFx0Y2FzZSAxOiAvKiBzYW1lIGhhbmRsaW5nIGZvciAxIGFuZCAyICovXG4gOTE0Olx0XHRjYXNlIDI6XG4gOTE1Olx0XHRcdG1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIDkxNjpcdFx0XHRpZiAoIW1lbSlcbiA5MTc6XHRcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuIDkxODpcdFx0XHRpZiAoc3RzaShtZW0sIGZjLCBzZWwxLCBzZWwyKSlcbiA5MTk6XHRcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuIDkyMDpcdFx0XHRicmVhaztcbiA5MjE6XHRcdGNhc2UgMzpcbiA5MjI6XHRcdFx0aWYgKHNlbDEgIT0gMiB8fCBzZWwyICE9IDIpXG4gOTIzOlx0XHRcdFx0Z290byBvdXRfbm9fZGF0YTtcbiA5MjQ6XHRcdFx0bWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gOTI1Olx0XHRcdGlmICghbWVtKVxuIDkyNjpcdFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4gOTI3Olx0XHRcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsIG1lbSk7XG4gOTI4Olx0XHRcdGJyZWFrO1xuIDkyOTpcdFx0Y2FzZSAxNTogLyogZmMgMTUgaXMgZnVsbHkgaGFuZGxlZCBpbiB1c2Vyc3BhY2UgKi9cbiA5MzA6XHRcdFx0aW5zZXJ0X3N0c2lfdXNyX2RhdGEodmNwdSwgb3BlcmFuZDIsIGFyLCBmYywgc2VsMSwgc2VsMik7XG4gOTMxOlx0XHRcdHRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7XG4gOTMyOlx0XHRcdHJldHVybiAtRVJFTU9URTtcbiA5MzM6XHRcdH1cbiA5MzQ6XHRcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4gOTM1Olx0XHRcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayksIG1lbSwgUEFHRV9TSVpFKTtcbiA5MzY6XHRcdFx0cmMgPSAwO1xuIDkzNzpcdFx0fSBlbHNlIHtcbiA5Mzg6XHRcdFx0cmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTtcbiA5Mzk6XHRcdH1cbiA5NDA6XHRcdGlmIChyYykge1xuIDk0MTpcdFx0XHRyYyA9IGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcmMpO1xuIDk0MjpcdFx0XHRnb3RvIG91dDtcbiA5NDM6XHRcdH1cbiA5NDQ6XHRcdGlmICh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnVzZXJfc3RzaSkge1xuIDk0NTpcdFx0XHRpbnNlcnRfc3RzaV91c3JfZGF0YSh2Y3B1LCBvcGVyYW5kMiwgYXIsIGZjLCBzZWwxLCBzZWwyKTtcbiA5NDY6XHRcdFx0cmMgPSAtRVJFTU9URTtcbiA5NDc6XHRcdH1cbiA5NDg6XHRcdHRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7XG4gOTQ5Olx0XHRrZnJlZShtZW0pO1xuIDk1MDpcdFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAwKTtcbiA5NTE6XHRcdHZjcHUtXHUwMDNlcnVuLVx1MDAzZXMucmVncy5ncHJzWzBdID0gMDtcbiA5NTI6XHRcdHJldHVybiByYztcbiA5NTM6XHRvdXRfbm9fZGF0YTpcbiA5NTQ6XHRcdGt2bV9zMzkwX3NldF9wc3dfY2ModmNwdSwgMyk7XG4gOTU1Olx0b3V0OlxuIDk1NjpcdFx0a2ZyZWUobWVtKTtcbiA5NTc6XHRcdHJldHVybiByYztcbiA5NTg6XHR9XG4gOTU5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODY5CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEtWTS9zMzkwIEludGVycnVwdCBIYW5kbGluZyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBLVk0vczM5MCBpbnRlcmFjdGlvbiwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBpbnRlcnJ1cHRzLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRvIHplcm8gaW4gb24gdHdvIGtleSBmaWxlczogYGFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNgIGFuZCBgaW50ZXJydXB0LmNgLiBgczM5MC5jYCBpcyB0aGUgbGlrZWx5IHBsYWNlIHdoZXJlIGNvcmUgczM5MC1zcGVjaWZpYyBLVk0gc2V0dXAgYW5kIGZ1bmN0aW9uYWxpdHkgcmVzaWRlLCBhbmQgd2l0aGluIHRoYXQsIHRoZSBjb25uZWN0aW9uIHRvIGludGVycnVwdCBoYW5kbGluZyB3aWxsIGJlIHZpdGFsLiBDb252ZXJzZWx5LCBpbnRlcnJ1cHQuYyBpcyB3aGVyZSBsb3cgbGV2ZWwgaW50ZXJydXB0IGZ1bmN0aW9ucyBhcmUuIE5vdyBJIHN1c3BlY3QgdGhlc2Ugd2lsbCBwcm92aWRlIHRoZSBjcml0aWNhbCBwaWVjZXMgb2YgdGhlIHB1enpsZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgaW50ZXJydXB0IHZlY3RvcmluZywgdGhlIGludGVycnVwdCBpbmplY3Rpb24gbWVjaGFuaXNtcywgYW5kIHRoZSBjcnVjaWFsIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBndWVzdCYjMzk7cyB2aWV3IG9mIGludGVycnVwdHMgYW5kIHRoZSBob3N0JiMzOTtzIGhhbmRsaW5nIG9mIHRoZW0gZGVmaW5lZCBpbiB0aGVzZSBhcmVhcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYXJkd2FyZSBpbnRlcnJ1cHRzIGFyZSBtYXBwZWQgdG8gZ3Vlc3QgaW50ZXJydXB0cyB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudCwgYW5kIHRoYXQgd2lsbCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVzZSBmaWxlcy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMyNzA6XHRcbjMyNzE6XHRcdGt2bS1cdTAwM2VhcmNoLmRiZiA9IGRlYnVnX3JlZ2lzdGVyKGRlYnVnX25hbWUsIDMyLCAxLCA3ICogc2l6ZW9mKGxvbmcpKTtcbjMyNzI6XHRcdGlmICgha3ZtLVx1MDAzZWFyY2guZGJmKVxuMzI3MzpcdFx0XHRnb3RvIG91dF9lcnI7XG4zMjc0Olx0XG4zMjc1Olx0XHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBzaWVfcGFnZTIpICE9IDQwOTYpO1xuMzI3NjpcdFx0a3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyID0ga3phbGxvY19vYmooKmt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMixcbjMyNzc6XHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcbjMyNzg6XHRcdGlmICgha3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyKVxuMzI3OTpcdFx0XHRnb3RvIG91dF9lcnI7XG4zMjgwOlx0XG4zMjgxOlx0XHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTItXHUwMDNla3ZtID0ga3ZtO1xuMzI4MjpcdFx0a3ZtLVx1MDAzZWFyY2gubW9kZWwuZmFjX2xpc3QgPSBrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTItXHUwMDNlZmFjX2xpc3Q7XG4zMjgzOlx0XG4zMjg0Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGt2bV9zMzkwX2ZhY19iYXNlKTsgaSYjNDM7JiM0MzspIHtcbjMyODU6XHRcdFx0a3ZtLVx1MDAzZWFyY2gubW9kZWwuZmFjX21hc2tbaV0gPSBzdGZsZV9mYWNfbGlzdFtpXSBcdTAwMjZcbjMyODY6XHRcdFx0XHRcdFx0ICAgICAga3ZtX3MzOTBfZmFjX2Jhc2VbaV07XG4zMjg3Olx0XHRcdGt2bS1cdTAwM2VhcmNoLm1vZGVsLmZhY19saXN0W2ldID0gc3RmbGVfZmFjX2xpc3RbaV0gXHUwMDI2XG4zMjg4Olx0XHRcdFx0XHRcdCAgICAgIGt2bV9zMzkwX2ZhY19iYXNlW2ldO1xuMzI4OTpcdFx0fVxuMzI5MDpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShrdm1fczM5MF9mYWNfZXh0KTsgaSYjNDM7JiM0MzspIHtcbjMyOTE6XHRcdFx0a3ZtLVx1MDAzZWFyY2gubW9kZWwuZmFjX21hc2tbaV0gfD0gc3RmbGVfZmFjX2xpc3RbaV0gXHUwMDI2XG4zMjkyOlx0XHRcdFx0XHRcdCAgICAgICBrdm1fczM5MF9mYWNfZXh0W2ldO1xuMzI5MzpcdFx0fVxuMzI5NDpcdFx0a3ZtLVx1MDAzZWFyY2gubW9kZWwuc3ViZnVuY3MgPSBrdm1fczM5MF9hdmFpbGFibGVfc3ViZnVuYztcbjMyOTU6XHRcbjMyOTY6XHRcdC8qIHdlIGFyZSBhbHdheXMgaW4gY3phbSBtb2RlIC0gZXZlbiBvbiBwcmUgejE0IG1hY2hpbmVzICovXG4zMjk3Olx0XHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cdTAwM2VhcmNoLm1vZGVsLmZhY19tYXNrLCAxMzgpO1xuMzI5ODpcdFx0c2V0X2t2bV9mYWNpbGl0eShrdm0tXHUwMDNlYXJjaC5tb2RlbC5mYWNfbGlzdCwgMTM4KTtcbjMyOTk6XHRcdC8qIHdlIGVtdWxhdGUgU1RIWUkgaW4ga3ZtICovXG4zMzAwOlx0XHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cdTAwM2VhcmNoLm1vZGVsLmZhY19tYXNrLCA3NCk7XG4zMzAxOlx0XHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cdTAwM2VhcmNoLm1vZGVsLmZhY19saXN0LCA3NCk7XG4zMzAyOlx0XHRpZiAobWFjaGluZV9oYXNfdGxiX2d1ZXN0KCkpIHtcbjMzMDM6XHRcdFx0c2V0X2t2bV9mYWNpbGl0eShrdm0tXHUwMDNlYXJjaC5tb2RlbC5mYWNfbWFzaywgMTQ3KTtcbjMzMDQ6XHRcdFx0c2V0X2t2bV9mYWNpbGl0eShrdm0tXHUwMDNlYXJjaC5tb2RlbC5mYWNfbGlzdCwgMTQ3KTtcbjMzMDU6XHRcdH1cbjMzMDY6XHRcbjMzMDc6XHRcdGlmIChjc3NfZ2VuZXJhbF9jaGFyYWN0ZXJpc3RpY3MuYWl2IFx1MDAyNlx1MDAyNiB0ZXN0X2ZhY2lsaXR5KDY1KSlcbjMzMDg6XHRcdFx0c2V0X2t2bV9mYWNpbGl0eShrdm0tXHUwMDNlYXJjaC5tb2RlbC5mYWNfbWFzaywgNjUpO1xuMzMwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA2NwoJCQkJCQkJb3V0cHV0OiAxOTIKCQkJCQkJCXRob3VnaHRzOiAyNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQXNzZXNzbWVudDogTm8gTmV3IFJpc2tzIERldGVjdGVkKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgc3dhcC1vdXQsIHJlcGxhY2luZyB0aGUgb2xkIGBnZXRfemVyb2VkX3BhZ2VgIGFuZCBgZnJlZV9wYWdlYCBmdW5jdGlvbnMgd2l0aCB0aGUgbmV3ZXIgYGt6YWxsb2NgIChvciBga3phbGxvY19vYmpgKSBhbmQgYGtmcmVlYCBpbiB0aGUgczM5MCBLVk0gc3Vic3lzdGVtLiBUaGUgY3JpdGljYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZSAqemVyby1pbml0aWFsaXphdGlvbiogaXMgbWFpbnRhaW5lZC4gRXZlcnkgc2luZ2xlIHBsYWNlIHRoZSBvbGQgY29kZSB3YXMgYWxsb2NhdGluZyB6ZXJvZWQgcGFnZXMsIHRoZSBuZXcgY29kZSBpcyBhbHNvIGFsbG9jYXRpbmcgemVyb2VkIG1lbW9yeSB0aHJvdWdoIGBremFsbG9jYC4gVGhpcyBpcyBrZXkuCgpUaGVyZSYjMzk7cyBhYnNvbHV0ZWx5IG5vIGV2aWRlbmNlIG9mIGludHJvZHVjaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB3aGF0c29ldmVyLiBObyBuZXcgcGF0aHMgYXJlIGNyZWF0ZWQgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIHRoZSB1c2Ugb2YgdW5pbml0aWFsaXplZCBkYXRhLCBhbmQsIGNyaXRpY2FsbHksIG5vIHVzZXItc3BhY2UgbGVha3MgYXJlIGVuYWJsZWQuIFdlJiMzOTtyZSBrZWVwaW5nIHRoaW5ncyBjbGVhbi4KCkdpdmVuIHRoZXNlIHBvaW50cywgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHdlIGFic29sdXRlbHkgZG8gKm5vdCogbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gZm9yIHRoaXMgY2hhbmdlLiBUaGUgcmVwbGFjZW1lbnQgb2YgcGFnZSBhbGxvY2F0aW9ucyB3aXRoIHNsYWIgYWxsb2NhdGlvbnMsIHdoaWxlIGEgZGlmZmVyZW50IG1lY2hhbmlzbSwgbWFpbnRhaW5zIHRoZSBjcnVjaWFsIHplcm8taW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIHdoYXQgS01TQU4gd291bGQgYmUgcGFydGljdWxhcmx5IGNvbmNlcm5lZCBhYm91dC4gQW55IG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyBmcm9tIHRoZSBzbGFiIGNvbnZlcnNpb25zIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBhbnl3YXkuCgpJJiMzOTttIHJlYWR5IHRvIG1hcmsgdGhpcyBhcyBLTVNBTi1jbGVhbi4gTGV0JiMzOTtzIGludm9rZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb252ZXJ0cyBwYWdlIGFsbG9jYXRpb25zIHZpYSBnZXRfemVyb2VkX3BhZ2UoKSBhbmQgZnJlZV9wYWdlKCkgdG8gc2xhYiBhbGxvY2F0aW9ucyB2aWEga3phbGxvYygpL2t6YWxsb2Nfb2JqKCkgYW5kIGtmcmVlKCkgYWNyb3NzIHMzOTAgS1ZNIGNvZGUgKGludGVyY2VwdC5jLCBpbnRlcnJ1cHQuYywgcHJpdi5jLCBzMzkwLmMpLiBcblxuU2luY2Uga3phbGxvYy9remFsbG9jX29iaiB6ZXJvLWluaXRpYWxpemVzIHRoZSBtZW1vcnkgaWRlbnRpY2FsbHkgdG8gZ2V0X3plcm9lZF9wYWdlKCksIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBjb25kaXRpb25hbCBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIHVuaW5pdGlhbGl6ZWQgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UvZ3Vlc3QgYXJlIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgc2xhYi1yZWxhdGVkIG1lbW9yeSBzYWZldHkgaXNzdWVzIChlLmcuIG91dC1vZi1ib3VuZHMsIHVzZS1hZnRlci1mcmVlLCBvciBkb3VibGUtZnJlZSkgYXJlIG1vbml0b3JlZCBieSBzdGFuZGFyZCBLQVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnZlcnRzIHBhZ2UgYWxsb2NhdGlvbnMgdmlhIGdldF96ZXJvZWRfcGFnZSgpIGFuZCBmcmVlX3BhZ2UoKSB0byBzbGFiIGFsbG9jYXRpb25zIHZpYSBremFsbG9jKCkva3phbGxvY19vYmooKSBhbmQga2ZyZWUoKSBhY3Jvc3MgczM5MCBLVk0gY29kZSAoaW50ZXJjZXB0LmMsIGludGVycnVwdC5jLCBwcml2LmMsIHMzOTAuYykuIFxuXG5TaW5jZSBremFsbG9jL2t6YWxsb2Nfb2JqIHplcm8taW5pdGlhbGl6ZXMgdGhlIG1lbW9yeSBpZGVudGljYWxseSB0byBnZXRfemVyb2VkX3BhZ2UoKSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGNvbmRpdGlvbmFsIGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgb3IgdW5pbml0aWFsaXplZCBpbmZvLWxlYWtzIHRvIHVzZXJzcGFjZS9ndWVzdCBhcmUgaW50cm9kdWNlZC4gQW55IHBvdGVudGlhbCBzbGFiLXJlbGF0ZWQgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGUuZy4gb3V0LW9mLWJvdW5kcywgdXNlLWFmdGVyLWZyZWUsIG9yIGRvdWJsZS1mcmVlKSBhcmUgbW9uaXRvcmVkIGJ5IHN0YW5kYXJkIEtBU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMjo1NS4yOTg3Mjg3NzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE3MzkzMjM5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhhbmRsZV9zdGh5aVwiLFxuICAgIFwia3ZtX3MzOTBfaGFuZGxlX2IyXCIsXG4gICAgXCJrdm1fYXJjaF9pbml0X3ZtXCIsXG4gICAgXCJrdm1fczM5MF92Y3B1X3NldHVwX2NtbWFcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnZlcnRzIHBhZ2UgYWxsb2NhdGlvbnMgdmlhIGdldF96ZXJvZWRfcGFnZSgpIGFuZCBmcmVlX3BhZ2UoKSB0byBzbGFiIGFsbG9jYXRpb25zIHZpYSBremFsbG9jKCkva3phbGxvY19vYmooKSBhbmQga2ZyZWUoKSBhY3Jvc3MgczM5MCBLVk0gY29kZSAoaW50ZXJjZXB0LmMsIGludGVycnVwdC5jLCBwcml2LmMsIHMzOTAuYykuIFxcblxcblNpbmNlIGt6YWxsb2Mva3phbGxvY19vYmogemVyby1pbml0aWFsaXplcyB0aGUgbWVtb3J5IGlkZW50aWNhbGx5IHRvIGdldF96ZXJvZWRfcGFnZSgpLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgY29uZGl0aW9uYWwgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBkYXRhLCBvciB1bmluaXRpYWxpemVkIGluZm8tbGVha3MgdG8gdXNlcnNwYWNlL2d1ZXN0IGFyZSBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIHNsYWItcmVsYXRlZCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoZS5nLiBvdXQtb2YtYm91bmRzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgZG91YmxlLWZyZWUpIGFyZSBtb25pdG9yZWQgYnkgc3RhbmRhcmQgS0FTQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBwYWdlLWxldmVsIG1lbW9yeSBhbGxvY2F0aW9ucyAoZ2V0X3plcm9lZF9wYWdlL2ZyZWVfcGFnZSkgdG8gc2xhYiBhbGxvY2F0aW9ucyAoa3phbGxvYy9rZnJlZSkgaW4gS1ZNIG9uIHMzOTAgZm9yIGd1ZXN0IGludGVyY2VwdCBoYW5kbGluZyAoU1RIWUksIFNUU0kpLCBWTSBpbml0aWFsaXphdGlvbiAoc2llX3BhZ2UyKSwgR0lCIHNldHVwLCBhbmQgVkNQVSBDTU1BIHNldHVwLiBUaGVzZSBhZmZlY3QgcmVhY2hhYmxlIEtWTSBleGVjdXRpb24gcGF0aHMgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9uIHMzOTAsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMjo1NS4yOTg3MzQwNzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwOTA2Mjc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ2ZGZjZTA3Yzg5YWViN2Q2Y2JkZWM4YzVhYjVjODVmMjY5OTM2NmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBTZXAgMiAxOTowMjo1NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcXG5pbmRleCBjYTEyMDVkZmFjOGIwLi5hYWY5ODI4ZDFmNDRkIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY1xcbkBAIC0xMSw2ICsxMSw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rdm1faG9zdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vYXNtLW9mZnNldHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9pcnEuaFxcdTAwM2VcXG5AQCAtNDM4LDEzICs0MzksMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGlmICgha3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSBcXHUwMDI2XFx1MDAyNiAoYWRkciBcXHUwMDI2IH5QQUdFX01BU0spKVxcbiBcXHRcXHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dyYW1faW50KHZjcHUsIFBHTV9TUEVDSUZJQ0FUSU9OKTtcXG4gXFxuLVxcdHNjdG5zID0gKHZvaWQgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4rXFx0c2N0bnMgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0aWYgKCFzY3RucylcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRjYyA9IHN0aHlpX2ZpbGwoc2N0bnMsIFxcdTAwMjZyYyk7XFxuIFxcdGlmIChjYyBcXHUwMDNjIDApIHtcXG4tXFx0XFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNjdG5zKTtcXG4rXFx0XFx0a2ZyZWUoc2N0bnMpO1xcbiBcXHRcXHRyZXR1cm4gY2M7XFxuIFxcdH1cXG4gb3V0OlxcbkBAIC00NTQsMTMgKzQ1NSwxMyBAQCBpbnQgaGFuZGxlX3N0aHlpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0ciA9IHdyaXRlX2d1ZXN0KHZjcHUsIGFkZHIsIHJlZzIsIHNjdG5zLCBQQUdFX1NJWkUpO1xcbiBcXHRcXHRcXHRpZiAocikge1xcbi1cXHRcXHRcXHRcXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xcbitcXHRcXHRcXHRcXHRrZnJlZShzY3Rucyk7XFxuIFxcdFxcdFxcdFxcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ19jb25kKHZjcHUsIHIpO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNjdG5zKTtcXG4rXFx0a2ZyZWUoc2N0bnMpO1xcbiBcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZXMucmVncy5ncHJzW3JlZzIgKyAxXSA9IHJjO1xcbiBcXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTtcXG4gXFx0cmV0dXJuIHI7XFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xcbmluZGV4IDAzODFhZTk4MTcwMzUuLjAyMDY1ZmI4ZDA1M2UgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jXFxuKysrIGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jXFxuQEAgLTM2ODksNyArMzY4OSw3IEBAIHZvaWQga3ZtX3MzOTBfZ2liX2Rlc3Ryb3kodm9pZClcXG4gXFx0fVxcbiBcXHRjaHNjX3NnaWIoMCk7XFxuIFxcdHVucmVnaXN0ZXJfYWRhcHRlcl9pbnRlcnJ1cHQoXFx1MDAyNmdpYl9hbGVydF9pcnEpO1xcbi1cXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpZ2liKTtcXG4rXFx0a2ZyZWUoZ2liKTtcXG4gXFx0Z2liID0gTlVMTDtcXG4gfVxcbiBcXG5AQCAtMzcwMyw3ICszNzAzLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4tXFx0Z2liID0gKHN0cnVjdCBrdm1fczM5MF9naWIgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XFxuK1xcdGdpYiA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcXG4gXFx0aWYgKCFnaWIpIHtcXG4gXFx0XFx0cmMgPSAtRU5PTUVNO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtMzcyMiw3ICszNzIyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxcbiBcXHRnaWJfb3JpZ2luID0gdmlydF90b19waHlzKGdpYik7XFxuIFxcdGlmIChjaHNjX3NnaWIoZ2liX29yaWdpbikpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJBc3NvY2lhdGluZyB0aGUgR0lCIHdpdGggdGhlIEFJViBmYWNpbGl0eSBmYWlsZWRcXFxcblxcXCIpO1xcbi1cXHRcXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpZ2liKTtcXG4rXFx0XFx0a2ZyZWUoZ2liKTtcXG4gXFx0XFx0Z2liID0gTlVMTDtcXG4gXFx0XFx0cmMgPSAtRUlPO1xcbiBcXHRcXHRnb3RvIG91dF91bnJlZ19nYWw7XFxuQEAgLTM3NDIsNyArMzc0Miw3IEBAIGludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYylcXG4gb3V0X3VucmVnX2dhbDpcXG4gXFx0dW5yZWdpc3Rlcl9hZGFwdGVyX2ludGVycnVwdChcXHUwMDI2Z2liX2FsZXJ0X2lycSk7XFxuIG91dF9mcmVlX2dpYjpcXG4tXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7XFxuK1xcdGtmcmVlKGdpYik7XFxuIFxcdGdpYiA9IE5VTEw7XFxuIG91dDpcXG4gXFx0cmV0dXJuIHJjO1xcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY1xcbmluZGV4IGIzY2IyYzJjM2FhNzEuLjg1NjkzOWFjZjAxMmYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmNcXG5AQCAtMTQsNiArMTQsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW1fdHlwZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BndGFibGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vYXNtLW9mZnNldHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9mYWNpbGl0eS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2N1cnJlbnQuaFxcdTAwM2VcXG5AQCAtODY5LDcgKzg3MCw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRpbnQgZmMgPSAodmNwdS1cXHUwMDNlcnVuLVxcdTAwM2VzLnJlZ3MuZ3Byc1swXSBcXHUwMDI2IDB4ZjAwMDAwMDApIFxcdTAwM2VcXHUwMDNlIDI4O1xcbiBcXHRpbnQgc2VsMSA9IHZjcHUtXFx1MDAzZXJ1bi1cXHUwMDNlcy5yZWdzLmdwcnNbMF0gXFx1MDAyNiAweGZmO1xcbiBcXHRpbnQgc2VsMiA9IHZjcHUtXFx1MDAzZXJ1bi1cXHUwMDNlcy5yZWdzLmdwcnNbMV0gXFx1MDAyNiAweGZmZmY7XFxuLVxcdHVuc2lnbmVkIGxvbmcgbWVtID0gMDtcXG4rXFx0dm9pZCAqbWVtID0gTlVMTDtcXG4gXFx0dTY0IG9wZXJhbmQyO1xcbiBcXHRpbnQgcmMgPSAwO1xcbiBcXHR1OCBhcjtcXG5AQCAtOTExLDE5ICs5MTIsMTkgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdHN3aXRjaCAoZmMpIHtcXG4gXFx0Y2FzZSAxOiAvKiBzYW1lIGhhbmRsaW5nIGZvciAxIGFuZCAyICovXFxuIFxcdGNhc2UgMjpcXG4tXFx0XFx0bWVtID0gZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuK1xcdFxcdG1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRcXHRpZiAoIW1lbSlcXG4gXFx0XFx0XFx0Z290byBvdXRfbm9fZGF0YTtcXG4tXFx0XFx0aWYgKHN0c2koKHZvaWQgKikgbWVtLCBmYywgc2VsMSwgc2VsMikpXFxuK1xcdFxcdGlmIChzdHNpKG1lbSwgZmMsIHNlbDEsIHNlbDIpKVxcbiBcXHRcXHRcXHRnb3RvIG91dF9ub19kYXRhO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSAzOlxcbiBcXHRcXHRpZiAoc2VsMSAhPSAyIHx8IHNlbDIgIT0gMilcXG4gXFx0XFx0XFx0Z290byBvdXRfbm9fZGF0YTtcXG4tXFx0XFx0bWVtID0gZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuK1xcdFxcdG1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRcXHRpZiAoIW1lbSlcXG4gXFx0XFx0XFx0Z290byBvdXRfbm9fZGF0YTtcXG4tXFx0XFx0aGFuZGxlX3N0c2lfM18yXzIodmNwdSwgKHZvaWQgKikgbWVtKTtcXG4rXFx0XFx0aGFuZGxlX3N0c2lfM18yXzIodmNwdSwgbWVtKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgMTU6IC8qIGZjIDE1IGlzIGZ1bGx5IGhhbmRsZWQgaW4gdXNlcnNwYWNlICovXFxuIFxcdFxcdGluc2VydF9zdHNpX3Vzcl9kYXRhKHZjcHUsIG9wZXJhbmQyLCBhciwgZmMsIHNlbDEsIHNlbDIpO1xcbkBAIC05MzEsMTAgKzkzMiwxMCBAQCBzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0XFx0cmV0dXJuIC1FUkVNT1RFO1xcbiBcXHR9XFxuIFxcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XFxuLVxcdFxcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cXHUwMDNlYXJjaC5zaWVfYmxvY2spLCAodm9pZCAqKW1lbSwgUEFHRV9TSVpFKTtcXG4rXFx0XFx0bWVtY3B5KHNpZGFfYWRkcih2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jayksIG1lbSwgUEFHRV9TSVpFKTtcXG4gXFx0XFx0cmMgPSAwO1xcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHRyYyA9IHdyaXRlX2d1ZXN0KHZjcHUsIG9wZXJhbmQyLCBhciwgKHZvaWQgKiltZW0sIFBBR0VfU0laRSk7XFxuK1xcdFxcdHJjID0gd3JpdGVfZ3Vlc3QodmNwdSwgb3BlcmFuZDIsIGFyLCBtZW0sIFBBR0VfU0laRSk7XFxuIFxcdH1cXG4gXFx0aWYgKHJjKSB7XFxuIFxcdFxcdHJjID0ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7XFxuQEAgLTk0NSwxNCArOTQ2LDE0IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRcXHRyYyA9IC1FUkVNT1RFO1xcbiBcXHR9XFxuIFxcdHRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7XFxuLVxcdGZyZWVfcGFnZShtZW0pO1xcbitcXHRrZnJlZShtZW0pO1xcbiBcXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDApO1xcbiBcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZXMucmVncy5ncHJzWzBdID0gMDtcXG4gXFx0cmV0dXJuIHJjO1xcbiBvdXRfbm9fZGF0YTpcXG4gXFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAzKTtcXG4gb3V0Olxcbi1cXHRmcmVlX3BhZ2UobWVtKTtcXG4rXFx0a2ZyZWUobWVtKTtcXG4gXFx0cmV0dXJuIHJjO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY1xcbmluZGV4IGIwODM5ZTg4NzIyMWUuLjhlYzUwNTA2MGY4YzAgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNcXG5AQCAtMzI3Myw4ICszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXFxuIFxcdFxcdGdvdG8gb3V0X2VycjtcXG4gXFxuIFxcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7XFxuLVxcdGt2bS1cXHUwMDNlYXJjaC5zaWVfcGFnZTIgPVxcbi1cXHQgICAgIChzdHJ1Y3Qgc2llX3BhZ2UyICopIGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcXG4rXFx0a3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMiA9IGt6YWxsb2Nfb2JqKCprdm0tXFx1MDAzZWFyY2guc2llX3BhZ2UyLFxcbitcXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpO1xcbiBcXHRpZiAoIWt2bS1cXHUwMDNlYXJjaC5zaWVfcGFnZTIpXFxuIFxcdFxcdGdvdG8gb3V0X2VycjtcXG4gXFxuQEAgLTMzNjksNyArMzM2OSw3IEBAIGludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIG91dF9lcnI6XFxuLVxcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylrdm0tXFx1MDAzZWFyY2guc2llX3BhZ2UyKTtcXG4rXFx0a2ZyZWUoa3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMik7XFxuIFxcdGRlYnVnX3VucmVnaXN0ZXIoa3ZtLVxcdTAwM2VhcmNoLmRiZik7XFxuIFxcdHNjYV9kaXNwb3NlKGt2bSk7XFxuIFxcdEtWTV9FVkVOVCgzLCBcXFwiY3JlYXRpb24gb2Ygdm0gZmFpbGVkOiAlZFxcXCIsIHJjKTtcXG5AQCAtMzQyNyw3ICszNDI3LDcgQEAgdm9pZCBrdm1fYXJjaF9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4gXFx0XFx0bW11X25vdGlmaWVyX3VucmVnaXN0ZXIoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC5wdi5tbXVfbm90aWZpZXIsIGt2bS1cXHUwMDNlbW0pO1xcbiBcXG4gXFx0ZGVidWdfdW5yZWdpc3Rlcihrdm0tXFx1MDAzZWFyY2guZGJmKTtcXG4tXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWt2bS1cXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xcbitcXHRrZnJlZShrdm0tXFx1MDAzZWFyY2guc2llX3BhZ2UyKTtcXG4gXFx0a3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhrdm0pO1xcbiBcXHRrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKGt2bSk7XFxuIFxcdGt2bV9zMzkwX3ZzaWVfZGVzdHJveShrdm0pO1xcbkBAIC0zNjU3LDEzICszNjU3LDEzIEBAIHN0YXRpYyB2b2lkIGt2bV9zMzkwX3ZjcHVfY3J5cHRvX3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gdm9pZCBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4gXFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrLVxcdTAwM2VjYnJsbylcXG4tXFx0XFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXBoeXNfdG9fdmlydCh2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlY2JybG8pKTtcXG4rXFx0XFx0a2ZyZWUocGh5c190b192aXJ0KHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrLVxcdTAwM2VjYnJsbykpO1xcbiBcXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlY2JybG8gPSAwO1xcbiB9XFxuIFxcbiBpbnQga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbi1cXHR2b2lkICpjYnJsb19wYWdlID0gKHZvaWQgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4rXFx0dm9pZCAqY2JybG9fcGFnZSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXG4gXFx0aWYgKCFjYnJsb19wYWdlKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDI6NTUuODA4NjA2MTI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3MDUxMDM3MDIzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGFuZGxlX3N0aHlpXCIsXG4gICAgXCJrdm1fczM5MF9oYW5kbGVfYjJcIixcbiAgICBcImt2bV9hcmNoX2luaXRfdm1cIixcbiAgICBcImt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgcGFnZS1sZXZlbCBtZW1vcnkgYWxsb2NhdGlvbnMgKGdldF96ZXJvZWRfcGFnZS9mcmVlX3BhZ2UpIHRvIHNsYWIgYWxsb2NhdGlvbnMgKGt6YWxsb2Mva2ZyZWUpIGluIEtWTSBvbiBzMzkwIGZvciBndWVzdCBpbnRlcmNlcHQgaGFuZGxpbmcgKFNUSFlJLCBTVFNJKSwgVk0gaW5pdGlhbGl6YXRpb24gKHNpZV9wYWdlMiksIEdJQiBzZXR1cCwgYW5kIFZDUFUgQ01NQSBzZXR1cC4gVGhlc2UgYWZmZWN0IHJlYWNoYWJsZSBLVk0gZXhlY3V0aW9uIHBhdGhzIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBvbiBzMzkwLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDZkZmNlMDdjODlhZWI3ZDZjYmRlYzhjNWFiNWM4NWYyNjk5MzY2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTk6MDI6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcbmluZGV4IGNhMTIwNWRmYWM4YjAuLmFhZjk4MjhkMWY0NGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcbisrKyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY1xuQEAgLTExLDYgKzExLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9hc20tb2Zmc2V0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2lycS5oXHUwMDNlXG5AQCAtNDM4LDEzICs0MzksMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAoIWt2bV9zMzkwX3B2X2NwdV9pc19wcm90ZWN0ZWQodmNwdSkgXHUwMDI2XHUwMDI2IChhZGRyIFx1MDAyNiB+UEFHRV9NQVNLKSlcbiBcdFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9ncmFtX2ludCh2Y3B1LCBQR01fU1BFQ0lGSUNBVElPTik7XG4gXG4tXHRzY3RucyA9ICh2b2lkICopZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCk7XG4rXHRzY3RucyA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFzY3RucylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRjYyA9IHN0aHlpX2ZpbGwoc2N0bnMsIFx1MDAyNnJjKTtcbiBcdGlmIChjYyBcdTAwM2MgMCkge1xuLVx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0XHRrZnJlZShzY3Rucyk7XG4gXHRcdHJldHVybiBjYztcbiBcdH1cbiBvdXQ6XG5AQCAtNDU0LDEzICs0NTUsMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0ciA9IHdyaXRlX2d1ZXN0KHZjcHUsIGFkZHIsIHJlZzIsIHNjdG5zLCBQQUdFX1NJWkUpO1xuIFx0XHRcdGlmIChyKSB7XG4tXHRcdFx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0XHRcdFx0a2ZyZWUoc2N0bnMpO1xuIFx0XHRcdFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcik7XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0a2ZyZWUoc2N0bnMpO1xuIFx0dmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbcmVnMiArIDFdID0gcmM7XG4gXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTtcbiBcdHJldHVybiByO1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xuaW5kZXggMDM4MWFlOTgxNzAzNS4uMDIwNjVmYjhkMDUzZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xuKysrIGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jXG5AQCAtMzY4OSw3ICszNjg5LDcgQEAgdm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKVxuIFx0fVxuIFx0Y2hzY19zZ2liKDApO1xuIFx0dW5yZWdpc3Rlcl9hZGFwdGVyX2ludGVycnVwdChcdTAwMjZnaWJfYWxlcnRfaXJxKTtcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpO1xuK1x0a2ZyZWUoZ2liKTtcbiBcdGdpYiA9IE5VTEw7XG4gfVxuIFxuQEAgLTM3MDMsNyArMzcwMyw3IEBAIGludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYylcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRnaWIgPSAoc3RydWN0IGt2bV9zMzkwX2dpYiAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcbitcdGdpYiA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcbiBcdGlmICghZ2liKSB7XG4gXHRcdHJjID0gLUVOT01FTTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtMzcyMiw3ICszNzIyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxuIFx0Z2liX29yaWdpbiA9IHZpcnRfdG9fcGh5cyhnaWIpO1xuIFx0aWYgKGNoc2Nfc2dpYihnaWJfb3JpZ2luKSkge1xuIFx0XHRwcl9lcnIoXCJBc3NvY2lhdGluZyB0aGUgR0lCIHdpdGggdGhlIEFJViBmYWNpbGl0eSBmYWlsZWRcXG5cIik7XG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpO1xuK1x0XHRrZnJlZShnaWIpO1xuIFx0XHRnaWIgPSBOVUxMO1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gb3V0X3VucmVnX2dhbDtcbkBAIC0zNzQyLDcgKzM3NDIsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpXG4gb3V0X3VucmVnX2dhbDpcbiBcdHVucmVnaXN0ZXJfYWRhcHRlcl9pbnRlcnJ1cHQoXHUwMDI2Z2liX2FsZXJ0X2lycSk7XG4gb3V0X2ZyZWVfZ2liOlxuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7XG4rXHRrZnJlZShnaWIpO1xuIFx0Z2liID0gTlVMTDtcbiBvdXQ6XG4gXHRyZXR1cm4gcmM7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmNcbmluZGV4IGIzY2IyYzJjM2FhNzEuLjg1NjkzOWFjZjAxMmYgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jXG5AQCAtMTQsNiArMTQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tX3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZ3RhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2FzbS1vZmZzZXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vZmFjaWxpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jdXJyZW50LmhcdTAwM2VcbkBAIC04NjksNyArODcwLDcgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpbnQgZmMgPSAodmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMF0gXHUwMDI2IDB4ZjAwMDAwMDApIFx1MDAzZVx1MDAzZSAyODtcbiBcdGludCBzZWwxID0gdmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMF0gXHUwMDI2IDB4ZmY7XG4gXHRpbnQgc2VsMiA9IHZjcHUtXHUwMDNlcnVuLVx1MDAzZXMucmVncy5ncHJzWzFdIFx1MDAyNiAweGZmZmY7XG4tXHR1bnNpZ25lZCBsb25nIG1lbSA9IDA7XG4rXHR2b2lkICptZW0gPSBOVUxMO1xuIFx0dTY0IG9wZXJhbmQyO1xuIFx0aW50IHJjID0gMDtcbiBcdHU4IGFyO1xuQEAgLTkxMSwxOSArOTEyLDE5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0c3dpdGNoIChmYykge1xuIFx0Y2FzZSAxOiAvKiBzYW1lIGhhbmRsaW5nIGZvciAxIGFuZCAyICovXG4gXHRjYXNlIDI6XG4tXHRcdG1lbSA9IGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpO1xuK1x0XHRtZW0gPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFx0aWYgKCFtZW0pXG4gXHRcdFx0Z290byBvdXRfbm9fZGF0YTtcbi1cdFx0aWYgKHN0c2koKHZvaWQgKikgbWVtLCBmYywgc2VsMSwgc2VsMikpXG4rXHRcdGlmIChzdHNpKG1lbSwgZmMsIHNlbDEsIHNlbDIpKVxuIFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAzOlxuIFx0XHRpZiAoc2VsMSAhPSAyIHx8IHNlbDIgIT0gMilcbiBcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuLVx0XHRtZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbitcdFx0bWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbWVtKVxuIFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4tXHRcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsICh2b2lkICopIG1lbSk7XG4rXHRcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsIG1lbSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAxNTogLyogZmMgMTUgaXMgZnVsbHkgaGFuZGxlZCBpbiB1c2Vyc3BhY2UgKi9cbiBcdFx0aW5zZXJ0X3N0c2lfdXNyX2RhdGEodmNwdSwgb3BlcmFuZDIsIGFyLCBmYywgc2VsMSwgc2VsMik7XG5AQCAtOTMxLDEwICs5MzIsMTAgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHJldHVybiAtRVJFTU9URTtcbiBcdH1cbiBcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4tXHRcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayksICh2b2lkICopbWVtLCBQQUdFX1NJWkUpO1xuK1x0XHRtZW1jcHkoc2lkYV9hZGRyKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2spLCBtZW0sIFBBR0VfU0laRSk7XG4gXHRcdHJjID0gMDtcbiBcdH0gZWxzZSB7XG4tXHRcdHJjID0gd3JpdGVfZ3Vlc3QodmNwdSwgb3BlcmFuZDIsIGFyLCAodm9pZCAqKW1lbSwgUEFHRV9TSVpFKTtcbitcdFx0cmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTtcbiBcdH1cbiBcdGlmIChyYykge1xuIFx0XHRyYyA9IGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcmMpO1xuQEAgLTk0NSwxNCArOTQ2LDE0IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRyYyA9IC1FUkVNT1RFO1xuIFx0fVxuIFx0dHJhY2Vfa3ZtX3MzOTBfaGFuZGxlX3N0c2kodmNwdSwgZmMsIHNlbDEsIHNlbDIsIG9wZXJhbmQyKTtcbi1cdGZyZWVfcGFnZShtZW0pO1xuK1x0a2ZyZWUobWVtKTtcbiBcdGt2bV9zMzkwX3NldF9wc3dfY2ModmNwdSwgMCk7XG4gXHR2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VzLnJlZ3MuZ3Byc1swXSA9IDA7XG4gXHRyZXR1cm4gcmM7XG4gb3V0X25vX2RhdGE6XG4gXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDMpO1xuIG91dDpcbi1cdGZyZWVfcGFnZShtZW0pO1xuK1x0a2ZyZWUobWVtKTtcbiBcdHJldHVybiByYztcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNcbmluZGV4IGIwODM5ZTg4NzIyMWUuLjhlYzUwNTA2MGY4YzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jXG5AQCAtMzI3Myw4ICszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcbiBcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7XG4tXHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIgPVxuLVx0ICAgICAoc3RydWN0IHNpZV9wYWdlMiAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4rXHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIgPSBremFsbG9jX29iaigqa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyLFxuK1x0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpO1xuIFx0aWYgKCFrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcbkBAIC0zMzY5LDcgKzMzNjksNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcbiBcdHJldHVybiAwO1xuIG91dF9lcnI6XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyKTtcbitcdGtmcmVlKGt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMik7XG4gXHRkZWJ1Z191bnJlZ2lzdGVyKGt2bS1cdTAwM2VhcmNoLmRiZik7XG4gXHRzY2FfZGlzcG9zZShrdm0pO1xuIFx0S1ZNX0VWRU5UKDMsIFwiY3JlYXRpb24gb2Ygdm0gZmFpbGVkOiAlZFwiLCByYyk7XG5AQCAtMzQyNyw3ICszNDI3LDcgQEAgdm9pZCBrdm1fYXJjaF9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiBcdFx0bW11X25vdGlmaWVyX3VucmVnaXN0ZXIoXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHYubW11X25vdGlmaWVyLCBrdm0tXHUwMDNlbW0pO1xuIFxuIFx0ZGVidWdfdW5yZWdpc3Rlcihrdm0tXHUwMDNlYXJjaC5kYmYpO1xuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMik7XG4rXHRrZnJlZShrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xuIFx0a3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhrdm0pO1xuIFx0a3ZtX3MzOTBfY2xlYXJfZmxvYXRfaXJxcyhrdm0pO1xuIFx0a3ZtX3MzOTBfdnNpZV9kZXN0cm95KGt2bSk7XG5AQCAtMzY1NywxMyArMzY1NywxMyBAQCBzdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gdm9pZCBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8pXG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylwaHlzX3RvX3ZpcnQodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbykpO1xuK1x0XHRrZnJlZShwaHlzX3RvX3ZpcnQodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbykpO1xuIFx0dmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbyA9IDA7XG4gfVxuIFxuIGludCBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHZvaWQgKmNicmxvX3BhZ2UgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpO1xuK1x0dm9pZCAqY2JybG9fcGFnZSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFxuIFx0aWYgKCFjYnJsb19wYWdlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAyOjU1LjgwODYwNzg5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3NDg3OTc1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXM6IHMzOTAgS1ZNIE1lbW9yeSBBbGxvY2F0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGRldGVybWluZSBpdHMgZnV6emluZyBwb3RlbnRpYWwuIFRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGludm9sdmUgc3dhcHBpbmcgYGdldF96ZXJvZWRfcGFnZWAgYW5kIGBmcmVlX3BhZ2VgIHdpdGggYGt6YWxsb2NgIGFuZCBga2ZyZWVgIHdpdGhpbiB0aGUgczM5MCBLVk0gY29kZS4gU3BlY2lmaWNhbGx5LCBJJ20gc2VlaW5nIGl0IGluIGBpbnRlcmNlcHQuY2AsIGBpbnRlcnJ1cHQuY2AsIGBwcml2LmNgLCBhbmQgYHMzOTAuY2AuXG5cbkFoYSwgaG9sZCBvbi4gVGhpcyBpcyBpbnRlcmVzdGluZy4gYGdldF96ZXJvZWRfcGFnZWAgaXMgYSBkaXJlY3QgYnVkZHkgYWxsb2NhdG9yIGNhbGwsIGdyYWJiaW5nIGEgc2luZ2xlIHBhZ2UuIGBremFsbG9jKFBBR0VfU0laRSwgLi4uKWAgdXNlcyB0aGUgc2xhYiBhbGxvY2F0b3IsIGVmZmVjdGl2ZWx5IGEgYGttYWxsb2MtNGtgIGFsbG9jYXRpb24uIEknbSBzZWVpbmcgdGhpcyB3aXRoIGBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BYCBmbGFncyBpbiBjYWxscyBsaWtlIGBrdm1fczM5MF9naWJfaW5pdGAgYW5kIGBrdm1fYXJjaF9pbml0X3ZtYCwgd2hpY2ggdGhlbiB1dGlsaXplIGB2aXJ0X3RvX3BoeXNgIHRvIGdldCB0aGUgcGh5c2ljYWwgYWRkcmVzcy4gQW5kIHNpbWlsYXIgbG9naWMgaW4gYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAgYW5kIGBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYWAuXG5cblRoZSBzbGFiIGFsbG9jYXRvciBpcyBpbmRlZWQgcGFnZS1hbGlnbmVkICg0MDk2LWJ5dGUgc2xhYiBvYmplY3RzKS4gU28sIHRoZSBxdWVzdGlvbiBpcyAqd2h5KiB0aGlzIGNoYW5nZT8gSXMgdGhpcyBwdXJlbHkgcmVmYWN0b3JpbmcsIGEgY2xlYW51cCwgb3IgZG9lcyBpdCAqYWN0dWFsbHkqIGFsdGVyIGJlaGF2aW9yPyBJcyBpdCBhbiBvcHRpbWl6YXRpb24gYWltZWQgYXQgc2xhYiBhbGxvY2F0aW9uLCBvciBzb21lIHN1YnRsZSBzZW1hbnRpYyBjaGFuZ2U/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGluc3RydWN0aW9uIGZvciBkZWNpZGluZyBpZiB0aGUgcGF0Y2ggaXMgd29ydGggZnV6emluZy5cblxuUmlnaHQsIHNvIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjb25zdGFudCBjaGFuZ2VzIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QsIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpYyBoYXJkd2FyZS1kZXBlbmRlbnQgZHJpdmVycywgYW5kIHRlYXItZG93biBjYWxsYmFja3MgYXJlIGFsbCBvdXQuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgczM5MCBLVk0uIENhbiB0aGlzIGJlIGVmZmVjdGl2ZWx5IGZ1enplZCwgb3IgcnVuIHdpdGhpbiBRRU1VPyBZZXMsIHMzOTAgS1ZNIGlzIHRoZSBLVk0gaHlwZXJ2aXNvciBvbiB0aGUgczM5MHggYXJjaGl0ZWN0dXJlLCBJIGtub3cgdGhhdC4gQnV0LCBjYW4gaXQgYmUgZnV6eiB0ZXN0ZWQ/IFFFTVUgZW11bGF0ZXMgczM5MHggKHFlbXUtc3lzdGVtLXMzOTB4KSwgYnV0IEkgdGhpbmsgS1ZNIGluc2lkZSBRRU1VIG9uIHMzOTB4IGxpa2VseSBuZWVkcyBuZXN0ZWQgS1ZNIG9yIGFjdHVhbCBoYXJkd2FyZS4gU3l6a2FsbGVyIGRlZmluaXRlbHkgZnV6emVzIHMzOTB4IExpbnV4IGtlcm5lbHM7IGRvZXMgaXQgYWxzbyB0ZXN0IHMzOTAgS1ZNIGlmIGl0IHJ1bnMgb24gczM5MHg/IE9yIGlzIGl0IG9ubHkgVENHP1xuXG5UaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgYWRkaW5nIG9yIG1vZGlmeWluZyBsb2dpYywgb3IgaWYgdGhpcyBpcyBqdXN0IGEgbWVjaGFuaWNhbCByZXBsYWNlbWVudCBvZiB0aGUgYWxsb2NhdGlvbiByb3V0aW5lcy4gV2hhdCB3YXMgdGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgY2hhbmdlPyBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGdpdCBsb2cgYW5kIG1heWJlIHNlYXJjaCB0aGUgdHJlZSBmb3IgY29udGV4dCB0byBzZWUgd2hhdCB0aGUgYXV0aG9yIHdhcyB0aGlua2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNjEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzowNS41NTc0MDg2MDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIzMDM0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3phbGxvY19vYmpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfYmFzZS5jPTM0Nz1pbnQgYXBwbGRhdGFfcmVnaXN0ZXJfb3BzKHN0cnVjdCBhcHBsZGF0YV9vcHMgKm9wcylcXG4tLVxcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9iYXNlLmMtMzUxLVxcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9iYXNlLmM6MzUyOlxcdG9wcy1cXHUwMDNlY3RsX3RhYmxlID0ga3phbGxvY19vYmpzKHN0cnVjdCBjdGxfdGFibGUsIDEpO1xcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9iYXNlLmMtMzUzLVxcdGlmICghb3BzLVxcdTAwM2VjdGxfdGFibGUpXFxuLS1cXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbWVtLmM9MTI5PXN0YXRpYyBpbnQgX19pbml0IGFwcGxkYXRhX21lbV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbWVtLmMtMTMyLVxcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9tZW0uYzoxMzM6XFx0b3BzLmRhdGEgPSBremFsbG9jX29iaihzdHJ1Y3QgYXBwbGRhdGFfbWVtX2RhdGEpO1xcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9tZW0uYy0xMzQtXFx0aWYgKCFvcHMuZGF0YSlcXG4tLVxcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9uZXRfc3VtLmM9MTMxPXN0YXRpYyBpbnQgX19pbml0IGFwcGxkYXRhX25ldF9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbmV0X3N1bS5jLTEzNC1cXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbmV0X3N1bS5jOjEzNTpcXHRvcHMuZGF0YSA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBhcHBsZGF0YV9uZXRfc3VtX2RhdGEpO1xcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9uZXRfc3VtLmMtMTM2LVxcdGlmICghb3BzLmRhdGEpXFxuLS1cXG5hcmNoL3MzOTAvaHlwZnMvaHlwZnNfc3BycC5jPTY3PXN0YXRpYyBpbnQgX19oeXBmc19zcHJwX2lvY3RsKHZvaWQgX191c2VyICp1c2VyX2FyZWEpXFxuLS1cXG5hcmNoL3MzOTAvaHlwZnMvaHlwZnNfc3BycC5jLTc2LVxcdGRhdGEgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMKTtcXG5hcmNoL3MzOTAvaHlwZnMvaHlwZnNfc3BycC5jOjc3OlxcdGRpYWczMDQgPSBremFsbG9jX29iaigqZGlhZzMwNCk7XFxuYXJjaC9zMzkwL2h5cGZzL2h5cGZzX3NwcnAuYy03OC1cXHRpZiAoIWRhdGEgfHwgIWRpYWczMDQpXFxuLS1cXG5hcmNoL3MzOTAvaHlwZnMvaW5vZGUuYz0yOTE9c3RhdGljIGludCBoeXBmc19pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuYXJjaC9zMzkwL2h5cGZzL2lub2RlLmMtMjk0LVxcbmFyY2gvczM5MC9oeXBmcy9pbm9kZS5jOjI5NTpcXHRzYmkgPSBremFsbG9jX29iaihzdHJ1Y3QgaHlwZnNfc2JfaW5mbyk7XFxuYXJjaC9zMzkwL2h5cGZzL2lub2RlLmMtMjk2LVxcdGlmICghc2JpKVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2lkYWxzLmg9ODg9c3RhdGljIGlubGluZSBpbnQgc2V0X25vcm1hbGl6ZWRfY2RhKHN0cnVjdCBjY3cxICpjY3csIHZvaWQgKnZhZGRyKVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2lkYWxzLmgtOTYtXFx0aWYgKG5yaWRhd3MgXFx1MDAzZSAwKSB7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2lkYWxzLmg6OTc6XFx0XFx0aWRhbCA9IGt6YWxsb2Nfb2JqcygqaWRhbCwgbnJpZGF3cywgR0ZQX0FUT01JQyB8IEdGUF9ETUEpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9pZGFscy5oLTk4LVxcdFxcdGlmICghaWRhbClcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvY2VydF9zdG9yZS5jPTMxNT1zdGF0aWMgaW50IGludmFsaWRhdGVfa2V5cmluZ19rZXlzKHN0cnVjdCBrZXkgKmtleXJpbmcpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL2NlcnRfc3RvcmUuYy0zMjQtXFx0bnVtX2tleXMgPSBrZXlyaW5nX3BheWxvYWRfbGVuIC8gc2l6ZW9mKGtleV9zZXJpYWxfdCk7XFxuYXJjaC9zMzkwL2tlcm5lbC9jZXJ0X3N0b3JlLmM6MzI1OlxcdGtleV9hcnJheSA9IGt6YWxsb2Nfb2JqcyhrZXlfc2VyaWFsX3QsIG51bV9rZXlzKTtcXG5hcmNoL3MzOTAva2VybmVsL2NlcnRfc3RvcmUuYy0zMjYtXFx0aWYgKCFrZXlfYXJyYXkpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL2RlYnVnLmM9MzA3PXN0YXRpYyBkZWJ1Z19pbmZvX3QgKmRlYnVnX2luZm9fYWxsb2MoY29uc3QgY2hhciAqbmFtZSwgaW50IHBhZ2VzX3Blcl9hcmVhLFxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jLTMxNi1cXHRcXHRnb3RvIGZhaWxfbWFsbG9jX3JjO1xcbmFyY2gvczM5MC9rZXJuZWwvZGVidWcuYzozMTc6XFx0cmMtXFx1MDAzZWFjdGl2ZV9lbnRyaWVzID0ga3phbGxvY19vYmpzKGludCwgbnJfYXJlYXMpO1xcbmFyY2gvczM5MC9rZXJuZWwvZGVidWcuYy0zMTgtXFx0aWYgKCFyYy1cXHUwMDNlYWN0aXZlX2VudHJpZXMpXFxuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jLTMxOS1cXHRcXHRnb3RvIGZhaWxfbWFsbG9jX2FjdGl2ZV9lbnRyaWVzO1xcbmFyY2gvczM5MC9rZXJuZWwvZGVidWcuYzozMjA6XFx0cmMtXFx1MDAzZWFjdGl2ZV9wYWdlcyA9IGt6YWxsb2Nfb2JqcyhpbnQsIG5yX2FyZWFzKTtcXG5hcmNoL3MzOTAva2VybmVsL2RlYnVnLmMtMzIxLVxcdGlmICghcmMtXFx1MDAzZWFjdGl2ZV9wYWdlcylcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvZ3VhcmRlZF9zdG9yYWdlLmM9MjI9c3RhdGljIGludCBnc19lbmFibGUodm9pZClcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvZ3VhcmRlZF9zdG9yYWdlLmMtMjYtXFx0aWYgKCFjdXJyZW50LVxcdTAwM2V0aHJlYWQuZ3NfY2IpIHtcXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jOjI3OlxcdFxcdGdzX2NiID0ga3phbGxvY19vYmooKmdzX2NiKTtcXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jLTI4LVxcdFxcdGlmICghZ3NfY2IpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jPTUyPXN0YXRpYyBpbnQgZ3Nfc2V0X2JjX2NiKHN0cnVjdCBnc19jYiBfX3VzZXIgKnVfZ3NfY2IpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jLTU3LVxcdGlmICghZ3NfY2IpIHtcXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jOjU4OlxcdFxcdGdzX2NiID0ga3phbGxvY19vYmooKmdzX2NiKTtcXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jLTU5LVxcdFxcdGlmICghZ3NfY2IpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL29zX2luZm8uYz0xNDQ9c3RhdGljIHZvaWQgb3NfaW5mb19vbGRfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9vc19pbmZvLmMtMTU2LVxcdFxcdGdvdG8gZmFpbDtcXG5hcmNoL3MzOTAva2VybmVsL29zX2luZm8uYzoxNTc6XFx0b3NfaW5mb19vbGQgPSBremFsbG9jX29iaigqb3NfaW5mb19vbGQpO1xcbmFyY2gvczM5MC9rZXJuZWwvb3NfaW5mby5jLTE1OC1cXHRpZiAoIW9zX2luZm9fb2xkKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYz0yNTE9c3RhdGljIGludCBjcHVtX2NmX2FsbG9jX2NwdShpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbnVtKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYy0yNjQtXFx0aWYgKCFjcHVodykge1xcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX2NmLmM6MjY1OlxcdFxcdGNwdWh3ID0ga3phbGxvY19vYmooKmNwdWh3KTtcXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jLTI2Ni1cXHRcXHRpZiAoY3B1aHcpIHtcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX2NmLmM9MTY2ND1zdGF0aWMgbG9uZyBjZnNldF9pb2N0bF9zdGFydCh1bnNpZ25lZCBsb25nIGFyZywgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jLTE2ODktXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYzoxNjkwOlxcdHByZXEgPSBremFsbG9jX29iaigqcHJlcSk7XFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYy0xNjkxLVxcdGlmICghcHJlcSlcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX3NmLmM9MTU5Mj1zdGF0aWMgdm9pZCAqYXV4X2J1ZmZlcl9zZXR1cChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHZvaWQgKipwYWdlcyxcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX3NmLmMtMTYxNS1cXHQvKiBBbGxvY2F0ZSBhdXhfYnVmZmVyIHN0cnVjdCBmb3IgdGhlIGV2ZW50ICovXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fc2YuYzoxNjE2OlxcdGF1eCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBhdXhfYnVmZmVyKTtcXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9zZi5jLTE2MTctXFx0aWYgKCFhdXgpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmM9MjQ0PXN0YXRpYyBpbnQgcGFpX2FsbG9jX2NwdShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBjcHUpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmMtMjYxLVxcdFxcdHJjID0gLUVOT01FTTtcXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmM6MjYyOlxcdFxcdGNwdW1wID0ga3phbGxvY19vYmooKmNwdW1wKTtcXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmMtMjYzLVxcdFxcdGlmICghY3B1bXApXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmM9MzE5PXN0YXRpYyBpbnQgcGFpX2FsbG9jKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudClcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9wYWkuYy0zMjMtXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jOjMyNDpcXHRtYXNrcHRyID0ga3phbGxvY19vYmooKm1hc2twdHIpO1xcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9wYWkuYy0zMjUtXFx0aWYgKCFtYXNrcHRyKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jPTEwNzc9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKiBfX2luaXQgYXR0cl9ldmVudF9pbml0X29uZShpbnQgbnVtLFxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jLTEwODItXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jOjEwODM6XFx0cGEgPSBremFsbG9jX29iaigqcGEpO1xcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9wYWkuYy0xMDg0LVxcdGlmICghcGEpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3B0cmFjZS5jPTc0MT1zdGF0aWMgaW50IHMzOTBfZ3NfY2Jfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy03NTEtXFx0aWYgKCF0YXJnZXQtXFx1MDAzZXRocmVhZC5nc19jYikge1xcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmM6NzUyOlxcdFxcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSk7XFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy03NTMtXFx0XFx0aWYgKCFkYXRhKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYz03OTM9c3RhdGljIGludCBzMzkwX2dzX2JjX3NldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhcmdldCxcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmMtODAyLVxcdGlmICghZGF0YSkge1xcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmM6ODAzOlxcdFxcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSk7XFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy04MDQtXFx0XFx0aWYgKCFkYXRhKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYz04NTI9c3RhdGljIGludCBzMzkwX3J1bnRpbWVfaW5zdHJfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy04NjMtXFx0aWYgKCF0YXJnZXQtXFx1MDAzZXRocmVhZC5yaV9jYikge1xcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmM6ODY0OlxcdFxcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSk7XFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy04NjUtXFx0XFx0aWYgKCFkYXRhKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9ydW50aW1lX2luc3RyLmM9NzA9U1lTQ0FMTF9ERUZJTkUyKHMzOTBfcnVudGltZV9pbnN0ciwgaW50LCBjb21tYW5kLCBpbnQsIHNpZ251bSlcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcnVudGltZV9pbnN0ci5jLTg1LVxcdGlmICghY3VycmVudC1cXHUwMDNldGhyZWFkLnJpX2NiKSB7XFxuYXJjaC9zMzkwL2tlcm5lbC9ydW50aW1lX2luc3RyLmM6ODY6XFx0XFx0Y2IgPSBremFsbG9jX29iaigqY2IpO1xcbmFyY2gvczM5MC9rZXJuZWwvcnVudGltZV9pbnN0ci5jLTg3LVxcdFxcdGlmICghY2IpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3NtcC5jPTExMjE9aW50IF9fcmVmIHNtcF9yZXNjYW5fY3B1cyhib29sIGVhcmx5KVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9zbXAuYy0xMTI1LVxcbmFyY2gvczM5MC9rZXJuZWwvc21wLmM6MTEyNjpcXHRpbmZvID0ga3phbGxvY19vYmooKmluZm8pO1xcbmFyY2gvczM5MC9rZXJuZWwvc21wLmMtMTEyNy1cXHRpZiAoIWluZm8pXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3Zkc28uYz0xMjk9c3RhdGljIHN0cnVjdCBwYWdlICoqIF9faW5pdCB2ZHNvX3NldHVwX3BhZ2VzKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3Zkc28uYy0xMzQtXFxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmM6MTM1OlxcdHBhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHBhZ2VzICsgMSk7XFxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmMtMTM2LVxcdGlmICghcGFnZWxpc3QpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmM9MzE9aW50IGt2bV9zMzkwX21tdV9jYWNoZV90b3B1cChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuYy00Ny1cXHRmb3IgKCA7IG1jLVxcdTAwM2VuX3JtYXBzIFxcdTAwM2MgS1ZNX1MzOTBfTU1VX0NBQ0hFX05fUk1BUFM7IG1jLVxcdTAwM2VuX3JtYXBzKyspIHtcXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmM6NDg6XFx0XFx0byA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB2c2llX3JtYXAsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9nbWFwL2RhdC5jLTQ5LVxcdFxcdGlmICghbylcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaD01OTE9c3RhdGljIGlubGluZSBzdHJ1Y3QgdnNpZV9ybWFwICprdm1fczM5MF9tbXVfY2FjaGVfYWxsb2Nfcm1hcChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaC01OTQtXFx0XFx0cmV0dXJuIG1jLVxcdTAwM2VybWFwc1stLW1jLVxcdTAwM2VuX3JtYXBzXTtcXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0Lmg6NTk1OlxcdHJldHVybiBremFsbG9jX29iaihzdHJ1Y3QgdnNpZV9ybWFwLCBHRlBfS1ZNX1MzOTBfTU1VX0NBQ0hFKTtcXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmgtNTk2LX1cXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaD05Mzk9c3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICprdm1fczM5MF9uZXdfbW11X2NhY2hlKHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmgtOTQyLVxcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaDo5NDM6XFx0bWMgPSBremFsbG9jX29iaigqbWMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9nbWFwL2RhdC5oLTk0NC1cXHRpZiAobWMgXFx1MDAyNlxcdTAwMjYgIWt2bV9zMzkwX21tdV9jYWNoZV90b3B1cChtYykpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAvZ21hcC5jPTQ3PXN0cnVjdCBnbWFwICpnbWFwX25ldyhzdHJ1Y3Qga3ZtICprdm0sIGdmbl90IGxpbWl0KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9nbWFwL2dtYXAuYy01NC1cXG5hcmNoL3MzOTAva3ZtL2dtYXAvZ21hcC5jOjU1OlxcdGdtYXAgPSBremFsbG9jX29iaigqZ21hcCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL3MzOTAva3ZtL2dtYXAvZ21hcC5jLTU2LVxcdGlmICghZ21hcClcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYz0xNzQ5PXN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqa3ZtX3MzOTBfZ2V0X2lvX2ludChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMTc3My1naXNhX291dDpcXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM6MTc3NDpcXHR0bXBfaW50aSA9IGt6YWxsb2Nfb2JqKCppbnRpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0xNzc1LVxcdGlmICh0bXBfaW50aSkge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jPTIzOTI9c3RhdGljIGludCBlbnF1ZXVlX2Zsb2F0aW5nX2lycShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI0MDQtXFx0d2hpbGUgKGxlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IGt2bV9zMzkwX2lycSkpIHtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM6MjQwNTpcXHRcXHRpbnRpID0ga3phbGxvY19vYmooKmludGksIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI0MDYtXFx0XFx0aWYgKCFpbnRpKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jPTI0MzQ9c3RhdGljIGludCByZWdpc3Rlcl9pb19hZGFwdGVyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMjQ1Ny1cXHR9XFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jOjI0NTg6XFx0YWRhcHRlciA9IGt6YWxsb2Nfb2JqKCphZGFwdGVyLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0yNDU5LVxcdGlmICghYWRhcHRlcikge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jPTI1MTI9c3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX21hcChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZCwgX191NjQgYWRkcilcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0yNTIyLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzoyNTIzOlxcdG1hcCA9IGt6YWxsb2Nfb2JqKCptYXAsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI1MjQtXFx0aWYgKCFtYXApXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9Mjc3MT1zdGF0aWMgaW50IGt2bV9zMzkwX2luamVjdF9haXJxKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0yNzg0LVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzoyNzg1OlxcdGludGkgPSBremFsbG9jX29iaigqaW50aSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMjc4Ni1cXHRpZiAoIWludGkpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9Mzc1ND1pbnQga3ZtX2FyY2hfc2V0X2lycV9pbmF0b21pYyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0zNzg4LVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzozNzg5OlxcdGludGkgPSBremFsbG9jX29iaigqaW50aSwgR0ZQX0FUT01JQyk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTM3OTAtXFx0aWYgKCFpbnRpKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM9NTI9c3RhdGljIGludCB6cGNpX3NldHVwX2FpcGIodTggbmlzYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy01Ni1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM6NTc6XFx0enBjaV9haXBiID0ga3phbGxvY19vYmoodW5pb24genBjaV9zaWNfaWliKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtNTgtXFx0aWYgKCF6cGNpX2FpcGIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM9MTIwPWludCBrdm1fczM5MF9wY2lfYWVuX2luaXQodTggbmlzYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy0xMjgtXFx0bXV0ZXhfbG9jayhcXHUwMDI2YWlmdC1cXHUwMDNlYWlmdF9sb2NrKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM6MTI5OlxcdGFpZnQtXFx1MDAzZWt6ZGV2ID0ga3phbGxvY19vYmpzKHN0cnVjdCBrdm1femRldiAqLCBaUENJX05SX0RFVklDRVMpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy0xMzAtXFx0aWYgKCFhaWZ0LVxcdTAwM2VremRldikge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3BjaS5jPTQ3MT1zdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9kZXZfb3BlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtNDc0LVxcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYzo0NzU6XFx0a3pkZXYgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX3pkZXYpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy00NzYtXFx0aWYgKCFremRldilcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYz03Mjk9aW50IF9faW5pdCBrdm1fczM5MF9wY2lfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3BjaS5jLTczNi1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM6NzM3OlxcdGFpZnQgPSBremFsbG9jX29iaihzdHJ1Y3QgenBjaV9haWZ0KTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtNzM4LVxcdGlmICghYWlmdClcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wdi5jPTQ3Nj1pbnQga3ZtX3MzOTBfcHZfc2V0X2FzaWRlKHN0cnVjdCBrdm0gKmt2bSwgdTE2ICpyYywgdTE2ICpycmMpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHYuYy00OTItXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3B2LmM6NDkzOlxcdHByaXYgPSBremFsbG9jX29iaigqcHJpdik7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3B2LmMtNDk0LVxcdGlmICghcHJpdilcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MTQ3Mz1zdGF0aWMgaW50IGt2bV9zMzkwX3NldF9wcm9jZXNzb3Ioc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNDgzLVxcdH1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjE0ODQ6XFx0cHJvYyA9IGt6YWxsb2Nfb2JqKCpwcm9jLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMTQ4NS1cXHRpZiAoIXByb2MpIHtcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MTY3OT1zdGF0aWMgaW50IGt2bV9zMzkwX2dldF9wcm9jZXNzb3Ioc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNjgzLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6MTY4NDpcXHRwcm9jID0ga3phbGxvY19vYmooKnByb2MsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNjg1LVxcdGlmICghcHJvYykge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0xNzA3PXN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X21hY2hpbmUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNzExLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6MTcxMjpcXHRtYWNoID0ga3phbGxvY19vYmooKm1hY2gsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNzEzLVxcdGlmICghbWFjaCkge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0yOTAwPWludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMjkxNy1cXHRcXHRcXHRicmVhaztcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjI5MTg6XFx0XFx0aW50aSA9IGt6YWxsb2Nfb2JqKCppbnRpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMjkxOS1cXHRcXHRpZiAoIWludGkpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jPTMyNDA9aW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTMyNzUtXFx0QlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3Qgc2llX3BhZ2UyKSAhPSA0MDk2KTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjMyNzY6XFx0a3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMiA9IGt6YWxsb2Nfb2JqKCprdm0tXFx1MDAzZWFyY2guc2llX3BhZ2UyLFxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzI3Ny1cXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz00NDUxPXN0YXRpYyB2b2lkIF9fa3ZtX2luamVjdF9wZmF1bHRfdG9rZW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHN0YXJ0X3Rva2VuLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy00NDYzLVxcdH0gZWxzZSB7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzo0NDY0OlxcdFxcdGludGlfbWVtID0ga3phbGxvY19vYmooKmludGlfbWVtLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNDQ2NS1cXHRcXHRpZiAoV0FSTl9PTl9PTkNFKCFpbnRpX21lbSkpXFxuLS1cXG5hcmNoL3MzOTAvbW0vZXh0bWVtLmM9Mjk3PV9fc2VnbWVudF9sb2FkIChjaGFyICpuYW1lLCBpbnQgZG9fbm9uc2hhcmVkLCB1bnNpZ25lZCBsb25nICphZGRyLCB1bnNpZ25lZCBsb25nICplbmQpXFxuLS1cXG5hcmNoL3MzOTAvbW0vZXh0bWVtLmMtMzE5LVxcbmFyY2gvczM5MC9tbS9leHRtZW0uYzozMjA6XFx0c2VnLVxcdTAwM2VyZXMgPSBremFsbG9jX29iaihzdHJ1Y3QgcmVzb3VyY2UpO1xcbmFyY2gvczM5MC9tbS9leHRtZW0uYy0zMjEtXFx0aWYgKHNlZy1cXHUwMDNlcmVzID09IE5VTEwpIHtcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjM4Nj1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpmcClcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjM5OC1cXHRpZiAoIWppdF9kYXRhKSB7XFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYzoyMzk5OlxcdFxcdGppdF9kYXRhID0ga3phbGxvY19vYmooKmppdF9kYXRhKTtcXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTI0MDAtXFx0XFx0aWYgKCFqaXRfZGF0YSlcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmM9NTIyPXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKl9fYWxsb2NfcmVzKHN0cnVjdCB6cGNpX2RldiAqemRldiwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmMtNTI2LVxcbmFyY2gvczM5MC9wY2kvcGNpLmM6NTI3OlxcdHIgPSBremFsbG9jX29iaigqcik7XFxuYXJjaC9zMzkwL3BjaS9wY2kuYy01MjgtXFx0aWYgKCFyKVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2kuYz04MjM9c3RydWN0IHpwY2lfZGV2ICp6cGNpX2NyZWF0ZV9kZXZpY2UodTMyIGZpZCwgdTMyIGZoLCBlbnVtIHpwY2lfc3RhdGUgc3RhdGUpXFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTgyNy1cXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjgyODpcXHR6ZGV2ID0ga3phbGxvY19vYmooKnpkZXYpO1xcbmFyY2gvczM5MC9wY2kvcGNpLmMtODI5LVxcdGlmICghemRldilcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmM9MTA2Nj1zdGF0aWMgaW50IHpwY2lfbWVtX2luaXQodm9pZClcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmMtMTA3Ny1cXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjEwNzg6XFx0enBjaV9pb21hcF9zdGFydCA9IGt6YWxsb2Nfb2JqcygqenBjaV9pb21hcF9zdGFydCwgWlBDSV9JT01BUF9FTlRSSUVTKTtcXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTEwNzktXFx0aWYgKCF6cGNpX2lvbWFwX3N0YXJ0KVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfYnVzLmM9MzE0PXN0YXRpYyBzdHJ1Y3QgenBjaV9idXMgKnpwY2lfYnVzX2FsbG9jKGludCB0b3BvLCBib29sIHRvcG9faXNfdGlkKVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfYnVzLmMtMzE3LVxcbmFyY2gvczM5MC9wY2kvcGNpX2J1cy5jOjMxODpcXHR6YnVzID0ga3phbGxvY19vYmooKnpidXMpO1xcbmFyY2gvczM5MC9wY2kvcGNpX2J1cy5jLTMxOS1cXHRpZiAoIXpidXMpXFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaV9pcnEuYz01NTI9c3RhdGljIGludCBfX2luaXQgenBjaV9kaXJlY3RlZF9pcnFfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmMtNTY1LVxcbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jOjU2NjpcXHR6cGNpX2lidiA9IGt6YWxsb2Nfb2JqcygqenBjaV9pYnYsIG51bV9wb3NzaWJsZV9jcHVzKCkpO1xcbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jLTU2Ny1cXHRpZiAoIXpwY2lfaWJ2KVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmM9NTkwPXN0YXRpYyBpbnQgX19pbml0IHpwY2lfZmxvYXRpbmdfaXJxX2luaXQodm9pZClcXG5hcmNoL3MzOTAvcGNpL3BjaV9pcnEuYy01OTEte1xcbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jOjU5MjpcXHR6cGNpX2lidiA9IGt6YWxsb2Nfb2JqcygqenBjaV9pYnYsIFpQQ0lfTlJfREVWSUNFUyk7XFxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmMtNTkzLVxcdGlmICghenBjaV9pYnYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjA1LjYxOTcyNjEwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjczODIyNjgwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggUmV2aWV3OiBLVk0gTWVtb3J5IEFsbG9jYXRpb24gb24gczM5MCoqXG5cbk9rYXksIGxldCdzIGRpdmUgYmFjayBpbnRvIHRoaXMgcGF0Y2guIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZywgc28gSSdtIGdvaW5nIHRvIGNhcmVmdWxseSBzdGVwIHRocm91Z2ggZWFjaCBjaGFuZ2UuIEl0IGxvb2tzIGxpa2Ugd2UncmUgYWRkcmVzc2luZyBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHdpdGhpbiB0aGUgczM5MCBLVk0gY29kZS4gVGhpcyBpcyBjcml0aWNhbDsgZXZlbiBhIHNtYWxsIGxlYWsgb3IgbWlzdXNlIGNhbiBkZXN0YWJpbGl6ZSB0aGUgZW50aXJlIHN5c3RlbSwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuXG5cblRoZSBmaXJzdCBibG9jaywgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY2Agc3BlY2lmaWNhbGx5IHRoZSBgaGFuZGxlX3N0aHlpYCBmdW5jdGlvbiwgaXMgd2hlcmUgdGhlIGluaXRpYWwgY2hhbmdlIGNvbWVzIGluOyBgZ2V0X3plcm9lZF9wYWdlYCBpcyBiZWluZyByZXBsYWNlZCBieSBga3phbGxvY2AgZm9yIGBzY3Ruc2AuIFRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNvbnZlcnNpb246IGBremFsbG9jYCBjb21iaW5lcyB0aGUgYGdldF96ZXJvZWRfcGFnZWAgd2l0aCBhIGBtZW1zZXQoMClgIHRvIGluaXRpYWxpemUgdGhlIG1lbW9yeS4gQ29ycmVzcG9uZGluZ2x5LCBgZnJlZV9wYWdlYCBpcyByZXBsYWNlZCB3aXRoIGBrZnJlZWAuIFRoYXQncyBnb29kOyBpdCdzIGNsZWFuZXIgYW5kIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LiBUaGUgc2FtZSBwYXR0ZXJuIGhvbGRzIGZvciBgYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jYCwgYGt2bV9zMzkwX2dpYl9kZXN0cm95YCBhbmQgYGt2bV9zMzkwX2dpYl9pbml0YCwgYW5kIGFsc28gYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgIGFuZCBgaGFuZGxlX3N0c2lgLCB3aXRoIHRoZSBzYW1lIGNoYW5nZXMgYmV0d2VlbiBgZ2V0X3plcm9lZF9wYWdlYCBhbmQgYGt6YWxsb2NgIGFuZCB0aGUgYXBwcm9wcmlhdGUgYGZyZWVfcGFnZWAgY2FsbHMgYmVpbmcgY2hhbmdlZCB0byBga2ZyZWVgLlxuXG5UaGUgZm91cnRoIGNodW5rLCBpbiBgYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY2AsIGlzIHNsaWdodGx5IG1vcmUgaW52b2x2ZWQuIEhlcmUsIHdpdGhpbiBga3ZtX2FyY2hfaW5pdF92bWAsIGBrdm1fYXJjaF9kZXN0cm95X3ZtYCwgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAsIGFuZCBga3ZtX3MzOTBfdmNwdV91bnNldHVwX2NtbWFgLCB3ZSBzZWUgdGhlIHNhbWUgdHJhbnNpdGlvbiBmcm9tIGBnZXRfemVyb2VkX3BhZ2VgIHRvIGBremFsbG9jYCwgYnV0IHdpdGggdGhlIGFkZGl0aW9uIG9mIGAqYCBmb3IgdGhlIGBrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTJgIHBvaW50ZXIuIEl0IGxvb2tzIGxpa2UgaXQgY291bGQgYmUgY2FsbGluZyBhIGhlbHBlci4gQW5kIGZvciB0aGUgb3RoZXIgY2FzZSBpbiB0aGlzIGZpbGUsIHdlIGhhdmUgdGhlIHNhbWUgc2l0dWF0aW9uIGFzIGJlZm9yZSB3aXRoIHRoZSByZXBsYWNlbWVudCBvZiBgZnJlZV9wYWdlYCB3aXRoIGBrZnJlZWAgd2hlbiBkZWFsaW5nIHdpdGggdGhlIHBoeXNpY2FsIG1lbW9yeS5cblxuVGhlc2UgYXJlIGFsbCBpbXBvcnRhbnQgZnVuY3Rpb25zOyBhbnkgbWVtb3J5LXJlbGF0ZWQgaXNzdWVzIGluIGBrdm1fYXJjaF9pbml0X3ZtYCBvciBga3ZtX2FyY2hfZGVzdHJveV92bWAgYXJlIGxpa2VseSB0byBjYXVzZSBzb21lIGJpZyBwcm9ibGVtcyB3aGVuIGxhdW5jaGluZyBvciBzaHV0dGluZyBkb3duIFZNcy4gSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIGhvdyB0aGVzZSBmdW5jdGlvbiBjYWxscyBhcmUgc3RydWN0dXJlZC4gVGhpcyBzZWVtcyBsaWtlIGEgcHJldHR5IHN0YW5kYXJkIGFuZCBzZW5zaWJsZSBjaGFuZ2UuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gd2hlcmUgc3VidGxlIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyBjYW4gY3JlZXAgaW4sIHNvIHRoaXMga2luZCBvZiBtb2Rlcm5pemF0aW9uIGlzIHVzdWFsbHkgYSBnb29kIHRoaW5nLiBUaGUgdXNlIG9mIGBremFsbG9jYCBpcyBnZW5lcmFsbHkgcHJlZmVycmVkIG5vdyBiZWNhdXNlIGl0IGlzIGNsZWFuZXIsIGhhbmRsZXMgdGhlIHplcm9pbmcgaW50ZXJuYWxseSwgYW5kIGlzIG1vcmUgY29uc2lzdGVudC4gSSBhc3N1bWUgdGhlcmUgaXNuJ3QgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGhlcmUuXG5cbkJlZm9yZSBnaXZpbmcgaXQgYSBzdGFtcCBvZiBhcHByb3ZhbCwgSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyB0byB2ZXJpZnkgdGhlIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBzb21lIHVuZXhwZWN0ZWQgZGVwZW5kZW5jeSBvciBjaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24uIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZm9yIGFueSBzdWJ0bGUgZWZmZWN0cy5cblxuSSdsbCBzZWFyY2ggZm9yICdLVk0nIHdpdGhpbiB0aGUgYGFyY2gvczM5MGAgZGlyZWN0b3J5IGp1c3QgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcyBvciBvdGhlciByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDUwNiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzoxMy4wMDE5OTcxNjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2NzQ3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzODcyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL3MzOTAvS2J1aWxkPTM9b2JqLXlcXHRcXHRcXHRcXHQrPSBtbS9cXG5hcmNoL3MzOTAvS2J1aWxkOjQ6b2JqLSQoQ09ORklHX0tWTSlcXHRcXHQrPSBrdm0vXFxuYXJjaC9zMzkwL0tidWlsZC01LW9iai15XFx0XFx0XFx0XFx0Kz0gY3J5cHRvL1xcbi0tXFxuYXJjaC9zMzkwL0tjb25maWc9ODQ2PWNvbmZpZyBWRklPX0FQXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy04NDgtXFx0cHJvbXB0IFxcXCJWRklPIHN1cHBvcnQgZm9yIEFQIGRldmljZXNcXFwiXFxuYXJjaC9zMzkwL0tjb25maWc6ODQ5OlxcdGRlcGVuZHMgb24gS1ZNXFxuYXJjaC9zMzkwL0tjb25maWctODUwLVxcdGRlcGVuZHMgb24gVkZJT1xcbi0tXFxuYXJjaC9zMzkwL0tjb25maWc9OTkwPWNvbmZpZyBTMzkwX0dVRVNUXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy0xMDAwLVxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHJ1biB0aGUga2VybmVsIGFzIGEgZ3Vlc3QgdW5kZXJcXG5hcmNoL3MzOTAvS2NvbmZpZzoxMDAxOlxcdCAgdGhlIEtWTSBoeXBlcnZpc29yLlxcbmFyY2gvczM5MC9LY29uZmlnLTEwMDItXFxuLS1cXG5hcmNoL3MzOTAvYm9vdC9pcGxfcGFybS5jPTI0OT12b2lkIHBhcnNlX2Jvb3RfY29tbWFuZF9saW5lKHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvYm9vdC9pcGxfcGFybS5jLTMwMi1cXG5hcmNoL3MzOTAvYm9vdC9pcGxfcGFybS5jOjMwMzojaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxcbmFyY2gvczM5MC9ib290L2lwbF9wYXJtLmMtMzA0LVxcdFxcdGlmICghc3RyY21wKHBhcmFtLCBcXFwicHJvdF92aXJ0XFxcIikpIHtcXG4tLVxcbmFyY2gvczM5MC9ib290L3N0YXJ0dXAuYz01Mj1zdGF0aWMgdm9pZCBkZXRlY3RfbWFjaGluZV90eXBlKHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvYm9vdC9zdGFydHVwLmMtNjUtXFx0aWYgKCFtZW1jbXAodm1tcy1cXHUwMDNldm1bMF0uY3BpLCBcXFwiXFxcXHhkMlxcXFx4ZTVcXFxceGQ0XFxcIiwgMykpXFxuYXJjaC9zMzkwL2Jvb3Qvc3RhcnR1cC5jOjY2OlxcdFxcdHNldF9tYWNoaW5lX2ZlYXR1cmUoTUZFQVRVUkVfS1ZNKTtcXG5hcmNoL3MzOTAvYm9vdC9zdGFydHVwLmMtNjctXFx0ZWxzZSBpZiAoIW1lbWNtcCh2bW1zLVxcdTAwM2V2bVswXS5jcGksIFxcXCJcXFxceGE5XFxcXHg2MVxcXFx4ZTVcXFxceGQ0XFxcIiwgNCkpXFxuLS1cXG5hcmNoL3MzOTAvYm9vdC91di5jPTE1PXZvaWQgdXZfcXVlcnlfaW5mbyh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL2Jvb3QvdXYuYy0yOC1cXG5hcmNoL3MzOTAvYm9vdC91di5jOjI5OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk0pKSB7XFxuYXJjaC9zMzkwL2Jvb3QvdXYuYy0zMC1cXHRcXHRtZW1jcHkodXZfaW5mby5pbnN0X2NhbGxzX2xpc3QsIHV2Y2IuaW5zdF9jYWxsc19saXN0LCBzaXplb2YodXZfaW5mby5pbnN0X2NhbGxzX2xpc3QpKTtcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz02Nz1DT05GSUdfUzM5MF9IWVBGU19GUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjY4OkNPTkZJR19LVk09bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzo2OTpDT05GSUdfS1ZNX1MzOTBfVUNPTlRST0w9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy03MC1DT05GSUdfUzM5MF9VTldJTkRfU0VMRlRFU1Q9bVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTY1PUNPTkZJR19TMzkwX0hZUEZTX0ZTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6NjY6Q09ORklHX0tWTT1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTY3LUNPTkZJR19TMzkwX1VOV0lORF9TRUxGVEVTVD1tXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmg9NTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGFyY2hfaW5fcmN1X2Vxcyh2b2lkKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaC01NS17XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oOjU2OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk0pKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaC01Ny1cXHRcXHRyZXR1cm4gY3VycmVudC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBQRl9WQ1BVO1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2dtYXBfaGVscGVycy5oLTItLypcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZ21hcF9oZWxwZXJzLmg6MzogKiAgSGVscGVyIGZ1bmN0aW9ucyBmb3IgS1ZNIGd1ZXN0IGFkZHJlc3Mgc3BhY2UgbWFwcGluZyBjb2RlXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2dtYXBfaGVscGVycy5oLTQtICpcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTItXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzojaWZuZGVmIEFTTV9LVk1fSE9TVF9IXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6NDojZGVmaW5lIEFTTV9LVk1fSE9TVF9IXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNS1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTY0LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjY1OiNlbmRpZiAvKiBBU01fS1ZNX0hPU1RfSCAqL1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0xMC1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjExOiNpZm5kZWYgQVNNX0tWTV9IT1NUX1MzOTBfSFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MTI6I2RlZmluZSBBU01fS1ZNX0hPU1RfUzM5MF9IXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0xMy1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMjktXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMDojZGVmaW5lIEtWTV9IQVZFX01NVV9SV0xPQ0tcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMxOiNkZWZpbmUgS1ZNX01BWF9WQ1BVUyAyNTVcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMyLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzM6I2RlZmluZSBLVk1fSU5URVJOQUxfTUVNX1NMT1RTIDFcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTM0LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzU6I2RlZmluZSBLVk1fUzM5MF9NQU5BR0VTX1MzOTBfR1VFU1QgMVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzYtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTQxLSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NDI6I2RlZmluZSBLVk1fTlJfSVJRQ0hJUFMgMVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NDM6I2RlZmluZSBLVk1fSVJRQ0hJUF9OVU1fUElOUyAxXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo0NDojZGVmaW5lIEtWTV9IQUxUX1BPTExfTlNfREVGQVVMVCA1MDAwMFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNDUtXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC00Ni0vKiBzMzkwLXNwZWNpZmljIHZjcHUtXFx1MDAzZXJlcXVlc3RzIGJpdCBtZW1iZXJzICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo0NzojZGVmaW5lIEtWTV9SRVFfRU5BQkxFX0lCU1xcdEtWTV9BUkNIX1JFUSgwKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NDg6I2RlZmluZSBLVk1fUkVRX0RJU0FCTEVfSUJTXFx0S1ZNX0FSQ0hfUkVRKDEpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo0OTojZGVmaW5lIEtWTV9SRVFfSUNQVF9PUEVSRVhDXFx0S1ZNX0FSQ0hfUkVRKDIpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo1MDojZGVmaW5lIEtWTV9SRVFfU1RBUlRfTUlHUkFUSU9OIEtWTV9BUkNIX1JFUSgzKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NTE6I2RlZmluZSBLVk1fUkVRX1NUT1BfTUlHUkFUSU9OICBLVk1fQVJDSF9SRVEoNClcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjUyOiNkZWZpbmUgS1ZNX1JFUV9WU0lFX1JFU1RBUlRcXHRLVk1fQVJDSF9SRVEoNSlcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjUzOiNkZWZpbmUgS1ZNX1JFUV9SRUZSRVNIX0dVRVNUX1BSRUZJWFxcdFxcXFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjU0OlxcdEtWTV9BUkNIX1JFUV9GTEFHUyg2LCBLVk1fUkVRVUVTVF9XQUlUIHwgS1ZNX1JFUVVFU1RfTk9fV0FLRVVQKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNTUtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTE1Nj1lbnVtIGlycV90eXBlcyB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTE5MC0gKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjE5MTojZGVmaW5lIEtWTV9TMzkwX01BWF9WSVJUSU9fSVJRUyA4NzM4MVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMTkyLVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaD0yNjg9c3RydWN0IGt2bV9zMzkwX2xvY2FsX2ludGVycnVwdCB7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0yNjktXFx0c3BpbmxvY2tfdCBsb2NrO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MjcwOlxcdERFQ0xBUkVfQklUTUFQKHNpZ3BfZW1lcmdfcGVuZGluZywgS1ZNX01BWF9WQ1BVUyk7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0yNzEtXFx0c3RydWN0IGt2bV9zMzkwX2lycV9wYXlsb2FkIGlycTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMjk0LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6Mjk1OiNkZWZpbmUgS1ZNX1MzOTBfQUlTX01PREVfQUxMICAgIDBcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjI5NjojZGVmaW5lIEtWTV9TMzkwX0FJU19NT0RFX1NJTkdMRSAxXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0yOTctXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTMxOT1zdHJ1Y3Qga3ZtX2h3X2JwX2luZm9fYXJjaCB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMyNS0gKiBPbmx5IHRoZSB1cHBlciAxNiBiaXRzIG9mIGt2bV9ndWVzdF9kZWJ1Zy1cXHUwMDNlY29udHJvbCBhcmUgYXJjaCBzcGVjaWZpYy5cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMyNjogKiBGdXJ0aGVyIEtWTV9HVUVTVERCRyBmbGFncyB3aGljaCBhbiBiZSB1c2VkIGZyb20gdXNlcnNwYWNlIGNhbiBiZSBmb3VuZCBpblxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzI3LSAqIGFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zMjgtICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMjk6I2RlZmluZSBLVk1fR1VFU1REQkdfRVhJVF9QRU5ESU5HIDB4MTAwMDAwMDBcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMzMC1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMzMS0jZGVmaW5lIGd1ZXN0ZGJnX2VuYWJsZWQodmNwdSkgXFxcXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzMyOlxcdFxcdCh2Y3B1LVxcdTAwM2VndWVzdF9kZWJ1ZyBcXHUwMDI2IEtWTV9HVUVTVERCR19FTkFCTEUpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zMzMtI2RlZmluZSBndWVzdGRiZ19zc3RlcF9lbmFibGVkKHZjcHUpIFxcXFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMzNDpcXHRcXHQodmNwdS1cXHUwMDNlZ3Vlc3RfZGVidWcgXFx1MDAyNiBLVk1fR1VFU1REQkdfU0lOR0xFU1RFUClcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMzNS0jZGVmaW5lIGd1ZXN0ZGJnX2h3X2JwX2VuYWJsZWQodmNwdSkgXFxcXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzM2OlxcdFxcdCh2Y3B1LVxcdTAwM2VndWVzdF9kZWJ1ZyBcXHUwMDI2IEtWTV9HVUVTVERCR19VU0VfSFdfQlApXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zMzctI2RlZmluZSBndWVzdGRiZ19leGl0X3BlbmRpbmcodmNwdSkgKGd1ZXN0ZGJnX2VuYWJsZWQodmNwdSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzM4OlxcdFxcdCh2Y3B1LVxcdTAwM2VndWVzdF9kZWJ1ZyBcXHUwMDI2IEtWTV9HVUVTVERCR19FWElUX1BFTkRJTkcpKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzM5LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzQwOiNkZWZpbmUgS1ZNX0dVRVNUREJHX1ZBTElEX01BU0sgXFxcXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzQxOlxcdFxcdChLVk1fR1VFU1REQkdfRU5BQkxFIHwgS1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfFxcXFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjM0MjpcXHRcXHRLVk1fR1VFU1REQkdfVVNFX0hXX0JQIHwgS1ZNX0dVRVNUREJHX0VYSVRfUEVORElORylcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTM0My1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NTc2PXN0cnVjdCBrdm1fczM5MF92c2llIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNTgwLVxcdGludCBuZXh0O1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NTgxOlxcdHN0cnVjdCB2c2llX3BhZ2UgKnBhZ2VzW0tWTV9NQVhfVkNQVVNdO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNTgyLX07XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTU5MD1zdHJ1Y3Qga3ZtX3MzOTBfZ2lzYV9pbnRlcnJ1cHQge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC01OTQtXFx0dTY0IGV4cGlyZXM7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo1OTU6XFx0REVDTEFSRV9CSVRNQVAoa2lja2VkX21hc2ssIEtWTV9NQVhfVkNQVVMpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNTk2LX07XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTYxMz1zdHJ1Y3Qga3ZtX2FyY2gge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02NDUtXFx0Lyogc3Vic2V0IG9mIGF2YWlsYWJsZSBjcHUgZmVhdHVyZXMgZW5hYmxlZCBieSB1c2VyIHNwYWNlICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo2NDY6XFx0REVDTEFSRV9CSVRNQVAoY3B1X2ZlYXQsIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX05SX0JJVFMpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjQ3LVxcdC8qIGluZGV4ZWQgYnkgdmNwdV9pZHggKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjY0ODpcXHRERUNMQVJFX0JJVE1BUChpZGxlX21hc2ssIEtWTV9NQVhfVkNQVVMpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjQ5LVxcdHN0cnVjdCBrdm1fczM5MF9naXNhX2ludGVycnVwdCBnaXNhX2ludDtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjU1LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NjU2OiNkZWZpbmUgS1ZNX0hWQV9FUlJfQkFEXFx0XFx0KC0xVUwpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo2NTc6I2RlZmluZSBLVk1fSFZBX0VSUl9ST19CQURcXHQoLTJVTClcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTY1OC1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NzE3PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fYXJjaF92Y3B1X3VuYmxvY2tpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNzE4LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NzE5OiNkZWZpbmUgX19LVk1fSEFWRV9BUkNIX1ZNX0ZSRUVcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTcyMC12b2lkIGt2bV9hcmNoX2ZyZWVfdm0oc3RydWN0IGt2bSAqa3ZtKTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NzI3PWV4dGVybiBzdHJ1Y3QgenBjaV9rdm1faG9vayB6cGNpX2t2bV9ob29rO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNzI4LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NzI5OiNlbmRpZiAvKiBBU01fS1ZNX0hPU1RfUzM5MF9IICovXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTItXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDozOiNpZm5kZWYgX0FTTV9LVk1fSE9TVF9TMzkwX1RZUEVTX0hcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oOjQ6I2RlZmluZSBfQVNNX0tWTV9IT1NUX1MzOTBfVFlQRVNfSFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtNS1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtOC1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oOjk6I2RlZmluZSBLVk1fUzM5MF9CU0NBX0NQVV9TTE9UUyA2NFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmg6MTA6I2RlZmluZSBLVk1fUzM5MF9FU0NBX0NQVV9TTE9UUyAyNDhcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTExLVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaD03Mj1zdHJ1Y3QgYnNjYV9ibG9jayB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTc3LVxcdF9fdThcXHRyZXNlcnZlZDJbNF07XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDo3ODpcXHRzdHJ1Y3QgYnNjYV9lbnRyeSBjcHVbS1ZNX1MzOTBfQlNDQV9DUFVfU0xPVFNdO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtNzktfTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmg9ODE9c3RydWN0IGVzY2FfYmxvY2sge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC04Ny1cXHRfX3U2NFxcdHJlc2VydmVkM1syMF07XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDo4ODpcXHRzdHJ1Y3QgZXNjYV9lbnRyeSBjcHVbS1ZNX1MzOTBfRVNDQV9DUFVfU0xPVFNdO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtODktfTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmg9MTM5PXN0cnVjdCBrdm1fczM5MF9zaWVfYmxvY2sge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0yNTgtXFx0X191OFxcdHJlc2VydmVkYjBbOF07XFx0XFx0LyogMHgwMGIwICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDoyNTk6I2RlZmluZSBIUElEX0tWTVxcdDB4NFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtMjYwLSNkZWZpbmUgSFBJRF9WU0lFXFx0MHg1XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oPTMzOT1zdHJ1Y3Qgc2llX3BhZ2Uge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0zNDgtXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDozNDk6I2VuZGlmIC8qIF9BU01fS1ZNX0hPU1RfUzM5MF9UWVBFU19IICovXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC0yLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjM6I2lmbmRlZiBBU01fS1ZNX0hPU1RfVFlQRVNfSFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjQ6I2RlZmluZSBBU01fS1ZNX0hPU1RfVFlQRVNfSFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oLTUtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC03LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjg6I2VuZGlmIC8qIEFTTV9LVk1fSE9TVF9UWVBFU19IICovXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC05LS8qXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6MTA6ICogSHlwZXJjYWxscyBmb3IgS1ZNIG9uIHMzOTAuIFRoZSBjYWxsaW5nIGNvbnZlbnRpb24gaXMgc2ltaWxhciB0byB0aGVcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xMS0gKiBzMzkwIEFCSSwgc28gd2UgdXNlIFIyLVI2IGZvciBwYXJhbWV0ZXJzIDEtNS4gSW4gYWRkaXRpb24gd2UgdXNlIFIxXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xNS0gKiB0aGUgaW5zdHJ1Y3Rpb24gZW5jb2RlZCBudW1iZXIsIGJ1dCBzcGVjaWZ5IHRoZSBudW1iZXIgaW4gUjEgYW5kXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6MTY6ICogdXNlIDB4NTAwIGFzIEtWTSBoeXBlcmNhbGxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xNy0gKlxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMjAtICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6MjE6I2lmbmRlZiBfX1MzOTBfS1ZNX1BBUkFfSFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjIyOiNkZWZpbmUgX19TMzkwX0tWTV9QQVJBX0hcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0yMy1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTY5LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjcwOiNkZWZpbmUgR0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKGFyZ3MpXFx0XFx0XFx0XFx0XFxcXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTcxLXN0YXRpYyBpbmxpbmVcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaD04Nz1sb25nIGt2bV9oeXBlcmNhbGwjI2FyZ3ModW5zaWduZWQgbG9uZyBuciBIWVBFUkNBTExfUEFSTV8jI2FyZ3MpXFx0XFxcXFxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtOTItXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTM6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDApXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTQ6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDEpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTU6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDIpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTY6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDMpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTc6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDQpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTg6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDUpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTk6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDYpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMTAwLVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg9MTE4PXN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fY2hlY2tfYW5kX2NsZWFyX2d1ZXN0X3BhdXNlZCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMTIyLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjEyMzojZW5kaWYgLyogX19TMzkwX0tWTV9QQVJBX0ggKi9cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tYWNoaW5lLmgtMTgtI2RlZmluZSBNRkVBVFVSRV9WTVxcdFxcdDdcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vbWFjaGluZS5oOjE5OiNkZWZpbmUgTUZFQVRVUkVfS1ZNXFx0XFx0OFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tYWNoaW5lLmgtMjAtI2RlZmluZSBNRkVBVFVSRV9MUEFSXFx0XFx0OVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21hY2hpbmUuaD05NT1ERUZJTkVfTUFDSElORV9IQVNfRkVBVFVSRSh2bSwgTUZFQVRVUkVfVk0pXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21hY2hpbmUuaDo5NjpERUZJTkVfTUFDSElORV9IQVNfRkVBVFVSRShrdm0sIE1GRUFUVVJFX0tWTSlcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vbWFjaGluZS5oLTk3LURFRklORV9NQUNISU5FX0hBU19GRUFUVVJFKGxwYXIsIE1GRUFUVVJFX0xQQVIpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaD0yMD1zdGF0aWMgaW5saW5lIGludCBpbml0X25ld19jb250ZXh0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgtMzEtXFx0bW0tXFx1MDAzZWNvbnRleHQuZmx1c2hfbW0gPSAwO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tbXVfY29udGV4dC5oOjMyOiNpZiBJU19FTkFCTEVEKENPTkZJR19LVk0pXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgtMzMtXFx0bW0tXFx1MDAzZWNvbnRleHQuYWxsb3dfY293X3NoYXJpbmcgPSAxO1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaD01NDk9c3RhdGljIGlubGluZSBpbnQgbW1faXNfcHJvdGVjdGVkKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTUwLXtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjU1MTojaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTUyLVxcdGlmICh1bmxpa2VseShhdG9taWNfcmVhZChcXHUwMDI2bW0tXFx1MDAzZWNvbnRleHQucHJvdGVjdGVkX2NvdW50KSkpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTU5ND1zdGF0aWMgaW5saW5lIGludCBtbV9mb3JiaWRzX3plcm9wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTk1LXtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjU5NjojaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTk3LVxcdGlmICghbW0tXFx1MDAzZWNvbnRleHQuYWxsb3dfY293X3NoYXJpbmcpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaD01Mj12b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaC03MC0jZGVmaW5lIFRJRl9HVUFSREVEX1NUT1JBR0VcXHQxN1xcdC8qIGxvYWQgZ3VhcmRlZCBzdG9yYWdlIGNvbnRyb2wgYmxvY2sgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaDo3MTojZGVmaW5lIFRJRl9JU09MQVRFX0JQX0dVRVNUXFx0MThcXHQvKiBSdW4gS1ZNIGd1ZXN0cyB3aXRoIGlzb2xhdGVkIEJQICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgtNzItI2RlZmluZSBUSUZfUEVSX1RSQVBcXHRcXHQxOVxcdC8qIE5lZWQgdG8gaGFuZGxlIFBFUiB0cmFwIG9uIGV4aXQgdG8gdXNlcm1vZGUgKi9cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyOiNpZm5kZWYgX19MSU5VWF9LVk1fUzM5MF9IXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzojZGVmaW5lIF9fTElOVVhfS1ZNX1MzOTBfSFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQtLypcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1OiAqIEtWTSBzMzkwIHNwZWNpZmljIHN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNi0gKlxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTMtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTQ6I2RlZmluZSBfX0tWTV9TMzkwXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTUtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MTY9c3RydWN0IGt2bV9zMzkwX3NrZXlzIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTIzLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI0OiNkZWZpbmUgS1ZNX1MzOTBfQ01NQV9QRUVLICgxIFxcdTAwM2NcXHUwMDNjIDApXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMjUtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMi0gKiBAY291bnQ6IFNpemUgb2YgdGhlIHJlc3VsdCBidWZmZXIuXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM6ICogQGZsYWdzOiBDb250cm9sIG9wZXJhdGlvbiBtb2RlIHZpYSBLVk1fUzM5MF9DTU1BXyogZmxhZ3NcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNDogKiBAcmVtYWluaW5nOiBVc2VkIHdpdGggS1ZNX1MzOTBfR0VUX0NNTUFfQklUUy4gSW5kaWNhdGVzIGhvdyBtYW55IGRpcnR5XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzUtICogICAgICAgICAgICAgcGFnZXMgYXJlIHN0aWxsIHJlbWFpbmluZy5cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNjogKiBAbWFzazogVXNlZCB3aXRoIEtWTV9TMzkwX1NFVF9DTU1BX0JJVFMuIEJpdG1hcCBvZiBiaXRzIHRvIGFjdHVhbGx5IHNldFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM3LSAqICAgICAgICBpbiB0aGUgUEdTVEUuXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zOS0gKlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQwOiAqIFVzZWQgaW4gS1ZNX1MzOTBfe0csU31FVF9DTU1BX0JJVFMgaW9jdGxzLlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQxLSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTQyPXN0cnVjdCBrdm1fczM5MF9jbW1hX2xvZyB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC01Mi1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1MzojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX1BPUiAgICAgICAxXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NTQ6I2RlZmluZSBLVk1fUzM5MF9SRVNFVF9DTEVBUiAgICAgMlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjU1OiNkZWZpbmUgS1ZNX1MzOTBfUkVTRVRfU1VCU1lTVEVNIDRcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1NjojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX0NQVV9JTklUICA4XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NTc6I2RlZmluZSBLVk1fUzM5MF9SRVNFVF9JUEwgICAgICAgMTZcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC01OC1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1OTovKiBmb3IgS1ZNX1MzOTBfTUVNX09QICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNjAtc3RydWN0IGt2bV9zMzkwX21lbV9vcCB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC03OC0vKiB0eXBlcyBmb3Iga3ZtX3MzOTBfbWVtX29wLVxcdTAwM2VvcCAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjc5OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfTE9HSUNBTF9SRUFEXFx0MFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjgwOiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfTE9HSUNBTF9XUklURVxcdDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo4MTojZGVmaW5lIEtWTV9TMzkwX01FTU9QX1NJREFfUkVBRFxcdDJcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo4MjojZGVmaW5lIEtWTV9TMzkwX01FTU9QX1NJREFfV1JJVEVcXHQzXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6ODM6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9BQlNPTFVURV9SRUFEXFx0NFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjg0OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfQUJTT0xVVEVfV1JJVEVcXHQ1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6ODU6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9BQlNPTFVURV9DTVBYQ0hHXFx0NlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTg2LVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTg3LS8qIGZsYWdzIGZvciBrdm1fczM5MF9tZW1fb3AtXFx1MDAzZWZsYWdzICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6ODg6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9GX0NIRUNLX09OTFlcXHRcXHQoMVVMTCBcXHUwMDNjXFx1MDAzYyAwKVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjg5OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfRl9JTkpFQ1RfRVhDRVBUSU9OXFx0KDFVTEwgXFx1MDAzY1xcdTAwM2MgMSlcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo5MDojZGVmaW5lIEtWTV9TMzkwX01FTU9QX0ZfU0tFWV9QUk9URUNUSU9OXFx0KDFVTEwgXFx1MDAzY1xcdTAwM2MgMilcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC05MS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo5MjovKiBmbGFncyBzcGVjaWZ5aW5nIGV4dGVuc2lvbiBzdXBwb3J0IHZpYSBLVk1fQ0FQX1MzOTBfTUVNX09QX0VYVEVOU0lPTiAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjkzOiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfRVhURU5TSU9OX0NBUF9CQVNFXFx0KDEgXFx1MDAzY1xcdTAwM2MgMClcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo5NDojZGVmaW5lIEtWTV9TMzkwX01FTU9QX0VYVEVOU0lPTl9DQVBfQ01QWENIR1xcdCgxIFxcdTAwM2NcXHUwMDNjIDEpXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtOTUtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9OTY9c3RydWN0IGt2bV9zMzkwX3BzdyB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xMDEtLyogdmFsaWQgdmFsdWVzIGZvciB0eXBlIGluIGt2bV9zMzkwX2ludGVycnVwdCAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjEwMjojZGVmaW5lIEtWTV9TMzkwX1NJR1BfU1RPUFxcdFxcdDB4ZmZmZTAwMDB1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTAzOiNkZWZpbmUgS1ZNX1MzOTBfUFJPR1JBTV9JTlRcXHRcXHQweGZmZmUwMDAxdVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjEwNDojZGVmaW5lIEtWTV9TMzkwX1NJR1BfU0VUX1BSRUZJWFxcdDB4ZmZmZTAwMDJ1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA1OiNkZWZpbmUgS1ZNX1MzOTBfUkVTVEFSVFxcdFxcdDB4ZmZmZTAwMDN1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA2OiNkZWZpbmUgS1ZNX1MzOTBfSU5UX1BGQVVMVF9JTklUXFx0MHhmZmZlMDAwNHVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMDc6I2RlZmluZSBLVk1fUzM5MF9JTlRfUEZBVUxUX0RPTkVcXHQweGZmZmUwMDA1dVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjEwODojZGVmaW5lIEtWTV9TMzkwX01DSEtcXHRcXHRcXHQweGZmZmUxMDAwdVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjEwOTojZGVmaW5lIEtWTV9TMzkwX0lOVF9DTE9DS19DT01QXFx0XFx0MHhmZmZmMTAwNHVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMTA6I2RlZmluZSBLVk1fUzM5MF9JTlRfQ1BVX1RJTUVSXFx0XFx0MHhmZmZmMTAwNXVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMTE6I2RlZmluZSBLVk1fUzM5MF9JTlRfVklSVElPXFx0XFx0MHhmZmZmMjYwM3VcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMTI6I2RlZmluZSBLVk1fUzM5MF9JTlRfU0VSVklDRVxcdFxcdDB4ZmZmZjI0MDF1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTEzOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0VNRVJHRU5DWVxcdFxcdDB4ZmZmZjEyMDF1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTE0OiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0VYVEVSTkFMX0NBTExcXHQweGZmZmYxMjAydVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTExNS0vKiBBbnl0aGluZyBiZWxvdyAweGZmZmUwMDAwdSBpcyB0YWtlbiBieSBJTlRfSU8gKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMTY6I2RlZmluZSBLVk1fUzM5MF9JTlRfSU8oYWksY3NzaWQsc3NpZCxzY2hpZCkgICBcXFxcXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTE3LVxcdCgoKHNjaGlkKSkgfFxcdFxcdFxcdCAgICAgICBcXFxcXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xMjAtXFx0ICgoYWkpIFxcdTAwM2NcXHUwMDNjIDI2KSlcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMjE6I2RlZmluZSBLVk1fUzM5MF9JTlRfSU9fTUlOXFx0XFx0MHgwMDAwMDAwMHVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMjI6I2RlZmluZSBLVk1fUzM5MF9JTlRfSU9fTUFYXFx0XFx0MHhmZmZkZmZmZnVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMjM6I2RlZmluZSBLVk1fUzM5MF9JTlRfSU9fQUlfTUFTS1xcdFxcdDB4MDQwMDAwMDB1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTI0LVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MTQ1PXN0cnVjdCBrdm1fczM5MF9wZ21faW5mbyB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xNTYtXFx0X191OCBvcF9hY2Nlc3NfaWQ7XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTU3OiNkZWZpbmUgS1ZNX1MzOTBfUEdNX0ZMQUdTX0lMQ19WQUxJRFxcdDB4MDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNTg6I2RlZmluZSBLVk1fUzM5MF9QR01fRkxBR1NfSUxDXzBcXHQweDAyXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTU5OiNkZWZpbmUgS1ZNX1MzOTBfUEdNX0ZMQUdTX0lMQ18xXFx0MHgwNFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjE2MDojZGVmaW5lIEtWTV9TMzkwX1BHTV9GTEFHU19JTENfTUFTS1xcdDB4MDZcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNjE6I2RlZmluZSBLVk1fUzM5MF9QR01fRkxBR1NfTk9fUkVXSU5EXFx0MHgwOFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTE2Mi1cXHRfX3U4IGZsYWdzO1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MTc0PXN0cnVjdCBrdm1fczM5MF9lbWVyZ19pbmZvIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTE3Ny1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNzg6I2RlZmluZSBLVk1fUzM5MF9TVE9QX0ZMQUdfU1RPUkVfU1RBVFVTXFx0MHgwMVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTE3OS1zdHJ1Y3Qga3ZtX3MzOTBfc3RvcF9pbmZvIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTIzMT1lbnVtIHB2X2NtZF9kbXBfaWQge1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjIzMjpcXHRLVk1fUFZfRFVNUF9JTklULFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjIzMzpcXHRLVk1fUFZfRFVNUF9DT05GSUdfU1RPUl9TVEFURSxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyMzQ6XFx0S1ZNX1BWX0RVTVBfQ09NUExFVEUsXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjM1OlxcdEtWTV9QVl9EVU1QX0NQVSxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0yMzYtfTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTI0Nj1lbnVtIHB2X2NtZF9pbmZvX2lkIHtcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyNDc6XFx0S1ZNX1BWX0lORk9fVk0sXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjQ4OlxcdEtWTV9QVl9JTkZPX0RVTVAsXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMjQ5LX07XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD0yODA9ZW51bSBwdl9jbWRfaWQge1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4MTpcXHRLVk1fUFZfRU5BQkxFLFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4MjpcXHRLVk1fUFZfRElTQUJMRSxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODM6XFx0S1ZNX1BWX1NFVF9TRUNfUEFSTVMsXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mjg0OlxcdEtWTV9QVl9VTlBBQ0ssXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mjg1OlxcdEtWTV9QVl9WRVJJRlksXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mjg2OlxcdEtWTV9QVl9QUkVQX1JFU0VULFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4NzpcXHRLVk1fUFZfVU5TSEFSRV9BTEwsXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mjg4OlxcdEtWTV9QVl9JTkZPLFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4OTpcXHRLVk1fUFZfRFVNUCxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyOTA6XFx0S1ZNX1BWX0FTWU5DX0NMRUFOVVBfUFJFUEFSRSxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyOTE6XFx0S1ZNX1BWX0FTWU5DX0NMRUFOVVBfUEVSRk9STSxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0yOTItfTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTMwMz1zdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMDgtXFx0dW5pb24ge1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjMwOTpcXHRcXHQvKiBmb3IgS1ZNX1MzOTBfWlBDSU9QX1JFR19BRU4gKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMTAtXFx0XFx0c3RydWN0IHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTMyMy0vKiB0eXBlcyBmb3Iga3ZtX3MzOTBfenBjaV9vcC1cXHUwMDNlb3AgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMjQ6I2RlZmluZSBLVk1fUzM5MF9aUENJT1BfUkVHX0FFTiAgICAgICAgICAgICAgICAwXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzI1OiNkZWZpbmUgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTiAgICAgIDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMjYtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzI3LS8qIGZsYWdzIGZvciBrdm1fczM5MF96cGNpX29wLVxcdTAwM2V1LnJlZ19hZW4uZmxhZ3MgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMjg6I2RlZmluZSBLVk1fUzM5MF9aUENJT1BfUkVHQUVOX0hPU1QgICAgKDEgXFx1MDAzY1xcdTAwM2MgMClcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMjktXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzMwLS8qIERldmljZSBjb250cm9sIEFQSTogczM5MC1zcGVjaWZpYyBkZXZpY2VzICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzMxOiNkZWZpbmUgS1ZNX0RFVl9GTElDX0dFVF9BTExfSVJRU1xcdDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzI6I2RlZmluZSBLVk1fREVWX0ZMSUNfRU5RVUVVRVxcdFxcdDJcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzM6I2RlZmluZSBLVk1fREVWX0ZMSUNfQ0xFQVJfSVJRU1xcdFxcdDNcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzQ6I2RlZmluZSBLVk1fREVWX0ZMSUNfQVBGX0VOQUJMRVxcdFxcdDRcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzU6I2RlZmluZSBLVk1fREVWX0ZMSUNfQVBGX0RJU0FCTEVfV0FJVFxcdDVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzY6I2RlZmluZSBLVk1fREVWX0ZMSUNfQURBUFRFUl9SRUdJU1RFUlxcdDZcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzc6I2RlZmluZSBLVk1fREVWX0ZMSUNfQURBUFRFUl9NT0RJRllcXHQ3XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM4OiNkZWZpbmUgS1ZNX0RFVl9GTElDX0NMRUFSX0lPX0lSUVxcdDhcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzk6I2RlZmluZSBLVk1fREVWX0ZMSUNfQUlTTVxcdFxcdDlcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNDA6I2RlZmluZSBLVk1fREVWX0ZMSUNfQUlSUV9JTkpFQ1RcXHQxMFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM0MTojZGVmaW5lIEtWTV9ERVZfRkxJQ19BSVNNX0FMTFxcdFxcdDExXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzQyLS8qXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzQzLSAqIFdlIGNhbiBoYXZlIHVwIHRvIDQqNjRrIHBlbmRpbmcgc3ViY2hhbm5lbHMgKyA4IGFkYXB0ZXIgaW50ZXJydXB0cyxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNDQ6ICogYXMgd2VsbCBhcyB1cCAgdG8gQVNZTkNfUEZfUEVSX1ZDUFUqS1ZNX01BWF9WQ1BVUyBwZmF1bHQgZG9uZSBpbnRlcnJ1cHRzLlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM0NS0gKiBUaGVyZSBhcmUgYWxzbyBzY2xwIGFuZCBtYWNoaW5lIGNoZWNrcy4gVGhpcyBnaXZlcyB1c1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzQ4LSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM0OTojZGVmaW5lIEtWTV9TMzkwX01BWF9GTE9BVF9JUlFTXFx0MjY2MjUwXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzUwOiNkZWZpbmUgS1ZNX1MzOTBfRkxJQ19NQVhfQlVGRkVSXFx0MHgyMDAwMDAwXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzUxLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTM1Mj1zdHJ1Y3Qga3ZtX3MzOTBfaW9fYWRhcHRlciB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zNTktXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzYwOiNkZWZpbmUgS1ZNX1MzOTBfQURBUFRFUl9TVVBQUkVTU0lCTEUgMHgwMVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM2MS1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTM2Nz1zdHJ1Y3Qga3ZtX3MzOTBfYWlzX2FsbCB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zNzEtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzcyOiNkZWZpbmUgS1ZNX1MzOTBfSU9fQURBUFRFUl9NQVNLIDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNzM6I2RlZmluZSBLVk1fUzM5MF9JT19BREFQVEVSX01BUCAyXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mzc0OiNkZWZpbmUgS1ZNX1MzOTBfSU9fQURBUFRFUl9VTk1BUCAzXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzc1LVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTM3Nj1zdHJ1Y3Qga3ZtX3MzOTBfaW9fYWRhcHRlcl9yZXEge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzg0LS8qIGt2bSBhdHRyX2dyb3VwICBvbiB2bSBmZCAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4NTojZGVmaW5lIEtWTV9TMzkwX1ZNX01FTV9DVFJMXFx0XFx0MFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4NjojZGVmaW5lIEtWTV9TMzkwX1ZNX1RPRFxcdFxcdFxcdDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozODc6I2RlZmluZSBLVk1fUzM5MF9WTV9DUllQVE9cXHRcXHQyXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mzg4OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX01PREVMXFx0XFx0M1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4OTojZGVmaW5lIEtWTV9TMzkwX1ZNX01JR1JBVElPTlxcdFxcdDRcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOTA6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfVE9QT0xPR1lcXHQ1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzkxLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM5Mi0vKiBrdm0gYXR0cmlidXRlcyBmb3IgbWVtX2N0cmwgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOTM6I2RlZmluZSBLVk1fUzM5MF9WTV9NRU1fRU5BQkxFX0NNTUFcXHQwXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mzk0OiNkZWZpbmUgS1ZNX1MzOTBfVk1fTUVNX0NMUl9DTU1BXFx0MVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM5NTojZGVmaW5lIEtWTV9TMzkwX1ZNX01FTV9MSU1JVF9TSVpFXFx0MlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM5Ni1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOTc6I2RlZmluZSBLVk1fUzM5MF9OT19NRU1fTElNSVRcXHRcXHRVNjRfTUFYXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzk4LVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM5OTovKiBrdm0gYXR0cmlidXRlcyBmb3IgS1ZNX1MzOTBfVk1fVE9EICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDAwOiNkZWZpbmUgS1ZNX1MzOTBfVk1fVE9EX0xPV1xcdFxcdDBcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0MDE6I2RlZmluZSBLVk1fUzM5MF9WTV9UT0RfSElHSFxcdFxcdDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0MDI6I2RlZmluZSBLVk1fUzM5MF9WTV9UT0RfRVhUXFx0XFx0MlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQwMy1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD00MDQ9c3RydWN0IGt2bV9zMzkwX3ZtX3RvZF9jbG9jayB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MDgtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDA5Oi8qIGt2bSBhdHRyaWJ1dGVzIGZvciBLVk1fUzM5MF9WTV9DUFVfTU9ERUwgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MTAtLyogcHJvY2Vzc29yIHJlbGF0ZWQgYXR0cmlidXRlcyBhcmUgci93ICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDExOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX1BST0NFU1NPUlxcdDBcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MTItc3RydWN0IGt2bV9zMzkwX3ZtX2NwdV9wcm9jZXNzb3Ige1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDE5LS8qIG1hY2hpbmUgcmVsYXRlZCBhdHRyaWJ1dGVzIGFyZSByL28gKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0MjA6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfTUFDSElORVxcdFxcdDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MjEtc3RydWN0IGt2bV9zMzkwX3ZtX2NwdV9tYWNoaW5lIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQyOC1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0Mjk6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfUFJPQ0VTU09SX0ZFQVRcXHQyXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDMwOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX01BQ0hJTkVfRkVBVFxcdDNcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MzEtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDMyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfTlJfQklUU1xcdDEwMjRcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0MzM6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9FU09QXFx0MFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzNDojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX1NJRUYyXFx0MVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzNTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUXzY0QlNDQU9cXHQyXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDM2OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0lJRlxcdDNcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0Mzc6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9HUEVSRVxcdDRcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0Mzg6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9HU0xTXFx0NVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzOTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX0lCXFx0XFx0NlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQ0MDojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX0NFSVxcdDdcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NDE6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9JQlNcXHQ4XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0tFWVxcdDlcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NDM6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9DTU1BXFx0MTBcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NDQ6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9QRk1GSVxcdDExXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQ1OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0lHUElGXFx0MTJcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NDY6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9LU1NcXHQxM1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQ0NzojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX0FTVEZMRUlFMlxcdDE0XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDQ4LXN0cnVjdCBrdm1fczM5MF92bV9jcHVfZmVhdCB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00NTEtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDUyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX1BST0NFU1NPUl9TVUJGVU5DXFx0NFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQ1MzojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9NQUNISU5FX1NVQkZVTkNcXHRcXHQ1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDU0LS8qIGZvciBcXFwidGVzdCBiaXRcXFwiIGluc3RydWN0aW9ucyBNU0IgMCBiaXQgb3JkZXJpbmcsIGZvciBcXFwicXVlcnlcXFwiIHJhdyBibG9ja3MgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD00NTU9c3RydWN0IGt2bV9zMzkwX3ZtX2NwdV9zdWJmdW5jIHtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzoxMy4wNjU2ODE0NDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjI0MjYyNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipFeGFtaW5pbmcgS2NvbmZpZyBmb3IgczM5MCBLVk0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgS1ZNIGlzIGNvbmZpZ3VyZWQgZm9yIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gR2l2ZW4gbXkgZGVlcCBrbm93bGVkZ2Ugb2Yga2VybmVsIGNvbmZpZ3VyYXRpb24sIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgYGFyY2gvczM5MC9rdm0vS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgYWxsIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZGVmaW5pdGlvbnMuIEl0J2xsIHNob3cgbWUgdGhlIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBnb3Zlcm4gS1ZNJ3MgYmVoYXZpb3Igb24gdGhhdCBzcGVjaWZpYyBwbGF0Zm9ybS4gVW5kZXJzdGFuZGluZyB0aGVzZSBjb25maWd1cmF0aW9uIGtub2JzIGlzIGNydWNpYWwgZm9yIGFueSBmdXJ0aGVyIHdvcmsgSSBuZWVkIHRvIGRvIG9uIHRoaXMgYXNwZWN0IG9mIHRoZSBzeXN0ZW0uIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTI0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDM6MTUuNjg5OTQ3MTc0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9zMzkwL2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBLVk0gY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0c291cmNlIFxcXCJ2aXJ0L2t2bS9LY29uZmlnXFxcIlxcbiAgIDY6XFx0XFxuICAgNzpcXHRtZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXFxuICAgODpcXHRcXHRkZWZfYm9vbCB5XFxuICAgOTpcXHRcXHRwcm9tcHQgXFxcIktWTVxcXCJcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgU2F5IFkgaGVyZSB0byBnZXQgdG8gc2VlIG9wdGlvbnMgZm9yIHVzaW5nIHlvdXIgTGludXggaG9zdCB0byBydW4gb3RoZXJcXG4gIDEyOlxcdFxcdCAgb3BlcmF0aW5nIHN5c3RlbXMgaW5zaWRlIHZpcnR1YWwgbWFjaGluZXMgKGd1ZXN0cykuXFxuICAxMzpcXHRcXHQgIFRoaXMgb3B0aW9uIGFsb25lIGRvZXMgbm90IGFkZCBhbnkga2VybmVsIGNvZGUuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZCBkaXNhYmxlZC5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgVklSVFVBTElaQVRJT05cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIEtWTVxcbiAgMjA6XFx0XFx0ZGVmX3RyaXN0YXRlIHlcXG4gIDIxOlxcdFxcdHByb21wdCBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4gIDIzOlxcdFxcdHNlbGVjdCBLVk1fQVNZTkNfUEZcXG4gIDI0OlxcdFxcdHNlbGVjdCBLVk1fQVNZTkNfUEZfU1lOQ1xcbiAgMjU6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDI2OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXFxuICAyNzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcXG4gIDI4OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcXG4gIDI5OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9OT19QT0xMXFxuICAzMDpcXHRcXHRzZWxlY3QgS1ZNX1ZGSU9cXG4gIDMxOlxcdFxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbiAgMzI6XFx0XFx0c2VsZWN0IEtWTV9NTVVfTE9DS0xFU1NfQUdJTkdcXG4gIDMzOlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXFxuICAzNDpcXHRcXHRoZWxwXFxuICAzNTpcXHRcXHQgIFN1cHBvcnQgaG9zdGluZyBwYXJhdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMgdXNpbmcgdGhlIFNJRVxcbiAgMzY6XFx0XFx0ICB2aXJ0dWFsaXphdGlvbiBjYXBhYmlsaXR5IG9uIHRoZSBtYWluZnJhbWUuIFRoaXMgc2hvdWxkIHdvcmtcXG4gIDM3OlxcdFxcdCAgb24gYW55IDY0Yml0IG1hY2hpbmUuXFxuICAzODpcXHRcXG4gIDM5OlxcdFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdGhyb3VnaFxcbiAgNDA6XFx0XFx0ICBhIGNoYXJhY3RlciBkZXZpY2Ugbm9kZSBuYW1lZCAvZGV2L2t2bS5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDQzOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQga3ZtLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0NjpcXHRcXG4gIDQ3OlxcdGNvbmZpZyBLVk1fUzM5MF9VQ09OVFJPTFxcbiAgNDg6XFx0XFx0Ym9vbCBcXFwiVXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1xcXCJcXG4gIDQ5OlxcdFxcdGRlcGVuZHMgb24gS1ZNXFxuICA1MDpcXHRcXHRoZWxwXFxuICA1MTpcXHRcXHQgIEFsbG93IENBUF9TWVNfQURNSU4gdXNlcnMgdG8gY3JlYXRlIEtWTSB2aXJ0dWFsIG1hY2hpbmVzIHRoYXQgYXJlXFxuICA1MjpcXHRcXHQgIGNvbnRyb2xsZWQgYnkgdXNlcnNwYWNlLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1NTpcXHRcXG4gIDU2OlxcdGVuZGlmICMgVklSVFVBTElaQVRJT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDM6MTUuNjkwMDE5NTI0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODcyMzk3NDMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBhIHBhdGNoIHJlbGF0ZWQgdG8gYFZJUlRVQUxJWkFUSU9OYCBhbmQgc3BlY2lmaWNhbGx5IGBLVk1gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMuXG5cbkxldCdzIGRpdmUgaW4gYW5kIHJldmlldyB0aGUgZGlmZi4gSXQgc2VlbXMgd2UgaGF2ZSBzZXZlcmFsIGZpbGUgbW9kaWZpY2F0aW9ucyBhY3Jvc3MgYGFyY2gvczM5MC9rdm0vczM5MC9gLiBUaGUgY2hhbmdlcyBhcHBlYXIgdG8gYmUgbWFpbmx5IGNvbmNlcm5lZCB3aXRoIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb246XG5cbjEuICBgaGFuZGxlX3N0aHlpYCBpcyBjaGFuZ2luZyBgZ2V0X3plcm9lZF9wYWdlYCB0byBga3phbGxvY2AsIGFuZCBgZnJlZV9wYWdlYCB0byBga2ZyZWVgLlxuMi4gIGBrdm1fczM5MF9naWJfZGVzdHJveWAgYW5kIGBrdm1fczM5MF9naWJfaW5pdGAgaGF2ZSBzaW1pbGFyIGNoYW5nZXMsIHVzaW5nIGBremFsbG9jYCBpbnN0ZWFkIG9mIGBnZXRfemVyb2VkX3BhZ2VgIGFuZCBga2ZyZWVgIGluc3RlYWQgb2YgYGZyZWVfcGFnZWAuXG4zLiAgYGhhbmRsZV9zdHNpYCBhbHNvIHJlZmxlY3RzIHRoaXMgcGF0dGVybiBvZiBzd2l0Y2hpbmcgZnJvbSBgZ2V0X3plcm9lZF9wYWdlYCBhbmQgYGZyZWVfcGFnZWAgdG8gYGt6YWxsb2NgIGFuZCBga2ZyZWVgLlxuNC4gIGBrdm1fYXJjaF9pbml0X3ZtYCAgYW5kIGBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWFgIGFyZSBkb2luZyB0aGUgc2FtZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2VzLlxuXG5Ob3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogSXMgdGhpcyBXb3J0aEZ1enppbmc/IEkgbmVlZCB0byBhcHBseSBteSBrbm93bGVkZ2Ugb2Ygd2hhdCBtYWtlcyBhIHBhdGNoIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBndWlkZWxpbmVzIGFyZSBwcmV0dHkgY2xlYXIuIEl0J3MgYSBcIm5vXCIgaWYgaXQncyBwdXJlbHkgZG9jdW1lbnRhdGlvbiwgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgcGFydGljdWxhcmx5IHRob3NlIHJlbHlpbmcgb24gc29mdHdhcmUgZW11bGF0aW9uLCBsaWtlIFFFTVUuXG5cbkJ1dCB0aGlzIHBhdGNoIGNsZWFybHkgbW9kaWZpZXMgYGFyY2gvczM5MGAgS1ZNIGNvZGUhIEEgY29yZSBhcmNoaXRlY3R1cmUgY29tcG9uZW50LiBTbywgbXkgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBCdXQgSSBtdXN0IGJlIHN1cmUuIEkgbmVlZCB0byBiZSBzdXJlIHRoaXMgaXMgYSBjb2RlIHBhdGggSSBjYW4gZXZlbiBleGVjdXRlISBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIEtWTSBvbiBzMzkwIGNhbiBiZSBydW4gYW5kIGZ1enplZC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXM6IENhbiBzMzkwIEtWTSAqcnVuKiBpbiBRRU1VPyBBbmQgKndoeSogZG9lcyBRRU1VIG1hdHRlcj8gVGhlIGd1aWRlbGluZXMgbWVudGlvbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGlzIHNlZW1zIGNlbnRyYWwgdG8gdGhlIGRldGVybWluYXRpb24uXG5cbkkgcmVjYWxsIHRoYXQgczM5MCBLVk0gaXMgdXNlZCB3aGVuIExpbnV4IHMzOTAgaXMgcnVubmluZyB3aXRoIEtWTS4gQnV0IHdoYXQgYWJvdXQgUUVNVT8gSSBrbm93IFFFTVUgc3VwcG9ydHMgczM5MHggdXNpbmcgVENHLCBidXQgZG9lc24ndCB0aGUgVENHIGltcGxlbWVudGF0aW9uIG9uIHMzOTB4ICpub3QqIHN1cHBvcnQgbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBwYXJ0aWN1bGFybHkgdGhlIFNJRSAoU3lzdGVtIEluc3RydWN0aW9uIEV4dGVuc2lvbikgaW5zdHJ1Y3Rpb24gc2V0PyBJc24ndCBTSUUgZXNzZW50aWFsIGZvciBLVk0/XG5cblRoZW4gSSByZWFsaXplIEkgbmVlZCB0byBjb25maXJtOiBEb2VzIFFFTVUgVENHIHMzOTB4IHN1cHBvcnQgS1ZNPyBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGxpa2UgYGFyY2gvczM5MC9rdm0vczM5MC9zaWUuU2Agb3IgU0lFIGluc3RydWN0aW9ucyBpbiBzMzkwLiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIuIElmIHMzOTAgS1ZNIHJlbGllcyBvbiBTSUUsIGFuZCBRRU1VJ3MgVENHIGxhY2tzIFNJRSBzdXBwb3J0LCB0aGVuIHRoaXMgcGF0Y2ggaXMgdW5mb3J0dW5hdGVseSAqbm90KiBmdXp6YWJsZSB1bmRlciBzdGFuZGFyZCBRRU1VLiBCdXQgSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIFNJRSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDg2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjI0LjQxMzk5NjAxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUzMzk5NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNpZTY0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NjgzPXZvaWQga3ZtX2FyY2hfY3J5cHRvX3NldF9tYXNrcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgKmFwbSxcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjg4LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6Njg5OmludCBfX3NpZTY0YShwaHlzX2FkZHJfdCBzaWVfYmxvY2tfcGh5cywgc3RydWN0IGt2bV9zMzkwX3NpZV9ibG9jayAqc2llX2Jsb2NrLCB1NjQgKnJzYSxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTY5MC1cXHQgICAgIHVuc2lnbmVkIGxvbmcgZ2FzY2UpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjkxLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NjkyOnN0YXRpYyBpbmxpbmUgaW50IHNpZTY0YShzdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrICpzaWVfYmxvY2ssIHU2NCAqcnNhLCB1bnNpZ25lZCBsb25nIGdhc2NlKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjkzLXtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjY5NDpcXHRyZXR1cm4gX19zaWU2NGEodmlydF90b19waHlzKHNpZV9ibG9jayksIHNpZV9ibG9jaywgcnNhLCBnYXNjZSk7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02OTUtfVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TPTE4ND1FWFBPUlRfU1lNQk9MKF9fV0FSTl90cmFwKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TLTE4OS0vKlxcbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUzoxOTA6ICogX19zaWU2NGEgY2FsbGluZyBjb252ZW50aW9uOlxcbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUy0xOTEtICogJXIyIHBvaW50ZXIgdG8gc2llIGNvbnRyb2wgYmxvY2sgcGh5c1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TLTE5NS0gKi9cXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MTk2OlNZTV9GVU5DX1NUQVJUKF9fc2llNjRhKVxcbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUy0xOTctXFx0c3RtZ1xcdCVyNiwlcjE0LF9fU0ZfR1BSUyglcjE1KVxcdCMgc2F2ZSBrZXJuZWwgcmVnaXN0ZXJzXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM9MjMxPVNZTV9JTk5FUl9MQUJFTChzaWVfZXhpdCwgU1lNX0xfR0xPQkFMKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TLTI0Mi1cXHRCUl9FWFxcdCVyMTRcXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MjQzOlNZTV9GVU5DX0VORChfX3NpZTY0YSlcXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MjQ0OkVYUE9SVF9TWU1CT0woX19zaWU2NGEpXFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TLTI0NS1FWFBPUlRfU1lNQk9MKHNpZV9leGl0KVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYz0zMzM9c3RhdGljIHZvaWQgbm90cmFjZSBzMzkwX2JhY2t1cF9tY2NrX2luZm8oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL25taS5jLTMzNy1cXG5hcmNoL3MzOTAva2VybmVsL25taS5jOjMzODpcXHQvKiByMTQgY29udGFpbnMgdGhlIHNpZSBibG9jaywgd2hpY2ggd2FzIHNldCBpbiBzaWU2NGEgKi9cXG5hcmNoL3MzOTAva2VybmVsL25taS5jLTMzOS1cXHRzdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrICpzaWVfYmxvY2sgPSBwaHlzX3RvX3ZpcnQocmVncy1cXHUwMDNlZ3Byc1sxNF0pO1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jPTMzOD12b2lkIG5vaW5zdHIgX19kb19wZ21fY2hlY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3RyYXBzLmMtMzU2LVxcdCAqIEluIGNhc2Ugb2YgYSBndWVzdCBmYXVsdCwgc2hvcnQtY2lyY3VpdCB0aGUgZmF1bHQgaGFuZGxlciBhbmQgcmV0dXJuLlxcbmFyY2gvczM5MC9rZXJuZWwvdHJhcHMuYzozNTc6XFx0ICogVGhpcyB3YXkgdGhlIHNpZTY0YSgpIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIDA7IGZhdWx0IGFkZHJlc3MgYW5kXFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jLTM1OC1cXHQgKiBvdGhlciByZWxldmFudCBiaXRzIGFyZSBzYXZlZCBpbiBjdXJyZW50LVxcdTAwM2V0aHJlYWQuZ21hcF90ZWlkLCBhbmRcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9NDc0OD1pbnQgbm9pbnN0ciBrdm1fczM5MF9lbnRlcl9leGl0X3NpZShzdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrICpzY2IsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTQ3NTktXFx0ICovXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzo0NzYwOlxcdHJldCA9IHNpZTY0YShzY2IsIGdwcnMsIGdhc2NlKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTQ3NjEtXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvdnNpZS5jPTExODc9c3RhdGljIGludCBkb192c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSwgc3RydWN0IGdtYXAgKnNnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ZzaWUuYy0xMjE0LVxcdC8qXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ZzaWUuYzoxMjE1OlxcdCAqIFNpbXVsYXRlIGEgU0lFIGVudHJ5IG9mIHRoZSBWQ1BVIChzZWUgc2llNjRhKSwgc28gVkNQVSBibG9ja2luZ1xcbmFyY2gvczM5MC9rdm0vczM5MC92c2llLmMtMTIxNi1cXHQgKiBhbmQgVkNQVSByZXF1ZXN0cyBhbHNvIGhpbmRlciB0aGUgdlNJRSBmcm9tIHJ1bm5pbmcgYW5kIGxlYWRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDM6MjQuNzY3NDA3NzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTk2MTYyNDk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCB3YWl0IGEgbWludXRlISBTeXprYWxsZXIgKmRvZXMqIHRhcmdldCBzMzkweCEgUmlnaHQsIExpbnV4L3MzOTB4IGlzIHN1cHBvcnRlZC4gVGhpcyBpcyBpbnRlcmVzdGluZy4gTGV0J3MgZGVsdmUgaW50byB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zOiBga3ZtX2FyY2hfaW5pdF92bWAsIGBoYW5kbGVfc3RoeWlgLCBgaGFuZGxlX3N0c2lgLCBhbmQgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAuIEFyZSB0aGVzZSBmdW5jdGlvbnMgYWN0dWFsbHkgKnJlYWNoYWJsZSogd2hlbiBydW5uaW5nIFN5emthbGxlciBvbiBzMzkweD9cblxuWWVzLCBjb25maXJtZWQuIFRoZSBgS1ZNX0NSRUFURV9WTWAgaW9jdGwgY2FsbHMgYGt2bV9hcmNoX2luaXRfdm1gIG9uIHMzOTB4LiBBbmQgYEtWTV9SVU5gIGhhbmRsZXMgZXhpdHMgYW5kIGludGVyY2VwdHMsIHNwZWNpZmljYWxseSBjYWxsaW5nIGBoYW5kbGVfc3RoeWlgIGFuZCBgaGFuZGxlX3N0c2lgLiBGdXJ0aGVybW9yZSwgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAgZ2V0cyBjYWxsZWQgZHVyaW5nIENNTUEgc2V0dXAsIGFuZCBga3ZtX3MzOTBfZ2liX2luaXRgIGhhcHBlbnMgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbi5cblxuVGhlIGtleSBxdWVzdGlvbjogaXMgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSAqd29ydGgqIGZ1enppbmc/IExldCdzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdC5cblxuVGhlIGNyaXRlcmlhIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzOyBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciB0cmFjZXBvaW50czsgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cy9tYWNyb3MgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdzsgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM7IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXIgY29kZSB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlOyBvciBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgYXJlIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuTm9uZSBvZiB0aG9zZSBleGNsdXNpb24gY3JpdGVyaWEgYXBwbHkgaGVyZSEgVGhpcyBsb29rcyBnb29kIVxuXG5Pa2F5LCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsIFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5BbHJpZ2h0LCBsZXQncyB2ZXJpZnkgd2hhdCBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHRvIHJldHVybi5cblxuRmlyc3QgbGV0J3MgbG9vayBhdCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOlxuMS4gIGBoYW5kbGVfc3RoeWlgIChpbiBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMpIC0gKlRoaXMqIGlzIGEga2V5IG9uZS4gSXQncyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24hIExldCdzIGNoZWNrIGBpbnRlcmNlcHQuY2AgbW9yZSBjbG9zZWx5Li4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzQ5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjM0LjcyOTAzNzAwMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI2NjUwNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IGhhbmRsZV9zdGh5aVxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYz0zOTY9c3RhdGljIGludCBoYW5kbGVfcGFydGlhbF9leGVjdXRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jLTQxMi0gKi9cXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmM6NDEzOmludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYy00MTQte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaD00MjE9c3RhdGljIGlubGluZSB2b2lkIGt2bV9zMzkwX3JldHJ5X2luc3RyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmgtNDI3LVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg6NDI4OmludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5oLTQyOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDM6MzQuNzgxNzA3NjQ4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY3NzIwMzc2NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgaGFuZGxlX3N0c2lgIEZ1bmN0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBgaGFuZGxlX3N0c2lgIGluIHRoZSBzMzkwIEtWTSBhcmNoaXRlY3R1cmUuIExldCdzIHNlZSwgdGhlIGZpbGUgaXMgYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGFuZCB0aGlzIGlzIGNydWNpYWwgZm9yIGhvdyBpdCdzIHVzZWQsIGlzIGBoYW5kbGVfc3RzaWAgZGVjbGFyZWQgYXMgYHN0YXRpY2Agb3Igbm9uLXN0YXRpYz8gVGhhdCB3aWxsIGRpY3RhdGUgaXRzIHNjb3BlIGFuZCBob3cgaXQncyBhY3R1YWxseSBhY2Nlc3NlZCB3aXRoaW4gdGhlIGJyb2FkZXIgS1ZNIGZyYW1ld29yay4gSSBuZWVkIHRvIGNoZWNrIGl0cyBkZWNsYXJhdGlvbiB0byBhc2NlcnRhaW4gaXRzIHZpc2liaWxpdHkgYW5kIGludGVuZGVkIHVzYWdlLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIG90aGVyIHBhcnRzIG9mIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY3NTIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo0MS41NTM3NDg0MDNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTM4NTc2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYW5kbGVfc3RzaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jPTgwNT1zdGF0aWMgaW50IGhhbmRsZV9zdGlkcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTgyOS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjgzMDpzdGF0aWMgdm9pZCBoYW5kbGVfc3RzaV8zXzJfMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNpbmZvXzNfMl8yICptZW0pXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYy04MzEte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYz04NTc9c3RhdGljIHZvaWQgaW5zZXJ0X3N0c2lfdXNyX2RhdGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgYWRkciwgdTggYXIsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTg2Ny1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjg2ODpzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTg2OS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTkyNi1cXHRcXHRcXHRnb3RvIG91dF9ub19kYXRhO1xcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmM6OTI3OlxcdFxcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsIG1lbSk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYy05MjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTkzMC1cXHRcXHRpbnNlcnRfc3RzaV91c3JfZGF0YSh2Y3B1LCBvcGVyYW5kMiwgYXIsIGZjLCBzZWwxLCBzZWwyKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjkzMTpcXHRcXHR0cmFjZV9rdm1fczM5MF9oYW5kbGVfc3RzaSh2Y3B1LCBmYywgc2VsMSwgc2VsMiwgb3BlcmFuZDIpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTMyLVxcdFxcdHJldHVybiAtRVJFTU9URTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTQ3LVxcdH1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjk0ODpcXHR0cmFjZV9rdm1fczM5MF9oYW5kbGVfc3RzaSh2Y3B1LCBmYywgc2VsMSwgc2VsMiwgb3BlcmFuZDIpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTQ5LVxcdGtmcmVlKG1lbSk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jPTk2MD1pbnQga3ZtX3MzOTBfaGFuZGxlX2IyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtMTAwNS1cXHRjYXNlIDB4N2Q6XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYzoxMDA2OlxcdFxcdHJldHVybiBoYW5kbGVfc3RzaSh2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTEwMDctXFx0Y2FzZSAweGFmOlxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3RyYWNlLmg9Mzg3PVRSQUNFX0VWRU5UKGt2bV9zMzkwX2hhbmRsZV9zdGZsLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3RyYWNlLmgtNDA0LVxcbmFyY2gvczM5MC9rdm0vczM5MC90cmFjZS5oOjQwNTpUUkFDRV9FVkVOVChrdm1fczM5MF9oYW5kbGVfc3RzaSxcXG5hcmNoL3MzOTAva3ZtL3MzOTAvdHJhY2UuaC00MDYtXFx0ICAgIFRQX1BST1RPKFZDUFVfUFJPVE9fQ09NTU9OLCBpbnQgZmMsIGludCBzZWwxLCBpbnQgc2VsMiwgdTY0IGFkZHIpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo0MS43NDMxNDA2NjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTEzMTI3ODM1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBLVk0vczM5MCBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBga3ZtX3MzOTBfaGFuZGxlX2IyYCBjYWxscyBgaGFuZGxlX3N0c2lgLCBhbmQgSSdtIGRpdmluZyBpbnRvIHRoZSByZWNlbnQgbW9kaWZpY2F0aW9ucy4gRmlyc3QsIGxldCdzIGNvbmZpcm0gdGhhdCBga3ZtX3MzOTBfaGFuZGxlX2IyYCBpc24ndCBzdGF0aWMsIHdoaWNoIGl0IGlzbid0LiBHb29kLiBOb3csIEkgd2FudCB0byByZXZpZXcgYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZCBhcyBhIHJlc3VsdCBvZiB0aGlzIGNoYW5nZS5cblxuSGVyZSdzIHRoZSBsaXN0IEkndmUgY29tcGlsZWQ6XG5cbjEuICBgaGFuZGxlX3N0aHlpYCBpcyBub24tc3RhdGljLCB3aGljaCBpcyByZWxldmFudC5cbjIuICBga3ZtX3MzOTBfZ2liX2luaXRgIGFuZCBga3ZtX3MzOTBfZ2liX2Rlc3Ryb3lgIGFyZSBub24tc3RhdGljLCB0aG91Z2ggdGhlIGluaXQgaXMgbWFya2VkIGFzIGBfX2luaXRgLCBzbyBpdCdzIHByb2JhYmx5IG5vdCBhIGJpZyBjb25jZXJuIGhlcmUuXG4zLiAgYGhhbmRsZV9zdHNpYCwgb2J2aW91c2x5LCBzaW5jZSBpdCdzIGNhbGxlZCBieSBga3ZtX3MzOTBfaGFuZGxlX2IyYCBhbmQgaXMgYWxzbyBub24tc3RhdGljLlxuNC4gIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gIGFyZSBub24tc3RhdGljIGFzIHdlbGwuIFRoaXMgbWFrZXMgbWUgY3VyaW91cyBhYm91dCB0aGUgb3ZlcmFsbCBWTSBsaWZlY3ljbGUuXG41LiAgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAgYW5kIGBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYWAgYXJlIGFsc28gbm9uLXN0YXRpYyBhbmQgd2FycmFudCBzb21lIGludmVzdGlnYXRpb24uXG5cbk5vdywgSSdtIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCDigJMgSSdsbCBnbyB0byBgYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY2AgdG8gZXhhbWluZSBpdHMgaW1wbGVtZW50YXRpb24gYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3OTg3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjQ2Ljg3NDQyMjQ0MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA1MDAwNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MzY1Nz12b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzY2My1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjM2NjQ6aW50IGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0zNjY1LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MzY4ND1zdGF0aWMgaW50IGt2bV9zMzkwX3ZjcHVfc2V0dXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0zNzQ2LVxcdGlmICh2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2gudXNlX2NtbWEpIHtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjM3NDc6XFx0XFx0cmMgPSBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEodmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0zNzQ4LVxcdFxcdGlmIChyYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg9NDY1PXZvaWQga3ZtX3MzOTBfc3luY19yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaDo0NjY6aW50IGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmgtNDY3LXZvaWQga3ZtX3MzOTBfdmNwdV91bnNldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDM6NDYuOTI0OTI3NzE4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3MDg5NTc4NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBsaWZlY3ljbGUgb2YgYSBLVk0gdmlydHVhbCBtYWNoaW5lLCBzcGVjaWZpY2FsbHkgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemF0aW9uIGFuZCBkZXN0cnVjdGlvbi4gU28sIEknbSB0aGlua2luZywgbGV0J3MgZGlzc2VjdCBga3ZtX2FyY2hfaW5pdF92bWAgYW5kIGBrdm1fYXJjaF9kZXN0cm95X3ZtYC4gSSdsbCBiZSBsb29raW5nIGF0IGhvdyB0aGV5J3JlIGltcGxlbWVudGVkLCB3aGF0IHJlc291cmNlcyB0aGV5IGFsbG9jYXRlIGFuZCBkZWFsbG9jYXRlLCBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgczM5MC1zcGVjaWZpYyBhcmNoaXRlY3R1cmFsIGNvbXBvbmVudHMgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrLiBJJ20gaGVhZGluZyBzdHJhaWdodCB0byBgYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUncyBlbnRyeSBhbmQgZXhpdCBwb2ludHMgb24gdGhpcyBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkyMjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo0OS42MzM4ODgyOTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODUwNzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX2luaXRfdm1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0zMjMyPXZvaWQga3ZtX2FyY2hfZnJlZV92bShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTMyMzktXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzozMjQwOmludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzI0MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjQ5LjY4Mjc1NDA3NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODMzMjYxNzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyBLVk0vczM5MCBHSUIgSW5pdGlhbGl6YXRpb24gYW5kIERlc3RydWN0aW9uKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0vczM5MCBhcmNoaXRlY3R1cmUuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBob3cgR2xvYmFsIEludGVycnVwdCBCbG9ja3MsIG9yIEdJQnMsIGFyZSBoYW5kbGVkLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGBrdm1fczM5MF9naWJfaW5pdGAgYW5kIGBrdm1fczM5MF9naWJfZGVzdHJveWAgZnVuY3Rpb25zLiBUaGV5IHNob3VsZCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFsbG9jYXRpb24sIHNldHVwLCBhbmQgY2xlYW51cCBvZiB0aGVzZSBHSUIgc3RydWN0dXJlcy4gSSdsbCBmaW5kIHRoZW0gd2l0aGluIGBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGZvciBtYW5hZ2luZyB0aGVzZSBpbnRlcnJ1cHRzIHNob3VsZCByZXNpZGUsIHNvIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHRvIHByb3ZpZGUgdGhlIGRldGFpbHMgSSBuZWVkLiBMZXQncyBzZWUgaG93IHRoZXkgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk2NDcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo1Mi41MTYwMTkxMjlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODA5MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX2dpYl9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jPTM2Nzc9c3RhdGljIHN0cnVjdCBhaXJxX3N0cnVjdCBnaWJfYWxlcnRfaXJxID0ge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTM2ODAtXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jOjM2ODE6dm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0zNjgyLXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0zNjk1LVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzozNjk2OmludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYylcXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMzY5Ny17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jPTQ5Nj1zdGF0aWMgaW50IF9faW5pdCBfX2t2bV9zMzkwX2luaXQodm9pZClcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNTI4LVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6NTI5OlxcdHJjID0ga3ZtX3MzOTBfZ2liX2luaXQoR0FMX0lTQyk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy01MzAtXFx0aWYgKHJjKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz01NTA9c3RhdGljIHZvaWQgX19rdm1fczM5MF9leGl0KHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTU1NC1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjU1NTpcXHRrdm1fczM5MF9naWJfZGVzdHJveSgpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNTU2LVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5oPTU2ND12b2lkIGt2bV9zMzkwX2dpc2FfZW5hYmxlKHN0cnVjdCBrdm0gKmt2bSk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaDo1NjU6aW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5oOjU2Njp2b2lkIGt2bV9zMzkwX2dpYl9kZXN0cm95KHZvaWQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmgtNTY3LXZvaWQga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjUyLjU2NTgzNTU0NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODIwOTM3ODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBLVk0gZm9yIHMzOTAgQXJjaGl0ZWN0dXJlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBjbG9zZSBsb29rIGF0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciBLVk0sIHNwZWNpZmljYWxseSBmb3IgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIG5hdmlnYXRlIHRvIHRoZSBgYXJjaC9zMzkwL2t2bS9gIGRpcmVjdG9yeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIuIEknbSB0aGlua2luZyB0aGUgYE1ha2VmaWxlYCBpbiB0aGVyZSB3aWxsIGdpdmUgbWUgdGhlIGxvd2Rvd24gb24gdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIHRoZSBLVk0gY29tcG9uZW50cyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUuIFRoYXQncyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBUaGVuLCBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGUgYEtjb25maWdgIGRlcGVuZGVuY2llcyB0byBzZWUgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQsIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBhbmQgaG93IGV2ZXJ5dGhpbmcgaXMgaW50ZXJjb25uZWN0ZWQgZnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUuIEkgd2FudCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIG9yIHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzMzkwIEtWTSBidWlsZCBwcm9jZXNzIGFuZCBhbnkgcmVsYXRlZCBpc3N1ZXMgb3IgbW9kaWZpY2F0aW9ucyBJIG1pZ2h0IHdhbnQgdG8gbWFrZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA2NjcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo1NS4zODY3Nzc2OTdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9zMzkwL2t2bS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCMgTWFrZWZpbGUgZm9yIGtlcm5lbCB2aXJ0dWFsIG1hY2hpbmVzIG9uIHMzOTBcXG4gICAzOlxcdCNcXG4gICA0OlxcdCMgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDA4XFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19LVk0pICs9IHMzOTAvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjU1LjM4Njg0MjI0N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODI2NTQ2NjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUzM5MCBLVk0gTWFrZWZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoZSBzMzkwIEtWTSBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgc3RydWN0dXJlZCBmb3IgdGhhdCBhcmNoaXRlY3R1cmUuIExldCdzIHN0YXJ0IHdpdGggdGhlIGBNYWtlZmlsZWAgbG9jYXRlZCBpbiBgYXJjaC9zMzkwL2t2bS9zMzkwL2AuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQg4oCTIHRoZSBidWlsZCBzY3JpcHRzIGFyZSBvZnRlbiB0aGUgYmVzdCBwbGFjZSB0byBnYWluIGEgaGlnaC1sZXZlbCBvdmVydmlldyBvZiBhIHByb2plY3QuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGNvbXBvbmVudHMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmxhZ3Mgb3Igc2V0dGluZ3MgYmVpbmcgdXNlZCBmb3IgdGhlIHMzOTAgS1ZNIGltcGxlbWVudGF0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiBob3cgdGhlIGNvcmUgS1ZNIG1vZHVsZXMgYXJlIGNvbXBpbGVkLCBhbnkgY3VzdG9tIG9iamVjdCBmaWxlcywgYW55IHNwZWNpZmljIGluY2x1ZGUgcGF0aHMsIGFuZCBhbnkgbGluayBmbGFncy4gSeKAmW0gYWxzbyBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHNwZWNpZmljIGZlYXR1cmVzIG9yIG9wdGltaXphdGlvbnMgZm9yIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBgTWFrZWZpbGVgIHNob3VsZCBwcm92aWRlIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCBmb3IgZGVlcGVyIGludmVzdGlnYXRpb24uIExldOKAmXMgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEwNTMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjU4LjIxMzM5Mjg1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvczM5MC9rdm0vczM5MC9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0S1ZNIDo9IC4uLy4uLy4uLy4uL3ZpcnQva3ZtXFxuICAgNDpcXHRpbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtXFxuICAgNTpcXHRpbmNsdWRlICQoc3JjdHJlZSkvYXJjaC9zMzkwL2t2bS9nbWFwL01ha2VmaWxlXFxuICAgNjpcXHRcXG4gICA3OlxcdGNjZmxhZ3MteSA6PSAtSSQoc3JjKSAtSSQoc3JjdHJlZSkvYXJjaC9zMzkwL2t2bS9nbWFwXFxuICAgODpcXHRcXG4gICA5OlxcdGt2bS15ICs9IHMzOTAubyBpbnRlcmNlcHQubyBpbnRlcnJ1cHQubyBwcml2Lm8gc2lncC5vXFxuICAxMDpcXHRrdm0teSArPSBkaWFnLm8gZ2FjY2Vzcy5vIGd1ZXN0ZGJnLm8gdnNpZS5vIHB2Lm9cXG4gIDExOlxcdGt2bS15ICs9ICQoZ21hcC15KVxcbiAgMTI6XFx0XFxuICAxMzpcXHRrdm0tJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICs9IHBjaS5vXFxuICAxNDpcXHRvYmotJChDT05GSUdfS1ZNKSArPSBrdm0ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo1OC4yMTM0NzM4OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MDI3MDMxNTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEtWTSBDb25maWd1cmF0aW9uIGFuZCBSZWxldmFudCBTeW1ib2xzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgS1ZNLXJlbGF0ZWQgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBDT05GSUdfS1ZNYCBhcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoaXMgaXMgYWxsIHdpcmVkIHVwLCBzbyBJIHN0YXJ0ZWQgYnkgY2hlY2tpbmcgYGFyY2gvczM5MC9LY29uZmlnYCBhbmQgYHZpcnQva3ZtL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBJIG5lZWQgdG8gY29uc2lkZXIuXG5cbldpdGhpbiBgYXJjaC9zMzkwL2t2bS9LY29uZmlnYCwgSSBmb3VuZCB0aGUgYFZJUlRVQUxJWkFUSU9OYCBtZW51IGFuZCB0aGUgYEtWTWAgY29uZmlnLCB3aGljaCBkZXBlbmRzIG9uIGBWSVJUVUFMSVpBVElPTmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGVzZS4gSSdtIHRyeWluZyB0byBkZWNpZGUgaWYgSSBuZWVkIGJvdGggYFZJUlRVQUxJWkFUSU9OYCAqYW5kKiBgS1ZNYCwgb3IgaWYgZW5hYmxpbmcgYEtWTWAgaW1wbGljaXRseSBoYW5kbGVzIGBWSVJUVUFMSVpBVElPTmAsIG9yIHBlcmhhcHMgaWYgaXQncyB0aGUgb3RoZXIgd2F5IGFyb3VuZC4gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuXG5cbk5leHQsIEkgdHVybmVkIG15IGF0dGVudGlvbiB0byB0aGUga2V5IHN5bWJvbHMgaW52b2x2ZWQgaW4gdGhpcyBwYXRjaCB0byBzZWUgaG93IHRoZXkncmUgY29ubmVjdGVkLiBJIGlkZW50aWZpZWQgYSBmZXcga2V5IG9uZXM6IGBoYW5kbGVfc3RoeWlgICh3aGljaCBoYW5kbGVzIHRoZSBTVEhZSSBpbnN0cnVjdGlvbiBpbnRlcmNlcHQpLCBga3ZtX3MzOTBfaGFuZGxlX2IyYCAod2hpY2ggaGFuZGxlcyBCMiBpbnN0cnVjdGlvbiBpbnRlcmNlcHRzLCBpbmNsdWRpbmcgU1RTSSB0aHJvdWdoIGBoYW5kbGVfc3RzaWApLCBga3ZtX2FyY2hfaW5pdF92bWAgKHdoaWNoIGluaXRpYWxpemVzIHMzOTAgVk0gYXJjaGl0ZWN0dXJlIHN0cnVjdHVyZXMgaW5jbHVkaW5nIHNpZV9wYWdlMiksIGFuZCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCAod2hpY2ggc2V0cyB1cCBDTU1BIENCUi9DQlJMRSBzdHJ1Y3R1cmVzKS5cblxuSSBjaGVja2VkIHRoZSBzdGF0aWMvbm9uLXN0YXRpYyBuYXR1cmUgb2YgdGhlc2Ugc3ltYm9scyB0byBzZWUgaG93IHRoZXkgYXJlIGV4cG9zZWQsIGFuZCBpZiBhbnkgYXJlIGludGVybmFsIGRldGFpbHMgb25seS4gU3BlY2lmaWNhbGx5LCBJIG5vdGVkIHRoYXQgYGhhbmRsZV9zdHNpYCBpcyBzdGF0aWMsIGRlZmluZWQgaW4gYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgLCBidXQgaXQncyBjYWxsZWQgYnkgdGhlIG5vbi1zdGF0aWMgYGt2bV9zMzkwX2hhbmRsZV9iMmAuIFRoZSByZXN0IGFyZSBub24tc3RhdGljLlxuXG5GaW5hbGx5LCBJIHJldmlld2VkIHRoZSBwYXRjaCBkaWZmIGl0c2VsZiB0byBjb25maXJtIHRoZSBmaWxlcyBhbmQgc3ltYm9scyBpbnZvbHZlZC4gVGhlIHBhdGNoIHRvdWNoZXMgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY2AgKHdoZXJlIGBoYW5kbGVfc3RoeWlgIGxpdmVzKSwgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY2AgKHdpdGggYGt2bV9zMzkwX2dpYl9pbml0YCBhbmQgYGt2bV9zMzkwX2dpYl9kZXN0cm95YCksIGBhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jYCAod2hlcmUgYGhhbmRsZV9zdHNpYCBpcyBkZWZpbmVkIGFuZCBjYWxsZWQpLCBhbmQgYGFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNgICh3aXRoIGBrdm1fYXJjaF9pbml0X3ZtYCwgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gLCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCwgYW5kIGBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYWApLiBUaGlzIHNvbGlkaWZpZXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgbW9kdWxlcyBhbmQgZnVuY3Rpb25zLlxuXG5TbywgdG8gc3VtbWFyaXplLCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgYGhhbmRsZV9zdGh5aWAsIGBrdm1fczM5MF9oYW5kbGVfYjJgLCBga3ZtX2FyY2hfaW5pdF92bWAsIGFuZCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYC4gVGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBLVk1gIGFuZCBgVklSVFVBTElaQVRJT05gLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2MTIsIk91dHB1dFRva2VucyI6MTg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzU3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MDYuMjQwNTA4MTYzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg0NjM4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVklSVFVBTElaQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYW5kbGVfc3RoeWlcIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV9iMlwiLFxuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiLFxuICAgIFwia3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBwYWdlLWxldmVsIG1lbW9yeSBhbGxvY2F0aW9ucyAoZ2V0X3plcm9lZF9wYWdlL2ZyZWVfcGFnZSkgdG8gc2xhYiBhbGxvY2F0aW9ucyAoa3phbGxvYy9rZnJlZSkgaW4gS1ZNIG9uIHMzOTAgZm9yIGd1ZXN0IGludGVyY2VwdCBoYW5kbGluZyAoU1RIWUksIFNUU0kpLCBWTSBpbml0aWFsaXphdGlvbiAoc2llX3BhZ2UyKSwgR0lCIHNldHVwLCBhbmQgVkNQVSBDTU1BIHNldHVwLiBUaGVzZSBhZmZlY3QgcmVhY2hhYmxlIEtWTSBleGVjdXRpb24gcGF0aHMgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9uIHMzOTAsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVklSVFVBTElaQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYW5kbGVfc3RoeWlcIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV9iMlwiLFxuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiLFxuICAgIFwia3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBwYWdlLWxldmVsIG1lbW9yeSBhbGxvY2F0aW9ucyAoZ2V0X3plcm9lZF9wYWdlL2ZyZWVfcGFnZSkgdG8gc2xhYiBhbGxvY2F0aW9ucyAoa3phbGxvYy9rZnJlZSkgaW4gS1ZNIG9uIHMzOTAgZm9yIGd1ZXN0IGludGVyY2VwdCBoYW5kbGluZyAoU1RIWUksIFNUU0kpLCBWTSBpbml0aWFsaXphdGlvbiAoc2llX3BhZ2UyKSwgR0lCIHNldHVwLCBhbmQgVkNQVSBDTU1BIHNldHVwLiBUaGVzZSBhZmZlY3QgcmVhY2hhYmxlIEtWTSBleGVjdXRpb24gcGF0aHMgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9uIHMzOTAsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowNDowNi4zMTg5ODE0MTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzE5MDYwODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MDYuMzE5NTY0Mjk3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzA3MTg0NzQyNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnZlcnRzIHBhZ2UgYWxsb2NhdGlvbnMgdmlhIGdldF96ZXJvZWRfcGFnZSgpIGFuZCBmcmVlX3BhZ2UoKSB0byBzbGFiIGFsbG9jYXRpb25zIHZpYSBremFsbG9jKCkva3phbGxvY19vYmooKSBhbmQga2ZyZWUoKSBhY3Jvc3MgczM5MCBLVk0gY29kZSAoaW50ZXJjZXB0LmMsIGludGVycnVwdC5jLCBwcml2LmMsIHMzOTAuYykuIFxcblxcblNpbmNlIGt6YWxsb2Mva3phbGxvY19vYmogemVyby1pbml0aWFsaXplcyB0aGUgbWVtb3J5IGlkZW50aWNhbGx5IHRvIGdldF96ZXJvZWRfcGFnZSgpLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgY29uZGl0aW9uYWwgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBkYXRhLCBvciB1bmluaXRpYWxpemVkIGluZm8tbGVha3MgdG8gdXNlcnNwYWNlL2d1ZXN0IGFyZSBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIHNsYWItcmVsYXRlZCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoZS5nLiBvdXQtb2YtYm91bmRzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgZG91YmxlLWZyZWUpIGFyZSBtb25pdG9yZWQgYnkgc3RhbmRhcmQgS0FTQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDZkZmNlMDdjODlhZWI3ZDZjYmRlYzhjNWFiNWM4NWYyNjk5MzY2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTk6MDI6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcbmluZGV4IGNhMTIwNWRmYWM4YjAuLmFhZjk4MjhkMWY0NGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcbisrKyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY1xuQEAgLTExLDYgKzExLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9hc20tb2Zmc2V0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2lycS5oXHUwMDNlXG5AQCAtNDM4LDEzICs0MzksMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAoIWt2bV9zMzkwX3B2X2NwdV9pc19wcm90ZWN0ZWQodmNwdSkgXHUwMDI2XHUwMDI2IChhZGRyIFx1MDAyNiB+UEFHRV9NQVNLKSlcbiBcdFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9ncmFtX2ludCh2Y3B1LCBQR01fU1BFQ0lGSUNBVElPTik7XG4gXG4tXHRzY3RucyA9ICh2b2lkICopZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCk7XG4rXHRzY3RucyA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFzY3RucylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRjYyA9IHN0aHlpX2ZpbGwoc2N0bnMsIFx1MDAyNnJjKTtcbiBcdGlmIChjYyBcdTAwM2MgMCkge1xuLVx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0XHRrZnJlZShzY3Rucyk7XG4gXHRcdHJldHVybiBjYztcbiBcdH1cbiBvdXQ6XG5AQCAtNDU0LDEzICs0NTUsMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0ciA9IHdyaXRlX2d1ZXN0KHZjcHUsIGFkZHIsIHJlZzIsIHNjdG5zLCBQQUdFX1NJWkUpO1xuIFx0XHRcdGlmIChyKSB7XG4tXHRcdFx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0XHRcdFx0a2ZyZWUoc2N0bnMpO1xuIFx0XHRcdFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcik7XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0a2ZyZWUoc2N0bnMpO1xuIFx0dmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbcmVnMiArIDFdID0gcmM7XG4gXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTtcbiBcdHJldHVybiByO1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xuaW5kZXggMDM4MWFlOTgxNzAzNS4uMDIwNjVmYjhkMDUzZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xuKysrIGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jXG5AQCAtMzY4OSw3ICszNjg5LDcgQEAgdm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKVxuIFx0fVxuIFx0Y2hzY19zZ2liKDApO1xuIFx0dW5yZWdpc3Rlcl9hZGFwdGVyX2ludGVycnVwdChcdTAwMjZnaWJfYWxlcnRfaXJxKTtcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpO1xuK1x0a2ZyZWUoZ2liKTtcbiBcdGdpYiA9IE5VTEw7XG4gfVxuIFxuQEAgLTM3MDMsNyArMzcwMyw3IEBAIGludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYylcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRnaWIgPSAoc3RydWN0IGt2bV9zMzkwX2dpYiAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcbitcdGdpYiA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcbiBcdGlmICghZ2liKSB7XG4gXHRcdHJjID0gLUVOT01FTTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtMzcyMiw3ICszNzIyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxuIFx0Z2liX29yaWdpbiA9IHZpcnRfdG9fcGh5cyhnaWIpO1xuIFx0aWYgKGNoc2Nfc2dpYihnaWJfb3JpZ2luKSkge1xuIFx0XHRwcl9lcnIoXCJBc3NvY2lhdGluZyB0aGUgR0lCIHdpdGggdGhlIEFJViBmYWNpbGl0eSBmYWlsZWRcXG5cIik7XG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpO1xuK1x0XHRrZnJlZShnaWIpO1xuIFx0XHRnaWIgPSBOVUxMO1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gb3V0X3VucmVnX2dhbDtcbkBAIC0zNzQyLDcgKzM3NDIsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpXG4gb3V0X3VucmVnX2dhbDpcbiBcdHVucmVnaXN0ZXJfYWRhcHRlcl9pbnRlcnJ1cHQoXHUwMDI2Z2liX2FsZXJ0X2lycSk7XG4gb3V0X2ZyZWVfZ2liOlxuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7XG4rXHRrZnJlZShnaWIpO1xuIFx0Z2liID0gTlVMTDtcbiBvdXQ6XG4gXHRyZXR1cm4gcmM7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmNcbmluZGV4IGIzY2IyYzJjM2FhNzEuLjg1NjkzOWFjZjAxMmYgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jXG5AQCAtMTQsNiArMTQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tX3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZ3RhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2FzbS1vZmZzZXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vZmFjaWxpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jdXJyZW50LmhcdTAwM2VcbkBAIC04NjksNyArODcwLDcgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpbnQgZmMgPSAodmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMF0gXHUwMDI2IDB4ZjAwMDAwMDApIFx1MDAzZVx1MDAzZSAyODtcbiBcdGludCBzZWwxID0gdmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMF0gXHUwMDI2IDB4ZmY7XG4gXHRpbnQgc2VsMiA9IHZjcHUtXHUwMDNlcnVuLVx1MDAzZXMucmVncy5ncHJzWzFdIFx1MDAyNiAweGZmZmY7XG4tXHR1bnNpZ25lZCBsb25nIG1lbSA9IDA7XG4rXHR2b2lkICptZW0gPSBOVUxMO1xuIFx0dTY0IG9wZXJhbmQyO1xuIFx0aW50IHJjID0gMDtcbiBcdHU4IGFyO1xuQEAgLTkxMSwxOSArOTEyLDE5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0c3dpdGNoIChmYykge1xuIFx0Y2FzZSAxOiAvKiBzYW1lIGhhbmRsaW5nIGZvciAxIGFuZCAyICovXG4gXHRjYXNlIDI6XG4tXHRcdG1lbSA9IGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpO1xuK1x0XHRtZW0gPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFx0aWYgKCFtZW0pXG4gXHRcdFx0Z290byBvdXRfbm9fZGF0YTtcbi1cdFx0aWYgKHN0c2koKHZvaWQgKikgbWVtLCBmYywgc2VsMSwgc2VsMikpXG4rXHRcdGlmIChzdHNpKG1lbSwgZmMsIHNlbDEsIHNlbDIpKVxuIFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAzOlxuIFx0XHRpZiAoc2VsMSAhPSAyIHx8IHNlbDIgIT0gMilcbiBcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuLVx0XHRtZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbitcdFx0bWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbWVtKVxuIFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4tXHRcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsICh2b2lkICopIG1lbSk7XG4rXHRcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsIG1lbSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAxNTogLyogZmMgMTUgaXMgZnVsbHkgaGFuZGxlZCBpbiB1c2Vyc3BhY2UgKi9cbiBcdFx0aW5zZXJ0X3N0c2lfdXNyX2RhdGEodmNwdSwgb3BlcmFuZDIsIGFyLCBmYywgc2VsMSwgc2VsMik7XG5AQCAtOTMxLDEwICs5MzIsMTAgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHJldHVybiAtRVJFTU9URTtcbiBcdH1cbiBcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4tXHRcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayksICh2b2lkICopbWVtLCBQQUdFX1NJWkUpO1xuK1x0XHRtZW1jcHkoc2lkYV9hZGRyKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2spLCBtZW0sIFBBR0VfU0laRSk7XG4gXHRcdHJjID0gMDtcbiBcdH0gZWxzZSB7XG4tXHRcdHJjID0gd3JpdGVfZ3Vlc3QodmNwdSwgb3BlcmFuZDIsIGFyLCAodm9pZCAqKW1lbSwgUEFHRV9TSVpFKTtcbitcdFx0cmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTtcbiBcdH1cbiBcdGlmIChyYykge1xuIFx0XHRyYyA9IGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcmMpO1xuQEAgLTk0NSwxNCArOTQ2LDE0IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRyYyA9IC1FUkVNT1RFO1xuIFx0fVxuIFx0dHJhY2Vfa3ZtX3MzOTBfaGFuZGxlX3N0c2kodmNwdSwgZmMsIHNlbDEsIHNlbDIsIG9wZXJhbmQyKTtcbi1cdGZyZWVfcGFnZShtZW0pO1xuK1x0a2ZyZWUobWVtKTtcbiBcdGt2bV9zMzkwX3NldF9wc3dfY2ModmNwdSwgMCk7XG4gXHR2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VzLnJlZ3MuZ3Byc1swXSA9IDA7XG4gXHRyZXR1cm4gcmM7XG4gb3V0X25vX2RhdGE6XG4gXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDMpO1xuIG91dDpcbi1cdGZyZWVfcGFnZShtZW0pO1xuK1x0a2ZyZWUobWVtKTtcbiBcdHJldHVybiByYztcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNcbmluZGV4IGIwODM5ZTg4NzIyMWUuLjhlYzUwNTA2MGY4YzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jXG5AQCAtMzI3Myw4ICszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcbiBcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7XG4tXHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIgPVxuLVx0ICAgICAoc3RydWN0IHNpZV9wYWdlMiAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4rXHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIgPSBremFsbG9jX29iaigqa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyLFxuK1x0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpO1xuIFx0aWYgKCFrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcbkBAIC0zMzY5LDcgKzMzNjksNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcbiBcdHJldHVybiAwO1xuIG91dF9lcnI6XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyKTtcbitcdGtmcmVlKGt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMik7XG4gXHRkZWJ1Z191bnJlZ2lzdGVyKGt2bS1cdTAwM2VhcmNoLmRiZik7XG4gXHRzY2FfZGlzcG9zZShrdm0pO1xuIFx0S1ZNX0VWRU5UKDMsIFwiY3JlYXRpb24gb2Ygdm0gZmFpbGVkOiAlZFwiLCByYyk7XG5AQCAtMzQyNyw3ICszNDI3LDcgQEAgdm9pZCBrdm1fYXJjaF9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiBcdFx0bW11X25vdGlmaWVyX3VucmVnaXN0ZXIoXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHYubW11X25vdGlmaWVyLCBrdm0tXHUwMDNlbW0pO1xuIFxuIFx0ZGVidWdfdW5yZWdpc3Rlcihrdm0tXHUwMDNlYXJjaC5kYmYpO1xuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMik7XG4rXHRrZnJlZShrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xuIFx0a3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhrdm0pO1xuIFx0a3ZtX3MzOTBfY2xlYXJfZmxvYXRfaXJxcyhrdm0pO1xuIFx0a3ZtX3MzOTBfdnNpZV9kZXN0cm95KGt2bSk7XG5AQCAtMzY1NywxMyArMzY1NywxMyBAQCBzdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gdm9pZCBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8pXG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylwaHlzX3RvX3ZpcnQodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbykpO1xuK1x0XHRrZnJlZShwaHlzX3RvX3ZpcnQodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbykpO1xuIFx0dmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbyA9IDA7XG4gfVxuIFxuIGludCBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHZvaWQgKmNicmxvX3BhZ2UgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpO1xuK1x0dm9pZCAqY2JybG9fcGFnZSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFxuIFx0aWYgKCFjYnJsb19wYWdlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjA0OjA2LjMxOTU2ODIxN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDg3OTU1MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IFJpc2tzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiBpdCBpbnRyb2R1Y2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb25jZXJucyB0aGF0IHdvdWxkIHdhcnJhbnQgYSBLTVNBTiBzZXNzaW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGRpZmYsIHdoaWNoIHRvdWNoZXMgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY2AsIGBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmNgLCBgYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY2AsIGFuZCBgYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY2AuXG5cblJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgcGF0dGVybjogaXQncyByZXBsYWNpbmcgYGdldF96ZXJvZWRfcGFnZSgpYCBhbmQgYGZyZWVfcGFnZSgpYCB3aXRoIGBremFsbG9jKClgIGFuZCBga2ZyZWUoKWAsIG9yIGBremFsbG9jX29iamAgYW5kIGBrZnJlZSgpYCBpbiB0aGUgY2FzZSBvZiBgc2llX3BhZ2UyYC4gVGhlIGNyaXRpY2FsIHRoaW5nIGlzIHRoYXQgd2UncmUgKnN0aWxsKiB6ZXJvLWluaXRpYWxpemluZyB0aGUgbWVtb3J5IOKAkyB0aGUgY2hhbmdlIGlzIHVzaW5nIGBremFsbG9jYCBpbnN0ZWFkIG9mIGBnZXRfemVyb2VkX3BhZ2VgLCB3aGljaCBpcyBlc3NlbnRpYWxseSBhIHNhZmUgb3BlcmF0aW9uLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgYXJlIHRoZXJlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyAqaW50cm9kdWNlZCogYnkgdGhlc2UgY2hhbmdlcz8gTm8sIGJlY2F1c2UgYWxsIHRoZSBhbGxvY2F0aW9ucyBhcmUgc3RpbGwgemVyby1pbml0aWFsaXplZC4gSSd2ZSBnb3QgdG8gY2hlY2sgd2hldGhlciBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgcmVhZCwgY29waWVkIHRvIHVzZXJzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sIGZsb3csIGJ1dCwgdGhlcmUgaXMgbm8gc3VjaCB0aGluZy4gQXJlIHRoZXJlIHVuaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcywgb3IgbGVha3Mgb2YgaW5mb3JtYXRpb24/IEFnYWluLCBpdCBkb2Vzbid0IHNlZW0gbGlrZSBpdC5cblxuSXQncyBhY3R1YWxseSBhIGdvb2QgdGhpbmcgaW4gdGhhdCBLTVNBTiB3aWxsIHByb2JhYmx5IGNhdGNoIG91dC1vZi1ib3VuZHMvdXNlLWFmdGVyLWZyZWUgd2l0aCBzbGFiIGFsbG9jYXRpb25zLCB3aGVyZWFzIHBhZ2UgYWxsb2NhdGlvbnMgaGFkIHBhZ2UtbGV2ZWwgdHJhY2tpbmcuIEJlY2F1c2Ugd2UncmUgdXNpbmcgemVyby1hbGxvY2F0b3JzIChga3phbGxvY2ApLCBldmVyeXRoaW5nIHJlbWFpbnMgZnVsbHkgaW5pdGlhbGl6ZWQuXG5cbkxldCBtZSBqdXN0IGRvIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBhbmQgZG91YmxlLWNoZWNrIGBremFsbG9jX29iaigqa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyLCAuLi4pYC4gSSdsbCBydW4gYSBxdWljayBzZWFyY2ggZm9yIGBremFsbG9jX29iamAgYW5kIGBzdHJ1Y3Qgc2llX3BhZ2UyYCBqdXN0IHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCBiZSBleHRyYSBjZXJ0YWluLiBPdmVyYWxsLCBpdCBhcHBlYXJzIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgYW5kIHNhZmUgb3B0aW1pemF0aW9uLCByZXBsYWNpbmcgdGhlIG9sZGVyIGFsbG9jYXRpb24gZnVuY3Rpb25zIHdpdGggdGhlIG5ld2VyIG9uZXMsIHdoaWNoIG1haW50YWluIHRoZSBkZXNpcmVkIHplcm8taW5pdGlhbGl6YXRpb24gYmVoYXZpb3IuIE5vIEtNU0FOIHNlc3Npb24gbmVjZXNzYXJ5IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowNDoxMi44MDc1Mjg2NzdaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzk5OTAxMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3phbGxvY19vYmpcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3OTM3OCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdD0xMDM9bGlzdDpcXG4tLVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTE0LVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q6MTE1OiAgICAgICAgICBncm9jayA9IGt6YWxsb2Nfb2JqKCpncm9jayk7XFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTYtICAgICAgICAgIGlmICghZ3JvY2spXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTEyNS1cXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0OjEyNjogICAgICAgICAgZGltaXRyaSA9IGt6YWxsb2Nfb2JqKCpkaW1pdHJpKTtcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTEyNy0gICAgICAgICAgaWYgKCFkaW1pdHJpKVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0PTQ1PWEgbWVzc2FnZSBhbmQgYSBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgQVBJIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkpLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0LTg5LVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MDpcXHRcXHRkY19zeW5jID0ga3phbGxvY19vYmooKmRjX3N5bmMpO1xcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MTpcXHRcXHRkY19hc3luYyA9IGt6YWxsb2Nfb2JqKCpkY19hc3luYyk7XFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0LTkyLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0PTI2PUV4YW1wbGU6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3QtNDQtXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0OjQ1OlxcdFxcdG15X2ZoID0ga3phbGxvY19vYmooKm15X2ZoKTtcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3QtNDYtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdD05Mzg9VGhlIGtlcm5lbCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGdlbmVyYWwgcHVycG9zZSBtZW1vcnkgYWxsb2NhdG9yczpcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdDo5Mzk6a21hbGxvYygpLCBremFsbG9jKCksIGttYWxsb2Nfb2JqcygpLCBremFsbG9jX29ianMoKSwgdm1hbGxvYygpLCBhbmRcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NDAtdnphbGxvYygpLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgZnVydGhlciBpbmZvcm1hdGlvblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q9OTY0PVRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgYWxsb2NhdGluZyBhIHplcm9lZCBhcnJheSBpcyB0aGUgZm9sbG93aW5nOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3QtOTY3LVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0Ojk2ODpcXHRwID0ga3phbGxvY19vYmpzKCpwLCBuLCAuLi4pO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk2OS1cXG4tLVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdD0zOTg9YmVjb21lLCByZXNwZWN0aXZlbHk6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwMC1cXHRwdHIgPSBrbWFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDAxOlxcdHB0ciA9IGt6YWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDItXFx0cHRyID0ga21hbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDAzOlxcdHB0ciA9IGt6YWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwNC1cXHRwdHIgPSBrbWFsbG9jX2ZsZXgoKnB0ciwgZmxleF9tZW1iZXIsIGNvdW50IFssIGdmcF0gKTtcXG4tLVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdD0yMDg9dG8gZGV0YWlscyBleHBsYWluZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTI2OC0gICAgICAgICAgICAgIC8qIGFsbG9jYXRlIGEgY2hpcC1zcGVjaWZpYyBkYXRhIHdpdGggemVybyBmaWxsZWQgKi9cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6MjY5OiAgICAgICAgICAgICAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMjcwLSAgICAgICAgICAgICAgaWYgKGNoaXAgPT0gTlVMTClcXG4tLVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdD02MjM9QWZ0ZXIgYWxsb2NhdGluZyBhIGNhcmQgaW5zdGFuY2UgdmlhIDpjOmZ1bmM6YHNuZF9jYXJkX25ldygpYFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTYzMC0gIC4uLi4uXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjYzMTogIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTYzMi1cXG4tLVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdD02OTg9ZGVzdHJ1Y3RvciBhbmQgUENJIGVudHJpZXMuIEV4YW1wbGUgY29kZSBpcyBzaG93biBmaXJzdCwgYmVsb3c6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTc0OS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6NzUwOiAgICAgICAgICAgICAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNzUxLSAgICAgICAgICAgICAgaWYgKGNoaXAgPT0gTlVMTCkge1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTM4MjM9Y2hpcCBkYXRhIGluZGl2aWR1YWxseTo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMzgzNS0gICAgICAgICAgLi4uLlxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDozODM2OiAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0zODM3LSAgICAgICAgICAuLi4uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q9OTQwPUlsIGtlcm5lbCBmb3JuaXNjZSBpIHNlZ3VlbnRpIGFzc2VnbmF0b3JpIGFkIHVzbyBnZW5lcmljbzpcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTQxOmttYWxsb2MoKSwga3phbGxvYygpLCBrbWFsbG9jX29ianMoKSwga3phbGxvY19vYmpzKCksIHZtYWxsb2MoKSwgZSB2emFsbG9jKCkuXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk0Mi1QZXIgbWFnZ2lvcmkgaW5mb3JtYXppb25pLCBjb25zdWx0YXRlIGxhIGRvY3VtZW50YXppb25lIGRlbGwnQVBJOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTk2NT1JbCBtb2RvIHByZWZlcml0byBwZXIgYXNzZWduYXJlIHVuIHZldHRvcmUgYSB6ZXJvIMOoIGlsIHNlZ3VlbnRlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk2OC1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTY5OlxcdHAgPSBremFsbG9jX29ianMoKnAsIG4sIC4uLik7XFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk3MC1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q9NDQxPWRpdmVudGFubywgcmlzcGV0dGl2YW1lbnRlOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDQzLVxcdHB0ciA9IGttYWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDQ0OlxcdHB0ciA9IGt6YWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDQ1LVxcdHB0ciA9IGttYWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0NDY6XFx0cHRyID0ga3phbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQ0Ny1cXHRwdHIgPSBrbWFsbG9jX2ZsZXgoKnB0ciwgZmxleF9tZW1iZXIsIGNvdW50IFssIGdmcF0gKTtcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q9NDEwPXRvcm5hbS1zZSwgcmVzcGVjdGl2YW1lbnRlOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDEyLSAgICAgICAgcHRyID0ga21hbGxvY19vYmooKnB0ciBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvcHRfQlIvcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MTM6ICAgICAgICBwdHIgPSBremFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9wdF9CUi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQxNC0gICAgICAgIHB0ciA9IGttYWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvcHRfQlIvcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MTU6ICAgICAgICBwdHIgPSBremFsbG9jX29ianMoKnB0ciwgY291bnQgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDE2LSAgICAgICAgcHRyID0ga21hbGxvY19mbGV4KCpwdHIsIGZsZXhfbWVtYmVyLCBjb3VudCBbLCBnZnBdICk7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQ9Nzk0PWludCBteV9vcGVuKHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0LTgwMS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQ6ODAyOlxcdG15X2ZoID0ga3phbGxvY19vYmooKm15X2ZoKTtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAzLVxcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM9NjQ9bW9kdWxlX2Zyb2JfYXJjaF9zZWN0aW9ucyhFbGY2NF9FaGRyICpoZHIsIEVsZjY0X1NoZHIgKnNlY2hkcnMsXFxuLS1cXG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYy05NS1cXHRuc3ltcyA9IHN5bXRhYi1cXHUwMDNlc2hfc2l6ZSAvIHNpemVvZihFbGY2NF9TeW0pO1xcbmFyY2gvYWxwaGEva2VybmVsL21vZHVsZS5jOjk2OlxcdGNoYWlucyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgZ290X2VudHJ5LCBuc3ltcyk7XFxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmMtOTctXFx0aWYgKCFjaGFpbnMpIHtcXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmM9MzkwPXJlZ2lzdGVyX2NwdXModm9pZClcXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk0LVxcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShpKSB7XFxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYzozOTU6XFx0XFx0c3RydWN0IGNwdSAqcCA9IGt6YWxsb2Nfb2JqKCpwKTtcXG5hcmNoL2FscGhhL2tlcm5lbC9zZXR1cC5jLTM5Ni1cXHRcXHRpZiAoIXApXFxuLS1cXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM9MTEyMD1zdGF0aWMgaW50IGppdF9wcmVwYXJlX2ZpbmFsX21lbV9hbGxvYyhzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4tLVxcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYy0xMTMxLVxcdGlmIChjdHgtXFx1MDAzZW5lZWRfZXh0cmFfcGFzcykge1xcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYzoxMTMyOlxcdFxcdGN0eC1cXHUwMDNlaml0X2RhdGEgPSBremFsbG9jX29iaigqY3R4LVxcdTAwM2VqaXRfZGF0YSk7XFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTExMzMtXFx0XFx0aWYgKCFjdHgtXFx1MDAzZWppdF9kYXRhKVxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTIyMD1sb2NvbW9faW5pdF9vbmVfY2hpbGQoc3RydWN0IGxvY29tbyAqbGNoaXAsIHN0cnVjdCBsb2NvbW9fZGV2X2luZm8gKmluZm8pXFxuLS1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMjI0LVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzoyMjU6XFx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGxvY29tb19kZXYpO1xcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYy0yMjYtXFx0aWYgKCFkZXYpIHtcXG4tLVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYz0zNTY9X19sb2NvbW9fcHJvYmUoc3RydWN0IGRldmljZSAqbWUsIHN0cnVjdCByZXNvdXJjZSAqbWVtLCBpbnQgaXJxKVxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTM2Mi1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM6MzYzOlxcdGxjaGlwID0ga3phbGxvY19vYmooc3RydWN0IGxvY29tbyk7XFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTM2NC1cXHRpZiAoIWxjaGlwKVxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jPTczMz1zYTExMTFfaW5pdF9vbmVfY2hpbGQoc3RydWN0IHNhMTExMSAqc2FjaGlwLCBzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCxcXG4tLVxcbmFyY2gvYXJtL2NvbW1vbi9zYTExMTEuYy03MzktXFxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jOjc0MDpcXHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3Qgc2ExMTExX2Rldik7XFxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jLTc0MS1cXHRpZiAoIWRldikge1xcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmM9MTc4PXN0YXRpYyBpbnQgc2Nvb3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jLTE4Ny1cXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYzoxODg6XFx0ZGV2cHRyID0ga3phbGxvY19vYmooc3RydWN0IHNjb29wX2Rldik7XFxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmMtMTg5LVxcdGlmICghZGV2cHRyKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3NtcC5jPTEwOD1zdGF0aWMgaW50IHNlY29uZGFyeV9iaWdsaXR0bGVfcHJlcGFyZSh1bnNpZ25lZCBpbnQgY3B1KVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3NtcC5jLTExMC1cXHRpZiAoIWNwdV92dGFibGVbY3B1XSlcXG5hcmNoL2FybS9rZXJuZWwvc21wLmM6MTExOlxcdFxcdGNwdV92dGFibGVbY3B1XSA9IGt6YWxsb2Nfb2JqKCpjcHVfdnRhYmxlW2NwdV0pO1xcbmFyY2gvYXJtL2tlcm5lbC9zbXAuYy0xMTItXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jPTE2OT1zdGF0aWMgaW50IF9faW5pdCB2ZHNvX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmMtMTgxLVxcdC8qIEFsbG9jYXRlIHRoZSBWRFNPIHRleHQgcGFnZWxpc3QgKi9cXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jOjE4MjpcXHR2ZHNvX3RleHRfcGFnZWxpc3QgPSBremFsbG9jX29ianMoc3RydWN0IHBhZ2UgKiwgdGV4dF9wYWdlcyk7XFxuYXJjaC9hcm0va2VybmVsL3Zkc28uYy0xODMtXFx0aWYgKHZkc29fdGV4dF9wYWdlbGlzdCA9PSBOVUxMKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYz0yNjE9aW50IF9faW5pdCBkYzIxMjg1X3NldHVwKGludCBuciwgc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYy0yNjQtXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYzoyNjU6XFx0cmVzID0ga3phbGxvY19vYmpzKHN0cnVjdCByZXNvdXJjZSwgMik7XFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYy0yNjYtXFx0aWYgKCFyZXMpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmM9Njk9c3RhdGljIGludCBfX2luaXQgZWJzYTI4NV9sZWRzX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODYtXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYzo4NzpcXHRcXHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jLTg4LVxcdFxcdGlmICghbGVkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL25ldHdpbmRlci1ody5jPTcyMD1zdGF0aWMgaW50IF9faW5pdCBuZXR3aW5kZXJfbGVkc19pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmMtNzI5LVxcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYzo3MzA6XFx0XFx0bGVkID0ga3phbGxvY19vYmooKmxlZCk7XFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL25ldHdpbmRlci1ody5jLTczMS1cXHRcXHRpZiAoIWxlZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYz00NzM9c3RhdGljIGludCBpbXhfbW1kY19wZXJmX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdm9pZCBfX2lvbWVtICptbWRjX2Jhc2UsXFxuLS1cXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmMtNDc5LVxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYzo0ODA6XFx0cG11X21tZGMgPSBremFsbG9jX29iaigqcG11X21tZGMpO1xcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy00ODEtXFx0aWYgKCFwbXVfbW1kYykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jPTExND1zdGF0aWMgdm9pZCBfX2luaXQgaTJjX3F1aXJrKHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmMtMTI5LVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYzoxMzA6XFx0XFx0bmV3X2NvbXBhdCA9IGt6YWxsb2Nfb2JqKCpuZXdfY29tcGF0KTtcXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmMtMTMxLVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYz0xNjM9c3RhdGljIHZvaWQgX19pbml0IGFybWFkYV8zNzVfMzgwX2NvaGVyZW5jeV9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jLTE4Ny1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jOjE4ODpcXHRcXHRwID0ga3phbGxvY19vYmooKnApO1xcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmMtMTg5LVxcdFxcdHAtXFx1MDAzZW5hbWUgPSBrc3RyZHVwKFxcXCJhcm0saW8tY29oZXJlbnRcXFwiLCBHRlBfS0VSTkVMKTtcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmM9MTQ4PXN0YXRpYyBpbnQgX19pbml0IG12ZWJ1X3NvY19kZXZpY2Uodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmMtMTU2LVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmM6MTU3OlxcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xcbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmMtMTU4LVxcdGlmICghc29jX2Rldl9hdHRyKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz0zODA9c3RhdGljIHZvaWQgX19pbml0IG14c19tYWNoaW5lX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzg5LVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MzkwOlxcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzkxLVxcdGlmICghc29jX2Rldl9hdHRyKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYz0yOTQ9c3RhdGljIGludCBfX2luaXQgb21hcDFfc3lzdGVtX2RtYV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jLTMyMS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jOjMyMjpcXHRkID0ga3phbGxvY19vYmooKmQpO1xcbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmMtMzIzLVxcdGlmICghZCkge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jPTI5Mj1zdGF0aWMgdm9pZCBvbWFwX21jYnNwX3JlZ2lzdGVyX2JvYXJkX2NmZyhzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgaW50IHJlc19jb3VudCxcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTYtXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jOjI5NzpcXHRvbWFwX21jYnNwX2RldmljZXMgPSBremFsbG9jX29ianMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqLCBzaXplKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmMtMjk4LVxcdGlmICghb21hcF9tY2JzcF9kZXZpY2VzKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmM9NTE9c3RhdGljIGludCBfX2luaXQgb21hcDFfZG1fdGltZXJfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS90aW1lci5jLTEyNy1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmM6MTI4OlxcdFxcdHBkYXRhID0ga3phbGxvY19vYmooKnBkYXRhKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmMtMTI5LVxcdFxcdGlmICghcGRhdGEpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jPTIzMD12b2lkIG9tYXAyeHh4X2Nsa3RfdnBzX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jLTIzOS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2Nsa3QyeHh4X3ZpcnRfcHJjbV9zZXQuYzoyNDA6XFx0aHcgPSBremFsbG9jX29iaigqaHcpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jLTI0MS1cXHRpZiAoIWh3KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jPTc4Nj12b2lkIF9faW5pdCBvbWFwX3NvY19kZXZpY2VfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jLTc5MC1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM6NzkxOlxcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYy03OTItXFx0aWYgKCFzb2NfZGV2X2F0dHIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM9MTMxPXN0YXRpYyBpbnQgb21hcF9kZXZpY2VfYnVpbGRfZnJvbV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jLTE1OC1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM6MTU5OlxcdGh3bW9kcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qgb21hcF9od21vZCAqLCBvaF9jbnQpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYy0xNjAtXFx0aWYgKCFod21vZHMpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jPTMzODk9c3RhdGljIGludCBvbWFwX2h3bW9kX2FsbG9jYXRlX21vZHVsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvbWFwX2h3bW9kICpvaCxcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM0MDItXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzQwMzpcXHRzeXNjID0ga3phbGxvY19vYmooKnN5c2MpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM0MDQtXFx0aWYgKCFzeXNjKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQzMi1cXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2b2gtXFx1MDAzZXNsYXZlX3BvcnRzKSkge1xcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jOjM0MzM6XFx0XFx0b2kgPSBremFsbG9jX29iaigqb2kpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM0MzQtXFx0XFx0aWYgKCFvaSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jPTM1MjE9aW50IG9tYXBfaHdtb2RfaW5pdF9tb2R1bGUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzUzNS1cXHRpZiAoIW9oKSB7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzUzNjpcXHRcXHRvaCA9IGt6YWxsb2Nfb2JqKCpvaCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzUzNy1cXHRcXHRpZiAoIW9oKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzU0Ni1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTQ3OlxcdFxcdG9oLVxcdTAwM2VjbGFzcyA9IGt6YWxsb2Nfb2JqKCpvaC1cXHUwMDNlY2xhc3MpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM1NDgtXFx0XFx0aWYgKCFvaC1cXHUwMDNlY2xhc3MpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYz0zNzk9c3RhdGljIGludCBfX2luaXQgYW14M19pZGxlX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpjcHVfbm9kZSwgaW50IGNwdSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYy00MTItXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jOjQxMzpcXHRpZGxlX3N0YXRlcyA9IGt6YWxsb2Nfb2JqcygqaWRsZV9zdGF0ZXMsIHN0YXRlX2NvdW50KTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmMtNDE0LVxcdGlmICghaWRsZV9zdGF0ZXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jPTMwPXN0YXRpYyB2b2lkIF9faW5pdCBzcl9zZXRfbnZhbHVlcyhzdHJ1Y3Qgb21hcF92b2x0X2RhdGEgKnZvbHRfZGF0YSxcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvc3JfZGV2aWNlLmMtNDEtXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYzo0MjpcXHRudmFsdWVfdGFibGUgPSBremFsbG9jX29ianMoKm52YWx1ZV90YWJsZSwgY291bnQpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvc3JfZGV2aWNlLmMtNDMtXFx0aWYgKCFudmFsdWVfdGFibGUpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM9MTM5PXN0YXRpYyBpbnQgX19pbml0IHBjaWVfc2V0dXAoc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTE3MS1cXHQgKi9cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM6MTcyOlxcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTE3My1cXHRpZiAoIXJlcylcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYz00NjY9c3RhdGljIGludCBfX2luaXQgcGNpX3NldHVwKHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cylcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYy00OTItXFx0ICovXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jOjQ5MzpcXHRyZXMgPSBremFsbG9jX29iaihzdHJ1Y3QgcmVzb3VyY2UpO1xcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYy00OTQtXFx0aWYgKCFyZXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXJwYy9lY2FyZC5jPTY4OT1zdGF0aWMgc3RydWN0IGV4cGFuc2lvbl9jYXJkICpfX2luaXQgZWNhcmRfYWxsb2NfY2FyZChpbnQgdHlwZSwgaW50IHNsb3QpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXJwYy9lY2FyZC5jLTY5NC1cXG5hcmNoL2FybS9tYWNoLXJwYy9lY2FyZC5jOjY5NTpcXHRlYyA9IGt6YWxsb2Nfb2JqKGVjYXJkX3QpO1xcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk2LVxcdGlmICghZWMpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmM9OTM9aW50IF9faW5pdCBzYTExeHhfY2xrX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTA5LVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmM6MTEwOlxcdGh3ID0ga3phbGxvY19vYmooKmh3KTtcXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTExMS1cXHRpZiAoIWh3KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMzEtXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMzI6XFx0aHcgPSBremFsbG9jX29iaigqaHcpO1xcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTMzLVxcdGlmICghaHcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmM9MzE3PWludCBfX2luaXQgc2ExMXgwX3JlZ2lzdGVyX2ZpeGVkX3JlZ3VsYXRvcihpbnQgbixcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYy0zMjMtXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jOjMyNDpcXHRjZmctXFx1MDAzZWluaXRfZGF0YSA9IGlkID0ga3phbGxvY19vYmooKmNmZy1cXHUwMDNlaW5pdF9kYXRhKTtcXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmMtMzI1LVxcdGlmICghY2ZnLVxcdTAwM2Vpbml0X2RhdGEpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jPTIyNT1zdGF0aWMgaW50IG5lcG9uc2V0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldilcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmMtMjc4LVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmM6Mjc5OlxcdGQgPSBremFsbG9jX29iaigqZCk7XFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yODAtXFx0aWYgKCFkKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYz0xNDE9c3RhdGljIGludCBfX2luaXQgcmNhcl9nZW4yX3JlZ3VsYXRvcl9xdWlyayh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmMtMTY2LVxcbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jOjE2NzpcXHRcXHRxdWlyayA9IGt6YWxsb2Nfb2JqKCpxdWlyayk7XFxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmMtMTY4LVxcdFxcdGlmICghcXVpcmspIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jPTM5Mz1zdGF0aWMgaW50IHZlX3NwY19wb3B1bGF0ZV9vcHBzKHVpbnQzMl90IGNsdXN0ZXIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy0zOTctXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM6Mzk4OlxcdG9wcHMgPSBremFsbG9jX29ianMoKm9wcHMsIE1BWF9PUFBTKTtcXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy0zOTktXFx0aWYgKCFvcHBzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9NDQyPWludCBfX2luaXQgdmVfc3BjX2luaXQodm9pZCBfX2lvbWVtICpiYXNlYWRkciwgdTMyIGExNV9jbHVzaWQsIGludCBpcnEpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy00NDQtXFx0aW50IHJldDtcXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzo0NDU6XFx0aW5mbyA9IGt6YWxsb2Nfb2JqKCppbmZvKTtcXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy00NDYtXFx0aWYgKCFpbmZvKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9NTIzPXN0YXRpYyBzdHJ1Y3QgY2xrICp2ZV9zcGNfY2xrX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmNwdV9kZXYpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy01MjctXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM6NTI4OlxcdHNwYyA9IGt6YWxsb2Nfb2JqKCpzcGMpO1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTUyOS1cXHRpZiAoIXNwYylcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jPTEyMz1zdGF0aWMgdm9pZCBfX2luaXQgdmVyc2F0aWxlX2R0X3BjaV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYy0xNDQtXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmM6MTQ1OlxcdG5ld3Byb3AgPSBremFsbG9jX29iaigqbmV3cHJvcCk7XFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmMtMTQ2LVxcdGlmICghbmV3cHJvcClcXG4tLVxcbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYz0xMDU9c3RhdGljIHZvaWQgX19pbml0IHp5bnFfaW5pdF9tYWNoaW5lKHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEwLVxcbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYzoxMTE6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jLTExMi1cXHRpZiAoIXNvY19kZXZfYXR0cilcXG4tLVxcbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmM9NTAzPXN0YXRpYyBfX2luaXQgaW50IGwyeDBfcG11X2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmMtNTA5LVxcbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmM6NTEwOlxcdGwyeDBfcG11ID0ga3phbGxvY19vYmooKmwyeDBfcG11KTtcXG5hcmNoL2FybS9tbS9jYWNoZS1sMngwLXBtdS5jLTUxMS1cXHRpZiAoIWwyeDBfcG11KSB7XFxuLS1cXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jPTMxNT1zdGF0aWMgaW50IF9faW5pdCBfX3VuaXBoaWVyX2NhY2hlX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4tLVxcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmMtMzQ0LVxcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmM6MzQ1OlxcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSk7XFxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYy0zNDYtXFx0aWYgKCFkYXRhKVxcbi0tXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYz01MzM9c3RhdGljIHZvaWQgKl9fZG1hX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmhhbmRsZSxcXG4tLVxcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtNTYwLVxcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmM6NTYxOlxcdGJ1ZiA9IGt6YWxsb2Nfb2JqKCpidWYsXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjItXFx0XFx0XFx0ICBnZnAgXFx1MDAyNiB+KF9fR0ZQX0RNQSB8IF9fR0ZQX0RNQTMyIHwgX19HRlBfSElHSE1FTSkpO1xcbi0tXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYz0xNDg3PWFybV9pb21tdV9jcmVhdGVfbWFwcGluZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgYmFzZSwgdTY0IHNpemUpXFxuLS1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTE1MDYtXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYzoxNTA3OlxcdG1hcHBpbmcgPSBremFsbG9jX29iaihzdHJ1Y3QgZG1hX2lvbW11X21hcHBpbmcpO1xcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtMTUwOC1cXHRpZiAoIW1hcHBpbmcpXFxuLS1cXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM9MzE2PWludCBfX2luaXQgYXJjaF94ZW5fdW5wb3B1bGF0ZWRfaW5pdChzdHJ1Y3QgcmVzb3VyY2UgKipyZXMpXFxuLS1cXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzQzLVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYzozNDQ6XFx0cmVncyA9IGt6YWxsb2Nfb2JqcygqcmVncywgbnJfcmVnKTtcXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzQ1LVxcdGlmICghcmVncykge1xcbi0tXFxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM4Ny1cXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM6Mzg4OlxcdFxcdHRtcF9yZXMgPSBremFsbG9jX29iaigqdG1wX3Jlcyk7XFxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM4OS1cXHRcXHRpZiAoIXRtcF9yZXMpIHtcXG4tLVxcbmFyY2gvYXJtL3hlbi9wMm0uYz0xNTA9Ym9vbCBfX3NldF9waHlzX3RvX21hY2hpbmVfbXVsdGkodW5zaWduZWQgbG9uZyBwZm4sXFxuLS1cXG5hcmNoL2FybS94ZW4vcDJtLmMtMTc4LVxcbmFyY2gvYXJtL3hlbi9wMm0uYzoxNzk6XFx0cDJtX2VudHJ5ID0ga3phbGxvY19vYmooKnAybV9lbnRyeSwgR0ZQX05PV0FJVCk7XFxuYXJjaC9hcm0veGVuL3AybS5jLTE4MC1cXHRpZiAoIXAybV9lbnRyeSlcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYz02OD1zdGF0aWMgaW50IF9faW5pdCBfX3Zkc29faW5pdChlbnVtIHZkc29fYWJpIGFiaSlcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYy04My1cXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmM6ODQ6XFx0dmRzb19wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX2luZm9bYWJpXS52ZHNvX3BhZ2VzKTtcXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmMtODUtXFx0aWYgKHZkc29fcGFnZWxpc3QgPT0gTlVMTClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jPTQ4MD1zdGF0aWMgaW50IHNoYXJlX3Bmbl9oeXAodTY0IHBmbilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5Mi1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYzo0OTM6XFx0dGhpcyA9IGt6YWxsb2Nfb2JqKCp0aGlzKTtcXG5hcmNoL2FybTY0L2t2bS9tbXUuYy00OTQtXFx0aWYgKCF0aGlzKSB7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYz05ODE9aW50IGt2bV9pbml0X3N0YWdlMl9tbXUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MyX21tdSAqbW11LCB1bnNpZ25lZCBsb25nIHR5cGUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA3LVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjEwMDg6XFx0cGd0ID0ga3phbGxvY19vYmooKnBndCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA5LVxcdGlmICghcGd0KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9MTE4MD1pbnQgdG9wdXBfaHlwX21lbWNhY2hlKHN0cnVjdCBrdm1faHlwX21lbWNhY2hlICptYywgdW5zaWduZWQgbG9uZyBtaW5fcGFnZXMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMTg1LVxcdGlmICghbWMtXFx1MDAzZW1hcHBpbmcpIHtcXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoxMTg2OlxcdFxcdG1jLVxcdTAwM2VtYXBwaW5nID0ga3phbGxvY19vYmooc3RydWN0IHBrdm1fbWFwcGluZyxcXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMTg3LVxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jPTI1MTM9aW50IF9faW5pdCBrdm1fbW11X2luaXQodTMyIGh5cF92YV9iaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmMtMjU0Ni1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoyNTQ3OlxcdGh5cF9wZ3RhYmxlID0ga3phbGxvY19vYmooKmh5cF9wZ3RhYmxlKTtcXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0yNTQ4LVxcdGlmICghaHlwX3BndGFibGUpIHtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTEzODI9aW50IGt2bV92Y3B1X2FsbG9jYXRlX3ZuY3JfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTEzODctXFx0aWYgKCF2Y3B1LVxcdTAwM2VhcmNoLnZuY3JfdGxiKSB7XFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM6MTM4ODpcXHRcXHRzdHJ1Y3Qgdm5jcl90bGIgKnZ0ID0ga3phbGxvY19vYmooKnZjcHUtXFx1MDAzZWFyY2gudm5jcl90bGIsXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTM4OS1cXHRcXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYz0xODY5PWludCBrdm1faW5pdF9udl9zeXNyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTE4NzgtXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM6MTg3OTpcXHRrdm0tXFx1MDAzZWFyY2guc3lzcmVnX21hc2tzID0ga3phbGxvY19vYmooKihrdm0tXFx1MDAzZWFyY2guc3lzcmVnX21hc2tzKSxcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xODgwLVxcdFxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jPTExNj1zdGF0aWMgc3RydWN0IGt2bV9wdGR1bXBfZ3Vlc3Rfc3RhdGUgKmt2bV9wdGR1bXBfcGFyc2VyX2NyZWF0ZShzdHJ1Y3Qga3ZtX3MyX21tdSAqbW11KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmMtMTIxLVxcbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jOjEyMjpcXHRzdCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBrdm1fcHRkdW1wX2d1ZXN0X3N0YXRlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jLTEyMy1cXHRpZiAoIXN0KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz0yMDg9c3RhdGljIGludCBrdm1fdmdpY19kaXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgbnJfc3BpcylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMjE3LVxcdGRpc3QtXFx1MDAzZWFjdGl2ZV9zcGlzID0gKGF0b21pY190KUFUT01JQ19JTklUKDApO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6MjE4OlxcdGRpc3QtXFx1MDAzZXNwaXMgPSBremFsbG9jX29ianMoc3RydWN0IHZnaWNfaXJxLCBucl9zcGlzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMjE5LVxcdGlmICghZGlzdC1cXHUwMDNlc3BpcylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9MzIwPXN0YXRpYyBpbnQgdmdpY19hbGxvY2F0ZV9wcml2YXRlX2lycXNfbG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHR5cGUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTMzNS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjMzNjpcXHR2Z2ljX2NwdS1cXHUwMDNlcHJpdmF0ZV9pcnFzID0ga3phbGxvY19vYmpzKHN0cnVjdCB2Z2ljX2lycSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTMzNy1cXHRcXHRcXHRcXHRcXHQgICAgICBudW1fcHJpdmF0ZV9pcnFzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM9MTQyPWludCBrdm1fdmdpY19zZXR1cF9kZWZhdWx0X2lycV9yb3V0aW5nKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTE0OC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYzoxNDk6XFx0ZW50cmllcyA9IGt6YWxsb2Nfb2JqcygqZW50cmllcywgbnIsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTUwLVxcdGlmICghZW50cmllcylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz03Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2FkZF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtODctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjg4OlxcdGlycSA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB2Z2ljX2lycSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtODktXFx0aWYgKCFpcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9OTcxPXN0YXRpYyBpbnQgdmdpY19pdHNfYWxsb2NfY29sbGVjdGlvbihzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy05NzYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjk3NzpcXHRjb2xsZWN0aW9uID0ga3phbGxvY19vYmooKmNvbGxlY3Rpb24sIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk3OC1cXHRpZiAoIWNvbGxlY3Rpb24pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTAxNT1zdGF0aWMgc3RydWN0IGl0c19pdGUgKnZnaWNfaXRzX2FsbG9jX2l0ZShzdHJ1Y3QgaXRzX2RldmljZSAqZGV2aWNlLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEwMjAtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEwMjE6XFx0aXRlID0ga3phbGxvY19vYmooKml0ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTAyMi1cXHRpZiAoIWl0ZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMTQyPXN0YXRpYyBzdHJ1Y3QgaXRzX2RldmljZSAqdmdpY19pdHNfYWxsb2NfZGV2aWNlKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExNDctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjExNDg6XFx0ZGV2aWNlID0ga3phbGxvY19vYmooKmRldmljZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTE0OS1cXHRpZiAoIWRldmljZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xODU1PXN0YXRpYyBpbnQgdmdpY19pdHNfY3JlYXRlKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHUzMiB0eXBlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NjItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4NjM6XFx0aXRzID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXRzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODY0LVxcdGlmICghaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz04ODY9c3RhdGljIGludCB2Z2ljX3YzX2FsbG9jX3JlZGlzdF9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLCB1aW50MzJfdCBpbmRleCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6OTMyOlxcdHJkcmVnID0ga3phbGxvY19vYmooKnJkcmVnLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMzLVxcdGlmICghcmRyZWcpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYz0yNDI9aW50IHZnaWNfdjRfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy0yNTgtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM6MjU5OlxcdGRpc3QtXFx1MDAzZWl0c192bS52cGVzID0ga3phbGxvY19vYmpzKCpkaXN0LVxcdTAwM2VpdHNfdm0udnBlcywgbnJfdmNwdXMsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmMtMjYwLVxcdFxcdFxcdFxcdFxcdCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjE1Nj1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjE3Ny1cXHRpZiAoIWppdF9kYXRhKSB7XFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjE3ODpcXHRcXHRqaXRfZGF0YSA9IGt6YWxsb2Nfb2JqKCpqaXRfZGF0YSk7XFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjE3OS1cXHRcXHRpZiAoIWppdF9kYXRhKVxcbi0tXFxuYXJjaC9jc2t5L2tlcm5lbC92ZHNvLmM9MTc9c3RhdGljIGludCBfX2luaXQgdmRzb19pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yMi1cXHR2ZHNvX3BhZ2VsaXN0ID1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MTUuMTg3NTI3NDQxWiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxMDgxOTQ2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBlbnN1cmluZyB0aGlzIGNvZGUgY2hhbmdlIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBzdWJ0bGUgbmFzdGllcy4gSSBuZWVkIHRvIG1ldGljdWxvdXNseSBpbnNwZWN0IGV2ZXJ5IHNpbmdsZSBmaWxlIHRoaXMgcGF0Y2ggbW9kaWZpZXMuIEknbSBlc3BlY2lhbGx5IG9uIHRoZSBsb29rb3V0IGZvciBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgdGhhdCBtaWdodCBiZSBleHBvc2VkIGJ5IHRoZXNlIGNoYW5nZXMuIFRoaW5rIGFib3V0IHNjZW5hcmlvcyB3aGVyZSB1bmV4cGVjdGVkIGlucHV0cyBjb3VsZCBsZWFkIHRvIHRyb3VibGUuIEkgbmVlZCB0byBiZSAqc3VyZSogdGhpcyBwYXRjaCBoYW5kbGVzIHRob3NlIGdyYWNlZnVsbHkuIEJleW9uZCBlZGdlIGNhc2VzLCBJ4oCZbSBhbHNvIGV4dHJlbWVseSB3YXJ5IG9mIHRoZSBwb3RlbnRpYWwgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBBIGNhcmVsZXNzIGNoYW5nZSBoZXJlIGNvdWxkIG9wZW4gdGhlIGRvb3IgdG8gYWxsIHNvcnRzIG9mIHZ1bG5lcmFiaWxpdGllcywgb3IgYXQgdGhlIHZlcnkgbGVhc3QsIHVucHJlZGljdGFibGUgYmVoYXZpb3IuIFNvLCBteSBnb2FsIGlzIHRvIHZlcmlmeSB0aGF0IG1lbW9yeSBpcyBwcm9wZXJseSBpbml0aWFsaXplZCBiZWZvcmUgYW55IHJlYWQgb3Igd3JpdGUgb3BlcmF0aW9uIG9jY3Vycy4gSSdtIGdvaW5nIHRvIGNhcmVmdWxseSB0cmFjZSB0aGUgZGF0YSBmbG93cyBhbmQgbG9naWMgcGF0aHMgYWZmZWN0ZWQgYnkgdGhpcyBwYXRjaCB3aXRoIHRoZSBzb2xlIHB1cnBvc2Ugb2YgY29uZmlybWluZyB0aGVyZSBhcmUgbm8gbmV3IG9wcG9ydHVuaXRpZXMgZm9yIHN1YnRsZSwgaGFyZC10by1kZWJ1ZyBkZWZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzU2NCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjA0OjE5LjI5NTcyNDMxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MzAsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MzA6XFx0XFx0aWYgKHJlZzEgPT0gcmVnMiB8fCByZWcxIFxcdTAwMjYgMSB8fCByZWcyIFxcdTAwMjYgMSlcXG4gNDMxOlxcdFxcdFxcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pO1xcbiA0MzI6XFx0XFxuIDQzMzpcXHRcXHRpZiAoY29kZSBcXHUwMDI2IDB4ZmZmZikge1xcbiA0MzQ6XFx0XFx0XFx0Y2MgPSAzO1xcbiA0MzU6XFx0XFx0XFx0cmMgPSA0O1xcbiA0MzY6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQzNzpcXHRcXHR9XFxuIDQzODpcXHRcXG4gNDM5OlxcdFxcdGlmICgha3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSBcXHUwMDI2XFx1MDAyNiAoYWRkciBcXHUwMDI2IH5QQUdFX01BU0spKVxcbiA0NDA6XFx0XFx0XFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9ncmFtX2ludCh2Y3B1LCBQR01fU1BFQ0lGSUNBVElPTik7XFxuIDQ0MTpcXHRcXG4gNDQyOlxcdFxcdHNjdG5zID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIDQ0MzpcXHRcXHRpZiAoIXNjdG5zKVxcbiA0NDQ6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDQ0NTpcXHRcXG4gNDQ2OlxcdFxcdGNjID0gc3RoeWlfZmlsbChzY3RucywgXFx1MDAyNnJjKTtcXG4gNDQ3OlxcdFxcdGlmIChjYyBcXHUwMDNjIDApIHtcXG4gNDQ4OlxcdFxcdFxcdGtmcmVlKHNjdG5zKTtcXG4gNDQ5OlxcdFxcdFxcdHJldHVybiBjYztcXG4gNDUwOlxcdFxcdH1cXG4gNDUxOlxcdG91dDpcXG4gNDUyOlxcdFxcdGlmICghY2MpIHtcXG4gNDUzOlxcdFxcdFxcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XFxuIDQ1NDpcXHRcXHRcXHRcXHRtZW1jcHkoc2lkYV9hZGRyKHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrKSwgc2N0bnMsIFBBR0VfU0laRSk7XFxuIDQ1NTpcXHRcXHRcXHR9IGVsc2Uge1xcbiA0NTY6XFx0XFx0XFx0XFx0ciA9IHdyaXRlX2d1ZXN0KHZjcHUsIGFkZHIsIHJlZzIsIHNjdG5zLCBQQUdFX1NJWkUpO1xcbiA0NTc6XFx0XFx0XFx0XFx0aWYgKHIpIHtcXG4gNDU4OlxcdFxcdFxcdFxcdFxcdGtmcmVlKHNjdG5zKTtcXG4gNDU5OlxcdFxcdFxcdFxcdFxcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ19jb25kKHZjcHUsIHIpO1xcbiA0NjA6XFx0XFx0XFx0XFx0fVxcbiA0NjE6XFx0XFx0XFx0fVxcbiA0NjI6XFx0XFx0fVxcbiA0NjM6XFx0XFxuIDQ2NDpcXHRcXHRrZnJlZShzY3Rucyk7XFxuIDQ2NTpcXHRcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZXMucmVncy5ncHJzW3JlZzIgKyAxXSA9IHJjO1xcbiA0NjY6XFx0XFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCBjYyk7XFxuIDQ2NzpcXHRcXHRyZXR1cm4gcjtcXG4gNDY4OlxcdH1cXG4gNDY5OlxcdFxcbiA0NzA6XFx0c3RhdGljIGludCBoYW5kbGVfb3BlcmV4YyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIDQ3MTpcXHR7XFxuIDQ3MjpcXHRcXHRwc3dfdCBvbGRwc3csIG5ld3BzdztcXG4gNDczOlxcdFxcdGludCByYztcXG4gNDc0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowNDoxOS4yOTU4MDU4OFoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MTU4ODIzMjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgKipcblxuT2theSwgSSBuZWVkIHRvIGdldCBteSBiZWFyaW5ncyBvbiB0aGlzIHNwZWNpZmljIGFyZWEgb2YgdGhlIHMzOTAgS1ZNIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIHRha2UgYSBsb29rIGF0IGBhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jYC4gVGhpcyBmaWxlIGFsbW9zdCBjZXJ0YWlubHkgZGVhbHMgd2l0aCBwcml2aWxlZ2VkIGluc3RydWN0aW9uIGhhbmRsaW5nIGFuZCBwb3RlbnRpYWxseSB0aGUgaW50ZXJmYWNlIGJldHdlZW4gdGhlIGd1ZXN0IGFuZCB0aGUgaG9zdCBmb3IgdGhvc2UgdHlwZXMgb2Ygb3BlcmF0aW9ucywgZ2l2ZW4gdGhlIG5hbWUuIEknbSBleHBlY3RpbmcgdG8gc2VlIGRlZmluaXRpb25zIGZvciB0aGluZ3MgbGlrZSB0aGUgaHlwZXJjYWxsIGludGVyZmFjZXMsIGFueSBlbXVsYXRlZCBpbnN0cnVjdGlvbnMgdGhhdCBuZWVkIHNwZWNpYWwgdHJlYXRtZW50LCBhbmQgcG9zc2libHkgdGhlIHN0cnVjdHVyZXMgdXNlZCB0byByZXByZXNlbnQgdGhlIGd1ZXN0J3MgcHJpdmlsZWdlZCBzdGF0ZSB0aGF0IEtWTSBuZWVkcyB0byBtYW5hZ2UuIEknbSB0aGlua2luZyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGhhbmRsZXJzIGZvciBESUFHIGluc3RydWN0aW9uIGludGVyY2VwdGlvbiwgUFNXIG1hbmlwdWxhdGlvbiB3aXRoaW4gdGhlIHZpcnR1YWwgbWFjaGluZSwgYW5kIGFueSBjb2RlIHJlbGF0ZWQgdG8gdmlydHVhbGl6YXRpb24gb2YgY29udHJvbCByZWdpc3RlcnMuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsb2NrIHVzYWdlIHdpdGhpbiB0aGlzIGZpbGUsIGVzcGVjaWFsbHkgaWYgdGhlcmUgYXJlIGFueSByYWNlIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBiZSBleHBsb2l0YWJsZSB3aGVuIGRlYWxpbmcgd2l0aCBzZW5zaXRpdmUgb3BlcmF0aW9ucy4gTXkgZmlyc3QgcGFzcyB3aWxsIGxpa2VseSBiZSBoaWdoIGxldmVsIHRvIGdldCB0aGUgc3RydWN0dXJlIG9mIHRoZSBmaWxlLCB0aGVuIEknbGwgZHJpbGwgZG93biB0byBhbnkgc3BlY2lmaWMgYXJlYXMgdGhhdCBsb29rIGludGVyZXN0aW5nIHRvIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODU2MSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MjYuNDU0NjMxMzI1WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwNSxcbiAgXCJMaW5lQ291bnRcIjogNTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkwNTpcXHRcXHR9XFxuIDkwNjpcXHRcXG4gOTA3OlxcdFxcdG9wZXJhbmQyID0ga3ZtX3MzOTBfZ2V0X2Jhc2VfZGlzcF9zKHZjcHUsIFxcdTAwMjZhcik7XFxuIDkwODpcXHRcXG4gOTA5OlxcdFxcdGlmICgha3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSBcXHUwMDI2XFx1MDAyNiAob3BlcmFuZDIgXFx1MDAyNiAweGZmZikpXFxuIDkxMDpcXHRcXHRcXHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dyYW1faW50KHZjcHUsIFBHTV9TUEVDSUZJQ0FUSU9OKTtcXG4gOTExOlxcdFxcbiA5MTI6XFx0XFx0c3dpdGNoIChmYykge1xcbiA5MTM6XFx0XFx0Y2FzZSAxOiAvKiBzYW1lIGhhbmRsaW5nIGZvciAxIGFuZCAyICovXFxuIDkxNDpcXHRcXHRjYXNlIDI6XFxuIDkxNTpcXHRcXHRcXHRtZW0gPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gOTE2OlxcdFxcdFxcdGlmICghbWVtKVxcbiA5MTc6XFx0XFx0XFx0XFx0Z290byBvdXRfbm9fZGF0YTtcXG4gOTE4OlxcdFxcdFxcdGlmIChzdHNpKG1lbSwgZmMsIHNlbDEsIHNlbDIpKVxcbiA5MTk6XFx0XFx0XFx0XFx0Z290byBvdXRfbm9fZGF0YTtcXG4gOTIwOlxcdFxcdFxcdGJyZWFrO1xcbiA5MjE6XFx0XFx0Y2FzZSAzOlxcbiA5MjI6XFx0XFx0XFx0aWYgKHNlbDEgIT0gMiB8fCBzZWwyICE9IDIpXFxuIDkyMzpcXHRcXHRcXHRcXHRnb3RvIG91dF9ub19kYXRhO1xcbiA5MjQ6XFx0XFx0XFx0bWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIDkyNTpcXHRcXHRcXHRpZiAoIW1lbSlcXG4gOTI2OlxcdFxcdFxcdFxcdGdvdG8gb3V0X25vX2RhdGE7XFxuIDkyNzpcXHRcXHRcXHRoYW5kbGVfc3RzaV8zXzJfMih2Y3B1LCBtZW0pO1xcbiA5Mjg6XFx0XFx0XFx0YnJlYWs7XFxuIDkyOTpcXHRcXHRjYXNlIDE1OiAvKiBmYyAxNSBpcyBmdWxseSBoYW5kbGVkIGluIHVzZXJzcGFjZSAqL1xcbiA5MzA6XFx0XFx0XFx0aW5zZXJ0X3N0c2lfdXNyX2RhdGEodmNwdSwgb3BlcmFuZDIsIGFyLCBmYywgc2VsMSwgc2VsMik7XFxuIDkzMTpcXHRcXHRcXHR0cmFjZV9rdm1fczM5MF9oYW5kbGVfc3RzaSh2Y3B1LCBmYywgc2VsMSwgc2VsMiwgb3BlcmFuZDIpO1xcbiA5MzI6XFx0XFx0XFx0cmV0dXJuIC1FUkVNT1RFO1xcbiA5MzM6XFx0XFx0fVxcbiA5MzQ6XFx0XFx0aWYgKGt2bV9zMzkwX3B2X2NwdV9pc19wcm90ZWN0ZWQodmNwdSkpIHtcXG4gOTM1OlxcdFxcdFxcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cXHUwMDNlYXJjaC5zaWVfYmxvY2spLCBtZW0sIFBBR0VfU0laRSk7XFxuIDkzNjpcXHRcXHRcXHRyYyA9IDA7XFxuIDkzNzpcXHRcXHR9IGVsc2Uge1xcbiA5Mzg6XFx0XFx0XFx0cmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTtcXG4gOTM5OlxcdFxcdH1cXG4gOTQwOlxcdFxcdGlmIChyYykge1xcbiA5NDE6XFx0XFx0XFx0cmMgPSBrdm1fczM5MF9pbmplY3RfcHJvZ19jb25kKHZjcHUsIHJjKTtcXG4gOTQyOlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA5NDM6XFx0XFx0fVxcbiA5NDQ6XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC51c2VyX3N0c2kpIHtcXG4gOTQ1OlxcdFxcdFxcdGluc2VydF9zdHNpX3Vzcl9kYXRhKHZjcHUsIG9wZXJhbmQyLCBhciwgZmMsIHNlbDEsIHNlbDIpO1xcbiA5NDY6XFx0XFx0XFx0cmMgPSAtRVJFTU9URTtcXG4gOTQ3OlxcdFxcdH1cXG4gOTQ4OlxcdFxcdHRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7XFxuIDk0OTpcXHRcXHRrZnJlZShtZW0pO1xcbiA5NTA6XFx0XFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAwKTtcXG4gOTUxOlxcdFxcdHZjcHUtXFx1MDAzZXJ1bi1cXHUwMDNlcy5yZWdzLmdwcnNbMF0gPSAwO1xcbiA5NTI6XFx0XFx0cmV0dXJuIHJjO1xcbiA5NTM6XFx0b3V0X25vX2RhdGE6XFxuIDk1NDpcXHRcXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDMpO1xcbiA5NTU6XFx0b3V0OlxcbiA5NTY6XFx0XFx0a2ZyZWUobWVtKTtcXG4gOTU3OlxcdFxcdHJldHVybiByYztcXG4gOTU4OlxcdH1cXG4gOTU5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowNDoyNi40NTQ3NTI3NDVaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYxMjcxOTE3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEtWTS9zMzkwIEludGVycnVwdCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIHdlJ3JlIGRpdmluZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgS1ZNL3MzOTAgaW50ZXJhY3Rpb24sIHNwZWNpZmljYWxseSByZWdhcmRpbmcgaW50ZXJydXB0cy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byB6ZXJvIGluIG9uIHR3byBrZXkgZmlsZXM6IGBhcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jYCBhbmQgYGludGVycnVwdC5jYC4gYHMzOTAuY2AgaXMgdGhlIGxpa2VseSBwbGFjZSB3aGVyZSBjb3JlIHMzOTAtc3BlY2lmaWMgS1ZNIHNldHVwIGFuZCBmdW5jdGlvbmFsaXR5IHJlc2lkZSwgYW5kIHdpdGhpbiB0aGF0LCB0aGUgY29ubmVjdGlvbiB0byBpbnRlcnJ1cHQgaGFuZGxpbmcgd2lsbCBiZSB2aXRhbC4gQ29udmVyc2VseSwgaW50ZXJydXB0LmMgaXMgd2hlcmUgbG93IGxldmVsIGludGVycnVwdCBmdW5jdGlvbnMgYXJlLiBOb3cgSSBzdXNwZWN0IHRoZXNlIHdpbGwgcHJvdmlkZSB0aGUgY3JpdGljYWwgcGllY2VzIG9mIHRoZSBwdXp6bGUuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGludGVycnVwdCB2ZWN0b3JpbmcsIHRoZSBpbnRlcnJ1cHQgaW5qZWN0aW9uIG1lY2hhbmlzbXMsIGFuZCB0aGUgY3J1Y2lhbCBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ3Vlc3QncyB2aWV3IG9mIGludGVycnVwdHMgYW5kIHRoZSBob3N0J3MgaGFuZGxpbmcgb2YgdGhlbSBkZWZpbmVkIGluIHRoZXNlIGFyZWFzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGhhcmR3YXJlIGludGVycnVwdHMgYXJlIG1hcHBlZCB0byBndWVzdCBpbnRlcnJ1cHRzIHdpdGhpbiB0aGUgS1ZNIGVudmlyb25tZW50LCBhbmQgdGhhdCB3aWxsIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVzZSBmaWxlcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTg2OSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MjkuMDY3NDc1NjAyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyNzAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyNzA6XFx0XFxuMzI3MTpcXHRcXHRrdm0tXFx1MDAzZWFyY2guZGJmID0gZGVidWdfcmVnaXN0ZXIoZGVidWdfbmFtZSwgMzIsIDEsIDcgKiBzaXplb2YobG9uZykpO1xcbjMyNzI6XFx0XFx0aWYgKCFrdm0tXFx1MDAzZWFyY2guZGJmKVxcbjMyNzM6XFx0XFx0XFx0Z290byBvdXRfZXJyO1xcbjMyNzQ6XFx0XFxuMzI3NTpcXHRcXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBzaWVfcGFnZTIpICE9IDQwOTYpO1xcbjMyNzY6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMiA9IGt6YWxsb2Nfb2JqKCprdm0tXFx1MDAzZWFyY2guc2llX3BhZ2UyLFxcbjMyNzc6XFx0XFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcXG4zMjc4OlxcdFxcdGlmICgha3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMilcXG4zMjc5OlxcdFxcdFxcdGdvdG8gb3V0X2VycjtcXG4zMjgwOlxcdFxcbjMyODE6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMi1cXHUwMDNla3ZtID0ga3ZtO1xcbjMyODI6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19saXN0ID0ga3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMi1cXHUwMDNlZmFjX2xpc3Q7XFxuMzI4MzpcXHRcXG4zMjg0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGt2bV9zMzkwX2ZhY19iYXNlKTsgaSsrKSB7XFxuMzI4NTpcXHRcXHRcXHRrdm0tXFx1MDAzZWFyY2gubW9kZWwuZmFjX21hc2tbaV0gPSBzdGZsZV9mYWNfbGlzdFtpXSBcXHUwMDI2XFxuMzI4NjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBrdm1fczM5MF9mYWNfYmFzZVtpXTtcXG4zMjg3OlxcdFxcdFxcdGt2bS1cXHUwMDNlYXJjaC5tb2RlbC5mYWNfbGlzdFtpXSA9IHN0ZmxlX2ZhY19saXN0W2ldIFxcdTAwMjZcXG4zMjg4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGt2bV9zMzkwX2ZhY19iYXNlW2ldO1xcbjMyODk6XFx0XFx0fVxcbjMyOTA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoa3ZtX3MzOTBfZmFjX2V4dCk7IGkrKykge1xcbjMyOTE6XFx0XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19tYXNrW2ldIHw9IHN0ZmxlX2ZhY19saXN0W2ldIFxcdTAwMjZcXG4zMjkyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBrdm1fczM5MF9mYWNfZXh0W2ldO1xcbjMyOTM6XFx0XFx0fVxcbjMyOTQ6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLm1vZGVsLnN1YmZ1bmNzID0ga3ZtX3MzOTBfYXZhaWxhYmxlX3N1YmZ1bmM7XFxuMzI5NTpcXHRcXG4zMjk2OlxcdFxcdC8qIHdlIGFyZSBhbHdheXMgaW4gY3phbSBtb2RlIC0gZXZlbiBvbiBwcmUgejE0IG1hY2hpbmVzICovXFxuMzI5NzpcXHRcXHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cXHUwMDNlYXJjaC5tb2RlbC5mYWNfbWFzaywgMTM4KTtcXG4zMjk4OlxcdFxcdHNldF9rdm1fZmFjaWxpdHkoa3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19saXN0LCAxMzgpO1xcbjMyOTk6XFx0XFx0Lyogd2UgZW11bGF0ZSBTVEhZSSBpbiBrdm0gKi9cXG4zMzAwOlxcdFxcdHNldF9rdm1fZmFjaWxpdHkoa3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19tYXNrLCA3NCk7XFxuMzMwMTpcXHRcXHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cXHUwMDNlYXJjaC5tb2RlbC5mYWNfbGlzdCwgNzQpO1xcbjMzMDI6XFx0XFx0aWYgKG1hY2hpbmVfaGFzX3RsYl9ndWVzdCgpKSB7XFxuMzMwMzpcXHRcXHRcXHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cXHUwMDNlYXJjaC5tb2RlbC5mYWNfbWFzaywgMTQ3KTtcXG4zMzA0OlxcdFxcdFxcdHNldF9rdm1fZmFjaWxpdHkoa3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19saXN0LCAxNDcpO1xcbjMzMDU6XFx0XFx0fVxcbjMzMDY6XFx0XFxuMzMwNzpcXHRcXHRpZiAoY3NzX2dlbmVyYWxfY2hhcmFjdGVyaXN0aWNzLmFpdiBcXHUwMDI2XFx1MDAyNiB0ZXN0X2ZhY2lsaXR5KDY1KSlcXG4zMzA4OlxcdFxcdFxcdHNldF9rdm1fZmFjaWxpdHkoa3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19tYXNrLCA2NSk7XFxuMzMwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MjkuMDY3NzgyNjYyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc5NzAyMzM5NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQXNzZXNzbWVudDogTm8gTmV3IFJpc2tzIERldGVjdGVkKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBzd2FwLW91dCwgcmVwbGFjaW5nIHRoZSBvbGQgYGdldF96ZXJvZWRfcGFnZWAgYW5kIGBmcmVlX3BhZ2VgIGZ1bmN0aW9ucyB3aXRoIHRoZSBuZXdlciBga3phbGxvY2AgKG9yIGBremFsbG9jX29iamApIGFuZCBga2ZyZWVgIGluIHRoZSBzMzkwIEtWTSBzdWJzeXN0ZW0uIFRoZSBjcml0aWNhbCB0aGluZyBoZXJlIGlzIHRoYXQgdGhlICp6ZXJvLWluaXRpYWxpemF0aW9uKiBpcyBtYWludGFpbmVkLiBFdmVyeSBzaW5nbGUgcGxhY2UgdGhlIG9sZCBjb2RlIHdhcyBhbGxvY2F0aW5nIHplcm9lZCBwYWdlcywgdGhlIG5ldyBjb2RlIGlzIGFsc28gYWxsb2NhdGluZyB6ZXJvZWQgbWVtb3J5IHRocm91Z2ggYGt6YWxsb2NgLiBUaGlzIGlzIGtleS5cblxuVGhlcmUncyBhYnNvbHV0ZWx5IG5vIGV2aWRlbmNlIG9mIGludHJvZHVjaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB3aGF0c29ldmVyLiBObyBuZXcgcGF0aHMgYXJlIGNyZWF0ZWQgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIHRoZSB1c2Ugb2YgdW5pbml0aWFsaXplZCBkYXRhLCBhbmQsIGNyaXRpY2FsbHksIG5vIHVzZXItc3BhY2UgbGVha3MgYXJlIGVuYWJsZWQuIFdlJ3JlIGtlZXBpbmcgdGhpbmdzIGNsZWFuLlxuXG5HaXZlbiB0aGVzZSBwb2ludHMsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB3ZSBhYnNvbHV0ZWx5IGRvICpub3QqIG5lZWQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGZvciB0aGlzIGNoYW5nZS4gVGhlIHJlcGxhY2VtZW50IG9mIHBhZ2UgYWxsb2NhdGlvbnMgd2l0aCBzbGFiIGFsbG9jYXRpb25zLCB3aGlsZSBhIGRpZmZlcmVudCBtZWNoYW5pc20sIG1haW50YWlucyB0aGUgY3J1Y2lhbCB6ZXJvLWluaXRpYWxpemF0aW9uLCB3aGljaCBpcyB3aGF0IEtNU0FOIHdvdWxkIGJlIHBhcnRpY3VsYXJseSBjb25jZXJuZWQgYWJvdXQuIEFueSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgZnJvbSB0aGUgc2xhYiBjb252ZXJzaW9ucyB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gYW55d2F5LlxuXG5JJ20gcmVhZHkgdG8gbWFyayB0aGlzIGFzIEtNU0FOLWNsZWFuLiBMZXQncyBpbnZva2UgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwNjcsIk91dHB1dFRva2VucyI6MTkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MzcuMDM4MDE4NzI2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjb252ZXJ0cyBwYWdlIGFsbG9jYXRpb25zIHZpYSBnZXRfemVyb2VkX3BhZ2UoKSBhbmQgZnJlZV9wYWdlKCkgdG8gc2xhYiBhbGxvY2F0aW9ucyB2aWEga3phbGxvYygpL2t6YWxsb2Nfb2JqKCkgYW5kIGtmcmVlKCkgYWNyb3NzIHMzOTAgS1ZNIGNvZGUgKGludGVyY2VwdC5jLCBpbnRlcnJ1cHQuYywgcHJpdi5jLCBzMzkwLmMpLiBcXG5cXG5TaW5jZSBremFsbG9jL2t6YWxsb2Nfb2JqIHplcm8taW5pdGlhbGl6ZXMgdGhlIG1lbW9yeSBpZGVudGljYWxseSB0byBnZXRfemVyb2VkX3BhZ2UoKSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGNvbmRpdGlvbmFsIGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgb3IgdW5pbml0aWFsaXplZCBpbmZvLWxlYWtzIHRvIHVzZXJzcGFjZS9ndWVzdCBhcmUgaW50cm9kdWNlZC4gQW55IHBvdGVudGlhbCBzbGFiLXJlbGF0ZWQgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGUuZy4gb3V0LW9mLWJvdW5kcywgdXNlLWFmdGVyLWZyZWUsIG9yIGRvdWJsZS1mcmVlKSBhcmUgbW9uaXRvcmVkIGJ5IHN0YW5kYXJkIEtBU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnZlcnRzIHBhZ2UgYWxsb2NhdGlvbnMgdmlhIGdldF96ZXJvZWRfcGFnZSgpIGFuZCBmcmVlX3BhZ2UoKSB0byBzbGFiIGFsbG9jYXRpb25zIHZpYSBremFsbG9jKCkva3phbGxvY19vYmooKSBhbmQga2ZyZWUoKSBhY3Jvc3MgczM5MCBLVk0gY29kZSAoaW50ZXJjZXB0LmMsIGludGVycnVwdC5jLCBwcml2LmMsIHMzOTAuYykuIFxcblxcblNpbmNlIGt6YWxsb2Mva3phbGxvY19vYmogemVyby1pbml0aWFsaXplcyB0aGUgbWVtb3J5IGlkZW50aWNhbGx5IHRvIGdldF96ZXJvZWRfcGFnZSgpLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgY29uZGl0aW9uYWwgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBkYXRhLCBvciB1bmluaXRpYWxpemVkIGluZm8tbGVha3MgdG8gdXNlcnNwYWNlL2d1ZXN0IGFyZSBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIHNsYWItcmVsYXRlZCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoZS5nLiBvdXQtb2YtYm91bmRzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgZG91YmxlLWZyZWUpIGFyZSBtb25pdG9yZWQgYnkgc3RhbmRhcmQgS0FTQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowcbhth[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 19:00:50 +0000 UTC FinishedAt: 2026-09-02 19:04:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "cee9395acd8043be0644b25c34bfa86623f2b935", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "cee9395acd8043be0644b25c34bfa86623f2b935", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "c6c52c71-832c-4b9a-af45-70e272003c20" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "handle_sthyi", "kvm_s390_handle_b2", "kvm_arch_init_vm", "kvm_s390_vcpu_setup_cmma" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hhbmRsZV9zdGh5aSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfYjImIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb252ZXJ0cyBwYWdlIGFsbG9jYXRpb25zIHZpYSBnZXRfemVyb2VkX3BhZ2UoKSBhbmQgZnJlZV9wYWdlKCkgdG8gc2xhYiBhbGxvY2F0aW9ucyB2aWEga3phbGxvYygpL2t6YWxsb2Nfb2JqKCkgYW5kIGtmcmVlKCkgYWNyb3NzIHMzOTAgS1ZNIGNvZGUgKGludGVyY2VwdC5jLCBpbnRlcnJ1cHQuYywgcHJpdi5jLCBzMzkwLmMpLiBcblxuU2luY2Uga3phbGxvYy9remFsbG9jX29iaiB6ZXJvLWluaXRpYWxpemVzIHRoZSBtZW1vcnkgaWRlbnRpY2FsbHkgdG8gZ2V0X3plcm9lZF9wYWdlKCksIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBjb25kaXRpb25hbCBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIHVuaW5pdGlhbGl6ZWQgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UvZ3Vlc3QgYXJlIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgc2xhYi1yZWxhdGVkIG1lbW9yeSBzYWZldHkgaXNzdWVzIChlLmcuIG91dC1vZi1ib3VuZHMsIHVzZS1hZnRlci1mcmVlLCBvciBkb3VibGUtZnJlZSkgYXJlIG1vbml0b3JlZCBieSBzdGFuZGFyZCBLQVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBwYWdlLWxldmVsIG1lbW9yeSBhbGxvY2F0aW9ucyAoZ2V0X3plcm9lZF9wYWdlL2ZyZWVfcGFnZSkgdG8gc2xhYiBhbGxvY2F0aW9ucyAoa3phbGxvYy9rZnJlZSkgaW4gS1ZNIG9uIHMzOTAgZm9yIGd1ZXN0IGludGVyY2VwdCBoYW5kbGluZyAoU1RIWUksIFNUU0kpLCBWTSBpbml0aWFsaXphdGlvbiAoc2llX3BhZ2UyKSwgR0lCIHNldHVwLCBhbmQgVkNQVSBDTU1BIHNldHVwLiBUaGVzZSBhZmZlY3QgcmVhY2hhYmxlIEtWTSBleGVjdXRpb24gcGF0aHMgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9uIHMzOTAsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDZkZmNlMDdjODlhZWI3ZDZjYmRlYzhjNWFiNWM4NWYyNjk5MzY2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTk6MDI6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jXG5pbmRleCBjYTEyMDVkZmFjOGIwLi5hYWY5ODI4ZDFmNDRkIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcbkBAIC0xMSw2ICYjNDM7MTEsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGFnZW1hcC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9hc20tb2Zmc2V0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2lycS5oXHUwMDNlXG5AQCAtNDM4LDEzICYjNDM7NDM5LDEzIEBAIGludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0aWYgKCFrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpIFx1MDAyNlx1MDAyNiAoYWRkciBcdTAwMjYgflBBR0VfTUFTSykpXG4gXHRcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pO1xuIFxuLVx0c2N0bnMgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpO1xuJiM0MztcdHNjdG5zID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIXNjdG5zKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGNjID0gc3RoeWlfZmlsbChzY3RucywgXHUwMDI2cmMpO1xuIFx0aWYgKGNjIFx1MDAzYyAwKSB7XG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7XG4mIzQzO1x0XHRrZnJlZShzY3Rucyk7XG4gXHRcdHJldHVybiBjYztcbiBcdH1cbiBvdXQ6XG5AQCAtNDU0LDEzICYjNDM7NDU1LDEzIEBAIGludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdHIgPSB3cml0ZV9ndWVzdCh2Y3B1LCBhZGRyLCByZWcyLCBzY3RucywgUEFHRV9TSVpFKTtcbiBcdFx0XHRpZiAocikge1xuLVx0XHRcdFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNjdG5zKTtcbiYjNDM7XHRcdFx0XHRrZnJlZShzY3Rucyk7XG4gXHRcdFx0XHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdH1cbiBcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7XG4mIzQzO1x0a2ZyZWUoc2N0bnMpO1xuIFx0dmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbcmVnMiAmIzQzOyAxXSA9IHJjO1xuIFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCBjYyk7XG4gXHRyZXR1cm4gcjtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmNcbmluZGV4IDAzODFhZTk4MTcwMzUuLjAyMDY1ZmI4ZDA1M2UgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xuQEAgLTM2ODksNyAmIzQzOzM2ODksNyBAQCB2b2lkIGt2bV9zMzkwX2dpYl9kZXN0cm95KHZvaWQpXG4gXHR9XG4gXHRjaHNjX3NnaWIoMCk7XG4gXHR1bnJlZ2lzdGVyX2FkYXB0ZXJfaW50ZXJydXB0KFx1MDAyNmdpYl9hbGVydF9pcnEpO1xuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7XG4mIzQzO1x0a2ZyZWUoZ2liKTtcbiBcdGdpYiA9IE5VTEw7XG4gfVxuIFxuQEAgLTM3MDMsNyAmIzQzOzM3MDMsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpXG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuLVx0Z2liID0gKHN0cnVjdCBrdm1fczM5MF9naWIgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4mIzQzO1x0Z2liID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpO1xuIFx0aWYgKCFnaWIpIHtcbiBcdFx0cmMgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG91dDtcbkBAIC0zNzIyLDcgJiM0MzszNzIyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxuIFx0Z2liX29yaWdpbiA9IHZpcnRfdG9fcGh5cyhnaWIpO1xuIFx0aWYgKGNoc2Nfc2dpYihnaWJfb3JpZ2luKSkge1xuIFx0XHRwcl9lcnIoXCYjMzQ7QXNzb2NpYXRpbmcgdGhlIEdJQiB3aXRoIHRoZSBBSVYgZmFjaWxpdHkgZmFpbGVkXFxuXCYjMzQ7KTtcbi1cdFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7XG4mIzQzO1x0XHRrZnJlZShnaWIpO1xuIFx0XHRnaWIgPSBOVUxMO1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gb3V0X3VucmVnX2dhbDtcbkBAIC0zNzQyLDcgJiM0MzszNzQyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxuIG91dF91bnJlZ19nYWw6XG4gXHR1bnJlZ2lzdGVyX2FkYXB0ZXJfaW50ZXJydXB0KFx1MDAyNmdpYl9hbGVydF9pcnEpO1xuIG91dF9mcmVlX2dpYjpcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpO1xuJiM0MztcdGtmcmVlKGdpYik7XG4gXHRnaWIgPSBOVUxMO1xuIG91dDpcbiBcdHJldHVybiByYztcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY1xuaW5kZXggYjNjYjJjMmMzYWE3MS4uODU2OTM5YWNmMDEyZiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmNcbkBAIC0xNCw2ICYjNDM7MTQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tX3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZ3RhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9hc20tb2Zmc2V0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2ZhY2lsaXR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY3VycmVudC5oXHUwMDNlXG5AQCAtODY5LDcgJiM0Mzs4NzAsNyBAQCBzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGludCBmYyA9ICh2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VzLnJlZ3MuZ3Byc1swXSBcdTAwMjYgMHhmMDAwMDAwMCkgXHUwMDNlXHUwMDNlIDI4O1xuIFx0aW50IHNlbDEgPSB2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VzLnJlZ3MuZ3Byc1swXSBcdTAwMjYgMHhmZjtcbiBcdGludCBzZWwyID0gdmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMV0gXHUwMDI2IDB4ZmZmZjtcbi1cdHVuc2lnbmVkIGxvbmcgbWVtID0gMDtcbiYjNDM7XHR2b2lkICptZW0gPSBOVUxMO1xuIFx0dTY0IG9wZXJhbmQyO1xuIFx0aW50IHJjID0gMDtcbiBcdHU4IGFyO1xuQEAgLTkxMSwxOSAmIzQzOzkxMiwxOSBAQCBzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdHN3aXRjaCAoZmMpIHtcbiBcdGNhc2UgMTogLyogc2FtZSBoYW5kbGluZyBmb3IgMSBhbmQgMiAqL1xuIFx0Y2FzZSAyOlxuLVx0XHRtZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiYjNDM7XHRcdG1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0XHRpZiAoIW1lbSlcbiBcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuLVx0XHRpZiAoc3RzaSgodm9pZCAqKSBtZW0sIGZjLCBzZWwxLCBzZWwyKSlcbiYjNDM7XHRcdGlmIChzdHNpKG1lbSwgZmMsIHNlbDEsIHNlbDIpKVxuIFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAzOlxuIFx0XHRpZiAoc2VsMSAhPSAyIHx8IHNlbDIgIT0gMilcbiBcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuLVx0XHRtZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiYjNDM7XHRcdG1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0XHRpZiAoIW1lbSlcbiBcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuLVx0XHRoYW5kbGVfc3RzaV8zXzJfMih2Y3B1LCAodm9pZCAqKSBtZW0pO1xuJiM0MztcdFx0aGFuZGxlX3N0c2lfM18yXzIodmNwdSwgbWVtKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIDE1OiAvKiBmYyAxNSBpcyBmdWxseSBoYW5kbGVkIGluIHVzZXJzcGFjZSAqL1xuIFx0XHRpbnNlcnRfc3RzaV91c3JfZGF0YSh2Y3B1LCBvcGVyYW5kMiwgYXIsIGZjLCBzZWwxLCBzZWwyKTtcbkBAIC05MzEsMTAgJiM0Mzs5MzIsMTAgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHJldHVybiAtRVJFTU9URTtcbiBcdH1cbiBcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4tXHRcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayksICh2b2lkICopbWVtLCBQQUdFX1NJWkUpO1xuJiM0MztcdFx0bWVtY3B5KHNpZGFfYWRkcih2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrKSwgbWVtLCBQQUdFX1NJWkUpO1xuIFx0XHRyYyA9IDA7XG4gXHR9IGVsc2Uge1xuLVx0XHRyYyA9IHdyaXRlX2d1ZXN0KHZjcHUsIG9wZXJhbmQyLCBhciwgKHZvaWQgKiltZW0sIFBBR0VfU0laRSk7XG4mIzQzO1x0XHRyYyA9IHdyaXRlX2d1ZXN0KHZjcHUsIG9wZXJhbmQyLCBhciwgbWVtLCBQQUdFX1NJWkUpO1xuIFx0fVxuIFx0aWYgKHJjKSB7XG4gXHRcdHJjID0ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7XG5AQCAtOTQ1LDE0ICYjNDM7OTQ2LDE0IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRyYyA9IC1FUkVNT1RFO1xuIFx0fVxuIFx0dHJhY2Vfa3ZtX3MzOTBfaGFuZGxlX3N0c2kodmNwdSwgZmMsIHNlbDEsIHNlbDIsIG9wZXJhbmQyKTtcbi1cdGZyZWVfcGFnZShtZW0pO1xuJiM0MztcdGtmcmVlKG1lbSk7XG4gXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDApO1xuIFx0dmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMF0gPSAwO1xuIFx0cmV0dXJuIHJjO1xuIG91dF9ub19kYXRhOlxuIFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAzKTtcbiBvdXQ6XG4tXHRmcmVlX3BhZ2UobWVtKTtcbiYjNDM7XHRrZnJlZShtZW0pO1xuIFx0cmV0dXJuIHJjO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY1xuaW5kZXggYjA4MzllODg3MjIxZS4uOGVjNTA1MDYwZjhjMCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNcbkBAIC0zMjczLDggJiM0MzszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcbiBcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7XG4tXHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIgPVxuLVx0ICAgICAoc3RydWN0IHNpZV9wYWdlMiAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4mIzQzO1x0a3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyID0ga3phbGxvY19vYmooKmt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMixcbiYjNDM7XHRcdFx0XHRcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4gXHRpZiAoIWt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMilcbiBcdFx0Z290byBvdXRfZXJyO1xuIFxuQEAgLTMzNjksNyAmIzQzOzMzNjksNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcbiBcdHJldHVybiAwO1xuIG91dF9lcnI6XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyKTtcbiYjNDM7XHRrZnJlZShrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xuIFx0ZGVidWdfdW5yZWdpc3Rlcihrdm0tXHUwMDNlYXJjaC5kYmYpO1xuIFx0c2NhX2Rpc3Bvc2Uoa3ZtKTtcbiBcdEtWTV9FVkVOVCgzLCBcJiMzNDtjcmVhdGlvbiBvZiB2bSBmYWlsZWQ6ICVkXCYjMzQ7LCByYyk7XG5AQCAtMzQyNyw3ICYjNDM7MzQyNyw3IEBAIHZvaWQga3ZtX2FyY2hfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4gXHRcdG1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnB2Lm1tdV9ub3RpZmllciwga3ZtLVx1MDAzZW1tKTtcbiBcbiBcdGRlYnVnX3VucmVnaXN0ZXIoa3ZtLVx1MDAzZWFyY2guZGJmKTtcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xuJiM0MztcdGtmcmVlKGt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMik7XG4gXHRrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKGt2bSk7XG4gXHRrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKGt2bSk7XG4gXHRrdm1fczM5MF92c2llX2Rlc3Ryb3koa3ZtKTtcbkBAIC0zNjU3LDEzICYjNDM7MzY1NywxMyBAQCBzdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gdm9pZCBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8pXG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylwaHlzX3RvX3ZpcnQodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbykpO1xuJiM0MztcdFx0a2ZyZWUocGh5c190b192aXJ0KHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8pKTtcbiBcdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8gPSAwO1xuIH1cbiBcbiBpbnQga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR2b2lkICpjYnJsb19wYWdlID0gKHZvaWQgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiYjNDM7XHR2b2lkICpjYnJsb19wYWdlID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXG4gXHRpZiAoIWNicmxvX3BhZ2UpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hhbmRsZV9zdGh5aSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfYjImIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBwYWdlLWxldmVsIG1lbW9yeSBhbGxvY2F0aW9ucyAoZ2V0X3plcm9lZF9wYWdlL2ZyZWVfcGFnZSkgdG8gc2xhYiBhbGxvY2F0aW9ucyAoa3phbGxvYy9rZnJlZSkgaW4gS1ZNIG9uIHMzOTAgZm9yIGd1ZXN0IGludGVyY2VwdCBoYW5kbGluZyAoU1RIWUksIFNUU0kpLCBWTSBpbml0aWFsaXphdGlvbiAoc2llX3BhZ2UyKSwgR0lCIHNldHVwLCBhbmQgVkNQVSBDTU1BIHNldHVwLiBUaGVzZSBhZmZlY3QgcmVhY2hhYmxlIEtWTSBleGVjdXRpb24gcGF0aHMgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9uIHMzOTAsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDZkZmNlMDdjODlhZWI3ZDZjYmRlYzhjNWFiNWM4NWYyNjk5MzY2ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTk6MDI6NTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMKaW5kZXggY2ExMjA1ZGZhYzhiMC4uYWFmOTgyOGQxZjQ0ZCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYwpAQCAtMTEsNiAmIzQzOzExLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGFnZW1hcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiAKICNpbmNsdWRlICZsdDthc20vYXNtLW9mZnNldHMuaCZndDsKICNpbmNsdWRlICZsdDthc20vaXJxLmgmZ3Q7CkBAIC00MzgsMTMgJiM0Mzs0MzksMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKCFrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpICZhbXA7JmFtcDsgKGFkZHIgJmFtcDsgflBBR0VfTUFTSykpCiAJCXJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pOwogCi0Jc2N0bnMgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwlzY3RucyA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghc2N0bnMpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJY2MgPSBzdGh5aV9maWxsKHNjdG5zLCAmYW1wO3JjKTsKIAlpZiAoY2MgJmx0OyAwKSB7Ci0JCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CQlrZnJlZShzY3Rucyk7CiAJCXJldHVybiBjYzsKIAl9CiBvdXQ6CkBAIC00NTQsMTMgJiM0Mzs0NTUsMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCX0gZWxzZSB7CiAJCQlyID0gd3JpdGVfZ3Vlc3QodmNwdSwgYWRkciwgcmVnMiwgc2N0bnMsIFBBR0VfU0laRSk7CiAJCQlpZiAocikgewotCQkJCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CQkJCWtmcmVlKHNjdG5zKTsKIAkJCQlyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByKTsKIAkJCX0KIAkJfQogCX0KIAotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CWtmcmVlKHNjdG5zKTsKIAl2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzW3JlZzIgJiM0MzsgMV0gPSByYzsKIAlrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTsKIAlyZXR1cm4gcjsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYwppbmRleCAwMzgxYWU5ODE3MDM1Li4wMjA2NWZiOGQwNTNlIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jCkBAIC0zNjg5LDcgJiM0MzszNjg5LDcgQEAgdm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKQogCX0KIAljaHNjX3NnaWIoMCk7CiAJdW5yZWdpc3Rlcl9hZGFwdGVyX2ludGVycnVwdCgmYW1wO2dpYl9hbGVydF9pcnEpOwotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpOwomIzQzOwlrZnJlZShnaWIpOwogCWdpYiA9IE5VTEw7CiB9CiAKQEAgLTM3MDMsNyAmIzQzOzM3MDMsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpCiAJCWdvdG8gb3V0OwogCX0KIAotCWdpYiA9IChzdHJ1Y3Qga3ZtX3MzOTBfZ2liICopZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpOwomIzQzOwlnaWIgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiAJaWYgKCFnaWIpIHsKIAkJcmMgPSAtRU5PTUVNOwogCQlnb3RvIG91dDsKQEAgLTM3MjIsNyAmIzQzOzM3MjIsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpCiAJZ2liX29yaWdpbiA9IHZpcnRfdG9fcGh5cyhnaWIpOwogCWlmIChjaHNjX3NnaWIoZ2liX29yaWdpbikpIHsKIAkJcHJfZXJyKCYjMzQ7QXNzb2NpYXRpbmcgdGhlIEdJQiB3aXRoIHRoZSBBSVYgZmFjaWxpdHkgZmFpbGVkXG4mIzM0Oyk7Ci0JCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpOwomIzQzOwkJa2ZyZWUoZ2liKTsKIAkJZ2liID0gTlVMTDsKIAkJcmMgPSAtRUlPOwogCQlnb3RvIG91dF91bnJlZ19nYWw7CkBAIC0zNzQyLDcgJiM0MzszNzQyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKQogb3V0X3VucmVnX2dhbDoKIAl1bnJlZ2lzdGVyX2FkYXB0ZXJfaW50ZXJydXB0KCZhbXA7Z2liX2FsZXJ0X2lycSk7CiBvdXRfZnJlZV9naWI6Ci0JZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7CiYjNDM7CWtmcmVlKGdpYik7CiAJZ2liID0gTlVMTDsKIG91dDoKIAlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYwppbmRleCBiM2NiMmMyYzNhYTcxLi44NTY5MzlhY2YwMTJmIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmMKQEAgLTE0LDYgJiM0MzsxNCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbW1fdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZ3RhYmxlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9hc20tb2Zmc2V0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9mYWNpbGl0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9jdXJyZW50LmgmZ3Q7CkBAIC04NjksNyAmIzQzOzg3MCw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWludCBmYyA9ICh2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzWzBdICZhbXA7IDB4ZjAwMDAwMDApICZndDsmZ3Q7IDI4OwogCWludCBzZWwxID0gdmNwdS0mZ3Q7cnVuLSZndDtzLnJlZ3MuZ3Byc1swXSAmYW1wOyAweGZmOwogCWludCBzZWwyID0gdmNwdS0mZ3Q7cnVuLSZndDtzLnJlZ3MuZ3Byc1sxXSAmYW1wOyAweGZmZmY7Ci0JdW5zaWduZWQgbG9uZyBtZW0gPSAwOwomIzQzOwl2b2lkICptZW0gPSBOVUxMOwogCXU2NCBvcGVyYW5kMjsKIAlpbnQgcmMgPSAwOwogCXU4IGFyOwpAQCAtOTExLDE5ICYjNDM7OTEyLDE5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXN3aXRjaCAoZmMpIHsKIAljYXNlIDE6IC8qIHNhbWUgaGFuZGxpbmcgZm9yIDEgYW5kIDIgKi8KIAljYXNlIDI6Ci0JCW1lbSA9IGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwkJbWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJCWlmICghbWVtKQogCQkJZ290byBvdXRfbm9fZGF0YTsKLQkJaWYgKHN0c2koKHZvaWQgKikgbWVtLCBmYywgc2VsMSwgc2VsMikpCiYjNDM7CQlpZiAoc3RzaShtZW0sIGZjLCBzZWwxLCBzZWwyKSkKIAkJCWdvdG8gb3V0X25vX2RhdGE7CiAJCWJyZWFrOwogCWNhc2UgMzoKIAkJaWYgKHNlbDEgIT0gMiB8fCBzZWwyICE9IDIpCiAJCQlnb3RvIG91dF9ub19kYXRhOwotCQltZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKJiM0MzsJCW1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCQlpZiAoIW1lbSkKIAkJCWdvdG8gb3V0X25vX2RhdGE7Ci0JCWhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsICh2b2lkICopIG1lbSk7CiYjNDM7CQloYW5kbGVfc3RzaV8zXzJfMih2Y3B1LCBtZW0pOwogCQlicmVhazsKIAljYXNlIDE1OiAvKiBmYyAxNSBpcyBmdWxseSBoYW5kbGVkIGluIHVzZXJzcGFjZSAqLwogCQlpbnNlcnRfc3RzaV91c3JfZGF0YSh2Y3B1LCBvcGVyYW5kMiwgYXIsIGZjLCBzZWwxLCBzZWwyKTsKQEAgLTkzMSwxMCAmIzQzOzkzMiwxMCBAQCBzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJcmV0dXJuIC1FUkVNT1RFOwogCX0KIAlpZiAoa3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSkgewotCQltZW1jcHkoc2lkYV9hZGRyKHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrKSwgKHZvaWQgKiltZW0sIFBBR0VfU0laRSk7CiYjNDM7CQltZW1jcHkoc2lkYV9hZGRyKHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrKSwgbWVtLCBQQUdFX1NJWkUpOwogCQlyYyA9IDA7CiAJfSBlbHNlIHsKLQkJcmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsICh2b2lkICopbWVtLCBQQUdFX1NJWkUpOwomIzQzOwkJcmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTsKIAl9CiAJaWYgKHJjKSB7CiAJCXJjID0ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7CkBAIC05NDUsMTQgJiM0Mzs5NDYsMTQgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCXJjID0gLUVSRU1PVEU7CiAJfQogCXRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7Ci0JZnJlZV9wYWdlKG1lbSk7CiYjNDM7CWtmcmVlKG1lbSk7CiAJa3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAwKTsKIAl2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzWzBdID0gMDsKIAlyZXR1cm4gcmM7CiBvdXRfbm9fZGF0YToKIAlrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDMpOwogb3V0OgotCWZyZWVfcGFnZShtZW0pOwomIzQzOwlrZnJlZShtZW0pOwogCXJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMKaW5kZXggYjA4MzllODg3MjIxZS4uOGVjNTA1MDYwZjhjMCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jCkBAIC0zMjczLDggJiM0MzszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpCiAJCWdvdG8gb3V0X2VycjsKIAogCUJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7Ci0Ja3ZtLSZndDthcmNoLnNpZV9wYWdlMiA9Ci0JICAgICAoc3RydWN0IHNpZV9wYWdlMiAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiYjNDM7CWt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIgPSBremFsbG9jX29iaigqa3ZtLSZndDthcmNoLnNpZV9wYWdlMiwKJiM0MzsJCQkJCSAgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiAJaWYgKCFrdm0tJmd0O2FyY2guc2llX3BhZ2UyKQogCQlnb3RvIG91dF9lcnI7CiAKQEAgLTMzNjksNyAmIzQzOzMzNjksNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSkKIAogCXJldHVybiAwOwogb3V0X2VycjoKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLSZndDthcmNoLnNpZV9wYWdlMik7CiYjNDM7CWtmcmVlKGt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIpOwogCWRlYnVnX3VucmVnaXN0ZXIoa3ZtLSZndDthcmNoLmRiZik7CiAJc2NhX2Rpc3Bvc2Uoa3ZtKTsKIAlLVk1fRVZFTlQoMywgJiMzNDtjcmVhdGlvbiBvZiB2bSBmYWlsZWQ6ICVkJiMzNDssIHJjKTsKQEAgLTM0MjcsNyAmIzQzOzM0MjcsNyBAQCB2b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKQogCQltbXVfbm90aWZpZXJfdW5yZWdpc3RlcigmYW1wO2t2bS0mZ3Q7YXJjaC5wdi5tbXVfbm90aWZpZXIsIGt2bS0mZ3Q7bW0pOwogCiAJZGVidWdfdW5yZWdpc3Rlcihrdm0tJmd0O2FyY2guZGJmKTsKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLSZndDthcmNoLnNpZV9wYWdlMik7CiYjNDM7CWtmcmVlKGt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIpOwogCWt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMoa3ZtKTsKIAlrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKGt2bSk7CiAJa3ZtX3MzOTBfdnNpZV9kZXN0cm95KGt2bSk7CkBAIC0zNjU3LDEzICYjNDM7MzY1NywxMyBAQCBzdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB2b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlpZiAodmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2stJmd0O2NicmxvKQotCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbykpOwomIzQzOwkJa2ZyZWUocGh5c190b192aXJ0KHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbykpOwogCXZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbyA9IDA7CiB9CiAKIGludCBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXZvaWQgKmNicmxvX3BhZ2UgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwl2b2lkICpjYnJsb19wYWdlID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAKIAlpZiAoIWNicmxvX3BhZ2UpCiAJCXJldHVybiAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQ1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogczM5MCBLVk0gTWVtb3J5IEFsbG9jYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBkZXRlcm1pbmUgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBpbnZvbHZlIHN3YXBwaW5nIGBnZXRfemVyb2VkX3BhZ2VgIGFuZCBgZnJlZV9wYWdlYCB3aXRoIGBremFsbG9jYCBhbmQgYGtmcmVlYCB3aXRoaW4gdGhlIHMzOTAgS1ZNIGNvZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBzZWVpbmcgaXQgaW4gYGludGVyY2VwdC5jYCwgYGludGVycnVwdC5jYCwgYHByaXYuY2AsIGFuZCBgczM5MC5jYC4KCkFoYSwgaG9sZCBvbi4gVGhpcyBpcyBpbnRlcmVzdGluZy4gYGdldF96ZXJvZWRfcGFnZWAgaXMgYSBkaXJlY3QgYnVkZHkgYWxsb2NhdG9yIGNhbGwsIGdyYWJiaW5nIGEgc2luZ2xlIHBhZ2UuIGBremFsbG9jKFBBR0VfU0laRSwgLi4uKWAgdXNlcyB0aGUgc2xhYiBhbGxvY2F0b3IsIGVmZmVjdGl2ZWx5IGEgYGttYWxsb2MtNGtgIGFsbG9jYXRpb24uIEkmIzM5O20gc2VlaW5nIHRoaXMgd2l0aCBgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQWAgZmxhZ3MgaW4gY2FsbHMgbGlrZSBga3ZtX3MzOTBfZ2liX2luaXRgIGFuZCBga3ZtX2FyY2hfaW5pdF92bWAsIHdoaWNoIHRoZW4gdXRpbGl6ZSBgdmlydF90b19waHlzYCB0byBnZXQgdGhlIHBoeXNpY2FsIGFkZHJlc3MuIEFuZCBzaW1pbGFyIGxvZ2ljIGluIGBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWFgIGFuZCBga3ZtX3MzOTBfdmNwdV91bnNldHVwX2NtbWFgLgoKVGhlIHNsYWIgYWxsb2NhdG9yIGlzIGluZGVlZCBwYWdlLWFsaWduZWQgKDQwOTYtYnl0ZSBzbGFiIG9iamVjdHMpLiBTbywgdGhlIHF1ZXN0aW9uIGlzICp3aHkqIHRoaXMgY2hhbmdlPyBJcyB0aGlzIHB1cmVseSByZWZhY3RvcmluZywgYSBjbGVhbnVwLCBvciBkb2VzIGl0ICphY3R1YWxseSogYWx0ZXIgYmVoYXZpb3I/IElzIGl0IGFuIG9wdGltaXphdGlvbiBhaW1lZCBhdCBzbGFiIGFsbG9jYXRpb24sIG9yIHNvbWUgc3VidGxlIHNlbWFudGljIGNoYW5nZT8gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgaW5zdHJ1Y3Rpb24gZm9yIGRlY2lkaW5nIGlmIHRoZSBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLgoKUmlnaHQsIHNvIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjb25zdGFudCBjaGFuZ2VzIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QsIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpYyBoYXJkd2FyZS1kZXBlbmRlbnQgZHJpdmVycywgYW5kIHRlYXItZG93biBjYWxsYmFja3MgYXJlIGFsbCBvdXQuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciBzMzkwIEtWTS4gQ2FuIHRoaXMgYmUgZWZmZWN0aXZlbHkgZnV6emVkLCBvciBydW4gd2l0aGluIFFFTVU/IFllcywgczM5MCBLVk0gaXMgdGhlIEtWTSBoeXBlcnZpc29yIG9uIHRoZSBzMzkweCBhcmNoaXRlY3R1cmUsIEkga25vdyB0aGF0LiBCdXQsIGNhbiBpdCBiZSBmdXp6IHRlc3RlZD8gUUVNVSBlbXVsYXRlcyBzMzkweCAocWVtdS1zeXN0ZW0tczM5MHgpLCBidXQgSSB0aGluayBLVk0gaW5zaWRlIFFFTVUgb24gczM5MHggbGlrZWx5IG5lZWRzIG5lc3RlZCBLVk0gb3IgYWN0dWFsIGhhcmR3YXJlLiBTeXprYWxsZXIgZGVmaW5pdGVseSBmdXp6ZXMgczM5MHggTGludXgga2VybmVsczsgZG9lcyBpdCBhbHNvIHRlc3QgczM5MCBLVk0gaWYgaXQgcnVucyBvbiBzMzkweD8gT3IgaXMgaXQgb25seSBUQ0c/CgpUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgYWRkaW5nIG9yIG1vZGlmeWluZyBsb2dpYywgb3IgaWYgdGhpcyBpcyBqdXN0IGEgbWVjaGFuaWNhbCByZXBsYWNlbWVudCBvZiB0aGUgYWxsb2NhdGlvbiByb3V0aW5lcy4gV2hhdCB3YXMgdGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgY2hhbmdlPyBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBnaXQgbG9nIGFuZCBtYXliZSBzZWFyY2ggdGhlIHRyZWUgZm9yIGNvbnRleHQgdG8gc2VlIHdoYXQgdGhlIGF1dGhvciB3YXMgdGhpbmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3phbGxvY19vYmomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9iYXNlLmM9MzQ3PWludCBhcHBsZGF0YV9yZWdpc3Rlcl9vcHMoc3RydWN0IGFwcGxkYXRhX29wcyAqb3BzKVxuLS1cbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9iYXNlLmMtMzUxLVxuYXJjaC9zMzkwL2FwcGxkYXRhL2FwcGxkYXRhX2Jhc2UuYzozNTI6XHRvcHMtXHUwMDNlY3RsX3RhYmxlID0ga3phbGxvY19vYmpzKHN0cnVjdCBjdGxfdGFibGUsIDEpO1xuYXJjaC9zMzkwL2FwcGxkYXRhL2FwcGxkYXRhX2Jhc2UuYy0zNTMtXHRpZiAoIW9wcy1cdTAwM2VjdGxfdGFibGUpXG4tLVxuYXJjaC9zMzkwL2FwcGxkYXRhL2FwcGxkYXRhX21lbS5jPTEyOT1zdGF0aWMgaW50IF9faW5pdCBhcHBsZGF0YV9tZW1faW5pdCh2b2lkKVxuLS1cbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9tZW0uYy0xMzItXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbWVtLmM6MTMzOlx0b3BzLmRhdGEgPSBremFsbG9jX29iaihzdHJ1Y3QgYXBwbGRhdGFfbWVtX2RhdGEpO1xuYXJjaC9zMzkwL2FwcGxkYXRhL2FwcGxkYXRhX21lbS5jLTEzNC1cdGlmICghb3BzLmRhdGEpXG4tLVxuYXJjaC9zMzkwL2FwcGxkYXRhL2FwcGxkYXRhX25ldF9zdW0uYz0xMzE9c3RhdGljIGludCBfX2luaXQgYXBwbGRhdGFfbmV0X2luaXQodm9pZClcbi0tXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbmV0X3N1bS5jLTEzNC1cbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9uZXRfc3VtLmM6MTM1Olx0b3BzLmRhdGEgPSBremFsbG9jX29iaihzdHJ1Y3QgYXBwbGRhdGFfbmV0X3N1bV9kYXRhKTtcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9uZXRfc3VtLmMtMTM2LVx0aWYgKCFvcHMuZGF0YSlcbi0tXG5hcmNoL3MzOTAvaHlwZnMvaHlwZnNfc3BycC5jPTY3PXN0YXRpYyBpbnQgX19oeXBmc19zcHJwX2lvY3RsKHZvaWQgX191c2VyICp1c2VyX2FyZWEpXG4tLVxuYXJjaC9zMzkwL2h5cGZzL2h5cGZzX3NwcnAuYy03Ni1cdGRhdGEgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMKTtcbmFyY2gvczM5MC9oeXBmcy9oeXBmc19zcHJwLmM6Nzc6XHRkaWFnMzA0ID0ga3phbGxvY19vYmooKmRpYWczMDQpO1xuYXJjaC9zMzkwL2h5cGZzL2h5cGZzX3NwcnAuYy03OC1cdGlmICghZGF0YSB8fCAhZGlhZzMwNClcbi0tXG5hcmNoL3MzOTAvaHlwZnMvaW5vZGUuYz0yOTE9c3RhdGljIGludCBoeXBmc19pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmFyY2gvczM5MC9oeXBmcy9pbm9kZS5jLTI5NC1cbmFyY2gvczM5MC9oeXBmcy9pbm9kZS5jOjI5NTpcdHNiaSA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBoeXBmc19zYl9pbmZvKTtcbmFyY2gvczM5MC9oeXBmcy9pbm9kZS5jLTI5Ni1cdGlmICghc2JpKVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9pZGFscy5oPTg4PXN0YXRpYyBpbmxpbmUgaW50IHNldF9ub3JtYWxpemVkX2NkYShzdHJ1Y3QgY2N3MSAqY2N3LCB2b2lkICp2YWRkcilcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vaWRhbHMuaC05Ni1cdGlmIChucmlkYXdzIFx1MDAzZSAwKSB7XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vaWRhbHMuaDo5NzpcdFx0aWRhbCA9IGt6YWxsb2Nfb2JqcygqaWRhbCwgbnJpZGF3cywgR0ZQX0FUT01JQyB8IEdGUF9ETUEpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2lkYWxzLmgtOTgtXHRcdGlmICghaWRhbClcbi0tXG5hcmNoL3MzOTAva2VybmVsL2NlcnRfc3RvcmUuYz0zMTU9c3RhdGljIGludCBpbnZhbGlkYXRlX2tleXJpbmdfa2V5cyhzdHJ1Y3Qga2V5ICprZXlyaW5nKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvY2VydF9zdG9yZS5jLTMyNC1cdG51bV9rZXlzID0ga2V5cmluZ19wYXlsb2FkX2xlbiAvIHNpemVvZihrZXlfc2VyaWFsX3QpO1xuYXJjaC9zMzkwL2tlcm5lbC9jZXJ0X3N0b3JlLmM6MzI1Olx0a2V5X2FycmF5ID0ga3phbGxvY19vYmpzKGtleV9zZXJpYWxfdCwgbnVtX2tleXMpO1xuYXJjaC9zMzkwL2tlcm5lbC9jZXJ0X3N0b3JlLmMtMzI2LVx0aWYgKCFrZXlfYXJyYXkpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jPTMwNz1zdGF0aWMgZGVidWdfaW5mb190ICpkZWJ1Z19pbmZvX2FsbG9jKGNvbnN0IGNoYXIgKm5hbWUsIGludCBwYWdlc19wZXJfYXJlYSxcbi0tXG5hcmNoL3MzOTAva2VybmVsL2RlYnVnLmMtMzE2LVx0XHRnb3RvIGZhaWxfbWFsbG9jX3JjO1xuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jOjMxNzpcdHJjLVx1MDAzZWFjdGl2ZV9lbnRyaWVzID0ga3phbGxvY19vYmpzKGludCwgbnJfYXJlYXMpO1xuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jLTMxOC1cdGlmICghcmMtXHUwMDNlYWN0aXZlX2VudHJpZXMpXG5hcmNoL3MzOTAva2VybmVsL2RlYnVnLmMtMzE5LVx0XHRnb3RvIGZhaWxfbWFsbG9jX2FjdGl2ZV9lbnRyaWVzO1xuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jOjMyMDpcdHJjLVx1MDAzZWFjdGl2ZV9wYWdlcyA9IGt6YWxsb2Nfb2JqcyhpbnQsIG5yX2FyZWFzKTtcbmFyY2gvczM5MC9rZXJuZWwvZGVidWcuYy0zMjEtXHRpZiAoIXJjLVx1MDAzZWFjdGl2ZV9wYWdlcylcbi0tXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jPTIyPXN0YXRpYyBpbnQgZ3NfZW5hYmxlKHZvaWQpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ndWFyZGVkX3N0b3JhZ2UuYy0yNi1cdGlmICghY3VycmVudC1cdTAwM2V0aHJlYWQuZ3NfY2IpIHtcbmFyY2gvczM5MC9rZXJuZWwvZ3VhcmRlZF9zdG9yYWdlLmM6Mjc6XHRcdGdzX2NiID0ga3phbGxvY19vYmooKmdzX2NiKTtcbmFyY2gvczM5MC9rZXJuZWwvZ3VhcmRlZF9zdG9yYWdlLmMtMjgtXHRcdGlmICghZ3NfY2IpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ndWFyZGVkX3N0b3JhZ2UuYz01Mj1zdGF0aWMgaW50IGdzX3NldF9iY19jYihzdHJ1Y3QgZ3NfY2IgX191c2VyICp1X2dzX2NiKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvZ3VhcmRlZF9zdG9yYWdlLmMtNTctXHRpZiAoIWdzX2NiKSB7XG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jOjU4Olx0XHRnc19jYiA9IGt6YWxsb2Nfb2JqKCpnc19jYik7XG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jLTU5LVx0XHRpZiAoIWdzX2NiKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvb3NfaW5mby5jPTE0ND1zdGF0aWMgdm9pZCBvc19pbmZvX29sZF9pbml0KHZvaWQpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9vc19pbmZvLmMtMTU2LVx0XHRnb3RvIGZhaWw7XG5hcmNoL3MzOTAva2VybmVsL29zX2luZm8uYzoxNTc6XHRvc19pbmZvX29sZCA9IGt6YWxsb2Nfb2JqKCpvc19pbmZvX29sZCk7XG5hcmNoL3MzOTAva2VybmVsL29zX2luZm8uYy0xNTgtXHRpZiAoIW9zX2luZm9fb2xkKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX2NmLmM9MjUxPXN0YXRpYyBpbnQgY3B1bV9jZl9hbGxvY19jcHUoaW50IGNwdSwgdW5zaWduZWQgaW50IG51bSlcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jLTI2NC1cdGlmICghY3B1aHcpIHtcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX2NmLmM6MjY1Olx0XHRjcHVodyA9IGt6YWxsb2Nfb2JqKCpjcHVodyk7XG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jLTI2Ni1cdFx0aWYgKGNwdWh3KSB7XG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYz0xNjY0PXN0YXRpYyBsb25nIGNmc2V0X2lvY3RsX3N0YXJ0KHVuc2lnbmVkIGxvbmcgYXJnLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jLTE2ODktXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jOjE2OTA6XHRwcmVxID0ga3phbGxvY19vYmooKnByZXEpO1xuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYy0xNjkxLVx0aWYgKCFwcmVxKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX3NmLmM9MTU5Mj1zdGF0aWMgdm9pZCAqYXV4X2J1ZmZlcl9zZXR1cChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHZvaWQgKipwYWdlcyxcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9zZi5jLTE2MTUtXHQvKiBBbGxvY2F0ZSBhdXhfYnVmZmVyIHN0cnVjdCBmb3IgdGhlIGV2ZW50ICovXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9zZi5jOjE2MTY6XHRhdXggPSBremFsbG9jX29iaihzdHJ1Y3QgYXV4X2J1ZmZlcik7XG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9zZi5jLTE2MTctXHRpZiAoIWF1eClcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmM9MjQ0PXN0YXRpYyBpbnQgcGFpX2FsbG9jX2NwdShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBjcHUpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jLTI2MS1cdFx0cmMgPSAtRU5PTUVNO1xuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jOjI2MjpcdFx0Y3B1bXAgPSBremFsbG9jX29iaigqY3B1bXApO1xuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jLTI2My1cdFx0aWYgKCFjcHVtcClcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmM9MzE5PXN0YXRpYyBpbnQgcGFpX2FsbG9jKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudClcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmMtMzIzLVxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jOjMyNDpcdG1hc2twdHIgPSBremFsbG9jX29iaigqbWFza3B0cik7XG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmMtMzI1LVx0aWYgKCFtYXNrcHRyKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9wYWkuYz0xMDc3PXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICogX19pbml0IGF0dHJfZXZlbnRfaW5pdF9vbmUoaW50IG51bSxcbi0tXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmMtMTA4Mi1cbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9wYWkuYzoxMDgzOlx0cGEgPSBremFsbG9jX29iaigqcGEpO1xuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jLTEwODQtXHRpZiAoIXBhKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmM9NzQxPXN0YXRpYyBpbnQgczM5MF9nc19jYl9zZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXJnZXQsXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy03NTEtXHRpZiAoIXRhcmdldC1cdTAwM2V0aHJlYWQuZ3NfY2IpIHtcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmM6NzUyOlx0XHRkYXRhID0ga3phbGxvY19vYmooKmRhdGEpO1xuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy03NTMtXHRcdGlmICghZGF0YSlcbi0tXG5hcmNoL3MzOTAva2VybmVsL3B0cmFjZS5jPTc5Mz1zdGF0aWMgaW50IHMzOTBfZ3NfYmNfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmMtODAyLVx0aWYgKCFkYXRhKSB7XG5hcmNoL3MzOTAva2VybmVsL3B0cmFjZS5jOjgwMzpcdFx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmMtODA0LVx0XHRpZiAoIWRhdGEpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYz04NTI9c3RhdGljIGludCBzMzkwX3J1bnRpbWVfaW5zdHJfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxuLS1cbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmMtODYzLVx0aWYgKCF0YXJnZXQtXHUwMDNldGhyZWFkLnJpX2NiKSB7XG5hcmNoL3MzOTAva2VybmVsL3B0cmFjZS5jOjg2NDpcdFx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmMtODY1LVx0XHRpZiAoIWRhdGEpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ydW50aW1lX2luc3RyLmM9NzA9U1lTQ0FMTF9ERUZJTkUyKHMzOTBfcnVudGltZV9pbnN0ciwgaW50LCBjb21tYW5kLCBpbnQsIHNpZ251bSlcbi0tXG5hcmNoL3MzOTAva2VybmVsL3J1bnRpbWVfaW5zdHIuYy04NS1cdGlmICghY3VycmVudC1cdTAwM2V0aHJlYWQucmlfY2IpIHtcbmFyY2gvczM5MC9rZXJuZWwvcnVudGltZV9pbnN0ci5jOjg2Olx0XHRjYiA9IGt6YWxsb2Nfb2JqKCpjYik7XG5hcmNoL3MzOTAva2VybmVsL3J1bnRpbWVfaW5zdHIuYy04Ny1cdFx0aWYgKCFjYilcbi0tXG5hcmNoL3MzOTAva2VybmVsL3NtcC5jPTExMjE9aW50IF9fcmVmIHNtcF9yZXNjYW5fY3B1cyhib29sIGVhcmx5KVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvc21wLmMtMTEyNS1cbmFyY2gvczM5MC9rZXJuZWwvc21wLmM6MTEyNjpcdGluZm8gPSBremFsbG9jX29iaigqaW5mbyk7XG5hcmNoL3MzOTAva2VybmVsL3NtcC5jLTExMjctXHRpZiAoIWluZm8pXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmM9MTI5PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqKiBfX2luaXQgdmRzb19zZXR1cF9wYWdlcyh2b2lkICpzdGFydCwgdm9pZCAqZW5kKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvdmRzby5jLTEzNC1cbmFyY2gvczM5MC9rZXJuZWwvdmRzby5jOjEzNTpcdHBhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHBhZ2VzICYjNDM7IDEpO1xuYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmMtMTM2LVx0aWYgKCFwYWdlbGlzdClcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmM9MzE9aW50IGt2bV9zMzkwX21tdV9jYWNoZV90b3B1cChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYylcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmMtNDctXHRmb3IgKCA7IG1jLVx1MDAzZW5fcm1hcHMgXHUwMDNjIEtWTV9TMzkwX01NVV9DQUNIRV9OX1JNQVBTOyBtYy1cdTAwM2VuX3JtYXBzJiM0MzsmIzQzOykge1xuYXJjaC9zMzkwL2t2bS9nbWFwL2RhdC5jOjQ4Olx0XHRvID0ga3phbGxvY19vYmooc3RydWN0IHZzaWVfcm1hcCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuYy00OS1cdFx0aWYgKCFvKVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaD01OTE9c3RhdGljIGlubGluZSBzdHJ1Y3QgdnNpZV9ybWFwICprdm1fczM5MF9tbXVfY2FjaGVfYWxsb2Nfcm1hcChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYylcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmgtNTk0LVx0XHRyZXR1cm4gbWMtXHUwMDNlcm1hcHNbLS1tYy1cdTAwM2VuX3JtYXBzXTtcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaDo1OTU6XHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IHZzaWVfcm1hcCwgR0ZQX0tWTV9TMzkwX01NVV9DQUNIRSk7XG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmgtNTk2LX1cbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0Lmg9OTM5PXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqa3ZtX3MzOTBfbmV3X21tdV9jYWNoZSh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaC05NDItXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0Lmg6OTQzOlx0bWMgPSBremFsbG9jX29iaigqbWMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmgtOTQ0LVx0aWYgKG1jIFx1MDAyNlx1MDAyNiAha3ZtX3MzOTBfbW11X2NhY2hlX3RvcHVwKG1jKSlcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAvZ21hcC5jPTQ3PXN0cnVjdCBnbWFwICpnbWFwX25ldyhzdHJ1Y3Qga3ZtICprdm0sIGdmbl90IGxpbWl0KVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC9nbWFwLmMtNTQtXG5hcmNoL3MzOTAva3ZtL2dtYXAvZ21hcC5jOjU1Olx0Z21hcCA9IGt6YWxsb2Nfb2JqKCpnbWFwLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9nbWFwL2dtYXAuYy01Ni1cdGlmICghZ21hcClcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9MTc0OT1zdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0X2luZm8gKmt2bV9zMzkwX2dldF9pb19pbnQoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0xNzczLWdpc2Ffb3V0OlxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jOjE3NzQ6XHR0bXBfaW50aSA9IGt6YWxsb2Nfb2JqKCppbnRpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTE3NzUtXHRpZiAodG1wX2ludGkpIHtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9MjM5Mj1zdGF0aWMgaW50IGVucXVldWVfZmxvYXRpbmdfaXJxKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI0MDQtXHR3aGlsZSAobGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBrdm1fczM5MF9pcnEpKSB7XG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM6MjQwNTpcdFx0aW50aSA9IGt6YWxsb2Nfb2JqKCppbnRpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI0MDYtXHRcdGlmICghaW50aSlcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9MjQzND1zdGF0aWMgaW50IHJlZ2lzdGVyX2lvX2FkYXB0ZXIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMjQ1Ny1cdH1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzoyNDU4Olx0YWRhcHRlciA9IGt6YWxsb2Nfb2JqKCphZGFwdGVyLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI0NTktXHRpZiAoIWFkYXB0ZXIpIHtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9MjUxMj1zdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0yNTIyLVxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jOjI1MjM6XHRtYXAgPSBremFsbG9jX29iaigqbWFwLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI1MjQtXHRpZiAoIW1hcClcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9Mjc3MT1zdGF0aWMgaW50IGt2bV9zMzkwX2luamVjdF9haXJxKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMjc4NC1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzoyNzg1Olx0aW50aSA9IGt6YWxsb2Nfb2JqKCppbnRpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI3ODYtXHRpZiAoIWludGkpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jPTM3NTQ9aW50IGt2bV9hcmNoX3NldF9pcnFfaW5hdG9taWMoc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTM3ODgtXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM6Mzc4OTpcdGludGkgPSBremFsbG9jX29iaigqaW50aSwgR0ZQX0FUT01JQyk7XG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMzc5MC1cdGlmICghaW50aSkge1xuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYz01Mj1zdGF0aWMgaW50IHpwY2lfc2V0dXBfYWlwYih1OCBuaXNjKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy01Ni1cbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYzo1NzpcdHpwY2lfYWlwYiA9IGt6YWxsb2Nfb2JqKHVuaW9uIHpwY2lfc2ljX2lpYik7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtNTgtXHRpZiAoIXpwY2lfYWlwYilcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM9MTIwPWludCBrdm1fczM5MF9wY2lfYWVuX2luaXQodTggbmlzYylcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtMTI4LVx0bXV0ZXhfbG9jayhcdTAwMjZhaWZ0LVx1MDAzZWFpZnRfbG9jayk7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM6MTI5Olx0YWlmdC1cdTAwM2VremRldiA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qga3ZtX3pkZXYgKiwgWlBDSV9OUl9ERVZJQ0VTKTtcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy0xMzAtXHRpZiAoIWFpZnQtXHUwMDNla3pkZXYpIHtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM9NDcxPXN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2Rldl9vcGVuKHN0cnVjdCB6cGNpX2RldiAqemRldilcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtNDc0LVxuYXJjaC9zMzkwL2t2bS9zMzkwL3BjaS5jOjQ3NTpcdGt6ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV96ZGV2KTtcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy00NzYtXHRpZiAoIWt6ZGV2KVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYz03Mjk9aW50IF9faW5pdCBrdm1fczM5MF9wY2lfaW5pdCh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy03MzYtXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM6NzM3Olx0YWlmdCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB6cGNpX2FpZnQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3BjaS5jLTczOC1cdGlmICghYWlmdClcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHYuYz00NzY9aW50IGt2bV9zMzkwX3B2X3NldF9hc2lkZShzdHJ1Y3Qga3ZtICprdm0sIHUxNiAqcmMsIHUxNiAqcnJjKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wdi5jLTQ5Mi1cbmFyY2gvczM5MC9rdm0vczM5MC9wdi5jOjQ5MzpcdHByaXYgPSBremFsbG9jX29iaigqcHJpdik7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHYuYy00OTQtXHRpZiAoIXByaXYpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0xNDczPXN0YXRpYyBpbnQga3ZtX3MzOTBfc2V0X3Byb2Nlc3NvcihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNDgzLVx0fVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzoxNDg0Olx0cHJvYyA9IGt6YWxsb2Nfb2JqKCpwcm9jLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNDg1LVx0aWYgKCFwcm9jKSB7XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0xNjc5PXN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X3Byb2Nlc3NvcihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNjgzLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzoxNjg0Olx0cHJvYyA9IGt6YWxsb2Nfb2JqKCpwcm9jLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNjg1LVx0aWYgKCFwcm9jKSB7XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0xNzA3PXN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X21hY2hpbmUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMTcxMS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6MTcxMjpcdG1hY2ggPSBremFsbG9jX29iaigqbWFjaCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMTcxMy1cdGlmICghbWFjaCkge1xuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MjkwMD1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0yOTE3LVx0XHRcdGJyZWFrO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzoyOTE4Olx0XHRpbnRpID0ga3phbGxvY19vYmooKmludGksIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTI5MTktXHRcdGlmICghaW50aSlcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jPTMyNDA9aW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0zMjc1LVx0QlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3Qgc2llX3BhZ2UyKSAhPSA0MDk2KTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6MzI3NjpcdGt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMiA9IGt6YWxsb2Nfb2JqKCprdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIsXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTMyNzctXHRcdFx0XHRcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz00NDUxPXN0YXRpYyB2b2lkIF9fa3ZtX2luamVjdF9wZmF1bHRfdG9rZW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHN0YXJ0X3Rva2VuLFxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNDQ2My1cdH0gZWxzZSB7XG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjQ0NjQ6XHRcdGludGlfbWVtID0ga3phbGxvY19vYmooKmludGlfbWVtLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy00NDY1LVx0XHRpZiAoV0FSTl9PTl9PTkNFKCFpbnRpX21lbSkpXG4tLVxuYXJjaC9zMzkwL21tL2V4dG1lbS5jPTI5Nz1fX3NlZ21lbnRfbG9hZCAoY2hhciAqbmFtZSwgaW50IGRvX25vbnNoYXJlZCwgdW5zaWduZWQgbG9uZyAqYWRkciwgdW5zaWduZWQgbG9uZyAqZW5kKVxuLS1cbmFyY2gvczM5MC9tbS9leHRtZW0uYy0zMTktXG5hcmNoL3MzOTAvbW0vZXh0bWVtLmM6MzIwOlx0c2VnLVx1MDAzZXJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XG5hcmNoL3MzOTAvbW0vZXh0bWVtLmMtMzIxLVx0aWYgKHNlZy1cdTAwM2VyZXMgPT0gTlVMTCkge1xuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjM4Nj1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpmcClcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTIzOTgtXHRpZiAoIWppdF9kYXRhKSB7XG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjIzOTk6XHRcdGppdF9kYXRhID0ga3phbGxvY19vYmooKmppdF9kYXRhKTtcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjQwMC1cdFx0aWYgKCFqaXRfZGF0YSlcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jPTUyMj1zdGF0aWMgc3RydWN0IHJlc291cmNlICpfX2FsbG9jX3JlcyhzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9zMzkwL3BjaS9wY2kuYy01MjYtXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjUyNzpcdHIgPSBremFsbG9jX29iaigqcik7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTUyOC1cdGlmICghcilcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jPTgyMz1zdHJ1Y3QgenBjaV9kZXYgKnpwY2lfY3JlYXRlX2RldmljZSh1MzIgZmlkLCB1MzIgZmgsIGVudW0genBjaV9zdGF0ZSBzdGF0ZSlcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTgyNy1cbmFyY2gvczM5MC9wY2kvcGNpLmM6ODI4Olx0emRldiA9IGt6YWxsb2Nfb2JqKCp6ZGV2KTtcbmFyY2gvczM5MC9wY2kvcGNpLmMtODI5LVx0aWYgKCF6ZGV2KVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpLmM9MTA2Nj1zdGF0aWMgaW50IHpwY2lfbWVtX2luaXQodm9pZClcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTEwNzctXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjEwNzg6XHR6cGNpX2lvbWFwX3N0YXJ0ID0ga3phbGxvY19vYmpzKCp6cGNpX2lvbWFwX3N0YXJ0LCBaUENJX0lPTUFQX0VOVFJJRVMpO1xuYXJjaC9zMzkwL3BjaS9wY2kuYy0xMDc5LVx0aWYgKCF6cGNpX2lvbWFwX3N0YXJ0KVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpX2J1cy5jPTMxND1zdGF0aWMgc3RydWN0IHpwY2lfYnVzICp6cGNpX2J1c19hbGxvYyhpbnQgdG9wbywgYm9vbCB0b3BvX2lzX3RpZClcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaV9idXMuYy0zMTctXG5hcmNoL3MzOTAvcGNpL3BjaV9idXMuYzozMTg6XHR6YnVzID0ga3phbGxvY19vYmooKnpidXMpO1xuYXJjaC9zMzkwL3BjaS9wY2lfYnVzLmMtMzE5LVx0aWYgKCF6YnVzKVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jPTU1Mj1zdGF0aWMgaW50IF9faW5pdCB6cGNpX2RpcmVjdGVkX2lycV9pbml0KHZvaWQpXG4tLVxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmMtNTY1LVxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmM6NTY2Olx0enBjaV9pYnYgPSBremFsbG9jX29ianMoKnpwY2lfaWJ2LCBudW1fcG9zc2libGVfY3B1cygpKTtcbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jLTU2Ny1cdGlmICghenBjaV9pYnYpXG4tLVxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmM9NTkwPXN0YXRpYyBpbnQgX19pbml0IHpwY2lfZmxvYXRpbmdfaXJxX2luaXQodm9pZClcbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jLTU5MS17XG5hcmNoL3MzOTAvcGNpL3BjaV9pcnEuYzo1OTI6XHR6cGNpX2lidiA9IGt6YWxsb2Nfb2JqcygqenBjaV9pYnYsIFpQQ0lfTlJfREVWSUNFUyk7XG5hcmNoL3MzOTAvcGNpL3BjaV9pcnEuYy01OTMtXHRpZiAoIXpwY2lfaWJ2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTA2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIFJldmlldzogS1ZNIE1lbW9yeSBBbGxvY2F0aW9uIG9uIHMzOTAqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgYmFjayBpbnRvIHRoaXMgcGF0Y2guIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcsIHNvIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IHN0ZXAgdGhyb3VnaCBlYWNoIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgYWRkcmVzc2luZyBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHdpdGhpbiB0aGUgczM5MCBLVk0gY29kZS4gVGhpcyBpcyBjcml0aWNhbDsgZXZlbiBhIHNtYWxsIGxlYWsgb3IgbWlzdXNlIGNhbiBkZXN0YWJpbGl6ZSB0aGUgZW50aXJlIHN5c3RlbSwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuCgpUaGUgZmlyc3QgYmxvY2ssIGBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNgIHNwZWNpZmljYWxseSB0aGUgYGhhbmRsZV9zdGh5aWAgZnVuY3Rpb24sIGlzIHdoZXJlIHRoZSBpbml0aWFsIGNoYW5nZSBjb21lcyBpbjsgYGdldF96ZXJvZWRfcGFnZWAgaXMgYmVpbmcgcmVwbGFjZWQgYnkgYGt6YWxsb2NgIGZvciBgc2N0bnNgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjb252ZXJzaW9uOiBga3phbGxvY2AgY29tYmluZXMgdGhlIGBnZXRfemVyb2VkX3BhZ2VgIHdpdGggYSBgbWVtc2V0KDApYCB0byBpbml0aWFsaXplIHRoZSBtZW1vcnkuIENvcnJlc3BvbmRpbmdseSwgYGZyZWVfcGFnZWAgaXMgcmVwbGFjZWQgd2l0aCBga2ZyZWVgLiBUaGF0JiMzOTtzIGdvb2Q7IGl0JiMzOTtzIGNsZWFuZXIgYW5kIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LiBUaGUgc2FtZSBwYXR0ZXJuIGhvbGRzIGZvciBgYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jYCwgYGt2bV9zMzkwX2dpYl9kZXN0cm95YCBhbmQgYGt2bV9zMzkwX2dpYl9pbml0YCwgYW5kIGFsc28gYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgIGFuZCBgaGFuZGxlX3N0c2lgLCB3aXRoIHRoZSBzYW1lIGNoYW5nZXMgYmV0d2VlbiBgZ2V0X3plcm9lZF9wYWdlYCBhbmQgYGt6YWxsb2NgIGFuZCB0aGUgYXBwcm9wcmlhdGUgYGZyZWVfcGFnZWAgY2FsbHMgYmVpbmcgY2hhbmdlZCB0byBga2ZyZWVgLgoKVGhlIGZvdXJ0aCBjaHVuaywgaW4gYGFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNgLCBpcyBzbGlnaHRseSBtb3JlIGludm9sdmVkLiBIZXJlLCB3aXRoaW4gYGt2bV9hcmNoX2luaXRfdm1gLCBga3ZtX2FyY2hfZGVzdHJveV92bWAsIGBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWFgLCBhbmQgYGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hYCwgd2Ugc2VlIHRoZSBzYW1lIHRyYW5zaXRpb24gZnJvbSBgZ2V0X3plcm9lZF9wYWdlYCB0byBga3phbGxvY2AsIGJ1dCB3aXRoIHRoZSBhZGRpdGlvbiBvZiBgKmAgZm9yIHRoZSBga3ZtLSZndDthcmNoLnNpZV9wYWdlMmAgcG9pbnRlci4gSXQgbG9va3MgbGlrZSBpdCBjb3VsZCBiZSBjYWxsaW5nIGEgaGVscGVyLiBBbmQgZm9yIHRoZSBvdGhlciBjYXNlIGluIHRoaXMgZmlsZSwgd2UgaGF2ZSB0aGUgc2FtZSBzaXR1YXRpb24gYXMgYmVmb3JlIHdpdGggdGhlIHJlcGxhY2VtZW50IG9mIGBmcmVlX3BhZ2VgIHdpdGggYGtmcmVlYCB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgcGh5c2ljYWwgbWVtb3J5LgoKVGhlc2UgYXJlIGFsbCBpbXBvcnRhbnQgZnVuY3Rpb25zOyBhbnkgbWVtb3J5LXJlbGF0ZWQgaXNzdWVzIGluIGBrdm1fYXJjaF9pbml0X3ZtYCBvciBga3ZtX2FyY2hfZGVzdHJveV92bWAgYXJlIGxpa2VseSB0byBjYXVzZSBzb21lIGJpZyBwcm9ibGVtcyB3aGVuIGxhdW5jaGluZyBvciBzaHV0dGluZyBkb3duIFZNcy4gSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIGhvdyB0aGVzZSBmdW5jdGlvbiBjYWxscyBhcmUgc3RydWN0dXJlZC4gVGhpcyBzZWVtcyBsaWtlIGEgcHJldHR5IHN0YW5kYXJkIGFuZCBzZW5zaWJsZSBjaGFuZ2UuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gd2hlcmUgc3VidGxlIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyBjYW4gY3JlZXAgaW4sIHNvIHRoaXMga2luZCBvZiBtb2Rlcm5pemF0aW9uIGlzIHVzdWFsbHkgYSBnb29kIHRoaW5nLiBUaGUgdXNlIG9mIGBremFsbG9jYCBpcyBnZW5lcmFsbHkgcHJlZmVycmVkIG5vdyBiZWNhdXNlIGl0IGlzIGNsZWFuZXIsIGhhbmRsZXMgdGhlIHplcm9pbmcgaW50ZXJuYWxseSwgYW5kIGlzIG1vcmUgY29uc2lzdGVudC4gSSBhc3N1bWUgdGhlcmUgaXNuJiMzOTt0IGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZSBoZXJlLgoKQmVmb3JlIGdpdmluZyBpdCBhIHN0YW1wIG9mIGFwcHJvdmFsLCBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIHZlcmlmeSB0aGUgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBzb21lIHVuZXhwZWN0ZWQgZGVwZW5kZW5jeSBvciBjaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBLY29uZmlnIGZvciBhbnkgc3VidGxlIGVmZmVjdHMuCgpJJiMzOTtsbCBzZWFyY2ggZm9yICYjMzk7S1ZNJiMzOTsgd2l0aGluIHRoZSBgYXJjaC9zMzkwYCBkaXJlY3RvcnkganVzdCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgZGVwZW5kZW5jaWVzIG9yIG90aGVyIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyB0byBnZXQgYSBmdWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzg3MiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuYXJjaC9zMzkwL0tidWlsZD0zPW9iai15XHRcdFx0XHQmIzQzOz0gbW0vXG5hcmNoL3MzOTAvS2J1aWxkOjQ6b2JqLSQoQ09ORklHX0tWTSlcdFx0JiM0Mzs9IGt2bS9cbmFyY2gvczM5MC9LYnVpbGQtNS1vYmoteVx0XHRcdFx0JiM0Mzs9IGNyeXB0by9cbi0tXG5hcmNoL3MzOTAvS2NvbmZpZz04NDY9Y29uZmlnIFZGSU9fQVBcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy04NDgtXHRwcm9tcHQgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBBUCBkZXZpY2VzXCYjMzQ7XG5hcmNoL3MzOTAvS2NvbmZpZzo4NDk6XHRkZXBlbmRzIG9uIEtWTVxuYXJjaC9zMzkwL0tjb25maWctODUwLVx0ZGVwZW5kcyBvbiBWRklPXG4tLVxuYXJjaC9zMzkwL0tjb25maWc9OTkwPWNvbmZpZyBTMzkwX0dVRVNUXG4tLVxuYXJjaC9zMzkwL0tjb25maWctMTAwMC1cdCAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHJ1biB0aGUga2VybmVsIGFzIGEgZ3Vlc3QgdW5kZXJcbmFyY2gvczM5MC9LY29uZmlnOjEwMDE6XHQgIHRoZSBLVk0gaHlwZXJ2aXNvci5cbmFyY2gvczM5MC9LY29uZmlnLTEwMDItXG4tLVxuYXJjaC9zMzkwL2Jvb3QvaXBsX3Bhcm0uYz0yNDk9dm9pZCBwYXJzZV9ib290X2NvbW1hbmRfbGluZSh2b2lkKVxuLS1cbmFyY2gvczM5MC9ib290L2lwbF9wYXJtLmMtMzAyLVxuYXJjaC9zMzkwL2Jvb3QvaXBsX3Bhcm0uYzozMDM6I2lmIElTX0VOQUJMRUQoQ09ORklHX0tWTSlcbmFyY2gvczM5MC9ib290L2lwbF9wYXJtLmMtMzA0LVx0XHRpZiAoIXN0cmNtcChwYXJhbSwgXCYjMzQ7cHJvdF92aXJ0XCYjMzQ7KSkge1xuLS1cbmFyY2gvczM5MC9ib290L3N0YXJ0dXAuYz01Mj1zdGF0aWMgdm9pZCBkZXRlY3RfbWFjaGluZV90eXBlKHZvaWQpXG4tLVxuYXJjaC9zMzkwL2Jvb3Qvc3RhcnR1cC5jLTY1LVx0aWYgKCFtZW1jbXAodm1tcy1cdTAwM2V2bVswXS5jcGksIFwmIzM0O1xceGQyXFx4ZTVcXHhkNFwmIzM0OywgMykpXG5hcmNoL3MzOTAvYm9vdC9zdGFydHVwLmM6NjY6XHRcdHNldF9tYWNoaW5lX2ZlYXR1cmUoTUZFQVRVUkVfS1ZNKTtcbmFyY2gvczM5MC9ib290L3N0YXJ0dXAuYy02Ny1cdGVsc2UgaWYgKCFtZW1jbXAodm1tcy1cdTAwM2V2bVswXS5jcGksIFwmIzM0O1xceGE5XFx4NjFcXHhlNVxceGQ0XCYjMzQ7LCA0KSlcbi0tXG5hcmNoL3MzOTAvYm9vdC91di5jPTE1PXZvaWQgdXZfcXVlcnlfaW5mbyh2b2lkKVxuLS1cbmFyY2gvczM5MC9ib290L3V2LmMtMjgtXG5hcmNoL3MzOTAvYm9vdC91di5jOjI5Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0tWTSkpIHtcbmFyY2gvczM5MC9ib290L3V2LmMtMzAtXHRcdG1lbWNweSh1dl9pbmZvLmluc3RfY2FsbHNfbGlzdCwgdXZjYi5pbnN0X2NhbGxzX2xpc3QsIHNpemVvZih1dl9pbmZvLmluc3RfY2FsbHNfbGlzdCkpO1xuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz02Nz1DT05GSUdfUzM5MF9IWVBGU19GUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6Njg6Q09ORklHX0tWTT1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6Njk6Q09ORklHX0tWTV9TMzkwX1VDT05UUk9MPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy03MC1DT05GSUdfUzM5MF9VTldJTkRfU0VMRlRFU1Q9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz02NT1DT05GSUdfUzM5MF9IWVBGU19GUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6NjY6Q09ORklHX0tWTT1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctNjctQ09ORklHX1MzOTBfVU5XSU5EX1NFTEZURVNUPW1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmg9NTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGFyY2hfaW5fcmN1X2Vxcyh2b2lkKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oLTU1LXtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaDo1NjpcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk0pKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oLTU3LVx0XHRyZXR1cm4gY3VycmVudC1cdTAwM2VmbGFncyBcdTAwMjYgUEZfVkNQVTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZ21hcF9oZWxwZXJzLmgtMi0vKlxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2dtYXBfaGVscGVycy5oOjM6ICogIEhlbHBlciBmdW5jdGlvbnMgZm9yIEtWTSBndWVzdCBhZGRyZXNzIHNwYWNlIG1hcHBpbmcgY29kZVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2dtYXBfaGVscGVycy5oLTQtICpcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0yLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzojaWZuZGVmIEFTTV9LVk1fSE9TVF9IXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo0OiNkZWZpbmUgQVNNX0tWTV9IT1NUX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTUtXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNjQtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo2NTojZW5kaWYgLyogQVNNX0tWTV9IT1NUX0ggKi9cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTEwLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDoxMTojaWZuZGVmIEFTTV9LVk1fSE9TVF9TMzkwX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MTI6I2RlZmluZSBBU01fS1ZNX0hPU1RfUzM5MF9IXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTEzLVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMjktXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMwOiNkZWZpbmUgS1ZNX0hBVkVfTU1VX1JXTE9DS1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMTojZGVmaW5lIEtWTV9NQVhfVkNQVVMgMjU1XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMyLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMzojZGVmaW5lIEtWTV9JTlRFUk5BTF9NRU1fU0xPVFMgMVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zNC1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzU6I2RlZmluZSBLVk1fUzM5MF9NQU5BR0VTX1MzOTBfR1VFU1QgMVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zNi1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTQxLSAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo0MjojZGVmaW5lIEtWTV9OUl9JUlFDSElQUyAxXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjQzOiNkZWZpbmUgS1ZNX0lSUUNISVBfTlVNX1BJTlMgMVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo0NDojZGVmaW5lIEtWTV9IQUxUX1BPTExfTlNfREVGQVVMVCA1MDAwMFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC00NS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNDYtLyogczM5MC1zcGVjaWZpYyB2Y3B1LVx1MDAzZXJlcXVlc3RzIGJpdCBtZW1iZXJzICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjQ3OiNkZWZpbmUgS1ZNX1JFUV9FTkFCTEVfSUJTXHRLVk1fQVJDSF9SRVEoMClcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NDg6I2RlZmluZSBLVk1fUkVRX0RJU0FCTEVfSUJTXHRLVk1fQVJDSF9SRVEoMSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NDk6I2RlZmluZSBLVk1fUkVRX0lDUFRfT1BFUkVYQ1x0S1ZNX0FSQ0hfUkVRKDIpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjUwOiNkZWZpbmUgS1ZNX1JFUV9TVEFSVF9NSUdSQVRJT04gS1ZNX0FSQ0hfUkVRKDMpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjUxOiNkZWZpbmUgS1ZNX1JFUV9TVE9QX01JR1JBVElPTiAgS1ZNX0FSQ0hfUkVRKDQpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjUyOiNkZWZpbmUgS1ZNX1JFUV9WU0lFX1JFU1RBUlRcdEtWTV9BUkNIX1JFUSg1KVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo1MzojZGVmaW5lIEtWTV9SRVFfUkVGUkVTSF9HVUVTVF9QUkVGSVhcdFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjU0Olx0S1ZNX0FSQ0hfUkVRX0ZMQUdTKDYsIEtWTV9SRVFVRVNUX1dBSVQgfCBLVk1fUkVRVUVTVF9OT19XQUtFVVApXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTU1LVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9MTU2PWVudW0gaXJxX3R5cGVzIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTE5MC0gKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MTkxOiNkZWZpbmUgS1ZNX1MzOTBfTUFYX1ZJUlRJT19JUlFTIDg3MzgxXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTE5Mi1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTI2OD1zdHJ1Y3Qga3ZtX3MzOTBfbG9jYWxfaW50ZXJydXB0IHtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMjY5LVx0c3BpbmxvY2tfdCBsb2NrO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDoyNzA6XHRERUNMQVJFX0JJVE1BUChzaWdwX2VtZXJnX3BlbmRpbmcsIEtWTV9NQVhfVkNQVVMpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0yNzEtXHRzdHJ1Y3Qga3ZtX3MzOTBfaXJxX3BheWxvYWQgaXJxO1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMjk0LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDoyOTU6I2RlZmluZSBLVk1fUzM5MF9BSVNfTU9ERV9BTEwgICAgMFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDoyOTY6I2RlZmluZSBLVk1fUzM5MF9BSVNfTU9ERV9TSU5HTEUgMVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0yOTctXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaD0zMTk9c3RydWN0IGt2bV9od19icF9pbmZvX2FyY2gge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzI1LSAqIE9ubHkgdGhlIHVwcGVyIDE2IGJpdHMgb2Yga3ZtX2d1ZXN0X2RlYnVnLVx1MDAzZWNvbnRyb2wgYXJlIGFyY2ggc3BlY2lmaWMuXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMyNjogKiBGdXJ0aGVyIEtWTV9HVUVTVERCRyBmbGFncyB3aGljaCBhbiBiZSB1c2VkIGZyb20gdXNlcnNwYWNlIGNhbiBiZSBmb3VuZCBpblxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zMjctICogYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzI4LSAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMjk6I2RlZmluZSBLVk1fR1VFU1REQkdfRVhJVF9QRU5ESU5HIDB4MTAwMDAwMDBcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzMwLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zMzEtI2RlZmluZSBndWVzdGRiZ19lbmFibGVkKHZjcHUpIFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMzMjpcdFx0KHZjcHUtXHUwMDNlZ3Vlc3RfZGVidWcgXHUwMDI2IEtWTV9HVUVTVERCR19FTkFCTEUpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMzMy0jZGVmaW5lIGd1ZXN0ZGJnX3NzdGVwX2VuYWJsZWQodmNwdSkgXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzM0Olx0XHQodmNwdS1cdTAwM2VndWVzdF9kZWJ1ZyBcdTAwMjYgS1ZNX0dVRVNUREJHX1NJTkdMRVNURVApXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMzNS0jZGVmaW5lIGd1ZXN0ZGJnX2h3X2JwX2VuYWJsZWQodmNwdSkgXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzM2Olx0XHQodmNwdS1cdTAwM2VndWVzdF9kZWJ1ZyBcdTAwMjYgS1ZNX0dVRVNUREJHX1VTRV9IV19CUClcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzM3LSNkZWZpbmUgZ3Vlc3RkYmdfZXhpdF9wZW5kaW5nKHZjcHUpIChndWVzdGRiZ19lbmFibGVkKHZjcHUpIFx1MDAyNlx1MDAyNiBcXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMzg6XHRcdCh2Y3B1LVx1MDAzZWd1ZXN0X2RlYnVnIFx1MDAyNiBLVk1fR1VFU1REQkdfRVhJVF9QRU5ESU5HKSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzM5LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozNDA6I2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozNDE6XHRcdChLVk1fR1VFU1REQkdfRU5BQkxFIHwgS1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjM0MjpcdFx0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IEtWTV9HVUVTVERCR19FWElUX1BFTkRJTkcpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTM0My1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTU3Nj1zdHJ1Y3Qga3ZtX3MzOTBfdnNpZSB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC01ODAtXHRpbnQgbmV4dDtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NTgxOlx0c3RydWN0IHZzaWVfcGFnZSAqcGFnZXNbS1ZNX01BWF9WQ1BVU107XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTU4Mi19O1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NTkwPXN0cnVjdCBrdm1fczM5MF9naXNhX2ludGVycnVwdCB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC01OTQtXHR1NjQgZXhwaXJlcztcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NTk1Olx0REVDTEFSRV9CSVRNQVAoa2lja2VkX21hc2ssIEtWTV9NQVhfVkNQVVMpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC01OTYtfTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTYxMz1zdHJ1Y3Qga3ZtX2FyY2gge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjQ1LVx0Lyogc3Vic2V0IG9mIGF2YWlsYWJsZSBjcHUgZmVhdHVyZXMgZW5hYmxlZCBieSB1c2VyIHNwYWNlICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjY0NjpcdERFQ0xBUkVfQklUTUFQKGNwdV9mZWF0LCBLVk1fUzM5MF9WTV9DUFVfRkVBVF9OUl9CSVRTKTtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjQ3LVx0LyogaW5kZXhlZCBieSB2Y3B1X2lkeCAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo2NDg6XHRERUNMQVJFX0JJVE1BUChpZGxlX21hc2ssIEtWTV9NQVhfVkNQVVMpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02NDktXHRzdHJ1Y3Qga3ZtX3MzOTBfZ2lzYV9pbnRlcnJ1cHQgZ2lzYV9pbnQ7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02NTUtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjY1NjojZGVmaW5lIEtWTV9IVkFfRVJSX0JBRFx0XHQoLTFVTClcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NjU3OiNkZWZpbmUgS1ZNX0hWQV9FUlJfUk9fQkFEXHQoLTJVTClcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjU4LVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NzE3PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fYXJjaF92Y3B1X3VuYmxvY2tpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC03MTgtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjcxOTojZGVmaW5lIF9fS1ZNX0hBVkVfQVJDSF9WTV9GUkVFXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTcyMC12b2lkIGt2bV9hcmNoX2ZyZWVfdm0oc3RydWN0IGt2bSAqa3ZtKTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTcyNz1leHRlcm4gc3RydWN0IHpwY2lfa3ZtX2hvb2sgenBjaV9rdm1faG9vaztcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNzI4LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo3Mjk6I2VuZGlmIC8qIEFTTV9LVk1fSE9TVF9TMzkwX0ggKi9cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTItXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oOjM6I2lmbmRlZiBfQVNNX0tWTV9IT1NUX1MzOTBfVFlQRVNfSFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDo0OiNkZWZpbmUgX0FTTV9LVk1fSE9TVF9TMzkwX1RZUEVTX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtNS1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTgtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oOjk6I2RlZmluZSBLVk1fUzM5MF9CU0NBX0NQVV9TTE9UUyA2NFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDoxMDojZGVmaW5lIEtWTV9TMzkwX0VTQ0FfQ1BVX1NMT1RTIDI0OFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0xMS1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oPTcyPXN0cnVjdCBic2NhX2Jsb2NrIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTc3LVx0X191OFx0cmVzZXJ2ZWQyWzRdO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDo3ODpcdHN0cnVjdCBic2NhX2VudHJ5IGNwdVtLVk1fUzM5MF9CU0NBX0NQVV9TTE9UU107XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTc5LX07XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaD04MT1zdHJ1Y3QgZXNjYV9ibG9jayB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC04Ny1cdF9fdTY0XHRyZXNlcnZlZDNbMjBdO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDo4ODpcdHN0cnVjdCBlc2NhX2VudHJ5IGNwdVtLVk1fUzM5MF9FU0NBX0NQVV9TTE9UU107XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTg5LX07XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaD0xMzk9c3RydWN0IGt2bV9zMzkwX3NpZV9ibG9jayB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0yNTgtXHRfX3U4XHRyZXNlcnZlZGIwWzhdO1x0XHQvKiAweDAwYjAgKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmg6MjU5OiNkZWZpbmUgSFBJRF9LVk1cdDB4NFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0yNjAtI2RlZmluZSBIUElEX1ZTSUVcdDB4NVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmg9MzM5PXN0cnVjdCBzaWVfcGFnZSB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0zNDgtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oOjM0OTojZW5kaWYgLyogX0FTTV9LVk1fSE9TVF9TMzkwX1RZUEVTX0ggKi9cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC0yLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3R5cGVzLmg6MzojaWZuZGVmIEFTTV9LVk1fSE9TVF9UWVBFU19IXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaDo0OiNkZWZpbmUgQVNNX0tWTV9IT1NUX1RZUEVTX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oLTUtXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3R5cGVzLmgtNy1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjg6I2VuZGlmIC8qIEFTTV9LVk1fSE9TVF9UWVBFU19IICovXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtOS0vKlxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6MTA6ICogSHlwZXJjYWxscyBmb3IgS1ZNIG9uIHMzOTAuIFRoZSBjYWxsaW5nIGNvbnZlbnRpb24gaXMgc2ltaWxhciB0byB0aGVcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTExLSAqIHMzOTAgQUJJLCBzbyB3ZSB1c2UgUjItUjYgZm9yIHBhcmFtZXRlcnMgMS01LiBJbiBhZGRpdGlvbiB3ZSB1c2UgUjFcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xNS0gKiB0aGUgaW5zdHJ1Y3Rpb24gZW5jb2RlZCBudW1iZXIsIGJ1dCBzcGVjaWZ5IHRoZSBudW1iZXIgaW4gUjEgYW5kXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaDoxNjogKiB1c2UgMHg1MDAgYXMgS1ZNIGh5cGVyY2FsbFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMTctICpcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0yMC0gKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjIxOiNpZm5kZWYgX19TMzkwX0tWTV9QQVJBX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjIyOiNkZWZpbmUgX19TMzkwX0tWTV9QQVJBX0hcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTIzLVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTY5LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6NzA6I2RlZmluZSBHRU5FUkFURV9LVk1fSFlQRVJDQUxMX0ZVTkMoYXJncylcdFx0XHRcdFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC03MS1zdGF0aWMgaW5saW5lXHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg9ODc9bG9uZyBrdm1faHlwZXJjYWxsIyNhcmdzKHVuc2lnbmVkIGxvbmcgbnIgSFlQRVJDQUxMX1BBUk1fIyNhcmdzKVx0XFxcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC05Mi1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjkzOkdFTkVSQVRFX0tWTV9IWVBFUkNBTExfRlVOQygwKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTQ6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDEpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaDo5NTpHRU5FUkFURV9LVk1fSFlQRVJDQUxMX0ZVTkMoMilcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjk2OkdFTkVSQVRFX0tWTV9IWVBFUkNBTExfRlVOQygzKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTc6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDQpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaDo5ODpHRU5FUkFURV9LVk1fSFlQRVJDQUxMX0ZVTkMoNSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjk5OkdFTkVSQVRFX0tWTV9IWVBFUkNBTExfRlVOQyg2KVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMTAwLVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oPTExOD1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX2NoZWNrX2FuZF9jbGVhcl9ndWVzdF9wYXVzZWQodm9pZClcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xMjItXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaDoxMjM6I2VuZGlmIC8qIF9fUzM5MF9LVk1fUEFSQV9IICovXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21hY2hpbmUuaC0xOC0jZGVmaW5lIE1GRUFUVVJFX1ZNXHRcdDdcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tYWNoaW5lLmg6MTk6I2RlZmluZSBNRkVBVFVSRV9LVk1cdFx0OFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21hY2hpbmUuaC0yMC0jZGVmaW5lIE1GRUFUVVJFX0xQQVJcdFx0OVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tYWNoaW5lLmg9OTU9REVGSU5FX01BQ0hJTkVfSEFTX0ZFQVRVUkUodm0sIE1GRUFUVVJFX1ZNKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21hY2hpbmUuaDo5NjpERUZJTkVfTUFDSElORV9IQVNfRkVBVFVSRShrdm0sIE1GRUFUVVJFX0tWTSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tYWNoaW5lLmgtOTctREVGSU5FX01BQ0hJTkVfSEFTX0ZFQVRVUkUobHBhciwgTUZFQVRVUkVfTFBBUilcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaD0yMD1zdGF0aWMgaW5saW5lIGludCBpbml0X25ld19jb250ZXh0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tbXVfY29udGV4dC5oLTMxLVx0bW0tXHUwMDNlY29udGV4dC5mbHVzaF9tbSA9IDA7XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaDozMjojaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgtMzMtXHRtbS1cdTAwM2Vjb250ZXh0LmFsbG93X2Nvd19zaGFyaW5nID0gMTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTU0OT1zdGF0aWMgaW5saW5lIGludCBtbV9pc19wcm90ZWN0ZWQoc3RydWN0IG1tX3N0cnVjdCAqbW0pXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTU1MC17XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjU1MTojaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC01NTItXHRpZiAodW5saWtlbHkoYXRvbWljX3JlYWQoXHUwMDI2bW0tXHUwMDNlY29udGV4dC5wcm90ZWN0ZWRfY291bnQpKSlcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTU5ND1zdGF0aWMgaW5saW5lIGludCBtbV9mb3JiaWRzX3plcm9wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC01OTUte1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDo1OTY6I2lmIElTX0VOQUJMRUQoQ09ORklHX0tWTSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTk3LVx0aWYgKCFtbS1cdTAwM2Vjb250ZXh0LmFsbG93X2Nvd19zaGFyaW5nKVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oPTUyPXZvaWQgYXJjaF9zZXR1cF9uZXdfZXhlYyh2b2lkKTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaC03MC0jZGVmaW5lIFRJRl9HVUFSREVEX1NUT1JBR0VcdDE3XHQvKiBsb2FkIGd1YXJkZWQgc3RvcmFnZSBjb250cm9sIGJsb2NrICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaDo3MTojZGVmaW5lIFRJRl9JU09MQVRFX0JQX0dVRVNUXHQxOFx0LyogUnVuIEtWTSBndWVzdHMgd2l0aCBpc29sYXRlZCBCUCAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgtNzItI2RlZmluZSBUSUZfUEVSX1RSQVBcdFx0MTlcdC8qIE5lZWQgdG8gaGFuZGxlIFBFUiB0cmFwIG9uIGV4aXQgdG8gdXNlcm1vZGUgKi9cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyOiNpZm5kZWYgX19MSU5VWF9LVk1fUzM5MF9IXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOiNkZWZpbmUgX19MSU5VWF9LVk1fUzM5MF9IXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00LS8qXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1OiAqIEtWTSBzMzkwIHNwZWNpZmljIHN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC02LSAqXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTMtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNDojZGVmaW5lIF9fS1ZNX1MzOTBcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTE1LVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MTY9c3RydWN0IGt2bV9zMzkwX3NrZXlzIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0yMy1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI0OiNkZWZpbmUgS1ZNX1MzOTBfQ01NQV9QRUVLICgxIFx1MDAzY1x1MDAzYyAwKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMjUtXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzItICogQGNvdW50OiBTaXplIG9mIHRoZSByZXN1bHQgYnVmZmVyLlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM6ICogQGZsYWdzOiBDb250cm9sIG9wZXJhdGlvbiBtb2RlIHZpYSBLVk1fUzM5MF9DTU1BXyogZmxhZ3NcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM0OiAqIEByZW1haW5pbmc6IFVzZWQgd2l0aCBLVk1fUzM5MF9HRVRfQ01NQV9CSVRTLiBJbmRpY2F0ZXMgaG93IG1hbnkgZGlydHlcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM1LSAqICAgICAgICAgICAgIHBhZ2VzIGFyZSBzdGlsbCByZW1haW5pbmcuXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNjogKiBAbWFzazogVXNlZCB3aXRoIEtWTV9TMzkwX1NFVF9DTU1BX0JJVFMuIEJpdG1hcCBvZiBiaXRzIHRvIGFjdHVhbGx5IHNldFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzctICogICAgICAgIGluIHRoZSBQR1NURS5cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zOS0gKlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDA6ICogVXNlZCBpbiBLVk1fUzM5MF97RyxTfUVUX0NNTUFfQklUUyBpb2N0bHMuXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MS0gKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTQyPXN0cnVjdCBrdm1fczM5MF9jbW1hX2xvZyB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNTItXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1MzojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX1BPUiAgICAgICAxXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1NDojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX0NMRUFSICAgICAyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1NTojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX1NVQlNZU1RFTSA0XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1NjojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX0NQVV9JTklUICA4XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1NzojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX0lQTCAgICAgICAxNlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNTgtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1OTovKiBmb3IgS1ZNX1MzOTBfTUVNX09QICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC02MC1zdHJ1Y3Qga3ZtX3MzOTBfbWVtX29wIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC03OC0vKiB0eXBlcyBmb3Iga3ZtX3MzOTBfbWVtX29wLVx1MDAzZW9wICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo3OTojZGVmaW5lIEtWTV9TMzkwX01FTU9QX0xPR0lDQUxfUkVBRFx0MFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6ODA6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9MT0dJQ0FMX1dSSVRFXHQxXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo4MTojZGVmaW5lIEtWTV9TMzkwX01FTU9QX1NJREFfUkVBRFx0MlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6ODI6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9TSURBX1dSSVRFXHQzXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo4MzojZGVmaW5lIEtWTV9TMzkwX01FTU9QX0FCU09MVVRFX1JFQURcdDRcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjg0OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfQUJTT0xVVEVfV1JJVEVcdDVcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjg1OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfQUJTT0xVVEVfQ01QWENIR1x0NlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtODYtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC04Ny0vKiBmbGFncyBmb3Iga3ZtX3MzOTBfbWVtX29wLVx1MDAzZWZsYWdzICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo4ODojZGVmaW5lIEtWTV9TMzkwX01FTU9QX0ZfQ0hFQ0tfT05MWVx0XHQoMVVMTCBcdTAwM2NcdTAwM2MgMClcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjg5OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfRl9JTkpFQ1RfRVhDRVBUSU9OXHQoMVVMTCBcdTAwM2NcdTAwM2MgMSlcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjkwOiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfRl9TS0VZX1BST1RFQ1RJT05cdCgxVUxMIFx1MDAzY1x1MDAzYyAyKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtOTEtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo5MjovKiBmbGFncyBzcGVjaWZ5aW5nIGV4dGVuc2lvbiBzdXBwb3J0IHZpYSBLVk1fQ0FQX1MzOTBfTUVNX09QX0VYVEVOU0lPTiAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6OTM6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9FWFRFTlNJT05fQ0FQX0JBU0VcdCgxIFx1MDAzY1x1MDAzYyAwKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6OTQ6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9FWFRFTlNJT05fQ0FQX0NNUFhDSEdcdCgxIFx1MDAzY1x1MDAzYyAxKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtOTUtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD05Nj1zdHJ1Y3Qga3ZtX3MzOTBfcHN3IHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xMDEtLyogdmFsaWQgdmFsdWVzIGZvciB0eXBlIGluIGt2bV9zMzkwX2ludGVycnVwdCAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTAyOiNkZWZpbmUgS1ZNX1MzOTBfU0lHUF9TVE9QXHRcdDB4ZmZmZTAwMDB1XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMDM6I2RlZmluZSBLVk1fUzM5MF9QUk9HUkFNX0lOVFx0XHQweGZmZmUwMDAxdVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA0OiNkZWZpbmUgS1ZNX1MzOTBfU0lHUF9TRVRfUFJFRklYXHQweGZmZmUwMDAydVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA1OiNkZWZpbmUgS1ZNX1MzOTBfUkVTVEFSVFx0XHQweGZmZmUwMDAzdVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA2OiNkZWZpbmUgS1ZNX1MzOTBfSU5UX1BGQVVMVF9JTklUXHQweGZmZmUwMDA0dVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA3OiNkZWZpbmUgS1ZNX1MzOTBfSU5UX1BGQVVMVF9ET05FXHQweGZmZmUwMDA1dVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA4OiNkZWZpbmUgS1ZNX1MzOTBfTUNIS1x0XHRcdDB4ZmZmZTEwMDB1XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMDk6I2RlZmluZSBLVk1fUzM5MF9JTlRfQ0xPQ0tfQ09NUFx0XHQweGZmZmYxMDA0dVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTEwOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0NQVV9USU1FUlx0XHQweGZmZmYxMDA1dVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTExOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX1ZJUlRJT1x0XHQweGZmZmYyNjAzdVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTEyOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX1NFUlZJQ0VcdFx0MHhmZmZmMjQwMXVcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjExMzojZGVmaW5lIEtWTV9TMzkwX0lOVF9FTUVSR0VOQ1lcdFx0MHhmZmZmMTIwMXVcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjExNDojZGVmaW5lIEtWTV9TMzkwX0lOVF9FWFRFUk5BTF9DQUxMXHQweGZmZmYxMjAydVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTE1LS8qIEFueXRoaW5nIGJlbG93IDB4ZmZmZTAwMDB1IGlzIHRha2VuIGJ5IElOVF9JTyAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTE2OiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0lPKGFpLGNzc2lkLHNzaWQsc2NoaWQpICAgXFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTExNy1cdCgoKHNjaGlkKSkgfFx0XHRcdCAgICAgICBcXFxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTEyMC1cdCAoKGFpKSBcdTAwM2NcdTAwM2MgMjYpKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTIxOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0lPX01JTlx0XHQweDAwMDAwMDAwdVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTIyOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0lPX01BWFx0XHQweGZmZmRmZmZmdVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTIzOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0lPX0FJX01BU0tcdFx0MHgwNDAwMDAwMHVcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTEyNC1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD0xNDU9c3RydWN0IGt2bV9zMzkwX3BnbV9pbmZvIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xNTYtXHRfX3U4IG9wX2FjY2Vzc19pZDtcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjE1NzojZGVmaW5lIEtWTV9TMzkwX1BHTV9GTEFHU19JTENfVkFMSURcdDB4MDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjE1ODojZGVmaW5lIEtWTV9TMzkwX1BHTV9GTEFHU19JTENfMFx0MHgwMlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTU5OiNkZWZpbmUgS1ZNX1MzOTBfUEdNX0ZMQUdTX0lMQ18xXHQweDA0XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNjA6I2RlZmluZSBLVk1fUzM5MF9QR01fRkxBR1NfSUxDX01BU0tcdDB4MDZcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjE2MTojZGVmaW5lIEtWTV9TMzkwX1BHTV9GTEFHU19OT19SRVdJTkRcdDB4MDhcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTE2Mi1cdF9fdTggZmxhZ3M7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MTc0PXN0cnVjdCBrdm1fczM5MF9lbWVyZ19pbmZvIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xNzctXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNzg6I2RlZmluZSBLVk1fUzM5MF9TVE9QX0ZMQUdfU1RPUkVfU1RBVFVTXHQweDAxXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xNzktc3RydWN0IGt2bV9zMzkwX3N0b3BfaW5mbyB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MjMxPWVudW0gcHZfY21kX2RtcF9pZCB7XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyMzI6XHRLVk1fUFZfRFVNUF9JTklULFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjMzOlx0S1ZNX1BWX0RVTVBfQ09ORklHX1NUT1JfU1RBVEUsXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyMzQ6XHRLVk1fUFZfRFVNUF9DT01QTEVURSxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjIzNTpcdEtWTV9QVl9EVU1QX0NQVSxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTIzNi19O1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTI0Nj1lbnVtIHB2X2NtZF9pbmZvX2lkIHtcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI0NzpcdEtWTV9QVl9JTkZPX1ZNLFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjQ4Olx0S1ZNX1BWX0lORk9fRFVNUCxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTI0OS19O1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTI4MD1lbnVtIHB2X2NtZF9pZCB7XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODE6XHRLVk1fUFZfRU5BQkxFLFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjgyOlx0S1ZNX1BWX0RJU0FCTEUsXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODM6XHRLVk1fUFZfU0VUX1NFQ19QQVJNUyxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4NDpcdEtWTV9QVl9VTlBBQ0ssXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODU6XHRLVk1fUFZfVkVSSUZZLFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mjg2Olx0S1ZNX1BWX1BSRVBfUkVTRVQsXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODc6XHRLVk1fUFZfVU5TSEFSRV9BTEwsXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODg6XHRLVk1fUFZfSU5GTyxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4OTpcdEtWTV9QVl9EVU1QLFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjkwOlx0S1ZNX1BWX0FTWU5DX0NMRUFOVVBfUFJFUEFSRSxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI5MTpcdEtWTV9QVl9BU1lOQ19DTEVBTlVQX1BFUkZPUk0sXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0yOTItfTtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD0zMDM9c3RydWN0IGt2bV9zMzkwX3pwY2lfb3Age1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTMwOC1cdHVuaW9uIHtcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjMwOTpcdFx0LyogZm9yIEtWTV9TMzkwX1pQQ0lPUF9SRUdfQUVOICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMTAtXHRcdHN0cnVjdCB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzIzLS8qIHR5cGVzIGZvciBrdm1fczM5MF96cGNpX29wLVx1MDAzZW9wICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMjQ6I2RlZmluZSBLVk1fUzM5MF9aUENJT1BfUkVHX0FFTiAgICAgICAgICAgICAgICAwXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMjU6I2RlZmluZSBLVk1fUzM5MF9aUENJT1BfREVSRUdfQUVOICAgICAgMVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzI2LVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzI3LS8qIGZsYWdzIGZvciBrdm1fczM5MF96cGNpX29wLVx1MDAzZXUucmVnX2Flbi5mbGFncyAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzI4OiNkZWZpbmUgS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTl9IT1NUICAgICgxIFx1MDAzY1x1MDAzYyAwKVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzI5LVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzMwLS8qIERldmljZSBjb250cm9sIEFQSTogczM5MC1zcGVjaWZpYyBkZXZpY2VzICovXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzE6I2RlZmluZSBLVk1fREVWX0ZMSUNfR0VUX0FMTF9JUlFTXHQxXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzI6I2RlZmluZSBLVk1fREVWX0ZMSUNfRU5RVUVVRVx0XHQyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzM6I2RlZmluZSBLVk1fREVWX0ZMSUNfQ0xFQVJfSVJRU1x0XHQzXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzQ6I2RlZmluZSBLVk1fREVWX0ZMSUNfQVBGX0VOQUJMRVx0XHQ0XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzU6I2RlZmluZSBLVk1fREVWX0ZMSUNfQVBGX0RJU0FCTEVfV0FJVFx0NVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM2OiNkZWZpbmUgS1ZNX0RFVl9GTElDX0FEQVBURVJfUkVHSVNURVJcdDZcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjMzNzojZGVmaW5lIEtWTV9ERVZfRkxJQ19BREFQVEVSX01PRElGWVx0N1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM4OiNkZWZpbmUgS1ZNX0RFVl9GTElDX0NMRUFSX0lPX0lSUVx0OFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM5OiNkZWZpbmUgS1ZNX0RFVl9GTElDX0FJU01cdFx0OVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzQwOiNkZWZpbmUgS1ZNX0RFVl9GTElDX0FJUlFfSU5KRUNUXHQxMFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzQxOiNkZWZpbmUgS1ZNX0RFVl9GTElDX0FJU01fQUxMXHRcdDExXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zNDItLypcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM0My0gKiBXZSBjYW4gaGF2ZSB1cCB0byA0KjY0ayBwZW5kaW5nIHN1YmNoYW5uZWxzICYjNDM7IDggYWRhcHRlciBpbnRlcnJ1cHRzLFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzQ0OiAqIGFzIHdlbGwgYXMgdXAgIHRvIEFTWU5DX1BGX1BFUl9WQ1BVKktWTV9NQVhfVkNQVVMgcGZhdWx0IGRvbmUgaW50ZXJydXB0cy5cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM0NS0gKiBUaGVyZSBhcmUgYWxzbyBzY2xwIGFuZCBtYWNoaW5lIGNoZWNrcy4gVGhpcyBnaXZlcyB1c1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM0OC0gKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM0OTojZGVmaW5lIEtWTV9TMzkwX01BWF9GTE9BVF9JUlFTXHQyNjYyNTBcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM1MDojZGVmaW5lIEtWTV9TMzkwX0ZMSUNfTUFYX0JVRkZFUlx0MHgyMDAwMDAwXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zNTEtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD0zNTI9c3RydWN0IGt2bV9zMzkwX2lvX2FkYXB0ZXIge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM1OS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM2MDojZGVmaW5lIEtWTV9TMzkwX0FEQVBURVJfU1VQUFJFU1NJQkxFIDB4MDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM2MS1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD0zNjc9c3RydWN0IGt2bV9zMzkwX2Fpc19hbGwge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM3MS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM3MjojZGVmaW5lIEtWTV9TMzkwX0lPX0FEQVBURVJfTUFTSyAxXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNzM6I2RlZmluZSBLVk1fUzM5MF9JT19BREFQVEVSX01BUCAyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNzQ6I2RlZmluZSBLVk1fUzM5MF9JT19BREFQVEVSX1VOTUFQIDNcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM3NS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTM3Nj1zdHJ1Y3Qga3ZtX3MzOTBfaW9fYWRhcHRlcl9yZXEge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM4NC0vKiBrdm0gYXR0cl9ncm91cCAgb24gdm0gZmQgKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4NTojZGVmaW5lIEtWTV9TMzkwX1ZNX01FTV9DVFJMXHRcdDBcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4NjojZGVmaW5lIEtWTV9TMzkwX1ZNX1RPRFx0XHRcdDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4NzojZGVmaW5lIEtWTV9TMzkwX1ZNX0NSWVBUT1x0XHQyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozODg6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfTU9ERUxcdFx0M1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mzg5OiNkZWZpbmUgS1ZNX1MzOTBfVk1fTUlHUkFUSU9OXHRcdDRcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM5MDojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9UT1BPTE9HWVx0NVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzkxLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzkyLS8qIGt2bSBhdHRyaWJ1dGVzIGZvciBtZW1fY3RybCAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzkzOiNkZWZpbmUgS1ZNX1MzOTBfVk1fTUVNX0VOQUJMRV9DTU1BXHQwXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOTQ6I2RlZmluZSBLVk1fUzM5MF9WTV9NRU1fQ0xSX0NNTUFcdDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM5NTojZGVmaW5lIEtWTV9TMzkwX1ZNX01FTV9MSU1JVF9TSVpFXHQyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zOTYtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOTc6I2RlZmluZSBLVk1fUzM5MF9OT19NRU1fTElNSVRcdFx0VTY0X01BWFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzk4LVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mzk5Oi8qIGt2bSBhdHRyaWJ1dGVzIGZvciBLVk1fUzM5MF9WTV9UT0QgKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQwMDojZGVmaW5lIEtWTV9TMzkwX1ZNX1RPRF9MT1dcdFx0MFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDAxOiNkZWZpbmUgS1ZNX1MzOTBfVk1fVE9EX0hJR0hcdFx0MVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDAyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fVE9EX0VYVFx0XHQyXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MDMtXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD00MDQ9c3RydWN0IGt2bV9zMzkwX3ZtX3RvZF9jbG9jayB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDA4LVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDA5Oi8qIGt2bSBhdHRyaWJ1dGVzIGZvciBLVk1fUzM5MF9WTV9DUFVfTU9ERUwgKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQxMC0vKiBwcm9jZXNzb3IgcmVsYXRlZCBhdHRyaWJ1dGVzIGFyZSByL3cgKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQxMTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9QUk9DRVNTT1JcdDBcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQxMi1zdHJ1Y3Qga3ZtX3MzOTBfdm1fY3B1X3Byb2Nlc3NvciB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDE5LS8qIG1hY2hpbmUgcmVsYXRlZCBhdHRyaWJ1dGVzIGFyZSByL28gKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQyMDojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9NQUNISU5FXHRcdDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQyMS1zdHJ1Y3Qga3ZtX3MzOTBfdm1fY3B1X21hY2hpbmUge1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQyOC1cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQyOTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9QUk9DRVNTT1JfRkVBVFx0MlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDMwOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX01BQ0hJTkVfRkVBVFx0M1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDMxLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDMyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfTlJfQklUU1x0MTAyNFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDMzOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfRVNPUFx0MFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDM0OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0lFRjJcdDFcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzNTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUXzY0QlNDQU9cdDJcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzNjojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX1NJSUZcdDNcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzNzojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX0dQRVJFXHQ0XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0Mzg6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9HU0xTXHQ1XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0Mzk6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9JQlx0XHQ2XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NDA6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9DRUlcdDdcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQ0MTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX0lCU1x0OFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0tFWVx0OVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQzOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfQ01NQVx0MTBcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQ0NDojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX1BGTUZJXHQxMVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQ1OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0lHUElGXHQxMlxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQ2OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfS1NTXHQxM1xuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQ3OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfQVNURkxFSUUyXHQxNFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDQ4LXN0cnVjdCBrdm1fczM5MF92bV9jcHVfZmVhdCB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDUxLVxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDUyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX1BST0NFU1NPUl9TVUJGVU5DXHQ0XG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NTM6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfTUFDSElORV9TVUJGVU5DXHRcdDVcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQ1NC0vKiBmb3IgXCYjMzQ7dGVzdCBiaXRcJiMzNDsgaW5zdHJ1Y3Rpb25zIE1TQiAwIGJpdCBvcmRlcmluZywgZm9yIFwmIzM0O3F1ZXJ5XCYjMzQ7IHJhdyBibG9ja3MgKi9cbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTQ1NT1zdHJ1Y3Qga3ZtX3MzOTBfdm1fY3B1X3N1YmZ1bmMge1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTI0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRXhhbWluaW5nIEtjb25maWcgZm9yIHMzOTAgS1ZNIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBLVk0gaXMgY29uZmlndXJlZCBmb3IgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBHaXZlbiBteSBkZWVwIGtub3dsZWRnZSBvZiBrZXJuZWwgY29uZmlndXJhdGlvbiwgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgYXJjaC9zMzkwL2t2bS9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgYWxsIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZGVmaW5pdGlvbnMuIEl0JiMzOTtsbCBzaG93IG1lIHRoZSBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHNldHRpbmdzIHRoYXQgZ292ZXJuIEtWTSYjMzk7cyBiZWhhdmlvciBvbiB0aGF0IHNwZWNpZmljIHBsYXRmb3JtLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGNvbmZpZ3VyYXRpb24ga25vYnMgaXMgY3J1Y2lhbCBmb3IgYW55IGZ1cnRoZXIgd29yayBJIG5lZWQgdG8gZG8gb24gdGhpcyBhc3BlY3Qgb2YgdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIEtWTSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdHNvdXJjZSBcJiMzNDt2aXJ0L2t2bS9LY29uZmlnXCYjMzQ7XG4gICA2Olx0XG4gICA3Olx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuICAgODpcdFx0ZGVmX2Jvb2wgeVxuICAgOTpcdFx0cHJvbXB0IFwmIzM0O0tWTVwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1biBvdGhlclxuICAxMjpcdFx0ICBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZCBkaXNhYmxlZC5cbiAgMTY6XHRcbiAgMTc6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBLVk1cbiAgMjA6XHRcdGRlZl90cmlzdGF0ZSB5XG4gIDIxOlx0XHRwcm9tcHQgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuICAyMzpcdFx0c2VsZWN0IEtWTV9BU1lOQ19QRlxuICAyNDpcdFx0c2VsZWN0IEtWTV9BU1lOQ19QRl9TWU5DXG4gIDI1Olx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcbiAgMjc6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xuICAyODpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuICAyOTpcdFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcbiAgMzA6XHRcdHNlbGVjdCBLVk1fVkZJT1xuICAzMTpcdFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXG4gIDMyOlx0XHRzZWxlY3QgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xuICAzMzpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgU3VwcG9ydCBob3N0aW5nIHBhcmF2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcyB1c2luZyB0aGUgU0lFXG4gIDM2Olx0XHQgIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdHkgb24gdGhlIG1haW5mcmFtZS4gVGhpcyBzaG91bGQgd29ya1xuICAzNzpcdFx0ICBvbiBhbnkgNjRiaXQgbWFjaGluZS5cbiAgMzg6XHRcbiAgMzk6XHRcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdGhyb3VnaFxuICA0MDpcdFx0ICBhIGNoYXJhY3RlciBkZXZpY2Ugbm9kZSBuYW1lZCAvZGV2L2t2bS5cbiAgNDE6XHRcbiAgNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDQzOlx0XHQgIHdpbGwgYmUgY2FsbGVkIGt2bS5cbiAgNDQ6XHRcbiAgNDU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbiAgNDg6XHRcdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBLVk1cbiAgNTA6XHRcdGhlbHBcbiAgNTE6XHRcdCAgQWxsb3cgQ0FQX1NZU19BRE1JTiB1c2VycyB0byBjcmVhdGUgS1ZNIHZpcnR1YWwgbWFjaGluZXMgdGhhdCBhcmVcbiAgNTI6XHRcdCAgY29udHJvbGxlZCBieSB1c2Vyc3BhY2UuXG4gIDUzOlx0XG4gIDU0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDU1Olx0XG4gIDU2Olx0ZW5kaWYgIyBWSVJUVUFMSVpBVElPTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDg2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgcGF0Y2ggcmVsYXRlZCB0byBgVklSVFVBTElaQVRJT05gIGFuZCBzcGVjaWZpY2FsbHkgYEtWTWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcy4KCkxldCYjMzk7cyBkaXZlIGluIGFuZCByZXZpZXcgdGhlIGRpZmYuIEl0IHNlZW1zIHdlIGhhdmUgc2V2ZXJhbCBmaWxlIG1vZGlmaWNhdGlvbnMgYWNyb3NzIGBhcmNoL3MzOTAva3ZtL3MzOTAvYC4gVGhlIGNoYW5nZXMgYXBwZWFyIHRvIGJlIG1haW5seSBjb25jZXJuZWQgd2l0aCBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uOgoKMS4gIGBoYW5kbGVfc3RoeWlgIGlzIGNoYW5naW5nIGBnZXRfemVyb2VkX3BhZ2VgIHRvIGBremFsbG9jYCwgYW5kIGBmcmVlX3BhZ2VgIHRvIGBrZnJlZWAuCjIuICBga3ZtX3MzOTBfZ2liX2Rlc3Ryb3lgIGFuZCBga3ZtX3MzOTBfZ2liX2luaXRgIGhhdmUgc2ltaWxhciBjaGFuZ2VzLCB1c2luZyBga3phbGxvY2AgaW5zdGVhZCBvZiBgZ2V0X3plcm9lZF9wYWdlYCBhbmQgYGtmcmVlYCBpbnN0ZWFkIG9mIGBmcmVlX3BhZ2VgLgozLiAgYGhhbmRsZV9zdHNpYCBhbHNvIHJlZmxlY3RzIHRoaXMgcGF0dGVybiBvZiBzd2l0Y2hpbmcgZnJvbSBgZ2V0X3plcm9lZF9wYWdlYCBhbmQgYGZyZWVfcGFnZWAgdG8gYGt6YWxsb2NgIGFuZCBga2ZyZWVgLgo0LiAgYGt2bV9hcmNoX2luaXRfdm1gICBhbmQgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAgYXJlIGRvaW5nIHRoZSBzYW1lIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMuCgpOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogSXMgdGhpcyBXb3J0aEZ1enppbmc/IEkgbmVlZCB0byBhcHBseSBteSBrbm93bGVkZ2Ugb2Ygd2hhdCBtYWtlcyBhIHBhdGNoIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBndWlkZWxpbmVzIGFyZSBwcmV0dHkgY2xlYXIuIEl0JiMzOTtzIGEgJiMzNDtubyYjMzQ7IGlmIGl0JiMzOTtzIHB1cmVseSBkb2N1bWVudGF0aW9uLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBwYXJ0aWN1bGFybHkgdGhvc2UgcmVseWluZyBvbiBzb2Z0d2FyZSBlbXVsYXRpb24sIGxpa2UgUUVNVS4KCkJ1dCB0aGlzIHBhdGNoIGNsZWFybHkgbW9kaWZpZXMgYGFyY2gvczM5MGAgS1ZNIGNvZGUhIEEgY29yZSBhcmNoaXRlY3R1cmUgY29tcG9uZW50LiBTbywgbXkgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBCdXQgSSBtdXN0IGJlIHN1cmUuIEkgbmVlZCB0byBiZSBzdXJlIHRoaXMgaXMgYSBjb2RlIHBhdGggSSBjYW4gZXZlbiBleGVjdXRlISBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIEtWTSBvbiBzMzkwIGNhbiBiZSBydW4gYW5kIGZ1enplZC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBDYW4gczM5MCBLVk0gKnJ1biogaW4gUUVNVT8gQW5kICp3aHkqIGRvZXMgUUVNVSBtYXR0ZXI/IFRoZSBndWlkZWxpbmVzIG1lbnRpb24gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhpcyBzZWVtcyBjZW50cmFsIHRvIHRoZSBkZXRlcm1pbmF0aW9uLgoKSSByZWNhbGwgdGhhdCBzMzkwIEtWTSBpcyB1c2VkIHdoZW4gTGludXggczM5MCBpcyBydW5uaW5nIHdpdGggS1ZNLiBCdXQgd2hhdCBhYm91dCBRRU1VPyBJIGtub3cgUUVNVSBzdXBwb3J0cyBzMzkweCB1c2luZyBUQ0csIGJ1dCBkb2VzbiYjMzk7dCB0aGUgVENHIGltcGxlbWVudGF0aW9uIG9uIHMzOTB4ICpub3QqIHN1cHBvcnQgbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBwYXJ0aWN1bGFybHkgdGhlIFNJRSAoU3lzdGVtIEluc3RydWN0aW9uIEV4dGVuc2lvbikgaW5zdHJ1Y3Rpb24gc2V0PyBJc24mIzM5O3QgU0lFIGVzc2VudGlhbCBmb3IgS1ZNPwoKVGhlbiBJIHJlYWxpemUgSSBuZWVkIHRvIGNvbmZpcm06IERvZXMgUUVNVSBUQ0cgczM5MHggc3VwcG9ydCBLVk0/IEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgbGlrZSBgYXJjaC9zMzkwL2t2bS9zMzkwL3NpZS5TYCBvciBTSUUgaW5zdHJ1Y3Rpb25zIGluIHMzOTAuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIG1hdHRlci4gSWYgczM5MCBLVk0gcmVsaWVzIG9uIFNJRSwgYW5kIFFFTVUmIzM5O3MgVENHIGxhY2tzIFNJRSBzdXBwb3J0LCB0aGVuIHRoaXMgcGF0Y2ggaXMgdW5mb3J0dW5hdGVseSAqbm90KiBmdXp6YWJsZSB1bmRlciBzdGFuZGFyZCBRRU1VLiBCdXQgSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIFNJRSBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NpZTY0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaD02ODM9dm9pZCBrdm1fYXJjaF9jcnlwdG9fc2V0X21hc2tzKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyAqYXBtLFxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjg4LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo2ODk6aW50IF9fc2llNjRhKHBoeXNfYWRkcl90IHNpZV9ibG9ja19waHlzLCBzdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrICpzaWVfYmxvY2ssIHU2NCAqcnNhLFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02OTAtXHQgICAgIHVuc2lnbmVkIGxvbmcgZ2FzY2UpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02OTEtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjY5MjpzdGF0aWMgaW5saW5lIGludCBzaWU2NGEoc3RydWN0IGt2bV9zMzkwX3NpZV9ibG9jayAqc2llX2Jsb2NrLCB1NjQgKnJzYSwgdW5zaWduZWQgbG9uZyBnYXNjZSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjkzLXtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6Njk0Olx0cmV0dXJuIF9fc2llNjRhKHZpcnRfdG9fcGh5cyhzaWVfYmxvY2spLCBzaWVfYmxvY2ssIHJzYSwgZ2FzY2UpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02OTUtfVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUz0xODQ9RVhQT1JUX1NZTUJPTChfX1dBUk5fdHJhcClcbi0tXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlMtMTg5LS8qXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MTkwOiAqIF9fc2llNjRhIGNhbGxpbmcgY29udmVudGlvbjpcbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUy0xOTEtICogJXIyIHBvaW50ZXIgdG8gc2llIGNvbnRyb2wgYmxvY2sgcGh5c1xuLS1cbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUy0xOTUtICovXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MTk2OlNZTV9GVU5DX1NUQVJUKF9fc2llNjRhKVxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TLTE5Ny1cdHN0bWdcdCVyNiwlcjE0LF9fU0ZfR1BSUyglcjE1KVx0IyBzYXZlIGtlcm5lbCByZWdpc3RlcnNcbi0tXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM9MjMxPVNZTV9JTk5FUl9MQUJFTChzaWVfZXhpdCwgU1lNX0xfR0xPQkFMKVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUy0yNDItXHRCUl9FWFx0JXIxNFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TOjI0MzpTWU1fRlVOQ19FTkQoX19zaWU2NGEpXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MjQ0OkVYUE9SVF9TWU1CT0woX19zaWU2NGEpXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlMtMjQ1LUVYUE9SVF9TWU1CT0woc2llX2V4aXQpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYz0zMzM9c3RhdGljIHZvaWQgbm90cmFjZSBzMzkwX2JhY2t1cF9tY2NrX2luZm8oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zMzctXG5hcmNoL3MzOTAva2VybmVsL25taS5jOjMzODpcdC8qIHIxNCBjb250YWlucyB0aGUgc2llIGJsb2NrLCB3aGljaCB3YXMgc2V0IGluIHNpZTY0YSAqL1xuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYy0zMzktXHRzdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrICpzaWVfYmxvY2sgPSBwaHlzX3RvX3ZpcnQocmVncy1cdTAwM2VncHJzWzE0XSk7XG4tLVxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jPTMzOD12b2lkIG5vaW5zdHIgX19kb19wZ21fY2hlY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jLTM1Ni1cdCAqIEluIGNhc2Ugb2YgYSBndWVzdCBmYXVsdCwgc2hvcnQtY2lyY3VpdCB0aGUgZmF1bHQgaGFuZGxlciBhbmQgcmV0dXJuLlxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jOjM1NzpcdCAqIFRoaXMgd2F5IHRoZSBzaWU2NGEoKSBmdW5jdGlvbiB3aWxsIHJldHVybiAwOyBmYXVsdCBhZGRyZXNzIGFuZFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jLTM1OC1cdCAqIG90aGVyIHJlbGV2YW50IGJpdHMgYXJlIHNhdmVkIGluIGN1cnJlbnQtXHUwMDNldGhyZWFkLmdtYXBfdGVpZCwgYW5kXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz00NzQ4PWludCBub2luc3RyIGt2bV9zMzkwX2VudGVyX2V4aXRfc2llKHN0cnVjdCBrdm1fczM5MF9zaWVfYmxvY2sgKnNjYixcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTQ3NTktXHQgKi9cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6NDc2MDpcdHJldCA9IHNpZTY0YShzY2IsIGdwcnMsIGdhc2NlKTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNDc2MS1cbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvdnNpZS5jPTExODc9c3RhdGljIGludCBkb192c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSwgc3RydWN0IGdtYXAgKnNnKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC92c2llLmMtMTIxNC1cdC8qXG5hcmNoL3MzOTAva3ZtL3MzOTAvdnNpZS5jOjEyMTU6XHQgKiBTaW11bGF0ZSBhIFNJRSBlbnRyeSBvZiB0aGUgVkNQVSAoc2VlIHNpZTY0YSksIHNvIFZDUFUgYmxvY2tpbmdcbmFyY2gvczM5MC9rdm0vczM5MC92c2llLmMtMTIxNi1cdCAqIGFuZCBWQ1BVIHJlcXVlc3RzIGFsc28gaGluZGVyIHRoZSB2U0lFIGZyb20gcnVubmluZyBhbmQgbGVhZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTM0OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIEFzc2Vzc21lbnQqKgoKT2theSwgd2FpdCBhIG1pbnV0ZSEgU3l6a2FsbGVyICpkb2VzKiB0YXJnZXQgczM5MHghIFJpZ2h0LCBMaW51eC9zMzkweCBpcyBzdXBwb3J0ZWQuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnM6IGBrdm1fYXJjaF9pbml0X3ZtYCwgYGhhbmRsZV9zdGh5aWAsIGBoYW5kbGVfc3RzaWAsIGFuZCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYC4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBhY3R1YWxseSAqcmVhY2hhYmxlKiB3aGVuIHJ1bm5pbmcgU3l6a2FsbGVyIG9uIHMzOTB4PwoKWWVzLCBjb25maXJtZWQuIFRoZSBgS1ZNX0NSRUFURV9WTWAgaW9jdGwgY2FsbHMgYGt2bV9hcmNoX2luaXRfdm1gIG9uIHMzOTB4LiBBbmQgYEtWTV9SVU5gIGhhbmRsZXMgZXhpdHMgYW5kIGludGVyY2VwdHMsIHNwZWNpZmljYWxseSBjYWxsaW5nIGBoYW5kbGVfc3RoeWlgIGFuZCBgaGFuZGxlX3N0c2lgLiBGdXJ0aGVybW9yZSwgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAgZ2V0cyBjYWxsZWQgZHVyaW5nIENNTUEgc2V0dXAsIGFuZCBga3ZtX3MzOTBfZ2liX2luaXRgIGhhcHBlbnMgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbi4KClRoZSBrZXkgcXVlc3Rpb246IGlzIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgKndvcnRoKiBmdXp6aW5nPyBMZXQmIzM5O3MgZ28gdGhyb3VnaCB0aGUgY2hlY2tsaXN0LgoKVGhlIGNyaXRlcmlhIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzOyBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciB0cmFjZXBvaW50czsgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cy9tYWNyb3MgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3c7IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzOyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVyIGNvZGUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZTsgb3IgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpOb25lIG9mIHRob3NlIGV4Y2x1c2lvbiBjcml0ZXJpYSBhcHBseSBoZXJlISBUaGlzIGxvb2tzIGdvb2QhCgpPa2F5LCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsICYjMzQ7SWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4mIzM0OwoKQWxyaWdodCwgbGV0JiMzOTtzIHZlcmlmeSB3aGF0IGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gcmV0dXJuLgoKRmlyc3QgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczoKMS4gIGBoYW5kbGVfc3RoeWlgIChpbiBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMpIC0gKlRoaXMqIGlzIGEga2V5IG9uZS4gSXQmIzM5O3MgYSBub24tc3RhdGljIGZ1bmN0aW9uISBMZXQmIzM5O3MgY2hlY2sgYGludGVyY2VwdC5jYCBtb3JlIGNsb3NlbHkuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IGhhbmRsZV9zdGh5aVxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYz0zOTY9c3RhdGljIGludCBoYW5kbGVfcGFydGlhbF9leGVjdXRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYy00MTItICovXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmM6NDEzOmludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jLTQxNC17XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaD00MjE9c3RhdGljIGlubGluZSB2b2lkIGt2bV9zMzkwX3JldHJ5X2luc3RyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5oLTQyNy1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg6NDI4OmludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmgtNDI5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjc1MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgYGhhbmRsZV9zdHNpYCBGdW5jdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGBoYW5kbGVfc3RzaWAgaW4gdGhlIHMzOTAgS1ZNIGFyY2hpdGVjdHVyZS4gTGV0JiMzOTtzIHNlZSwgdGhlIGZpbGUgaXMgYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGFuZCB0aGlzIGlzIGNydWNpYWwgZm9yIGhvdyBpdCYjMzk7cyB1c2VkLCBpcyBgaGFuZGxlX3N0c2lgIGRlY2xhcmVkIGFzIGBzdGF0aWNgIG9yIG5vbi1zdGF0aWM/IFRoYXQgd2lsbCBkaWN0YXRlIGl0cyBzY29wZSBhbmQgaG93IGl0JiMzOTtzIGFjdHVhbGx5IGFjY2Vzc2VkIHdpdGhpbiB0aGUgYnJvYWRlciBLVk0gZnJhbWV3b3JrLiBJIG5lZWQgdG8gY2hlY2sgaXRzIGRlY2xhcmF0aW9uIHRvIGFzY2VydGFpbiBpdHMgdmlzaWJpbGl0eSBhbmQgaW50ZW5kZWQgdXNhZ2UuIFRoaXMgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgb3RoZXIgcGFydHMgb2YgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYW5kbGVfc3RzaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmM9ODA1PXN0YXRpYyBpbnQgaGFuZGxlX3N0aWRwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTgyOS1cbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmM6ODMwOnN0YXRpYyB2b2lkIGhhbmRsZV9zdHNpXzNfMl8yKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHN5c2luZm9fM18yXzIgKm1lbSlcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtODMxLXtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jPTg1Nz1zdGF0aWMgdm9pZCBpbnNlcnRfc3RzaV91c3JfZGF0YShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBhZGRyLCB1OCBhcixcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTg2Ny1cbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmM6ODY4OnN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYy04Njkte1xuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTI2LVx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjkyNzpcdFx0aGFuZGxlX3N0c2lfM18yXzIodmNwdSwgbWVtKTtcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTI4LVx0XHRicmVhaztcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTkzMC1cdFx0aW5zZXJ0X3N0c2lfdXNyX2RhdGEodmNwdSwgb3BlcmFuZDIsIGFyLCBmYywgc2VsMSwgc2VsMik7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjkzMTpcdFx0dHJhY2Vfa3ZtX3MzOTBfaGFuZGxlX3N0c2kodmNwdSwgZmMsIHNlbDEsIHNlbDIsIG9wZXJhbmQyKTtcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTMyLVx0XHRyZXR1cm4gLUVSRU1PVEU7XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYy05NDctXHR9XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjk0ODpcdHRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTk0OS1cdGtmcmVlKG1lbSk7XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYz05NjA9aW50IGt2bV9zMzkwX2hhbmRsZV9iMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYy0xMDA1LVx0Y2FzZSAweDdkOlxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYzoxMDA2Olx0XHRyZXR1cm4gaGFuZGxlX3N0c2kodmNwdSk7XG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTEwMDctXHRjYXNlIDB4YWY6XG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3RyYWNlLmg9Mzg3PVRSQUNFX0VWRU5UKGt2bV9zMzkwX2hhbmRsZV9zdGZsLFxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC90cmFjZS5oLTQwNC1cbmFyY2gvczM5MC9rdm0vczM5MC90cmFjZS5oOjQwNTpUUkFDRV9FVkVOVChrdm1fczM5MF9oYW5kbGVfc3RzaSxcbmFyY2gvczM5MC9rdm0vczM5MC90cmFjZS5oLTQwNi1cdCAgICBUUF9QUk9UTyhWQ1BVX1BST1RPX0NPTU1PTiwgaW50IGZjLCBpbnQgc2VsMSwgaW50IHNlbDIsIHU2NCBhZGRyKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5ODcKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgS1ZNL3MzOTAgQ29kZSBDaGFuZ2VzKioKCk9rYXksIHNvIGBrdm1fczM5MF9oYW5kbGVfYjJgIGNhbGxzIGBoYW5kbGVfc3RzaWAsIGFuZCBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSByZWNlbnQgbW9kaWZpY2F0aW9ucy4gRmlyc3QsIGxldCYjMzk7cyBjb25maXJtIHRoYXQgYGt2bV9zMzkwX2hhbmRsZV9iMmAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXQgaXNuJiMzOTt0LiBHb29kLiBOb3csIEkgd2FudCB0byByZXZpZXcgYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZCBhcyBhIHJlc3VsdCBvZiB0aGlzIGNoYW5nZS4KCkhlcmUmIzM5O3MgdGhlIGxpc3QgSSYjMzk7dmUgY29tcGlsZWQ6CgoxLiAgYGhhbmRsZV9zdGh5aWAgaXMgbm9uLXN0YXRpYywgd2hpY2ggaXMgcmVsZXZhbnQuCjIuICBga3ZtX3MzOTBfZ2liX2luaXRgIGFuZCBga3ZtX3MzOTBfZ2liX2Rlc3Ryb3lgIGFyZSBub24tc3RhdGljLCB0aG91Z2ggdGhlIGluaXQgaXMgbWFya2VkIGFzIGBfX2luaXRgLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBub3QgYSBiaWcgY29uY2VybiBoZXJlLgozLiAgYGhhbmRsZV9zdHNpYCwgb2J2aW91c2x5LCBzaW5jZSBpdCYjMzk7cyBjYWxsZWQgYnkgYGt2bV9zMzkwX2hhbmRsZV9iMmAgYW5kIGlzIGFsc28gbm9uLXN0YXRpYy4KNC4gIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gIGFyZSBub24tc3RhdGljIGFzIHdlbGwuIFRoaXMgbWFrZXMgbWUgY3VyaW91cyBhYm91dCB0aGUgb3ZlcmFsbCBWTSBsaWZlY3ljbGUuCjUuICBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCBhbmQgYGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hYCBhcmUgYWxzbyBub24tc3RhdGljIGFuZCB3YXJyYW50IHNvbWUgaW52ZXN0aWdhdGlvbi4KCk5vdywgSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAg4oCTIEkmIzM5O2xsIGdvIHRvIGBhcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jYCB0byBleGFtaW5lIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MzY1Nz12b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTM2NjMtXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjM2NjQ6aW50IGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTM2NjUte1xuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MzY4ND1zdGF0aWMgaW50IGt2bV9zMzkwX3ZjcHVfc2V0dXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzc0Ni1cdGlmICh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnVzZV9jbW1hKSB7XG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjM3NDc6XHRcdHJjID0ga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hKHZjcHUpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0zNzQ4LVx0XHRpZiAocmMpXG4tLVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaD00NjU9dm9pZCBrdm1fczM5MF9zeW5jX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg6NDY2OmludCBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmgtNDY3LXZvaWQga3ZtX3MzOTBfdmNwdV91bnNldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyMjEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBsaWZlY3ljbGUgb2YgYSBLVk0gdmlydHVhbCBtYWNoaW5lLCBzcGVjaWZpY2FsbHkgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemF0aW9uIGFuZCBkZXN0cnVjdGlvbi4gU28sIEkmIzM5O20gdGhpbmtpbmcsIGxldCYjMzk7cyBkaXNzZWN0IGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gLiBJJiMzOTtsbCBiZSBsb29raW5nIGF0IGhvdyB0aGV5JiMzOTtyZSBpbXBsZW1lbnRlZCwgd2hhdCByZXNvdXJjZXMgdGhleSBhbGxvY2F0ZSBhbmQgZGVhbGxvY2F0ZSwgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIHMzOTAtc3BlY2lmaWMgYXJjaGl0ZWN0dXJhbCBjb21wb25lbnRzIHdpdGhpbiB0aGUgS1ZNIGZyYW1ld29yay4gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IHRvIGBhcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHZpcnR1YWwgbWFjaGluZSYjMzk7cyBlbnRyeSBhbmQgZXhpdCBwb2ludHMgb24gdGhpcyBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MzIzMj12b2lkIGt2bV9hcmNoX2ZyZWVfdm0oc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzIzOS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6MzI0MDppbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzI0MS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NjQ3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgS1ZNL3MzOTAgR0lCIEluaXRpYWxpemF0aW9uIGFuZCBEZXN0cnVjdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gdGhlIEtWTS9zMzkwIGFyY2hpdGVjdHVyZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBob3cgR2xvYmFsIEludGVycnVwdCBCbG9ja3MsIG9yIEdJQnMsIGFyZSBoYW5kbGVkLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBga3ZtX3MzOTBfZ2liX2luaXRgIGFuZCBga3ZtX3MzOTBfZ2liX2Rlc3Ryb3lgIGZ1bmN0aW9ucy4gVGhleSBzaG91bGQgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBhbGxvY2F0aW9uLCBzZXR1cCwgYW5kIGNsZWFudXAgb2YgdGhlc2UgR0lCIHN0cnVjdHVyZXMuIEkmIzM5O2xsIGZpbmQgdGhlbSB3aXRoaW4gYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIG1hbmFnaW5nIHRoZXNlIGludGVycnVwdHMgc2hvdWxkIHJlc2lkZSwgc28gdGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgdG8gcHJvdmlkZSB0aGUgZGV0YWlscyBJIG5lZWQuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfZ2liXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYz0zNjc3PXN0YXRpYyBzdHJ1Y3QgYWlycV9zdHJ1Y3QgZ2liX2FsZXJ0X2lycSA9IHtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMzY4MC1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzozNjgxOnZvaWQga3ZtX3MzOTBfZ2liX2Rlc3Ryb3kodm9pZClcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0zNjgyLXtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMzY5NS1cbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzozNjk2OmludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYylcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0zNjk3LXtcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jPTQ5Nj1zdGF0aWMgaW50IF9faW5pdCBfX2t2bV9zMzkwX2luaXQodm9pZClcbi0tXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTUyOC1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6NTI5Olx0cmMgPSBrdm1fczM5MF9naWJfaW5pdChHQUxfSVNDKTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNTMwLVx0aWYgKHJjKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9NTUwPXN0YXRpYyB2b2lkIF9fa3ZtX3MzOTBfZXhpdCh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNTU0LVxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzo1NTU6XHRrdm1fczM5MF9naWJfZGVzdHJveSgpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy01NTYtXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pKVxuLS1cbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg9NTY0PXZvaWQga3ZtX3MzOTBfZ2lzYV9lbmFibGUoc3RydWN0IGt2bSAqa3ZtKTtcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg6NTY1OmludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYyk7XG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5oOjU2Njp2b2lkIGt2bV9zMzkwX2dpYl9kZXN0cm95KHZvaWQpO1xuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaC01Njctdm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2NjcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gS1ZNIGZvciBzMzkwIEFyY2hpdGVjdHVyZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBjbG9zZSBsb29rIGF0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciBLVk0sIHNwZWNpZmljYWxseSBmb3IgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBuYXZpZ2F0ZSB0byB0aGUgYGFyY2gvczM5MC9rdm0vYCBkaXJlY3RvcnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBJJiMzOTttIHRoaW5raW5nIHRoZSBgTWFrZWZpbGVgIGluIHRoZXJlIHdpbGwgZ2l2ZSBtZSB0aGUgbG93ZG93biBvbiB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgdGhlIEtWTSBjb21wb25lbnRzIHNwZWNpZmljIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGBLY29uZmlnYCBkZXBlbmRlbmNpZXMgdG8gc2VlIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkLCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIGhvdyBldmVyeXRoaW5nIGlzIGludGVyY29ubmVjdGVkIGZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGRlcGVuZGVuY2llcyBvciBwb3RlbnRpYWwgY29uZmxpY3RzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgdW5kZXJzdGFuZGluZyB0aGUgczM5MCBLVk0gYnVpbGQgcHJvY2VzcyBhbmQgYW55IHJlbGF0ZWQgaXNzdWVzIG9yIG1vZGlmaWNhdGlvbnMgSSBtaWdodCB3YW50IHRvIG1ha2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjIE1ha2VmaWxlIGZvciBrZXJuZWwgdmlydHVhbCBtYWNoaW5lcyBvbiBzMzkwXG4gICAzOlx0I1xuICAgNDpcdCMgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDA4XG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IHMzOTAvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDUzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBTMzkwIEtWTSBNYWtlZmlsZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoZSBzMzkwIEtWTSBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgc3RydWN0dXJlZCBmb3IgdGhhdCBhcmNoaXRlY3R1cmUuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBgTWFrZWZpbGVgIGxvY2F0ZWQgaW4gYGFyY2gvczM5MC9rdm0vczM5MC9gLiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IOKAkyB0aGUgYnVpbGQgc2NyaXB0cyBhcmUgb2Z0ZW4gdGhlIGJlc3QgcGxhY2UgdG8gZ2FpbiBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgYSBwcm9qZWN0LiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgY29tcG9uZW50cywgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBvciBzZXR0aW5ncyBiZWluZyB1c2VkIGZvciB0aGUgczM5MCBLVk0gaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiBob3cgdGhlIGNvcmUgS1ZNIG1vZHVsZXMgYXJlIGNvbXBpbGVkLCBhbnkgY3VzdG9tIG9iamVjdCBmaWxlcywgYW55IHNwZWNpZmljIGluY2x1ZGUgcGF0aHMsIGFuZCBhbnkgbGluayBmbGFncy4gSeKAmW0gYWxzbyBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHNwZWNpZmljIGZlYXR1cmVzIG9yIG9wdGltaXphdGlvbnMgZm9yIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBgTWFrZWZpbGVgIHNob3VsZCBwcm92aWRlIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCBmb3IgZGVlcGVyIGludmVzdGlnYXRpb24uIExldOKAmXMgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9zMzkwL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdEtWTSA6PSAuLi8uLi8uLi8uLi92aXJ0L2t2bVxuICAgNDpcdGluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1cbiAgIDU6XHRpbmNsdWRlICQoc3JjdHJlZSkvYXJjaC9zMzkwL2t2bS9nbWFwL01ha2VmaWxlXG4gICA2Olx0XG4gICA3Olx0Y2NmbGFncy15IDo9IC1JJChzcmMpIC1JJChzcmN0cmVlKS9hcmNoL3MzOTAva3ZtL2dtYXBcbiAgIDg6XHRcbiAgIDk6XHRrdm0teSAmIzQzOz0gczM5MC5vIGludGVyY2VwdC5vIGludGVycnVwdC5vIHByaXYubyBzaWdwLm9cbiAgMTA6XHRrdm0teSAmIzQzOz0gZGlhZy5vIGdhY2Nlc3MubyBndWVzdGRiZy5vIHZzaWUubyBwdi5vXG4gIDExOlx0a3ZtLXkgJiM0Mzs9ICQoZ21hcC15KVxuICAxMjpcdFxuICAxMzpcdGt2bS0kKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgJiM0Mzs9IHBjaS5vXG4gIDE0Olx0b2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IGt2bS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjEyCgkJCQkJCQlvdXRwdXQ6IDE4NAoJCQkJCQkJdGhvdWdodHM6IDc1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBLVk0gQ29uZmlndXJhdGlvbiBhbmQgUmVsZXZhbnQgU3ltYm9scyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgS1ZNLXJlbGF0ZWQgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBDT05GSUdfS1ZNYCBhcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoaXMgaXMgYWxsIHdpcmVkIHVwLCBzbyBJIHN0YXJ0ZWQgYnkgY2hlY2tpbmcgYGFyY2gvczM5MC9LY29uZmlnYCBhbmQgYHZpcnQva3ZtL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBJIG5lZWQgdG8gY29uc2lkZXIuCgpXaXRoaW4gYGFyY2gvczM5MC9rdm0vS2NvbmZpZ2AsIEkgZm91bmQgdGhlIGBWSVJUVUFMSVpBVElPTmAgbWVudSBhbmQgdGhlIGBLVk1gIGNvbmZpZywgd2hpY2ggZGVwZW5kcyBvbiBgVklSVFVBTElaQVRJT05gLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UuIEkmIzM5O20gdHJ5aW5nIHRvIGRlY2lkZSBpZiBJIG5lZWQgYm90aCBgVklSVFVBTElaQVRJT05gICphbmQqIGBLVk1gLCBvciBpZiBlbmFibGluZyBgS1ZNYCBpbXBsaWNpdGx5IGhhbmRsZXMgYFZJUlRVQUxJWkFUSU9OYCwgb3IgcGVyaGFwcyBpZiBpdCYjMzk7cyB0aGUgb3RoZXIgd2F5IGFyb3VuZC4gSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLgoKTmV4dCwgSSB0dXJuZWQgbXkgYXR0ZW50aW9uIHRvIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZCBpbiB0aGlzIHBhdGNoIHRvIHNlZSBob3cgdGhleSYjMzk7cmUgY29ubmVjdGVkLiBJIGlkZW50aWZpZWQgYSBmZXcga2V5IG9uZXM6IGBoYW5kbGVfc3RoeWlgICh3aGljaCBoYW5kbGVzIHRoZSBTVEhZSSBpbnN0cnVjdGlvbiBpbnRlcmNlcHQpLCBga3ZtX3MzOTBfaGFuZGxlX2IyYCAod2hpY2ggaGFuZGxlcyBCMiBpbnN0cnVjdGlvbiBpbnRlcmNlcHRzLCBpbmNsdWRpbmcgU1RTSSB0aHJvdWdoIGBoYW5kbGVfc3RzaWApLCBga3ZtX2FyY2hfaW5pdF92bWAgKHdoaWNoIGluaXRpYWxpemVzIHMzOTAgVk0gYXJjaGl0ZWN0dXJlIHN0cnVjdHVyZXMgaW5jbHVkaW5nIHNpZV9wYWdlMiksIGFuZCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCAod2hpY2ggc2V0cyB1cCBDTU1BIENCUi9DQlJMRSBzdHJ1Y3R1cmVzKS4KCkkgY2hlY2tlZCB0aGUgc3RhdGljL25vbi1zdGF0aWMgbmF0dXJlIG9mIHRoZXNlIHN5bWJvbHMgdG8gc2VlIGhvdyB0aGV5IGFyZSBleHBvc2VkLCBhbmQgaWYgYW55IGFyZSBpbnRlcm5hbCBkZXRhaWxzIG9ubHkuIFNwZWNpZmljYWxseSwgSSBub3RlZCB0aGF0IGBoYW5kbGVfc3RzaWAgaXMgc3RhdGljLCBkZWZpbmVkIGluIGBhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jYCwgYnV0IGl0JiMzOTtzIGNhbGxlZCBieSB0aGUgbm9uLXN0YXRpYyBga3ZtX3MzOTBfaGFuZGxlX2IyYC4gVGhlIHJlc3QgYXJlIG5vbi1zdGF0aWMuCgpGaW5hbGx5LCBJIHJldmlld2VkIHRoZSBwYXRjaCBkaWZmIGl0c2VsZiB0byBjb25maXJtIHRoZSBmaWxlcyBhbmQgc3ltYm9scyBpbnZvbHZlZC4gVGhlIHBhdGNoIHRvdWNoZXMgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY2AgKHdoZXJlIGBoYW5kbGVfc3RoeWlgIGxpdmVzKSwgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY2AgKHdpdGggYGt2bV9zMzkwX2dpYl9pbml0YCBhbmQgYGt2bV9zMzkwX2dpYl9kZXN0cm95YCksIGBhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jYCAod2hlcmUgYGhhbmRsZV9zdHNpYCBpcyBkZWZpbmVkIGFuZCBjYWxsZWQpLCBhbmQgYGFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNgICh3aXRoIGBrdm1fYXJjaF9pbml0X3ZtYCwgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gLCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCwgYW5kIGBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYWApLiBUaGlzIHNvbGlkaWZpZXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgbW9kdWxlcyBhbmQgZnVuY3Rpb25zLgoKU28sIHRvIHN1bW1hcml6ZSwgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIGBoYW5kbGVfc3RoeWlgLCBga3ZtX3MzOTBfaGFuZGxlX2IyYCwgYGt2bV9hcmNoX2luaXRfdm1gLCBhbmQgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAuIFRoZSByZWxldmFudCBjb25maWdzIGFyZSBgS1ZNYCBhbmQgYFZJUlRVQUxJWkFUSU9OYC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoYW5kbGVfc3RoeWkmIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfaGFuZGxlX2IyJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX2luaXRfdm0mIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgcGFnZS1sZXZlbCBtZW1vcnkgYWxsb2NhdGlvbnMgKGdldF96ZXJvZWRfcGFnZS9mcmVlX3BhZ2UpIHRvIHNsYWIgYWxsb2NhdGlvbnMgKGt6YWxsb2Mva2ZyZWUpIGluIEtWTSBvbiBzMzkwIGZvciBndWVzdCBpbnRlcmNlcHQgaGFuZGxpbmcgKFNUSFlJLCBTVFNJKSwgVk0gaW5pdGlhbGl6YXRpb24gKHNpZV9wYWdlMiksIEdJQiBzZXR1cCwgYW5kIFZDUFUgQ01NQSBzZXR1cC4gVGhlc2UgYWZmZWN0IHJlYWNoYWJsZSBLVk0gZXhlY3V0aW9uIHBhdGhzIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBvbiBzMzkwLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGFuZGxlX3N0aHlpJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX2hhbmRsZV9iMiYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9pbml0X3ZtJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHBhZ2UtbGV2ZWwgbWVtb3J5IGFsbG9jYXRpb25zIChnZXRfemVyb2VkX3BhZ2UvZnJlZV9wYWdlKSB0byBzbGFiIGFsbG9jYXRpb25zIChremFsbG9jL2tmcmVlKSBpbiBLVk0gb24gczM5MCBmb3IgZ3Vlc3QgaW50ZXJjZXB0IGhhbmRsaW5nIChTVEhZSSwgU1RTSSksIFZNIGluaXRpYWxpemF0aW9uIChzaWVfcGFnZTIpLCBHSUIgc2V0dXAsIGFuZCBWQ1BVIENNTUEgc2V0dXAuIFRoZXNlIGFmZmVjdCByZWFjaGFibGUgS1ZNIGV4ZWN1dGlvbiBwYXRocyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgb24gczM5MCwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb252ZXJ0cyBwYWdlIGFsbG9jYXRpb25zIHZpYSBnZXRfemVyb2VkX3BhZ2UoKSBhbmQgZnJlZV9wYWdlKCkgdG8gc2xhYiBhbGxvY2F0aW9ucyB2aWEga3phbGxvYygpL2t6YWxsb2Nfb2JqKCkgYW5kIGtmcmVlKCkgYWNyb3NzIHMzOTAgS1ZNIGNvZGUgKGludGVyY2VwdC5jLCBpbnRlcnJ1cHQuYywgcHJpdi5jLCBzMzkwLmMpLiBcblxuU2luY2Uga3phbGxvYy9remFsbG9jX29iaiB6ZXJvLWluaXRpYWxpemVzIHRoZSBtZW1vcnkgaWRlbnRpY2FsbHkgdG8gZ2V0X3plcm9lZF9wYWdlKCksIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBjb25kaXRpb25hbCBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIHVuaW5pdGlhbGl6ZWQgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UvZ3Vlc3QgYXJlIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgc2xhYi1yZWxhdGVkIG1lbW9yeSBzYWZldHkgaXNzdWVzIChlLmcuIG91dC1vZi1ib3VuZHMsIHVzZS1hZnRlci1mcmVlLCBvciBkb3VibGUtZnJlZSkgYXJlIG1vbml0b3JlZCBieSBzdGFuZGFyZCBLQVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDZkZmNlMDdjODlhZWI3ZDZjYmRlYzhjNWFiNWM4NWYyNjk5MzY2ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTk6MDI6NTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMKaW5kZXggY2ExMjA1ZGZhYzhiMC4uYWFmOTgyOGQxZjQ0ZCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYwpAQCAtMTEsNiAmIzQzOzExLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGFnZW1hcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiAKICNpbmNsdWRlICZsdDthc20vYXNtLW9mZnNldHMuaCZndDsKICNpbmNsdWRlICZsdDthc20vaXJxLmgmZ3Q7CkBAIC00MzgsMTMgJiM0Mzs0MzksMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKCFrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpICZhbXA7JmFtcDsgKGFkZHIgJmFtcDsgflBBR0VfTUFTSykpCiAJCXJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pOwogCi0Jc2N0bnMgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwlzY3RucyA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghc2N0bnMpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJY2MgPSBzdGh5aV9maWxsKHNjdG5zLCAmYW1wO3JjKTsKIAlpZiAoY2MgJmx0OyAwKSB7Ci0JCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CQlrZnJlZShzY3Rucyk7CiAJCXJldHVybiBjYzsKIAl9CiBvdXQ6CkBAIC00NTQsMTMgJiM0Mzs0NTUsMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCX0gZWxzZSB7CiAJCQlyID0gd3JpdGVfZ3Vlc3QodmNwdSwgYWRkciwgcmVnMiwgc2N0bnMsIFBBR0VfU0laRSk7CiAJCQlpZiAocikgewotCQkJCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CQkJCWtmcmVlKHNjdG5zKTsKIAkJCQlyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByKTsKIAkJCX0KIAkJfQogCX0KIAotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylzY3Rucyk7CiYjNDM7CWtmcmVlKHNjdG5zKTsKIAl2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzW3JlZzIgJiM0MzsgMV0gPSByYzsKIAlrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTsKIAlyZXR1cm4gcjsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYwppbmRleCAwMzgxYWU5ODE3MDM1Li4wMjA2NWZiOGQwNTNlIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jCkBAIC0zNjg5LDcgJiM0MzszNjg5LDcgQEAgdm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKQogCX0KIAljaHNjX3NnaWIoMCk7CiAJdW5yZWdpc3Rlcl9hZGFwdGVyX2ludGVycnVwdCgmYW1wO2dpYl9hbGVydF9pcnEpOwotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpOwomIzQzOwlrZnJlZShnaWIpOwogCWdpYiA9IE5VTEw7CiB9CiAKQEAgLTM3MDMsNyAmIzQzOzM3MDMsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpCiAJCWdvdG8gb3V0OwogCX0KIAotCWdpYiA9IChzdHJ1Y3Qga3ZtX3MzOTBfZ2liICopZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpOwomIzQzOwlnaWIgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiAJaWYgKCFnaWIpIHsKIAkJcmMgPSAtRU5PTUVNOwogCQlnb3RvIG91dDsKQEAgLTM3MjIsNyAmIzQzOzM3MjIsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpCiAJZ2liX29yaWdpbiA9IHZpcnRfdG9fcGh5cyhnaWIpOwogCWlmIChjaHNjX3NnaWIoZ2liX29yaWdpbikpIHsKIAkJcHJfZXJyKCYjMzQ7QXNzb2NpYXRpbmcgdGhlIEdJQiB3aXRoIHRoZSBBSVYgZmFjaWxpdHkgZmFpbGVkXG4mIzM0Oyk7Ci0JCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpOwomIzQzOwkJa2ZyZWUoZ2liKTsKIAkJZ2liID0gTlVMTDsKIAkJcmMgPSAtRUlPOwogCQlnb3RvIG91dF91bnJlZ19nYWw7CkBAIC0zNzQyLDcgJiM0MzszNzQyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKQogb3V0X3VucmVnX2dhbDoKIAl1bnJlZ2lzdGVyX2FkYXB0ZXJfaW50ZXJydXB0KCZhbXA7Z2liX2FsZXJ0X2lycSk7CiBvdXRfZnJlZV9naWI6Ci0JZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7CiYjNDM7CWtmcmVlKGdpYik7CiAJZ2liID0gTlVMTDsKIG91dDoKIAlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYwppbmRleCBiM2NiMmMyYzNhYTcxLi44NTY5MzlhY2YwMTJmIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmMKQEAgLTE0LDYgJiM0MzsxNCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbW1fdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZ3RhYmxlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9hc20tb2Zmc2V0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9mYWNpbGl0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9jdXJyZW50LmgmZ3Q7CkBAIC04NjksNyAmIzQzOzg3MCw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWludCBmYyA9ICh2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzWzBdICZhbXA7IDB4ZjAwMDAwMDApICZndDsmZ3Q7IDI4OwogCWludCBzZWwxID0gdmNwdS0mZ3Q7cnVuLSZndDtzLnJlZ3MuZ3Byc1swXSAmYW1wOyAweGZmOwogCWludCBzZWwyID0gdmNwdS0mZ3Q7cnVuLSZndDtzLnJlZ3MuZ3Byc1sxXSAmYW1wOyAweGZmZmY7Ci0JdW5zaWduZWQgbG9uZyBtZW0gPSAwOwomIzQzOwl2b2lkICptZW0gPSBOVUxMOwogCXU2NCBvcGVyYW5kMjsKIAlpbnQgcmMgPSAwOwogCXU4IGFyOwpAQCAtOTExLDE5ICYjNDM7OTEyLDE5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXN3aXRjaCAoZmMpIHsKIAljYXNlIDE6IC8qIHNhbWUgaGFuZGxpbmcgZm9yIDEgYW5kIDIgKi8KIAljYXNlIDI6Ci0JCW1lbSA9IGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwkJbWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJCWlmICghbWVtKQogCQkJZ290byBvdXRfbm9fZGF0YTsKLQkJaWYgKHN0c2koKHZvaWQgKikgbWVtLCBmYywgc2VsMSwgc2VsMikpCiYjNDM7CQlpZiAoc3RzaShtZW0sIGZjLCBzZWwxLCBzZWwyKSkKIAkJCWdvdG8gb3V0X25vX2RhdGE7CiAJCWJyZWFrOwogCWNhc2UgMzoKIAkJaWYgKHNlbDEgIT0gMiB8fCBzZWwyICE9IDIpCiAJCQlnb3RvIG91dF9ub19kYXRhOwotCQltZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKJiM0MzsJCW1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCQlpZiAoIW1lbSkKIAkJCWdvdG8gb3V0X25vX2RhdGE7Ci0JCWhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsICh2b2lkICopIG1lbSk7CiYjNDM7CQloYW5kbGVfc3RzaV8zXzJfMih2Y3B1LCBtZW0pOwogCQlicmVhazsKIAljYXNlIDE1OiAvKiBmYyAxNSBpcyBmdWxseSBoYW5kbGVkIGluIHVzZXJzcGFjZSAqLwogCQlpbnNlcnRfc3RzaV91c3JfZGF0YSh2Y3B1LCBvcGVyYW5kMiwgYXIsIGZjLCBzZWwxLCBzZWwyKTsKQEAgLTkzMSwxMCAmIzQzOzkzMiwxMCBAQCBzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJcmV0dXJuIC1FUkVNT1RFOwogCX0KIAlpZiAoa3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSkgewotCQltZW1jcHkoc2lkYV9hZGRyKHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrKSwgKHZvaWQgKiltZW0sIFBBR0VfU0laRSk7CiYjNDM7CQltZW1jcHkoc2lkYV9hZGRyKHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrKSwgbWVtLCBQQUdFX1NJWkUpOwogCQlyYyA9IDA7CiAJfSBlbHNlIHsKLQkJcmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsICh2b2lkICopbWVtLCBQQUdFX1NJWkUpOwomIzQzOwkJcmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTsKIAl9CiAJaWYgKHJjKSB7CiAJCXJjID0ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7CkBAIC05NDUsMTQgJiM0Mzs5NDYsMTQgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCXJjID0gLUVSRU1PVEU7CiAJfQogCXRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7Ci0JZnJlZV9wYWdlKG1lbSk7CiYjNDM7CWtmcmVlKG1lbSk7CiAJa3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAwKTsKIAl2Y3B1LSZndDtydW4tJmd0O3MucmVncy5ncHJzWzBdID0gMDsKIAlyZXR1cm4gcmM7CiBvdXRfbm9fZGF0YToKIAlrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDMpOwogb3V0OgotCWZyZWVfcGFnZShtZW0pOwomIzQzOwlrZnJlZShtZW0pOwogCXJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMKaW5kZXggYjA4MzllODg3MjIxZS4uOGVjNTA1MDYwZjhjMCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jCkBAIC0zMjczLDggJiM0MzszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpCiAJCWdvdG8gb3V0X2VycjsKIAogCUJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7Ci0Ja3ZtLSZndDthcmNoLnNpZV9wYWdlMiA9Ci0JICAgICAoc3RydWN0IHNpZV9wYWdlMiAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiYjNDM7CWt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIgPSBremFsbG9jX29iaigqa3ZtLSZndDthcmNoLnNpZV9wYWdlMiwKJiM0MzsJCQkJCSAgR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7CiAJaWYgKCFrdm0tJmd0O2FyY2guc2llX3BhZ2UyKQogCQlnb3RvIG91dF9lcnI7CiAKQEAgLTMzNjksNyAmIzQzOzMzNjksNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSkKIAogCXJldHVybiAwOwogb3V0X2VycjoKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLSZndDthcmNoLnNpZV9wYWdlMik7CiYjNDM7CWtmcmVlKGt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIpOwogCWRlYnVnX3VucmVnaXN0ZXIoa3ZtLSZndDthcmNoLmRiZik7CiAJc2NhX2Rpc3Bvc2Uoa3ZtKTsKIAlLVk1fRVZFTlQoMywgJiMzNDtjcmVhdGlvbiBvZiB2bSBmYWlsZWQ6ICVkJiMzNDssIHJjKTsKQEAgLTM0MjcsNyAmIzQzOzM0MjcsNyBAQCB2b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKQogCQltbXVfbm90aWZpZXJfdW5yZWdpc3RlcigmYW1wO2t2bS0mZ3Q7YXJjaC5wdi5tbXVfbm90aWZpZXIsIGt2bS0mZ3Q7bW0pOwogCiAJZGVidWdfdW5yZWdpc3Rlcihrdm0tJmd0O2FyY2guZGJmKTsKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLSZndDthcmNoLnNpZV9wYWdlMik7CiYjNDM7CWtmcmVlKGt2bS0mZ3Q7YXJjaC5zaWVfcGFnZTIpOwogCWt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMoa3ZtKTsKIAlrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKGt2bSk7CiAJa3ZtX3MzOTBfdnNpZV9kZXN0cm95KGt2bSk7CkBAIC0zNjU3LDEzICYjNDM7MzY1NywxMyBAQCBzdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB2b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlpZiAodmNwdS0mZ3Q7YXJjaC5zaWVfYmxvY2stJmd0O2NicmxvKQotCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbykpOwomIzQzOwkJa2ZyZWUocGh5c190b192aXJ0KHZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbykpOwogCXZjcHUtJmd0O2FyY2guc2llX2Jsb2NrLSZndDtjYnJsbyA9IDA7CiB9CiAKIGludCBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXZvaWQgKmNicmxvX3BhZ2UgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwl2b2lkICpjYnJsb19wYWdlID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAKIAlpZiAoIWNicmxvX3BhZ2UpCiAJCXJldHVybiAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDkyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiBpdCBpbnRyb2R1Y2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb25jZXJucyB0aGF0IHdvdWxkIHdhcnJhbnQgYSBLTVNBTiBzZXNzaW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGRpZmYsIHdoaWNoIHRvdWNoZXMgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY2AsIGBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmNgLCBgYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY2AsIGFuZCBgYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY2AuCgpSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhlIHBhdHRlcm46IGl0JiMzOTtzIHJlcGxhY2luZyBgZ2V0X3plcm9lZF9wYWdlKClgIGFuZCBgZnJlZV9wYWdlKClgIHdpdGggYGt6YWxsb2MoKWAgYW5kIGBrZnJlZSgpYCwgb3IgYGt6YWxsb2Nfb2JqYCBhbmQgYGtmcmVlKClgIGluIHRoZSBjYXNlIG9mIGBzaWVfcGFnZTJgLiBUaGUgY3JpdGljYWwgdGhpbmcgaXMgdGhhdCB3ZSYjMzk7cmUgKnN0aWxsKiB6ZXJvLWluaXRpYWxpemluZyB0aGUgbWVtb3J5IOKAkyB0aGUgY2hhbmdlIGlzIHVzaW5nIGBremFsbG9jYCBpbnN0ZWFkIG9mIGBnZXRfemVyb2VkX3BhZ2VgLCB3aGljaCBpcyBlc3NlbnRpYWxseSBhIHNhZmUgb3BlcmF0aW9uLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMsIGFyZSB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgKmludHJvZHVjZWQqIGJ5IHRoZXNlIGNoYW5nZXM/IE5vLCBiZWNhdXNlIGFsbCB0aGUgYWxsb2NhdGlvbnMgYXJlIHN0aWxsIHplcm8taW5pdGlhbGl6ZWQuIEkmIzM5O3ZlIGdvdCB0byBjaGVjayB3aGV0aGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkLCBjb3BpZWQgdG8gdXNlcnNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdywgYnV0LCB0aGVyZSBpcyBubyBzdWNoIHRoaW5nLiBBcmUgdGhlcmUgdW5pbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzLCBvciBsZWFrcyBvZiBpbmZvcm1hdGlvbj8gQWdhaW4sIGl0IGRvZXNuJiMzOTt0IHNlZW0gbGlrZSBpdC4KCkl0JiMzOTtzIGFjdHVhbGx5IGEgZ29vZCB0aGluZyBpbiB0aGF0IEtNU0FOIHdpbGwgcHJvYmFibHkgY2F0Y2ggb3V0LW9mLWJvdW5kcy91c2UtYWZ0ZXItZnJlZSB3aXRoIHNsYWIgYWxsb2NhdGlvbnMsIHdoZXJlYXMgcGFnZSBhbGxvY2F0aW9ucyBoYWQgcGFnZS1sZXZlbCB0cmFja2luZy4gQmVjYXVzZSB3ZSYjMzk7cmUgdXNpbmcgemVyby1hbGxvY2F0b3JzIChga3phbGxvY2ApLCBldmVyeXRoaW5nIHJlbWFpbnMgZnVsbHkgaW5pdGlhbGl6ZWQuCgpMZXQgbWUganVzdCBkbyBhIHF1aWNrIHNjYW4gdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGFuZCBkb3VibGUtY2hlY2sgYGt6YWxsb2Nfb2JqKCprdm0tJmd0O2FyY2guc2llX3BhZ2UyLCAuLi4pYC4gSSYjMzk7bGwgcnVuIGEgcXVpY2sgc2VhcmNoIGZvciBga3phbGxvY19vYmpgIGFuZCBgc3RydWN0IHNpZV9wYWdlMmAganVzdCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgYmUgZXh0cmEgY2VydGFpbi4gT3ZlcmFsbCwgaXQgYXBwZWFycyB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGFuZCBzYWZlIG9wdGltaXphdGlvbiwgcmVwbGFjaW5nIHRoZSBvbGRlciBhbGxvY2F0aW9uIGZ1bmN0aW9ucyB3aXRoIHRoZSBuZXdlciBvbmVzLCB3aGljaCBtYWludGFpbiB0aGUgZGVzaXJlZCB6ZXJvLWluaXRpYWxpemF0aW9uIGJlaGF2aW9yLiBObyBLTVNBTiBzZXNzaW9uIG5lY2Vzc2FyeSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtremFsbG9jX29iaiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzkzNzggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q9MTAzPWxpc3Q6XG4tLVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTQtXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0OjExNTogICAgICAgICAgZ3JvY2sgPSBremFsbG9jX29iaigqZ3JvY2spO1xuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTYtICAgICAgICAgIGlmICghZ3JvY2spXG4tLVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMjUtXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0OjEyNjogICAgICAgICAgZGltaXRyaSA9IGt6YWxsb2Nfb2JqKCpkaW1pdHJpKTtcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI3LSAgICAgICAgICBpZiAoIWRpbWl0cmkpXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0PTQ1PWEgbWVzc2FnZSBhbmQgYSBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgQVBJIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkpLlxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdC04OS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MDpcdFx0ZGNfc3luYyA9IGt6YWxsb2Nfb2JqKCpkY19zeW5jKTtcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MTpcdFx0ZGNfYXN5bmMgPSBremFsbG9jX29iaigqZGNfYXN5bmMpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0LTkyLVxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdD0yNj1FeGFtcGxlOlxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00NC1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdDo0NTpcdFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0LTQ2LVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTkzOD1UaGUga2VybmVsIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBwdXJwb3NlIG1lbW9yeSBhbGxvY2F0b3JzOlxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTM5OmttYWxsb2MoKSwga3phbGxvYygpLCBrbWFsbG9jX29ianMoKSwga3phbGxvY19vYmpzKCksIHZtYWxsb2MoKSwgYW5kXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NDAtdnphbGxvYygpLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgZnVydGhlciBpbmZvcm1hdGlvblxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTk2ND1UaGUgcHJlZmVycmVkIGZvcm0gZm9yIGFsbG9jYXRpbmcgYSB6ZXJvZWQgYXJyYXkgaXMgdGhlIGZvbGxvd2luZzpcbi0tXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NjctXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdDo5Njg6XHRwID0ga3phbGxvY19vYmpzKCpwLCBuLCAuLi4pO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3QtOTY5LVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdD0zOTg9YmVjb21lLCByZXNwZWN0aXZlbHk6OlxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDAtXHRwdHIgPSBrbWFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDE6XHRwdHIgPSBremFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDItXHRwdHIgPSBrbWFsbG9jX29ianMoKnB0ciwgY291bnQgWywgZ2ZwXSApO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0OjQwMzpcdHB0ciA9IGt6YWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDA0LVx0cHRyID0ga21hbGxvY19mbGV4KCpwdHIsIGZsZXhfbWVtYmVyLCBjb3VudCBbLCBnZnBdICk7XG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTIwOD10byBkZXRhaWxzIGV4cGxhaW5lZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTI2OC0gICAgICAgICAgICAgIC8qIGFsbG9jYXRlIGEgY2hpcC1zcGVjaWZpYyBkYXRhIHdpdGggemVybyBmaWxsZWQgKi9cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDoyNjk6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTI3MC0gICAgICAgICAgICAgIGlmIChjaGlwID09IE5VTEwpXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTYyMz1BZnRlciBhbGxvY2F0aW5nIGEgY2FyZCBpbnN0YW5jZSB2aWEgOmM6ZnVuYzpgc25kX2NhcmRfbmV3KClgXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTYzMC0gIC4uLi4uXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6NjMxOiAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC02MzItXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTY5OD1kZXN0cnVjdG9yIGFuZCBQQ0kgZW50cmllcy4gRXhhbXBsZSBjb2RlIGlzIHNob3duIGZpcnN0LCBiZWxvdzo6XG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTc0OS1cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDo3NTA6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTc1MS0gICAgICAgICAgICAgIGlmIChjaGlwID09IE5VTEwpIHtcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9MzgyMz1jaGlwIGRhdGEgaW5kaXZpZHVhbGx5Ojpcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMzgzNS0gICAgICAgICAgLi4uLlxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjM4MzY6ICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMzgzNy0gICAgICAgICAgLi4uLlxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdD05NDA9SWwga2VybmVsIGZvcm5pc2NlIGkgc2VndWVudGkgYXNzZWduYXRvcmkgYWQgdXNvIGdlbmVyaWNvOlxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0Ojk0MTprbWFsbG9jKCksIGt6YWxsb2MoKSwga21hbGxvY19vYmpzKCksIGt6YWxsb2Nfb2JqcygpLCB2bWFsbG9jKCksIGUgdnphbGxvYygpLlxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk0Mi1QZXIgbWFnZ2lvcmkgaW5mb3JtYXppb25pLCBjb25zdWx0YXRlIGxhIGRvY3VtZW50YXppb25lIGRlbGwmIzM5O0FQSTpcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q9OTY1PUlsIG1vZG8gcHJlZmVyaXRvIHBlciBhc3NlZ25hcmUgdW4gdmV0dG9yZSBhIHplcm8gw6ggaWwgc2VndWVudGU6XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk2OC1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdDo5Njk6XHRwID0ga3phbGxvY19vYmpzKCpwLCBuLCAuLi4pO1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk3MC1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0PTQ0MT1kaXZlbnRhbm8sIHJpc3BldHRpdmFtZW50ZTo6XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00NDMtXHRwdHIgPSBrbWFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDQ0Olx0cHRyID0ga3phbGxvY19vYmooKnB0ciBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQ0NS1cdHB0ciA9IGttYWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0OjQ0NjpcdHB0ciA9IGt6YWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQ0Ny1cdHB0ciA9IGttYWxsb2NfZmxleCgqcHRyLCBmbGV4X21lbWJlciwgY291bnQgWywgZ2ZwXSApO1xuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q9NDEwPXRvcm5hbS1zZSwgcmVzcGVjdGl2YW1lbnRlOjpcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9wdF9CUi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQxMi0gICAgICAgIHB0ciA9IGttYWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvcHRfQlIvcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MTM6ICAgICAgICBwdHIgPSBremFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDE0LSAgICAgICAgcHRyID0ga21hbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDE1OiAgICAgICAgcHRyID0ga3phbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDE2LSAgICAgICAgcHRyID0ga21hbGxvY19mbGV4KCpwdHIsIGZsZXhfbWVtYmVyLCBjb3VudCBbLCBnZnBdICk7XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0PTc5ND1pbnQgbXlfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAxLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0OjgwMjpcdG15X2ZoID0ga3phbGxvY19vYmooKm15X2ZoKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dC04MDMtXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM9NjQ9bW9kdWxlX2Zyb2JfYXJjaF9zZWN0aW9ucyhFbGY2NF9FaGRyICpoZHIsIEVsZjY0X1NoZHIgKnNlY2hkcnMsXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmMtOTUtXHRuc3ltcyA9IHN5bXRhYi1cdTAwM2VzaF9zaXplIC8gc2l6ZW9mKEVsZjY0X1N5bSk7XG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYzo5NjpcdGNoYWlucyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgZ290X2VudHJ5LCBuc3ltcyk7XG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYy05Ny1cdGlmICghY2hhaW5zKSB7XG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYz0zOTA9cmVnaXN0ZXJfY3B1cyh2b2lkKVxuLS1cbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk0LVx0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGkpIHtcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmM6Mzk1Olx0XHRzdHJ1Y3QgY3B1ICpwID0ga3phbGxvY19vYmooKnApO1xuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYy0zOTYtXHRcdGlmICghcClcbi0tXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM9MTEyMD1zdGF0aWMgaW50IGppdF9wcmVwYXJlX2ZpbmFsX21lbV9hbGxvYyhzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbi0tXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMS1cdGlmIChjdHgtXHUwMDNlbmVlZF9leHRyYV9wYXNzKSB7XG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM6MTEzMjpcdFx0Y3R4LVx1MDAzZWppdF9kYXRhID0ga3phbGxvY19vYmooKmN0eC1cdTAwM2VqaXRfZGF0YSk7XG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMy1cdFx0aWYgKCFjdHgtXHUwMDNlaml0X2RhdGEpXG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTIyMD1sb2NvbW9faW5pdF9vbmVfY2hpbGQoc3RydWN0IGxvY29tbyAqbGNoaXAsIHN0cnVjdCBsb2NvbW9fZGV2X2luZm8gKmluZm8pXG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTIyNC1cbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzoyMjU6XHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vX2Rldik7XG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMjI2LVx0aWYgKCFkZXYpIHtcbi0tXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM9MzU2PV9fbG9jb21vX3Byb2JlKHN0cnVjdCBkZXZpY2UgKm1lLCBzdHJ1Y3QgcmVzb3VyY2UgKm1lbSwgaW50IGlycSlcbi0tXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzYyLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jOjM2MzpcdGxjaGlwID0ga3phbGxvY19vYmooc3RydWN0IGxvY29tbyk7XG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzY0LVx0aWYgKCFsY2hpcClcbi0tXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM9NzMzPXNhMTExMV9pbml0X29uZV9jaGlsZChzdHJ1Y3Qgc2ExMTExICpzYWNoaXAsIHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LFxuLS1cbmFyY2gvYXJtL2NvbW1vbi9zYTExMTEuYy03MzktXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM6NzQwOlx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IHNhMTExMV9kZXYpO1xuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jLTc0MS1cdGlmICghZGV2KSB7XG4tLVxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmM9MTc4PXN0YXRpYyBpbnQgc2Nvb3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYy0xODctXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYzoxODg6XHRkZXZwdHIgPSBremFsbG9jX29iaihzdHJ1Y3Qgc2Nvb3BfZGV2KTtcbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jLTE4OS1cdGlmICghZGV2cHRyKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9zbXAuYz0xMDg9c3RhdGljIGludCBzZWNvbmRhcnlfYmlnbGl0dGxlX3ByZXBhcmUodW5zaWduZWQgaW50IGNwdSlcbi0tXG5hcmNoL2FybS9rZXJuZWwvc21wLmMtMTEwLVx0aWYgKCFjcHVfdnRhYmxlW2NwdV0pXG5hcmNoL2FybS9rZXJuZWwvc21wLmM6MTExOlx0XHRjcHVfdnRhYmxlW2NwdV0gPSBremFsbG9jX29iaigqY3B1X3Z0YWJsZVtjcHVdKTtcbmFyY2gvYXJtL2tlcm5lbC9zbXAuYy0xMTItXG4tLVxuYXJjaC9hcm0va2VybmVsL3Zkc28uYz0xNjk9c3RhdGljIGludCBfX2luaXQgdmRzb19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0va2VybmVsL3Zkc28uYy0xODEtXHQvKiBBbGxvY2F0ZSB0aGUgVkRTTyB0ZXh0IHBhZ2VsaXN0ICovXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jOjE4MjpcdHZkc29fdGV4dF9wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB0ZXh0X3BhZ2VzKTtcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmMtMTgzLVx0aWYgKHZkc29fdGV4dF9wYWdlbGlzdCA9PSBOVUxMKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9kYzIxMjg1LmM9MjYxPWludCBfX2luaXQgZGMyMTI4NV9zZXR1cChpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cylcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2NC1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9kYzIxMjg1LmM6MjY1Olx0cmVzID0ga3phbGxvY19vYmpzKHN0cnVjdCByZXNvdXJjZSwgMik7XG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2Ni1cdGlmICghcmVzKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYz02OT1zdGF0aWMgaW50IF9faW5pdCBlYnNhMjg1X2xlZHNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODYtXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jOjg3Olx0XHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODgtXHRcdGlmICghbGVkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYz03MjA9c3RhdGljIGludCBfX2luaXQgbmV0d2luZGVyX2xlZHNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MjktXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmM6NzMwOlx0XHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MzEtXHRcdGlmICghbGVkKVxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYz00NzM9c3RhdGljIGludCBpbXhfbW1kY19wZXJmX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdm9pZCBfX2lvbWVtICptbWRjX2Jhc2UsXG4tLVxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTQ3OS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYzo0ODA6XHRwbXVfbW1kYyA9IGt6YWxsb2Nfb2JqKCpwbXVfbW1kYyk7XG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmMtNDgxLVx0aWYgKCFwbXVfbW1kYykge1xuLS1cbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYz0xMTQ9c3RhdGljIHZvaWQgX19pbml0IGkyY19xdWlyayh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMjktXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmM6MTMwOlx0XHRuZXdfY29tcGF0ID0ga3phbGxvY19vYmooKm5ld19jb21wYXQpO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jLTEzMS1cbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jPTE2Mz1zdGF0aWMgdm9pZCBfX2luaXQgYXJtYWRhXzM3NV8zODBfY29oZXJlbmN5X2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jLTE4Ny1cbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmM6MTg4Olx0XHRwID0ga3phbGxvY19vYmooKnApO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYy0xODktXHRcdHAtXHUwMDNlbmFtZSA9IGtzdHJkdXAoXCYjMzQ7YXJtLGlvLWNvaGVyZW50XCYjMzQ7LCBHRlBfS0VSTkVMKTtcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L212ZWJ1LXNvYy1pZC5jPTE0OD1zdGF0aWMgaW50IF9faW5pdCBtdmVidV9zb2NfZGV2aWNlKHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTYtXG5hcmNoL2FybS9tYWNoLW12ZWJ1L212ZWJ1LXNvYy1pZC5jOjE1NzpcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTgtXHRpZiAoIXNvY19kZXZfYXR0cilcbi0tXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTM4MD1zdGF0aWMgdm9pZCBfX2luaXQgbXhzX21hY2hpbmVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzg5LVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozOTA6XHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzkxLVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYz0yOTQ9c3RhdGljIGludCBfX2luaXQgb21hcDFfc3lzdGVtX2RtYV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYy0zMjEtXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jOjMyMjpcdGQgPSBremFsbG9jX29iaigqZCk7XG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jLTMyMy1cdGlmICghZCkge1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYz0yOTI9c3RhdGljIHZvaWQgb21hcF9tY2JzcF9yZWdpc3Rlcl9ib2FyZF9jZmcoc3RydWN0IHJlc291cmNlICpyZXMsIGludCByZXNfY291bnQsXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jLTI5Ni1cbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYzoyOTc6XHRvbWFwX21jYnNwX2RldmljZXMgPSBremFsbG9jX29ianMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqLCBzaXplKTtcbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTgtXHRpZiAoIW9tYXBfbWNic3BfZGV2aWNlcykge1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYz01MT1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9kbV90aW1lcl9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS90aW1lci5jLTEyNy1cbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYzoxMjg6XHRcdHBkYXRhID0ga3phbGxvY19vYmooKnBkYXRhKTtcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYy0xMjktXHRcdGlmICghcGRhdGEpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL2Nsa3QyeHh4X3ZpcnRfcHJjbV9zZXQuYz0yMzA9dm9pZCBvbWFwMnh4eF9jbGt0X3Zwc19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjM5LVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmM6MjQwOlx0aHcgPSBremFsbG9jX29iaigqaHcpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjQxLVx0aWYgKCFodylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM9Nzg2PXZvaWQgX19pbml0IG9tYXBfc29jX2RldmljZV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jLTc5MC1cbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYzo3OTE6XHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYy03OTItXHRpZiAoIXNvY19kZXZfYXR0cilcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM9MTMxPXN0YXRpYyBpbnQgb21hcF9kZXZpY2VfYnVpbGRfZnJvbV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYy0xNTgtXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM6MTU5Olx0aHdtb2RzID0ga3phbGxvY19vYmpzKHN0cnVjdCBvbWFwX2h3bW9kICosIG9oX2NudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmMtMTYwLVx0aWYgKCFod21vZHMpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYz0zMzg5PXN0YXRpYyBpbnQgb21hcF9od21vZF9hbGxvY2F0ZV9tb2R1bGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb21hcF9od21vZCAqb2gsXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQwMi1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jOjM0MDM6XHRzeXNjID0ga3phbGxvY19vYmooKnN5c2MpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQwNC1cdGlmICghc3lzYylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDMyLVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2b2gtXHUwMDNlc2xhdmVfcG9ydHMpKSB7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNDMzOlx0XHRvaSA9IGt6YWxsb2Nfb2JqKCpvaSk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDM0LVx0XHRpZiAoIW9pKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jPTM1MjE9aW50IG9tYXBfaHdtb2RfaW5pdF9tb2R1bGUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM1MzUtXHRpZiAoIW9oKSB7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTM2Olx0XHRvaCA9IGt6YWxsb2Nfb2JqKCpvaCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTM3LVx0XHRpZiAoIW9oKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM1NDYtXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTQ3Olx0XHRvaC1cdTAwM2VjbGFzcyA9IGt6YWxsb2Nfb2JqKCpvaC1cdTAwM2VjbGFzcyk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTQ4LVx0XHRpZiAoIW9oLVx1MDAzZWNsYXNzKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jPTM3OT1zdGF0aWMgaW50IF9faW5pdCBhbXgzX2lkbGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdV9ub2RlLCBpbnQgY3B1KVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYy00MTItXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmM6NDEzOlx0aWRsZV9zdGF0ZXMgPSBremFsbG9jX29ianMoKmlkbGVfc3RhdGVzLCBzdGF0ZV9jb3VudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmMtNDE0LVx0aWYgKCFpZGxlX3N0YXRlcylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jPTMwPXN0YXRpYyB2b2lkIF9faW5pdCBzcl9zZXRfbnZhbHVlcyhzdHJ1Y3Qgb21hcF92b2x0X2RhdGEgKnZvbHRfZGF0YSxcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jLTQxLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYzo0MjpcdG52YWx1ZV90YWJsZSA9IGt6YWxsb2Nfb2JqcygqbnZhbHVlX3RhYmxlLCBjb3VudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jLTQzLVx0aWYgKCFudmFsdWVfdGFibGUpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jPTEzOT1zdGF0aWMgaW50IF9faW5pdCBwY2llX3NldHVwKHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cylcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTcxLVx0ICovXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM6MTcyOlx0cmVzID0ga3phbGxvY19vYmooc3RydWN0IHJlc291cmNlKTtcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYy0xNzMtXHRpZiAoIXJlcylcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IHBjaV9zZXR1cChzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5Mi1cdCAqL1xuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jOjQ5MzpcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtNDk0LVx0aWYgKCFyZXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYz02ODk9c3RhdGljIHN0cnVjdCBleHBhbnNpb25fY2FyZCAqX19pbml0IGVjYXJkX2FsbG9jX2NhcmQoaW50IHR5cGUsIGludCBzbG90KVxuLS1cbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk0LVxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYzo2OTU6XHRlYyA9IGt6YWxsb2Nfb2JqKGVjYXJkX3QpO1xuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYy02OTYtXHRpZiAoIWVjKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYz05Mz1pbnQgX19pbml0IHNhMTF4eF9jbGtfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTA5LVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMTA6XHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTExMS1cdGlmICghaHcpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMzEtXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jOjEzMjpcdGh3ID0ga3phbGxvY19vYmooKmh3KTtcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTMzLVx0aWYgKCFodylcbi0tXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmM9MzE3PWludCBfX2luaXQgc2ExMXgwX3JlZ2lzdGVyX2ZpeGVkX3JlZ3VsYXRvcihpbnQgbixcbi0tXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmMtMzIzLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jOjMyNDpcdGNmZy1cdTAwM2Vpbml0X2RhdGEgPSBpZCA9IGt6YWxsb2Nfb2JqKCpjZmctXHUwMDNlaW5pdF9kYXRhKTtcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYy0zMjUtXHRpZiAoIWNmZy1cdTAwM2Vpbml0X2RhdGEpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYz0yMjU9c3RhdGljIGludCBuZXBvbnNldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yNzgtXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jOjI3OTpcdGQgPSBremFsbG9jX29iaigqZCk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jLTI4MC1cdGlmICghZCkge1xuLS1cbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jPTE0MT1zdGF0aWMgaW50IF9faW5pdCByY2FyX2dlbjJfcmVndWxhdG9yX3F1aXJrKHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmMtMTY2LVxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmM6MTY3Olx0XHRxdWlyayA9IGt6YWxsb2Nfb2JqKCpxdWlyayk7XG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjgtXHRcdGlmICghcXVpcmspIHtcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz0zOTM9c3RhdGljIGludCB2ZV9zcGNfcG9wdWxhdGVfb3Bwcyh1aW50MzJfdCBjbHVzdGVyKVxuLS1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5Ny1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jOjM5ODpcdG9wcHMgPSBremFsbG9jX29ianMoKm9wcHMsIE1BWF9PUFBTKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5OS1cdGlmICghb3Bwcylcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz00NDI9aW50IF9faW5pdCB2ZV9zcGNfaW5pdCh2b2lkIF9faW9tZW0gKmJhc2VhZGRyLCB1MzIgYTE1X2NsdXNpZCwgaW50IGlycSlcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy00NDQtXHRpbnQgcmV0O1xuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM6NDQ1Olx0aW5mbyA9IGt6YWxsb2Nfb2JqKCppbmZvKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0Ni1cdGlmICghaW5mbylcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz01MjM9c3RhdGljIHN0cnVjdCBjbGsgKnZlX3NwY19jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqY3B1X2Rldilcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy01MjctXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzo1Mjg6XHRzcGMgPSBremFsbG9jX29iaigqc3BjKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTUyOS1cdGlmICghc3BjKVxuLS1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jPTEyMz1zdGF0aWMgdm9pZCBfX2luaXQgdmVyc2F0aWxlX2R0X3BjaV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmMtMTQ0LVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmM6MTQ1Olx0bmV3cHJvcCA9IGt6YWxsb2Nfb2JqKCpuZXdwcm9wKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jLTE0Ni1cdGlmICghbmV3cHJvcClcbi0tXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmM9MTA1PXN0YXRpYyB2b2lkIF9faW5pdCB6eW5xX2luaXRfbWFjaGluZSh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYy0xMTAtXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmM6MTExOlx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEyLVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYz01MDM9c3RhdGljIF9faW5pdCBpbnQgbDJ4MF9wbXVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmMtNTA5LVxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYzo1MTA6XHRsMngwX3BtdSA9IGt6YWxsb2Nfb2JqKCpsMngwX3BtdSk7XG5hcmNoL2FybS9tbS9jYWNoZS1sMngwLXBtdS5jLTUxMS1cdGlmICghbDJ4MF9wbXUpIHtcbi0tXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jPTMxNT1zdGF0aWMgaW50IF9faW5pdCBfX3VuaXBoaWVyX2NhY2hlX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jLTM0NC1cbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmM6MzQ1Olx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmMtMzQ2LVx0aWYgKCFkYXRhKVxuLS1cbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmM9NTMzPXN0YXRpYyB2b2lkICpfX2RtYV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLCBkbWFfYWRkcl90ICpoYW5kbGUsXG4tLVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjAtXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjU2MTpcdGJ1ZiA9IGt6YWxsb2Nfb2JqKCpidWYsXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTU2Mi1cdFx0XHQgIGdmcCBcdTAwMjYgfihfX0dGUF9ETUEgfCBfX0dGUF9ETUEzMiB8IF9fR0ZQX0hJR0hNRU0pKTtcbi0tXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTE0ODc9YXJtX2lvbW11X2NyZWF0ZV9tYXBwaW5nKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBiYXNlLCB1NjQgc2l6ZSlcbi0tXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTE1MDYtXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjE1MDc6XHRtYXBwaW5nID0ga3phbGxvY19vYmooc3RydWN0IGRtYV9pb21tdV9tYXBwaW5nKTtcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtMTUwOC1cdGlmICghbWFwcGluZylcbi0tXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM9MzE2PWludCBfX2luaXQgYXJjaF94ZW5fdW5wb3B1bGF0ZWRfaW5pdChzdHJ1Y3QgcmVzb3VyY2UgKipyZXMpXG4tLVxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM0My1cbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYzozNDQ6XHRyZWdzID0ga3phbGxvY19vYmpzKCpyZWdzLCBucl9yZWcpO1xuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM0NS1cdGlmICghcmVncykge1xuLS1cbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zODctXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM6Mzg4Olx0XHR0bXBfcmVzID0ga3phbGxvY19vYmooKnRtcF9yZXMpO1xuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM4OS1cdFx0aWYgKCF0bXBfcmVzKSB7XG4tLVxuYXJjaC9hcm0veGVuL3AybS5jPTE1MD1ib29sIF9fc2V0X3BoeXNfdG9fbWFjaGluZV9tdWx0aSh1bnNpZ25lZCBsb25nIHBmbixcbi0tXG5hcmNoL2FybS94ZW4vcDJtLmMtMTc4LVxuYXJjaC9hcm0veGVuL3AybS5jOjE3OTpcdHAybV9lbnRyeSA9IGt6YWxsb2Nfb2JqKCpwMm1fZW50cnksIEdGUF9OT1dBSVQpO1xuYXJjaC9hcm0veGVuL3AybS5jLTE4MC1cdGlmICghcDJtX2VudHJ5KVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYz02OD1zdGF0aWMgaW50IF9faW5pdCBfX3Zkc29faW5pdChlbnVtIHZkc29fYWJpIGFiaSlcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmMtODMtXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmM6ODQ6XHR2ZHNvX3BhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mb1thYmldLnZkc29fcGFnZXMpO1xuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jLTg1LVx0aWYgKHZkc29fcGFnZWxpc3QgPT0gTlVMTClcbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYz00ODA9c3RhdGljIGludCBzaGFyZV9wZm5faHlwKHU2NCBwZm4pXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtNDkyLVxuYXJjaC9hcm02NC9rdm0vbW11LmM6NDkzOlx0dGhpcyA9IGt6YWxsb2Nfb2JqKCp0aGlzKTtcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5NC1cdGlmICghdGhpcykge1xuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jPTk4MT1pbnQga3ZtX2luaXRfc3RhZ2UyX21tdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczJfbW11ICptbXUsIHVuc2lnbmVkIGxvbmcgdHlwZSlcbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA3LVxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTAwODpcdHBndCA9IGt6YWxsb2Nfb2JqKCpwZ3QsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA5LVx0aWYgKCFwZ3QpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmM9MTE4MD1pbnQgdG9wdXBfaHlwX21lbWNhY2hlKHN0cnVjdCBrdm1faHlwX21lbWNhY2hlICptYywgdW5zaWduZWQgbG9uZyBtaW5fcGFnZXMpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTE4NS1cdGlmICghbWMtXHUwMDNlbWFwcGluZykge1xuYXJjaC9hcm02NC9rdm0vbW11LmM6MTE4NjpcdFx0bWMtXHUwMDNlbWFwcGluZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBwa3ZtX21hcHBpbmcsXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMTg3LVx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmM9MjUxMz1pbnQgX19pbml0IGt2bV9tbXVfaW5pdCh1MzIgaHlwX3ZhX2JpdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMjU0Ni1cbmFyY2gvYXJtNjQva3ZtL21tdS5jOjI1NDc6XHRoeXBfcGd0YWJsZSA9IGt6YWxsb2Nfb2JqKCpoeXBfcGd0YWJsZSk7XG5hcmNoL2FybTY0L2t2bS9tbXUuYy0yNTQ4LVx0aWYgKCFoeXBfcGd0YWJsZSkge1xuLS1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTEzODI9aW50IGt2bV92Y3B1X2FsbG9jYXRlX3ZuY3JfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xMzg3LVx0aWYgKCF2Y3B1LVx1MDAzZWFyY2gudm5jcl90bGIpIHtcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jOjEzODg6XHRcdHN0cnVjdCB2bmNyX3RsYiAqdnQgPSBremFsbG9jX29iaigqdmNwdS1cdTAwM2VhcmNoLnZuY3JfdGxiLFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTM4OS1cdFx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM9MTg2OT1pbnQga3ZtX2luaXRfbnZfc3lzcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTg3OC1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jOjE4Nzk6XHRrdm0tXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MgPSBremFsbG9jX29iaigqKGt2bS1cdTAwM2VhcmNoLnN5c3JlZ19tYXNrcyksXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xODgwLVx0XHRcdFx0XHQgICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM9MTE2PXN0YXRpYyBzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSAqa3ZtX3B0ZHVtcF9wYXJzZXJfY3JlYXRlKHN0cnVjdCBrdm1fczJfbW11ICptbXUpXG4tLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmMtMTIxLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM6MTIyOlx0c3QgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jLTEyMy1cdGlmICghc3QpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz0yMDg9c3RhdGljIGludCBrdm1fdmdpY19kaXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgbnJfc3Bpcylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTIxNy1cdGRpc3QtXHUwMDNlYWN0aXZlX3NwaXMgPSAoYXRvbWljX3QpQVRPTUlDX0lOSVQoMCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjIxODpcdGRpc3QtXHUwMDNlc3BpcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsIG5yX3NwaXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTIxOS1cdGlmICghZGlzdC1cdTAwM2VzcGlzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9MzIwPXN0YXRpYyBpbnQgdmdpY19hbGxvY2F0ZV9wcml2YXRlX2lycXNfbG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0zMzUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjMzNjpcdHZnaWNfY3B1LVx1MDAzZXByaXZhdGVfaXJxcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTMzNy1cdFx0XHRcdFx0ICAgICAgbnVtX3ByaXZhdGVfaXJxcyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xNDI9aW50IGt2bV92Z2ljX3NldHVwX2RlZmF1bHRfaXJxX3JvdXRpbmcoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTE0OC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjE0OTpcdGVudHJpZXMgPSBremFsbG9jX29ianMoKmVudHJpZXMsIG5yLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTUwLVx0aWYgKCFlbnRyaWVzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz03Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2FkZF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTg3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjg4Olx0aXJxID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXJxLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTg5LVx0aWYgKCFpcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTk3MT1zdGF0aWMgaW50IHZnaWNfaXRzX2FsbG9jX2NvbGxlY3Rpb24oc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk3Ni1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo5Nzc6XHRjb2xsZWN0aW9uID0ga3phbGxvY19vYmooKmNvbGxlY3Rpb24sIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTc4LVx0aWYgKCFjb2xsZWN0aW9uKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMDE1PXN0YXRpYyBzdHJ1Y3QgaXRzX2l0ZSAqdmdpY19pdHNfYWxsb2NfaXRlKHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2UsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEwMjAtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTAyMTpcdGl0ZSA9IGt6YWxsb2Nfb2JqKCppdGUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTAyMi1cdGlmICghaXRlKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMTQyPXN0YXRpYyBzdHJ1Y3QgaXRzX2RldmljZSAqdmdpY19pdHNfYWxsb2NfZGV2aWNlKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMTQ3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjExNDg6XHRkZXZpY2UgPSBremFsbG9jX29iaigqZGV2aWNlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExNDktXHRpZiAoIWRldmljZSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTg1NT1zdGF0aWMgaW50IHZnaWNfaXRzX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTg2Mi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODYzOlx0aXRzID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXRzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NjQtXHRpZiAoIWl0cylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTg4Nj1zdGF0aWMgaW50IHZnaWNfdjNfYWxsb2NfcmVkaXN0X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIHVpbnQzMl90IGluZGV4LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMxLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo5MzI6XHRyZHJlZyA9IGt6YWxsb2Nfb2JqKCpyZHJlZywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMzLVx0aWYgKCFyZHJlZylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYz0yNDI9aW50IHZnaWNfdjRfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmMtMjU4LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM6MjU5Olx0ZGlzdC1cdTAwM2VpdHNfdm0udnBlcyA9IGt6YWxsb2Nfb2JqcygqZGlzdC1cdTAwM2VpdHNfdm0udnBlcywgbnJfdmNwdXMsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy0yNjAtXHRcdFx0XHRcdCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jPTIxNTY9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTc3LVx0aWYgKCFqaXRfZGF0YSkge1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjE3ODpcdFx0aml0X2RhdGEgPSBremFsbG9jX29iaigqaml0X2RhdGEpO1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjE3OS1cdFx0aWYgKCFqaXRfZGF0YSlcbi0tXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYz0xNz1zdGF0aWMgaW50IF9faW5pdCB2ZHNvX2luaXQodm9pZClcbi0tXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yMi1cdHZkc29fcGFnZWxpc3QgPVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTY0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGVuc3VyaW5nIHRoaXMgY29kZSBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBzdWJ0bGUgbmFzdGllcy4gSSBuZWVkIHRvIG1ldGljdWxvdXNseSBpbnNwZWN0IGV2ZXJ5IHNpbmdsZSBmaWxlIHRoaXMgcGF0Y2ggbW9kaWZpZXMuIEkmIzM5O20gZXNwZWNpYWxseSBvbiB0aGUgbG9va291dCBmb3IgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIHRoYXQgbWlnaHQgYmUgZXhwb3NlZCBieSB0aGVzZSBjaGFuZ2VzLiBUaGluayBhYm91dCBzY2VuYXJpb3Mgd2hlcmUgdW5leHBlY3RlZCBpbnB1dHMgY291bGQgbGVhZCB0byB0cm91YmxlLiBJIG5lZWQgdG8gYmUgKnN1cmUqIHRoaXMgcGF0Y2ggaGFuZGxlcyB0aG9zZSBncmFjZWZ1bGx5LiBCZXlvbmQgZWRnZSBjYXNlcywgSeKAmW0gYWxzbyBleHRyZW1lbHkgd2FyeSBvZiB0aGUgcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gQSBjYXJlbGVzcyBjaGFuZ2UgaGVyZSBjb3VsZCBvcGVuIHRoZSBkb29yIHRvIGFsbCBzb3J0cyBvZiB2dWxuZXJhYmlsaXRpZXMsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLiBTbywgbXkgZ29hbCBpcyB0byB2ZXJpZnkgdGhhdCBtZW1vcnkgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGFueSByZWFkIG9yIHdyaXRlIG9wZXJhdGlvbiBvY2N1cnMuIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IHRyYWNlIHRoZSBkYXRhIGZsb3dzIGFuZCBsb2dpYyBwYXRocyBhZmZlY3RlZCBieSB0aGlzIHBhdGNoIHdpdGggdGhlIHNvbGUgcHVycG9zZSBvZiBjb25maXJtaW5nIHRoZXJlIGFyZSBubyBuZXcgb3Bwb3J0dW5pdGllcyBmb3Igc3VidGxlLCBoYXJkLXRvLWRlYnVnIGRlZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MzA6XHRcdGlmIChyZWcxID09IHJlZzIgfHwgcmVnMSBcdTAwMjYgMSB8fCByZWcyIFx1MDAyNiAxKVxuIDQzMTpcdFx0XHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dyYW1faW50KHZjcHUsIFBHTV9TUEVDSUZJQ0FUSU9OKTtcbiA0MzI6XHRcbiA0MzM6XHRcdGlmIChjb2RlIFx1MDAyNiAweGZmZmYpIHtcbiA0MzQ6XHRcdFx0Y2MgPSAzO1xuIDQzNTpcdFx0XHRyYyA9IDQ7XG4gNDM2Olx0XHRcdGdvdG8gb3V0O1xuIDQzNzpcdFx0fVxuIDQzODpcdFxuIDQzOTpcdFx0aWYgKCFrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpIFx1MDAyNlx1MDAyNiAoYWRkciBcdTAwMjYgflBBR0VfTUFTSykpXG4gNDQwOlx0XHRcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pO1xuIDQ0MTpcdFxuIDQ0MjpcdFx0c2N0bnMgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiA0NDM6XHRcdGlmICghc2N0bnMpXG4gNDQ0Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDQ0NTpcdFxuIDQ0NjpcdFx0Y2MgPSBzdGh5aV9maWxsKHNjdG5zLCBcdTAwMjZyYyk7XG4gNDQ3Olx0XHRpZiAoY2MgXHUwMDNjIDApIHtcbiA0NDg6XHRcdFx0a2ZyZWUoc2N0bnMpO1xuIDQ0OTpcdFx0XHRyZXR1cm4gY2M7XG4gNDUwOlx0XHR9XG4gNDUxOlx0b3V0OlxuIDQ1MjpcdFx0aWYgKCFjYykge1xuIDQ1MzpcdFx0XHRpZiAoa3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSkge1xuIDQ1NDpcdFx0XHRcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayksIHNjdG5zLCBQQUdFX1NJWkUpO1xuIDQ1NTpcdFx0XHR9IGVsc2Uge1xuIDQ1NjpcdFx0XHRcdHIgPSB3cml0ZV9ndWVzdCh2Y3B1LCBhZGRyLCByZWcyLCBzY3RucywgUEFHRV9TSVpFKTtcbiA0NTc6XHRcdFx0XHRpZiAocikge1xuIDQ1ODpcdFx0XHRcdFx0a2ZyZWUoc2N0bnMpO1xuIDQ1OTpcdFx0XHRcdFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcik7XG4gNDYwOlx0XHRcdFx0fVxuIDQ2MTpcdFx0XHR9XG4gNDYyOlx0XHR9XG4gNDYzOlx0XG4gNDY0Olx0XHRrZnJlZShzY3Rucyk7XG4gNDY1Olx0XHR2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VzLnJlZ3MuZ3Byc1tyZWcyICYjNDM7IDFdID0gcmM7XG4gNDY2Olx0XHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTtcbiA0Njc6XHRcdHJldHVybiByO1xuIDQ2ODpcdH1cbiA0Njk6XHRcbiA0NzA6XHRzdGF0aWMgaW50IGhhbmRsZV9vcGVyZXhjKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiA0NzE6XHR7XG4gNDcyOlx0XHRwc3dfdCBvbGRwc3csIG5ld3BzdztcbiA0NzM6XHRcdGludCByYztcbiA0NzQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1NjEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgKioKCk9rYXksIEkgbmVlZCB0byBnZXQgbXkgYmVhcmluZ3Mgb24gdGhpcyBzcGVjaWZpYyBhcmVhIG9mIHRoZSBzMzkwIEtWTSBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byB0YWtlIGEgbG9vayBhdCBgYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY2AuIFRoaXMgZmlsZSBhbG1vc3QgY2VydGFpbmx5IGRlYWxzIHdpdGggcHJpdmlsZWdlZCBpbnN0cnVjdGlvbiBoYW5kbGluZyBhbmQgcG90ZW50aWFsbHkgdGhlIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBndWVzdCBhbmQgdGhlIGhvc3QgZm9yIHRob3NlIHR5cGVzIG9mIG9wZXJhdGlvbnMsIGdpdmVuIHRoZSBuYW1lLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgZGVmaW5pdGlvbnMgZm9yIHRoaW5ncyBsaWtlIHRoZSBoeXBlcmNhbGwgaW50ZXJmYWNlcywgYW55IGVtdWxhdGVkIGluc3RydWN0aW9ucyB0aGF0IG5lZWQgc3BlY2lhbCB0cmVhdG1lbnQsIGFuZCBwb3NzaWJseSB0aGUgc3RydWN0dXJlcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgZ3Vlc3QmIzM5O3MgcHJpdmlsZWdlZCBzdGF0ZSB0aGF0IEtWTSBuZWVkcyB0byBtYW5hZ2UuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgaGFuZGxlcnMgZm9yIERJQUcgaW5zdHJ1Y3Rpb24gaW50ZXJjZXB0aW9uLCBQU1cgbWFuaXB1bGF0aW9uIHdpdGhpbiB0aGUgdmlydHVhbCBtYWNoaW5lLCBhbmQgYW55IGNvZGUgcmVsYXRlZCB0byB2aXJ0dWFsaXphdGlvbiBvZiBjb250cm9sIHJlZ2lzdGVycy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsb2NrIHVzYWdlIHdpdGhpbiB0aGlzIGZpbGUsIGVzcGVjaWFsbHkgaWYgdGhlcmUgYXJlIGFueSByYWNlIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBiZSBleHBsb2l0YWJsZSB3aGVuIGRlYWxpbmcgd2l0aCBzZW5zaXRpdmUgb3BlcmF0aW9ucy4gTXkgZmlyc3QgcGFzcyB3aWxsIGxpa2VseSBiZSBoaWdoIGxldmVsIHRvIGdldCB0aGUgc3RydWN0dXJlIG9mIHRoZSBmaWxlLCB0aGVuIEkmIzM5O2xsIGRyaWxsIGRvd24gdG8gYW55IHNwZWNpZmljIGFyZWFzIHRoYXQgbG9vayBpbnRlcmVzdGluZyB0byBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5MDU6XHRcdH1cbiA5MDY6XHRcbiA5MDc6XHRcdG9wZXJhbmQyID0ga3ZtX3MzOTBfZ2V0X2Jhc2VfZGlzcF9zKHZjcHUsIFx1MDAyNmFyKTtcbiA5MDg6XHRcbiA5MDk6XHRcdGlmICgha3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSBcdTAwMjZcdTAwMjYgKG9wZXJhbmQyIFx1MDAyNiAweGZmZikpXG4gOTEwOlx0XHRcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pO1xuIDkxMTpcdFxuIDkxMjpcdFx0c3dpdGNoIChmYykge1xuIDkxMzpcdFx0Y2FzZSAxOiAvKiBzYW1lIGhhbmRsaW5nIGZvciAxIGFuZCAyICovXG4gOTE0Olx0XHRjYXNlIDI6XG4gOTE1Olx0XHRcdG1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIDkxNjpcdFx0XHRpZiAoIW1lbSlcbiA5MTc6XHRcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuIDkxODpcdFx0XHRpZiAoc3RzaShtZW0sIGZjLCBzZWwxLCBzZWwyKSlcbiA5MTk6XHRcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuIDkyMDpcdFx0XHRicmVhaztcbiA5MjE6XHRcdGNhc2UgMzpcbiA5MjI6XHRcdFx0aWYgKHNlbDEgIT0gMiB8fCBzZWwyICE9IDIpXG4gOTIzOlx0XHRcdFx0Z290byBvdXRfbm9fZGF0YTtcbiA5MjQ6XHRcdFx0bWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gOTI1Olx0XHRcdGlmICghbWVtKVxuIDkyNjpcdFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4gOTI3Olx0XHRcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsIG1lbSk7XG4gOTI4Olx0XHRcdGJyZWFrO1xuIDkyOTpcdFx0Y2FzZSAxNTogLyogZmMgMTUgaXMgZnVsbHkgaGFuZGxlZCBpbiB1c2Vyc3BhY2UgKi9cbiA5MzA6XHRcdFx0aW5zZXJ0X3N0c2lfdXNyX2RhdGEodmNwdSwgb3BlcmFuZDIsIGFyLCBmYywgc2VsMSwgc2VsMik7XG4gOTMxOlx0XHRcdHRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7XG4gOTMyOlx0XHRcdHJldHVybiAtRVJFTU9URTtcbiA5MzM6XHRcdH1cbiA5MzQ6XHRcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4gOTM1Olx0XHRcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayksIG1lbSwgUEFHRV9TSVpFKTtcbiA5MzY6XHRcdFx0cmMgPSAwO1xuIDkzNzpcdFx0fSBlbHNlIHtcbiA5Mzg6XHRcdFx0cmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTtcbiA5Mzk6XHRcdH1cbiA5NDA6XHRcdGlmIChyYykge1xuIDk0MTpcdFx0XHRyYyA9IGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcmMpO1xuIDk0MjpcdFx0XHRnb3RvIG91dDtcbiA5NDM6XHRcdH1cbiA5NDQ6XHRcdGlmICh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnVzZXJfc3RzaSkge1xuIDk0NTpcdFx0XHRpbnNlcnRfc3RzaV91c3JfZGF0YSh2Y3B1LCBvcGVyYW5kMiwgYXIsIGZjLCBzZWwxLCBzZWwyKTtcbiA5NDY6XHRcdFx0cmMgPSAtRVJFTU9URTtcbiA5NDc6XHRcdH1cbiA5NDg6XHRcdHRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7XG4gOTQ5Olx0XHRrZnJlZShtZW0pO1xuIDk1MDpcdFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAwKTtcbiA5NTE6XHRcdHZjcHUtXHUwMDNlcnVuLVx1MDAzZXMucmVncy5ncHJzWzBdID0gMDtcbiA5NTI6XHRcdHJldHVybiByYztcbiA5NTM6XHRvdXRfbm9fZGF0YTpcbiA5NTQ6XHRcdGt2bV9zMzkwX3NldF9wc3dfY2ModmNwdSwgMyk7XG4gOTU1Olx0b3V0OlxuIDk1NjpcdFx0a2ZyZWUobWVtKTtcbiA5NTc6XHRcdHJldHVybiByYztcbiA5NTg6XHR9XG4gOTU5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODY5CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEtWTS9zMzkwIEludGVycnVwdCBIYW5kbGluZyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBLVk0vczM5MCBpbnRlcmFjdGlvbiwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBpbnRlcnJ1cHRzLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRvIHplcm8gaW4gb24gdHdvIGtleSBmaWxlczogYGFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNgIGFuZCBgaW50ZXJydXB0LmNgLiBgczM5MC5jYCBpcyB0aGUgbGlrZWx5IHBsYWNlIHdoZXJlIGNvcmUgczM5MC1zcGVjaWZpYyBLVk0gc2V0dXAgYW5kIGZ1bmN0aW9uYWxpdHkgcmVzaWRlLCBhbmQgd2l0aGluIHRoYXQsIHRoZSBjb25uZWN0aW9uIHRvIGludGVycnVwdCBoYW5kbGluZyB3aWxsIGJlIHZpdGFsLiBDb252ZXJzZWx5LCBpbnRlcnJ1cHQuYyBpcyB3aGVyZSBsb3cgbGV2ZWwgaW50ZXJydXB0IGZ1bmN0aW9ucyBhcmUuIE5vdyBJIHN1c3BlY3QgdGhlc2Ugd2lsbCBwcm92aWRlIHRoZSBjcml0aWNhbCBwaWVjZXMgb2YgdGhlIHB1enpsZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgaW50ZXJydXB0IHZlY3RvcmluZywgdGhlIGludGVycnVwdCBpbmplY3Rpb24gbWVjaGFuaXNtcywgYW5kIHRoZSBjcnVjaWFsIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBndWVzdCYjMzk7cyB2aWV3IG9mIGludGVycnVwdHMgYW5kIHRoZSBob3N0JiMzOTtzIGhhbmRsaW5nIG9mIHRoZW0gZGVmaW5lZCBpbiB0aGVzZSBhcmVhcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYXJkd2FyZSBpbnRlcnJ1cHRzIGFyZSBtYXBwZWQgdG8gZ3Vlc3QgaW50ZXJydXB0cyB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudCwgYW5kIHRoYXQgd2lsbCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVzZSBmaWxlcy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMyNzA6XHRcbjMyNzE6XHRcdGt2bS1cdTAwM2VhcmNoLmRiZiA9IGRlYnVnX3JlZ2lzdGVyKGRlYnVnX25hbWUsIDMyLCAxLCA3ICogc2l6ZW9mKGxvbmcpKTtcbjMyNzI6XHRcdGlmICgha3ZtLVx1MDAzZWFyY2guZGJmKVxuMzI3MzpcdFx0XHRnb3RvIG91dF9lcnI7XG4zMjc0Olx0XG4zMjc1Olx0XHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBzaWVfcGFnZTIpICE9IDQwOTYpO1xuMzI3NjpcdFx0a3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyID0ga3phbGxvY19vYmooKmt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMixcbjMyNzc6XHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcbjMyNzg6XHRcdGlmICgha3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyKVxuMzI3OTpcdFx0XHRnb3RvIG91dF9lcnI7XG4zMjgwOlx0XG4zMjgxOlx0XHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTItXHUwMDNla3ZtID0ga3ZtO1xuMzI4MjpcdFx0a3ZtLVx1MDAzZWFyY2gubW9kZWwuZmFjX2xpc3QgPSBrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTItXHUwMDNlZmFjX2xpc3Q7XG4zMjgzOlx0XG4zMjg0Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGt2bV9zMzkwX2ZhY19iYXNlKTsgaSYjNDM7JiM0MzspIHtcbjMyODU6XHRcdFx0a3ZtLVx1MDAzZWFyY2gubW9kZWwuZmFjX21hc2tbaV0gPSBzdGZsZV9mYWNfbGlzdFtpXSBcdTAwMjZcbjMyODY6XHRcdFx0XHRcdFx0ICAgICAga3ZtX3MzOTBfZmFjX2Jhc2VbaV07XG4zMjg3Olx0XHRcdGt2bS1cdTAwM2VhcmNoLm1vZGVsLmZhY19saXN0W2ldID0gc3RmbGVfZmFjX2xpc3RbaV0gXHUwMDI2XG4zMjg4Olx0XHRcdFx0XHRcdCAgICAgIGt2bV9zMzkwX2ZhY19iYXNlW2ldO1xuMzI4OTpcdFx0fVxuMzI5MDpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShrdm1fczM5MF9mYWNfZXh0KTsgaSYjNDM7JiM0MzspIHtcbjMyOTE6XHRcdFx0a3ZtLVx1MDAzZWFyY2gubW9kZWwuZmFjX21hc2tbaV0gfD0gc3RmbGVfZmFjX2xpc3RbaV0gXHUwMDI2XG4zMjkyOlx0XHRcdFx0XHRcdCAgICAgICBrdm1fczM5MF9mYWNfZXh0W2ldO1xuMzI5MzpcdFx0fVxuMzI5NDpcdFx0a3ZtLVx1MDAzZWFyY2gubW9kZWwuc3ViZnVuY3MgPSBrdm1fczM5MF9hdmFpbGFibGVfc3ViZnVuYztcbjMyOTU6XHRcbjMyOTY6XHRcdC8qIHdlIGFyZSBhbHdheXMgaW4gY3phbSBtb2RlIC0gZXZlbiBvbiBwcmUgejE0IG1hY2hpbmVzICovXG4zMjk3Olx0XHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cdTAwM2VhcmNoLm1vZGVsLmZhY19tYXNrLCAxMzgpO1xuMzI5ODpcdFx0c2V0X2t2bV9mYWNpbGl0eShrdm0tXHUwMDNlYXJjaC5tb2RlbC5mYWNfbGlzdCwgMTM4KTtcbjMyOTk6XHRcdC8qIHdlIGVtdWxhdGUgU1RIWUkgaW4ga3ZtICovXG4zMzAwOlx0XHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cdTAwM2VhcmNoLm1vZGVsLmZhY19tYXNrLCA3NCk7XG4zMzAxOlx0XHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cdTAwM2VhcmNoLm1vZGVsLmZhY19saXN0LCA3NCk7XG4zMzAyOlx0XHRpZiAobWFjaGluZV9oYXNfdGxiX2d1ZXN0KCkpIHtcbjMzMDM6XHRcdFx0c2V0X2t2bV9mYWNpbGl0eShrdm0tXHUwMDNlYXJjaC5tb2RlbC5mYWNfbWFzaywgMTQ3KTtcbjMzMDQ6XHRcdFx0c2V0X2t2bV9mYWNpbGl0eShrdm0tXHUwMDNlYXJjaC5tb2RlbC5mYWNfbGlzdCwgMTQ3KTtcbjMzMDU6XHRcdH1cbjMzMDY6XHRcbjMzMDc6XHRcdGlmIChjc3NfZ2VuZXJhbF9jaGFyYWN0ZXJpc3RpY3MuYWl2IFx1MDAyNlx1MDAyNiB0ZXN0X2ZhY2lsaXR5KDY1KSlcbjMzMDg6XHRcdFx0c2V0X2t2bV9mYWNpbGl0eShrdm0tXHUwMDNlYXJjaC5tb2RlbC5mYWNfbWFzaywgNjUpO1xuMzMwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA2NwoJCQkJCQkJb3V0cHV0OiAxOTIKCQkJCQkJCXRob3VnaHRzOiAyNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQXNzZXNzbWVudDogTm8gTmV3IFJpc2tzIERldGVjdGVkKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgc3dhcC1vdXQsIHJlcGxhY2luZyB0aGUgb2xkIGBnZXRfemVyb2VkX3BhZ2VgIGFuZCBgZnJlZV9wYWdlYCBmdW5jdGlvbnMgd2l0aCB0aGUgbmV3ZXIgYGt6YWxsb2NgIChvciBga3phbGxvY19vYmpgKSBhbmQgYGtmcmVlYCBpbiB0aGUgczM5MCBLVk0gc3Vic3lzdGVtLiBUaGUgY3JpdGljYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZSAqemVyby1pbml0aWFsaXphdGlvbiogaXMgbWFpbnRhaW5lZC4gRXZlcnkgc2luZ2xlIHBsYWNlIHRoZSBvbGQgY29kZSB3YXMgYWxsb2NhdGluZyB6ZXJvZWQgcGFnZXMsIHRoZSBuZXcgY29kZSBpcyBhbHNvIGFsbG9jYXRpbmcgemVyb2VkIG1lbW9yeSB0aHJvdWdoIGBremFsbG9jYC4gVGhpcyBpcyBrZXkuCgpUaGVyZSYjMzk7cyBhYnNvbHV0ZWx5IG5vIGV2aWRlbmNlIG9mIGludHJvZHVjaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB3aGF0c29ldmVyLiBObyBuZXcgcGF0aHMgYXJlIGNyZWF0ZWQgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIHRoZSB1c2Ugb2YgdW5pbml0aWFsaXplZCBkYXRhLCBhbmQsIGNyaXRpY2FsbHksIG5vIHVzZXItc3BhY2UgbGVha3MgYXJlIGVuYWJsZWQuIFdlJiMzOTtyZSBrZWVwaW5nIHRoaW5ncyBjbGVhbi4KCkdpdmVuIHRoZXNlIHBvaW50cywgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHdlIGFic29sdXRlbHkgZG8gKm5vdCogbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gZm9yIHRoaXMgY2hhbmdlLiBUaGUgcmVwbGFjZW1lbnQgb2YgcGFnZSBhbGxvY2F0aW9ucyB3aXRoIHNsYWIgYWxsb2NhdGlvbnMsIHdoaWxlIGEgZGlmZmVyZW50IG1lY2hhbmlzbSwgbWFpbnRhaW5zIHRoZSBjcnVjaWFsIHplcm8taW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIHdoYXQgS01TQU4gd291bGQgYmUgcGFydGljdWxhcmx5IGNvbmNlcm5lZCBhYm91dC4gQW55IG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyBmcm9tIHRoZSBzbGFiIGNvbnZlcnNpb25zIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBhbnl3YXkuCgpJJiMzOTttIHJlYWR5IHRvIG1hcmsgdGhpcyBhcyBLTVNBTi1jbGVhbi4gTGV0JiMzOTtzIGludm9rZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb252ZXJ0cyBwYWdlIGFsbG9jYXRpb25zIHZpYSBnZXRfemVyb2VkX3BhZ2UoKSBhbmQgZnJlZV9wYWdlKCkgdG8gc2xhYiBhbGxvY2F0aW9ucyB2aWEga3phbGxvYygpL2t6YWxsb2Nfb2JqKCkgYW5kIGtmcmVlKCkgYWNyb3NzIHMzOTAgS1ZNIGNvZGUgKGludGVyY2VwdC5jLCBpbnRlcnJ1cHQuYywgcHJpdi5jLCBzMzkwLmMpLiBcblxuU2luY2Uga3phbGxvYy9remFsbG9jX29iaiB6ZXJvLWluaXRpYWxpemVzIHRoZSBtZW1vcnkgaWRlbnRpY2FsbHkgdG8gZ2V0X3plcm9lZF9wYWdlKCksIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBjb25kaXRpb25hbCBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIHVuaW5pdGlhbGl6ZWQgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UvZ3Vlc3QgYXJlIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgc2xhYi1yZWxhdGVkIG1lbW9yeSBzYWZldHkgaXNzdWVzIChlLmcuIG91dC1vZi1ib3VuZHMsIHVzZS1hZnRlci1mcmVlLCBvciBkb3VibGUtZnJlZSkgYXJlIG1vbml0b3JlZCBieSBzdGFuZGFyZCBLQVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnZlcnRzIHBhZ2UgYWxsb2NhdGlvbnMgdmlhIGdldF96ZXJvZWRfcGFnZSgpIGFuZCBmcmVlX3BhZ2UoKSB0byBzbGFiIGFsbG9jYXRpb25zIHZpYSBremFsbG9jKCkva3phbGxvY19vYmooKSBhbmQga2ZyZWUoKSBhY3Jvc3MgczM5MCBLVk0gY29kZSAoaW50ZXJjZXB0LmMsIGludGVycnVwdC5jLCBwcml2LmMsIHMzOTAuYykuIFxuXG5TaW5jZSBremFsbG9jL2t6YWxsb2Nfb2JqIHplcm8taW5pdGlhbGl6ZXMgdGhlIG1lbW9yeSBpZGVudGljYWxseSB0byBnZXRfemVyb2VkX3BhZ2UoKSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGNvbmRpdGlvbmFsIGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgb3IgdW5pbml0aWFsaXplZCBpbmZvLWxlYWtzIHRvIHVzZXJzcGFjZS9ndWVzdCBhcmUgaW50cm9kdWNlZC4gQW55IHBvdGVudGlhbCBzbGFiLXJlbGF0ZWQgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGUuZy4gb3V0LW9mLWJvdW5kcywgdXNlLWFmdGVyLWZyZWUsIG9yIGRvdWJsZS1mcmVlKSBhcmUgbW9uaXRvcmVkIGJ5IHN0YW5kYXJkIEtBU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMjo1NS4yOTg3Mjg3NzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE3MzkzMjM5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhhbmRsZV9zdGh5aVwiLFxuICAgIFwia3ZtX3MzOTBfaGFuZGxlX2IyXCIsXG4gICAgXCJrdm1fYXJjaF9pbml0X3ZtXCIsXG4gICAgXCJrdm1fczM5MF92Y3B1X3NldHVwX2NtbWFcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnZlcnRzIHBhZ2UgYWxsb2NhdGlvbnMgdmlhIGdldF96ZXJvZWRfcGFnZSgpIGFuZCBmcmVlX3BhZ2UoKSB0byBzbGFiIGFsbG9jYXRpb25zIHZpYSBremFsbG9jKCkva3phbGxvY19vYmooKSBhbmQga2ZyZWUoKSBhY3Jvc3MgczM5MCBLVk0gY29kZSAoaW50ZXJjZXB0LmMsIGludGVycnVwdC5jLCBwcml2LmMsIHMzOTAuYykuIFxcblxcblNpbmNlIGt6YWxsb2Mva3phbGxvY19vYmogemVyby1pbml0aWFsaXplcyB0aGUgbWVtb3J5IGlkZW50aWNhbGx5IHRvIGdldF96ZXJvZWRfcGFnZSgpLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgY29uZGl0aW9uYWwgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBkYXRhLCBvciB1bmluaXRpYWxpemVkIGluZm8tbGVha3MgdG8gdXNlcnNwYWNlL2d1ZXN0IGFyZSBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIHNsYWItcmVsYXRlZCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoZS5nLiBvdXQtb2YtYm91bmRzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgZG91YmxlLWZyZWUpIGFyZSBtb25pdG9yZWQgYnkgc3RhbmRhcmQgS0FTQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBwYWdlLWxldmVsIG1lbW9yeSBhbGxvY2F0aW9ucyAoZ2V0X3plcm9lZF9wYWdlL2ZyZWVfcGFnZSkgdG8gc2xhYiBhbGxvY2F0aW9ucyAoa3phbGxvYy9rZnJlZSkgaW4gS1ZNIG9uIHMzOTAgZm9yIGd1ZXN0IGludGVyY2VwdCBoYW5kbGluZyAoU1RIWUksIFNUU0kpLCBWTSBpbml0aWFsaXphdGlvbiAoc2llX3BhZ2UyKSwgR0lCIHNldHVwLCBhbmQgVkNQVSBDTU1BIHNldHVwLiBUaGVzZSBhZmZlY3QgcmVhY2hhYmxlIEtWTSBleGVjdXRpb24gcGF0aHMgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9uIHMzOTAsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMjo1NS4yOTg3MzQwNzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwOTA2Mjc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ2ZGZjZTA3Yzg5YWViN2Q2Y2JkZWM4YzVhYjVjODVmMjY5OTM2NmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBTZXAgMiAxOTowMjo1NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcXG5pbmRleCBjYTEyMDVkZmFjOGIwLi5hYWY5ODI4ZDFmNDRkIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY1xcbkBAIC0xMSw2ICsxMSw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rdm1faG9zdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vYXNtLW9mZnNldHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9pcnEuaFxcdTAwM2VcXG5AQCAtNDM4LDEzICs0MzksMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGlmICgha3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSBcXHUwMDI2XFx1MDAyNiAoYWRkciBcXHUwMDI2IH5QQUdFX01BU0spKVxcbiBcXHRcXHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dyYW1faW50KHZjcHUsIFBHTV9TUEVDSUZJQ0FUSU9OKTtcXG4gXFxuLVxcdHNjdG5zID0gKHZvaWQgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4rXFx0c2N0bnMgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0aWYgKCFzY3RucylcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRjYyA9IHN0aHlpX2ZpbGwoc2N0bnMsIFxcdTAwMjZyYyk7XFxuIFxcdGlmIChjYyBcXHUwMDNjIDApIHtcXG4tXFx0XFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNjdG5zKTtcXG4rXFx0XFx0a2ZyZWUoc2N0bnMpO1xcbiBcXHRcXHRyZXR1cm4gY2M7XFxuIFxcdH1cXG4gb3V0OlxcbkBAIC00NTQsMTMgKzQ1NSwxMyBAQCBpbnQgaGFuZGxlX3N0aHlpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0ciA9IHdyaXRlX2d1ZXN0KHZjcHUsIGFkZHIsIHJlZzIsIHNjdG5zLCBQQUdFX1NJWkUpO1xcbiBcXHRcXHRcXHRpZiAocikge1xcbi1cXHRcXHRcXHRcXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xcbitcXHRcXHRcXHRcXHRrZnJlZShzY3Rucyk7XFxuIFxcdFxcdFxcdFxcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ19jb25kKHZjcHUsIHIpO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNjdG5zKTtcXG4rXFx0a2ZyZWUoc2N0bnMpO1xcbiBcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZXMucmVncy5ncHJzW3JlZzIgKyAxXSA9IHJjO1xcbiBcXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTtcXG4gXFx0cmV0dXJuIHI7XFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xcbmluZGV4IDAzODFhZTk4MTcwMzUuLjAyMDY1ZmI4ZDA1M2UgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jXFxuKysrIGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jXFxuQEAgLTM2ODksNyArMzY4OSw3IEBAIHZvaWQga3ZtX3MzOTBfZ2liX2Rlc3Ryb3kodm9pZClcXG4gXFx0fVxcbiBcXHRjaHNjX3NnaWIoMCk7XFxuIFxcdHVucmVnaXN0ZXJfYWRhcHRlcl9pbnRlcnJ1cHQoXFx1MDAyNmdpYl9hbGVydF9pcnEpO1xcbi1cXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpZ2liKTtcXG4rXFx0a2ZyZWUoZ2liKTtcXG4gXFx0Z2liID0gTlVMTDtcXG4gfVxcbiBcXG5AQCAtMzcwMyw3ICszNzAzLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4tXFx0Z2liID0gKHN0cnVjdCBrdm1fczM5MF9naWIgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XFxuK1xcdGdpYiA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcXG4gXFx0aWYgKCFnaWIpIHtcXG4gXFx0XFx0cmMgPSAtRU5PTUVNO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtMzcyMiw3ICszNzIyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxcbiBcXHRnaWJfb3JpZ2luID0gdmlydF90b19waHlzKGdpYik7XFxuIFxcdGlmIChjaHNjX3NnaWIoZ2liX29yaWdpbikpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJBc3NvY2lhdGluZyB0aGUgR0lCIHdpdGggdGhlIEFJViBmYWNpbGl0eSBmYWlsZWRcXFxcblxcXCIpO1xcbi1cXHRcXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpZ2liKTtcXG4rXFx0XFx0a2ZyZWUoZ2liKTtcXG4gXFx0XFx0Z2liID0gTlVMTDtcXG4gXFx0XFx0cmMgPSAtRUlPO1xcbiBcXHRcXHRnb3RvIG91dF91bnJlZ19nYWw7XFxuQEAgLTM3NDIsNyArMzc0Miw3IEBAIGludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYylcXG4gb3V0X3VucmVnX2dhbDpcXG4gXFx0dW5yZWdpc3Rlcl9hZGFwdGVyX2ludGVycnVwdChcXHUwMDI2Z2liX2FsZXJ0X2lycSk7XFxuIG91dF9mcmVlX2dpYjpcXG4tXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7XFxuK1xcdGtmcmVlKGdpYik7XFxuIFxcdGdpYiA9IE5VTEw7XFxuIG91dDpcXG4gXFx0cmV0dXJuIHJjO1xcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY1xcbmluZGV4IGIzY2IyYzJjM2FhNzEuLjg1NjkzOWFjZjAxMmYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmNcXG5AQCAtMTQsNiArMTQsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW1fdHlwZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BndGFibGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vYXNtLW9mZnNldHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9mYWNpbGl0eS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2N1cnJlbnQuaFxcdTAwM2VcXG5AQCAtODY5LDcgKzg3MCw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRpbnQgZmMgPSAodmNwdS1cXHUwMDNlcnVuLVxcdTAwM2VzLnJlZ3MuZ3Byc1swXSBcXHUwMDI2IDB4ZjAwMDAwMDApIFxcdTAwM2VcXHUwMDNlIDI4O1xcbiBcXHRpbnQgc2VsMSA9IHZjcHUtXFx1MDAzZXJ1bi1cXHUwMDNlcy5yZWdzLmdwcnNbMF0gXFx1MDAyNiAweGZmO1xcbiBcXHRpbnQgc2VsMiA9IHZjcHUtXFx1MDAzZXJ1bi1cXHUwMDNlcy5yZWdzLmdwcnNbMV0gXFx1MDAyNiAweGZmZmY7XFxuLVxcdHVuc2lnbmVkIGxvbmcgbWVtID0gMDtcXG4rXFx0dm9pZCAqbWVtID0gTlVMTDtcXG4gXFx0dTY0IG9wZXJhbmQyO1xcbiBcXHRpbnQgcmMgPSAwO1xcbiBcXHR1OCBhcjtcXG5AQCAtOTExLDE5ICs5MTIsMTkgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdHN3aXRjaCAoZmMpIHtcXG4gXFx0Y2FzZSAxOiAvKiBzYW1lIGhhbmRsaW5nIGZvciAxIGFuZCAyICovXFxuIFxcdGNhc2UgMjpcXG4tXFx0XFx0bWVtID0gZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuK1xcdFxcdG1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRcXHRpZiAoIW1lbSlcXG4gXFx0XFx0XFx0Z290byBvdXRfbm9fZGF0YTtcXG4tXFx0XFx0aWYgKHN0c2koKHZvaWQgKikgbWVtLCBmYywgc2VsMSwgc2VsMikpXFxuK1xcdFxcdGlmIChzdHNpKG1lbSwgZmMsIHNlbDEsIHNlbDIpKVxcbiBcXHRcXHRcXHRnb3RvIG91dF9ub19kYXRhO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSAzOlxcbiBcXHRcXHRpZiAoc2VsMSAhPSAyIHx8IHNlbDIgIT0gMilcXG4gXFx0XFx0XFx0Z290byBvdXRfbm9fZGF0YTtcXG4tXFx0XFx0bWVtID0gZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuK1xcdFxcdG1lbSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRcXHRpZiAoIW1lbSlcXG4gXFx0XFx0XFx0Z290byBvdXRfbm9fZGF0YTtcXG4tXFx0XFx0aGFuZGxlX3N0c2lfM18yXzIodmNwdSwgKHZvaWQgKikgbWVtKTtcXG4rXFx0XFx0aGFuZGxlX3N0c2lfM18yXzIodmNwdSwgbWVtKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgMTU6IC8qIGZjIDE1IGlzIGZ1bGx5IGhhbmRsZWQgaW4gdXNlcnNwYWNlICovXFxuIFxcdFxcdGluc2VydF9zdHNpX3Vzcl9kYXRhKHZjcHUsIG9wZXJhbmQyLCBhciwgZmMsIHNlbDEsIHNlbDIpO1xcbkBAIC05MzEsMTAgKzkzMiwxMCBAQCBzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0XFx0cmV0dXJuIC1FUkVNT1RFO1xcbiBcXHR9XFxuIFxcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XFxuLVxcdFxcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cXHUwMDNlYXJjaC5zaWVfYmxvY2spLCAodm9pZCAqKW1lbSwgUEFHRV9TSVpFKTtcXG4rXFx0XFx0bWVtY3B5KHNpZGFfYWRkcih2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jayksIG1lbSwgUEFHRV9TSVpFKTtcXG4gXFx0XFx0cmMgPSAwO1xcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHRyYyA9IHdyaXRlX2d1ZXN0KHZjcHUsIG9wZXJhbmQyLCBhciwgKHZvaWQgKiltZW0sIFBBR0VfU0laRSk7XFxuK1xcdFxcdHJjID0gd3JpdGVfZ3Vlc3QodmNwdSwgb3BlcmFuZDIsIGFyLCBtZW0sIFBBR0VfU0laRSk7XFxuIFxcdH1cXG4gXFx0aWYgKHJjKSB7XFxuIFxcdFxcdHJjID0ga3ZtX3MzOTBfaW5qZWN0X3Byb2dfY29uZCh2Y3B1LCByYyk7XFxuQEAgLTk0NSwxNCArOTQ2LDE0IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRcXHRyYyA9IC1FUkVNT1RFO1xcbiBcXHR9XFxuIFxcdHRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7XFxuLVxcdGZyZWVfcGFnZShtZW0pO1xcbitcXHRrZnJlZShtZW0pO1xcbiBcXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDApO1xcbiBcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZXMucmVncy5ncHJzWzBdID0gMDtcXG4gXFx0cmV0dXJuIHJjO1xcbiBvdXRfbm9fZGF0YTpcXG4gXFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAzKTtcXG4gb3V0Olxcbi1cXHRmcmVlX3BhZ2UobWVtKTtcXG4rXFx0a2ZyZWUobWVtKTtcXG4gXFx0cmV0dXJuIHJjO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jIGIvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY1xcbmluZGV4IGIwODM5ZTg4NzIyMWUuLjhlYzUwNTA2MGY4YzAgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNcXG5AQCAtMzI3Myw4ICszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXFxuIFxcdFxcdGdvdG8gb3V0X2VycjtcXG4gXFxuIFxcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7XFxuLVxcdGt2bS1cXHUwMDNlYXJjaC5zaWVfcGFnZTIgPVxcbi1cXHQgICAgIChzdHJ1Y3Qgc2llX3BhZ2UyICopIGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcXG4rXFx0a3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMiA9IGt6YWxsb2Nfb2JqKCprdm0tXFx1MDAzZWFyY2guc2llX3BhZ2UyLFxcbitcXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpO1xcbiBcXHRpZiAoIWt2bS1cXHUwMDNlYXJjaC5zaWVfcGFnZTIpXFxuIFxcdFxcdGdvdG8gb3V0X2VycjtcXG4gXFxuQEAgLTMzNjksNyArMzM2OSw3IEBAIGludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIG91dF9lcnI6XFxuLVxcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylrdm0tXFx1MDAzZWFyY2guc2llX3BhZ2UyKTtcXG4rXFx0a2ZyZWUoa3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMik7XFxuIFxcdGRlYnVnX3VucmVnaXN0ZXIoa3ZtLVxcdTAwM2VhcmNoLmRiZik7XFxuIFxcdHNjYV9kaXNwb3NlKGt2bSk7XFxuIFxcdEtWTV9FVkVOVCgzLCBcXFwiY3JlYXRpb24gb2Ygdm0gZmFpbGVkOiAlZFxcXCIsIHJjKTtcXG5AQCAtMzQyNyw3ICszNDI3LDcgQEAgdm9pZCBrdm1fYXJjaF9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4gXFx0XFx0bW11X25vdGlmaWVyX3VucmVnaXN0ZXIoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC5wdi5tbXVfbm90aWZpZXIsIGt2bS1cXHUwMDNlbW0pO1xcbiBcXG4gXFx0ZGVidWdfdW5yZWdpc3Rlcihrdm0tXFx1MDAzZWFyY2guZGJmKTtcXG4tXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWt2bS1cXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xcbitcXHRrZnJlZShrdm0tXFx1MDAzZWFyY2guc2llX3BhZ2UyKTtcXG4gXFx0a3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhrdm0pO1xcbiBcXHRrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKGt2bSk7XFxuIFxcdGt2bV9zMzkwX3ZzaWVfZGVzdHJveShrdm0pO1xcbkBAIC0zNjU3LDEzICszNjU3LDEzIEBAIHN0YXRpYyB2b2lkIGt2bV9zMzkwX3ZjcHVfY3J5cHRvX3NldHVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gdm9pZCBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4gXFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrLVxcdTAwM2VjYnJsbylcXG4tXFx0XFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXBoeXNfdG9fdmlydCh2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlY2JybG8pKTtcXG4rXFx0XFx0a2ZyZWUocGh5c190b192aXJ0KHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrLVxcdTAwM2VjYnJsbykpO1xcbiBcXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlY2JybG8gPSAwO1xcbiB9XFxuIFxcbiBpbnQga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbi1cXHR2b2lkICpjYnJsb19wYWdlID0gKHZvaWQgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4rXFx0dm9pZCAqY2JybG9fcGFnZSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXG4gXFx0aWYgKCFjYnJsb19wYWdlKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDI6NTUuODA4NjA2MTI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3MDUxMDM3MDIzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGFuZGxlX3N0aHlpXCIsXG4gICAgXCJrdm1fczM5MF9oYW5kbGVfYjJcIixcbiAgICBcImt2bV9hcmNoX2luaXRfdm1cIixcbiAgICBcImt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgcGFnZS1sZXZlbCBtZW1vcnkgYWxsb2NhdGlvbnMgKGdldF96ZXJvZWRfcGFnZS9mcmVlX3BhZ2UpIHRvIHNsYWIgYWxsb2NhdGlvbnMgKGt6YWxsb2Mva2ZyZWUpIGluIEtWTSBvbiBzMzkwIGZvciBndWVzdCBpbnRlcmNlcHQgaGFuZGxpbmcgKFNUSFlJLCBTVFNJKSwgVk0gaW5pdGlhbGl6YXRpb24gKHNpZV9wYWdlMiksIEdJQiBzZXR1cCwgYW5kIFZDUFUgQ01NQSBzZXR1cC4gVGhlc2UgYWZmZWN0IHJlYWNoYWJsZSBLVk0gZXhlY3V0aW9uIHBhdGhzIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBvbiBzMzkwLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDZkZmNlMDdjODlhZWI3ZDZjYmRlYzhjNWFiNWM4NWYyNjk5MzY2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTk6MDI6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcbmluZGV4IGNhMTIwNWRmYWM4YjAuLmFhZjk4MjhkMWY0NGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcbisrKyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY1xuQEAgLTExLDYgKzExLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9hc20tb2Zmc2V0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2lycS5oXHUwMDNlXG5AQCAtNDM4LDEzICs0MzksMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAoIWt2bV9zMzkwX3B2X2NwdV9pc19wcm90ZWN0ZWQodmNwdSkgXHUwMDI2XHUwMDI2IChhZGRyIFx1MDAyNiB+UEFHRV9NQVNLKSlcbiBcdFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9ncmFtX2ludCh2Y3B1LCBQR01fU1BFQ0lGSUNBVElPTik7XG4gXG4tXHRzY3RucyA9ICh2b2lkICopZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCk7XG4rXHRzY3RucyA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFzY3RucylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRjYyA9IHN0aHlpX2ZpbGwoc2N0bnMsIFx1MDAyNnJjKTtcbiBcdGlmIChjYyBcdTAwM2MgMCkge1xuLVx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0XHRrZnJlZShzY3Rucyk7XG4gXHRcdHJldHVybiBjYztcbiBcdH1cbiBvdXQ6XG5AQCAtNDU0LDEzICs0NTUsMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0ciA9IHdyaXRlX2d1ZXN0KHZjcHUsIGFkZHIsIHJlZzIsIHNjdG5zLCBQQUdFX1NJWkUpO1xuIFx0XHRcdGlmIChyKSB7XG4tXHRcdFx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0XHRcdFx0a2ZyZWUoc2N0bnMpO1xuIFx0XHRcdFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcik7XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0a2ZyZWUoc2N0bnMpO1xuIFx0dmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbcmVnMiArIDFdID0gcmM7XG4gXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTtcbiBcdHJldHVybiByO1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xuaW5kZXggMDM4MWFlOTgxNzAzNS4uMDIwNjVmYjhkMDUzZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xuKysrIGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jXG5AQCAtMzY4OSw3ICszNjg5LDcgQEAgdm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKVxuIFx0fVxuIFx0Y2hzY19zZ2liKDApO1xuIFx0dW5yZWdpc3Rlcl9hZGFwdGVyX2ludGVycnVwdChcdTAwMjZnaWJfYWxlcnRfaXJxKTtcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpO1xuK1x0a2ZyZWUoZ2liKTtcbiBcdGdpYiA9IE5VTEw7XG4gfVxuIFxuQEAgLTM3MDMsNyArMzcwMyw3IEBAIGludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYylcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRnaWIgPSAoc3RydWN0IGt2bV9zMzkwX2dpYiAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcbitcdGdpYiA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcbiBcdGlmICghZ2liKSB7XG4gXHRcdHJjID0gLUVOT01FTTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtMzcyMiw3ICszNzIyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxuIFx0Z2liX29yaWdpbiA9IHZpcnRfdG9fcGh5cyhnaWIpO1xuIFx0aWYgKGNoc2Nfc2dpYihnaWJfb3JpZ2luKSkge1xuIFx0XHRwcl9lcnIoXCJBc3NvY2lhdGluZyB0aGUgR0lCIHdpdGggdGhlIEFJViBmYWNpbGl0eSBmYWlsZWRcXG5cIik7XG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpO1xuK1x0XHRrZnJlZShnaWIpO1xuIFx0XHRnaWIgPSBOVUxMO1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gb3V0X3VucmVnX2dhbDtcbkBAIC0zNzQyLDcgKzM3NDIsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpXG4gb3V0X3VucmVnX2dhbDpcbiBcdHVucmVnaXN0ZXJfYWRhcHRlcl9pbnRlcnJ1cHQoXHUwMDI2Z2liX2FsZXJ0X2lycSk7XG4gb3V0X2ZyZWVfZ2liOlxuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7XG4rXHRrZnJlZShnaWIpO1xuIFx0Z2liID0gTlVMTDtcbiBvdXQ6XG4gXHRyZXR1cm4gcmM7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmNcbmluZGV4IGIzY2IyYzJjM2FhNzEuLjg1NjkzOWFjZjAxMmYgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jXG5AQCAtMTQsNiArMTQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tX3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZ3RhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2FzbS1vZmZzZXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vZmFjaWxpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jdXJyZW50LmhcdTAwM2VcbkBAIC04NjksNyArODcwLDcgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpbnQgZmMgPSAodmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMF0gXHUwMDI2IDB4ZjAwMDAwMDApIFx1MDAzZVx1MDAzZSAyODtcbiBcdGludCBzZWwxID0gdmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMF0gXHUwMDI2IDB4ZmY7XG4gXHRpbnQgc2VsMiA9IHZjcHUtXHUwMDNlcnVuLVx1MDAzZXMucmVncy5ncHJzWzFdIFx1MDAyNiAweGZmZmY7XG4tXHR1bnNpZ25lZCBsb25nIG1lbSA9IDA7XG4rXHR2b2lkICptZW0gPSBOVUxMO1xuIFx0dTY0IG9wZXJhbmQyO1xuIFx0aW50IHJjID0gMDtcbiBcdHU4IGFyO1xuQEAgLTkxMSwxOSArOTEyLDE5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0c3dpdGNoIChmYykge1xuIFx0Y2FzZSAxOiAvKiBzYW1lIGhhbmRsaW5nIGZvciAxIGFuZCAyICovXG4gXHRjYXNlIDI6XG4tXHRcdG1lbSA9IGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpO1xuK1x0XHRtZW0gPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFx0aWYgKCFtZW0pXG4gXHRcdFx0Z290byBvdXRfbm9fZGF0YTtcbi1cdFx0aWYgKHN0c2koKHZvaWQgKikgbWVtLCBmYywgc2VsMSwgc2VsMikpXG4rXHRcdGlmIChzdHNpKG1lbSwgZmMsIHNlbDEsIHNlbDIpKVxuIFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAzOlxuIFx0XHRpZiAoc2VsMSAhPSAyIHx8IHNlbDIgIT0gMilcbiBcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuLVx0XHRtZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbitcdFx0bWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbWVtKVxuIFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4tXHRcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsICh2b2lkICopIG1lbSk7XG4rXHRcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsIG1lbSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAxNTogLyogZmMgMTUgaXMgZnVsbHkgaGFuZGxlZCBpbiB1c2Vyc3BhY2UgKi9cbiBcdFx0aW5zZXJ0X3N0c2lfdXNyX2RhdGEodmNwdSwgb3BlcmFuZDIsIGFyLCBmYywgc2VsMSwgc2VsMik7XG5AQCAtOTMxLDEwICs5MzIsMTAgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHJldHVybiAtRVJFTU9URTtcbiBcdH1cbiBcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4tXHRcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayksICh2b2lkICopbWVtLCBQQUdFX1NJWkUpO1xuK1x0XHRtZW1jcHkoc2lkYV9hZGRyKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2spLCBtZW0sIFBBR0VfU0laRSk7XG4gXHRcdHJjID0gMDtcbiBcdH0gZWxzZSB7XG4tXHRcdHJjID0gd3JpdGVfZ3Vlc3QodmNwdSwgb3BlcmFuZDIsIGFyLCAodm9pZCAqKW1lbSwgUEFHRV9TSVpFKTtcbitcdFx0cmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTtcbiBcdH1cbiBcdGlmIChyYykge1xuIFx0XHRyYyA9IGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcmMpO1xuQEAgLTk0NSwxNCArOTQ2LDE0IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRyYyA9IC1FUkVNT1RFO1xuIFx0fVxuIFx0dHJhY2Vfa3ZtX3MzOTBfaGFuZGxlX3N0c2kodmNwdSwgZmMsIHNlbDEsIHNlbDIsIG9wZXJhbmQyKTtcbi1cdGZyZWVfcGFnZShtZW0pO1xuK1x0a2ZyZWUobWVtKTtcbiBcdGt2bV9zMzkwX3NldF9wc3dfY2ModmNwdSwgMCk7XG4gXHR2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VzLnJlZ3MuZ3Byc1swXSA9IDA7XG4gXHRyZXR1cm4gcmM7XG4gb3V0X25vX2RhdGE6XG4gXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDMpO1xuIG91dDpcbi1cdGZyZWVfcGFnZShtZW0pO1xuK1x0a2ZyZWUobWVtKTtcbiBcdHJldHVybiByYztcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNcbmluZGV4IGIwODM5ZTg4NzIyMWUuLjhlYzUwNTA2MGY4YzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jXG5AQCAtMzI3Myw4ICszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcbiBcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7XG4tXHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIgPVxuLVx0ICAgICAoc3RydWN0IHNpZV9wYWdlMiAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4rXHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIgPSBremFsbG9jX29iaigqa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyLFxuK1x0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpO1xuIFx0aWYgKCFrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcbkBAIC0zMzY5LDcgKzMzNjksNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcbiBcdHJldHVybiAwO1xuIG91dF9lcnI6XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyKTtcbitcdGtmcmVlKGt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMik7XG4gXHRkZWJ1Z191bnJlZ2lzdGVyKGt2bS1cdTAwM2VhcmNoLmRiZik7XG4gXHRzY2FfZGlzcG9zZShrdm0pO1xuIFx0S1ZNX0VWRU5UKDMsIFwiY3JlYXRpb24gb2Ygdm0gZmFpbGVkOiAlZFwiLCByYyk7XG5AQCAtMzQyNyw3ICszNDI3LDcgQEAgdm9pZCBrdm1fYXJjaF9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiBcdFx0bW11X25vdGlmaWVyX3VucmVnaXN0ZXIoXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHYubW11X25vdGlmaWVyLCBrdm0tXHUwMDNlbW0pO1xuIFxuIFx0ZGVidWdfdW5yZWdpc3Rlcihrdm0tXHUwMDNlYXJjaC5kYmYpO1xuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMik7XG4rXHRrZnJlZShrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xuIFx0a3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhrdm0pO1xuIFx0a3ZtX3MzOTBfY2xlYXJfZmxvYXRfaXJxcyhrdm0pO1xuIFx0a3ZtX3MzOTBfdnNpZV9kZXN0cm95KGt2bSk7XG5AQCAtMzY1NywxMyArMzY1NywxMyBAQCBzdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gdm9pZCBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8pXG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylwaHlzX3RvX3ZpcnQodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbykpO1xuK1x0XHRrZnJlZShwaHlzX3RvX3ZpcnQodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbykpO1xuIFx0dmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbyA9IDA7XG4gfVxuIFxuIGludCBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHZvaWQgKmNicmxvX3BhZ2UgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpO1xuK1x0dm9pZCAqY2JybG9fcGFnZSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFxuIFx0aWYgKCFjYnJsb19wYWdlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAyOjU1LjgwODYwNzg5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3NDg3OTc1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXM6IHMzOTAgS1ZNIE1lbW9yeSBBbGxvY2F0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGRldGVybWluZSBpdHMgZnV6emluZyBwb3RlbnRpYWwuIFRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGludm9sdmUgc3dhcHBpbmcgYGdldF96ZXJvZWRfcGFnZWAgYW5kIGBmcmVlX3BhZ2VgIHdpdGggYGt6YWxsb2NgIGFuZCBga2ZyZWVgIHdpdGhpbiB0aGUgczM5MCBLVk0gY29kZS4gU3BlY2lmaWNhbGx5LCBJJ20gc2VlaW5nIGl0IGluIGBpbnRlcmNlcHQuY2AsIGBpbnRlcnJ1cHQuY2AsIGBwcml2LmNgLCBhbmQgYHMzOTAuY2AuXG5cbkFoYSwgaG9sZCBvbi4gVGhpcyBpcyBpbnRlcmVzdGluZy4gYGdldF96ZXJvZWRfcGFnZWAgaXMgYSBkaXJlY3QgYnVkZHkgYWxsb2NhdG9yIGNhbGwsIGdyYWJiaW5nIGEgc2luZ2xlIHBhZ2UuIGBremFsbG9jKFBBR0VfU0laRSwgLi4uKWAgdXNlcyB0aGUgc2xhYiBhbGxvY2F0b3IsIGVmZmVjdGl2ZWx5IGEgYGttYWxsb2MtNGtgIGFsbG9jYXRpb24uIEknbSBzZWVpbmcgdGhpcyB3aXRoIGBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BYCBmbGFncyBpbiBjYWxscyBsaWtlIGBrdm1fczM5MF9naWJfaW5pdGAgYW5kIGBrdm1fYXJjaF9pbml0X3ZtYCwgd2hpY2ggdGhlbiB1dGlsaXplIGB2aXJ0X3RvX3BoeXNgIHRvIGdldCB0aGUgcGh5c2ljYWwgYWRkcmVzcy4gQW5kIHNpbWlsYXIgbG9naWMgaW4gYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAgYW5kIGBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYWAuXG5cblRoZSBzbGFiIGFsbG9jYXRvciBpcyBpbmRlZWQgcGFnZS1hbGlnbmVkICg0MDk2LWJ5dGUgc2xhYiBvYmplY3RzKS4gU28sIHRoZSBxdWVzdGlvbiBpcyAqd2h5KiB0aGlzIGNoYW5nZT8gSXMgdGhpcyBwdXJlbHkgcmVmYWN0b3JpbmcsIGEgY2xlYW51cCwgb3IgZG9lcyBpdCAqYWN0dWFsbHkqIGFsdGVyIGJlaGF2aW9yPyBJcyBpdCBhbiBvcHRpbWl6YXRpb24gYWltZWQgYXQgc2xhYiBhbGxvY2F0aW9uLCBvciBzb21lIHN1YnRsZSBzZW1hbnRpYyBjaGFuZ2U/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGluc3RydWN0aW9uIGZvciBkZWNpZGluZyBpZiB0aGUgcGF0Y2ggaXMgd29ydGggZnV6emluZy5cblxuUmlnaHQsIHNvIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjb25zdGFudCBjaGFuZ2VzIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QsIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpYyBoYXJkd2FyZS1kZXBlbmRlbnQgZHJpdmVycywgYW5kIHRlYXItZG93biBjYWxsYmFja3MgYXJlIGFsbCBvdXQuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgczM5MCBLVk0uIENhbiB0aGlzIGJlIGVmZmVjdGl2ZWx5IGZ1enplZCwgb3IgcnVuIHdpdGhpbiBRRU1VPyBZZXMsIHMzOTAgS1ZNIGlzIHRoZSBLVk0gaHlwZXJ2aXNvciBvbiB0aGUgczM5MHggYXJjaGl0ZWN0dXJlLCBJIGtub3cgdGhhdC4gQnV0LCBjYW4gaXQgYmUgZnV6eiB0ZXN0ZWQ/IFFFTVUgZW11bGF0ZXMgczM5MHggKHFlbXUtc3lzdGVtLXMzOTB4KSwgYnV0IEkgdGhpbmsgS1ZNIGluc2lkZSBRRU1VIG9uIHMzOTB4IGxpa2VseSBuZWVkcyBuZXN0ZWQgS1ZNIG9yIGFjdHVhbCBoYXJkd2FyZS4gU3l6a2FsbGVyIGRlZmluaXRlbHkgZnV6emVzIHMzOTB4IExpbnV4IGtlcm5lbHM7IGRvZXMgaXQgYWxzbyB0ZXN0IHMzOTAgS1ZNIGlmIGl0IHJ1bnMgb24gczM5MHg/IE9yIGlzIGl0IG9ubHkgVENHP1xuXG5UaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgYWRkaW5nIG9yIG1vZGlmeWluZyBsb2dpYywgb3IgaWYgdGhpcyBpcyBqdXN0IGEgbWVjaGFuaWNhbCByZXBsYWNlbWVudCBvZiB0aGUgYWxsb2NhdGlvbiByb3V0aW5lcy4gV2hhdCB3YXMgdGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgY2hhbmdlPyBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGdpdCBsb2cgYW5kIG1heWJlIHNlYXJjaCB0aGUgdHJlZSBmb3IgY29udGV4dCB0byBzZWUgd2hhdCB0aGUgYXV0aG9yIHdhcyB0aGlua2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNjEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzowNS41NTc0MDg2MDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIzMDM0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3phbGxvY19vYmpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfYmFzZS5jPTM0Nz1pbnQgYXBwbGRhdGFfcmVnaXN0ZXJfb3BzKHN0cnVjdCBhcHBsZGF0YV9vcHMgKm9wcylcXG4tLVxcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9iYXNlLmMtMzUxLVxcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9iYXNlLmM6MzUyOlxcdG9wcy1cXHUwMDNlY3RsX3RhYmxlID0ga3phbGxvY19vYmpzKHN0cnVjdCBjdGxfdGFibGUsIDEpO1xcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9iYXNlLmMtMzUzLVxcdGlmICghb3BzLVxcdTAwM2VjdGxfdGFibGUpXFxuLS1cXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbWVtLmM9MTI5PXN0YXRpYyBpbnQgX19pbml0IGFwcGxkYXRhX21lbV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbWVtLmMtMTMyLVxcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9tZW0uYzoxMzM6XFx0b3BzLmRhdGEgPSBremFsbG9jX29iaihzdHJ1Y3QgYXBwbGRhdGFfbWVtX2RhdGEpO1xcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9tZW0uYy0xMzQtXFx0aWYgKCFvcHMuZGF0YSlcXG4tLVxcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9uZXRfc3VtLmM9MTMxPXN0YXRpYyBpbnQgX19pbml0IGFwcGxkYXRhX25ldF9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbmV0X3N1bS5jLTEzNC1cXG5hcmNoL3MzOTAvYXBwbGRhdGEvYXBwbGRhdGFfbmV0X3N1bS5jOjEzNTpcXHRvcHMuZGF0YSA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBhcHBsZGF0YV9uZXRfc3VtX2RhdGEpO1xcbmFyY2gvczM5MC9hcHBsZGF0YS9hcHBsZGF0YV9uZXRfc3VtLmMtMTM2LVxcdGlmICghb3BzLmRhdGEpXFxuLS1cXG5hcmNoL3MzOTAvaHlwZnMvaHlwZnNfc3BycC5jPTY3PXN0YXRpYyBpbnQgX19oeXBmc19zcHJwX2lvY3RsKHZvaWQgX191c2VyICp1c2VyX2FyZWEpXFxuLS1cXG5hcmNoL3MzOTAvaHlwZnMvaHlwZnNfc3BycC5jLTc2LVxcdGRhdGEgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMKTtcXG5hcmNoL3MzOTAvaHlwZnMvaHlwZnNfc3BycC5jOjc3OlxcdGRpYWczMDQgPSBremFsbG9jX29iaigqZGlhZzMwNCk7XFxuYXJjaC9zMzkwL2h5cGZzL2h5cGZzX3NwcnAuYy03OC1cXHRpZiAoIWRhdGEgfHwgIWRpYWczMDQpXFxuLS1cXG5hcmNoL3MzOTAvaHlwZnMvaW5vZGUuYz0yOTE9c3RhdGljIGludCBoeXBmc19pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuYXJjaC9zMzkwL2h5cGZzL2lub2RlLmMtMjk0LVxcbmFyY2gvczM5MC9oeXBmcy9pbm9kZS5jOjI5NTpcXHRzYmkgPSBremFsbG9jX29iaihzdHJ1Y3QgaHlwZnNfc2JfaW5mbyk7XFxuYXJjaC9zMzkwL2h5cGZzL2lub2RlLmMtMjk2LVxcdGlmICghc2JpKVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2lkYWxzLmg9ODg9c3RhdGljIGlubGluZSBpbnQgc2V0X25vcm1hbGl6ZWRfY2RhKHN0cnVjdCBjY3cxICpjY3csIHZvaWQgKnZhZGRyKVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2lkYWxzLmgtOTYtXFx0aWYgKG5yaWRhd3MgXFx1MDAzZSAwKSB7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2lkYWxzLmg6OTc6XFx0XFx0aWRhbCA9IGt6YWxsb2Nfb2JqcygqaWRhbCwgbnJpZGF3cywgR0ZQX0FUT01JQyB8IEdGUF9ETUEpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9pZGFscy5oLTk4LVxcdFxcdGlmICghaWRhbClcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvY2VydF9zdG9yZS5jPTMxNT1zdGF0aWMgaW50IGludmFsaWRhdGVfa2V5cmluZ19rZXlzKHN0cnVjdCBrZXkgKmtleXJpbmcpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL2NlcnRfc3RvcmUuYy0zMjQtXFx0bnVtX2tleXMgPSBrZXlyaW5nX3BheWxvYWRfbGVuIC8gc2l6ZW9mKGtleV9zZXJpYWxfdCk7XFxuYXJjaC9zMzkwL2tlcm5lbC9jZXJ0X3N0b3JlLmM6MzI1OlxcdGtleV9hcnJheSA9IGt6YWxsb2Nfb2JqcyhrZXlfc2VyaWFsX3QsIG51bV9rZXlzKTtcXG5hcmNoL3MzOTAva2VybmVsL2NlcnRfc3RvcmUuYy0zMjYtXFx0aWYgKCFrZXlfYXJyYXkpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL2RlYnVnLmM9MzA3PXN0YXRpYyBkZWJ1Z19pbmZvX3QgKmRlYnVnX2luZm9fYWxsb2MoY29uc3QgY2hhciAqbmFtZSwgaW50IHBhZ2VzX3Blcl9hcmVhLFxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jLTMxNi1cXHRcXHRnb3RvIGZhaWxfbWFsbG9jX3JjO1xcbmFyY2gvczM5MC9rZXJuZWwvZGVidWcuYzozMTc6XFx0cmMtXFx1MDAzZWFjdGl2ZV9lbnRyaWVzID0ga3phbGxvY19vYmpzKGludCwgbnJfYXJlYXMpO1xcbmFyY2gvczM5MC9rZXJuZWwvZGVidWcuYy0zMTgtXFx0aWYgKCFyYy1cXHUwMDNlYWN0aXZlX2VudHJpZXMpXFxuYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jLTMxOS1cXHRcXHRnb3RvIGZhaWxfbWFsbG9jX2FjdGl2ZV9lbnRyaWVzO1xcbmFyY2gvczM5MC9rZXJuZWwvZGVidWcuYzozMjA6XFx0cmMtXFx1MDAzZWFjdGl2ZV9wYWdlcyA9IGt6YWxsb2Nfb2JqcyhpbnQsIG5yX2FyZWFzKTtcXG5hcmNoL3MzOTAva2VybmVsL2RlYnVnLmMtMzIxLVxcdGlmICghcmMtXFx1MDAzZWFjdGl2ZV9wYWdlcylcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvZ3VhcmRlZF9zdG9yYWdlLmM9MjI9c3RhdGljIGludCBnc19lbmFibGUodm9pZClcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvZ3VhcmRlZF9zdG9yYWdlLmMtMjYtXFx0aWYgKCFjdXJyZW50LVxcdTAwM2V0aHJlYWQuZ3NfY2IpIHtcXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jOjI3OlxcdFxcdGdzX2NiID0ga3phbGxvY19vYmooKmdzX2NiKTtcXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jLTI4LVxcdFxcdGlmICghZ3NfY2IpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jPTUyPXN0YXRpYyBpbnQgZ3Nfc2V0X2JjX2NiKHN0cnVjdCBnc19jYiBfX3VzZXIgKnVfZ3NfY2IpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jLTU3LVxcdGlmICghZ3NfY2IpIHtcXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jOjU4OlxcdFxcdGdzX2NiID0ga3phbGxvY19vYmooKmdzX2NiKTtcXG5hcmNoL3MzOTAva2VybmVsL2d1YXJkZWRfc3RvcmFnZS5jLTU5LVxcdFxcdGlmICghZ3NfY2IpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL29zX2luZm8uYz0xNDQ9c3RhdGljIHZvaWQgb3NfaW5mb19vbGRfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9vc19pbmZvLmMtMTU2LVxcdFxcdGdvdG8gZmFpbDtcXG5hcmNoL3MzOTAva2VybmVsL29zX2luZm8uYzoxNTc6XFx0b3NfaW5mb19vbGQgPSBremFsbG9jX29iaigqb3NfaW5mb19vbGQpO1xcbmFyY2gvczM5MC9rZXJuZWwvb3NfaW5mby5jLTE1OC1cXHRpZiAoIW9zX2luZm9fb2xkKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYz0yNTE9c3RhdGljIGludCBjcHVtX2NmX2FsbG9jX2NwdShpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbnVtKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYy0yNjQtXFx0aWYgKCFjcHVodykge1xcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX2NmLmM6MjY1OlxcdFxcdGNwdWh3ID0ga3phbGxvY19vYmooKmNwdWh3KTtcXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jLTI2Ni1cXHRcXHRpZiAoY3B1aHcpIHtcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX2NmLmM9MTY2ND1zdGF0aWMgbG9uZyBjZnNldF9pb2N0bF9zdGFydCh1bnNpZ25lZCBsb25nIGFyZywgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9jZi5jLTE2ODktXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYzoxNjkwOlxcdHByZXEgPSBremFsbG9jX29iaigqcHJlcSk7XFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fY2YuYy0xNjkxLVxcdGlmICghcHJlcSlcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX3NmLmM9MTU5Mj1zdGF0aWMgdm9pZCAqYXV4X2J1ZmZlcl9zZXR1cChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHZvaWQgKipwYWdlcyxcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9jcHVtX3NmLmMtMTYxNS1cXHQvKiBBbGxvY2F0ZSBhdXhfYnVmZmVyIHN0cnVjdCBmb3IgdGhlIGV2ZW50ICovXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX2NwdW1fc2YuYzoxNjE2OlxcdGF1eCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBhdXhfYnVmZmVyKTtcXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfY3B1bV9zZi5jLTE2MTctXFx0aWYgKCFhdXgpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmM9MjQ0PXN0YXRpYyBpbnQgcGFpX2FsbG9jX2NwdShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBjcHUpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmMtMjYxLVxcdFxcdHJjID0gLUVOT01FTTtcXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmM6MjYyOlxcdFxcdGNwdW1wID0ga3phbGxvY19vYmooKmNwdW1wKTtcXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmMtMjYzLVxcdFxcdGlmICghY3B1bXApXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3BlcmZfcGFpLmM9MzE5PXN0YXRpYyBpbnQgcGFpX2FsbG9jKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudClcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9wYWkuYy0zMjMtXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jOjMyNDpcXHRtYXNrcHRyID0ga3phbGxvY19vYmooKm1hc2twdHIpO1xcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9wYWkuYy0zMjUtXFx0aWYgKCFtYXNrcHRyKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jPTEwNzc9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKiBfX2luaXQgYXR0cl9ldmVudF9pbml0X29uZShpbnQgbnVtLFxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jLTEwODItXFxuYXJjaC9zMzkwL2tlcm5lbC9wZXJmX3BhaS5jOjEwODM6XFx0cGEgPSBremFsbG9jX29iaigqcGEpO1xcbmFyY2gvczM5MC9rZXJuZWwvcGVyZl9wYWkuYy0xMDg0LVxcdGlmICghcGEpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3B0cmFjZS5jPTc0MT1zdGF0aWMgaW50IHMzOTBfZ3NfY2Jfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy03NTEtXFx0aWYgKCF0YXJnZXQtXFx1MDAzZXRocmVhZC5nc19jYikge1xcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmM6NzUyOlxcdFxcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSk7XFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy03NTMtXFx0XFx0aWYgKCFkYXRhKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYz03OTM9c3RhdGljIGludCBzMzkwX2dzX2JjX3NldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhcmdldCxcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmMtODAyLVxcdGlmICghZGF0YSkge1xcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmM6ODAzOlxcdFxcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSk7XFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy04MDQtXFx0XFx0aWYgKCFkYXRhKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYz04NTI9c3RhdGljIGludCBzMzkwX3J1bnRpbWVfaW5zdHJfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy04NjMtXFx0aWYgKCF0YXJnZXQtXFx1MDAzZXRocmVhZC5yaV9jYikge1xcbmFyY2gvczM5MC9rZXJuZWwvcHRyYWNlLmM6ODY0OlxcdFxcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSk7XFxuYXJjaC9zMzkwL2tlcm5lbC9wdHJhY2UuYy04NjUtXFx0XFx0aWYgKCFkYXRhKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9ydW50aW1lX2luc3RyLmM9NzA9U1lTQ0FMTF9ERUZJTkUyKHMzOTBfcnVudGltZV9pbnN0ciwgaW50LCBjb21tYW5kLCBpbnQsIHNpZ251bSlcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvcnVudGltZV9pbnN0ci5jLTg1LVxcdGlmICghY3VycmVudC1cXHUwMDNldGhyZWFkLnJpX2NiKSB7XFxuYXJjaC9zMzkwL2tlcm5lbC9ydW50aW1lX2luc3RyLmM6ODY6XFx0XFx0Y2IgPSBremFsbG9jX29iaigqY2IpO1xcbmFyY2gvczM5MC9rZXJuZWwvcnVudGltZV9pbnN0ci5jLTg3LVxcdFxcdGlmICghY2IpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3NtcC5jPTExMjE9aW50IF9fcmVmIHNtcF9yZXNjYW5fY3B1cyhib29sIGVhcmx5KVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9zbXAuYy0xMTI1LVxcbmFyY2gvczM5MC9rZXJuZWwvc21wLmM6MTEyNjpcXHRpbmZvID0ga3phbGxvY19vYmooKmluZm8pO1xcbmFyY2gvczM5MC9rZXJuZWwvc21wLmMtMTEyNy1cXHRpZiAoIWluZm8pXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3Zkc28uYz0xMjk9c3RhdGljIHN0cnVjdCBwYWdlICoqIF9faW5pdCB2ZHNvX3NldHVwX3BhZ2VzKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3Zkc28uYy0xMzQtXFxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmM6MTM1OlxcdHBhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHBhZ2VzICsgMSk7XFxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmMtMTM2LVxcdGlmICghcGFnZWxpc3QpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmM9MzE9aW50IGt2bV9zMzkwX21tdV9jYWNoZV90b3B1cChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuYy00Ny1cXHRmb3IgKCA7IG1jLVxcdTAwM2VuX3JtYXBzIFxcdTAwM2MgS1ZNX1MzOTBfTU1VX0NBQ0hFX05fUk1BUFM7IG1jLVxcdTAwM2VuX3JtYXBzKyspIHtcXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmM6NDg6XFx0XFx0byA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB2c2llX3JtYXAsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9nbWFwL2RhdC5jLTQ5LVxcdFxcdGlmICghbylcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaD01OTE9c3RhdGljIGlubGluZSBzdHJ1Y3QgdnNpZV9ybWFwICprdm1fczM5MF9tbXVfY2FjaGVfYWxsb2Nfcm1hcChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaC01OTQtXFx0XFx0cmV0dXJuIG1jLVxcdTAwM2VybWFwc1stLW1jLVxcdTAwM2VuX3JtYXBzXTtcXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0Lmg6NTk1OlxcdHJldHVybiBremFsbG9jX29iaihzdHJ1Y3QgdnNpZV9ybWFwLCBHRlBfS1ZNX1MzOTBfTU1VX0NBQ0hFKTtcXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmgtNTk2LX1cXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaD05Mzk9c3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICprdm1fczM5MF9uZXdfbW11X2NhY2hlKHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAvZGF0LmgtOTQyLVxcbmFyY2gvczM5MC9rdm0vZ21hcC9kYXQuaDo5NDM6XFx0bWMgPSBremFsbG9jX29iaigqbWMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9nbWFwL2RhdC5oLTk0NC1cXHRpZiAobWMgXFx1MDAyNlxcdTAwMjYgIWt2bV9zMzkwX21tdV9jYWNoZV90b3B1cChtYykpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAvZ21hcC5jPTQ3PXN0cnVjdCBnbWFwICpnbWFwX25ldyhzdHJ1Y3Qga3ZtICprdm0sIGdmbl90IGxpbWl0KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9nbWFwL2dtYXAuYy01NC1cXG5hcmNoL3MzOTAva3ZtL2dtYXAvZ21hcC5jOjU1OlxcdGdtYXAgPSBremFsbG9jX29iaigqZ21hcCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL3MzOTAva3ZtL2dtYXAvZ21hcC5jLTU2LVxcdGlmICghZ21hcClcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYz0xNzQ5PXN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqa3ZtX3MzOTBfZ2V0X2lvX2ludChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMTc3My1naXNhX291dDpcXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM6MTc3NDpcXHR0bXBfaW50aSA9IGt6YWxsb2Nfb2JqKCppbnRpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0xNzc1LVxcdGlmICh0bXBfaW50aSkge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jPTIzOTI9c3RhdGljIGludCBlbnF1ZXVlX2Zsb2F0aW5nX2lycShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI0MDQtXFx0d2hpbGUgKGxlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IGt2bV9zMzkwX2lycSkpIHtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM6MjQwNTpcXHRcXHRpbnRpID0ga3phbGxvY19vYmooKmludGksIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI0MDYtXFx0XFx0aWYgKCFpbnRpKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jPTI0MzQ9c3RhdGljIGludCByZWdpc3Rlcl9pb19hZGFwdGVyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMjQ1Ny1cXHR9XFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jOjI0NTg6XFx0YWRhcHRlciA9IGt6YWxsb2Nfb2JqKCphZGFwdGVyLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0yNDU5LVxcdGlmICghYWRhcHRlcikge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jPTI1MTI9c3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX21hcChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZCwgX191NjQgYWRkcilcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0yNTIyLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzoyNTIzOlxcdG1hcCA9IGt6YWxsb2Nfb2JqKCptYXAsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTI1MjQtXFx0aWYgKCFtYXApXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9Mjc3MT1zdGF0aWMgaW50IGt2bV9zMzkwX2luamVjdF9haXJxKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0yNzg0LVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzoyNzg1OlxcdGludGkgPSBremFsbG9jX29iaigqaW50aSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMjc4Ni1cXHRpZiAoIWludGkpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmM9Mzc1ND1pbnQga3ZtX2FyY2hfc2V0X2lycV9pbmF0b21pYyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0zNzg4LVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzozNzg5OlxcdGludGkgPSBremFsbG9jX29iaigqaW50aSwgR0ZQX0FUT01JQyk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTM3OTAtXFx0aWYgKCFpbnRpKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM9NTI9c3RhdGljIGludCB6cGNpX3NldHVwX2FpcGIodTggbmlzYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy01Ni1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM6NTc6XFx0enBjaV9haXBiID0ga3phbGxvY19vYmoodW5pb24genBjaV9zaWNfaWliKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtNTgtXFx0aWYgKCF6cGNpX2FpcGIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM9MTIwPWludCBrdm1fczM5MF9wY2lfYWVuX2luaXQodTggbmlzYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy0xMjgtXFx0bXV0ZXhfbG9jayhcXHUwMDI2YWlmdC1cXHUwMDNlYWlmdF9sb2NrKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM6MTI5OlxcdGFpZnQtXFx1MDAzZWt6ZGV2ID0ga3phbGxvY19vYmpzKHN0cnVjdCBrdm1femRldiAqLCBaUENJX05SX0RFVklDRVMpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy0xMzAtXFx0aWYgKCFhaWZ0LVxcdTAwM2VremRldikge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3BjaS5jPTQ3MT1zdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9kZXZfb3BlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtNDc0LVxcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYzo0NzU6XFx0a3pkZXYgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX3pkZXYpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYy00NzYtXFx0aWYgKCFremRldilcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wY2kuYz03Mjk9aW50IF9faW5pdCBrdm1fczM5MF9wY2lfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3BjaS5jLTczNi1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmM6NzM3OlxcdGFpZnQgPSBremFsbG9jX29iaihzdHJ1Y3QgenBjaV9haWZ0KTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcGNpLmMtNzM4LVxcdGlmICghYWlmdClcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wdi5jPTQ3Nj1pbnQga3ZtX3MzOTBfcHZfc2V0X2FzaWRlKHN0cnVjdCBrdm0gKmt2bSwgdTE2ICpyYywgdTE2ICpycmMpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHYuYy00OTItXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3B2LmM6NDkzOlxcdHByaXYgPSBremFsbG9jX29iaigqcHJpdik7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3B2LmMtNDk0LVxcdGlmICghcHJpdilcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MTQ3Mz1zdGF0aWMgaW50IGt2bV9zMzkwX3NldF9wcm9jZXNzb3Ioc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNDgzLVxcdH1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjE0ODQ6XFx0cHJvYyA9IGt6YWxsb2Nfb2JqKCpwcm9jLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMTQ4NS1cXHRpZiAoIXByb2MpIHtcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MTY3OT1zdGF0aWMgaW50IGt2bV9zMzkwX2dldF9wcm9jZXNzb3Ioc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNjgzLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6MTY4NDpcXHRwcm9jID0ga3phbGxvY19vYmooKnByb2MsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNjg1LVxcdGlmICghcHJvYykge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0xNzA3PXN0YXRpYyBpbnQga3ZtX3MzOTBfZ2V0X21hY2hpbmUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNzExLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6MTcxMjpcXHRtYWNoID0ga3phbGxvY19vYmooKm1hY2gsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0xNzEzLVxcdGlmICghbWFjaCkge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0yOTAwPWludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMjkxNy1cXHRcXHRcXHRicmVhaztcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjI5MTg6XFx0XFx0aW50aSA9IGt6YWxsb2Nfb2JqKCppbnRpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMjkxOS1cXHRcXHRpZiAoIWludGkpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jPTMyNDA9aW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTMyNzUtXFx0QlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3Qgc2llX3BhZ2UyKSAhPSA0MDk2KTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjMyNzY6XFx0a3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMiA9IGt6YWxsb2Nfb2JqKCprdm0tXFx1MDAzZWFyY2guc2llX3BhZ2UyLFxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzI3Ny1cXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz00NDUxPXN0YXRpYyB2b2lkIF9fa3ZtX2luamVjdF9wZmF1bHRfdG9rZW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHN0YXJ0X3Rva2VuLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy00NDYzLVxcdH0gZWxzZSB7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzo0NDY0OlxcdFxcdGludGlfbWVtID0ga3phbGxvY19vYmooKmludGlfbWVtLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNDQ2NS1cXHRcXHRpZiAoV0FSTl9PTl9PTkNFKCFpbnRpX21lbSkpXFxuLS1cXG5hcmNoL3MzOTAvbW0vZXh0bWVtLmM9Mjk3PV9fc2VnbWVudF9sb2FkIChjaGFyICpuYW1lLCBpbnQgZG9fbm9uc2hhcmVkLCB1bnNpZ25lZCBsb25nICphZGRyLCB1bnNpZ25lZCBsb25nICplbmQpXFxuLS1cXG5hcmNoL3MzOTAvbW0vZXh0bWVtLmMtMzE5LVxcbmFyY2gvczM5MC9tbS9leHRtZW0uYzozMjA6XFx0c2VnLVxcdTAwM2VyZXMgPSBremFsbG9jX29iaihzdHJ1Y3QgcmVzb3VyY2UpO1xcbmFyY2gvczM5MC9tbS9leHRtZW0uYy0zMjEtXFx0aWYgKHNlZy1cXHUwMDNlcmVzID09IE5VTEwpIHtcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjM4Nj1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpmcClcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjM5OC1cXHRpZiAoIWppdF9kYXRhKSB7XFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYzoyMzk5OlxcdFxcdGppdF9kYXRhID0ga3phbGxvY19vYmooKmppdF9kYXRhKTtcXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTI0MDAtXFx0XFx0aWYgKCFqaXRfZGF0YSlcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmM9NTIyPXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKl9fYWxsb2NfcmVzKHN0cnVjdCB6cGNpX2RldiAqemRldiwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmMtNTI2LVxcbmFyY2gvczM5MC9wY2kvcGNpLmM6NTI3OlxcdHIgPSBremFsbG9jX29iaigqcik7XFxuYXJjaC9zMzkwL3BjaS9wY2kuYy01MjgtXFx0aWYgKCFyKVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2kuYz04MjM9c3RydWN0IHpwY2lfZGV2ICp6cGNpX2NyZWF0ZV9kZXZpY2UodTMyIGZpZCwgdTMyIGZoLCBlbnVtIHpwY2lfc3RhdGUgc3RhdGUpXFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTgyNy1cXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjgyODpcXHR6ZGV2ID0ga3phbGxvY19vYmooKnpkZXYpO1xcbmFyY2gvczM5MC9wY2kvcGNpLmMtODI5LVxcdGlmICghemRldilcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmM9MTA2Nj1zdGF0aWMgaW50IHpwY2lfbWVtX2luaXQodm9pZClcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmMtMTA3Ny1cXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjEwNzg6XFx0enBjaV9pb21hcF9zdGFydCA9IGt6YWxsb2Nfb2JqcygqenBjaV9pb21hcF9zdGFydCwgWlBDSV9JT01BUF9FTlRSSUVTKTtcXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTEwNzktXFx0aWYgKCF6cGNpX2lvbWFwX3N0YXJ0KVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfYnVzLmM9MzE0PXN0YXRpYyBzdHJ1Y3QgenBjaV9idXMgKnpwY2lfYnVzX2FsbG9jKGludCB0b3BvLCBib29sIHRvcG9faXNfdGlkKVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfYnVzLmMtMzE3LVxcbmFyY2gvczM5MC9wY2kvcGNpX2J1cy5jOjMxODpcXHR6YnVzID0ga3phbGxvY19vYmooKnpidXMpO1xcbmFyY2gvczM5MC9wY2kvcGNpX2J1cy5jLTMxOS1cXHRpZiAoIXpidXMpXFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaV9pcnEuYz01NTI9c3RhdGljIGludCBfX2luaXQgenBjaV9kaXJlY3RlZF9pcnFfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmMtNTY1LVxcbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jOjU2NjpcXHR6cGNpX2lidiA9IGt6YWxsb2Nfb2JqcygqenBjaV9pYnYsIG51bV9wb3NzaWJsZV9jcHVzKCkpO1xcbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jLTU2Ny1cXHRpZiAoIXpwY2lfaWJ2KVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmM9NTkwPXN0YXRpYyBpbnQgX19pbml0IHpwY2lfZmxvYXRpbmdfaXJxX2luaXQodm9pZClcXG5hcmNoL3MzOTAvcGNpL3BjaV9pcnEuYy01OTEte1xcbmFyY2gvczM5MC9wY2kvcGNpX2lycS5jOjU5MjpcXHR6cGNpX2lidiA9IGt6YWxsb2Nfb2JqcygqenBjaV9pYnYsIFpQQ0lfTlJfREVWSUNFUyk7XFxuYXJjaC9zMzkwL3BjaS9wY2lfaXJxLmMtNTkzLVxcdGlmICghenBjaV9pYnYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjA1LjYxOTcyNjEwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjczODIyNjgwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggUmV2aWV3OiBLVk0gTWVtb3J5IEFsbG9jYXRpb24gb24gczM5MCoqXG5cbk9rYXksIGxldCdzIGRpdmUgYmFjayBpbnRvIHRoaXMgcGF0Y2guIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZywgc28gSSdtIGdvaW5nIHRvIGNhcmVmdWxseSBzdGVwIHRocm91Z2ggZWFjaCBjaGFuZ2UuIEl0IGxvb2tzIGxpa2Ugd2UncmUgYWRkcmVzc2luZyBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHdpdGhpbiB0aGUgczM5MCBLVk0gY29kZS4gVGhpcyBpcyBjcml0aWNhbDsgZXZlbiBhIHNtYWxsIGxlYWsgb3IgbWlzdXNlIGNhbiBkZXN0YWJpbGl6ZSB0aGUgZW50aXJlIHN5c3RlbSwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuXG5cblRoZSBmaXJzdCBibG9jaywgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY2Agc3BlY2lmaWNhbGx5IHRoZSBgaGFuZGxlX3N0aHlpYCBmdW5jdGlvbiwgaXMgd2hlcmUgdGhlIGluaXRpYWwgY2hhbmdlIGNvbWVzIGluOyBgZ2V0X3plcm9lZF9wYWdlYCBpcyBiZWluZyByZXBsYWNlZCBieSBga3phbGxvY2AgZm9yIGBzY3Ruc2AuIFRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNvbnZlcnNpb246IGBremFsbG9jYCBjb21iaW5lcyB0aGUgYGdldF96ZXJvZWRfcGFnZWAgd2l0aCBhIGBtZW1zZXQoMClgIHRvIGluaXRpYWxpemUgdGhlIG1lbW9yeS4gQ29ycmVzcG9uZGluZ2x5LCBgZnJlZV9wYWdlYCBpcyByZXBsYWNlZCB3aXRoIGBrZnJlZWAuIFRoYXQncyBnb29kOyBpdCdzIGNsZWFuZXIgYW5kIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LiBUaGUgc2FtZSBwYXR0ZXJuIGhvbGRzIGZvciBgYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jYCwgYGt2bV9zMzkwX2dpYl9kZXN0cm95YCBhbmQgYGt2bV9zMzkwX2dpYl9pbml0YCwgYW5kIGFsc28gYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgIGFuZCBgaGFuZGxlX3N0c2lgLCB3aXRoIHRoZSBzYW1lIGNoYW5nZXMgYmV0d2VlbiBgZ2V0X3plcm9lZF9wYWdlYCBhbmQgYGt6YWxsb2NgIGFuZCB0aGUgYXBwcm9wcmlhdGUgYGZyZWVfcGFnZWAgY2FsbHMgYmVpbmcgY2hhbmdlZCB0byBga2ZyZWVgLlxuXG5UaGUgZm91cnRoIGNodW5rLCBpbiBgYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY2AsIGlzIHNsaWdodGx5IG1vcmUgaW52b2x2ZWQuIEhlcmUsIHdpdGhpbiBga3ZtX2FyY2hfaW5pdF92bWAsIGBrdm1fYXJjaF9kZXN0cm95X3ZtYCwgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAsIGFuZCBga3ZtX3MzOTBfdmNwdV91bnNldHVwX2NtbWFgLCB3ZSBzZWUgdGhlIHNhbWUgdHJhbnNpdGlvbiBmcm9tIGBnZXRfemVyb2VkX3BhZ2VgIHRvIGBremFsbG9jYCwgYnV0IHdpdGggdGhlIGFkZGl0aW9uIG9mIGAqYCBmb3IgdGhlIGBrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTJgIHBvaW50ZXIuIEl0IGxvb2tzIGxpa2UgaXQgY291bGQgYmUgY2FsbGluZyBhIGhlbHBlci4gQW5kIGZvciB0aGUgb3RoZXIgY2FzZSBpbiB0aGlzIGZpbGUsIHdlIGhhdmUgdGhlIHNhbWUgc2l0dWF0aW9uIGFzIGJlZm9yZSB3aXRoIHRoZSByZXBsYWNlbWVudCBvZiBgZnJlZV9wYWdlYCB3aXRoIGBrZnJlZWAgd2hlbiBkZWFsaW5nIHdpdGggdGhlIHBoeXNpY2FsIG1lbW9yeS5cblxuVGhlc2UgYXJlIGFsbCBpbXBvcnRhbnQgZnVuY3Rpb25zOyBhbnkgbWVtb3J5LXJlbGF0ZWQgaXNzdWVzIGluIGBrdm1fYXJjaF9pbml0X3ZtYCBvciBga3ZtX2FyY2hfZGVzdHJveV92bWAgYXJlIGxpa2VseSB0byBjYXVzZSBzb21lIGJpZyBwcm9ibGVtcyB3aGVuIGxhdW5jaGluZyBvciBzaHV0dGluZyBkb3duIFZNcy4gSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIGhvdyB0aGVzZSBmdW5jdGlvbiBjYWxscyBhcmUgc3RydWN0dXJlZC4gVGhpcyBzZWVtcyBsaWtlIGEgcHJldHR5IHN0YW5kYXJkIGFuZCBzZW5zaWJsZSBjaGFuZ2UuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gd2hlcmUgc3VidGxlIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyBjYW4gY3JlZXAgaW4sIHNvIHRoaXMga2luZCBvZiBtb2Rlcm5pemF0aW9uIGlzIHVzdWFsbHkgYSBnb29kIHRoaW5nLiBUaGUgdXNlIG9mIGBremFsbG9jYCBpcyBnZW5lcmFsbHkgcHJlZmVycmVkIG5vdyBiZWNhdXNlIGl0IGlzIGNsZWFuZXIsIGhhbmRsZXMgdGhlIHplcm9pbmcgaW50ZXJuYWxseSwgYW5kIGlzIG1vcmUgY29uc2lzdGVudC4gSSBhc3N1bWUgdGhlcmUgaXNuJ3QgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGhlcmUuXG5cbkJlZm9yZSBnaXZpbmcgaXQgYSBzdGFtcCBvZiBhcHByb3ZhbCwgSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyB0byB2ZXJpZnkgdGhlIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBzb21lIHVuZXhwZWN0ZWQgZGVwZW5kZW5jeSBvciBjaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24uIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZm9yIGFueSBzdWJ0bGUgZWZmZWN0cy5cblxuSSdsbCBzZWFyY2ggZm9yICdLVk0nIHdpdGhpbiB0aGUgYGFyY2gvczM5MGAgZGlyZWN0b3J5IGp1c3QgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcyBvciBvdGhlciByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDUwNiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzoxMy4wMDE5OTcxNjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2NzQ3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzODcyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL3MzOTAvS2J1aWxkPTM9b2JqLXlcXHRcXHRcXHRcXHQrPSBtbS9cXG5hcmNoL3MzOTAvS2J1aWxkOjQ6b2JqLSQoQ09ORklHX0tWTSlcXHRcXHQrPSBrdm0vXFxuYXJjaC9zMzkwL0tidWlsZC01LW9iai15XFx0XFx0XFx0XFx0Kz0gY3J5cHRvL1xcbi0tXFxuYXJjaC9zMzkwL0tjb25maWc9ODQ2PWNvbmZpZyBWRklPX0FQXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy04NDgtXFx0cHJvbXB0IFxcXCJWRklPIHN1cHBvcnQgZm9yIEFQIGRldmljZXNcXFwiXFxuYXJjaC9zMzkwL0tjb25maWc6ODQ5OlxcdGRlcGVuZHMgb24gS1ZNXFxuYXJjaC9zMzkwL0tjb25maWctODUwLVxcdGRlcGVuZHMgb24gVkZJT1xcbi0tXFxuYXJjaC9zMzkwL0tjb25maWc9OTkwPWNvbmZpZyBTMzkwX0dVRVNUXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy0xMDAwLVxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHJ1biB0aGUga2VybmVsIGFzIGEgZ3Vlc3QgdW5kZXJcXG5hcmNoL3MzOTAvS2NvbmZpZzoxMDAxOlxcdCAgdGhlIEtWTSBoeXBlcnZpc29yLlxcbmFyY2gvczM5MC9LY29uZmlnLTEwMDItXFxuLS1cXG5hcmNoL3MzOTAvYm9vdC9pcGxfcGFybS5jPTI0OT12b2lkIHBhcnNlX2Jvb3RfY29tbWFuZF9saW5lKHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvYm9vdC9pcGxfcGFybS5jLTMwMi1cXG5hcmNoL3MzOTAvYm9vdC9pcGxfcGFybS5jOjMwMzojaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxcbmFyY2gvczM5MC9ib290L2lwbF9wYXJtLmMtMzA0LVxcdFxcdGlmICghc3RyY21wKHBhcmFtLCBcXFwicHJvdF92aXJ0XFxcIikpIHtcXG4tLVxcbmFyY2gvczM5MC9ib290L3N0YXJ0dXAuYz01Mj1zdGF0aWMgdm9pZCBkZXRlY3RfbWFjaGluZV90eXBlKHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvYm9vdC9zdGFydHVwLmMtNjUtXFx0aWYgKCFtZW1jbXAodm1tcy1cXHUwMDNldm1bMF0uY3BpLCBcXFwiXFxcXHhkMlxcXFx4ZTVcXFxceGQ0XFxcIiwgMykpXFxuYXJjaC9zMzkwL2Jvb3Qvc3RhcnR1cC5jOjY2OlxcdFxcdHNldF9tYWNoaW5lX2ZlYXR1cmUoTUZFQVRVUkVfS1ZNKTtcXG5hcmNoL3MzOTAvYm9vdC9zdGFydHVwLmMtNjctXFx0ZWxzZSBpZiAoIW1lbWNtcCh2bW1zLVxcdTAwM2V2bVswXS5jcGksIFxcXCJcXFxceGE5XFxcXHg2MVxcXFx4ZTVcXFxceGQ0XFxcIiwgNCkpXFxuLS1cXG5hcmNoL3MzOTAvYm9vdC91di5jPTE1PXZvaWQgdXZfcXVlcnlfaW5mbyh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL2Jvb3QvdXYuYy0yOC1cXG5hcmNoL3MzOTAvYm9vdC91di5jOjI5OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk0pKSB7XFxuYXJjaC9zMzkwL2Jvb3QvdXYuYy0zMC1cXHRcXHRtZW1jcHkodXZfaW5mby5pbnN0X2NhbGxzX2xpc3QsIHV2Y2IuaW5zdF9jYWxsc19saXN0LCBzaXplb2YodXZfaW5mby5pbnN0X2NhbGxzX2xpc3QpKTtcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz02Nz1DT05GSUdfUzM5MF9IWVBGU19GUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjY4OkNPTkZJR19LVk09bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzo2OTpDT05GSUdfS1ZNX1MzOTBfVUNPTlRST0w9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy03MC1DT05GSUdfUzM5MF9VTldJTkRfU0VMRlRFU1Q9bVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTY1PUNPTkZJR19TMzkwX0hZUEZTX0ZTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6NjY6Q09ORklHX0tWTT1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTY3LUNPTkZJR19TMzkwX1VOV0lORF9TRUxGVEVTVD1tXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmg9NTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGFyY2hfaW5fcmN1X2Vxcyh2b2lkKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaC01NS17XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oOjU2OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk0pKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaC01Ny1cXHRcXHRyZXR1cm4gY3VycmVudC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBQRl9WQ1BVO1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2dtYXBfaGVscGVycy5oLTItLypcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZ21hcF9oZWxwZXJzLmg6MzogKiAgSGVscGVyIGZ1bmN0aW9ucyBmb3IgS1ZNIGd1ZXN0IGFkZHJlc3Mgc3BhY2UgbWFwcGluZyBjb2RlXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2dtYXBfaGVscGVycy5oLTQtICpcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTItXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzojaWZuZGVmIEFTTV9LVk1fSE9TVF9IXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6NDojZGVmaW5lIEFTTV9LVk1fSE9TVF9IXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNS1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTY0LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjY1OiNlbmRpZiAvKiBBU01fS1ZNX0hPU1RfSCAqL1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0xMC1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjExOiNpZm5kZWYgQVNNX0tWTV9IT1NUX1MzOTBfSFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MTI6I2RlZmluZSBBU01fS1ZNX0hPU1RfUzM5MF9IXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0xMy1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMjktXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMDojZGVmaW5lIEtWTV9IQVZFX01NVV9SV0xPQ0tcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMxOiNkZWZpbmUgS1ZNX01BWF9WQ1BVUyAyNTVcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMyLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzM6I2RlZmluZSBLVk1fSU5URVJOQUxfTUVNX1NMT1RTIDFcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTM0LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzU6I2RlZmluZSBLVk1fUzM5MF9NQU5BR0VTX1MzOTBfR1VFU1QgMVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzYtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTQxLSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NDI6I2RlZmluZSBLVk1fTlJfSVJRQ0hJUFMgMVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NDM6I2RlZmluZSBLVk1fSVJRQ0hJUF9OVU1fUElOUyAxXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo0NDojZGVmaW5lIEtWTV9IQUxUX1BPTExfTlNfREVGQVVMVCA1MDAwMFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNDUtXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC00Ni0vKiBzMzkwLXNwZWNpZmljIHZjcHUtXFx1MDAzZXJlcXVlc3RzIGJpdCBtZW1iZXJzICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo0NzojZGVmaW5lIEtWTV9SRVFfRU5BQkxFX0lCU1xcdEtWTV9BUkNIX1JFUSgwKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NDg6I2RlZmluZSBLVk1fUkVRX0RJU0FCTEVfSUJTXFx0S1ZNX0FSQ0hfUkVRKDEpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo0OTojZGVmaW5lIEtWTV9SRVFfSUNQVF9PUEVSRVhDXFx0S1ZNX0FSQ0hfUkVRKDIpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo1MDojZGVmaW5lIEtWTV9SRVFfU1RBUlRfTUlHUkFUSU9OIEtWTV9BUkNIX1JFUSgzKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NTE6I2RlZmluZSBLVk1fUkVRX1NUT1BfTUlHUkFUSU9OICBLVk1fQVJDSF9SRVEoNClcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjUyOiNkZWZpbmUgS1ZNX1JFUV9WU0lFX1JFU1RBUlRcXHRLVk1fQVJDSF9SRVEoNSlcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjUzOiNkZWZpbmUgS1ZNX1JFUV9SRUZSRVNIX0dVRVNUX1BSRUZJWFxcdFxcXFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjU0OlxcdEtWTV9BUkNIX1JFUV9GTEFHUyg2LCBLVk1fUkVRVUVTVF9XQUlUIHwgS1ZNX1JFUVVFU1RfTk9fV0FLRVVQKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNTUtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTE1Nj1lbnVtIGlycV90eXBlcyB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTE5MC0gKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjE5MTojZGVmaW5lIEtWTV9TMzkwX01BWF9WSVJUSU9fSVJRUyA4NzM4MVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMTkyLVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaD0yNjg9c3RydWN0IGt2bV9zMzkwX2xvY2FsX2ludGVycnVwdCB7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0yNjktXFx0c3BpbmxvY2tfdCBsb2NrO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MjcwOlxcdERFQ0xBUkVfQklUTUFQKHNpZ3BfZW1lcmdfcGVuZGluZywgS1ZNX01BWF9WQ1BVUyk7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0yNzEtXFx0c3RydWN0IGt2bV9zMzkwX2lycV9wYXlsb2FkIGlycTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMjk0LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6Mjk1OiNkZWZpbmUgS1ZNX1MzOTBfQUlTX01PREVfQUxMICAgIDBcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjI5NjojZGVmaW5lIEtWTV9TMzkwX0FJU19NT0RFX1NJTkdMRSAxXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0yOTctXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTMxOT1zdHJ1Y3Qga3ZtX2h3X2JwX2luZm9fYXJjaCB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMyNS0gKiBPbmx5IHRoZSB1cHBlciAxNiBiaXRzIG9mIGt2bV9ndWVzdF9kZWJ1Zy1cXHUwMDNlY29udHJvbCBhcmUgYXJjaCBzcGVjaWZpYy5cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMyNjogKiBGdXJ0aGVyIEtWTV9HVUVTVERCRyBmbGFncyB3aGljaCBhbiBiZSB1c2VkIGZyb20gdXNlcnNwYWNlIGNhbiBiZSBmb3VuZCBpblxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzI3LSAqIGFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zMjgtICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDozMjk6I2RlZmluZSBLVk1fR1VFU1REQkdfRVhJVF9QRU5ESU5HIDB4MTAwMDAwMDBcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMzMC1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMzMS0jZGVmaW5lIGd1ZXN0ZGJnX2VuYWJsZWQodmNwdSkgXFxcXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzMyOlxcdFxcdCh2Y3B1LVxcdTAwM2VndWVzdF9kZWJ1ZyBcXHUwMDI2IEtWTV9HVUVTVERCR19FTkFCTEUpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zMzMtI2RlZmluZSBndWVzdGRiZ19zc3RlcF9lbmFibGVkKHZjcHUpIFxcXFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjMzNDpcXHRcXHQodmNwdS1cXHUwMDNlZ3Vlc3RfZGVidWcgXFx1MDAyNiBLVk1fR1VFU1REQkdfU0lOR0xFU1RFUClcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTMzNS0jZGVmaW5lIGd1ZXN0ZGJnX2h3X2JwX2VuYWJsZWQodmNwdSkgXFxcXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzM2OlxcdFxcdCh2Y3B1LVxcdTAwM2VndWVzdF9kZWJ1ZyBcXHUwMDI2IEtWTV9HVUVTVERCR19VU0VfSFdfQlApXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC0zMzctI2RlZmluZSBndWVzdGRiZ19leGl0X3BlbmRpbmcodmNwdSkgKGd1ZXN0ZGJnX2VuYWJsZWQodmNwdSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzM4OlxcdFxcdCh2Y3B1LVxcdTAwM2VndWVzdF9kZWJ1ZyBcXHUwMDI2IEtWTV9HVUVTVERCR19FWElUX1BFTkRJTkcpKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtMzM5LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzQwOiNkZWZpbmUgS1ZNX0dVRVNUREJHX1ZBTElEX01BU0sgXFxcXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6MzQxOlxcdFxcdChLVk1fR1VFU1REQkdfRU5BQkxFIHwgS1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfFxcXFxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjM0MjpcXHRcXHRLVk1fR1VFU1REQkdfVVNFX0hXX0JQIHwgS1ZNX0dVRVNUREJHX0VYSVRfUEVORElORylcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTM0My1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NTc2PXN0cnVjdCBrdm1fczM5MF92c2llIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNTgwLVxcdGludCBuZXh0O1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NTgxOlxcdHN0cnVjdCB2c2llX3BhZ2UgKnBhZ2VzW0tWTV9NQVhfVkNQVVNdO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNTgyLX07XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTU5MD1zdHJ1Y3Qga3ZtX3MzOTBfZ2lzYV9pbnRlcnJ1cHQge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC01OTQtXFx0dTY0IGV4cGlyZXM7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo1OTU6XFx0REVDTEFSRV9CSVRNQVAoa2lja2VkX21hc2ssIEtWTV9NQVhfVkNQVVMpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNTk2LX07XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oPTYxMz1zdHJ1Y3Qga3ZtX2FyY2gge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02NDUtXFx0Lyogc3Vic2V0IG9mIGF2YWlsYWJsZSBjcHUgZmVhdHVyZXMgZW5hYmxlZCBieSB1c2VyIHNwYWNlICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo2NDY6XFx0REVDTEFSRV9CSVRNQVAoY3B1X2ZlYXQsIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX05SX0JJVFMpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjQ3LVxcdC8qIGluZGV4ZWQgYnkgdmNwdV9pZHggKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjY0ODpcXHRERUNMQVJFX0JJVE1BUChpZGxlX21hc2ssIEtWTV9NQVhfVkNQVVMpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjQ5LVxcdHN0cnVjdCBrdm1fczM5MF9naXNhX2ludGVycnVwdCBnaXNhX2ludDtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjU1LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NjU2OiNkZWZpbmUgS1ZNX0hWQV9FUlJfQkFEXFx0XFx0KC0xVUwpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaDo2NTc6I2RlZmluZSBLVk1fSFZBX0VSUl9ST19CQURcXHQoLTJVTClcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTY1OC1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NzE3PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fYXJjaF92Y3B1X3VuYmxvY2tpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNzE4LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NzE5OiNkZWZpbmUgX19LVk1fSEFWRV9BUkNIX1ZNX0ZSRUVcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTcyMC12b2lkIGt2bV9hcmNoX2ZyZWVfdm0oc3RydWN0IGt2bSAqa3ZtKTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NzI3PWV4dGVybiBzdHJ1Y3QgenBjaV9rdm1faG9vayB6cGNpX2t2bV9ob29rO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNzI4LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NzI5OiNlbmRpZiAvKiBBU01fS1ZNX0hPU1RfUzM5MF9IICovXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTItXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDozOiNpZm5kZWYgX0FTTV9LVk1fSE9TVF9TMzkwX1RZUEVTX0hcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oOjQ6I2RlZmluZSBfQVNNX0tWTV9IT1NUX1MzOTBfVFlQRVNfSFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtNS1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtOC1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oOjk6I2RlZmluZSBLVk1fUzM5MF9CU0NBX0NQVV9TTE9UUyA2NFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmg6MTA6I2RlZmluZSBLVk1fUzM5MF9FU0NBX0NQVV9TTE9UUyAyNDhcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTExLVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaD03Mj1zdHJ1Y3QgYnNjYV9ibG9jayB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oLTc3LVxcdF9fdThcXHRyZXNlcnZlZDJbNF07XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDo3ODpcXHRzdHJ1Y3QgYnNjYV9lbnRyeSBjcHVbS1ZNX1MzOTBfQlNDQV9DUFVfU0xPVFNdO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtNzktfTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmg9ODE9c3RydWN0IGVzY2FfYmxvY2sge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC04Ny1cXHRfX3U2NFxcdHJlc2VydmVkM1syMF07XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDo4ODpcXHRzdHJ1Y3QgZXNjYV9lbnRyeSBjcHVbS1ZNX1MzOTBfRVNDQV9DUFVfU0xPVFNdO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtODktfTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmg9MTM5PXN0cnVjdCBrdm1fczM5MF9zaWVfYmxvY2sge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0yNTgtXFx0X191OFxcdHJlc2VydmVkYjBbOF07XFx0XFx0LyogMHgwMGIwICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDoyNTk6I2RlZmluZSBIUElEX0tWTVxcdDB4NFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwX3R5cGVzLmgtMjYwLSNkZWZpbmUgSFBJRF9WU0lFXFx0MHg1XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MF90eXBlcy5oPTMzOT1zdHJ1Y3Qgc2llX3BhZ2Uge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaC0zNDgtXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTBfdHlwZXMuaDozNDk6I2VuZGlmIC8qIF9BU01fS1ZNX0hPU1RfUzM5MF9UWVBFU19IICovXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC0yLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjM6I2lmbmRlZiBBU01fS1ZNX0hPU1RfVFlQRVNfSFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjQ6I2RlZmluZSBBU01fS1ZNX0hPU1RfVFlQRVNfSFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oLTUtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC03LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjg6I2VuZGlmIC8qIEFTTV9LVk1fSE9TVF9UWVBFU19IICovXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC05LS8qXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6MTA6ICogSHlwZXJjYWxscyBmb3IgS1ZNIG9uIHMzOTAuIFRoZSBjYWxsaW5nIGNvbnZlbnRpb24gaXMgc2ltaWxhciB0byB0aGVcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xMS0gKiBzMzkwIEFCSSwgc28gd2UgdXNlIFIyLVI2IGZvciBwYXJhbWV0ZXJzIDEtNS4gSW4gYWRkaXRpb24gd2UgdXNlIFIxXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xNS0gKiB0aGUgaW5zdHJ1Y3Rpb24gZW5jb2RlZCBudW1iZXIsIGJ1dCBzcGVjaWZ5IHRoZSBudW1iZXIgaW4gUjEgYW5kXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6MTY6ICogdXNlIDB4NTAwIGFzIEtWTSBoeXBlcmNhbGxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xNy0gKlxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMjAtICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6MjE6I2lmbmRlZiBfX1MzOTBfS1ZNX1BBUkFfSFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjIyOiNkZWZpbmUgX19TMzkwX0tWTV9QQVJBX0hcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0yMy1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTY5LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjcwOiNkZWZpbmUgR0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKGFyZ3MpXFx0XFx0XFx0XFx0XFxcXFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTcxLXN0YXRpYyBpbmxpbmVcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX3BhcmEuaD04Nz1sb25nIGt2bV9oeXBlcmNhbGwjI2FyZ3ModW5zaWduZWQgbG9uZyBuciBIWVBFUkNBTExfUEFSTV8jI2FyZ3MpXFx0XFxcXFxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtOTItXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTM6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDApXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTQ6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDEpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTU6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDIpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTY6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDMpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTc6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDQpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTg6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDUpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6OTk6R0VORVJBVEVfS1ZNX0hZUEVSQ0FMTF9GVU5DKDYpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMTAwLVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg9MTE4PXN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fY2hlY2tfYW5kX2NsZWFyX2d1ZXN0X3BhdXNlZCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMTIyLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oOjEyMzojZW5kaWYgLyogX19TMzkwX0tWTV9QQVJBX0ggKi9cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tYWNoaW5lLmgtMTgtI2RlZmluZSBNRkVBVFVSRV9WTVxcdFxcdDdcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vbWFjaGluZS5oOjE5OiNkZWZpbmUgTUZFQVRVUkVfS1ZNXFx0XFx0OFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tYWNoaW5lLmgtMjAtI2RlZmluZSBNRkVBVFVSRV9MUEFSXFx0XFx0OVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21hY2hpbmUuaD05NT1ERUZJTkVfTUFDSElORV9IQVNfRkVBVFVSRSh2bSwgTUZFQVRVUkVfVk0pXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21hY2hpbmUuaDo5NjpERUZJTkVfTUFDSElORV9IQVNfRkVBVFVSRShrdm0sIE1GRUFUVVJFX0tWTSlcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vbWFjaGluZS5oLTk3LURFRklORV9NQUNISU5FX0hBU19GRUFUVVJFKGxwYXIsIE1GRUFUVVJFX0xQQVIpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaD0yMD1zdGF0aWMgaW5saW5lIGludCBpbml0X25ld19jb250ZXh0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgtMzEtXFx0bW0tXFx1MDAzZWNvbnRleHQuZmx1c2hfbW0gPSAwO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9tbXVfY29udGV4dC5oOjMyOiNpZiBJU19FTkFCTEVEKENPTkZJR19LVk0pXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgtMzMtXFx0bW0tXFx1MDAzZWNvbnRleHQuYWxsb3dfY293X3NoYXJpbmcgPSAxO1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaD01NDk9c3RhdGljIGlubGluZSBpbnQgbW1faXNfcHJvdGVjdGVkKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTUwLXtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjU1MTojaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTUyLVxcdGlmICh1bmxpa2VseShhdG9taWNfcmVhZChcXHUwMDI2bW0tXFx1MDAzZWNvbnRleHQucHJvdGVjdGVkX2NvdW50KSkpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTU5ND1zdGF0aWMgaW5saW5lIGludCBtbV9mb3JiaWRzX3plcm9wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTk1LXtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjU5NjojaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTk3LVxcdGlmICghbW0tXFx1MDAzZWNvbnRleHQuYWxsb3dfY293X3NoYXJpbmcpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaD01Mj12b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaC03MC0jZGVmaW5lIFRJRl9HVUFSREVEX1NUT1JBR0VcXHQxN1xcdC8qIGxvYWQgZ3VhcmRlZCBzdG9yYWdlIGNvbnRyb2wgYmxvY2sgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaDo3MTojZGVmaW5lIFRJRl9JU09MQVRFX0JQX0dVRVNUXFx0MThcXHQvKiBSdW4gS1ZNIGd1ZXN0cyB3aXRoIGlzb2xhdGVkIEJQICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgtNzItI2RlZmluZSBUSUZfUEVSX1RSQVBcXHRcXHQxOVxcdC8qIE5lZWQgdG8gaGFuZGxlIFBFUiB0cmFwIG9uIGV4aXQgdG8gdXNlcm1vZGUgKi9cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyOiNpZm5kZWYgX19MSU5VWF9LVk1fUzM5MF9IXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzojZGVmaW5lIF9fTElOVVhfS1ZNX1MzOTBfSFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQtLypcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1OiAqIEtWTSBzMzkwIHNwZWNpZmljIHN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNi0gKlxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTMtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTQ6I2RlZmluZSBfX0tWTV9TMzkwXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTUtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MTY9c3RydWN0IGt2bV9zMzkwX3NrZXlzIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTIzLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI0OiNkZWZpbmUgS1ZNX1MzOTBfQ01NQV9QRUVLICgxIFxcdTAwM2NcXHUwMDNjIDApXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMjUtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMi0gKiBAY291bnQ6IFNpemUgb2YgdGhlIHJlc3VsdCBidWZmZXIuXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM6ICogQGZsYWdzOiBDb250cm9sIG9wZXJhdGlvbiBtb2RlIHZpYSBLVk1fUzM5MF9DTU1BXyogZmxhZ3NcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNDogKiBAcmVtYWluaW5nOiBVc2VkIHdpdGggS1ZNX1MzOTBfR0VUX0NNTUFfQklUUy4gSW5kaWNhdGVzIGhvdyBtYW55IGRpcnR5XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzUtICogICAgICAgICAgICAgcGFnZXMgYXJlIHN0aWxsIHJlbWFpbmluZy5cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNjogKiBAbWFzazogVXNlZCB3aXRoIEtWTV9TMzkwX1NFVF9DTU1BX0JJVFMuIEJpdG1hcCBvZiBiaXRzIHRvIGFjdHVhbGx5IHNldFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM3LSAqICAgICAgICBpbiB0aGUgUEdTVEUuXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zOS0gKlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQwOiAqIFVzZWQgaW4gS1ZNX1MzOTBfe0csU31FVF9DTU1BX0JJVFMgaW9jdGxzLlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQxLSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTQyPXN0cnVjdCBrdm1fczM5MF9jbW1hX2xvZyB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC01Mi1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1MzojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX1BPUiAgICAgICAxXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NTQ6I2RlZmluZSBLVk1fUzM5MF9SRVNFVF9DTEVBUiAgICAgMlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjU1OiNkZWZpbmUgS1ZNX1MzOTBfUkVTRVRfU1VCU1lTVEVNIDRcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1NjojZGVmaW5lIEtWTV9TMzkwX1JFU0VUX0NQVV9JTklUICA4XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NTc6I2RlZmluZSBLVk1fUzM5MF9SRVNFVF9JUEwgICAgICAgMTZcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC01OC1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo1OTovKiBmb3IgS1ZNX1MzOTBfTUVNX09QICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNjAtc3RydWN0IGt2bV9zMzkwX21lbV9vcCB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC03OC0vKiB0eXBlcyBmb3Iga3ZtX3MzOTBfbWVtX29wLVxcdTAwM2VvcCAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjc5OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfTE9HSUNBTF9SRUFEXFx0MFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjgwOiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfTE9HSUNBTF9XUklURVxcdDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo4MTojZGVmaW5lIEtWTV9TMzkwX01FTU9QX1NJREFfUkVBRFxcdDJcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo4MjojZGVmaW5lIEtWTV9TMzkwX01FTU9QX1NJREFfV1JJVEVcXHQzXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6ODM6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9BQlNPTFVURV9SRUFEXFx0NFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjg0OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfQUJTT0xVVEVfV1JJVEVcXHQ1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6ODU6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9BQlNPTFVURV9DTVBYQ0hHXFx0NlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTg2LVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTg3LS8qIGZsYWdzIGZvciBrdm1fczM5MF9tZW1fb3AtXFx1MDAzZWZsYWdzICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6ODg6I2RlZmluZSBLVk1fUzM5MF9NRU1PUF9GX0NIRUNLX09OTFlcXHRcXHQoMVVMTCBcXHUwMDNjXFx1MDAzYyAwKVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjg5OiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfRl9JTkpFQ1RfRVhDRVBUSU9OXFx0KDFVTEwgXFx1MDAzY1xcdTAwM2MgMSlcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo5MDojZGVmaW5lIEtWTV9TMzkwX01FTU9QX0ZfU0tFWV9QUk9URUNUSU9OXFx0KDFVTEwgXFx1MDAzY1xcdTAwM2MgMilcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC05MS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo5MjovKiBmbGFncyBzcGVjaWZ5aW5nIGV4dGVuc2lvbiBzdXBwb3J0IHZpYSBLVk1fQ0FQX1MzOTBfTUVNX09QX0VYVEVOU0lPTiAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjkzOiNkZWZpbmUgS1ZNX1MzOTBfTUVNT1BfRVhURU5TSU9OX0NBUF9CQVNFXFx0KDEgXFx1MDAzY1xcdTAwM2MgMClcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo5NDojZGVmaW5lIEtWTV9TMzkwX01FTU9QX0VYVEVOU0lPTl9DQVBfQ01QWENIR1xcdCgxIFxcdTAwM2NcXHUwMDNjIDEpXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtOTUtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9OTY9c3RydWN0IGt2bV9zMzkwX3BzdyB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xMDEtLyogdmFsaWQgdmFsdWVzIGZvciB0eXBlIGluIGt2bV9zMzkwX2ludGVycnVwdCAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjEwMjojZGVmaW5lIEtWTV9TMzkwX1NJR1BfU1RPUFxcdFxcdDB4ZmZmZTAwMDB1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTAzOiNkZWZpbmUgS1ZNX1MzOTBfUFJPR1JBTV9JTlRcXHRcXHQweGZmZmUwMDAxdVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjEwNDojZGVmaW5lIEtWTV9TMzkwX1NJR1BfU0VUX1BSRUZJWFxcdDB4ZmZmZTAwMDJ1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA1OiNkZWZpbmUgS1ZNX1MzOTBfUkVTVEFSVFxcdFxcdDB4ZmZmZTAwMDN1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTA2OiNkZWZpbmUgS1ZNX1MzOTBfSU5UX1BGQVVMVF9JTklUXFx0MHhmZmZlMDAwNHVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMDc6I2RlZmluZSBLVk1fUzM5MF9JTlRfUEZBVUxUX0RPTkVcXHQweGZmZmUwMDA1dVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjEwODojZGVmaW5lIEtWTV9TMzkwX01DSEtcXHRcXHRcXHQweGZmZmUxMDAwdVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjEwOTojZGVmaW5lIEtWTV9TMzkwX0lOVF9DTE9DS19DT01QXFx0XFx0MHhmZmZmMTAwNHVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMTA6I2RlZmluZSBLVk1fUzM5MF9JTlRfQ1BVX1RJTUVSXFx0XFx0MHhmZmZmMTAwNXVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMTE6I2RlZmluZSBLVk1fUzM5MF9JTlRfVklSVElPXFx0XFx0MHhmZmZmMjYwM3VcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMTI6I2RlZmluZSBLVk1fUzM5MF9JTlRfU0VSVklDRVxcdFxcdDB4ZmZmZjI0MDF1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTEzOiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0VNRVJHRU5DWVxcdFxcdDB4ZmZmZjEyMDF1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTE0OiNkZWZpbmUgS1ZNX1MzOTBfSU5UX0VYVEVSTkFMX0NBTExcXHQweGZmZmYxMjAydVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTExNS0vKiBBbnl0aGluZyBiZWxvdyAweGZmZmUwMDAwdSBpcyB0YWtlbiBieSBJTlRfSU8gKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMTY6I2RlZmluZSBLVk1fUzM5MF9JTlRfSU8oYWksY3NzaWQsc3NpZCxzY2hpZCkgICBcXFxcXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTE3LVxcdCgoKHNjaGlkKSkgfFxcdFxcdFxcdCAgICAgICBcXFxcXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xMjAtXFx0ICgoYWkpIFxcdTAwM2NcXHUwMDNjIDI2KSlcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMjE6I2RlZmluZSBLVk1fUzM5MF9JTlRfSU9fTUlOXFx0XFx0MHgwMDAwMDAwMHVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMjI6I2RlZmluZSBLVk1fUzM5MF9JTlRfSU9fTUFYXFx0XFx0MHhmZmZkZmZmZnVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxMjM6I2RlZmluZSBLVk1fUzM5MF9JTlRfSU9fQUlfTUFTS1xcdFxcdDB4MDQwMDAwMDB1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMTI0LVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MTQ1PXN0cnVjdCBrdm1fczM5MF9wZ21faW5mbyB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0xNTYtXFx0X191OCBvcF9hY2Nlc3NfaWQ7XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTU3OiNkZWZpbmUgS1ZNX1MzOTBfUEdNX0ZMQUdTX0lMQ19WQUxJRFxcdDB4MDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNTg6I2RlZmluZSBLVk1fUzM5MF9QR01fRkxBR1NfSUxDXzBcXHQweDAyXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MTU5OiNkZWZpbmUgS1ZNX1MzOTBfUEdNX0ZMQUdTX0lMQ18xXFx0MHgwNFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjE2MDojZGVmaW5lIEtWTV9TMzkwX1BHTV9GTEFHU19JTENfTUFTS1xcdDB4MDZcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNjE6I2RlZmluZSBLVk1fUzM5MF9QR01fRkxBR1NfTk9fUkVXSU5EXFx0MHgwOFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTE2Mi1cXHRfX3U4IGZsYWdzO1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg9MTc0PXN0cnVjdCBrdm1fczM5MF9lbWVyZ19pbmZvIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTE3Ny1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoxNzg6I2RlZmluZSBLVk1fUzM5MF9TVE9QX0ZMQUdfU1RPUkVfU1RBVFVTXFx0MHgwMVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTE3OS1zdHJ1Y3Qga3ZtX3MzOTBfc3RvcF9pbmZvIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTIzMT1lbnVtIHB2X2NtZF9kbXBfaWQge1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjIzMjpcXHRLVk1fUFZfRFVNUF9JTklULFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjIzMzpcXHRLVk1fUFZfRFVNUF9DT05GSUdfU1RPUl9TVEFURSxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyMzQ6XFx0S1ZNX1BWX0RVTVBfQ09NUExFVEUsXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjM1OlxcdEtWTV9QVl9EVU1QX0NQVSxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0yMzYtfTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTI0Nj1lbnVtIHB2X2NtZF9pbmZvX2lkIHtcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyNDc6XFx0S1ZNX1BWX0lORk9fVk0sXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MjQ4OlxcdEtWTV9QVl9JTkZPX0RVTVAsXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMjQ5LX07XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD0yODA9ZW51bSBwdl9jbWRfaWQge1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4MTpcXHRLVk1fUFZfRU5BQkxFLFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4MjpcXHRLVk1fUFZfRElTQUJMRSxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyODM6XFx0S1ZNX1BWX1NFVF9TRUNfUEFSTVMsXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mjg0OlxcdEtWTV9QVl9VTlBBQ0ssXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mjg1OlxcdEtWTV9QVl9WRVJJRlksXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mjg2OlxcdEtWTV9QVl9QUkVQX1JFU0VULFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4NzpcXHRLVk1fUFZfVU5TSEFSRV9BTEwsXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mjg4OlxcdEtWTV9QVl9JTkZPLFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjI4OTpcXHRLVk1fUFZfRFVNUCxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyOTA6XFx0S1ZNX1BWX0FTWU5DX0NMRUFOVVBfUFJFUEFSRSxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDoyOTE6XFx0S1ZNX1BWX0FTWU5DX0NMRUFOVVBfUEVSRk9STSxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0yOTItfTtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTMwMz1zdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMDgtXFx0dW5pb24ge1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjMwOTpcXHRcXHQvKiBmb3IgS1ZNX1MzOTBfWlBDSU9QX1JFR19BRU4gKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMTAtXFx0XFx0c3RydWN0IHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTMyMy0vKiB0eXBlcyBmb3Iga3ZtX3MzOTBfenBjaV9vcC1cXHUwMDNlb3AgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMjQ6I2RlZmluZSBLVk1fUzM5MF9aUENJT1BfUkVHX0FFTiAgICAgICAgICAgICAgICAwXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzI1OiNkZWZpbmUgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTiAgICAgIDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMjYtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzI3LS8qIGZsYWdzIGZvciBrdm1fczM5MF96cGNpX29wLVxcdTAwM2V1LnJlZ19hZW4uZmxhZ3MgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMjg6I2RlZmluZSBLVk1fUzM5MF9aUENJT1BfUkVHQUVOX0hPU1QgICAgKDEgXFx1MDAzY1xcdTAwM2MgMClcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zMjktXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzMwLS8qIERldmljZSBjb250cm9sIEFQSTogczM5MC1zcGVjaWZpYyBkZXZpY2VzICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzMxOiNkZWZpbmUgS1ZNX0RFVl9GTElDX0dFVF9BTExfSVJRU1xcdDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzI6I2RlZmluZSBLVk1fREVWX0ZMSUNfRU5RVUVVRVxcdFxcdDJcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzM6I2RlZmluZSBLVk1fREVWX0ZMSUNfQ0xFQVJfSVJRU1xcdFxcdDNcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzQ6I2RlZmluZSBLVk1fREVWX0ZMSUNfQVBGX0VOQUJMRVxcdFxcdDRcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzU6I2RlZmluZSBLVk1fREVWX0ZMSUNfQVBGX0RJU0FCTEVfV0FJVFxcdDVcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzY6I2RlZmluZSBLVk1fREVWX0ZMSUNfQURBUFRFUl9SRUdJU1RFUlxcdDZcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzc6I2RlZmluZSBLVk1fREVWX0ZMSUNfQURBUFRFUl9NT0RJRllcXHQ3XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzM4OiNkZWZpbmUgS1ZNX0RFVl9GTElDX0NMRUFSX0lPX0lSUVxcdDhcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozMzk6I2RlZmluZSBLVk1fREVWX0ZMSUNfQUlTTVxcdFxcdDlcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNDA6I2RlZmluZSBLVk1fREVWX0ZMSUNfQUlSUV9JTkpFQ1RcXHQxMFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM0MTojZGVmaW5lIEtWTV9ERVZfRkxJQ19BSVNNX0FMTFxcdFxcdDExXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzQyLS8qXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzQzLSAqIFdlIGNhbiBoYXZlIHVwIHRvIDQqNjRrIHBlbmRpbmcgc3ViY2hhbm5lbHMgKyA4IGFkYXB0ZXIgaW50ZXJydXB0cyxcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNDQ6ICogYXMgd2VsbCBhcyB1cCAgdG8gQVNZTkNfUEZfUEVSX1ZDUFUqS1ZNX01BWF9WQ1BVUyBwZmF1bHQgZG9uZSBpbnRlcnJ1cHRzLlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM0NS0gKiBUaGVyZSBhcmUgYWxzbyBzY2xwIGFuZCBtYWNoaW5lIGNoZWNrcy4gVGhpcyBnaXZlcyB1c1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzQ4LSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM0OTojZGVmaW5lIEtWTV9TMzkwX01BWF9GTE9BVF9JUlFTXFx0MjY2MjUwXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzUwOiNkZWZpbmUgS1ZNX1MzOTBfRkxJQ19NQVhfQlVGRkVSXFx0MHgyMDAwMDAwXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzUxLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTM1Mj1zdHJ1Y3Qga3ZtX3MzOTBfaW9fYWRhcHRlciB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zNTktXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzYwOiNkZWZpbmUgS1ZNX1MzOTBfQURBUFRFUl9TVVBQUkVTU0lCTEUgMHgwMVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM2MS1cXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTM2Nz1zdHJ1Y3Qga3ZtX3MzOTBfYWlzX2FsbCB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC0zNzEtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6MzcyOiNkZWZpbmUgS1ZNX1MzOTBfSU9fQURBUFRFUl9NQVNLIDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozNzM6I2RlZmluZSBLVk1fUzM5MF9JT19BREFQVEVSX01BUCAyXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mzc0OiNkZWZpbmUgS1ZNX1MzOTBfSU9fQURBUFRFUl9VTk1BUCAzXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzc1LVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oPTM3Nj1zdHJ1Y3Qga3ZtX3MzOTBfaW9fYWRhcHRlcl9yZXEge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzg0LS8qIGt2bSBhdHRyX2dyb3VwICBvbiB2bSBmZCAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4NTojZGVmaW5lIEtWTV9TMzkwX1ZNX01FTV9DVFJMXFx0XFx0MFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4NjojZGVmaW5lIEtWTV9TMzkwX1ZNX1RPRFxcdFxcdFxcdDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozODc6I2RlZmluZSBLVk1fUzM5MF9WTV9DUllQVE9cXHRcXHQyXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mzg4OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX01PREVMXFx0XFx0M1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM4OTojZGVmaW5lIEtWTV9TMzkwX1ZNX01JR1JBVElPTlxcdFxcdDRcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOTA6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfVE9QT0xPR1lcXHQ1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzkxLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM5Mi0vKiBrdm0gYXR0cmlidXRlcyBmb3IgbWVtX2N0cmwgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOTM6I2RlZmluZSBLVk1fUzM5MF9WTV9NRU1fRU5BQkxFX0NNTUFcXHQwXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6Mzk0OiNkZWZpbmUgS1ZNX1MzOTBfVk1fTUVNX0NMUl9DTU1BXFx0MVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM5NTojZGVmaW5lIEtWTV9TMzkwX1ZNX01FTV9MSU1JVF9TSVpFXFx0MlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTM5Ni1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDozOTc6I2RlZmluZSBLVk1fUzM5MF9OT19NRU1fTElNSVRcXHRcXHRVNjRfTUFYXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtMzk4LVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjM5OTovKiBrdm0gYXR0cmlidXRlcyBmb3IgS1ZNX1MzOTBfVk1fVE9EICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDAwOiNkZWZpbmUgS1ZNX1MzOTBfVk1fVE9EX0xPV1xcdFxcdDBcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0MDE6I2RlZmluZSBLVk1fUzM5MF9WTV9UT0RfSElHSFxcdFxcdDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0MDI6I2RlZmluZSBLVk1fUzM5MF9WTV9UT0RfRVhUXFx0XFx0MlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQwMy1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD00MDQ9c3RydWN0IGt2bV9zMzkwX3ZtX3RvZF9jbG9jayB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MDgtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDA5Oi8qIGt2bSBhdHRyaWJ1dGVzIGZvciBLVk1fUzM5MF9WTV9DUFVfTU9ERUwgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MTAtLyogcHJvY2Vzc29yIHJlbGF0ZWQgYXR0cmlidXRlcyBhcmUgci93ICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDExOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX1BST0NFU1NPUlxcdDBcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MTItc3RydWN0IGt2bV9zMzkwX3ZtX2NwdV9wcm9jZXNzb3Ige1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDE5LS8qIG1hY2hpbmUgcmVsYXRlZCBhdHRyaWJ1dGVzIGFyZSByL28gKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0MjA6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfTUFDSElORVxcdFxcdDFcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MjEtc3RydWN0IGt2bV9zMzkwX3ZtX2NwdV9tYWNoaW5lIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oLTQyOC1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0Mjk6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfUFJPQ0VTU09SX0ZFQVRcXHQyXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDMwOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX01BQ0hJTkVfRkVBVFxcdDNcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00MzEtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDMyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfTlJfQklUU1xcdDEwMjRcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0MzM6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9FU09QXFx0MFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzNDojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX1NJRUYyXFx0MVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzNTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUXzY0QlNDQU9cXHQyXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDM2OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0lJRlxcdDNcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0Mzc6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9HUEVSRVxcdDRcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0Mzg6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9HU0xTXFx0NVxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQzOTojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX0lCXFx0XFx0NlxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQ0MDojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX0NFSVxcdDdcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NDE6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9JQlNcXHQ4XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0tFWVxcdDlcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NDM6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9DTU1BXFx0MTBcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NDQ6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9QRk1GSVxcdDExXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDQ1OiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX0ZFQVRfU0lHUElGXFx0MTJcXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaDo0NDY6I2RlZmluZSBLVk1fUzM5MF9WTV9DUFVfRkVBVF9LU1NcXHQxM1xcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQ0NzojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9GRUFUX0FTVEZMRUlFMlxcdDE0XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDQ4LXN0cnVjdCBrdm1fczM5MF92bV9jcHVfZmVhdCB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaC00NTEtXFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmg6NDUyOiNkZWZpbmUgS1ZNX1MzOTBfVk1fQ1BVX1BST0NFU1NPUl9TVUJGVU5DXFx0NFxcbmFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oOjQ1MzojZGVmaW5lIEtWTV9TMzkwX1ZNX0NQVV9NQUNISU5FX1NVQkZVTkNcXHRcXHQ1XFxuYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgtNDU0LS8qIGZvciBcXFwidGVzdCBiaXRcXFwiIGluc3RydWN0aW9ucyBNU0IgMCBiaXQgb3JkZXJpbmcsIGZvciBcXFwicXVlcnlcXFwiIHJhdyBibG9ja3MgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS91YXBpL2FzbS9rdm0uaD00NTU9c3RydWN0IGt2bV9zMzkwX3ZtX2NwdV9zdWJmdW5jIHtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzoxMy4wNjU2ODE0NDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjI0MjYyNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipFeGFtaW5pbmcgS2NvbmZpZyBmb3IgczM5MCBLVk0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgS1ZNIGlzIGNvbmZpZ3VyZWQgZm9yIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gR2l2ZW4gbXkgZGVlcCBrbm93bGVkZ2Ugb2Yga2VybmVsIGNvbmZpZ3VyYXRpb24sIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgYGFyY2gvczM5MC9rdm0vS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgYWxsIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZGVmaW5pdGlvbnMuIEl0J2xsIHNob3cgbWUgdGhlIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBnb3Zlcm4gS1ZNJ3MgYmVoYXZpb3Igb24gdGhhdCBzcGVjaWZpYyBwbGF0Zm9ybS4gVW5kZXJzdGFuZGluZyB0aGVzZSBjb25maWd1cmF0aW9uIGtub2JzIGlzIGNydWNpYWwgZm9yIGFueSBmdXJ0aGVyIHdvcmsgSSBuZWVkIHRvIGRvIG9uIHRoaXMgYXNwZWN0IG9mIHRoZSBzeXN0ZW0uIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTI0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDM6MTUuNjg5OTQ3MTc0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9zMzkwL2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBLVk0gY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0c291cmNlIFxcXCJ2aXJ0L2t2bS9LY29uZmlnXFxcIlxcbiAgIDY6XFx0XFxuICAgNzpcXHRtZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXFxuICAgODpcXHRcXHRkZWZfYm9vbCB5XFxuICAgOTpcXHRcXHRwcm9tcHQgXFxcIktWTVxcXCJcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgU2F5IFkgaGVyZSB0byBnZXQgdG8gc2VlIG9wdGlvbnMgZm9yIHVzaW5nIHlvdXIgTGludXggaG9zdCB0byBydW4gb3RoZXJcXG4gIDEyOlxcdFxcdCAgb3BlcmF0aW5nIHN5c3RlbXMgaW5zaWRlIHZpcnR1YWwgbWFjaGluZXMgKGd1ZXN0cykuXFxuICAxMzpcXHRcXHQgIFRoaXMgb3B0aW9uIGFsb25lIGRvZXMgbm90IGFkZCBhbnkga2VybmVsIGNvZGUuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZCBkaXNhYmxlZC5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgVklSVFVBTElaQVRJT05cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIEtWTVxcbiAgMjA6XFx0XFx0ZGVmX3RyaXN0YXRlIHlcXG4gIDIxOlxcdFxcdHByb21wdCBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4gIDIzOlxcdFxcdHNlbGVjdCBLVk1fQVNZTkNfUEZcXG4gIDI0OlxcdFxcdHNlbGVjdCBLVk1fQVNZTkNfUEZfU1lOQ1xcbiAgMjU6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDI2OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXFxuICAyNzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcXG4gIDI4OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcXG4gIDI5OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9OT19QT0xMXFxuICAzMDpcXHRcXHRzZWxlY3QgS1ZNX1ZGSU9cXG4gIDMxOlxcdFxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbiAgMzI6XFx0XFx0c2VsZWN0IEtWTV9NTVVfTE9DS0xFU1NfQUdJTkdcXG4gIDMzOlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXFxuICAzNDpcXHRcXHRoZWxwXFxuICAzNTpcXHRcXHQgIFN1cHBvcnQgaG9zdGluZyBwYXJhdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMgdXNpbmcgdGhlIFNJRVxcbiAgMzY6XFx0XFx0ICB2aXJ0dWFsaXphdGlvbiBjYXBhYmlsaXR5IG9uIHRoZSBtYWluZnJhbWUuIFRoaXMgc2hvdWxkIHdvcmtcXG4gIDM3OlxcdFxcdCAgb24gYW55IDY0Yml0IG1hY2hpbmUuXFxuICAzODpcXHRcXG4gIDM5OlxcdFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdGhyb3VnaFxcbiAgNDA6XFx0XFx0ICBhIGNoYXJhY3RlciBkZXZpY2Ugbm9kZSBuYW1lZCAvZGV2L2t2bS5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDQzOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQga3ZtLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0NjpcXHRcXG4gIDQ3OlxcdGNvbmZpZyBLVk1fUzM5MF9VQ09OVFJPTFxcbiAgNDg6XFx0XFx0Ym9vbCBcXFwiVXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1xcXCJcXG4gIDQ5OlxcdFxcdGRlcGVuZHMgb24gS1ZNXFxuICA1MDpcXHRcXHRoZWxwXFxuICA1MTpcXHRcXHQgIEFsbG93IENBUF9TWVNfQURNSU4gdXNlcnMgdG8gY3JlYXRlIEtWTSB2aXJ0dWFsIG1hY2hpbmVzIHRoYXQgYXJlXFxuICA1MjpcXHRcXHQgIGNvbnRyb2xsZWQgYnkgdXNlcnNwYWNlLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1NTpcXHRcXG4gIDU2OlxcdGVuZGlmICMgVklSVFVBTElaQVRJT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDM6MTUuNjkwMDE5NTI0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODcyMzk3NDMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBhIHBhdGNoIHJlbGF0ZWQgdG8gYFZJUlRVQUxJWkFUSU9OYCBhbmQgc3BlY2lmaWNhbGx5IGBLVk1gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMuXG5cbkxldCdzIGRpdmUgaW4gYW5kIHJldmlldyB0aGUgZGlmZi4gSXQgc2VlbXMgd2UgaGF2ZSBzZXZlcmFsIGZpbGUgbW9kaWZpY2F0aW9ucyBhY3Jvc3MgYGFyY2gvczM5MC9rdm0vczM5MC9gLiBUaGUgY2hhbmdlcyBhcHBlYXIgdG8gYmUgbWFpbmx5IGNvbmNlcm5lZCB3aXRoIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb246XG5cbjEuICBgaGFuZGxlX3N0aHlpYCBpcyBjaGFuZ2luZyBgZ2V0X3plcm9lZF9wYWdlYCB0byBga3phbGxvY2AsIGFuZCBgZnJlZV9wYWdlYCB0byBga2ZyZWVgLlxuMi4gIGBrdm1fczM5MF9naWJfZGVzdHJveWAgYW5kIGBrdm1fczM5MF9naWJfaW5pdGAgaGF2ZSBzaW1pbGFyIGNoYW5nZXMsIHVzaW5nIGBremFsbG9jYCBpbnN0ZWFkIG9mIGBnZXRfemVyb2VkX3BhZ2VgIGFuZCBga2ZyZWVgIGluc3RlYWQgb2YgYGZyZWVfcGFnZWAuXG4zLiAgYGhhbmRsZV9zdHNpYCBhbHNvIHJlZmxlY3RzIHRoaXMgcGF0dGVybiBvZiBzd2l0Y2hpbmcgZnJvbSBgZ2V0X3plcm9lZF9wYWdlYCBhbmQgYGZyZWVfcGFnZWAgdG8gYGt6YWxsb2NgIGFuZCBga2ZyZWVgLlxuNC4gIGBrdm1fYXJjaF9pbml0X3ZtYCAgYW5kIGBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWFgIGFyZSBkb2luZyB0aGUgc2FtZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2VzLlxuXG5Ob3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogSXMgdGhpcyBXb3J0aEZ1enppbmc/IEkgbmVlZCB0byBhcHBseSBteSBrbm93bGVkZ2Ugb2Ygd2hhdCBtYWtlcyBhIHBhdGNoIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBndWlkZWxpbmVzIGFyZSBwcmV0dHkgY2xlYXIuIEl0J3MgYSBcIm5vXCIgaWYgaXQncyBwdXJlbHkgZG9jdW1lbnRhdGlvbiwgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgcGFydGljdWxhcmx5IHRob3NlIHJlbHlpbmcgb24gc29mdHdhcmUgZW11bGF0aW9uLCBsaWtlIFFFTVUuXG5cbkJ1dCB0aGlzIHBhdGNoIGNsZWFybHkgbW9kaWZpZXMgYGFyY2gvczM5MGAgS1ZNIGNvZGUhIEEgY29yZSBhcmNoaXRlY3R1cmUgY29tcG9uZW50LiBTbywgbXkgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBCdXQgSSBtdXN0IGJlIHN1cmUuIEkgbmVlZCB0byBiZSBzdXJlIHRoaXMgaXMgYSBjb2RlIHBhdGggSSBjYW4gZXZlbiBleGVjdXRlISBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIEtWTSBvbiBzMzkwIGNhbiBiZSBydW4gYW5kIGZ1enplZC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXM6IENhbiBzMzkwIEtWTSAqcnVuKiBpbiBRRU1VPyBBbmQgKndoeSogZG9lcyBRRU1VIG1hdHRlcj8gVGhlIGd1aWRlbGluZXMgbWVudGlvbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGlzIHNlZW1zIGNlbnRyYWwgdG8gdGhlIGRldGVybWluYXRpb24uXG5cbkkgcmVjYWxsIHRoYXQgczM5MCBLVk0gaXMgdXNlZCB3aGVuIExpbnV4IHMzOTAgaXMgcnVubmluZyB3aXRoIEtWTS4gQnV0IHdoYXQgYWJvdXQgUUVNVT8gSSBrbm93IFFFTVUgc3VwcG9ydHMgczM5MHggdXNpbmcgVENHLCBidXQgZG9lc24ndCB0aGUgVENHIGltcGxlbWVudGF0aW9uIG9uIHMzOTB4ICpub3QqIHN1cHBvcnQgbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBwYXJ0aWN1bGFybHkgdGhlIFNJRSAoU3lzdGVtIEluc3RydWN0aW9uIEV4dGVuc2lvbikgaW5zdHJ1Y3Rpb24gc2V0PyBJc24ndCBTSUUgZXNzZW50aWFsIGZvciBLVk0/XG5cblRoZW4gSSByZWFsaXplIEkgbmVlZCB0byBjb25maXJtOiBEb2VzIFFFTVUgVENHIHMzOTB4IHN1cHBvcnQgS1ZNPyBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGxpa2UgYGFyY2gvczM5MC9rdm0vczM5MC9zaWUuU2Agb3IgU0lFIGluc3RydWN0aW9ucyBpbiBzMzkwLiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIuIElmIHMzOTAgS1ZNIHJlbGllcyBvbiBTSUUsIGFuZCBRRU1VJ3MgVENHIGxhY2tzIFNJRSBzdXBwb3J0LCB0aGVuIHRoaXMgcGF0Y2ggaXMgdW5mb3J0dW5hdGVseSAqbm90KiBmdXp6YWJsZSB1bmRlciBzdGFuZGFyZCBRRU1VLiBCdXQgSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIFNJRSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDg2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjI0LjQxMzk5NjAxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUzMzk5NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNpZTY0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg9NjgzPXZvaWQga3ZtX2FyY2hfY3J5cHRvX3NldF9tYXNrcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgKmFwbSxcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjg4LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6Njg5OmludCBfX3NpZTY0YShwaHlzX2FkZHJfdCBzaWVfYmxvY2tfcGh5cywgc3RydWN0IGt2bV9zMzkwX3NpZV9ibG9jayAqc2llX2Jsb2NrLCB1NjQgKnJzYSxcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oLTY5MC1cXHQgICAgIHVuc2lnbmVkIGxvbmcgZ2FzY2UpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjkxLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmg6NjkyOnN0YXRpYyBpbmxpbmUgaW50IHNpZTY0YShzdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrICpzaWVfYmxvY2ssIHU2NCAqcnNhLCB1bnNpZ25lZCBsb25nIGdhc2NlKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF9zMzkwLmgtNjkzLXtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfczM5MC5oOjY5NDpcXHRyZXR1cm4gX19zaWU2NGEodmlydF90b19waHlzKHNpZV9ibG9jayksIHNpZV9ibG9jaywgcnNhLCBnYXNjZSk7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0X3MzOTAuaC02OTUtfVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TPTE4ND1FWFBPUlRfU1lNQk9MKF9fV0FSTl90cmFwKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TLTE4OS0vKlxcbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUzoxOTA6ICogX19zaWU2NGEgY2FsbGluZyBjb252ZW50aW9uOlxcbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUy0xOTEtICogJXIyIHBvaW50ZXIgdG8gc2llIGNvbnRyb2wgYmxvY2sgcGh5c1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TLTE5NS0gKi9cXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MTk2OlNZTV9GVU5DX1NUQVJUKF9fc2llNjRhKVxcbmFyY2gvczM5MC9rZXJuZWwvZW50cnkuUy0xOTctXFx0c3RtZ1xcdCVyNiwlcjE0LF9fU0ZfR1BSUyglcjE1KVxcdCMgc2F2ZSBrZXJuZWwgcmVnaXN0ZXJzXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM9MjMxPVNZTV9JTk5FUl9MQUJFTChzaWVfZXhpdCwgU1lNX0xfR0xPQkFMKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TLTI0Mi1cXHRCUl9FWFxcdCVyMTRcXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MjQzOlNZTV9GVU5DX0VORChfX3NpZTY0YSlcXG5hcmNoL3MzOTAva2VybmVsL2VudHJ5LlM6MjQ0OkVYUE9SVF9TWU1CT0woX19zaWU2NGEpXFxuYXJjaC9zMzkwL2tlcm5lbC9lbnRyeS5TLTI0NS1FWFBPUlRfU1lNQk9MKHNpZV9leGl0KVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9ubWkuYz0zMzM9c3RhdGljIHZvaWQgbm90cmFjZSBzMzkwX2JhY2t1cF9tY2NrX2luZm8oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL25taS5jLTMzNy1cXG5hcmNoL3MzOTAva2VybmVsL25taS5jOjMzODpcXHQvKiByMTQgY29udGFpbnMgdGhlIHNpZSBibG9jaywgd2hpY2ggd2FzIHNldCBpbiBzaWU2NGEgKi9cXG5hcmNoL3MzOTAva2VybmVsL25taS5jLTMzOS1cXHRzdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrICpzaWVfYmxvY2sgPSBwaHlzX3RvX3ZpcnQocmVncy1cXHUwMDNlZ3Byc1sxNF0pO1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jPTMzOD12b2lkIG5vaW5zdHIgX19kb19wZ21fY2hlY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3RyYXBzLmMtMzU2LVxcdCAqIEluIGNhc2Ugb2YgYSBndWVzdCBmYXVsdCwgc2hvcnQtY2lyY3VpdCB0aGUgZmF1bHQgaGFuZGxlciBhbmQgcmV0dXJuLlxcbmFyY2gvczM5MC9rZXJuZWwvdHJhcHMuYzozNTc6XFx0ICogVGhpcyB3YXkgdGhlIHNpZTY0YSgpIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIDA7IGZhdWx0IGFkZHJlc3MgYW5kXFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jLTM1OC1cXHQgKiBvdGhlciByZWxldmFudCBiaXRzIGFyZSBzYXZlZCBpbiBjdXJyZW50LVxcdTAwM2V0aHJlYWQuZ21hcF90ZWlkLCBhbmRcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9NDc0OD1pbnQgbm9pbnN0ciBrdm1fczM5MF9lbnRlcl9leGl0X3NpZShzdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrICpzY2IsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTQ3NTktXFx0ICovXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzo0NzYwOlxcdHJldCA9IHNpZTY0YShzY2IsIGdwcnMsIGdhc2NlKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTQ3NjEtXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvdnNpZS5jPTExODc9c3RhdGljIGludCBkb192c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSwgc3RydWN0IGdtYXAgKnNnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ZzaWUuYy0xMjE0LVxcdC8qXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ZzaWUuYzoxMjE1OlxcdCAqIFNpbXVsYXRlIGEgU0lFIGVudHJ5IG9mIHRoZSBWQ1BVIChzZWUgc2llNjRhKSwgc28gVkNQVSBibG9ja2luZ1xcbmFyY2gvczM5MC9rdm0vczM5MC92c2llLmMtMTIxNi1cXHQgKiBhbmQgVkNQVSByZXF1ZXN0cyBhbHNvIGhpbmRlciB0aGUgdlNJRSBmcm9tIHJ1bm5pbmcgYW5kIGxlYWRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDM6MjQuNzY3NDA3NzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTk2MTYyNDk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCB3YWl0IGEgbWludXRlISBTeXprYWxsZXIgKmRvZXMqIHRhcmdldCBzMzkweCEgUmlnaHQsIExpbnV4L3MzOTB4IGlzIHN1cHBvcnRlZC4gVGhpcyBpcyBpbnRlcmVzdGluZy4gTGV0J3MgZGVsdmUgaW50byB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zOiBga3ZtX2FyY2hfaW5pdF92bWAsIGBoYW5kbGVfc3RoeWlgLCBgaGFuZGxlX3N0c2lgLCBhbmQgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAuIEFyZSB0aGVzZSBmdW5jdGlvbnMgYWN0dWFsbHkgKnJlYWNoYWJsZSogd2hlbiBydW5uaW5nIFN5emthbGxlciBvbiBzMzkweD9cblxuWWVzLCBjb25maXJtZWQuIFRoZSBgS1ZNX0NSRUFURV9WTWAgaW9jdGwgY2FsbHMgYGt2bV9hcmNoX2luaXRfdm1gIG9uIHMzOTB4LiBBbmQgYEtWTV9SVU5gIGhhbmRsZXMgZXhpdHMgYW5kIGludGVyY2VwdHMsIHNwZWNpZmljYWxseSBjYWxsaW5nIGBoYW5kbGVfc3RoeWlgIGFuZCBgaGFuZGxlX3N0c2lgLiBGdXJ0aGVybW9yZSwgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAgZ2V0cyBjYWxsZWQgZHVyaW5nIENNTUEgc2V0dXAsIGFuZCBga3ZtX3MzOTBfZ2liX2luaXRgIGhhcHBlbnMgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbi5cblxuVGhlIGtleSBxdWVzdGlvbjogaXMgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSAqd29ydGgqIGZ1enppbmc/IExldCdzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdC5cblxuVGhlIGNyaXRlcmlhIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzOyBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciB0cmFjZXBvaW50czsgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cy9tYWNyb3MgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdzsgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM7IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXIgY29kZSB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlOyBvciBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgYXJlIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuTm9uZSBvZiB0aG9zZSBleGNsdXNpb24gY3JpdGVyaWEgYXBwbHkgaGVyZSEgVGhpcyBsb29rcyBnb29kIVxuXG5Pa2F5LCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsIFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5BbHJpZ2h0LCBsZXQncyB2ZXJpZnkgd2hhdCBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHRvIHJldHVybi5cblxuRmlyc3QgbGV0J3MgbG9vayBhdCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOlxuMS4gIGBoYW5kbGVfc3RoeWlgIChpbiBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMpIC0gKlRoaXMqIGlzIGEga2V5IG9uZS4gSXQncyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24hIExldCdzIGNoZWNrIGBpbnRlcmNlcHQuY2AgbW9yZSBjbG9zZWx5Li4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzQ5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjM0LjcyOTAzNzAwMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI2NjUwNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IGhhbmRsZV9zdGh5aVxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYz0zOTY9c3RhdGljIGludCBoYW5kbGVfcGFydGlhbF9leGVjdXRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVyY2VwdC5jLTQxMi0gKi9cXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmM6NDEzOmludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuYy00MTQte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaD00MjE9c3RhdGljIGlubGluZSB2b2lkIGt2bV9zMzkwX3JldHJ5X2luc3RyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmgtNDI3LVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg6NDI4OmludCBoYW5kbGVfc3RoeWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5oLTQyOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDM6MzQuNzgxNzA3NjQ4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY3NzIwMzc2NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgaGFuZGxlX3N0c2lgIEZ1bmN0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBgaGFuZGxlX3N0c2lgIGluIHRoZSBzMzkwIEtWTSBhcmNoaXRlY3R1cmUuIExldCdzIHNlZSwgdGhlIGZpbGUgaXMgYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGFuZCB0aGlzIGlzIGNydWNpYWwgZm9yIGhvdyBpdCdzIHVzZWQsIGlzIGBoYW5kbGVfc3RzaWAgZGVjbGFyZWQgYXMgYHN0YXRpY2Agb3Igbm9uLXN0YXRpYz8gVGhhdCB3aWxsIGRpY3RhdGUgaXRzIHNjb3BlIGFuZCBob3cgaXQncyBhY3R1YWxseSBhY2Nlc3NlZCB3aXRoaW4gdGhlIGJyb2FkZXIgS1ZNIGZyYW1ld29yay4gSSBuZWVkIHRvIGNoZWNrIGl0cyBkZWNsYXJhdGlvbiB0byBhc2NlcnRhaW4gaXRzIHZpc2liaWxpdHkgYW5kIGludGVuZGVkIHVzYWdlLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIG90aGVyIHBhcnRzIG9mIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY3NTIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo0MS41NTM3NDg0MDNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTM4NTc2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYW5kbGVfc3RzaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jPTgwNT1zdGF0aWMgaW50IGhhbmRsZV9zdGlkcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTgyOS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjgzMDpzdGF0aWMgdm9pZCBoYW5kbGVfc3RzaV8zXzJfMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNpbmZvXzNfMl8yICptZW0pXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYy04MzEte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYz04NTc9c3RhdGljIHZvaWQgaW5zZXJ0X3N0c2lfdXNyX2RhdGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgYWRkciwgdTggYXIsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTg2Ny1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjg2ODpzdGF0aWMgaW50IGhhbmRsZV9zdHNpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTg2OS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTkyNi1cXHRcXHRcXHRnb3RvIG91dF9ub19kYXRhO1xcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmM6OTI3OlxcdFxcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsIG1lbSk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYy05MjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTkzMC1cXHRcXHRpbnNlcnRfc3RzaV91c3JfZGF0YSh2Y3B1LCBvcGVyYW5kMiwgYXIsIGZjLCBzZWwxLCBzZWwyKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjkzMTpcXHRcXHR0cmFjZV9rdm1fczM5MF9oYW5kbGVfc3RzaSh2Y3B1LCBmYywgc2VsMSwgc2VsMiwgb3BlcmFuZDIpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTMyLVxcdFxcdHJldHVybiAtRVJFTU9URTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTQ3LVxcdH1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jOjk0ODpcXHR0cmFjZV9rdm1fczM5MF9oYW5kbGVfc3RzaSh2Y3B1LCBmYywgc2VsMSwgc2VsMiwgb3BlcmFuZDIpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtOTQ5LVxcdGtmcmVlKG1lbSk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jPTk2MD1pbnQga3ZtX3MzOTBfaGFuZGxlX2IyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9wcml2LmMtMTAwNS1cXHRjYXNlIDB4N2Q6XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYzoxMDA2OlxcdFxcdHJldHVybiBoYW5kbGVfc3RzaSh2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jLTEwMDctXFx0Y2FzZSAweGFmOlxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3RyYWNlLmg9Mzg3PVRSQUNFX0VWRU5UKGt2bV9zMzkwX2hhbmRsZV9zdGZsLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3RyYWNlLmgtNDA0LVxcbmFyY2gvczM5MC9rdm0vczM5MC90cmFjZS5oOjQwNTpUUkFDRV9FVkVOVChrdm1fczM5MF9oYW5kbGVfc3RzaSxcXG5hcmNoL3MzOTAva3ZtL3MzOTAvdHJhY2UuaC00MDYtXFx0ICAgIFRQX1BST1RPKFZDUFVfUFJPVE9fQ09NTU9OLCBpbnQgZmMsIGludCBzZWwxLCBpbnQgc2VsMiwgdTY0IGFkZHIpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo0MS43NDMxNDA2NjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTEzMTI3ODM1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBLVk0vczM5MCBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBga3ZtX3MzOTBfaGFuZGxlX2IyYCBjYWxscyBgaGFuZGxlX3N0c2lgLCBhbmQgSSdtIGRpdmluZyBpbnRvIHRoZSByZWNlbnQgbW9kaWZpY2F0aW9ucy4gRmlyc3QsIGxldCdzIGNvbmZpcm0gdGhhdCBga3ZtX3MzOTBfaGFuZGxlX2IyYCBpc24ndCBzdGF0aWMsIHdoaWNoIGl0IGlzbid0LiBHb29kLiBOb3csIEkgd2FudCB0byByZXZpZXcgYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZCBhcyBhIHJlc3VsdCBvZiB0aGlzIGNoYW5nZS5cblxuSGVyZSdzIHRoZSBsaXN0IEkndmUgY29tcGlsZWQ6XG5cbjEuICBgaGFuZGxlX3N0aHlpYCBpcyBub24tc3RhdGljLCB3aGljaCBpcyByZWxldmFudC5cbjIuICBga3ZtX3MzOTBfZ2liX2luaXRgIGFuZCBga3ZtX3MzOTBfZ2liX2Rlc3Ryb3lgIGFyZSBub24tc3RhdGljLCB0aG91Z2ggdGhlIGluaXQgaXMgbWFya2VkIGFzIGBfX2luaXRgLCBzbyBpdCdzIHByb2JhYmx5IG5vdCBhIGJpZyBjb25jZXJuIGhlcmUuXG4zLiAgYGhhbmRsZV9zdHNpYCwgb2J2aW91c2x5LCBzaW5jZSBpdCdzIGNhbGxlZCBieSBga3ZtX3MzOTBfaGFuZGxlX2IyYCBhbmQgaXMgYWxzbyBub24tc3RhdGljLlxuNC4gIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gIGFyZSBub24tc3RhdGljIGFzIHdlbGwuIFRoaXMgbWFrZXMgbWUgY3VyaW91cyBhYm91dCB0aGUgb3ZlcmFsbCBWTSBsaWZlY3ljbGUuXG41LiAgYGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYWAgYW5kIGBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYWAgYXJlIGFsc28gbm9uLXN0YXRpYyBhbmQgd2FycmFudCBzb21lIGludmVzdGlnYXRpb24uXG5cbk5vdywgSSdtIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCDigJMgSSdsbCBnbyB0byBgYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY2AgdG8gZXhhbWluZSBpdHMgaW1wbGVtZW50YXRpb24gYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3OTg3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjQ2Ljg3NDQyMjQ0MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA1MDAwNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MzY1Nz12b2lkIGt2bV9zMzkwX3ZjcHVfdW5zZXR1cF9jbW1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzY2My1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjM2NjQ6aW50IGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0zNjY1LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM9MzY4ND1zdGF0aWMgaW50IGt2bV9zMzkwX3ZjcHVfc2V0dXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0zNzQ2LVxcdGlmICh2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2gudXNlX2NtbWEpIHtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjM3NDc6XFx0XFx0cmMgPSBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEodmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy0zNzQ4LVxcdFxcdGlmIChyYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmg9NDY1PXZvaWQga3ZtX3MzOTBfc3luY19yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaDo0NjY6aW50IGt2bV9zMzkwX3ZjcHVfc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmgtNDY3LXZvaWQga3ZtX3MzOTBfdmNwdV91bnNldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDM6NDYuOTI0OTI3NzE4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3MDg5NTc4NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBsaWZlY3ljbGUgb2YgYSBLVk0gdmlydHVhbCBtYWNoaW5lLCBzcGVjaWZpY2FsbHkgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemF0aW9uIGFuZCBkZXN0cnVjdGlvbi4gU28sIEknbSB0aGlua2luZywgbGV0J3MgZGlzc2VjdCBga3ZtX2FyY2hfaW5pdF92bWAgYW5kIGBrdm1fYXJjaF9kZXN0cm95X3ZtYC4gSSdsbCBiZSBsb29raW5nIGF0IGhvdyB0aGV5J3JlIGltcGxlbWVudGVkLCB3aGF0IHJlc291cmNlcyB0aGV5IGFsbG9jYXRlIGFuZCBkZWFsbG9jYXRlLCBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgczM5MC1zcGVjaWZpYyBhcmNoaXRlY3R1cmFsIGNvbXBvbmVudHMgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrLiBJJ20gaGVhZGluZyBzdHJhaWdodCB0byBgYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUncyBlbnRyeSBhbmQgZXhpdCBwb2ludHMgb24gdGhpcyBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkyMjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo0OS42MzM4ODgyOTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODUwNzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX2luaXRfdm1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz0zMjMyPXZvaWQga3ZtX2FyY2hfZnJlZV92bShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTMyMzktXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYzozMjQwOmludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtMzI0MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjQ5LjY4Mjc1NDA3NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODMzMjYxNzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyBLVk0vczM5MCBHSUIgSW5pdGlhbGl6YXRpb24gYW5kIERlc3RydWN0aW9uKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0vczM5MCBhcmNoaXRlY3R1cmUuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBob3cgR2xvYmFsIEludGVycnVwdCBCbG9ja3MsIG9yIEdJQnMsIGFyZSBoYW5kbGVkLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGBrdm1fczM5MF9naWJfaW5pdGAgYW5kIGBrdm1fczM5MF9naWJfZGVzdHJveWAgZnVuY3Rpb25zLiBUaGV5IHNob3VsZCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFsbG9jYXRpb24sIHNldHVwLCBhbmQgY2xlYW51cCBvZiB0aGVzZSBHSUIgc3RydWN0dXJlcy4gSSdsbCBmaW5kIHRoZW0gd2l0aGluIGBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGZvciBtYW5hZ2luZyB0aGVzZSBpbnRlcnJ1cHRzIHNob3VsZCByZXNpZGUsIHNvIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHRvIHByb3ZpZGUgdGhlIGRldGFpbHMgSSBuZWVkLiBMZXQncyBzZWUgaG93IHRoZXkgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk2NDcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo1Mi41MTYwMTkxMjlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODA5MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX2dpYl9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jPTM2Nzc9c3RhdGljIHN0cnVjdCBhaXJxX3N0cnVjdCBnaWJfYWxlcnRfaXJxID0ge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jLTM2ODAtXFxuYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jOjM2ODE6dm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0zNjgyLXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYy0zNjk1LVxcbmFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYzozNjk2OmludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYylcXG5hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmMtMzY5Ny17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jPTQ5Nj1zdGF0aWMgaW50IF9faW5pdCBfX2t2bV9zMzkwX2luaXQodm9pZClcXG4tLVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNTI4LVxcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmM6NTI5OlxcdHJjID0ga3ZtX3MzOTBfZ2liX2luaXQoR0FMX0lTQyk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYy01MzAtXFx0aWYgKHJjKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYz01NTA9c3RhdGljIHZvaWQgX19rdm1fczM5MF9leGl0KHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jLTU1NC1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jOjU1NTpcXHRrdm1fczM5MF9naWJfZGVzdHJveSgpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmMtNTU2LVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5oPTU2ND12b2lkIGt2bV9zMzkwX2dpc2FfZW5hYmxlKHN0cnVjdCBrdm0gKmt2bSk7XFxuYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuaDo1NjU6aW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKTtcXG5hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5oOjU2Njp2b2lkIGt2bV9zMzkwX2dpYl9kZXN0cm95KHZvaWQpO1xcbmFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmgtNTY3LXZvaWQga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjUyLjU2NTgzNTU0NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODIwOTM3ODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBLVk0gZm9yIHMzOTAgQXJjaGl0ZWN0dXJlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBjbG9zZSBsb29rIGF0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciBLVk0sIHNwZWNpZmljYWxseSBmb3IgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIG5hdmlnYXRlIHRvIHRoZSBgYXJjaC9zMzkwL2t2bS9gIGRpcmVjdG9yeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIuIEknbSB0aGlua2luZyB0aGUgYE1ha2VmaWxlYCBpbiB0aGVyZSB3aWxsIGdpdmUgbWUgdGhlIGxvd2Rvd24gb24gdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIHRoZSBLVk0gY29tcG9uZW50cyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUuIFRoYXQncyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBUaGVuLCBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGUgYEtjb25maWdgIGRlcGVuZGVuY2llcyB0byBzZWUgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQsIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBhbmQgaG93IGV2ZXJ5dGhpbmcgaXMgaW50ZXJjb25uZWN0ZWQgZnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUuIEkgd2FudCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIG9yIHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzMzkwIEtWTSBidWlsZCBwcm9jZXNzIGFuZCBhbnkgcmVsYXRlZCBpc3N1ZXMgb3IgbW9kaWZpY2F0aW9ucyBJIG1pZ2h0IHdhbnQgdG8gbWFrZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA2NjcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo1NS4zODY3Nzc2OTdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9zMzkwL2t2bS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCMgTWFrZWZpbGUgZm9yIGtlcm5lbCB2aXJ0dWFsIG1hY2hpbmVzIG9uIHMzOTBcXG4gICAzOlxcdCNcXG4gICA0OlxcdCMgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDA4XFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19LVk0pICs9IHMzOTAvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjU1LjM4Njg0MjI0N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODI2NTQ2NjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUzM5MCBLVk0gTWFrZWZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoZSBzMzkwIEtWTSBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgc3RydWN0dXJlZCBmb3IgdGhhdCBhcmNoaXRlY3R1cmUuIExldCdzIHN0YXJ0IHdpdGggdGhlIGBNYWtlZmlsZWAgbG9jYXRlZCBpbiBgYXJjaC9zMzkwL2t2bS9zMzkwL2AuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQg4oCTIHRoZSBidWlsZCBzY3JpcHRzIGFyZSBvZnRlbiB0aGUgYmVzdCBwbGFjZSB0byBnYWluIGEgaGlnaC1sZXZlbCBvdmVydmlldyBvZiBhIHByb2plY3QuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGNvbXBvbmVudHMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmxhZ3Mgb3Igc2V0dGluZ3MgYmVpbmcgdXNlZCBmb3IgdGhlIHMzOTAgS1ZNIGltcGxlbWVudGF0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiBob3cgdGhlIGNvcmUgS1ZNIG1vZHVsZXMgYXJlIGNvbXBpbGVkLCBhbnkgY3VzdG9tIG9iamVjdCBmaWxlcywgYW55IHNwZWNpZmljIGluY2x1ZGUgcGF0aHMsIGFuZCBhbnkgbGluayBmbGFncy4gSeKAmW0gYWxzbyBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHNwZWNpZmljIGZlYXR1cmVzIG9yIG9wdGltaXphdGlvbnMgZm9yIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBgTWFrZWZpbGVgIHNob3VsZCBwcm92aWRlIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCBmb3IgZGVlcGVyIGludmVzdGlnYXRpb24uIExldOKAmXMgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEwNTMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjAzOjU4LjIxMzM5Mjg1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvczM5MC9rdm0vczM5MC9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0S1ZNIDo9IC4uLy4uLy4uLy4uL3ZpcnQva3ZtXFxuICAgNDpcXHRpbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtXFxuICAgNTpcXHRpbmNsdWRlICQoc3JjdHJlZSkvYXJjaC9zMzkwL2t2bS9nbWFwL01ha2VmaWxlXFxuICAgNjpcXHRcXG4gICA3OlxcdGNjZmxhZ3MteSA6PSAtSSQoc3JjKSAtSSQoc3JjdHJlZSkvYXJjaC9zMzkwL2t2bS9nbWFwXFxuICAgODpcXHRcXG4gICA5OlxcdGt2bS15ICs9IHMzOTAubyBpbnRlcmNlcHQubyBpbnRlcnJ1cHQubyBwcml2Lm8gc2lncC5vXFxuICAxMDpcXHRrdm0teSArPSBkaWFnLm8gZ2FjY2Vzcy5vIGd1ZXN0ZGJnLm8gdnNpZS5vIHB2Lm9cXG4gIDExOlxcdGt2bS15ICs9ICQoZ21hcC15KVxcbiAgMTI6XFx0XFxuICAxMzpcXHRrdm0tJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICs9IHBjaS5vXFxuICAxNDpcXHRvYmotJChDT05GSUdfS1ZNKSArPSBrdm0ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowMzo1OC4yMTM0NzM4OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MDI3MDMxNTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEtWTSBDb25maWd1cmF0aW9uIGFuZCBSZWxldmFudCBTeW1ib2xzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgS1ZNLXJlbGF0ZWQgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBDT05GSUdfS1ZNYCBhcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoaXMgaXMgYWxsIHdpcmVkIHVwLCBzbyBJIHN0YXJ0ZWQgYnkgY2hlY2tpbmcgYGFyY2gvczM5MC9LY29uZmlnYCBhbmQgYHZpcnQva3ZtL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBJIG5lZWQgdG8gY29uc2lkZXIuXG5cbldpdGhpbiBgYXJjaC9zMzkwL2t2bS9LY29uZmlnYCwgSSBmb3VuZCB0aGUgYFZJUlRVQUxJWkFUSU9OYCBtZW51IGFuZCB0aGUgYEtWTWAgY29uZmlnLCB3aGljaCBkZXBlbmRzIG9uIGBWSVJUVUFMSVpBVElPTmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGVzZS4gSSdtIHRyeWluZyB0byBkZWNpZGUgaWYgSSBuZWVkIGJvdGggYFZJUlRVQUxJWkFUSU9OYCAqYW5kKiBgS1ZNYCwgb3IgaWYgZW5hYmxpbmcgYEtWTWAgaW1wbGljaXRseSBoYW5kbGVzIGBWSVJUVUFMSVpBVElPTmAsIG9yIHBlcmhhcHMgaWYgaXQncyB0aGUgb3RoZXIgd2F5IGFyb3VuZC4gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuXG5cbk5leHQsIEkgdHVybmVkIG15IGF0dGVudGlvbiB0byB0aGUga2V5IHN5bWJvbHMgaW52b2x2ZWQgaW4gdGhpcyBwYXRjaCB0byBzZWUgaG93IHRoZXkncmUgY29ubmVjdGVkLiBJIGlkZW50aWZpZWQgYSBmZXcga2V5IG9uZXM6IGBoYW5kbGVfc3RoeWlgICh3aGljaCBoYW5kbGVzIHRoZSBTVEhZSSBpbnN0cnVjdGlvbiBpbnRlcmNlcHQpLCBga3ZtX3MzOTBfaGFuZGxlX2IyYCAod2hpY2ggaGFuZGxlcyBCMiBpbnN0cnVjdGlvbiBpbnRlcmNlcHRzLCBpbmNsdWRpbmcgU1RTSSB0aHJvdWdoIGBoYW5kbGVfc3RzaWApLCBga3ZtX2FyY2hfaW5pdF92bWAgKHdoaWNoIGluaXRpYWxpemVzIHMzOTAgVk0gYXJjaGl0ZWN0dXJlIHN0cnVjdHVyZXMgaW5jbHVkaW5nIHNpZV9wYWdlMiksIGFuZCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCAod2hpY2ggc2V0cyB1cCBDTU1BIENCUi9DQlJMRSBzdHJ1Y3R1cmVzKS5cblxuSSBjaGVja2VkIHRoZSBzdGF0aWMvbm9uLXN0YXRpYyBuYXR1cmUgb2YgdGhlc2Ugc3ltYm9scyB0byBzZWUgaG93IHRoZXkgYXJlIGV4cG9zZWQsIGFuZCBpZiBhbnkgYXJlIGludGVybmFsIGRldGFpbHMgb25seS4gU3BlY2lmaWNhbGx5LCBJIG5vdGVkIHRoYXQgYGhhbmRsZV9zdHNpYCBpcyBzdGF0aWMsIGRlZmluZWQgaW4gYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgLCBidXQgaXQncyBjYWxsZWQgYnkgdGhlIG5vbi1zdGF0aWMgYGt2bV9zMzkwX2hhbmRsZV9iMmAuIFRoZSByZXN0IGFyZSBub24tc3RhdGljLlxuXG5GaW5hbGx5LCBJIHJldmlld2VkIHRoZSBwYXRjaCBkaWZmIGl0c2VsZiB0byBjb25maXJtIHRoZSBmaWxlcyBhbmQgc3ltYm9scyBpbnZvbHZlZC4gVGhlIHBhdGNoIHRvdWNoZXMgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY2AgKHdoZXJlIGBoYW5kbGVfc3RoeWlgIGxpdmVzKSwgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY2AgKHdpdGggYGt2bV9zMzkwX2dpYl9pbml0YCBhbmQgYGt2bV9zMzkwX2dpYl9kZXN0cm95YCksIGBhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jYCAod2hlcmUgYGhhbmRsZV9zdHNpYCBpcyBkZWZpbmVkIGFuZCBjYWxsZWQpLCBhbmQgYGFyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNgICh3aXRoIGBrdm1fYXJjaF9pbml0X3ZtYCwgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gLCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYCwgYW5kIGBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYWApLiBUaGlzIHNvbGlkaWZpZXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgbW9kdWxlcyBhbmQgZnVuY3Rpb25zLlxuXG5TbywgdG8gc3VtbWFyaXplLCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgYGhhbmRsZV9zdGh5aWAsIGBrdm1fczM5MF9oYW5kbGVfYjJgLCBga3ZtX2FyY2hfaW5pdF92bWAsIGFuZCBga3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hYC4gVGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBLVk1gIGFuZCBgVklSVFVBTElaQVRJT05gLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2MTIsIk91dHB1dFRva2VucyI6MTg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzU3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MDYuMjQwNTA4MTYzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg0NjM4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVklSVFVBTElaQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYW5kbGVfc3RoeWlcIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV9iMlwiLFxuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiLFxuICAgIFwia3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBwYWdlLWxldmVsIG1lbW9yeSBhbGxvY2F0aW9ucyAoZ2V0X3plcm9lZF9wYWdlL2ZyZWVfcGFnZSkgdG8gc2xhYiBhbGxvY2F0aW9ucyAoa3phbGxvYy9rZnJlZSkgaW4gS1ZNIG9uIHMzOTAgZm9yIGd1ZXN0IGludGVyY2VwdCBoYW5kbGluZyAoU1RIWUksIFNUU0kpLCBWTSBpbml0aWFsaXphdGlvbiAoc2llX3BhZ2UyKSwgR0lCIHNldHVwLCBhbmQgVkNQVSBDTU1BIHNldHVwLiBUaGVzZSBhZmZlY3QgcmVhY2hhYmxlIEtWTSBleGVjdXRpb24gcGF0aHMgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9uIHMzOTAsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVklSVFVBTElaQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYW5kbGVfc3RoeWlcIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV9iMlwiLFxuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiLFxuICAgIFwia3ZtX3MzOTBfdmNwdV9zZXR1cF9jbW1hXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBwYWdlLWxldmVsIG1lbW9yeSBhbGxvY2F0aW9ucyAoZ2V0X3plcm9lZF9wYWdlL2ZyZWVfcGFnZSkgdG8gc2xhYiBhbGxvY2F0aW9ucyAoa3phbGxvYy9rZnJlZSkgaW4gS1ZNIG9uIHMzOTAgZm9yIGd1ZXN0IGludGVyY2VwdCBoYW5kbGluZyAoU1RIWUksIFNUU0kpLCBWTSBpbml0aWFsaXphdGlvbiAoc2llX3BhZ2UyKSwgR0lCIHNldHVwLCBhbmQgVkNQVSBDTU1BIHNldHVwLiBUaGVzZSBhZmZlY3QgcmVhY2hhYmxlIEtWTSBleGVjdXRpb24gcGF0aHMgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9uIHMzOTAsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowNDowNi4zMTg5ODE0MTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzE5MDYwODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MDYuMzE5NTY0Mjk3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzA3MTg0NzQyNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnZlcnRzIHBhZ2UgYWxsb2NhdGlvbnMgdmlhIGdldF96ZXJvZWRfcGFnZSgpIGFuZCBmcmVlX3BhZ2UoKSB0byBzbGFiIGFsbG9jYXRpb25zIHZpYSBremFsbG9jKCkva3phbGxvY19vYmooKSBhbmQga2ZyZWUoKSBhY3Jvc3MgczM5MCBLVk0gY29kZSAoaW50ZXJjZXB0LmMsIGludGVycnVwdC5jLCBwcml2LmMsIHMzOTAuYykuIFxcblxcblNpbmNlIGt6YWxsb2Mva3phbGxvY19vYmogemVyby1pbml0aWFsaXplcyB0aGUgbWVtb3J5IGlkZW50aWNhbGx5IHRvIGdldF96ZXJvZWRfcGFnZSgpLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgY29uZGl0aW9uYWwgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBkYXRhLCBvciB1bmluaXRpYWxpemVkIGluZm8tbGVha3MgdG8gdXNlcnNwYWNlL2d1ZXN0IGFyZSBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIHNsYWItcmVsYXRlZCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoZS5nLiBvdXQtb2YtYm91bmRzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgZG91YmxlLWZyZWUpIGFyZSBtb25pdG9yZWQgYnkgc3RhbmRhcmQgS0FTQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDZkZmNlMDdjODlhZWI3ZDZjYmRlYzhjNWFiNWM4NWYyNjk5MzY2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTk6MDI6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmMgYi9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcbmluZGV4IGNhMTIwNWRmYWM4YjAuLmFhZjk4MjhkMWY0NGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJjZXB0LmNcbisrKyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY1xuQEAgLTExLDYgKzExLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9hc20tb2Zmc2V0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2lycS5oXHUwMDNlXG5AQCAtNDM4LDEzICs0MzksMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAoIWt2bV9zMzkwX3B2X2NwdV9pc19wcm90ZWN0ZWQodmNwdSkgXHUwMDI2XHUwMDI2IChhZGRyIFx1MDAyNiB+UEFHRV9NQVNLKSlcbiBcdFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9ncmFtX2ludCh2Y3B1LCBQR01fU1BFQ0lGSUNBVElPTik7XG4gXG4tXHRzY3RucyA9ICh2b2lkICopZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCk7XG4rXHRzY3RucyA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFzY3RucylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRjYyA9IHN0aHlpX2ZpbGwoc2N0bnMsIFx1MDAyNnJjKTtcbiBcdGlmIChjYyBcdTAwM2MgMCkge1xuLVx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0XHRrZnJlZShzY3Rucyk7XG4gXHRcdHJldHVybiBjYztcbiBcdH1cbiBvdXQ6XG5AQCAtNDU0LDEzICs0NTUsMTMgQEAgaW50IGhhbmRsZV9zdGh5aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0ciA9IHdyaXRlX2d1ZXN0KHZjcHUsIGFkZHIsIHJlZzIsIHNjdG5zLCBQQUdFX1NJWkUpO1xuIFx0XHRcdGlmIChyKSB7XG4tXHRcdFx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0XHRcdFx0a2ZyZWUoc2N0bnMpO1xuIFx0XHRcdFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcik7XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2N0bnMpO1xuK1x0a2ZyZWUoc2N0bnMpO1xuIFx0dmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbcmVnMiArIDFdID0gcmM7XG4gXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIGNjKTtcbiBcdHJldHVybiByO1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xuaW5kZXggMDM4MWFlOTgxNzAzNS4uMDIwNjVmYjhkMDUzZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vczM5MC9pbnRlcnJ1cHQuY1xuKysrIGIvYXJjaC9zMzkwL2t2bS9zMzkwL2ludGVycnVwdC5jXG5AQCAtMzY4OSw3ICszNjg5LDcgQEAgdm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKVxuIFx0fVxuIFx0Y2hzY19zZ2liKDApO1xuIFx0dW5yZWdpc3Rlcl9hZGFwdGVyX2ludGVycnVwdChcdTAwMjZnaWJfYWxlcnRfaXJxKTtcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpO1xuK1x0a2ZyZWUoZ2liKTtcbiBcdGdpYiA9IE5VTEw7XG4gfVxuIFxuQEAgLTM3MDMsNyArMzcwMyw3IEBAIGludCBfX2luaXQga3ZtX3MzOTBfZ2liX2luaXQodTggbmlzYylcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRnaWIgPSAoc3RydWN0IGt2bV9zMzkwX2dpYiAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcbitcdGdpYiA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcbiBcdGlmICghZ2liKSB7XG4gXHRcdHJjID0gLUVOT01FTTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtMzcyMiw3ICszNzIyLDcgQEAgaW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxuIFx0Z2liX29yaWdpbiA9IHZpcnRfdG9fcGh5cyhnaWIpO1xuIFx0aWYgKGNoc2Nfc2dpYihnaWJfb3JpZ2luKSkge1xuIFx0XHRwcl9lcnIoXCJBc3NvY2lhdGluZyB0aGUgR0lCIHdpdGggdGhlIEFJViBmYWNpbGl0eSBmYWlsZWRcXG5cIik7XG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylnaWIpO1xuK1x0XHRrZnJlZShnaWIpO1xuIFx0XHRnaWIgPSBOVUxMO1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gb3V0X3VucmVnX2dhbDtcbkBAIC0zNzQyLDcgKzM3NDIsNyBAQCBpbnQgX19pbml0IGt2bV9zMzkwX2dpYl9pbml0KHU4IG5pc2MpXG4gb3V0X3VucmVnX2dhbDpcbiBcdHVucmVnaXN0ZXJfYWRhcHRlcl9pbnRlcnJ1cHQoXHUwMDI2Z2liX2FsZXJ0X2lycSk7XG4gb3V0X2ZyZWVfZ2liOlxuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWdpYik7XG4rXHRrZnJlZShnaWIpO1xuIFx0Z2liID0gTlVMTDtcbiBvdXQ6XG4gXHRyZXR1cm4gcmM7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9wcml2LmNcbmluZGV4IGIzY2IyYzJjM2FhNzEuLjg1NjkzOWFjZjAxMmYgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jXG5AQCAtMTQsNiArMTQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tX3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZ3RhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2FzbS1vZmZzZXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vZmFjaWxpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jdXJyZW50LmhcdTAwM2VcbkBAIC04NjksNyArODcwLDcgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpbnQgZmMgPSAodmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMF0gXHUwMDI2IDB4ZjAwMDAwMDApIFx1MDAzZVx1MDAzZSAyODtcbiBcdGludCBzZWwxID0gdmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMF0gXHUwMDI2IDB4ZmY7XG4gXHRpbnQgc2VsMiA9IHZjcHUtXHUwMDNlcnVuLVx1MDAzZXMucmVncy5ncHJzWzFdIFx1MDAyNiAweGZmZmY7XG4tXHR1bnNpZ25lZCBsb25nIG1lbSA9IDA7XG4rXHR2b2lkICptZW0gPSBOVUxMO1xuIFx0dTY0IG9wZXJhbmQyO1xuIFx0aW50IHJjID0gMDtcbiBcdHU4IGFyO1xuQEAgLTkxMSwxOSArOTEyLDE5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0c3dpdGNoIChmYykge1xuIFx0Y2FzZSAxOiAvKiBzYW1lIGhhbmRsaW5nIGZvciAxIGFuZCAyICovXG4gXHRjYXNlIDI6XG4tXHRcdG1lbSA9IGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpO1xuK1x0XHRtZW0gPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFx0aWYgKCFtZW0pXG4gXHRcdFx0Z290byBvdXRfbm9fZGF0YTtcbi1cdFx0aWYgKHN0c2koKHZvaWQgKikgbWVtLCBmYywgc2VsMSwgc2VsMikpXG4rXHRcdGlmIChzdHNpKG1lbSwgZmMsIHNlbDEsIHNlbDIpKVxuIFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAzOlxuIFx0XHRpZiAoc2VsMSAhPSAyIHx8IHNlbDIgIT0gMilcbiBcdFx0XHRnb3RvIG91dF9ub19kYXRhO1xuLVx0XHRtZW0gPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbitcdFx0bWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbWVtKVxuIFx0XHRcdGdvdG8gb3V0X25vX2RhdGE7XG4tXHRcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsICh2b2lkICopIG1lbSk7XG4rXHRcdGhhbmRsZV9zdHNpXzNfMl8yKHZjcHUsIG1lbSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAxNTogLyogZmMgMTUgaXMgZnVsbHkgaGFuZGxlZCBpbiB1c2Vyc3BhY2UgKi9cbiBcdFx0aW5zZXJ0X3N0c2lfdXNyX2RhdGEodmNwdSwgb3BlcmFuZDIsIGFyLCBmYywgc2VsMSwgc2VsMik7XG5AQCAtOTMxLDEwICs5MzIsMTAgQEAgc3RhdGljIGludCBoYW5kbGVfc3RzaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHJldHVybiAtRVJFTU9URTtcbiBcdH1cbiBcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4tXHRcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jayksICh2b2lkICopbWVtLCBQQUdFX1NJWkUpO1xuK1x0XHRtZW1jcHkoc2lkYV9hZGRyKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2spLCBtZW0sIFBBR0VfU0laRSk7XG4gXHRcdHJjID0gMDtcbiBcdH0gZWxzZSB7XG4tXHRcdHJjID0gd3JpdGVfZ3Vlc3QodmNwdSwgb3BlcmFuZDIsIGFyLCAodm9pZCAqKW1lbSwgUEFHRV9TSVpFKTtcbitcdFx0cmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTtcbiBcdH1cbiBcdGlmIChyYykge1xuIFx0XHRyYyA9IGt2bV9zMzkwX2luamVjdF9wcm9nX2NvbmQodmNwdSwgcmMpO1xuQEAgLTk0NSwxNCArOTQ2LDE0IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3N0c2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRyYyA9IC1FUkVNT1RFO1xuIFx0fVxuIFx0dHJhY2Vfa3ZtX3MzOTBfaGFuZGxlX3N0c2kodmNwdSwgZmMsIHNlbDEsIHNlbDIsIG9wZXJhbmQyKTtcbi1cdGZyZWVfcGFnZShtZW0pO1xuK1x0a2ZyZWUobWVtKTtcbiBcdGt2bV9zMzkwX3NldF9wc3dfY2ModmNwdSwgMCk7XG4gXHR2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VzLnJlZ3MuZ3Byc1swXSA9IDA7XG4gXHRyZXR1cm4gcmM7XG4gb3V0X25vX2RhdGE6XG4gXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDMpO1xuIG91dDpcbi1cdGZyZWVfcGFnZShtZW0pO1xuK1x0a2ZyZWUobWVtKTtcbiBcdHJldHVybiByYztcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuYyBiL2FyY2gvczM5MC9rdm0vczM5MC9zMzkwLmNcbmluZGV4IGIwODM5ZTg4NzIyMWUuLjhlYzUwNTA2MGY4YzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jXG5AQCAtMzI3Myw4ICszMjczLDggQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcbiBcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHNpZV9wYWdlMikgIT0gNDA5Nik7XG4tXHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIgPVxuLVx0ICAgICAoc3RydWN0IHNpZV9wYWdlMiAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgR0ZQX0RNQSk7XG4rXHRrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIgPSBremFsbG9jX29iaigqa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyLFxuK1x0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCB8IEdGUF9ETUEpO1xuIFx0aWYgKCFrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcbkBAIC0zMzY5LDcgKzMzNjksNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcbiBcdHJldHVybiAwO1xuIG91dF9lcnI6XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyKTtcbitcdGtmcmVlKGt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMik7XG4gXHRkZWJ1Z191bnJlZ2lzdGVyKGt2bS1cdTAwM2VhcmNoLmRiZik7XG4gXHRzY2FfZGlzcG9zZShrdm0pO1xuIFx0S1ZNX0VWRU5UKDMsIFwiY3JlYXRpb24gb2Ygdm0gZmFpbGVkOiAlZFwiLCByYyk7XG5AQCAtMzQyNyw3ICszNDI3LDcgQEAgdm9pZCBrdm1fYXJjaF9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiBcdFx0bW11X25vdGlmaWVyX3VucmVnaXN0ZXIoXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHYubW11X25vdGlmaWVyLCBrdm0tXHUwMDNlbW0pO1xuIFxuIFx0ZGVidWdfdW5yZWdpc3Rlcihrdm0tXHUwMDNlYXJjaC5kYmYpO1xuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWt2bS1cdTAwM2VhcmNoLnNpZV9wYWdlMik7XG4rXHRrZnJlZShrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xuIFx0a3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhrdm0pO1xuIFx0a3ZtX3MzOTBfY2xlYXJfZmxvYXRfaXJxcyhrdm0pO1xuIFx0a3ZtX3MzOTBfdnNpZV9kZXN0cm95KGt2bSk7XG5AQCAtMzY1NywxMyArMzY1NywxMyBAQCBzdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gdm9pZCBrdm1fczM5MF92Y3B1X3Vuc2V0dXBfY21tYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY2JybG8pXG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylwaHlzX3RvX3ZpcnQodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbykpO1xuK1x0XHRrZnJlZShwaHlzX3RvX3ZpcnQodmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbykpO1xuIFx0dmNwdS1cdTAwM2VhcmNoLnNpZV9ibG9jay1cdTAwM2VjYnJsbyA9IDA7XG4gfVxuIFxuIGludCBrdm1fczM5MF92Y3B1X3NldHVwX2NtbWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHZvaWQgKmNicmxvX3BhZ2UgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMX0FDQ09VTlQpO1xuK1x0dm9pZCAqY2JybG9fcGFnZSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFxuIFx0aWYgKCFjYnJsb19wYWdlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjA0OjA2LjMxOTU2ODIxN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDg3OTU1MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IFJpc2tzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiBpdCBpbnRyb2R1Y2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb25jZXJucyB0aGF0IHdvdWxkIHdhcnJhbnQgYSBLTVNBTiBzZXNzaW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGRpZmYsIHdoaWNoIHRvdWNoZXMgYGFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY2AsIGBhcmNoL3MzOTAva3ZtL3MzOTAvaW50ZXJydXB0LmNgLCBgYXJjaC9zMzkwL2t2bS9zMzkwL3ByaXYuY2AsIGFuZCBgYXJjaC9zMzkwL2t2bS9zMzkwL3MzOTAuY2AuXG5cblJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgcGF0dGVybjogaXQncyByZXBsYWNpbmcgYGdldF96ZXJvZWRfcGFnZSgpYCBhbmQgYGZyZWVfcGFnZSgpYCB3aXRoIGBremFsbG9jKClgIGFuZCBga2ZyZWUoKWAsIG9yIGBremFsbG9jX29iamAgYW5kIGBrZnJlZSgpYCBpbiB0aGUgY2FzZSBvZiBgc2llX3BhZ2UyYC4gVGhlIGNyaXRpY2FsIHRoaW5nIGlzIHRoYXQgd2UncmUgKnN0aWxsKiB6ZXJvLWluaXRpYWxpemluZyB0aGUgbWVtb3J5IOKAkyB0aGUgY2hhbmdlIGlzIHVzaW5nIGBremFsbG9jYCBpbnN0ZWFkIG9mIGBnZXRfemVyb2VkX3BhZ2VgLCB3aGljaCBpcyBlc3NlbnRpYWxseSBhIHNhZmUgb3BlcmF0aW9uLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgYXJlIHRoZXJlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyAqaW50cm9kdWNlZCogYnkgdGhlc2UgY2hhbmdlcz8gTm8sIGJlY2F1c2UgYWxsIHRoZSBhbGxvY2F0aW9ucyBhcmUgc3RpbGwgemVyby1pbml0aWFsaXplZC4gSSd2ZSBnb3QgdG8gY2hlY2sgd2hldGhlciBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgcmVhZCwgY29waWVkIHRvIHVzZXJzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sIGZsb3csIGJ1dCwgdGhlcmUgaXMgbm8gc3VjaCB0aGluZy4gQXJlIHRoZXJlIHVuaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcywgb3IgbGVha3Mgb2YgaW5mb3JtYXRpb24/IEFnYWluLCBpdCBkb2Vzbid0IHNlZW0gbGlrZSBpdC5cblxuSXQncyBhY3R1YWxseSBhIGdvb2QgdGhpbmcgaW4gdGhhdCBLTVNBTiB3aWxsIHByb2JhYmx5IGNhdGNoIG91dC1vZi1ib3VuZHMvdXNlLWFmdGVyLWZyZWUgd2l0aCBzbGFiIGFsbG9jYXRpb25zLCB3aGVyZWFzIHBhZ2UgYWxsb2NhdGlvbnMgaGFkIHBhZ2UtbGV2ZWwgdHJhY2tpbmcuIEJlY2F1c2Ugd2UncmUgdXNpbmcgemVyby1hbGxvY2F0b3JzIChga3phbGxvY2ApLCBldmVyeXRoaW5nIHJlbWFpbnMgZnVsbHkgaW5pdGlhbGl6ZWQuXG5cbkxldCBtZSBqdXN0IGRvIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBhbmQgZG91YmxlLWNoZWNrIGBremFsbG9jX29iaigqa3ZtLVx1MDAzZWFyY2guc2llX3BhZ2UyLCAuLi4pYC4gSSdsbCBydW4gYSBxdWljayBzZWFyY2ggZm9yIGBremFsbG9jX29iamAgYW5kIGBzdHJ1Y3Qgc2llX3BhZ2UyYCBqdXN0IHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCBiZSBleHRyYSBjZXJ0YWluLiBPdmVyYWxsLCBpdCBhcHBlYXJzIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgYW5kIHNhZmUgb3B0aW1pemF0aW9uLCByZXBsYWNpbmcgdGhlIG9sZGVyIGFsbG9jYXRpb24gZnVuY3Rpb25zIHdpdGggdGhlIG5ld2VyIG9uZXMsIHdoaWNoIG1haW50YWluIHRoZSBkZXNpcmVkIHplcm8taW5pdGlhbGl6YXRpb24gYmVoYXZpb3IuIE5vIEtNU0FOIHNlc3Npb24gbmVjZXNzYXJ5IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowNDoxMi44MDc1Mjg2NzdaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzk5OTAxMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3phbGxvY19vYmpcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3OTM3OCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdD0xMDM9bGlzdDpcXG4tLVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTE0LVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q6MTE1OiAgICAgICAgICBncm9jayA9IGt6YWxsb2Nfb2JqKCpncm9jayk7XFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTYtICAgICAgICAgIGlmICghZ3JvY2spXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTEyNS1cXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0OjEyNjogICAgICAgICAgZGltaXRyaSA9IGt6YWxsb2Nfb2JqKCpkaW1pdHJpKTtcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTEyNy0gICAgICAgICAgaWYgKCFkaW1pdHJpKVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0PTQ1PWEgbWVzc2FnZSBhbmQgYSBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgQVBJIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkpLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0LTg5LVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MDpcXHRcXHRkY19zeW5jID0ga3phbGxvY19vYmooKmRjX3N5bmMpO1xcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MTpcXHRcXHRkY19hc3luYyA9IGt6YWxsb2Nfb2JqKCpkY19hc3luYyk7XFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0LTkyLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0PTI2PUV4YW1wbGU6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3QtNDQtXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0OjQ1OlxcdFxcdG15X2ZoID0ga3phbGxvY19vYmooKm15X2ZoKTtcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3QtNDYtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdD05Mzg9VGhlIGtlcm5lbCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGdlbmVyYWwgcHVycG9zZSBtZW1vcnkgYWxsb2NhdG9yczpcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdDo5Mzk6a21hbGxvYygpLCBremFsbG9jKCksIGttYWxsb2Nfb2JqcygpLCBremFsbG9jX29ianMoKSwgdm1hbGxvYygpLCBhbmRcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NDAtdnphbGxvYygpLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgZnVydGhlciBpbmZvcm1hdGlvblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q9OTY0PVRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgYWxsb2NhdGluZyBhIHplcm9lZCBhcnJheSBpcyB0aGUgZm9sbG93aW5nOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3QtOTY3LVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0Ojk2ODpcXHRwID0ga3phbGxvY19vYmpzKCpwLCBuLCAuLi4pO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk2OS1cXG4tLVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdD0zOTg9YmVjb21lLCByZXNwZWN0aXZlbHk6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwMC1cXHRwdHIgPSBrbWFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDAxOlxcdHB0ciA9IGt6YWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDItXFx0cHRyID0ga21hbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDAzOlxcdHB0ciA9IGt6YWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwNC1cXHRwdHIgPSBrbWFsbG9jX2ZsZXgoKnB0ciwgZmxleF9tZW1iZXIsIGNvdW50IFssIGdmcF0gKTtcXG4tLVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdD0yMDg9dG8gZGV0YWlscyBleHBsYWluZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTI2OC0gICAgICAgICAgICAgIC8qIGFsbG9jYXRlIGEgY2hpcC1zcGVjaWZpYyBkYXRhIHdpdGggemVybyBmaWxsZWQgKi9cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6MjY5OiAgICAgICAgICAgICAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMjcwLSAgICAgICAgICAgICAgaWYgKGNoaXAgPT0gTlVMTClcXG4tLVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdD02MjM9QWZ0ZXIgYWxsb2NhdGluZyBhIGNhcmQgaW5zdGFuY2UgdmlhIDpjOmZ1bmM6YHNuZF9jYXJkX25ldygpYFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTYzMC0gIC4uLi4uXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjYzMTogIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTYzMi1cXG4tLVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdD02OTg9ZGVzdHJ1Y3RvciBhbmQgUENJIGVudHJpZXMuIEV4YW1wbGUgY29kZSBpcyBzaG93biBmaXJzdCwgYmVsb3c6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTc0OS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6NzUwOiAgICAgICAgICAgICAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNzUxLSAgICAgICAgICAgICAgaWYgKGNoaXAgPT0gTlVMTCkge1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTM4MjM9Y2hpcCBkYXRhIGluZGl2aWR1YWxseTo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMzgzNS0gICAgICAgICAgLi4uLlxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDozODM2OiAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0zODM3LSAgICAgICAgICAuLi4uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q9OTQwPUlsIGtlcm5lbCBmb3JuaXNjZSBpIHNlZ3VlbnRpIGFzc2VnbmF0b3JpIGFkIHVzbyBnZW5lcmljbzpcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTQxOmttYWxsb2MoKSwga3phbGxvYygpLCBrbWFsbG9jX29ianMoKSwga3phbGxvY19vYmpzKCksIHZtYWxsb2MoKSwgZSB2emFsbG9jKCkuXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk0Mi1QZXIgbWFnZ2lvcmkgaW5mb3JtYXppb25pLCBjb25zdWx0YXRlIGxhIGRvY3VtZW50YXppb25lIGRlbGwnQVBJOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTk2NT1JbCBtb2RvIHByZWZlcml0byBwZXIgYXNzZWduYXJlIHVuIHZldHRvcmUgYSB6ZXJvIMOoIGlsIHNlZ3VlbnRlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk2OC1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTY5OlxcdHAgPSBremFsbG9jX29ianMoKnAsIG4sIC4uLik7XFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk3MC1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q9NDQxPWRpdmVudGFubywgcmlzcGV0dGl2YW1lbnRlOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDQzLVxcdHB0ciA9IGttYWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDQ0OlxcdHB0ciA9IGt6YWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2l0X0lUL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDQ1LVxcdHB0ciA9IGttYWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvaXRfSVQvcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0NDY6XFx0cHRyID0ga3phbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9pdF9JVC9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQ0Ny1cXHRwdHIgPSBrbWFsbG9jX2ZsZXgoKnB0ciwgZmxleF9tZW1iZXIsIGNvdW50IFssIGdmcF0gKTtcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q9NDEwPXRvcm5hbS1zZSwgcmVzcGVjdGl2YW1lbnRlOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDEyLSAgICAgICAgcHRyID0ga21hbGxvY19vYmooKnB0ciBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvcHRfQlIvcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MTM6ICAgICAgICBwdHIgPSBremFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9wdF9CUi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQxNC0gICAgICAgIHB0ciA9IGttYWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvcHRfQlIvcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MTU6ICAgICAgICBwdHIgPSBremFsbG9jX29ianMoKnB0ciwgY291bnQgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3B0X0JSL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDE2LSAgICAgICAgcHRyID0ga21hbGxvY19mbGV4KCpwdHIsIGZsZXhfbWVtYmVyLCBjb3VudCBbLCBnZnBdICk7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQ9Nzk0PWludCBteV9vcGVuKHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0LTgwMS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQ6ODAyOlxcdG15X2ZoID0ga3phbGxvY19vYmooKm15X2ZoKTtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAzLVxcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM9NjQ9bW9kdWxlX2Zyb2JfYXJjaF9zZWN0aW9ucyhFbGY2NF9FaGRyICpoZHIsIEVsZjY0X1NoZHIgKnNlY2hkcnMsXFxuLS1cXG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYy05NS1cXHRuc3ltcyA9IHN5bXRhYi1cXHUwMDNlc2hfc2l6ZSAvIHNpemVvZihFbGY2NF9TeW0pO1xcbmFyY2gvYWxwaGEva2VybmVsL21vZHVsZS5jOjk2OlxcdGNoYWlucyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgZ290X2VudHJ5LCBuc3ltcyk7XFxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmMtOTctXFx0aWYgKCFjaGFpbnMpIHtcXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmM9MzkwPXJlZ2lzdGVyX2NwdXModm9pZClcXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk0LVxcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShpKSB7XFxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYzozOTU6XFx0XFx0c3RydWN0IGNwdSAqcCA9IGt6YWxsb2Nfb2JqKCpwKTtcXG5hcmNoL2FscGhhL2tlcm5lbC9zZXR1cC5jLTM5Ni1cXHRcXHRpZiAoIXApXFxuLS1cXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM9MTEyMD1zdGF0aWMgaW50IGppdF9wcmVwYXJlX2ZpbmFsX21lbV9hbGxvYyhzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4tLVxcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYy0xMTMxLVxcdGlmIChjdHgtXFx1MDAzZW5lZWRfZXh0cmFfcGFzcykge1xcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYzoxMTMyOlxcdFxcdGN0eC1cXHUwMDNlaml0X2RhdGEgPSBremFsbG9jX29iaigqY3R4LVxcdTAwM2VqaXRfZGF0YSk7XFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTExMzMtXFx0XFx0aWYgKCFjdHgtXFx1MDAzZWppdF9kYXRhKVxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTIyMD1sb2NvbW9faW5pdF9vbmVfY2hpbGQoc3RydWN0IGxvY29tbyAqbGNoaXAsIHN0cnVjdCBsb2NvbW9fZGV2X2luZm8gKmluZm8pXFxuLS1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMjI0LVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzoyMjU6XFx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGxvY29tb19kZXYpO1xcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYy0yMjYtXFx0aWYgKCFkZXYpIHtcXG4tLVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYz0zNTY9X19sb2NvbW9fcHJvYmUoc3RydWN0IGRldmljZSAqbWUsIHN0cnVjdCByZXNvdXJjZSAqbWVtLCBpbnQgaXJxKVxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTM2Mi1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM6MzYzOlxcdGxjaGlwID0ga3phbGxvY19vYmooc3RydWN0IGxvY29tbyk7XFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTM2NC1cXHRpZiAoIWxjaGlwKVxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jPTczMz1zYTExMTFfaW5pdF9vbmVfY2hpbGQoc3RydWN0IHNhMTExMSAqc2FjaGlwLCBzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCxcXG4tLVxcbmFyY2gvYXJtL2NvbW1vbi9zYTExMTEuYy03MzktXFxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jOjc0MDpcXHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3Qgc2ExMTExX2Rldik7XFxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jLTc0MS1cXHRpZiAoIWRldikge1xcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmM9MTc4PXN0YXRpYyBpbnQgc2Nvb3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jLTE4Ny1cXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYzoxODg6XFx0ZGV2cHRyID0ga3phbGxvY19vYmooc3RydWN0IHNjb29wX2Rldik7XFxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmMtMTg5LVxcdGlmICghZGV2cHRyKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3NtcC5jPTEwOD1zdGF0aWMgaW50IHNlY29uZGFyeV9iaWdsaXR0bGVfcHJlcGFyZSh1bnNpZ25lZCBpbnQgY3B1KVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3NtcC5jLTExMC1cXHRpZiAoIWNwdV92dGFibGVbY3B1XSlcXG5hcmNoL2FybS9rZXJuZWwvc21wLmM6MTExOlxcdFxcdGNwdV92dGFibGVbY3B1XSA9IGt6YWxsb2Nfb2JqKCpjcHVfdnRhYmxlW2NwdV0pO1xcbmFyY2gvYXJtL2tlcm5lbC9zbXAuYy0xMTItXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jPTE2OT1zdGF0aWMgaW50IF9faW5pdCB2ZHNvX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmMtMTgxLVxcdC8qIEFsbG9jYXRlIHRoZSBWRFNPIHRleHQgcGFnZWxpc3QgKi9cXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jOjE4MjpcXHR2ZHNvX3RleHRfcGFnZWxpc3QgPSBremFsbG9jX29ianMoc3RydWN0IHBhZ2UgKiwgdGV4dF9wYWdlcyk7XFxuYXJjaC9hcm0va2VybmVsL3Zkc28uYy0xODMtXFx0aWYgKHZkc29fdGV4dF9wYWdlbGlzdCA9PSBOVUxMKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYz0yNjE9aW50IF9faW5pdCBkYzIxMjg1X3NldHVwKGludCBuciwgc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYy0yNjQtXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYzoyNjU6XFx0cmVzID0ga3phbGxvY19vYmpzKHN0cnVjdCByZXNvdXJjZSwgMik7XFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYy0yNjYtXFx0aWYgKCFyZXMpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmM9Njk9c3RhdGljIGludCBfX2luaXQgZWJzYTI4NV9sZWRzX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODYtXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYzo4NzpcXHRcXHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jLTg4LVxcdFxcdGlmICghbGVkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL25ldHdpbmRlci1ody5jPTcyMD1zdGF0aWMgaW50IF9faW5pdCBuZXR3aW5kZXJfbGVkc19pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmMtNzI5LVxcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYzo3MzA6XFx0XFx0bGVkID0ga3phbGxvY19vYmooKmxlZCk7XFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL25ldHdpbmRlci1ody5jLTczMS1cXHRcXHRpZiAoIWxlZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYz00NzM9c3RhdGljIGludCBpbXhfbW1kY19wZXJmX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdm9pZCBfX2lvbWVtICptbWRjX2Jhc2UsXFxuLS1cXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmMtNDc5LVxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYzo0ODA6XFx0cG11X21tZGMgPSBremFsbG9jX29iaigqcG11X21tZGMpO1xcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy00ODEtXFx0aWYgKCFwbXVfbW1kYykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jPTExND1zdGF0aWMgdm9pZCBfX2luaXQgaTJjX3F1aXJrKHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmMtMTI5LVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYzoxMzA6XFx0XFx0bmV3X2NvbXBhdCA9IGt6YWxsb2Nfb2JqKCpuZXdfY29tcGF0KTtcXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmMtMTMxLVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYz0xNjM9c3RhdGljIHZvaWQgX19pbml0IGFybWFkYV8zNzVfMzgwX2NvaGVyZW5jeV9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jLTE4Ny1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jOjE4ODpcXHRcXHRwID0ga3phbGxvY19vYmooKnApO1xcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmMtMTg5LVxcdFxcdHAtXFx1MDAzZW5hbWUgPSBrc3RyZHVwKFxcXCJhcm0saW8tY29oZXJlbnRcXFwiLCBHRlBfS0VSTkVMKTtcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmM9MTQ4PXN0YXRpYyBpbnQgX19pbml0IG12ZWJ1X3NvY19kZXZpY2Uodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmMtMTU2LVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmM6MTU3OlxcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xcbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmMtMTU4LVxcdGlmICghc29jX2Rldl9hdHRyKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz0zODA9c3RhdGljIHZvaWQgX19pbml0IG14c19tYWNoaW5lX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzg5LVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MzkwOlxcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzkxLVxcdGlmICghc29jX2Rldl9hdHRyKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYz0yOTQ9c3RhdGljIGludCBfX2luaXQgb21hcDFfc3lzdGVtX2RtYV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jLTMyMS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jOjMyMjpcXHRkID0ga3phbGxvY19vYmooKmQpO1xcbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmMtMzIzLVxcdGlmICghZCkge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jPTI5Mj1zdGF0aWMgdm9pZCBvbWFwX21jYnNwX3JlZ2lzdGVyX2JvYXJkX2NmZyhzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgaW50IHJlc19jb3VudCxcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTYtXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jOjI5NzpcXHRvbWFwX21jYnNwX2RldmljZXMgPSBremFsbG9jX29ianMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqLCBzaXplKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmMtMjk4LVxcdGlmICghb21hcF9tY2JzcF9kZXZpY2VzKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmM9NTE9c3RhdGljIGludCBfX2luaXQgb21hcDFfZG1fdGltZXJfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS90aW1lci5jLTEyNy1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmM6MTI4OlxcdFxcdHBkYXRhID0ga3phbGxvY19vYmooKnBkYXRhKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmMtMTI5LVxcdFxcdGlmICghcGRhdGEpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jPTIzMD12b2lkIG9tYXAyeHh4X2Nsa3RfdnBzX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jLTIzOS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2Nsa3QyeHh4X3ZpcnRfcHJjbV9zZXQuYzoyNDA6XFx0aHcgPSBremFsbG9jX29iaigqaHcpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jLTI0MS1cXHRpZiAoIWh3KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jPTc4Nj12b2lkIF9faW5pdCBvbWFwX3NvY19kZXZpY2VfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jLTc5MC1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM6NzkxOlxcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYy03OTItXFx0aWYgKCFzb2NfZGV2X2F0dHIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM9MTMxPXN0YXRpYyBpbnQgb21hcF9kZXZpY2VfYnVpbGRfZnJvbV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jLTE1OC1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM6MTU5OlxcdGh3bW9kcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qgb21hcF9od21vZCAqLCBvaF9jbnQpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYy0xNjAtXFx0aWYgKCFod21vZHMpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jPTMzODk9c3RhdGljIGludCBvbWFwX2h3bW9kX2FsbG9jYXRlX21vZHVsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvbWFwX2h3bW9kICpvaCxcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM0MDItXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzQwMzpcXHRzeXNjID0ga3phbGxvY19vYmooKnN5c2MpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM0MDQtXFx0aWYgKCFzeXNjKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQzMi1cXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2b2gtXFx1MDAzZXNsYXZlX3BvcnRzKSkge1xcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jOjM0MzM6XFx0XFx0b2kgPSBremFsbG9jX29iaigqb2kpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM0MzQtXFx0XFx0aWYgKCFvaSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jPTM1MjE9aW50IG9tYXBfaHdtb2RfaW5pdF9tb2R1bGUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzUzNS1cXHRpZiAoIW9oKSB7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzUzNjpcXHRcXHRvaCA9IGt6YWxsb2Nfb2JqKCpvaCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzUzNy1cXHRcXHRpZiAoIW9oKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzU0Ni1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTQ3OlxcdFxcdG9oLVxcdTAwM2VjbGFzcyA9IGt6YWxsb2Nfb2JqKCpvaC1cXHUwMDNlY2xhc3MpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM1NDgtXFx0XFx0aWYgKCFvaC1cXHUwMDNlY2xhc3MpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYz0zNzk9c3RhdGljIGludCBfX2luaXQgYW14M19pZGxlX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpjcHVfbm9kZSwgaW50IGNwdSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYy00MTItXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jOjQxMzpcXHRpZGxlX3N0YXRlcyA9IGt6YWxsb2Nfb2JqcygqaWRsZV9zdGF0ZXMsIHN0YXRlX2NvdW50KTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmMtNDE0LVxcdGlmICghaWRsZV9zdGF0ZXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jPTMwPXN0YXRpYyB2b2lkIF9faW5pdCBzcl9zZXRfbnZhbHVlcyhzdHJ1Y3Qgb21hcF92b2x0X2RhdGEgKnZvbHRfZGF0YSxcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvc3JfZGV2aWNlLmMtNDEtXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYzo0MjpcXHRudmFsdWVfdGFibGUgPSBremFsbG9jX29ianMoKm52YWx1ZV90YWJsZSwgY291bnQpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvc3JfZGV2aWNlLmMtNDMtXFx0aWYgKCFudmFsdWVfdGFibGUpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM9MTM5PXN0YXRpYyBpbnQgX19pbml0IHBjaWVfc2V0dXAoc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTE3MS1cXHQgKi9cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM6MTcyOlxcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTE3My1cXHRpZiAoIXJlcylcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYz00NjY9c3RhdGljIGludCBfX2luaXQgcGNpX3NldHVwKHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cylcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYy00OTItXFx0ICovXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jOjQ5MzpcXHRyZXMgPSBremFsbG9jX29iaihzdHJ1Y3QgcmVzb3VyY2UpO1xcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYy00OTQtXFx0aWYgKCFyZXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXJwYy9lY2FyZC5jPTY4OT1zdGF0aWMgc3RydWN0IGV4cGFuc2lvbl9jYXJkICpfX2luaXQgZWNhcmRfYWxsb2NfY2FyZChpbnQgdHlwZSwgaW50IHNsb3QpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXJwYy9lY2FyZC5jLTY5NC1cXG5hcmNoL2FybS9tYWNoLXJwYy9lY2FyZC5jOjY5NTpcXHRlYyA9IGt6YWxsb2Nfb2JqKGVjYXJkX3QpO1xcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk2LVxcdGlmICghZWMpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmM9OTM9aW50IF9faW5pdCBzYTExeHhfY2xrX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTA5LVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmM6MTEwOlxcdGh3ID0ga3phbGxvY19vYmooKmh3KTtcXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTExMS1cXHRpZiAoIWh3KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMzEtXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMzI6XFx0aHcgPSBremFsbG9jX29iaigqaHcpO1xcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTMzLVxcdGlmICghaHcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmM9MzE3PWludCBfX2luaXQgc2ExMXgwX3JlZ2lzdGVyX2ZpeGVkX3JlZ3VsYXRvcihpbnQgbixcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYy0zMjMtXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jOjMyNDpcXHRjZmctXFx1MDAzZWluaXRfZGF0YSA9IGlkID0ga3phbGxvY19vYmooKmNmZy1cXHUwMDNlaW5pdF9kYXRhKTtcXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmMtMzI1LVxcdGlmICghY2ZnLVxcdTAwM2Vpbml0X2RhdGEpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jPTIyNT1zdGF0aWMgaW50IG5lcG9uc2V0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldilcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmMtMjc4LVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmM6Mjc5OlxcdGQgPSBremFsbG9jX29iaigqZCk7XFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yODAtXFx0aWYgKCFkKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYz0xNDE9c3RhdGljIGludCBfX2luaXQgcmNhcl9nZW4yX3JlZ3VsYXRvcl9xdWlyayh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmMtMTY2LVxcbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jOjE2NzpcXHRcXHRxdWlyayA9IGt6YWxsb2Nfb2JqKCpxdWlyayk7XFxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmMtMTY4LVxcdFxcdGlmICghcXVpcmspIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jPTM5Mz1zdGF0aWMgaW50IHZlX3NwY19wb3B1bGF0ZV9vcHBzKHVpbnQzMl90IGNsdXN0ZXIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy0zOTctXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM6Mzk4OlxcdG9wcHMgPSBremFsbG9jX29ianMoKm9wcHMsIE1BWF9PUFBTKTtcXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy0zOTktXFx0aWYgKCFvcHBzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9NDQyPWludCBfX2luaXQgdmVfc3BjX2luaXQodm9pZCBfX2lvbWVtICpiYXNlYWRkciwgdTMyIGExNV9jbHVzaWQsIGludCBpcnEpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy00NDQtXFx0aW50IHJldDtcXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzo0NDU6XFx0aW5mbyA9IGt6YWxsb2Nfb2JqKCppbmZvKTtcXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy00NDYtXFx0aWYgKCFpbmZvKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9NTIzPXN0YXRpYyBzdHJ1Y3QgY2xrICp2ZV9zcGNfY2xrX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmNwdV9kZXYpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy01MjctXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM6NTI4OlxcdHNwYyA9IGt6YWxsb2Nfb2JqKCpzcGMpO1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTUyOS1cXHRpZiAoIXNwYylcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jPTEyMz1zdGF0aWMgdm9pZCBfX2luaXQgdmVyc2F0aWxlX2R0X3BjaV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYy0xNDQtXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmM6MTQ1OlxcdG5ld3Byb3AgPSBremFsbG9jX29iaigqbmV3cHJvcCk7XFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmMtMTQ2LVxcdGlmICghbmV3cHJvcClcXG4tLVxcbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYz0xMDU9c3RhdGljIHZvaWQgX19pbml0IHp5bnFfaW5pdF9tYWNoaW5lKHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEwLVxcbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYzoxMTE6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jLTExMi1cXHRpZiAoIXNvY19kZXZfYXR0cilcXG4tLVxcbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmM9NTAzPXN0YXRpYyBfX2luaXQgaW50IGwyeDBfcG11X2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmMtNTA5LVxcbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmM6NTEwOlxcdGwyeDBfcG11ID0ga3phbGxvY19vYmooKmwyeDBfcG11KTtcXG5hcmNoL2FybS9tbS9jYWNoZS1sMngwLXBtdS5jLTUxMS1cXHRpZiAoIWwyeDBfcG11KSB7XFxuLS1cXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jPTMxNT1zdGF0aWMgaW50IF9faW5pdCBfX3VuaXBoaWVyX2NhY2hlX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4tLVxcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmMtMzQ0LVxcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmM6MzQ1OlxcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSk7XFxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYy0zNDYtXFx0aWYgKCFkYXRhKVxcbi0tXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYz01MzM9c3RhdGljIHZvaWQgKl9fZG1hX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmhhbmRsZSxcXG4tLVxcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtNTYwLVxcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmM6NTYxOlxcdGJ1ZiA9IGt6YWxsb2Nfb2JqKCpidWYsXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjItXFx0XFx0XFx0ICBnZnAgXFx1MDAyNiB+KF9fR0ZQX0RNQSB8IF9fR0ZQX0RNQTMyIHwgX19HRlBfSElHSE1FTSkpO1xcbi0tXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYz0xNDg3PWFybV9pb21tdV9jcmVhdGVfbWFwcGluZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgYmFzZSwgdTY0IHNpemUpXFxuLS1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTE1MDYtXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYzoxNTA3OlxcdG1hcHBpbmcgPSBremFsbG9jX29iaihzdHJ1Y3QgZG1hX2lvbW11X21hcHBpbmcpO1xcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtMTUwOC1cXHRpZiAoIW1hcHBpbmcpXFxuLS1cXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM9MzE2PWludCBfX2luaXQgYXJjaF94ZW5fdW5wb3B1bGF0ZWRfaW5pdChzdHJ1Y3QgcmVzb3VyY2UgKipyZXMpXFxuLS1cXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzQzLVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYzozNDQ6XFx0cmVncyA9IGt6YWxsb2Nfb2JqcygqcmVncywgbnJfcmVnKTtcXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzQ1LVxcdGlmICghcmVncykge1xcbi0tXFxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM4Ny1cXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM6Mzg4OlxcdFxcdHRtcF9yZXMgPSBremFsbG9jX29iaigqdG1wX3Jlcyk7XFxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM4OS1cXHRcXHRpZiAoIXRtcF9yZXMpIHtcXG4tLVxcbmFyY2gvYXJtL3hlbi9wMm0uYz0xNTA9Ym9vbCBfX3NldF9waHlzX3RvX21hY2hpbmVfbXVsdGkodW5zaWduZWQgbG9uZyBwZm4sXFxuLS1cXG5hcmNoL2FybS94ZW4vcDJtLmMtMTc4LVxcbmFyY2gvYXJtL3hlbi9wMm0uYzoxNzk6XFx0cDJtX2VudHJ5ID0ga3phbGxvY19vYmooKnAybV9lbnRyeSwgR0ZQX05PV0FJVCk7XFxuYXJjaC9hcm0veGVuL3AybS5jLTE4MC1cXHRpZiAoIXAybV9lbnRyeSlcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYz02OD1zdGF0aWMgaW50IF9faW5pdCBfX3Zkc29faW5pdChlbnVtIHZkc29fYWJpIGFiaSlcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYy04My1cXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmM6ODQ6XFx0dmRzb19wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX2luZm9bYWJpXS52ZHNvX3BhZ2VzKTtcXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmMtODUtXFx0aWYgKHZkc29fcGFnZWxpc3QgPT0gTlVMTClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jPTQ4MD1zdGF0aWMgaW50IHNoYXJlX3Bmbl9oeXAodTY0IHBmbilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5Mi1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYzo0OTM6XFx0dGhpcyA9IGt6YWxsb2Nfb2JqKCp0aGlzKTtcXG5hcmNoL2FybTY0L2t2bS9tbXUuYy00OTQtXFx0aWYgKCF0aGlzKSB7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYz05ODE9aW50IGt2bV9pbml0X3N0YWdlMl9tbXUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MyX21tdSAqbW11LCB1bnNpZ25lZCBsb25nIHR5cGUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA3LVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjEwMDg6XFx0cGd0ID0ga3phbGxvY19vYmooKnBndCwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA5LVxcdGlmICghcGd0KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9MTE4MD1pbnQgdG9wdXBfaHlwX21lbWNhY2hlKHN0cnVjdCBrdm1faHlwX21lbWNhY2hlICptYywgdW5zaWduZWQgbG9uZyBtaW5fcGFnZXMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMTg1LVxcdGlmICghbWMtXFx1MDAzZW1hcHBpbmcpIHtcXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoxMTg2OlxcdFxcdG1jLVxcdTAwM2VtYXBwaW5nID0ga3phbGxvY19vYmooc3RydWN0IHBrdm1fbWFwcGluZyxcXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMTg3LVxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jPTI1MTM9aW50IF9faW5pdCBrdm1fbW11X2luaXQodTMyIGh5cF92YV9iaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmMtMjU0Ni1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoyNTQ3OlxcdGh5cF9wZ3RhYmxlID0ga3phbGxvY19vYmooKmh5cF9wZ3RhYmxlKTtcXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0yNTQ4LVxcdGlmICghaHlwX3BndGFibGUpIHtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTEzODI9aW50IGt2bV92Y3B1X2FsbG9jYXRlX3ZuY3JfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTEzODctXFx0aWYgKCF2Y3B1LVxcdTAwM2VhcmNoLnZuY3JfdGxiKSB7XFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM6MTM4ODpcXHRcXHRzdHJ1Y3Qgdm5jcl90bGIgKnZ0ID0ga3phbGxvY19vYmooKnZjcHUtXFx1MDAzZWFyY2gudm5jcl90bGIsXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTM4OS1cXHRcXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYz0xODY5PWludCBrdm1faW5pdF9udl9zeXNyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTE4NzgtXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM6MTg3OTpcXHRrdm0tXFx1MDAzZWFyY2guc3lzcmVnX21hc2tzID0ga3phbGxvY19vYmooKihrdm0tXFx1MDAzZWFyY2guc3lzcmVnX21hc2tzKSxcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xODgwLVxcdFxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jPTExNj1zdGF0aWMgc3RydWN0IGt2bV9wdGR1bXBfZ3Vlc3Rfc3RhdGUgKmt2bV9wdGR1bXBfcGFyc2VyX2NyZWF0ZShzdHJ1Y3Qga3ZtX3MyX21tdSAqbW11KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmMtMTIxLVxcbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jOjEyMjpcXHRzdCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBrdm1fcHRkdW1wX2d1ZXN0X3N0YXRlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jLTEyMy1cXHRpZiAoIXN0KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz0yMDg9c3RhdGljIGludCBrdm1fdmdpY19kaXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgbnJfc3BpcylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMjE3LVxcdGRpc3QtXFx1MDAzZWFjdGl2ZV9zcGlzID0gKGF0b21pY190KUFUT01JQ19JTklUKDApO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6MjE4OlxcdGRpc3QtXFx1MDAzZXNwaXMgPSBremFsbG9jX29ianMoc3RydWN0IHZnaWNfaXJxLCBucl9zcGlzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMjE5LVxcdGlmICghZGlzdC1cXHUwMDNlc3BpcylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9MzIwPXN0YXRpYyBpbnQgdmdpY19hbGxvY2F0ZV9wcml2YXRlX2lycXNfbG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHR5cGUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTMzNS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjMzNjpcXHR2Z2ljX2NwdS1cXHUwMDNlcHJpdmF0ZV9pcnFzID0ga3phbGxvY19vYmpzKHN0cnVjdCB2Z2ljX2lycSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTMzNy1cXHRcXHRcXHRcXHRcXHQgICAgICBudW1fcHJpdmF0ZV9pcnFzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM9MTQyPWludCBrdm1fdmdpY19zZXR1cF9kZWZhdWx0X2lycV9yb3V0aW5nKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTE0OC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYzoxNDk6XFx0ZW50cmllcyA9IGt6YWxsb2Nfb2JqcygqZW50cmllcywgbnIsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTUwLVxcdGlmICghZW50cmllcylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz03Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2FkZF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtODctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjg4OlxcdGlycSA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB2Z2ljX2lycSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtODktXFx0aWYgKCFpcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9OTcxPXN0YXRpYyBpbnQgdmdpY19pdHNfYWxsb2NfY29sbGVjdGlvbihzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy05NzYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjk3NzpcXHRjb2xsZWN0aW9uID0ga3phbGxvY19vYmooKmNvbGxlY3Rpb24sIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk3OC1cXHRpZiAoIWNvbGxlY3Rpb24pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTAxNT1zdGF0aWMgc3RydWN0IGl0c19pdGUgKnZnaWNfaXRzX2FsbG9jX2l0ZShzdHJ1Y3QgaXRzX2RldmljZSAqZGV2aWNlLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEwMjAtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEwMjE6XFx0aXRlID0ga3phbGxvY19vYmooKml0ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTAyMi1cXHRpZiAoIWl0ZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMTQyPXN0YXRpYyBzdHJ1Y3QgaXRzX2RldmljZSAqdmdpY19pdHNfYWxsb2NfZGV2aWNlKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExNDctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjExNDg6XFx0ZGV2aWNlID0ga3phbGxvY19vYmooKmRldmljZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTE0OS1cXHRpZiAoIWRldmljZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xODU1PXN0YXRpYyBpbnQgdmdpY19pdHNfY3JlYXRlKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHUzMiB0eXBlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NjItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4NjM6XFx0aXRzID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXRzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODY0LVxcdGlmICghaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz04ODY9c3RhdGljIGludCB2Z2ljX3YzX2FsbG9jX3JlZGlzdF9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLCB1aW50MzJfdCBpbmRleCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6OTMyOlxcdHJkcmVnID0ga3phbGxvY19vYmooKnJkcmVnLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMzLVxcdGlmICghcmRyZWcpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYz0yNDI9aW50IHZnaWNfdjRfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy0yNTgtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM6MjU5OlxcdGRpc3QtXFx1MDAzZWl0c192bS52cGVzID0ga3phbGxvY19vYmpzKCpkaXN0LVxcdTAwM2VpdHNfdm0udnBlcywgbnJfdmNwdXMsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmMtMjYwLVxcdFxcdFxcdFxcdFxcdCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjE1Nj1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjE3Ny1cXHRpZiAoIWppdF9kYXRhKSB7XFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjE3ODpcXHRcXHRqaXRfZGF0YSA9IGt6YWxsb2Nfb2JqKCpqaXRfZGF0YSk7XFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjE3OS1cXHRcXHRpZiAoIWppdF9kYXRhKVxcbi0tXFxuYXJjaC9jc2t5L2tlcm5lbC92ZHNvLmM9MTc9c3RhdGljIGludCBfX2luaXQgdmRzb19pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yMi1cXHR2ZHNvX3BhZ2VsaXN0ID1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MTUuMTg3NTI3NDQxWiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxMDgxOTQ2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBlbnN1cmluZyB0aGlzIGNvZGUgY2hhbmdlIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBzdWJ0bGUgbmFzdGllcy4gSSBuZWVkIHRvIG1ldGljdWxvdXNseSBpbnNwZWN0IGV2ZXJ5IHNpbmdsZSBmaWxlIHRoaXMgcGF0Y2ggbW9kaWZpZXMuIEknbSBlc3BlY2lhbGx5IG9uIHRoZSBsb29rb3V0IGZvciBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgdGhhdCBtaWdodCBiZSBleHBvc2VkIGJ5IHRoZXNlIGNoYW5nZXMuIFRoaW5rIGFib3V0IHNjZW5hcmlvcyB3aGVyZSB1bmV4cGVjdGVkIGlucHV0cyBjb3VsZCBsZWFkIHRvIHRyb3VibGUuIEkgbmVlZCB0byBiZSAqc3VyZSogdGhpcyBwYXRjaCBoYW5kbGVzIHRob3NlIGdyYWNlZnVsbHkuIEJleW9uZCBlZGdlIGNhc2VzLCBJ4oCZbSBhbHNvIGV4dHJlbWVseSB3YXJ5IG9mIHRoZSBwb3RlbnRpYWwgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBBIGNhcmVsZXNzIGNoYW5nZSBoZXJlIGNvdWxkIG9wZW4gdGhlIGRvb3IgdG8gYWxsIHNvcnRzIG9mIHZ1bG5lcmFiaWxpdGllcywgb3IgYXQgdGhlIHZlcnkgbGVhc3QsIHVucHJlZGljdGFibGUgYmVoYXZpb3IuIFNvLCBteSBnb2FsIGlzIHRvIHZlcmlmeSB0aGF0IG1lbW9yeSBpcyBwcm9wZXJseSBpbml0aWFsaXplZCBiZWZvcmUgYW55IHJlYWQgb3Igd3JpdGUgb3BlcmF0aW9uIG9jY3Vycy4gSSdtIGdvaW5nIHRvIGNhcmVmdWxseSB0cmFjZSB0aGUgZGF0YSBmbG93cyBhbmQgbG9naWMgcGF0aHMgYWZmZWN0ZWQgYnkgdGhpcyBwYXRjaCB3aXRoIHRoZSBzb2xlIHB1cnBvc2Ugb2YgY29uZmlybWluZyB0aGVyZSBhcmUgbm8gbmV3IG9wcG9ydHVuaXRpZXMgZm9yIHN1YnRsZSwgaGFyZC10by1kZWJ1ZyBkZWZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzU2NCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE5OjA0OjE5LjI5NTcyNDMxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvczM5MC9rdm0vczM5MC9pbnRlcmNlcHQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MzAsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MzA6XFx0XFx0aWYgKHJlZzEgPT0gcmVnMiB8fCByZWcxIFxcdTAwMjYgMSB8fCByZWcyIFxcdTAwMjYgMSlcXG4gNDMxOlxcdFxcdFxcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pO1xcbiA0MzI6XFx0XFxuIDQzMzpcXHRcXHRpZiAoY29kZSBcXHUwMDI2IDB4ZmZmZikge1xcbiA0MzQ6XFx0XFx0XFx0Y2MgPSAzO1xcbiA0MzU6XFx0XFx0XFx0cmMgPSA0O1xcbiA0MzY6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQzNzpcXHRcXHR9XFxuIDQzODpcXHRcXG4gNDM5OlxcdFxcdGlmICgha3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSBcXHUwMDI2XFx1MDAyNiAoYWRkciBcXHUwMDI2IH5QQUdFX01BU0spKVxcbiA0NDA6XFx0XFx0XFx0cmV0dXJuIGt2bV9zMzkwX2luamVjdF9wcm9ncmFtX2ludCh2Y3B1LCBQR01fU1BFQ0lGSUNBVElPTik7XFxuIDQ0MTpcXHRcXG4gNDQyOlxcdFxcdHNjdG5zID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIDQ0MzpcXHRcXHRpZiAoIXNjdG5zKVxcbiA0NDQ6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDQ0NTpcXHRcXG4gNDQ2OlxcdFxcdGNjID0gc3RoeWlfZmlsbChzY3RucywgXFx1MDAyNnJjKTtcXG4gNDQ3OlxcdFxcdGlmIChjYyBcXHUwMDNjIDApIHtcXG4gNDQ4OlxcdFxcdFxcdGtmcmVlKHNjdG5zKTtcXG4gNDQ5OlxcdFxcdFxcdHJldHVybiBjYztcXG4gNDUwOlxcdFxcdH1cXG4gNDUxOlxcdG91dDpcXG4gNDUyOlxcdFxcdGlmICghY2MpIHtcXG4gNDUzOlxcdFxcdFxcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XFxuIDQ1NDpcXHRcXHRcXHRcXHRtZW1jcHkoc2lkYV9hZGRyKHZjcHUtXFx1MDAzZWFyY2guc2llX2Jsb2NrKSwgc2N0bnMsIFBBR0VfU0laRSk7XFxuIDQ1NTpcXHRcXHRcXHR9IGVsc2Uge1xcbiA0NTY6XFx0XFx0XFx0XFx0ciA9IHdyaXRlX2d1ZXN0KHZjcHUsIGFkZHIsIHJlZzIsIHNjdG5zLCBQQUdFX1NJWkUpO1xcbiA0NTc6XFx0XFx0XFx0XFx0aWYgKHIpIHtcXG4gNDU4OlxcdFxcdFxcdFxcdFxcdGtmcmVlKHNjdG5zKTtcXG4gNDU5OlxcdFxcdFxcdFxcdFxcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ19jb25kKHZjcHUsIHIpO1xcbiA0NjA6XFx0XFx0XFx0XFx0fVxcbiA0NjE6XFx0XFx0XFx0fVxcbiA0NjI6XFx0XFx0fVxcbiA0NjM6XFx0XFxuIDQ2NDpcXHRcXHRrZnJlZShzY3Rucyk7XFxuIDQ2NTpcXHRcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZXMucmVncy5ncHJzW3JlZzIgKyAxXSA9IHJjO1xcbiA0NjY6XFx0XFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCBjYyk7XFxuIDQ2NzpcXHRcXHRyZXR1cm4gcjtcXG4gNDY4OlxcdH1cXG4gNDY5OlxcdFxcbiA0NzA6XFx0c3RhdGljIGludCBoYW5kbGVfb3BlcmV4YyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIDQ3MTpcXHR7XFxuIDQ3MjpcXHRcXHRwc3dfdCBvbGRwc3csIG5ld3BzdztcXG4gNDczOlxcdFxcdGludCByYztcXG4gNDc0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowNDoxOS4yOTU4MDU4OFoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MTU4ODIzMjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gYGFyY2gvczM5MC9rdm0vczM5MC9wcml2LmNgKipcblxuT2theSwgSSBuZWVkIHRvIGdldCBteSBiZWFyaW5ncyBvbiB0aGlzIHNwZWNpZmljIGFyZWEgb2YgdGhlIHMzOTAgS1ZNIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIHRha2UgYSBsb29rIGF0IGBhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jYC4gVGhpcyBmaWxlIGFsbW9zdCBjZXJ0YWlubHkgZGVhbHMgd2l0aCBwcml2aWxlZ2VkIGluc3RydWN0aW9uIGhhbmRsaW5nIGFuZCBwb3RlbnRpYWxseSB0aGUgaW50ZXJmYWNlIGJldHdlZW4gdGhlIGd1ZXN0IGFuZCB0aGUgaG9zdCBmb3IgdGhvc2UgdHlwZXMgb2Ygb3BlcmF0aW9ucywgZ2l2ZW4gdGhlIG5hbWUuIEknbSBleHBlY3RpbmcgdG8gc2VlIGRlZmluaXRpb25zIGZvciB0aGluZ3MgbGlrZSB0aGUgaHlwZXJjYWxsIGludGVyZmFjZXMsIGFueSBlbXVsYXRlZCBpbnN0cnVjdGlvbnMgdGhhdCBuZWVkIHNwZWNpYWwgdHJlYXRtZW50LCBhbmQgcG9zc2libHkgdGhlIHN0cnVjdHVyZXMgdXNlZCB0byByZXByZXNlbnQgdGhlIGd1ZXN0J3MgcHJpdmlsZWdlZCBzdGF0ZSB0aGF0IEtWTSBuZWVkcyB0byBtYW5hZ2UuIEknbSB0aGlua2luZyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGhhbmRsZXJzIGZvciBESUFHIGluc3RydWN0aW9uIGludGVyY2VwdGlvbiwgUFNXIG1hbmlwdWxhdGlvbiB3aXRoaW4gdGhlIHZpcnR1YWwgbWFjaGluZSwgYW5kIGFueSBjb2RlIHJlbGF0ZWQgdG8gdmlydHVhbGl6YXRpb24gb2YgY29udHJvbCByZWdpc3RlcnMuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsb2NrIHVzYWdlIHdpdGhpbiB0aGlzIGZpbGUsIGVzcGVjaWFsbHkgaWYgdGhlcmUgYXJlIGFueSByYWNlIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBiZSBleHBsb2l0YWJsZSB3aGVuIGRlYWxpbmcgd2l0aCBzZW5zaXRpdmUgb3BlcmF0aW9ucy4gTXkgZmlyc3QgcGFzcyB3aWxsIGxpa2VseSBiZSBoaWdoIGxldmVsIHRvIGdldCB0aGUgc3RydWN0dXJlIG9mIHRoZSBmaWxlLCB0aGVuIEknbGwgZHJpbGwgZG93biB0byBhbnkgc3BlY2lmaWMgYXJlYXMgdGhhdCBsb29rIGludGVyZXN0aW5nIHRvIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODU2MSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MjYuNDU0NjMxMzI1WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3MzOTAva3ZtL3MzOTAvcHJpdi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwNSxcbiAgXCJMaW5lQ291bnRcIjogNTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkwNTpcXHRcXHR9XFxuIDkwNjpcXHRcXG4gOTA3OlxcdFxcdG9wZXJhbmQyID0ga3ZtX3MzOTBfZ2V0X2Jhc2VfZGlzcF9zKHZjcHUsIFxcdTAwMjZhcik7XFxuIDkwODpcXHRcXG4gOTA5OlxcdFxcdGlmICgha3ZtX3MzOTBfcHZfY3B1X2lzX3Byb3RlY3RlZCh2Y3B1KSBcXHUwMDI2XFx1MDAyNiAob3BlcmFuZDIgXFx1MDAyNiAweGZmZikpXFxuIDkxMDpcXHRcXHRcXHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dyYW1faW50KHZjcHUsIFBHTV9TUEVDSUZJQ0FUSU9OKTtcXG4gOTExOlxcdFxcbiA5MTI6XFx0XFx0c3dpdGNoIChmYykge1xcbiA5MTM6XFx0XFx0Y2FzZSAxOiAvKiBzYW1lIGhhbmRsaW5nIGZvciAxIGFuZCAyICovXFxuIDkxNDpcXHRcXHRjYXNlIDI6XFxuIDkxNTpcXHRcXHRcXHRtZW0gPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gOTE2OlxcdFxcdFxcdGlmICghbWVtKVxcbiA5MTc6XFx0XFx0XFx0XFx0Z290byBvdXRfbm9fZGF0YTtcXG4gOTE4OlxcdFxcdFxcdGlmIChzdHNpKG1lbSwgZmMsIHNlbDEsIHNlbDIpKVxcbiA5MTk6XFx0XFx0XFx0XFx0Z290byBvdXRfbm9fZGF0YTtcXG4gOTIwOlxcdFxcdFxcdGJyZWFrO1xcbiA5MjE6XFx0XFx0Y2FzZSAzOlxcbiA5MjI6XFx0XFx0XFx0aWYgKHNlbDEgIT0gMiB8fCBzZWwyICE9IDIpXFxuIDkyMzpcXHRcXHRcXHRcXHRnb3RvIG91dF9ub19kYXRhO1xcbiA5MjQ6XFx0XFx0XFx0bWVtID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIDkyNTpcXHRcXHRcXHRpZiAoIW1lbSlcXG4gOTI2OlxcdFxcdFxcdFxcdGdvdG8gb3V0X25vX2RhdGE7XFxuIDkyNzpcXHRcXHRcXHRoYW5kbGVfc3RzaV8zXzJfMih2Y3B1LCBtZW0pO1xcbiA5Mjg6XFx0XFx0XFx0YnJlYWs7XFxuIDkyOTpcXHRcXHRjYXNlIDE1OiAvKiBmYyAxNSBpcyBmdWxseSBoYW5kbGVkIGluIHVzZXJzcGFjZSAqL1xcbiA5MzA6XFx0XFx0XFx0aW5zZXJ0X3N0c2lfdXNyX2RhdGEodmNwdSwgb3BlcmFuZDIsIGFyLCBmYywgc2VsMSwgc2VsMik7XFxuIDkzMTpcXHRcXHRcXHR0cmFjZV9rdm1fczM5MF9oYW5kbGVfc3RzaSh2Y3B1LCBmYywgc2VsMSwgc2VsMiwgb3BlcmFuZDIpO1xcbiA5MzI6XFx0XFx0XFx0cmV0dXJuIC1FUkVNT1RFO1xcbiA5MzM6XFx0XFx0fVxcbiA5MzQ6XFx0XFx0aWYgKGt2bV9zMzkwX3B2X2NwdV9pc19wcm90ZWN0ZWQodmNwdSkpIHtcXG4gOTM1OlxcdFxcdFxcdG1lbWNweShzaWRhX2FkZHIodmNwdS1cXHUwMDNlYXJjaC5zaWVfYmxvY2spLCBtZW0sIFBBR0VfU0laRSk7XFxuIDkzNjpcXHRcXHRcXHRyYyA9IDA7XFxuIDkzNzpcXHRcXHR9IGVsc2Uge1xcbiA5Mzg6XFx0XFx0XFx0cmMgPSB3cml0ZV9ndWVzdCh2Y3B1LCBvcGVyYW5kMiwgYXIsIG1lbSwgUEFHRV9TSVpFKTtcXG4gOTM5OlxcdFxcdH1cXG4gOTQwOlxcdFxcdGlmIChyYykge1xcbiA5NDE6XFx0XFx0XFx0cmMgPSBrdm1fczM5MF9pbmplY3RfcHJvZ19jb25kKHZjcHUsIHJjKTtcXG4gOTQyOlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA5NDM6XFx0XFx0fVxcbiA5NDQ6XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC51c2VyX3N0c2kpIHtcXG4gOTQ1OlxcdFxcdFxcdGluc2VydF9zdHNpX3Vzcl9kYXRhKHZjcHUsIG9wZXJhbmQyLCBhciwgZmMsIHNlbDEsIHNlbDIpO1xcbiA5NDY6XFx0XFx0XFx0cmMgPSAtRVJFTU9URTtcXG4gOTQ3OlxcdFxcdH1cXG4gOTQ4OlxcdFxcdHRyYWNlX2t2bV9zMzkwX2hhbmRsZV9zdHNpKHZjcHUsIGZjLCBzZWwxLCBzZWwyLCBvcGVyYW5kMik7XFxuIDk0OTpcXHRcXHRrZnJlZShtZW0pO1xcbiA5NTA6XFx0XFx0a3ZtX3MzOTBfc2V0X3Bzd19jYyh2Y3B1LCAwKTtcXG4gOTUxOlxcdFxcdHZjcHUtXFx1MDAzZXJ1bi1cXHUwMDNlcy5yZWdzLmdwcnNbMF0gPSAwO1xcbiA5NTI6XFx0XFx0cmV0dXJuIHJjO1xcbiA5NTM6XFx0b3V0X25vX2RhdGE6XFxuIDk1NDpcXHRcXHRrdm1fczM5MF9zZXRfcHN3X2NjKHZjcHUsIDMpO1xcbiA5NTU6XFx0b3V0OlxcbiA5NTY6XFx0XFx0a2ZyZWUobWVtKTtcXG4gOTU3OlxcdFxcdHJldHVybiByYztcXG4gOTU4OlxcdH1cXG4gOTU5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxOTowNDoyNi40NTQ3NTI3NDVaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYxMjcxOTE3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEtWTS9zMzkwIEludGVycnVwdCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIHdlJ3JlIGRpdmluZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgS1ZNL3MzOTAgaW50ZXJhY3Rpb24sIHNwZWNpZmljYWxseSByZWdhcmRpbmcgaW50ZXJydXB0cy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byB6ZXJvIGluIG9uIHR3byBrZXkgZmlsZXM6IGBhcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jYCBhbmQgYGludGVycnVwdC5jYC4gYHMzOTAuY2AgaXMgdGhlIGxpa2VseSBwbGFjZSB3aGVyZSBjb3JlIHMzOTAtc3BlY2lmaWMgS1ZNIHNldHVwIGFuZCBmdW5jdGlvbmFsaXR5IHJlc2lkZSwgYW5kIHdpdGhpbiB0aGF0LCB0aGUgY29ubmVjdGlvbiB0byBpbnRlcnJ1cHQgaGFuZGxpbmcgd2lsbCBiZSB2aXRhbC4gQ29udmVyc2VseSwgaW50ZXJydXB0LmMgaXMgd2hlcmUgbG93IGxldmVsIGludGVycnVwdCBmdW5jdGlvbnMgYXJlLiBOb3cgSSBzdXNwZWN0IHRoZXNlIHdpbGwgcHJvdmlkZSB0aGUgY3JpdGljYWwgcGllY2VzIG9mIHRoZSBwdXp6bGUuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGludGVycnVwdCB2ZWN0b3JpbmcsIHRoZSBpbnRlcnJ1cHQgaW5qZWN0aW9uIG1lY2hhbmlzbXMsIGFuZCB0aGUgY3J1Y2lhbCBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ3Vlc3QncyB2aWV3IG9mIGludGVycnVwdHMgYW5kIHRoZSBob3N0J3MgaGFuZGxpbmcgb2YgdGhlbSBkZWZpbmVkIGluIHRoZXNlIGFyZWFzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGhhcmR3YXJlIGludGVycnVwdHMgYXJlIG1hcHBlZCB0byBndWVzdCBpbnRlcnJ1cHRzIHdpdGhpbiB0aGUgS1ZNIGVudmlyb25tZW50LCBhbmQgdGhhdCB3aWxsIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVzZSBmaWxlcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTg2OSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MjkuMDY3NDc1NjAyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3MzOTAva3ZtL3MzOTAvczM5MC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyNzAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyNzA6XFx0XFxuMzI3MTpcXHRcXHRrdm0tXFx1MDAzZWFyY2guZGJmID0gZGVidWdfcmVnaXN0ZXIoZGVidWdfbmFtZSwgMzIsIDEsIDcgKiBzaXplb2YobG9uZykpO1xcbjMyNzI6XFx0XFx0aWYgKCFrdm0tXFx1MDAzZWFyY2guZGJmKVxcbjMyNzM6XFx0XFx0XFx0Z290byBvdXRfZXJyO1xcbjMyNzQ6XFx0XFxuMzI3NTpcXHRcXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBzaWVfcGFnZTIpICE9IDQwOTYpO1xcbjMyNzY6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMiA9IGt6YWxsb2Nfb2JqKCprdm0tXFx1MDAzZWFyY2guc2llX3BhZ2UyLFxcbjMyNzc6XFx0XFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQgfCBHRlBfRE1BKTtcXG4zMjc4OlxcdFxcdGlmICgha3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMilcXG4zMjc5OlxcdFxcdFxcdGdvdG8gb3V0X2VycjtcXG4zMjgwOlxcdFxcbjMyODE6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMi1cXHUwMDNla3ZtID0ga3ZtO1xcbjMyODI6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19saXN0ID0ga3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMi1cXHUwMDNlZmFjX2xpc3Q7XFxuMzI4MzpcXHRcXG4zMjg0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGt2bV9zMzkwX2ZhY19iYXNlKTsgaSsrKSB7XFxuMzI4NTpcXHRcXHRcXHRrdm0tXFx1MDAzZWFyY2gubW9kZWwuZmFjX21hc2tbaV0gPSBzdGZsZV9mYWNfbGlzdFtpXSBcXHUwMDI2XFxuMzI4NjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBrdm1fczM5MF9mYWNfYmFzZVtpXTtcXG4zMjg3OlxcdFxcdFxcdGt2bS1cXHUwMDNlYXJjaC5tb2RlbC5mYWNfbGlzdFtpXSA9IHN0ZmxlX2ZhY19saXN0W2ldIFxcdTAwMjZcXG4zMjg4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGt2bV9zMzkwX2ZhY19iYXNlW2ldO1xcbjMyODk6XFx0XFx0fVxcbjMyOTA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoa3ZtX3MzOTBfZmFjX2V4dCk7IGkrKykge1xcbjMyOTE6XFx0XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19tYXNrW2ldIHw9IHN0ZmxlX2ZhY19saXN0W2ldIFxcdTAwMjZcXG4zMjkyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBrdm1fczM5MF9mYWNfZXh0W2ldO1xcbjMyOTM6XFx0XFx0fVxcbjMyOTQ6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLm1vZGVsLnN1YmZ1bmNzID0ga3ZtX3MzOTBfYXZhaWxhYmxlX3N1YmZ1bmM7XFxuMzI5NTpcXHRcXG4zMjk2OlxcdFxcdC8qIHdlIGFyZSBhbHdheXMgaW4gY3phbSBtb2RlIC0gZXZlbiBvbiBwcmUgejE0IG1hY2hpbmVzICovXFxuMzI5NzpcXHRcXHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cXHUwMDNlYXJjaC5tb2RlbC5mYWNfbWFzaywgMTM4KTtcXG4zMjk4OlxcdFxcdHNldF9rdm1fZmFjaWxpdHkoa3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19saXN0LCAxMzgpO1xcbjMyOTk6XFx0XFx0Lyogd2UgZW11bGF0ZSBTVEhZSSBpbiBrdm0gKi9cXG4zMzAwOlxcdFxcdHNldF9rdm1fZmFjaWxpdHkoa3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19tYXNrLCA3NCk7XFxuMzMwMTpcXHRcXHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cXHUwMDNlYXJjaC5tb2RlbC5mYWNfbGlzdCwgNzQpO1xcbjMzMDI6XFx0XFx0aWYgKG1hY2hpbmVfaGFzX3RsYl9ndWVzdCgpKSB7XFxuMzMwMzpcXHRcXHRcXHRzZXRfa3ZtX2ZhY2lsaXR5KGt2bS1cXHUwMDNlYXJjaC5tb2RlbC5mYWNfbWFzaywgMTQ3KTtcXG4zMzA0OlxcdFxcdFxcdHNldF9rdm1fZmFjaWxpdHkoa3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19saXN0LCAxNDcpO1xcbjMzMDU6XFx0XFx0fVxcbjMzMDY6XFx0XFxuMzMwNzpcXHRcXHRpZiAoY3NzX2dlbmVyYWxfY2hhcmFjdGVyaXN0aWNzLmFpdiBcXHUwMDI2XFx1MDAyNiB0ZXN0X2ZhY2lsaXR5KDY1KSlcXG4zMzA4OlxcdFxcdFxcdHNldF9rdm1fZmFjaWxpdHkoa3ZtLVxcdTAwM2VhcmNoLm1vZGVsLmZhY19tYXNrLCA2NSk7XFxuMzMwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MjkuMDY3NzgyNjYyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc5NzAyMzM5NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQXNzZXNzbWVudDogTm8gTmV3IFJpc2tzIERldGVjdGVkKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBzd2FwLW91dCwgcmVwbGFjaW5nIHRoZSBvbGQgYGdldF96ZXJvZWRfcGFnZWAgYW5kIGBmcmVlX3BhZ2VgIGZ1bmN0aW9ucyB3aXRoIHRoZSBuZXdlciBga3phbGxvY2AgKG9yIGBremFsbG9jX29iamApIGFuZCBga2ZyZWVgIGluIHRoZSBzMzkwIEtWTSBzdWJzeXN0ZW0uIFRoZSBjcml0aWNhbCB0aGluZyBoZXJlIGlzIHRoYXQgdGhlICp6ZXJvLWluaXRpYWxpemF0aW9uKiBpcyBtYWludGFpbmVkLiBFdmVyeSBzaW5nbGUgcGxhY2UgdGhlIG9sZCBjb2RlIHdhcyBhbGxvY2F0aW5nIHplcm9lZCBwYWdlcywgdGhlIG5ldyBjb2RlIGlzIGFsc28gYWxsb2NhdGluZyB6ZXJvZWQgbWVtb3J5IHRocm91Z2ggYGt6YWxsb2NgLiBUaGlzIGlzIGtleS5cblxuVGhlcmUncyBhYnNvbHV0ZWx5IG5vIGV2aWRlbmNlIG9mIGludHJvZHVjaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB3aGF0c29ldmVyLiBObyBuZXcgcGF0aHMgYXJlIGNyZWF0ZWQgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIHRoZSB1c2Ugb2YgdW5pbml0aWFsaXplZCBkYXRhLCBhbmQsIGNyaXRpY2FsbHksIG5vIHVzZXItc3BhY2UgbGVha3MgYXJlIGVuYWJsZWQuIFdlJ3JlIGtlZXBpbmcgdGhpbmdzIGNsZWFuLlxuXG5HaXZlbiB0aGVzZSBwb2ludHMsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB3ZSBhYnNvbHV0ZWx5IGRvICpub3QqIG5lZWQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGZvciB0aGlzIGNoYW5nZS4gVGhlIHJlcGxhY2VtZW50IG9mIHBhZ2UgYWxsb2NhdGlvbnMgd2l0aCBzbGFiIGFsbG9jYXRpb25zLCB3aGlsZSBhIGRpZmZlcmVudCBtZWNoYW5pc20sIG1haW50YWlucyB0aGUgY3J1Y2lhbCB6ZXJvLWluaXRpYWxpemF0aW9uLCB3aGljaCBpcyB3aGF0IEtNU0FOIHdvdWxkIGJlIHBhcnRpY3VsYXJseSBjb25jZXJuZWQgYWJvdXQuIEFueSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgZnJvbSB0aGUgc2xhYiBjb252ZXJzaW9ucyB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gYW55d2F5LlxuXG5JJ20gcmVhZHkgdG8gbWFyayB0aGlzIGFzIEtNU0FOLWNsZWFuLiBMZXQncyBpbnZva2UgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwNjcsIk91dHB1dFRva2VucyI6MTkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTk6MDQ6MzcuMDM4MDE4NzI2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjb252ZXJ0cyBwYWdlIGFsbG9jYXRpb25zIHZpYSBnZXRfemVyb2VkX3BhZ2UoKSBhbmQgZnJlZV9wYWdlKCkgdG8gc2xhYiBhbGxvY2F0aW9ucyB2aWEga3phbGxvYygpL2t6YWxsb2Nfb2JqKCkgYW5kIGtmcmVlKCkgYWNyb3NzIHMzOTAgS1ZNIGNvZGUgKGludGVyY2VwdC5jLCBpbnRlcnJ1cHQuYywgcHJpdi5jLCBzMzkwLmMpLiBcXG5cXG5TaW5jZSBremFsbG9jL2t6YWxsb2Nfb2JqIHplcm8taW5pdGlhbGl6ZXMgdGhlIG1lbW9yeSBpZGVudGljYWxseSB0byBnZXRfemVyb2VkX3BhZ2UoKSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGNvbmRpdGlvbmFsIGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgb3IgdW5pbml0aWFsaXplZCBpbmZvLWxlYWtzIHRvIHVzZXJzcGFjZS9ndWVzdCBhcmUgaW50cm9kdWNlZC4gQW55IHBvdGVudGlhbCBzbGFiLXJlbGF0ZWQgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGUuZy4gb3V0LW9mLWJvdW5kcywgdXNlLWFmdGVyLWZyZWUsIG9yIGRvdWJsZS1mcmVlKSBhcmUgbW9uaXRvcmVkIGJ5IHN0YW5kYXJkIEtBU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnZlcnRzIHBhZ2UgYWxsb2NhdGlvbnMgdmlhIGdldF96ZXJvZWRfcGFnZSgpIGFuZCBmcmVlX3BhZ2UoKSB0byBzbGFiIGFsbG9jYXRpb25zIHZpYSBremFsbG9jKCkva3phbGxvY19vYmooKSBhbmQga2ZyZWUoKSBhY3Jvc3MgczM5MCBLVk0gY29kZSAoaW50ZXJjZXB0LmMsIGludGVycnVwdC5jLCBwcml2LmMsIHMzOTAuYykuIFxcblxcblNpbmNlIGt6YWxsb2Mva3phbGxvY19vYmogemVyby1pbml0aWFsaXplcyB0aGUgbWVtb3J5IGlkZW50aWNhbGx5IHRvIGdldF96ZXJvZWRfcGFnZSgpLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgY29uZGl0aW9uYWwgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBkYXRhLCBvciB1bmluaXRpYWxpemVkIGluZm8tbGVha3MgdG8gdXNlcnNwYWNlL2d1ZXN0IGFyZSBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIHNsYWItcmVsYXRlZCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAoZS5nLiBvdXQtb2YtYm91bmRzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgZG91YmxlLWZyZWUpIGFyZSBtb25pdG9yZWQgYnkgc3RhbmRhcmQgS0FTQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowcbhth[1] Phase: Succeeded StartedAt: 2026-09-02 19:04:48 +0000 UTC FinishedAt: 2026-09-02 19:04:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-02 19:04:48 +0000 UTC FinishedAt: 2026-09-02 19:04:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2] Phase: Succeeded StartedAt: 2026-09-02 19:04:48 +0000 UTC FinishedAt: 2026-09-02 19:43:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-02 19:04:48 +0000 UTC FinishedAt: 2026-09-02 19:43:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-02 19:04:48 +0000 UTC FinishedAt: 2026-09-02 19:04:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-02 19:04:48 +0000 UTC FinishedAt: 2026-09-02 19:04:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowcbhth/series-workflowcbhth-convert-artifact-1182831505/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-02 19:04:59 +0000 UTC FinishedAt: 2026-09-02 19:21:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-02 19:04:59 +0000 UTC FinishedAt: 2026-09-02 19:21:37 +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:*feb3d60f-b02a-4868-bd58-3639a634fe71,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-workflowcbhth/series-workflowcbhth-convert-artifact-1182831505/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": "f6bc7806-bce1-49a9-b87b-61fc7520c4f4", "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-workflowcbhth/series-workflowcbhth-build-action-1404204351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-02 19:04:59 +0000 UTC FinishedAt: 2026-09-02 19:21:27 +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:*feb3d60f-b02a-4868-bd58-3639a634fe71,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-workflowcbhth/series-workflowcbhth-convert-artifact-1182831505/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": "f6bc7806-bce1-49a9-b87b-61fc7520c4f4", "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-workflowcbhth/series-workflowcbhth-build-action-1404204351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-02 19:21:37 +0000 UTC FinishedAt: 2026-09-02 19:21:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-02 19:21:37 +0000 UTC FinishedAt: 2026-09-02 19:21:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-02 19:21:37 +0000 UTC FinishedAt: 2026-09-02 19:21:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-02 19:21:37 +0000 UTC FinishedAt: 2026-09-02 19:21:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowcbhth/series-workflowcbhth-convert-artifact-3865856868/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-02 19:21:47 +0000 UTC FinishedAt: 2026-09-02 19:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-02 19:21:47 +0000 UTC FinishedAt: 2026-09-02 19:23:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f6bc7806-bce1-49a9-b87b-61fc7520c4f4,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-workflowcbhth/series-workflowcbhth-build-action-1404204351/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-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-02 19:23:46 +0000 UTC FinishedAt: 2026-09-02 19:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-02 19:23:46 +0000 UTC FinishedAt: 2026-09-02 19:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-02 19:23:46 +0000 UTC FinishedAt: 2026-09-02 19:40:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-02 19:23:46 +0000 UTC FinishedAt: 2026-09-02 19:40:15 +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:*feb3d60f-b02a-4868-bd58-3639a634fe71,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-workflowcbhth/series-workflowcbhth-convert-artifact-3865856868/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": "6e947f22-651a-417a-a2cb-23f4266aa068", "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-workflowcbhth/series-workflowcbhth-build-action-3312080112/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-02 19:23:46 +0000 UTC FinishedAt: 2026-09-02 19:40:05 +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:*feb3d60f-b02a-4868-bd58-3639a634fe71,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-workflowcbhth/series-workflowcbhth-convert-artifact-3865856868/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": "6e947f22-651a-417a-a2cb-23f4266aa068", "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-workflowcbhth/series-workflowcbhth-build-action-3312080112/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-02 19:40:15 +0000 UTC FinishedAt: 2026-09-02 19:40:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-02 19:40:15 +0000 UTC FinishedAt: 2026-09-02 19:40:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-02 19:40:15 +0000 UTC FinishedAt: 2026-09-02 19:42:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-02 19:40:15 +0000 UTC FinishedAt: 2026-09-02 19:42:05 +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:*6e947f22-651a-417a-a2cb-23f4266aa068,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-workflowcbhth/series-workflowcbhth-build-action-3312080112/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-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-02 19:42:15 +0000 UTC FinishedAt: 2026-09-02 19:43:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-02 19:42:15 +0000 UTC FinishedAt: 2026-09-02 19:43:34 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},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:*f6bc7806-bce1-49a9-b87b-61fc7520c4f4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6e947f22-651a-417a-a2cb-23f4266aa068,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-workflowcbhth/series-workflowcbhth-build-action-1404204351/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-workflowcbhth/series-workflowcbhth-build-action-3312080112/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-02 19:42:15 +0000 UTC FinishedAt: 2026-09-02 19:42:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-02 19:42:15 +0000 UTC FinishedAt: 2026-09-02 19:42:19 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},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-workflowcbhth/series-workflowcbhth-convert-artifact-696339181/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-02 19:42:15 +0000 UTC FinishedAt: 2026-09-02 19:42:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-02 19:42:15 +0000 UTC FinishedAt: 2026-09-02 19:42:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-02 19:42:15 +0000 UTC FinishedAt: 2026-09-02 19:42:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-02 19:42:25 +0000 UTC FinishedAt: 2026-09-02 19:43:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcbhth[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["handle_sthyi","kvm_s390_handle_b2","kvm_arch_init_vm","kvm_s390_vcpu_setup_cmma"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cee9395acd8043be0644b25c34bfa86623f2b935","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"c6c52c71-832c-4b9a-af45-70e272003c20","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-02 19:42:25 +0000 UTC FinishedAt: 2026-09-02 19:43:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f6bc7806-bce1-49a9-b87b-61fc7520c4f4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6e947f22-651a-417a-a2cb-23f4266aa068,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-workflowcbhth/series-workflowcbhth-build-action-1404204351/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-workflowcbhth/series-workflowcbhth-build-action-3312080112/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-workflowcbhth/series-workflowcbhth-convert-artifact-696339181/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,}