Name: series-workflowx5mtg Phase: Succeeded StartedAt: 2026-06-30 10:19:59 +0000 UTC FinishedAt: 2026-06-30 14:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[0] Phase: Succeeded StartedAt: 2026-06-30 10:19:59 +0000 UTC FinishedAt: 2026-06-30 10:31:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 10:19:59 +0000 UTC FinishedAt: 2026-06-30 10:31:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SPARSEMEM_VMEMMAP", "MEMORY_HOTPLUG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SPARSEMEM_VMEMMAP", "MEMORY_HOTPLUG" ], "series_id": "a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__populate_section_memmap", "vmemmap_populate_finalize" ], "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+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NQQVJTRU1FTV9WTUVNTUFQJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCYjMzQ7LAogICAgJiMzNDt2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGFuZCBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIGJ5IGFkZGluZyBhIFRMQiBmbHVzaCAodm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSkgYWZ0ZXIgcG9wdWxhdGluZyBhIHZtZW1tYXAgc2VjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb3JlIE1NIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTg3NTIwZjg0MDQ0NDM2N2Q2ZGY2ZWQyMTk1ZjhjZmI5NDI5NThiYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDEwOjI5OjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcbmluZGV4IDVkNTc1NmJkYTgyZTNkLi42YjAwMGM5OTBiYTcxOSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxuQEAgLTEyNTMsNiAmIzQzOzEyNTMsMTAgQEAgc3RhdGljIGlubGluZSBwdGVfdCBwdGVfc3dwX2NsZWFyX2V4Y2x1c2l2ZShwdGVfdCBwdGUpXG4gI2RlZmluZSBUQVNLX1NJWkVcdEZJWEFERFJfU1RBUlRcbiAjZW5kaWZcbiBcbiYjNDM7LyogTmVlZGVkIG9uIFNQQVJTRU1FTV9WTUVNTUFQICovXG4mIzQzOyNkZWZpbmUgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXG4mIzQzO3ZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZCk7XG4mIzQzO1xuICNlbHNlIC8qIENPTkZJR19NTVUgKi9cbiBcbiAjZGVmaW5lIFBBR0VfU0hBUkVEXHRcdF9fcGdwcm90KDApXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xuaW5kZXggNWIxYjNjODhiNGQxMzAuLjgwMGNiNWMwMDdkMTAyIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9tbS9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jXG5AQCAtMTM3Miw2ICYjNDM7MTM3MiwxMiBAQCBpbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxuIFx0ICovXG4gXHRyZXR1cm4gdm1lbW1hcF9wb3B1bGF0ZV9odWdlcGFnZXMoc3RhcnQsIGVuZCwgbm9kZSwgYWx0bWFwKTtcbiB9XG4mIzQzO1xuJiM0Mzt2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHQvKiBBdm9pZCBmYXVsdHMgb24gY2FjaGVkIG5vbi1wcmVzZW50IFRMQiBlbnRyaWVzLiAqL1xuJiM0MztcdG1hcmtfbmV3X3ZhbGlkX21hcCgpO1xuJiM0Mzt9XG4gI2VuZGlmXG4gXG4gI2lmIGRlZmluZWQoQ09ORklHX01NVSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHXzY0QklUKVxuZGlmZiAtLWdpdCBhL21tL3NwYXJzZS12bWVtbWFwLmMgYi9tbS9zcGFyc2Utdm1lbW1hcC5jXG5pbmRleCA5OWUyYmUzOTY3MWI2My4uMjkwY2FmY2ZkNzIzMDUgMTAwNjQ0XG4tLS0gYS9tbS9zcGFyc2Utdm1lbW1hcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9zcGFyc2Utdm1lbW1hcC5jXG5AQCAtNTQ0LDYgJiM0Mzs1NDQsMTIgQEAgc3RhdGljIGludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9jb21wb3VuZF9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbixcbiBcbiAjZW5kaWZcbiBcbiYjNDM7I2lmbmRlZiB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXG4mIzQzO3N0YXRpYyB2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKHZvaWQpXG4mIzQzO3tcbiYjNDM7fVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4gc3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbiBcdFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgaW50IG5pZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXG4gXHRcdHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXApXG5AQCAtNTY0LDYgJiM0Mzs1NzAsOCBAQCBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxuIFx0aWYgKHIgXHUwMDNjIDApXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuJiM0MztcdHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUoKTtcbiYjNDM7XG4gXHRyZXR1cm4gcGZuX3RvX3BhZ2UocGZuKTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1BBUlNFTUVNX1ZNRU1NQVAmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFBMVUcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwJiMzNDssCiAgICAmIzM0O3ZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGhvdHBsdWcgYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljIGZvciBSSVNDLVYgYnkgYWRkaW5nIGEgVExCIGZsdXNoICh2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKSBhZnRlciBwb3B1bGF0aW5nIGEgdm1lbW1hcCBzZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvcmUgTU0gY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE4NzUyMGY4NDA0NDQzNjdkNmRmNmVkMjE5NWY4Y2ZiOTQyOTU4YmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAzMCAxMDoyOTozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKaW5kZXggNWQ1NzU2YmRhODJlM2QuLjZiMDAwYzk5MGJhNzE5IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaApAQCAtMTI1Myw2ICYjNDM7MTI1MywxMCBAQCBzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9zd3BfY2xlYXJfZXhjbHVzaXZlKHB0ZV90IHB0ZSkKICNkZWZpbmUgVEFTS19TSVpFCUZJWEFERFJfU1RBUlQKICNlbmRpZgogCiYjNDM7LyogTmVlZGVkIG9uIFNQQVJTRU1FTV9WTUVNTUFQICovCiYjNDM7I2RlZmluZSB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplIHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUKJiM0Mzt2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKHZvaWQpOwomIzQzOwogI2Vsc2UgLyogQ09ORklHX01NVSAqLwogCiAjZGVmaW5lIFBBR0VfU0hBUkVECQlfX3BncHJvdCgwKQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuYwppbmRleCA1YjFiM2M4OGI0ZDEzMC4uODAwY2I1YzAwN2QxMDIgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jCkBAIC0xMzcyLDYgJiM0MzsxMzcyLDEyIEBAIGludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsCiAJICovCiAJcmV0dXJuIHZtZW1tYXBfcG9wdWxhdGVfaHVnZXBhZ2VzKHN0YXJ0LCBlbmQsIG5vZGUsIGFsdG1hcCk7CiB9CiYjNDM7CiYjNDM7dm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKQomIzQzO3sKJiM0MzsJLyogQXZvaWQgZmF1bHRzIG9uIGNhY2hlZCBub24tcHJlc2VudCBUTEIgZW50cmllcy4gKi8KJiM0MzsJbWFya19uZXdfdmFsaWRfbWFwKCk7CiYjNDM7fQogI2VuZGlmCiAKICNpZiBkZWZpbmVkKENPTkZJR19NTVUpICZhbXA7JmFtcDsgZGVmaW5lZChDT05GSUdfNjRCSVQpCmRpZmYgLS1naXQgYS9tbS9zcGFyc2Utdm1lbW1hcC5jIGIvbW0vc3BhcnNlLXZtZW1tYXAuYwppbmRleCA5OWUyYmUzOTY3MWI2My4uMjkwY2FmY2ZkNzIzMDUgMTAwNjQ0Ci0tLSBhL21tL3NwYXJzZS12bWVtbWFwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vc3BhcnNlLXZtZW1tYXAuYwpAQCAtNTQ0LDYgJiM0Mzs1NDQsMTIgQEAgc3RhdGljIGludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9jb21wb3VuZF9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwKIAogI2VuZGlmCiAKJiM0MzsjaWZuZGVmIHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUKJiM0MztzdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKQomIzQzO3sKJiM0Mzt9CiYjNDM7I2VuZGlmCiYjNDM7CiBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLAogCQl1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCwKIAkJc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcCkKQEAgLTU2NCw2ICYjNDM7NTcwLDggQEAgc3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbiwKIAlpZiAociAmbHQ7IDApCiAJCXJldHVybiBOVUxMOwogCiYjNDM7CXZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUoKTsKJiM0MzsKIAlyZXR1cm4gcGZuX3RvX3BhZ2UocGZuKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzk2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgdm1lbW1hcCBQb3B1bGF0aW9uIGFuZCBGaW5hbGl6YXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemVgIGZ1bmN0aW9uLCBjYWxsZWQgZnJvbSB3aXRoaW4gYF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGluIGBtbS9zcGFyc2Utdm1lbW1hcC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZmluYWxpemF0aW9uIHN0ZXAgaXMgbmVjZXNzYXJ5LiBTcGVjaWZpY2FsbHksIG9uIFJJU0MtViwgaXQgbG9va3MgbGlrZSBgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZWAgaXMgaW1wbGVtZW50ZWQgdG8gY2FsbCBgbWFya19uZXdfdmFsaWRfbWFwKClgIGluIGBhcmNoL3Jpc2N2L21tL2luaXQuY2AuIFRoZSBjb21tZW50IG1lbnRpb25zIGF2b2lkaW5nIGZhdWx0cyByZWxhdGVkIHRvIGNhY2hlZCwgbm9uLXByZXNlbnQgVExCIGVudHJpZXMuIE1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci4KCkxldCYjMzk7cyBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjYWxsIGNvbnRleHQuIEkga25vdyBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgaXMgaW52b2tlZCBkdXJpbmcgbWVtb3J5IGhvdHBsdWcgb3IgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBPa2F5LCBpbml0aWFsaXphdGlvbiBhbmQgbWVtb3J5IGhvdHBsdWcgcHJpbWFyaWx5LCBzbywgd2hpbGUgbWVtb3J5IGhvdHBsdWcgaXMgYSAmIzM0O2ZlYXR1cmUsJiMzNDsgdGhpcyBhcHBlYXJzIHRvIGJlIHByaW1hcmlseSBkdXJpbmcgaW5pdC4gVGhpcyBoYXMgbWUgd29uZGVyaW5nIGlmIHRoZXJlJiMzOTtzIGFueSBpbW1lZGlhdGUgZnV6emluZyBvcHBvcnR1bml0eSBoZXJlLiBNZW1vcnkgaG90cGx1ZyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgdXNlciB2aWEgc3lzZnMgb3IgYnkgYWRkaW5nIG1lbW9yeS4gQnV0IHRoZSBmaW5hbGl6YXRpb24gc3RlcCBpdHNlbGYg4oCTIGB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplYCDigJMgc2VlbXMgdG8gYmUganVzdCBhIFRMQiBmbHVzaCBvciBhIHNpbWlsYXIgb3BlcmF0aW9uIHZpYSBgbWFya19uZXdfdmFsaWRfbWFwKClgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0LgoKU28sIHRoZSBrZXkgaGVyZSBpcyBgbWFya19uZXdfdmFsaWRfbWFwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGJlaGF2aW9yIG9mIHRoYXQgZnVuY3Rpb24sIGFzIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uYWxpdHkgc2VlbXMgdG8gcmVzaWRlLiBLbm93aW5nIHRoaXMgd2lsbCBjbGFyaWZ5IHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBwYXRjaCBhbmQgaWYgdGhlcmUgYXJlIGFueSByZWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYXJrX25ld192YWxpZF9tYXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jYWNoZWZsdXNoLmg9NDY9ZXh0ZXJuIGNoYXIgX2VuZFtdO1xuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jYWNoZWZsdXNoLmg6NDc6c3RhdGljIGlubGluZSB2b2lkIG1hcmtfbmV3X3ZhbGlkX21hcCh2b2lkKVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jYWNoZWZsdXNoLmgtNDgte1xuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oPTU3PXN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF9jYWNoZV92bWFwKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oLTU5LVx0aWYgKGlzX3ZtYWxsb2Nfb3JfbW9kdWxlX2FkZHIoKHZvaWQgKilzdGFydCkpXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2guaDo2MDpcdFx0bWFya19uZXdfdmFsaWRfbWFwKCk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2guaC02MS19XG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rZmVuY2UuaD0xNz1zdGF0aWMgaW5saW5lIGJvb2wga2ZlbmNlX3Byb3RlY3RfcGFnZSh1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgcHJvdGVjdClcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2tmZW5jZS5oLTI0LVx0XHRzZXRfcHRlKHB0ZSwgX19wdGUocHRlX3ZhbChwdGVwX2dldChwdGUpKSB8IF9QQUdFX1BSRVNFTlQpKTtcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va2ZlbmNlLmg6MjU6XHRcdG1hcmtfbmV3X3ZhbGlkX21hcCgpO1xuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rZmVuY2UuaC0yNi1cdH1cbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xMzc2PXZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZClcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xMzc4LVx0LyogQXZvaWQgZmF1bHRzIG9uIGNhY2hlZCBub24tcHJlc2VudCBUTEIgZW50cmllcy4gKi9cbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjEzNzk6XHRtYXJrX25ld192YWxpZF9tYXAoKTtcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzODAtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MjUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUklTQy1WIE1lbW9yeSBIb3RwbHVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBgbWFya19uZXdfdmFsaWRfbWFwYCDigJMgSSBrbm93IHRoYXQgZmx1c2hlcyB0aGUgVHJhbnNsYXRpb24gTG9va2FzaWRlIEJ1ZmZlciAoVExCKSwgb3Igc29tZXRoaW5nIGNsb3NlbHkgcmVsYXRlZCwgcmlnaHQ/IFRoZW4gSSBzZWUgdGhhdCBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgaXMgYmVpbmcgY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1ZywgYW5kIGltbWVkaWF0ZWx5IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzLiBIb3dldmVyLCB0aGlzIGxvb2tzIGxpa2UgYSB2ZXJ5IHNwZWNpZmljIGFyY2hpdGVjdHVyZSBmaXgsIHNwZWNpZmljYWxseSBmb3IgUklTQy1WLgoKSXQgbG9va3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYWZ0ZXIgdGhlIGB2bWVtbWFwX3BvcHVsYXRlKClgIGNhbGwgd2l0aGluIGBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKClgLCBpdCBqdXN0IGNhbGxzIGBtYXJrX25ld192YWxpZF9tYXAoKWAuIFJpZ2h0LCBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCgpYCBpcyBjYWxsZWQgd2hlbiBhIG1lbW9yeSBzZWN0aW9uIGlzIHBvcHVsYXRlZCwgd2hpY2ggaXMgbW9zdGx5IGluaXRpYWxpemF0aW9uIG9yIGR1cmluZyBtZW1vcnkgaG90cGx1ZyBldmVudHMuIEZ1bmN0aW9uYWxseSwgaXQmIzM5O3MgYSBtaW5vciBjaGFuZ2UsIGEgc21hbGwgZml4IHJlYWxseSwgYnV0IGEgY3JpdGljYWwgb25lIGZvciBSSVNDLVYgbWVtb3J5IGhvdHBsdWcgYW5kIGluaXRpYWxpemF0aW9uLgoKTXkgcHJpbWFyeSBjb25jZXJuIGlzOiBpcyB0aGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZT8gTWVtb3J5IGhvdHBsdWcgaXMgdHJpZ2dlcmVkIHZpYSBzeXNmcywgc28gdGhhdCBzZWVtcyBsaWtlIGEgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3IuIEkgc2hvdWxkIGNoZWNrIHRoZSBjYWxsZXJzIG9mIGBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCB0byBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgdGhlIGNvZGUgZmxvdyBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbW0uaD00ODkyPXVuc2lnbmVkIGxvbmcgc2VjdGlvbl9tYXBfc2l6ZSh2b2lkKTtcbmluY2x1ZGUvbGludXgvbW0uaDo0ODkzOnN0cnVjdCBwYWdlICogX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbmluY2x1ZGUvbGludXgvbW0uaC00ODk0LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTU0OD1zdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKVxuLS1cbm1tL3NwYXJzZS12bWVtbWFwLmMtNTUyLVxubW0vc3BhcnNlLXZtZW1tYXAuYzo1NTM6c3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbm1tL3NwYXJzZS12bWVtbWFwLmMtNTU0LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTY4OD1zdGF0aWMgc3RydWN0IHBhZ2UgKiBfX21lbWluaXQgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy02OTEte1xubW0vc3BhcnNlLXZtZW1tYXAuYzo2OTI6XHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAocGZuLCBucl9wYWdlcywgbmlkLCBhbHRtYXAsXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTY5My1cdFx0XHRcdFx0XHQgICAgICBwZ21hcCk7XG4tLVxubW0vc3BhcnNlLmM9MjMyPXVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcbi0tXG5tbS9zcGFyc2UuYy0yMzYtXG5tbS9zcGFyc2UuYzoyMzc6c3RydWN0IHBhZ2UgX19pbml0ICpfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxubW0vc3BhcnNlLmMtMjM4LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2UuYz0yOTg9c3RhdGljIHZvaWQgX19pbml0IHNwYXJzZV9pbml0X25pZChpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHBudW1fYmVnaW4sXG4tLVxubW0vc3BhcnNlLmMtMzIwLVx0XHRpZiAoIXByZWluaXRlZF92bWVtbWFwX3NlY3Rpb24obXMpKSB7XG5tbS9zcGFyc2UuYzozMjE6XHRcdFx0bWFwID0gX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcChwZm4sIFBBR0VTX1BFUl9TRUNUSU9OLFxubW0vc3BhcnNlLmMtMzIyLVx0XHRcdFx0XHRuaWQsIE5VTEwsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MzgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSBjb2RlIHNuaXBwZXRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGEgc2Vhc29uZWQga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50IGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgU3BhcnNlIFZtZW1tYXAgSW5pdGlhbGl6YXRpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3BhcnNlIHZtZW1tYXAsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBlbnRyeSBwb2ludHMgSSYjMzk7bSBjb25jZXJuZWQgd2l0aCBhcmUgYHBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCBpbiBgbW0vc3BhcnNlLXZtZW1tYXAuY2AgYW5kIGFsc28gYHNwYXJzZV9pbml0X25pZGAgaW4gYG1tL3NwYXJzZS5jYC4gTm93LCBgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIHNlZW1zIHRvIGJlIHRoZSBjcnVjaWFsIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIGBzcGFyc2VfYWRkX3NlY3Rpb25gLCBJIHNlZSBub3cuIFRoaXMgc3VnZ2VzdHMgYSBtb2R1bGFyIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEJhc2ljYWxseSwgYHNwYXJzZV9hZGRfc2VjdGlvbmAgdHJpZ2dlcnMgdGhlIHBvcHVsYXRpb24gb2YgdGhlIG1lbW1hcCBzdHJ1Y3R1cmUgZm9yIGEgcGFydGljdWxhciBzZWN0aW9uLCBhbmQgd2l0aGluIGl0LCBgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGhhbmRsZXMgdGhlIGFjdHVhbCBuaXR0eS1ncml0dHkgb2YgY3JlYXRpbmcgYW5kIHBvcHVsYXRpbmcgdGhvc2UgbWVtb3J5IG1hcHMuIEdvdCBpdC4gVGhpcyBtYWtlcyB0aGUgY29kZSBtb3JlIG1hbmFnZWFibGUsIHNlcGFyYXRpbmcgdGhlIGFsbG9jYXRpb24gbWFuYWdlbWVudCBmcm9tIHRoZSBwb3B1bGF0aW9uLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBzcGFyc2VfaW5pdF9uaWRgIGFuZCBgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIHRvIGdldCBhIGZ1bGwgdmlldyBvZiB0aGUgbWVtb3J5IGxheW91dCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbW0uaD00ODkyPXVuc2lnbmVkIGxvbmcgc2VjdGlvbl9tYXBfc2l6ZSh2b2lkKTtcbmluY2x1ZGUvbGludXgvbW0uaDo0ODkzOnN0cnVjdCBwYWdlICogX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbmluY2x1ZGUvbGludXgvbW0uaC00ODk0LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTU0OD1zdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKVxuLS1cbm1tL3NwYXJzZS12bWVtbWFwLmMtNTUyLVxubW0vc3BhcnNlLXZtZW1tYXAuYzo1NTM6c3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbm1tL3NwYXJzZS12bWVtbWFwLmMtNTU0LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTY2Mz1zdGF0aWMgaW50IF9fbWVtaW5pdCBzZWN0aW9uX25yX3ZtZW1tYXBfcGFnZXModW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy02ODctXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjY4ODpzdGF0aWMgc3RydWN0IHBhZ2UgKiBfX21lbWluaXQgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTY4OS1cdFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgaW50IG5pZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy02OTEte1xubW0vc3BhcnNlLXZtZW1tYXAuYzo2OTI6XHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAocGZuLCBucl9wYWdlcywgbmlkLCBhbHRtYXAsXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTY5My1cdFx0XHRcdFx0XHQgICAgICBwZ21hcCk7XG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy02OTktXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjcwMDpzdGF0aWMgdm9pZCBkZXBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxubW0vc3BhcnNlLXZtZW1tYXAuYy03MDEtXHRcdHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLCBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuLS1cbm1tL3NwYXJzZS12bWVtbWFwLmM9NzgyPXN0YXRpYyB2b2lkIHNlY3Rpb25fZGVhY3RpdmF0ZSh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTgyMC1cdGlmICghc2VjdGlvbl9pc19lYXJseSlcbm1tL3NwYXJzZS12bWVtbWFwLmM6ODIxOlx0XHRkZXBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHBmbiwgbnJfcGFnZXMsIGFsdG1hcCwgcGdtYXApO1xubW0vc3BhcnNlLXZtZW1tYXAuYy04MjItXHRlbHNlIGlmIChtZW1tYXApXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYz04Mjk9c3RhdGljIHN0cnVjdCBwYWdlICogX19tZW1pbml0IHNlY3Rpb25fYWN0aXZhdGUoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBwZm4sXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy04NjItXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjg2MzpcdG1lbW1hcCA9IHBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHBmbiwgbnJfcGFnZXMsIG5pZCwgYWx0bWFwLCBwZ21hcCk7XG5tbS9zcGFyc2Utdm1lbW1hcC5jLTg2NC1cdGlmICghbWVtbWFwKSB7XG4tLVxubW0vc3BhcnNlLmM9MjMyPXVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcbi0tXG5tbS9zcGFyc2UuYy0yMzYtXG5tbS9zcGFyc2UuYzoyMzc6c3RydWN0IHBhZ2UgX19pbml0ICpfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxubW0vc3BhcnNlLmMtMjM4LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2UuYz0yOTg9c3RhdGljIHZvaWQgX19pbml0IHNwYXJzZV9pbml0X25pZChpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHBudW1fYmVnaW4sXG4tLVxubW0vc3BhcnNlLmMtMzIwLVx0XHRpZiAoIXByZWluaXRlZF92bWVtbWFwX3NlY3Rpb24obXMpKSB7XG5tbS9zcGFyc2UuYzozMjE6XHRcdFx0bWFwID0gX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcChwZm4sIFBBR0VTX1BFUl9TRUNUSU9OLFxubW0vc3BhcnNlLmMtMzIyLVx0XHRcdFx0XHRuaWQsIE5VTEwsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MjgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgTWVtb3J5IEhvdHBsdWcgVExCIEZsdXNoIG9uIFJJU0MtVioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29kZSBpbiBxdWVzdGlvbiBpbnZvbHZlcyBgc2VjdGlvbl9hY3RpdmF0ZWAsIGNhbGxlZCBmcm9tIGBzcGFyc2VfYWRkX3NlY3Rpb25gLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBfX2FkZF9wYWdlc2AuIFRoaXMgd2hvbGUgcGF0aCByZWxhdGVzIHRvIG1lbW9yeSBob3RwbHVnLCBhbmQsIGNydWNpYWxseSwgdXNlcnNwYWNlICpjYW4qIHRyaWdnZXIgdGhpcyB0aHJvdWdoIHN5c2ZzLCBzbyBpdCYjMzk7cyBhIHJlYWxpc3RpYyBleGVjdXRpb24gcGF0aC4gVGhpcyBzcGVjaWZpYyBjaGFuZ2UgaXMgYSBUTEIgZmx1c2ggb24gUklTQy1WIGFmdGVyIG1lbW9yeSBob3RwbHVnLCBhIHRhcmdldGVkIGFyY2hpdGVjdHVyYWwgYWRqdXN0bWVudC4KClRoZSBjb3JlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgZnV6emluZyBpcyBqdXN0aWZpZWQuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0aG91Z2ggcXVpdGUgc21hbGwgYW5kIHNwZWNpYWxpemVkLCB0aGF0IGltcGFjdHMgYSBjb3JlIHN5c3RlbSBmdW5jdGlvbiB0cmlnZ2VyZWQgYnkgYSB1c2VyIGFjdGlvbiwgSSBuZWVkIHRvIGV2YWx1YXRlIHRoaXMgcHJvcGVybHkuIFRoZSBwcmltYXJ5IGNvbmNlcm4gaXMgaWYgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBhbmQgdGhlIHRleHQgc2F5cyBpdCBpcyBpbiBRRU1VLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KClRoZSBwcm92aWRlZCBndWlkYW5jZSBzdGF0ZXMgJiMzNDtJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLiYjMzQ7IFRoaXMgcGF0Y2ggKmRvZXMqIHRvdWNoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIGZvciBSSVNDLVYgYW5kIGFsc28gaW50ZXJhY3RzIHdpdGggdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGNvcmUsIHNwZWNpZmljYWxseSBgc3BhcnNlLXZtZW1tYXAuY2AuCgpDb25zaWRlcmluZyB0aGlzLCBJIG5lZWQgdG8gZm9jdXMgb24gcmVhY2hhYmlsaXR5LiBTaW5jZSBRRU1VIGNhbiBiZSB1c2VkIGZvciBtZW1vcnkgaG90cGx1ZywgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgZnV6emluZyB0aGlzIGlzIHRoZSByaWdodCBkZWNpc2lvbi4gVGhpcyBtZWFucyBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYHRydWVgLgoKUmVnYXJkaW5nIGZ1enppbmcgdGFyZ2V0cywgd2hpbGUgdGhlIHBhdGNoIGl0c2VsZiBpcyBqdXN0IGEgVExCIGZsdXNoLCB0aGUgcGF0aCAqbGVhZGluZyogdG8gaXQgaXMgaW50ZXJlc3RpbmcuIFNvIHRoZSBjcml0aWNhbCBzZWN0aW9ucyB0byBmb2N1cyBvbiBhcmUgYF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGFuZCBgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZWAuIFdoaWxlIHRoZSBsYXR0ZXIgaXMganVzdCBhIHdyYXBwZXIgZm9yIGBtYXJrX25ld192YWxpZF9tYXBgLCB0aGUgZm9ybWVyIGlzIGEgbWVtb3J5IGhvdHBsdWcgZnVuY3Rpb24gYW5kIHRoZSBlbnRyeSBwb2ludCB0aGF0IG1ha2VzIHNlbnNlLgoKTGFzdGx5LCBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uIGVuYWJsZXMgYFNQQVJTRU1FTV9WTUVNTUFQYCBhbmQgYE1FTU9SWV9IT1RQTFVHYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7U1BBUlNFTUVNX1ZNRU1NQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9tbS9tZW1vcnktbW9kZWwucnN0PTEwMj12bWVtbWFwXCYjMzQ7LiBUaGUgc2VsZWN0aW9uIGlzIG1hZGUgYXQgYnVpbGQgdGltZSBhbmQgaXQgaXMgZGV0ZXJtaW5lZCBieVxuRG9jdW1lbnRhdGlvbi9tbS9tZW1vcnktbW9kZWwucnN0OjEwMzp0aGUgdmFsdWUgb2YgYENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUGAuXG5Eb2N1bWVudGF0aW9uL21tL21lbW9yeS1tb2RlbC5yc3QtMTA0LVxuLS1cbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdD0xMzQ9Wk9ORV9ERVZJQ0VcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdC0xMzUtPT09PT09PT09PT1cbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdDoxMzY6VGhlIGBaT05FX0RFVklDRWAgZmFjaWxpdHkgYnVpbGRzIHVwb24gYFNQQVJTRU1FTV9WTUVNTUFQYCB0byBvZmZlclxuRG9jdW1lbnRhdGlvbi9tbS9tZW1vcnktbW9kZWwucnN0LTEzNy1gc3RydWN0IHBhZ2VgIGBtZW1fbWFwYCBzZXJ2aWNlcyBmb3IgZGV2aWNlIGRyaXZlciBpZGVudGlmaWVkIHBoeXNpY2FsXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdD02Mz1TUEFSU0VNRU3mqKHlnovlsIbniannkIblhoXlrZjmmL7npLrkuLrkuIDkuKrpg6jliIbnmoTpm4blkIjjgILkuIDkuKrljLrmrrXnlKhtZW1fc2VjdGlvbue7k+aehFxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL21lbW9yeS1tb2RlbC5yc3QtODYt6YCa6L+HU1BBUlNFTUVN77yM5pyJ5Lik56eN5Y+v6IO955qE5pa55byP5bCGUEZO6L2s5o2i5Li655u45bqU55qEIGBzdHJ1Y3QgcGFnZWAgLS1cJiMzNDtjbGFzc2ljIHNwYXJzZVwmIzM0O+WSjFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdDo4NzogXCYjMzQ7c3BhcnNlIHZtZW1tYXBcJiMzNDvjgILpgInmi6nmmK/lnKjmnoTlu7rml7bov5vooYznmoTvvIzlroPnlLEgYENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUGAg55qEXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9tZW1vcnktbW9kZWwucnN0LTg4LSDlgLzlhrPlrprjgIJcbi0tXG5hcmNoL2FybTY0L0tjb25maWc9MTYwNj1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXG5hcmNoL2FybTY0L0tjb25maWctMTYwNy1cdGRlZl9ib29sIHlcbmFyY2gvYXJtNjQvS2NvbmZpZzoxNjA4Olx0c2VsZWN0IFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxuYXJjaC9hcm02NC9LY29uZmlnLTE2MDktXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYz0yMTAzPXN0YXRpYyBib29sIGNhbl91bm1hcF93aXRob3V0X3NwbGl0KHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMjExOS1cdC8qIFBGTiByYW5nZSYjMzk7cyB2bWVtbWFwIGVkZ2VzIGFyZSBsZWFmIGVudHJ5IGFsaWduZWQgKi9cbmFyY2gvYXJtNjQvbW0vbW11LmM6MjEyMDpcdEJVSUxEX0JVR19PTighSVNfRU5BQkxFRChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApKTtcbmFyY2gvYXJtNjQvbW0vbW11LmMtMjEyMS1cdHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpcGZuX3RvX3BhZ2UocGZuKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnPTc3NT1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTc3Ni1cdGRlZl9ib29sIDY0QklUXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnOjc3NzpcdHNlbGVjdCBTUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEVcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzc4LVx0aGVscFxuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTEzLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmg6MTQ6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMTUtI2RlZmluZSBWTUVNTUFQX1NJWkVcdChzaXplb2Yoc3RydWN0IHBhZ2UpICogKDFVTCBcdTAwM2NcdTAwM2MgKGNwdV9wYWJpdHMgJiM0MzsgMSAtIFBBR0VfU0hJRlQpKSlcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9MTIyPXZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuLS1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xMzEtXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTMyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xMzMtdm9pZCBfX21lbWluaXQgdm1lbW1hcF9zZXRfcG1kKHBtZF90ICpwbWQsIHZvaWQgKnAsIGludCBub2RlLFxuLS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnPTc5ND1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXG4tLVxuYXJjaC9wb3dlcnBjL0tjb25maWctNzk2LVx0ZGVwZW5kcyBvbiBQUEM2NFxuYXJjaC9wb3dlcnBjL0tjb25maWc6Nzk3Olx0c2VsZWN0IFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxuYXJjaC9wb3dlcnBjL0tjb25maWctNzk4LVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWc9MzU9Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWctMzYtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnOjM3OiMgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQIGlzIG5vdCBzZXRcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWctMzgtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTE3LSAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjE4OiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9FWFRSRU1FKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTE5LSNkZWZpbmUgSF9NQVhfUEhZU01FTV9CSVRTXHQ1MVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0xMDktXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MTEwOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9FWFRSRU1FKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oLTExMS0jZGVmaW5lIFJfTUFYX1BIWVNNRU1fQklUU1x0NTFcbi0tXG5hcmNoL3Bvd2VycGMva2V4ZWMvdm1jb3JlX2luZm8uYz02PXZvaWQgYXJjaF9jcmFzaF9zYXZlX3ZtY29yZWluZm8odm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2V4ZWMvdm1jb3JlX2luZm8uYy0xNS0jZW5kaWZcbmFyY2gvcG93ZXJwYy9rZXhlYy92bWNvcmVfaW5mby5jOjE2OiNpZiBkZWZpbmVkKENPTkZJR19QUEM2NCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxuYXJjaC9wb3dlcnBjL2tleGVjL3ZtY29yZV9pbmZvLmMtMTctXHRWTUNPUkVJTkZPX1NZTUJPTCh2bWVtbWFwX2xpc3QpO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0yNi1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYzoyNzojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtMjgtLypcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM9MTMxPXZvaWQgaGFzaF9fdm1lbW1hcF9yZW1vdmVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xNDAtI2VuZGlmXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM6MTQxOiNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xNDItXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz0xMDc4PXN0YXRpYyB2b2lkIF9faW5pdCBodGFiX2luaXRfcGFnZV9zaXplcyh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTEyOC1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTEyOTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTExMzAtXHQvKlxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTEzOC1cdFx0bW11X3ZtZW1tYXBfcHNpemUgPSBtbXVfdmlydHVhbF9wc2l6ZTtcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTEzOTojZW5kaWYgLyogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQICovXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTExNDAtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMTQyLVx0ICAgICAgIFwmIzM0O3ZpcnR1YWwgPSAlZCwgaW8gPSAlZFwmIzM0O1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoxMTQzOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTE0NC1cdCAgICAgICBcJiMzNDssIHZtZW1tYXAgPSAlZFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTE0OS1cdCAgICAgICBtbXVfcHNpemVfZGVmc1ttbXVfaW9fcHNpemVdLnNoaWZ0XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjExNTA6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMTUxLVx0ICAgICAgICxtbXVfcHNpemVfZGVmc1ttbXVfdm1lbW1hcF9wc2l6ZV0uc2hpZnRcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jPTI3PUVYUE9SVF9TWU1CT0xfR1BMKG1tdV9wc2l6ZV9kZWZzKTtcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjgtXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jOjI5OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMzAtaW50IG1tdV92bWVtbWFwX3BzaXplID0gTU1VX1BBR0VfNEs7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz03MjM9c3RhdGljIHZvaWQgZnJlZV9wdWRfdGFibGUocHVkX3QgKnB1ZF9zdGFydCwgcDRkX3QgKnA0ZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTczNy1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6NzM4OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtNzM5LXN0YXRpYyBib29sIF9fbWVtaW5pdCB2bWVtbWFwX3BtZF9pc191bnVzZWQodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTc4Nz1zdGF0aWMgdm9pZCBfX21lbWluaXQgcmVtb3ZlX3B0ZV90YWJsZShwdGVfdCAqcHRlX3N0YXJ0LCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy04MDgtXHRcdH1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6ODA5OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtODEwLVx0XHRlbHNlIGlmICghZGlyZWN0IFx1MDAyNlx1MDAyNiB2bWVtbWFwX3BhZ2VfaXNfdW51c2VkKGFkZHIsIG5leHQpKSB7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz04MjA9c3RhdGljIHZvaWQgX19tZW1pbml0IHJlbW92ZV9wbWRfdGFibGUocG1kX3QgKnBtZF9zdGFydCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtODQyLVx0XHRcdH1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6ODQzOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtODQ0LVx0XHRcdGVsc2UgaWYgKCFkaXJlY3QgXHUwMDI2XHUwMDI2IHZtZW1tYXBfcG1kX2lzX3VudXNlZChhZGRyLCBuZXh0KSkge1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9OTQ2PWludCBfX21lbWluaXQgcmFkaXhfX3JlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy05NTItXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjk1MzojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTk1NC1zdGF0aWMgaW50IF9fbWFwX2tlcm5lbF9wYWdlX25pZCh1bnNpZ25lZCBsb25nIGVhLCB1bnNpZ25lZCBsb25nIHBhLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYz00Njc9dm9pZCBzbGJfaW5pdGlhbGl6ZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00NzEtXHRzdGF0aWMgaW50IHNsYl9lbmNvZGluZ19pbml0ZWQ7XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmM6NDcyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00NzMtXHR1bnNpZ25lZCBsb25nIHZtZW1tYXBfbGxwO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00ODAtXHRnZXRfcGFjYSgpLVx1MDAzZXZtYWxsb2Nfc2xscCA9IFNMQl9WU0lEX0tFUk5FTCB8IHZtYWxsb2NfbGxwO1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsYi5jOjQ4MTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmMtNDgyLVx0dm1lbW1hcF9sbHAgPSBtbXVfcHNpemVfZGVmc1ttbXVfdm1lbW1hcF9wc2l6ZV0uc2xscDtcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmMtNDg3LVx0XHRwcl9kZXZlbChcJiMzNDtTTEI6IGlvICAgICAgTExQID0gJTA0bHhcXG5cJiMzNDssIGlvX2xscCk7XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmM6NDg4OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00ODktXHRcdHByX2RldmVsKFwmIzM0O1NMQjogdm1lbW1hcCBMTFAgPSAlMDRseFxcblwmIzM0Oywgdm1lbW1hcF9sbHApO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYz02NjI9c3RhdGljIGxvbmcgc2xiX2FsbG9jYXRlX2tlcm5lbCh1bnNpZ25lZCBsb25nIGVhLCB1bnNpZ25lZCBsb25nIGlkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy02NzUtXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmM6Njc2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy02NzctXHR9IGVsc2UgaWYgKGlkID09IFZNRU1NQVBfUkVHSU9OX0lEKSB7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy02Ni1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM6Njc6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy02OC0vKlxuLS1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM9Mzc4PXZvaWQgX19yZWYgdm1lbW1hcF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtMzg5LVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzozOTA6I2VuZGlmIC8qIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCAqL1xuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy0zOTEtXG4tLVxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jLTE2LVxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jOjE3OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy0xOC0vKlxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYz00OD12b2lkIHZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmMtNTItI2VuZGlmXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmM6NTM6I2VuZGlmIC8qIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCAqL1xuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jLTU0LVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvaGFzaHBhZ2V0YWJsZS5jPTQ5MD1zdGF0aWMgdm9pZCB3YWxrX3ZtZW1tYXAoc3RydWN0IHBnX3N0YXRlICpzdClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL2hhc2hwYWdldGFibGUuYy00OTMtXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL2hhc2hwYWdldGFibGUuYzo0OTQ6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKSlcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvaGFzaHBhZ2V0YWJsZS5jLTQ5NS1cdFx0cmV0dXJuO1xuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZz0xMz1jb25maWcgUklTQ1Zcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWctMjItXHRzZWxlY3QgQVJDSF9FTkFCTEVfSFVHRVBBR0VfTUlHUkFUSU9OIGlmIEhVR0VUTEJfUEFHRSBcdTAwMjZcdTAwMjYgTUlHUkFUSU9OXG5hcmNoL3Jpc2N2L0tjb25maWc6MjM6XHRzZWxlY3QgQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUcgaWYgU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcmlzY3YvS2NvbmZpZy0yNC1cdHNlbGVjdCBBUkNIX0VOQUJMRV9TUExJVF9QTURfUFRMT0NLIGlmIFBHVEFCTEVfTEVWRUxTIFx1MDAzZSAyXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnPTMwOD1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTMxMS1cdHNlbGVjdCBTUEFSU0VNRU1fU1RBVElDIGlmIDMyQklUIFx1MDAyNlx1MDAyNiBTUEFSU0VNRU1cbmFyY2gvcmlzY3YvS2NvbmZpZzozMTI6XHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlmIDY0QklUXG5hcmNoL3Jpc2N2L0tjb25maWctMzEzLVxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTkxLSAqIERlZmluZSB2bWVtbWFwIGZvciBwZm5fdG9fcGFnZSBcdTAwMjYgcGFnZV90b19wZm4gY2FsbHMuIE5lZWRlZCBpZiBrZXJuZWxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjkyOiAqIGlzIGNvbmZpZ3VyZWQgd2l0aCBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgZW5hYmxlZC5cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTkzLSAqL1xuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTk4LSNkZWZpbmUgRElSRUNUX01BUF9QSFlTTUVNX0VORCAocGh5c19yYW1fYmFzZSAmIzQzOyBLRVJOX1ZJUlRfU0laRSAtIDEpXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaDo5OTojZWxpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEwMC0jZGVmaW5lIERJUkVDVF9NQVBfUEhZU01FTV9FTkQgXFxcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMjA2PXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX3N3cF9jbGVhcl9leGNsdXNpdmUocHRlX3QgcHRlKVxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEyNTUtXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMjU2Oi8qIE5lZWRlZCBvbiBTUEFSU0VNRU1fVk1FTU1BUCAqL1xuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTI1Ny0jZGVmaW5lIHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZVxuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTYwPUVYUE9SVF9TWU1CT0wocGh5c19yYW1fYmFzZSk7XG5hcmNoL3Jpc2N2L21tL2luaXQuYy02MS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjYyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTYzLSNkZWZpbmUgVk1FTU1BUF9BRERSX0FMSUdOXHRtYXgoMVVMTCBcdTAwM2NcdTAwM2MgU0VDVElPTl9TSVpFX0JJVFMsIFxcXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MjA3PXN0YXRpYyB2b2lkIF9faW5pdCBzZXR1cF9ib290bWVtKHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMjMzLVx0cGh5c19yYW1fYmFzZSA9IG1lbWJsb2NrX3N0YXJ0X29mX0RSQU0oKSBcdTAwMjYgUE1EX01BU0s7XG5hcmNoL3Jpc2N2L21tL2luaXQuYzoyMzQ6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMjM1LVx0dm1lbW1hcF9zdGFydF9wZm4gPSByb3VuZF9kb3duKHBoeXNfcmFtX2Jhc2UsIFZNRU1NQVBfQUREUl9BTElHTikgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTM0OT12b2lkIF9faW5pdCBtaXNjX21lbV9pbml0KHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTM1Mi1cdGFyY2hfbnVtYV9pbml0KCk7XG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxMzUzOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNTQtXHQvKiBUaGUgZW50aXJlIFZNRU1NQVAgcmVnaW9uIGhhcyBiZWVuIHBvcHVsYXRlZC4gRmx1c2ggVExCIGZvciB0aGlzIHJlZ2lvbiAqL1xuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNjAtXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxMzYxOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNjItaW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBpbnQgbm9kZSxcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xMzY3LVx0LypcbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjEzNjg6XHQgKiBOb3RlIHRoYXQgU1BBUlNFTUVNX1ZNRU1NQVAgaXMgb25seSBzZWxlY3RlZCBmb3IgcnY2NCBhbmQgdGhhdCB3ZVxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTM2OS1cdCAqIGNhbiYjMzk7dCB1c2UgaHVnZXBhZ2UgbWFwcGluZ3MgZm9yIDItbGV2ZWwgcGFnZSB0YWJsZSBiZWNhdXNlIGluIGNhc2Ugb2Zcbi0tXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jPTYxPWVudW0gYWRkcmVzc19tYXJrZXJzX2lkeCB7XG4tLVxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy02NS1cdFBDSV9JT19FTkRfTlIsXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jOjY2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtNjctXHRWTUVNTUFQX1NUQVJUX05SLFxuLS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9ODQ9c3RhdGljIHN0cnVjdCBhZGRyX21hcmtlciBhZGRyZXNzX21hcmtlcnNbXSA9IHtcbi0tXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTg4LVx0ezAsIFwmIzM0O1BDSSBJL08gZW5kXCYjMzQ7fSxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6ODk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy05MC1cdHswLCBcJiMzNDt2bWVtbWFwIHN0YXJ0XCYjMzQ7fSxcbi0tXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jPTQyMz1zdGF0aWMgaW50IF9faW5pdCBwdGR1bXBfaW5pdCh2b2lkKVxuLS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtNDMwLVx0YWRkcmVzc19tYXJrZXJzW1BDSV9JT19FTkRfTlJdLnN0YXJ0X2FkZHJlc3MgPSBQQ0lfSU9fRU5EO1xuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYzo0MzE6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy00MzItXHRhZGRyZXNzX21hcmtlcnNbVk1FTU1BUF9TVEFSVF9OUl0uc3RhcnRfYWRkcmVzcyA9IFZNRU1NQVBfU1RBUlQ7XG4tLVxuYXJjaC9zMzkwL0tjb25maWc9NzEwPWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcbmFyY2gvczM5MC9LY29uZmlnLTcxMS1cdGRlZl9ib29sIHlcbmFyY2gvczM5MC9LY29uZmlnOjcxMjpcdHNlbGVjdCBTUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEVcbmFyY2gvczM5MC9LY29uZmlnLTcxMy1cbi0tXG5hcmNoL3NwYXJjL0tjb25maWc9MjcyPWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcbmFyY2gvc3BhcmMvS2NvbmZpZy0yNzMtXHRkZWZfYm9vbCB5IGlmIFNQQVJDNjRcbmFyY2gvc3BhcmMvS2NvbmZpZzoyNzQ6XHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFXG5hcmNoL3NwYXJjL0tjb25maWctMjc1LVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUz0xNzE9a3ZtYXBfZHRsYl9sb2FkOlxuLS1cbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0xOTUtXG5hcmNoL3NwYXJjL2tlcm5lbC9rdGxiLlM6MTk2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0xOTcta3ZtYXBfdm1lbW1hcDpcbi0tXG5hcmNoL3NwYXJjL2tlcm5lbC9rdGxiLlM9MjAyPWt2bWFwX2R0bGJfbm9ubGluZWFyOlxuLS1cbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0yMDgtXG5hcmNoL3NwYXJjL2tlcm5lbC9rdGxiLlM6MjA5OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0yMTAtXHQvKiBEbyBub3QgdXNlIHRoZSBUU0IgZm9yIHZtZW1tYXAuICAqL1xuLS1cbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jPTI1NDI9RVhQT1JUX1NZTUJPTChfUEFHRV9DQUNIRSk7XG5hcmNoL3NwYXJjL21tL2luaXRfNjQuYy0yNTQzLVxuYXJjaC9zcGFyYy9tbS9pbml0XzY0LmM6MjU0NDojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5hcmNoL3NwYXJjL21tL2luaXRfNjQuYy0yNTQ1LXZvaWQgX19tZW1pbml0IHZtZW1tYXBfc2V0X3BtZChwbWRfdCAqcG1kLCB2b2lkICpwLCBpbnQgbm9kZSxcbi0tXG5hcmNoL3NwYXJjL21tL2luaXRfNjQuYz0yNTYyPWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHZzdGFydCwgdW5zaWduZWQgbG9uZyB2ZW5kLFxuLS1cbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jLTI1NjYtfVxuYXJjaC9zcGFyYy9tbS9pbml0XzY0LmM6MjU2NzojZW5kaWYgLyogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQICovXG5hcmNoL3NwYXJjL21tL2luaXRfNjQuYy0yNTY4LVxuLS1cbmFyY2gveDg2L0tjb25maWc9MTU1Nz1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXG4tLVxuYXJjaC94ODYvS2NvbmZpZy0xNTU5LVx0c2VsZWN0IFNQQVJTRU1FTV9TVEFUSUMgaWYgWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnOjE1NjA6XHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlmIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy0xNTYxLVxuLS1cbmFyY2gveDg2L2VudHJ5L3Zkc28vdmRzbzMyL2Zha2VfMzJiaXRfYnVpbGQuaC0xMi0jdW5kZWYgQ09ORklHX0lMTEVHQUxfUE9JTlRFUl9WQUxVRVxuYXJjaC94ODYvZW50cnkvdmRzby92ZHNvMzIvZmFrZV8zMmJpdF9idWlsZC5oOjEzOiN1bmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gveDg2L2VudHJ5L3Zkc28vdmRzbzMyL2Zha2VfMzJiaXRfYnVpbGQuaC0xNC0jdW5kZWYgQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXG4tLVxuZnMvS2NvbmZpZz0yNzc9Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXG4tLVxuZnMvS2NvbmZpZy0yNzktXHRkZXBlbmRzIG9uIEFSQ0hfV0FOVF9PUFRJTUlaRV9IVUdFVExCX1ZNRU1NQVBcbmZzL0tjb25maWc6MjgwOlx0ZGVwZW5kcyBvbiBTUEFSU0VNRU1fVk1FTU1BUFxuZnMvS2NvbmZpZzoyODE6XHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfUFJFSU5JVCBpZiBBUkNIX1dBTlRfSFVHRVRMQl9WTUVNTUFQX1BSRUlOSVRcbmZzL0tjb25maWctMjgyLVxuLS1cbmZzL3Byb2Mva2NvcmUuYz0xNDI9c3RhdGljIGludCBrY29yZV9yYW1fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuLS1cbmZzL3Byb2Mva2NvcmUuYy0xNTctXG5mcy9wcm9jL2tjb3JlLmM6MTU4OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmZzL3Byb2Mva2NvcmUuYy0xNTktLyogY2FsY3VsYXRlIHZtZW1tYXAmIzM5O3MgYWRkcmVzcyBmcm9tIGdpdmVuIHN5c3RlbSByYW0gcGZuIGFuZCByZWdpc3RlciBpdCAqL1xuLS1cbmluY2x1ZGUvYXNtLWdlbmVyaWMvbWVtb3J5X21vZGVsLmg9MjY9c3RhdGljIGlubGluZSBpbnQgcGZuX3ZhbGlkKHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbmluY2x1ZGUvYXNtLWdlbmVyaWMvbWVtb3J5X21vZGVsLmgtNDItXG5pbmNsdWRlL2FzbS1nZW5lcmljL21lbW9yeV9tb2RlbC5oOjQzOiNlbGlmIGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxuaW5jbHVkZS9hc20tZ2VuZXJpYy9tZW1vcnlfbW9kZWwuaC00NC1cbi0tXG5pbmNsdWRlL2xpbnV4L21tLmg9MjExPWV4dGVybiB1bnNpZ25lZCBsb25nIHN5c2N0bF9hZG1pbl9yZXNlcnZlX2tieXRlcztcbmluY2x1ZGUvbGludXgvbW0uaC0yMTItXG5pbmNsdWRlL2xpbnV4L21tLmg6MjEzOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFx1MDAyNlx1MDAyNiAhZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXG5pbmNsdWRlL2xpbnV4L21tLmgtMjE0LWJvb2wgcGFnZV9yYW5nZV9jb250aWd1b3VzKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmg9MjI2NT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbm9tbXVfc2hhcmVkX3ZtYV9mbGFncyhjb25zdCB2bWFfZmxhZ3NfdCAqZmxhZ3MpXG4tLVxuaW5jbHVkZS9saW51eC9tbS5oLTIyNzAtXG5pbmNsdWRlL2xpbnV4L21tLmg6MjI3MTojaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNKSBcdTAwMjZcdTAwMjYgIWRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxuaW5jbHVkZS9saW51eC9tbS5oLTIyNzItI2RlZmluZSBTRUNUSU9OX0lOX1BBR0VfRkxBR1Ncbi0tXG5pbmNsdWRlL2xpbnV4L21tLmg9NDkxOD12b2lkIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtNDkyMS1cbmluY2x1ZGUvbGludXgvbW0uaDo0OTIyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmluY2x1ZGUvbGludXgvbW0uaC00OTIzLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB2bWVtX2FsdG1hcF9vZmZzZXQoY29uc3Qgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC03MC0jZGVmaW5lIE1BWF9GT0xJT19PUkRFUlx0XHRNQVhfUEFHRV9PUkRFUlxuaW5jbHVkZS9saW51eC9tbXpvbmUuaDo3MTojZWxpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFx1MDAyNlx1MDAyNiAhZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTcyLS8qXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0xOTg0PXN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSB7XG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTE5ODUtXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoxOTg2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTk4Ny1cdERFQ0xBUkVfQklUTUFQKHN1YnNlY3Rpb25fbWFwLCBTVUJTRUNUSU9OU19QRVJfU0VDVElPTik7XG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0yMDczPWVudW0ge1xuLS1cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjA4MC0jZW5kaWZcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MjA4MTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQX1BSRUlOSVRcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjA4Mi1cdFNFQ1RJT05fSVNfVk1FTU1BUF9QUkVJTklUX0JJVCxcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIwOTMtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIwOTQ6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIwOTUtI2RlZmluZSBTRUNUSU9OX0lTX1ZNRU1NQVBfUFJFSU5JVFx0QklUKFNFQ1RJT05fSVNfVk1FTU1BUF9QUkVJTklUX0JJVClcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTIxNDU9c3RhdGljIGlubGluZSBpbnQgb25saW5lX2RldmljZV9zZWN0aW9uKGNvbnN0IHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlvbilcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIxNTAtXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIxNTE6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIxNTItc3RhdGljIGlubGluZSBpbnQgcHJlaW5pdGVkX3ZtZW1tYXBfc2VjdGlvbihjb25zdCBzdHJ1Y3QgbWVtX3NlY3Rpb24gKnNlY3Rpb24pXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0yMTkyPXN0YXRpYyBpbmxpbmUgaW50IHN1YnNlY3Rpb25fbWFwX2luZGV4KHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjE5Ni1cbmluY2x1ZGUvbGludXgvbW16b25lLmg6MjE5NzojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIxOTgtc3RhdGljIGlubGluZSBpbnQgcGZuX3NlY3Rpb25fdmFsaWQoc3RydWN0IG1lbV9zZWN0aW9uICptcywgdW5zaWduZWQgbG9uZyBwZm4pXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0yMzEwPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBuZXh0X3ZhbGlkX3Bmbih1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBlbmRfcGZuKVxuLS1cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjMyMi1cdCAqL1xuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoyMzIzOlx0aWYgKHBmbiBcdTAwMjYgfihJU19FTkFCTEVEKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgP1xuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0yMzI0LVx0XHQgICBQQUdFX1NVQlNFQ1RJT05fTUFTSyA6IFBBR0VfU0VDVElPTl9NQVNLKSlcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNTEtICovXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0Lmg6NTI6I2lmIGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTSkgXHUwMDI2XHUwMDI2ICFkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaC01My0jZGVmaW5lIFNFQ1RJT05TX1dJRFRIXHRcdFNFQ1RJT05TX1NISUZUXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLWxheW91dC5oLTYwLSNkZWZpbmUgTk9ERVNfV0lEVEhcdFx0Tk9ERVNfU0hJRlRcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaDo2MTojZWxpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaC02Mi0jZXJyb3IgXCYjMzQ7Vm1lbW1hcDogTm8gc3BhY2UgZm9yIG5vZGVzIGZpZWxkIGluIHBhZ2UgZmxhZ3NcJiMzNDtcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC05MC0gKiBTUEFSU0VNRU0gc2VjdGlvbiAoZm9yIHZhcmlhbnRzIG9mIFNQQVJTRU1FTSB0aGF0IHJlcXVpcmUgc2VjdGlvbiBpZHMgbGlrZVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6OTE6ICogU1BBUlNFTUVNX0VYVFJFTUUgd2l0aCAhU1BBUlNFTUVNX1ZNRU1NQVApLlxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtOTItICovXG4tLVxua2VybmVsL3ZtY29yZV9pbmZvLmM9MTQwPXN0YXRpYyBpbnQgX19pbml0IGNyYXNoX3NhdmVfdm1jb3JlaW5mb19pbml0KHZvaWQpXG4tLVxua2VybmVsL3ZtY29yZV9pbmZvLmMtMTc1LSNlbmRpZlxua2VybmVsL3ZtY29yZV9pbmZvLmM6MTc2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmtlcm5lbC92bWNvcmVfaW5mby5jLTE3Ny1cdFZNQ09SRUlORk9fU1lNQk9MX0FSUkFZKHZtZW1tYXApO1xuLS1cbm1tL0tjb25maWc9NDUxPWNvbmZpZyBTUEFSU0VNRU1fRVhUUkVNRVxuLS1cbm1tL0tjb25maWctNDU0LVxubW0vS2NvbmZpZzo0NTU6Y29uZmlnIFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxubW0vS2NvbmZpZy00NTYtXHRib29sXG5tbS9LY29uZmlnLTQ1Ny1cbm1tL0tjb25maWc6NDU4OmNvbmZpZyBTUEFSU0VNRU1fVk1FTU1BUFxubW0vS2NvbmZpZy00NTktXHRkZWZfYm9vbCB5XG5tbS9LY29uZmlnOjQ2MDpcdGRlcGVuZHMgb24gU1BBUlNFTUVNIFx1MDAyNlx1MDAyNiBTUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEVcbm1tL0tjb25maWctNDYxLVx0aGVscFxubW0vS2NvbmZpZzo0NjI6XHQgIFNQQVJTRU1FTV9WTUVNTUFQIHVzZXMgYSB2aXJ0dWFsbHkgbWFwcGVkIG1lbW1hcCB0byBvcHRpbWlzZVxubW0vS2NvbmZpZy00NjMtXHQgIHBmbl90b19wYWdlIGFuZCBwYWdlX3RvX3BmbiBvcGVyYXRpb25zLiAgVGhpcyBpcyB0aGUgbW9zdFxuLS1cbm1tL0tjb25maWctNDY1LVxubW0vS2NvbmZpZzo0NjY6Y29uZmlnIFNQQVJTRU1FTV9WTUVNTUFQX1BSRUlOSVRcbm1tL0tjb25maWctNDY3LVx0Ym9vbFxuLS1cbm1tL0tjb25maWc9NTIzPW1lbnVjb25maWcgTUVNT1JZX0hPVFBMVUdcbi0tXG5tbS9LY29uZmlnLTUyNS1cdHNlbGVjdCBNRU1PUllfSVNPTEFUSU9OXG5tbS9LY29uZmlnOjUyNjpcdGRlcGVuZHMgb24gU1BBUlNFTUVNX1ZNRU1NQVBcbm1tL0tjb25maWctNTI3LVx0ZGVwZW5kcyBvbiBBUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVR1xuLS1cbm1tL0tjb25maWc9NTk3PWNvbmZpZyBNSFBfTUVNTUFQX09OX01FTU9SWVxubW0vS2NvbmZpZy01OTgtXHRkZWZfYm9vbCB5XG5tbS9LY29uZmlnOjU5OTpcdGRlcGVuZHMgb24gTUVNT1JZX0hPVFBMVUcgXHUwMDI2XHUwMDI2IFNQQVJTRU1FTV9WTUVNTUFQXG5tbS9LY29uZmlnLTYwMC1cdGRlcGVuZHMgb24gQVJDSF9NSFBfTUVNTUFQX09OX01FTU9SWV9FTkFCTEVcbi0tXG5tbS9LY29uZmlnPTEyMzY9Y29uZmlnIFpPTkVfREVWSUNFXG4tLVxubW0vS2NvbmZpZy0xMjM5LVx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXG5tbS9LY29uZmlnOjEyNDA6XHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXG5tbS9LY29uZmlnLTEyNDEtXHRzZWxlY3QgWEFSUkFZX01VTFRJXG4tLVxubW0vS2NvbmZpZz0xNDA5PWNvbmZpZyBMUlVfR0VOXG4tLVxubW0vS2NvbmZpZy0xNDEyLVx0IyBtYWtlIHN1cmUgZm9saW8tXHUwMDNlZmxhZ3MgaGFzIGVub3VnaCBzcGFyZSBiaXRzXG5tbS9LY29uZmlnOjE0MTM6XHRkZXBlbmRzIG9uIDY0QklUIHx8ICFTUEFSU0VNRU0gfHwgU1BBUlNFTUVNX1ZNRU1NQVBcbm1tL0tjb25maWctMTQxNC1cdGhlbHBcbi0tXG5tbS9NYWtlZmlsZT04Nz1vYmotJChDT05GSUdfU1BBUlNFTUVNKVx0JiM0Mzs9IHNwYXJzZS5vXG5tbS9NYWtlZmlsZTo4ODpvYmotJChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApICYjNDM7PSBzcGFyc2Utdm1lbW1hcC5vXG5tbS9NYWtlZmlsZS04OS1vYmotJChDT05GSUdfTU1VX05PVElGSUVSKSAmIzQzOz0gbW11X25vdGlmaWVyLm9cbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuYz03MDQ9dm9pZCBodWdldGxiX3ZtZW1tYXBfb3B0aW1pemVfYm9vdG1lbV9mb2xpb3Moc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdClcbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuYy03MDgtXG5tbS9odWdldGxiX3ZtZW1tYXAuYzo3MDk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXG5tbS9odWdldGxiX3ZtZW1tYXAuYy03MTAtXG4tLVxubW0vaHVnZXRsYl92bWVtbWFwLmg9Mjk9dm9pZCBodWdldGxiX3ZtZW1tYXBfb3B0aW1pemVfYm9vdG1lbV9mb2xpb3Moc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCk7XG5tbS9odWdldGxiX3ZtZW1tYXAuaDozMDojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQX1BSRUlOSVRcbm1tL2h1Z2V0bGJfdm1lbW1hcC5oLTMxLXZvaWQgaHVnZXRsYl92bWVtbWFwX2luaXRfZWFybHkoaW50IG5pZCk7XG4tLVxubW0vaW50ZXJuYWwuaD05NTk9c3RhdGljIGlubGluZSB2b2lkIHNwYXJzZV9pbml0X29uZV9zZWN0aW9uKHN0cnVjdCBtZW1fc2VjdGlvbiAqbXMsXG4tLVxubW0vaW50ZXJuYWwuaC05NjgtXHQgKiBXZSBlbmNvZGUgdGhlIHN0YXJ0IFBGTiBvZiB0aGUgc2VjdGlvbiBpbnRvIHRoZSBtZW1fbWFwIHN1Y2ggdGhhdFxubW0vaW50ZXJuYWwuaDo5Njk6XHQgKiBwYWdlX3RvX3BmbigpIG9uICFDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgY2FuIHNpbXBseSBzdWJ0cmFjdCBpdFxubW0vaW50ZXJuYWwuaC05NzAtXHQgKiBmcm9tIHRoZSBwYWdlIHBvaW50ZXIgdG8gb2J0YWluIHRoZSBQRk4uXG4tLVxubW0vaW50ZXJuYWwuaD05OTA9c3RhdGljIGlubGluZSB2b2lkIHNwYXJzZV9pbml0KHZvaWQpIHt9XG4tLVxubW0vaW50ZXJuYWwuaC05OTUtICovXG5tbS9pbnRlcm5hbC5oOjk5NjojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5tbS9pbnRlcm5hbC5oLTk5Ny12b2lkIHNwYXJzZV9pbml0X3N1YnNlY3Rpb25fbWFwKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcbi0tXG5tbS9pbnRlcm5hbC5oPTk5OT1zdGF0aWMgaW5saW5lIHZvaWQgc3BhcnNlX2luaXRfc3Vic2VjdGlvbl9tYXAodW5zaWduZWQgbG9uZyBwZm4sXG4tLVxubW0vaW50ZXJuYWwuaC0xMDAyLX1cbm1tL2ludGVybmFsLmg6MTAwMzojZW5kaWYgLyogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQICovXG5tbS9pbnRlcm5hbC5oLTEwMDQtXG4tLVxubW0vbWVtYmxvY2suYz0yMTgzPXN0YXRpYyB2b2lkIF9faW5pdCBmcmVlX3VudXNlZF9tZW1tYXAodm9pZClcbi0tXG5tbS9tZW1ibG9jay5jLTIxODgtXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0hBVkVfQVJDSF9QRk5fVkFMSUQpIHx8XG5tbS9tZW1ibG9jay5jOjIxODk6XHQgICAgSVNfRU5BQkxFRChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApKVxubW0vbWVtYmxvY2suYy0yMTkwLVx0XHRyZXR1cm47XG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYz01NTM9c3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTU3Ny1cbm1tL3NwYXJzZS12bWVtbWFwLmM6NTc4OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBfUFJFSU5JVFxubW0vc3BhcnNlLXZtZW1tYXAuYy01NzktLypcbi0tXG5tbS9zcGFyc2UuYz0yMjA9c2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcbi0tXG5tbS9zcGFyc2UuYy0yMjQtXG5tbS9zcGFyc2UuYzoyMjU6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxubW0vc3BhcnNlLmMtMjI2LXVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcbi0tXG5tbS9zcGFyc2UuYz0yMzc9c3RydWN0IHBhZ2UgX19pbml0ICpfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxuLS1cbm1tL3NwYXJzZS5jLTI1MS19XG5tbS9zcGFyc2UuYzoyNTI6I2VuZGlmIC8qICFDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgKi9cbm1tL3NwYXJzZS5jLTI1My1cbi0tXG5tbS91dGlsLmM9MTU2Nz11bnNpZ25lZCBpbnQgZm9saW9fcHRlX2JhdGNoKHN0cnVjdCBmb2xpbyAqZm9saW8sIHB0ZV90ICpwdGVwLCBwdGVfdCBwdGUsXG4tLVxubW0vdXRpbC5jLTE1NzMtXG5tbS91dGlsLmM6MTU3NDojaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNKSBcdTAwMjZcdTAwMjYgIWRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxubW0vdXRpbC5jLTE1NzUtLyoqXG4tLVxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluPTE1Nj1MWF9DT05GSUcoQ09ORklHX1NQQVJTRU1FTV9FWFRSRU1FKVxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluOjE1NzpMWF9DT05GSUcoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluLTE1OC1MWF9DT05GSUcoQ09ORklHX0tBU0FOKVxuLS1cbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5PTIyPWNsYXNzIHBhZ2Vfb3BzKCk6XG4tLVxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMjQtICAgIGRlZiBfX2luaXRfXyhzZWxmKTpcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5OjI1OiAgICAgICAgaWYgbm90IGNvbnN0YW50cy5MWF9DT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVA6XG5zY3JpcHRzL2dkYi9saW51eC9tbS5weToyNjogICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3IoJiMzOTtPbmx5IHN1cHBvcnQgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQIG5vdyYjMzk7KVxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMjctICAgICAgICBpZiBjb25zdGFudHMuTFhfQ09ORklHX0FSTTY0IGFuZCB1dGlscy5pc190YXJnZXRfYXJjaCgmIzM5O2FhcmNoNjQmIzM5Oyk6XG4tLVxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHk9MzQ9Y2xhc3MgeDg2X3BhZ2Vfb3BzKCk6XG4tLVxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMTIwLSAgICBkZWYgcGZuX3NlY3Rpb25fdmFsaWQoc2VsZiwgbXMsIHBmbik6XG5zY3JpcHRzL2dkYi9saW51eC9tbS5weToxMjE6ICAgICAgICBpZiBjb25zdGFudHMuTFhfQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQOlxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMTIyLSAgICAgICAgICAgIGlkeCA9IHNlbGYuc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKVxuLS1cbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5PTIwMz1jbGFzcyBhYXJjaDY0X3BhZ2Vfb3BzKCk6XG4tLVxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMzI0LSAgICBkZWYgcGZuX3NlY3Rpb25fdmFsaWQoc2VsZiwgbXMsIHBmbik6XG5zY3JpcHRzL2dkYi9saW51eC9tbS5weTozMjU6ICAgICAgICBpZiBjb25zdGFudHMuTFhfQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQOlxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMzI2LSAgICAgICAgICAgIGlkeCA9IHNlbGYuc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjg3MAoJCQkJCQkJb3V0cHV0OiAxMjYKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHN5c3RlbSBhbmQgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7dmUgZ290IGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZnV6emluZy4gSSBzZWUgYFNQQVJTRU1FTV9WTUVNTUFQYCBhbmQgYE1FTU9SWV9IT1RQTFVHYCBhcyBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBHaXZlbiB0aGVzZSBvcHRpb25zLCBteSBndXQgdGVsbHMgbWUgdGhpcyBpcyB3b3J0aCB0aGUgZWZmb3J0LCBzbyBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoaXMgc3VnZ2VzdHMgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSB0byBmaW5kIHNvbWUgaW50ZXJlc3RpbmcgYnVncy4KClNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSBzeW1ib2xzOiBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgYW5kIGB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplYC4gVGhlc2UgYXJlIGxpa2VseSB3aGVyZSB0aGUgYWN0aW9uIGlzLCByZWxhdGVkIHRvIHRoZSB2aXJ0dWFsIG1lbW9yeSBtYXAgcG9wdWxhdGlvbiBhbmQgZmluYWxpemF0aW9uLCB3aGljaCBhcmUgb2Z0ZW4gc291cmNlcyBvZiBtZW1vcnkgbWFuYWdlbWVudCBidWdzLgoKQW5kIG9mIGNvdXJzZSwgZm9yIHRoaXMgdG8gYmUgZWZmZWN0aXZlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIHR3byBjb25maWd1cmF0aW9ucywgYFNQQVJTRU1FTV9WTUVNTUFQYCBhbmQgYE1FTU9SWV9IT1RQTFVHYCwgYXJlIGVuYWJsZWQgZHVyaW5nIHRoZSBmdXp6aW5nIHByb2Nlc3MuIFRob3NlIGFyZSB0aGUgZW5hYmxpbmcgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NQQVJTRU1FTV9WTUVNTUFQJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCYjMzQ7LAogICAgJiMzNDt2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGFuZCBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIGJ5IGFkZGluZyBhIFRMQiBmbHVzaCAodm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSkgYWZ0ZXIgcG9wdWxhdGluZyBhIHZtZW1tYXAgc2VjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb3JlIE1NIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTUEFSU0VNRU1fVk1FTU1BUCYjMzQ7LAogICAgJiMzNDtNRU1PUllfSE9UUExVRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAmIzM0OywKICAgICYjMzQ7dm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIFJJU0MtViBieSBhZGRpbmcgYSBUTEIgZmx1c2ggKHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUpIGFmdGVyIHBvcHVsYXRpbmcgYSB2bWVtbWFwIHNlY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29yZSBNTSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjI5OjM2Ljc0NzIwNTI3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgwNDMyNzA4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1BBUlNFTUVNX1ZNRU1NQVBcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcFwiLFxuICAgIFwidm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGFuZCBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIGJ5IGFkZGluZyBhIFRMQiBmbHVzaCAodm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSkgYWZ0ZXIgcG9wdWxhdGluZyBhIHZtZW1tYXAgc2VjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb3JlIE1NIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDoyOTozNi43NDcyMTI1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0NzM2ODg3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE4NzUyMGY4NDA0NDQzNjdkNmRmNmVkMjE5NWY4Y2ZiOTQyOTU4YmJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTA6Mjk6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxcbmluZGV4IDVkNTc1NmJkYTgyZTNkLi42YjAwMGM5OTBiYTcxOSAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oXFxuQEAgLTEyNTMsNiArMTI1MywxMCBAQCBzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9zd3BfY2xlYXJfZXhjbHVzaXZlKHB0ZV90IHB0ZSlcXG4gI2RlZmluZSBUQVNLX1NJWkVcXHRGSVhBRERSX1NUQVJUXFxuICNlbmRpZlxcbiBcXG4rLyogTmVlZGVkIG9uIFNQQVJTRU1FTV9WTUVNTUFQICovXFxuKyNkZWZpbmUgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXFxuK3ZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZCk7XFxuK1xcbiAjZWxzZSAvKiBDT05GSUdfTU1VICovXFxuIFxcbiAjZGVmaW5lIFBBR0VfU0hBUkVEXFx0XFx0X19wZ3Byb3QoMClcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xcbmluZGV4IDViMWIzYzg4YjRkMTMwLi44MDBjYjVjMDA3ZDEwMiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L21tL2luaXQuY1xcbisrKyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jXFxuQEAgLTEzNzIsNiArMTM3MiwxMiBAQCBpbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxcbiBcXHQgKi9cXG4gXFx0cmV0dXJuIHZtZW1tYXBfcG9wdWxhdGVfaHVnZXBhZ2VzKHN0YXJ0LCBlbmQsIG5vZGUsIGFsdG1hcCk7XFxuIH1cXG4rXFxuK3ZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZClcXG4re1xcbitcXHQvKiBBdm9pZCBmYXVsdHMgb24gY2FjaGVkIG5vbi1wcmVzZW50IFRMQiBlbnRyaWVzLiAqL1xcbitcXHRtYXJrX25ld192YWxpZF9tYXAoKTtcXG4rfVxcbiAjZW5kaWZcXG4gXFxuICNpZiBkZWZpbmVkKENPTkZJR19NTVUpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHXzY0QklUKVxcbmRpZmYgLS1naXQgYS9tbS9zcGFyc2Utdm1lbW1hcC5jIGIvbW0vc3BhcnNlLXZtZW1tYXAuY1xcbmluZGV4IDk5ZTJiZTM5NjcxYjYzLi4yOTBjYWZjZmQ3MjMwNSAxMDA2NDRcXG4tLS0gYS9tbS9zcGFyc2Utdm1lbW1hcC5jXFxuKysrIGIvbW0vc3BhcnNlLXZtZW1tYXAuY1xcbkBAIC01NDQsNiArNTQ0LDEyIEBAIHN0YXRpYyBpbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfY29tcG91bmRfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXFxuIFxcbiAjZW5kaWZcXG4gXFxuKyNpZm5kZWYgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZVxcbitzdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKVxcbit7XFxuK31cXG4rI2VuZGlmXFxuK1xcbiBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxcbiBcXHRcXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG4gXFx0XFx0c3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG5AQCAtNTY0LDYgKzU3MCw4IEBAIHN0cnVjdCBwYWdlICogX19tZW1pbml0IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXFxuIFxcdGlmIChyIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbitcXHR2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKCk7XFxuK1xcbiBcXHRyZXR1cm4gcGZuX3RvX3BhZ2UocGZuKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6Mjk6MzguMzk1NDAxODg5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM5NTA2MjE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTUEFSU0VNRU1fVk1FTU1BUFwiLFxuICAgIFwiTUVNT1JZX0hPVFBMVUdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwXCIsXG4gICAgXCJ2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGhvdHBsdWcgYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljIGZvciBSSVNDLVYgYnkgYWRkaW5nIGEgVExCIGZsdXNoICh2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKSBhZnRlciBwb3B1bGF0aW5nIGEgdm1lbW1hcCBzZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvcmUgTU0gY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTg3NTIwZjg0MDQ0NDM2N2Q2ZGY2ZWQyMTk1ZjhjZmI5NDI5NThiYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDEwOjI5OjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxuaW5kZXggNWQ1NzU2YmRhODJlM2QuLjZiMDAwYzk5MGJhNzE5IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oXG5AQCAtMTI1Myw2ICsxMjUzLDEwIEBAIHN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX3N3cF9jbGVhcl9leGNsdXNpdmUocHRlX3QgcHRlKVxuICNkZWZpbmUgVEFTS19TSVpFXHRGSVhBRERSX1NUQVJUXG4gI2VuZGlmXG4gXG4rLyogTmVlZGVkIG9uIFNQQVJTRU1FTV9WTUVNTUFQICovXG4rI2RlZmluZSB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplIHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemVcbit2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKHZvaWQpO1xuK1xuICNlbHNlIC8qIENPTkZJR19NTVUgKi9cbiBcbiAjZGVmaW5lIFBBR0VfU0hBUkVEXHRcdF9fcGdwcm90KDApXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xuaW5kZXggNWIxYjNjODhiNGQxMzAuLjgwMGNiNWMwMDdkMTAyIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9tbS9pbml0LmNcbisrKyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jXG5AQCAtMTM3Miw2ICsxMzcyLDEyIEBAIGludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsXG4gXHQgKi9cbiBcdHJldHVybiB2bWVtbWFwX3BvcHVsYXRlX2h1Z2VwYWdlcyhzdGFydCwgZW5kLCBub2RlLCBhbHRtYXApO1xuIH1cbitcbit2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKHZvaWQpXG4re1xuK1x0LyogQXZvaWQgZmF1bHRzIG9uIGNhY2hlZCBub24tcHJlc2VudCBUTEIgZW50cmllcy4gKi9cbitcdG1hcmtfbmV3X3ZhbGlkX21hcCgpO1xuK31cbiAjZW5kaWZcbiBcbiAjaWYgZGVmaW5lZChDT05GSUdfTU1VKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfNjRCSVQpXG5kaWZmIC0tZ2l0IGEvbW0vc3BhcnNlLXZtZW1tYXAuYyBiL21tL3NwYXJzZS12bWVtbWFwLmNcbmluZGV4IDk5ZTJiZTM5NjcxYjYzLi4yOTBjYWZjZmQ3MjMwNSAxMDA2NDRcbi0tLSBhL21tL3NwYXJzZS12bWVtbWFwLmNcbisrKyBiL21tL3NwYXJzZS12bWVtbWFwLmNcbkBAIC01NDQsNiArNTQ0LDEyIEBAIHN0YXRpYyBpbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfY29tcG91bmRfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXG4gXG4gI2VuZGlmXG4gXG4rI2lmbmRlZiB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXG4rc3RhdGljIHZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZClcbit7XG4rfVxuKyNlbmRpZlxuK1xuIHN0cnVjdCBwYWdlICogX19tZW1pbml0IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXG4gXHRcdHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsIGludCBuaWQsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuIFx0XHRzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuQEAgLTU2NCw2ICs1NzAsOCBAQCBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxuIFx0aWYgKHIgXHUwMDNjIDApXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuK1x0dm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSgpO1xuK1xuIFx0cmV0dXJuIHBmbl90b19wYWdlKHBmbik7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6Mjk6MzguMzk1NDA0Njc5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUzNzc4MTA4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHZtZW1tYXAgUG9wdWxhdGlvbiBhbmQgRmluYWxpemF0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemVgIGZ1bmN0aW9uLCBjYWxsZWQgZnJvbSB3aXRoaW4gYF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGluIGBtbS9zcGFyc2Utdm1lbW1hcC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZmluYWxpemF0aW9uIHN0ZXAgaXMgbmVjZXNzYXJ5LiBTcGVjaWZpY2FsbHksIG9uIFJJU0MtViwgaXQgbG9va3MgbGlrZSBgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZWAgaXMgaW1wbGVtZW50ZWQgdG8gY2FsbCBgbWFya19uZXdfdmFsaWRfbWFwKClgIGluIGBhcmNoL3Jpc2N2L21tL2luaXQuY2AuIFRoZSBjb21tZW50IG1lbnRpb25zIGF2b2lkaW5nIGZhdWx0cyByZWxhdGVkIHRvIGNhY2hlZCwgbm9uLXByZXNlbnQgVExCIGVudHJpZXMuIE1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci5cblxuTGV0J3MgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY2FsbCBjb250ZXh0LiBJIGtub3cgYF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGlzIGludm9rZWQgZHVyaW5nIG1lbW9yeSBob3RwbHVnIG9yIGR1cmluZyBpbml0aWFsaXphdGlvbi4gT2theSwgaW5pdGlhbGl6YXRpb24gYW5kIG1lbW9yeSBob3RwbHVnIHByaW1hcmlseSwgc28sIHdoaWxlIG1lbW9yeSBob3RwbHVnIGlzIGEgXCJmZWF0dXJlLFwiIHRoaXMgYXBwZWFycyB0byBiZSBwcmltYXJpbHkgZHVyaW5nIGluaXQuIFRoaXMgaGFzIG1lIHdvbmRlcmluZyBpZiB0aGVyZSdzIGFueSBpbW1lZGlhdGUgZnV6emluZyBvcHBvcnR1bml0eSBoZXJlLiBNZW1vcnkgaG90cGx1ZyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgdXNlciB2aWEgc3lzZnMgb3IgYnkgYWRkaW5nIG1lbW9yeS4gQnV0IHRoZSBmaW5hbGl6YXRpb24gc3RlcCBpdHNlbGYg4oCTIGB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplYCDigJMgc2VlbXMgdG8gYmUganVzdCBhIFRMQiBmbHVzaCBvciBhIHNpbWlsYXIgb3BlcmF0aW9uIHZpYSBgbWFya19uZXdfdmFsaWRfbWFwKClgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0LlxuXG5TbywgdGhlIGtleSBoZXJlIGlzIGBtYXJrX25ld192YWxpZF9tYXBgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgYmVoYXZpb3Igb2YgdGhhdCBmdW5jdGlvbiwgYXMgdGhhdCdzIHdoZXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbmFsaXR5IHNlZW1zIHRvIHJlc2lkZS4gS25vd2luZyB0aGlzIHdpbGwgY2xhcmlmeSB0aGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgcGF0Y2ggYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmVhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDoyOTo0NC45MzMxODg5NzFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ3OTM3Mzg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYXJrX25ld192YWxpZF9tYXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jYWNoZWZsdXNoLmg9NDY9ZXh0ZXJuIGNoYXIgX2VuZFtdO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oOjQ3OnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX25ld192YWxpZF9tYXAodm9pZClcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2guaC00OC17XFxuLS1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2guaD01Nz1zdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfY2FjaGVfdm1hcCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oLTU5LVxcdGlmIChpc192bWFsbG9jX29yX21vZHVsZV9hZGRyKCh2b2lkICopc3RhcnQpKVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oOjYwOlxcdFxcdG1hcmtfbmV3X3ZhbGlkX21hcCgpO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oLTYxLX1cXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va2ZlbmNlLmg9MTc9c3RhdGljIGlubGluZSBib29sIGtmZW5jZV9wcm90ZWN0X3BhZ2UodW5zaWduZWQgbG9uZyBhZGRyLCBib29sIHByb3RlY3QpXFxuLS1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2tmZW5jZS5oLTI0LVxcdFxcdHNldF9wdGUocHRlLCBfX3B0ZShwdGVfdmFsKHB0ZXBfZ2V0KHB0ZSkpIHwgX1BBR0VfUFJFU0VOVCkpO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va2ZlbmNlLmg6MjU6XFx0XFx0bWFya19uZXdfdmFsaWRfbWFwKCk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rZmVuY2UuaC0yNi1cXHR9XFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xMzc2PXZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNzgtXFx0LyogQXZvaWQgZmF1bHRzIG9uIGNhY2hlZCBub24tcHJlc2VudCBUTEIgZW50cmllcy4gKi9cXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxMzc5OlxcdG1hcmtfbmV3X3ZhbGlkX21hcCgpO1xcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzODAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDoyOTo0Ny40MTI1NzMxODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQ0OTA3Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJJU0MtViBNZW1vcnkgSG90cGx1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGBtYXJrX25ld192YWxpZF9tYXBgIOKAkyBJIGtub3cgdGhhdCBmbHVzaGVzIHRoZSBUcmFuc2xhdGlvbiBMb29rYXNpZGUgQnVmZmVyIChUTEIpLCBvciBzb21ldGhpbmcgY2xvc2VseSByZWxhdGVkLCByaWdodD8gVGhlbiBJIHNlZSB0aGF0IGBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCBpcyBiZWluZyBjYWxsZWQgZHVyaW5nIG1lbW9yeSBob3RwbHVnLCBhbmQgaW1tZWRpYXRlbHkgSSdtIHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcy4gSG93ZXZlciwgdGhpcyBsb29rcyBsaWtlIGEgdmVyeSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgZml4LCBzcGVjaWZpY2FsbHkgZm9yIFJJU0MtVi5cblxuSXQgbG9va3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYWZ0ZXIgdGhlIGB2bWVtbWFwX3BvcHVsYXRlKClgIGNhbGwgd2l0aGluIGBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKClgLCBpdCBqdXN0IGNhbGxzIGBtYXJrX25ld192YWxpZF9tYXAoKWAuIFJpZ2h0LCBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCgpYCBpcyBjYWxsZWQgd2hlbiBhIG1lbW9yeSBzZWN0aW9uIGlzIHBvcHVsYXRlZCwgd2hpY2ggaXMgbW9zdGx5IGluaXRpYWxpemF0aW9uIG9yIGR1cmluZyBtZW1vcnkgaG90cGx1ZyBldmVudHMuIEZ1bmN0aW9uYWxseSwgaXQncyBhIG1pbm9yIGNoYW5nZSwgYSBzbWFsbCBmaXggcmVhbGx5LCBidXQgYSBjcml0aWNhbCBvbmUgZm9yIFJJU0MtViBtZW1vcnkgaG90cGx1ZyBhbmQgaW5pdGlhbGl6YXRpb24uXG5cbk15IHByaW1hcnkgY29uY2VybiBpczogaXMgdGhpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2U/IE1lbW9yeSBob3RwbHVnIGlzIHRyaWdnZXJlZCB2aWEgc3lzZnMsIHNvIHRoYXQgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yLiBJIHNob3VsZCBjaGVjayB0aGUgY2FsbGVycyBvZiBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgdG8gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIHRoZSBjb2RlIGZsb3cgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MjUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6Mjk6NTIuNDU3NDgzNzI4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjk1ODQyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21tLmg9NDg5Mj11bnNpZ25lZCBsb25nIHNlY3Rpb25fbWFwX3NpemUodm9pZCk7XFxuaW5jbHVkZS9saW51eC9tbS5oOjQ4OTM6c3RydWN0IHBhZ2UgKiBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxcbmluY2x1ZGUvbGludXgvbW0uaC00ODk0LVxcdFxcdHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsIGludCBuaWQsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYz01NDg9c3RhdGljIHZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZClcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmMtNTUyLVxcbm1tL3NwYXJzZS12bWVtbWFwLmM6NTUzOnN0cnVjdCBwYWdlICogX19tZW1pbml0IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXFxubW0vc3BhcnNlLXZtZW1tYXAuYy01NTQtXFx0XFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgaW50IG5pZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXFxuLS1cXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTY4OD1zdGF0aWMgc3RydWN0IHBhZ2UgKiBfX21lbWluaXQgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXFxuLS1cXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTY5MS17XFxubW0vc3BhcnNlLXZtZW1tYXAuYzo2OTI6XFx0c3RydWN0IHBhZ2UgKnBhZ2UgPSBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHBmbiwgbnJfcGFnZXMsIG5pZCwgYWx0bWFwLFxcbm1tL3NwYXJzZS12bWVtbWFwLmMtNjkzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHBnbWFwKTtcXG4tLVxcbm1tL3NwYXJzZS5jPTIzMj11bnNpZ25lZCBsb25nIF9faW5pdCBzZWN0aW9uX21hcF9zaXplKHZvaWQpXFxuLS1cXG5tbS9zcGFyc2UuYy0yMzYtXFxubW0vc3BhcnNlLmM6MjM3OnN0cnVjdCBwYWdlIF9faW5pdCAqX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcXG5tbS9zcGFyc2UuYy0yMzgtXFx0XFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgaW50IG5pZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXFxuLS1cXG5tbS9zcGFyc2UuYz0yOTg9c3RhdGljIHZvaWQgX19pbml0IHNwYXJzZV9pbml0X25pZChpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHBudW1fYmVnaW4sXFxuLS1cXG5tbS9zcGFyc2UuYy0zMjAtXFx0XFx0aWYgKCFwcmVpbml0ZWRfdm1lbW1hcF9zZWN0aW9uKG1zKSkge1xcbm1tL3NwYXJzZS5jOjMyMTpcXHRcXHRcXHRtYXAgPSBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHBmbiwgUEFHRVNfUEVSX1NFQ1RJT04sXFxubW0vc3BhcnNlLmMtMzIyLVxcdFxcdFxcdFxcdFxcdG5pZCwgTlVMTCwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjI5OjU0LjYyNzA4Mjg1NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDExNjExNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSBjb2RlIHNuaXBwZXRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGEgc2Vhc29uZWQga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50IGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBTcGFyc2UgVm1lbW1hcCBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3BhcnNlIHZtZW1tYXAsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBlbnRyeSBwb2ludHMgSSdtIGNvbmNlcm5lZCB3aXRoIGFyZSBgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGluIGBtbS9zcGFyc2Utdm1lbW1hcC5jYCBhbmQgYWxzbyBgc3BhcnNlX2luaXRfbmlkYCBpbiBgbW0vc3BhcnNlLmNgLiBOb3csIGBwb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgc2VlbXMgdG8gYmUgdGhlIGNydWNpYWwgZnVuY3Rpb24gdGhhdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgc3BhcnNlX2FkZF9zZWN0aW9uYCwgSSBzZWUgbm93LiBUaGlzIHN1Z2dlc3RzIGEgbW9kdWxhciBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBCYXNpY2FsbHksIGBzcGFyc2VfYWRkX3NlY3Rpb25gIHRyaWdnZXJzIHRoZSBwb3B1bGF0aW9uIG9mIHRoZSBtZW1tYXAgc3RydWN0dXJlIGZvciBhIHBhcnRpY3VsYXIgc2VjdGlvbiwgYW5kIHdpdGhpbiBpdCwgYHBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCBoYW5kbGVzIHRoZSBhY3R1YWwgbml0dHktZ3JpdHR5IG9mIGNyZWF0aW5nIGFuZCBwb3B1bGF0aW5nIHRob3NlIG1lbW9yeSBtYXBzLiBHb3QgaXQuIFRoaXMgbWFrZXMgdGhlIGNvZGUgbW9yZSBtYW5hZ2VhYmxlLCBzZXBhcmF0aW5nIHRoZSBhbGxvY2F0aW9uIG1hbmFnZW1lbnQgZnJvbSB0aGUgcG9wdWxhdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgc3BhcnNlX2luaXRfbmlkYCBhbmQgYHBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCB0byBnZXQgYSBmdWxsIHZpZXcgb2YgdGhlIG1lbW9yeSBsYXlvdXQgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQzOCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjI5OjU4LjA2ODI0Njg5MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzMyNzA4MjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbW0uaD00ODkyPXVuc2lnbmVkIGxvbmcgc2VjdGlvbl9tYXBfc2l6ZSh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L21tLmg6NDg5MzpzdHJ1Y3QgcGFnZSAqIF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXFxuaW5jbHVkZS9saW51eC9tbS5oLTQ4OTQtXFx0XFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgaW50IG5pZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXFxuLS1cXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTU0OD1zdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKVxcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYy01NTItXFxubW0vc3BhcnNlLXZtZW1tYXAuYzo1NTM6c3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTU1NC1cXHRcXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmM9NjYzPXN0YXRpYyBpbnQgX19tZW1pbml0IHNlY3Rpb25fbnJfdm1lbW1hcF9wYWdlcyh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmMtNjg3LVxcbm1tL3NwYXJzZS12bWVtbWFwLmM6Njg4OnN0YXRpYyBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBwb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTY4OS1cXHRcXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmMtNjkxLXtcXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjY5MjpcXHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAocGZuLCBucl9wYWdlcywgbmlkLCBhbHRtYXAsXFxubW0vc3BhcnNlLXZtZW1tYXAuYy02OTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcGdtYXApO1xcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYy02OTktXFxubW0vc3BhcnNlLXZtZW1tYXAuYzo3MDA6c3RhdGljIHZvaWQgZGVwb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTcwMS1cXHRcXHRzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCwgc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmM9NzgyPXN0YXRpYyB2b2lkIHNlY3Rpb25fZGVhY3RpdmF0ZSh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmMtODIwLVxcdGlmICghc2VjdGlvbl9pc19lYXJseSlcXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjgyMTpcXHRcXHRkZXBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHBmbiwgbnJfcGFnZXMsIGFsdG1hcCwgcGdtYXApO1xcbm1tL3NwYXJzZS12bWVtbWFwLmMtODIyLVxcdGVsc2UgaWYgKG1lbW1hcClcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmM9ODI5PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBzZWN0aW9uX2FjdGl2YXRlKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgcGZuLFxcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYy04NjItXFxubW0vc3BhcnNlLXZtZW1tYXAuYzo4NjM6XFx0bWVtbWFwID0gcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAocGZuLCBucl9wYWdlcywgbmlkLCBhbHRtYXAsIHBnbWFwKTtcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTg2NC1cXHRpZiAoIW1lbW1hcCkge1xcbi0tXFxubW0vc3BhcnNlLmM9MjMyPXVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcXG4tLVxcbm1tL3NwYXJzZS5jLTIzNi1cXG5tbS9zcGFyc2UuYzoyMzc6c3RydWN0IHBhZ2UgX19pbml0ICpfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxcbm1tL3NwYXJzZS5jLTIzOC1cXHRcXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG4tLVxcbm1tL3NwYXJzZS5jPTI5OD1zdGF0aWMgdm9pZCBfX2luaXQgc3BhcnNlX2luaXRfbmlkKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgcG51bV9iZWdpbixcXG4tLVxcbm1tL3NwYXJzZS5jLTMyMC1cXHRcXHRpZiAoIXByZWluaXRlZF92bWVtbWFwX3NlY3Rpb24obXMpKSB7XFxubW0vc3BhcnNlLmM6MzIxOlxcdFxcdFxcdG1hcCA9IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAocGZuLCBQQUdFU19QRVJfU0VDVElPTixcXG5tbS9zcGFyc2UuYy0zMjItXFx0XFx0XFx0XFx0XFx0bmlkLCBOVUxMLCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6MzA6MDAuNDAwOTYyNDYzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE2OTI2NTczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBNZW1vcnkgSG90cGx1ZyBUTEIgRmx1c2ggb24gUklTQy1WKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29kZSBpbiBxdWVzdGlvbiBpbnZvbHZlcyBgc2VjdGlvbl9hY3RpdmF0ZWAsIGNhbGxlZCBmcm9tIGBzcGFyc2VfYWRkX3NlY3Rpb25gLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBfX2FkZF9wYWdlc2AuIFRoaXMgd2hvbGUgcGF0aCByZWxhdGVzIHRvIG1lbW9yeSBob3RwbHVnLCBhbmQsIGNydWNpYWxseSwgdXNlcnNwYWNlICpjYW4qIHRyaWdnZXIgdGhpcyB0aHJvdWdoIHN5c2ZzLCBzbyBpdCdzIGEgcmVhbGlzdGljIGV4ZWN1dGlvbiBwYXRoLiBUaGlzIHNwZWNpZmljIGNoYW5nZSBpcyBhIFRMQiBmbHVzaCBvbiBSSVNDLVYgYWZ0ZXIgbWVtb3J5IGhvdHBsdWcsIGEgdGFyZ2V0ZWQgYXJjaGl0ZWN0dXJhbCBhZGp1c3RtZW50LlxuXG5UaGUgY29yZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGZ1enppbmcgaXMganVzdGlmaWVkLiBHaXZlbiB0aGF0IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0aG91Z2ggcXVpdGUgc21hbGwgYW5kIHNwZWNpYWxpemVkLCB0aGF0IGltcGFjdHMgYSBjb3JlIHN5c3RlbSBmdW5jdGlvbiB0cmlnZ2VyZWQgYnkgYSB1c2VyIGFjdGlvbiwgSSBuZWVkIHRvIGV2YWx1YXRlIHRoaXMgcHJvcGVybHkuIFRoZSBwcmltYXJ5IGNvbmNlcm4gaXMgaWYgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBhbmQgdGhlIHRleHQgc2F5cyBpdCBpcyBpbiBRRU1VLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5UaGUgcHJvdmlkZWQgZ3VpZGFuY2Ugc3RhdGVzIFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIiBUaGlzIHBhdGNoICpkb2VzKiB0b3VjaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSBmb3IgUklTQy1WIGFuZCBhbHNvIGludGVyYWN0cyB3aXRoIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBjb3JlLCBzcGVjaWZpY2FsbHkgYHNwYXJzZS12bWVtbWFwLmNgLlxuXG5Db25zaWRlcmluZyB0aGlzLCBJIG5lZWQgdG8gZm9jdXMgb24gcmVhY2hhYmlsaXR5LiBTaW5jZSBRRU1VIGNhbiBiZSB1c2VkIGZvciBtZW1vcnkgaG90cGx1ZywgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLiBUaGVyZWZvcmUsIEknbSBjb25maWRlbnQgdGhhdCBmdXp6aW5nIHRoaXMgaXMgdGhlIHJpZ2h0IGRlY2lzaW9uLiBUaGlzIG1lYW5zIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgdHJ1ZWAuXG5cblJlZ2FyZGluZyBmdXp6aW5nIHRhcmdldHMsIHdoaWxlIHRoZSBwYXRjaCBpdHNlbGYgaXMganVzdCBhIFRMQiBmbHVzaCwgdGhlIHBhdGggKmxlYWRpbmcqIHRvIGl0IGlzIGludGVyZXN0aW5nLiBTbyB0aGUgY3JpdGljYWwgc2VjdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCBhbmQgYHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemVgLiBXaGlsZSB0aGUgbGF0dGVyIGlzIGp1c3QgYSB3cmFwcGVyIGZvciBgbWFya19uZXdfdmFsaWRfbWFwYCwgdGhlIGZvcm1lciBpcyBhIG1lbW9yeSBob3RwbHVnIGZ1bmN0aW9uIGFuZCB0aGUgZW50cnkgcG9pbnQgdGhhdCBtYWtlcyBzZW5zZS5cblxuTGFzdGx5LCBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gZW5hYmxlcyBgU1BBUlNFTUVNX1ZNRU1NQVBgIGFuZCBgTUVNT1JZX0hPVFBMVUdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzI4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjMwOjA3LjU3MDIzMTcwNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2NjI0MzMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTUEFSU0VNRU1fVk1FTU1BUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL21tL21lbW9yeS1tb2RlbC5yc3Q9MTAyPXZtZW1tYXBcXFwiLiBUaGUgc2VsZWN0aW9uIGlzIG1hZGUgYXQgYnVpbGQgdGltZSBhbmQgaXQgaXMgZGV0ZXJtaW5lZCBieVxcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdDoxMDM6dGhlIHZhbHVlIG9mIGBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBgLlxcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdC0xMDQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL21lbW9yeS1tb2RlbC5yc3Q9MTM0PVpPTkVfREVWSUNFXFxuRG9jdW1lbnRhdGlvbi9tbS9tZW1vcnktbW9kZWwucnN0LTEzNS09PT09PT09PT09PVxcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdDoxMzY6VGhlIGBaT05FX0RFVklDRWAgZmFjaWxpdHkgYnVpbGRzIHVwb24gYFNQQVJTRU1FTV9WTUVNTUFQYCB0byBvZmZlclxcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdC0xMzctYHN0cnVjdCBwYWdlYCBgbWVtX21hcGAgc2VydmljZXMgZm9yIGRldmljZSBkcml2ZXIgaWRlbnRpZmllZCBwaHlzaWNhbFxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdD02Mz1TUEFSU0VNRU3mqKHlnovlsIbniannkIblhoXlrZjmmL7npLrkuLrkuIDkuKrpg6jliIbnmoTpm4blkIjjgILkuIDkuKrljLrmrrXnlKhtZW1fc2VjdGlvbue7k+aehFxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdC04Ni3pgJrov4dTUEFSU0VNRU3vvIzmnInkuKTnp43lj6/og73nmoTmlrnlvI/lsIZQRk7ovazmjaLkuLrnm7jlupTnmoQgYHN0cnVjdCBwYWdlYCAtLVxcXCJjbGFzc2ljIHNwYXJzZVxcXCLlkoxcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9tZW1vcnktbW9kZWwucnN0Ojg3OiBcXFwic3BhcnNlIHZtZW1tYXBcXFwi44CC6YCJ5oup5piv5Zyo5p6E5bu65pe26L+b6KGM55qE77yM5a6D55SxIGBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBgIOeahFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL21lbW9yeS1tb2RlbC5yc3QtODgtIOWAvOWGs+WumuOAglxcbi0tXFxuYXJjaC9hcm02NC9LY29uZmlnPTE2MDY9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xNjA3LVxcdGRlZl9ib29sIHlcXG5hcmNoL2FybTY0L0tjb25maWc6MTYwODpcXHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFXFxuYXJjaC9hcm02NC9LY29uZmlnLTE2MDktXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jPTIxMDM9c3RhdGljIGJvb2wgY2FuX3VubWFwX3dpdGhvdXRfc3BsaXQodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTIxMTktXFx0LyogUEZOIHJhbmdlJ3Mgdm1lbW1hcCBlZGdlcyBhcmUgbGVhZiBlbnRyeSBhbGlnbmVkICovXFxuYXJjaC9hcm02NC9tbS9tbXUuYzoyMTIwOlxcdEJVSUxEX0JVR19PTighSVNfRU5BQkxFRChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApKTtcXG5hcmNoL2FybTY0L21tL21tdS5jLTIxMjEtXFx0c3RhcnQgPSAodW5zaWduZWQgbG9uZylwZm5fdG9fcGFnZShwZm4pO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZz03NzU9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzc2LVxcdGRlZl9ib29sIDY0QklUXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzo3Nzc6XFx0c2VsZWN0IFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzc4LVxcdGhlbHBcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTEzLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oOjE0OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaC0xNS0jZGVmaW5lIFZNRU1NQVBfU0laRVxcdChzaXplb2Yoc3RydWN0IHBhZ2UpICogKDFVTCBcXHUwMDNjXFx1MDAzYyAoY3B1X3BhYml0cyArIDEgLSBQQUdFX1NISUZUKSkpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9MTIyPXZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEzMS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTMyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTMzLXZvaWQgX19tZW1pbml0IHZtZW1tYXBfc2V0X3BtZChwbWRfdCAqcG1kLCB2b2lkICpwLCBpbnQgbm9kZSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnPTc5ND1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXFxuLS1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy03OTYtXFx0ZGVwZW5kcyBvbiBQUEM2NFxcbmFyY2gvcG93ZXJwYy9LY29uZmlnOjc5NzpcXHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFXFxuYXJjaC9wb3dlcnBjL0tjb25maWctNzk4LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZz0zNT1DT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWctMzYtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZzozNzojIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCBpcyBub3Qgc2V0XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZy0zOC0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC0xNy0gKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg6MTg6I2lmIGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fRVhUUkVNRSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTktI2RlZmluZSBIX01BWF9QSFlTTUVNX0JJVFNcXHQ1MVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oLTEwOS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MTEwOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX0VYVFJFTUUpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oLTExMS0jZGVmaW5lIFJfTUFYX1BIWVNNRU1fQklUU1xcdDUxXFxuLS1cXG5hcmNoL3Bvd2VycGMva2V4ZWMvdm1jb3JlX2luZm8uYz02PXZvaWQgYXJjaF9jcmFzaF9zYXZlX3ZtY29yZWluZm8odm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXhlYy92bWNvcmVfaW5mby5jLTE1LSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9rZXhlYy92bWNvcmVfaW5mby5jOjE2OiNpZiBkZWZpbmVkKENPTkZJR19QUEM2NCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXFxuYXJjaC9wb3dlcnBjL2tleGVjL3ZtY29yZV9pbmZvLmMtMTctXFx0Vk1DT1JFSU5GT19TWU1CT0wodm1lbW1hcF9saXN0KTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0yNi1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM6Mjc6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0yOC0vKlxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jPTEzMT12b2lkIGhhc2hfX3ZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xNDAtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jOjE0MTojZW5kaWYgLyogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQICovXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jLTE0Mi1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9MTA3OD1zdGF0aWMgdm9pZCBfX2luaXQgaHRhYl9pbml0X3BhZ2Vfc2l6ZXModm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTEyOC1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjExMjk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTEzMC1cXHQvKlxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMTM4LVxcdFxcdG1tdV92bWVtbWFwX3BzaXplID0gbW11X3ZpcnR1YWxfcHNpemU7XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoxMTM5OiNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTExNDAtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTExNDItXFx0ICAgICAgIFxcXCJ2aXJ0dWFsID0gJWQsIGlvID0gJWRcXFwiXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoxMTQzOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTExNDQtXFx0ICAgICAgIFxcXCIsIHZtZW1tYXAgPSAlZFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTE0OS1cXHQgICAgICAgbW11X3BzaXplX2RlZnNbbW11X2lvX3BzaXplXS5zaGlmdFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTE1MDojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMTUxLVxcdCAgICAgICAsbW11X3BzaXplX2RlZnNbbW11X3ZtZW1tYXBfcHNpemVdLnNoaWZ0XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jPTI3PUVYUE9SVF9TWU1CT0xfR1BMKG1tdV9wc2l6ZV9kZWZzKTtcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTI4LVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6Mjk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMzAtaW50IG1tdV92bWVtbWFwX3BzaXplID0gTU1VX1BBR0VfNEs7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTcyMz1zdGF0aWMgdm9pZCBmcmVlX3B1ZF90YWJsZShwdWRfdCAqcHVkX3N0YXJ0LCBwNGRfdCAqcDRkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy03MzctXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo3Mzg6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtNzM5LXN0YXRpYyBib29sIF9fbWVtaW5pdCB2bWVtbWFwX3BtZF9pc191bnVzZWQodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9Nzg3PXN0YXRpYyB2b2lkIF9fbWVtaW5pdCByZW1vdmVfcHRlX3RhYmxlKHB0ZV90ICpwdGVfc3RhcnQsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtODA4LVxcdFxcdH1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjgwOTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy04MTAtXFx0XFx0ZWxzZSBpZiAoIWRpcmVjdCBcXHUwMDI2XFx1MDAyNiB2bWVtbWFwX3BhZ2VfaXNfdW51c2VkKGFkZHIsIG5leHQpKSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTgyMD1zdGF0aWMgdm9pZCBfX21lbWluaXQgcmVtb3ZlX3BtZF90YWJsZShwbWRfdCAqcG1kX3N0YXJ0LCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTg0Mi1cXHRcXHRcXHR9XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo4NDM6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtODQ0LVxcdFxcdFxcdGVsc2UgaWYgKCFkaXJlY3QgXFx1MDAyNlxcdTAwMjYgdm1lbW1hcF9wbWRfaXNfdW51c2VkKGFkZHIsIG5leHQpKSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTk0Nj1pbnQgX19tZW1pbml0IHJhZGl4X19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy05NTItXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo5NTM6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtOTU0LXN0YXRpYyBpbnQgX19tYXBfa2VybmVsX3BhZ2VfbmlkKHVuc2lnbmVkIGxvbmcgZWEsIHVuc2lnbmVkIGxvbmcgcGEsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmM9NDY3PXZvaWQgc2xiX2luaXRpYWxpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00NzEtXFx0c3RhdGljIGludCBzbGJfZW5jb2RpbmdfaW5pdGVkO1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYzo0NzI6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00NzMtXFx0dW5zaWduZWQgbG9uZyB2bWVtbWFwX2xscDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00ODAtXFx0Z2V0X3BhY2EoKS1cXHUwMDNldm1hbGxvY19zbGxwID0gU0xCX1ZTSURfS0VSTkVMIHwgdm1hbGxvY19sbHA7XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsYi5jOjQ4MTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsYi5jLTQ4Mi1cXHR2bWVtbWFwX2xscCA9IG1tdV9wc2l6ZV9kZWZzW21tdV92bWVtbWFwX3BzaXplXS5zbGxwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsYi5jLTQ4Ny1cXHRcXHRwcl9kZXZlbChcXFwiU0xCOiBpbyAgICAgIExMUCA9ICUwNGx4XFxcXG5cXFwiLCBpb19sbHApO1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYzo0ODg6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00ODktXFx0XFx0cHJfZGV2ZWwoXFxcIlNMQjogdm1lbW1hcCBMTFAgPSAlMDRseFxcXFxuXFxcIiwgdm1lbW1hcF9sbHApO1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsYi5jPTY2Mj1zdGF0aWMgbG9uZyBzbGJfYWxsb2NhdGVfa2VybmVsKHVuc2lnbmVkIGxvbmcgZWEsIHVuc2lnbmVkIGxvbmcgaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmMtNjc1LVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYzo2NzY6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy02NzctXFx0fSBlbHNlIGlmIChpZCA9PSBWTUVNTUFQX1JFR0lPTl9JRCkge1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy02Ni1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jOjY3OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTY4LS8qXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jPTM3OD12b2lkIF9fcmVmIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtMzg5LVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM6MzkwOiNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgKi9cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTM5MS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy0xNi1cXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmM6MTc6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy0xOC0vKlxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jPTQ4PXZvaWQgdm1lbW1hcF9yZW1vdmVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jLTUyLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYzo1MzojZW5kaWYgLyogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQICovXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jLTU0LVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9oYXNocGFnZXRhYmxlLmM9NDkwPXN0YXRpYyB2b2lkIHdhbGtfdm1lbW1hcChzdHJ1Y3QgcGdfc3RhdGUgKnN0KVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9oYXNocGFnZXRhYmxlLmMtNDkzLVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvaGFzaHBhZ2V0YWJsZS5jOjQ5NDpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKSlcXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL2hhc2hwYWdldGFibGUuYy00OTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnPTEzPWNvbmZpZyBSSVNDVlxcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnLTIyLVxcdHNlbGVjdCBBUkNIX0VOQUJMRV9IVUdFUEFHRV9NSUdSQVRJT04gaWYgSFVHRVRMQl9QQUdFIFxcdTAwMjZcXHUwMDI2IE1JR1JBVElPTlxcbmFyY2gvcmlzY3YvS2NvbmZpZzoyMzpcXHRzZWxlY3QgQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUcgaWYgU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Jpc2N2L0tjb25maWctMjQtXFx0c2VsZWN0IEFSQ0hfRU5BQkxFX1NQTElUX1BNRF9QVExPQ0sgaWYgUEdUQUJMRV9MRVZFTFMgXFx1MDAzZSAyXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWc9MzA4PWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0zMTEtXFx0c2VsZWN0IFNQQVJTRU1FTV9TVEFUSUMgaWYgMzJCSVQgXFx1MDAyNlxcdTAwMjYgU1BBUlNFTUVNXFxuYXJjaC9yaXNjdi9LY29uZmlnOjMxMjpcXHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlmIDY0QklUXFxuYXJjaC9yaXNjdi9LY29uZmlnLTMxMy1cXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTkxLSAqIERlZmluZSB2bWVtbWFwIGZvciBwZm5fdG9fcGFnZSBcXHUwMDI2IHBhZ2VfdG9fcGZuIGNhbGxzLiBOZWVkZWQgaWYga2VybmVsXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6OTI6ICogaXMgY29uZmlndXJlZCB3aXRoIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCBlbmFibGVkLlxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTkzLSAqL1xcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtOTgtI2RlZmluZSBESVJFQ1RfTUFQX1BIWVNNRU1fRU5EIChwaHlzX3JhbV9iYXNlICsgS0VSTl9WSVJUX1NJWkUgLSAxKVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjk5OiNlbGlmIGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEwMC0jZGVmaW5lIERJUkVDVF9NQVBfUEhZU01FTV9FTkQgXFxcXFxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTIwNj1zdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9zd3BfY2xlYXJfZXhjbHVzaXZlKHB0ZV90IHB0ZSlcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEyNTUtXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTI1NjovKiBOZWVkZWQgb24gU1BBUlNFTUVNX1ZNRU1NQVAgKi9cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMjU3LSNkZWZpbmUgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYz02MD1FWFBPUlRfU1lNQk9MKHBoeXNfcmFtX2Jhc2UpO1xcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTYxLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjYyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy02My0jZGVmaW5lIFZNRU1NQVBfQUREUl9BTElHTlxcdG1heCgxVUxMIFxcdTAwM2NcXHUwMDNjIFNFQ1RJT05fU0laRV9CSVRTLCBcXFxcXFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0yMDc9c3RhdGljIHZvaWQgX19pbml0IHNldHVwX2Jvb3RtZW0odm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTIzMy1cXHRwaHlzX3JhbV9iYXNlID0gbWVtYmxvY2tfc3RhcnRfb2ZfRFJBTSgpIFxcdTAwMjYgUE1EX01BU0s7XFxuYXJjaC9yaXNjdi9tbS9pbml0LmM6MjM0OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0yMzUtXFx0dm1lbW1hcF9zdGFydF9wZm4gPSByb3VuZF9kb3duKHBoeXNfcmFtX2Jhc2UsIFZNRU1NQVBfQUREUl9BTElHTikgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVDtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTEzNDk9dm9pZCBfX2luaXQgbWlzY19tZW1faW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTM1Mi1cXHRhcmNoX251bWFfaW5pdCgpO1xcbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjEzNTM6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNTQtXFx0LyogVGhlIGVudGlyZSBWTUVNTUFQIHJlZ2lvbiBoYXMgYmVlbiBwb3B1bGF0ZWQuIEZsdXNoIFRMQiBmb3IgdGhpcyByZWdpb24gKi9cXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNjAtXFxuYXJjaC9yaXNjdi9tbS9pbml0LmM6MTM2MTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTM2Mi1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTM2Ny1cXHQvKlxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjEzNjg6XFx0ICogTm90ZSB0aGF0IFNQQVJTRU1FTV9WTUVNTUFQIGlzIG9ubHkgc2VsZWN0ZWQgZm9yIHJ2NjQgYW5kIHRoYXQgd2VcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xMzY5LVxcdCAqIGNhbid0IHVzZSBodWdlcGFnZSBtYXBwaW5ncyBmb3IgMi1sZXZlbCBwYWdlIHRhYmxlIGJlY2F1c2UgaW4gY2FzZSBvZlxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYz02MT1lbnVtIGFkZHJlc3NfbWFya2Vyc19pZHgge1xcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy02NS1cXHRQQ0lfSU9fRU5EX05SLFxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6NjY6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtNjctXFx0Vk1FTU1BUF9TVEFSVF9OUixcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9ODQ9c3RhdGljIHN0cnVjdCBhZGRyX21hcmtlciBhZGRyZXNzX21hcmtlcnNbXSA9IHtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtODgtXFx0ezAsIFxcXCJQQ0kgSS9PIGVuZFxcXCJ9LFxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6ODk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtOTAtXFx0ezAsIFxcXCJ2bWVtbWFwIHN0YXJ0XFxcIn0sXFxuLS1cXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jPTQyMz1zdGF0aWMgaW50IF9faW5pdCBwdGR1bXBfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy00MzAtXFx0YWRkcmVzc19tYXJrZXJzW1BDSV9JT19FTkRfTlJdLnN0YXJ0X2FkZHJlc3MgPSBQQ0lfSU9fRU5EO1xcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6NDMxOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTQzMi1cXHRhZGRyZXNzX21hcmtlcnNbVk1FTU1BUF9TVEFSVF9OUl0uc3RhcnRfYWRkcmVzcyA9IFZNRU1NQVBfU1RBUlQ7XFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZz03MTA9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxcbmFyY2gvczM5MC9LY29uZmlnLTcxMS1cXHRkZWZfYm9vbCB5XFxuYXJjaC9zMzkwL0tjb25maWc6NzEyOlxcdHNlbGVjdCBTUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEVcXG5hcmNoL3MzOTAvS2NvbmZpZy03MTMtXFxuLS1cXG5hcmNoL3NwYXJjL0tjb25maWc9MjcyPWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcXG5hcmNoL3NwYXJjL0tjb25maWctMjczLVxcdGRlZl9ib29sIHkgaWYgU1BBUkM2NFxcbmFyY2gvc3BhcmMvS2NvbmZpZzoyNzQ6XFx0c2VsZWN0IFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxcbmFyY2gvc3BhcmMvS2NvbmZpZy0yNzUtXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9rdGxiLlM9MTcxPWt2bWFwX2R0bGJfbG9hZDpcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0xOTUtXFxuYXJjaC9zcGFyYy9rZXJuZWwva3RsYi5TOjE5NjojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9zcGFyYy9rZXJuZWwva3RsYi5TLTE5Ny1rdm1hcF92bWVtbWFwOlxcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwva3RsYi5TPTIwMj1rdm1hcF9kdGxiX25vbmxpbmVhcjpcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0yMDgtXFxuYXJjaC9zcGFyYy9rZXJuZWwva3RsYi5TOjIwOTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9zcGFyYy9rZXJuZWwva3RsYi5TLTIxMC1cXHQvKiBEbyBub3QgdXNlIHRoZSBUU0IgZm9yIHZtZW1tYXAuICAqL1xcbi0tXFxuYXJjaC9zcGFyYy9tbS9pbml0XzY0LmM9MjU0Mj1FWFBPUlRfU1lNQk9MKF9QQUdFX0NBQ0hFKTtcXG5hcmNoL3NwYXJjL21tL2luaXRfNjQuYy0yNTQzLVxcbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jOjI1NDQ6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jLTI1NDUtdm9pZCBfX21lbWluaXQgdm1lbW1hcF9zZXRfcG1kKHBtZF90ICpwbWQsIHZvaWQgKnAsIGludCBub2RlLFxcbi0tXFxuYXJjaC9zcGFyYy9tbS9pbml0XzY0LmM9MjU2Mj1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyB2c3RhcnQsIHVuc2lnbmVkIGxvbmcgdmVuZCxcXG4tLVxcbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jLTI1NjYtfVxcbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jOjI1Njc6I2VuZGlmIC8qIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCAqL1xcbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jLTI1NjgtXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE1NTc9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xNTU5LVxcdHNlbGVjdCBTUEFSU0VNRU1fU1RBVElDIGlmIFg4Nl8zMlxcbmFyY2gveDg2L0tjb25maWc6MTU2MDpcXHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlmIFg4Nl82NFxcbmFyY2gveDg2L0tjb25maWctMTU2MS1cXG4tLVxcbmFyY2gveDg2L2VudHJ5L3Zkc28vdmRzbzMyL2Zha2VfMzJiaXRfYnVpbGQuaC0xMi0jdW5kZWYgQ09ORklHX0lMTEVHQUxfUE9JTlRFUl9WQUxVRVxcbmFyY2gveDg2L2VudHJ5L3Zkc28vdmRzbzMyL2Zha2VfMzJiaXRfYnVpbGQuaDoxMzojdW5kZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC94ODYvZW50cnkvdmRzby92ZHNvMzIvZmFrZV8zMmJpdF9idWlsZC5oLTE0LSN1bmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcXG4tLVxcbmZzL0tjb25maWc9Mjc3PWNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxcbi0tXFxuZnMvS2NvbmZpZy0yNzktXFx0ZGVwZW5kcyBvbiBBUkNIX1dBTlRfT1BUSU1JWkVfSFVHRVRMQl9WTUVNTUFQXFxuZnMvS2NvbmZpZzoyODA6XFx0ZGVwZW5kcyBvbiBTUEFSU0VNRU1fVk1FTU1BUFxcbmZzL0tjb25maWc6MjgxOlxcdHNlbGVjdCBTUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUIGlmIEFSQ0hfV0FOVF9IVUdFVExCX1ZNRU1NQVBfUFJFSU5JVFxcbmZzL0tjb25maWctMjgyLVxcbi0tXFxuZnMvcHJvYy9rY29yZS5jPTE0Mj1zdGF0aWMgaW50IGtjb3JlX3JhbV9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuLS1cXG5mcy9wcm9jL2tjb3JlLmMtMTU3LVxcbmZzL3Byb2Mva2NvcmUuYzoxNTg6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmZzL3Byb2Mva2NvcmUuYy0xNTktLyogY2FsY3VsYXRlIHZtZW1tYXAncyBhZGRyZXNzIGZyb20gZ2l2ZW4gc3lzdGVtIHJhbSBwZm4gYW5kIHJlZ2lzdGVyIGl0ICovXFxuLS1cXG5pbmNsdWRlL2FzbS1nZW5lcmljL21lbW9yeV9tb2RlbC5oPTI2PXN0YXRpYyBpbmxpbmUgaW50IHBmbl92YWxpZCh1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvbWVtb3J5X21vZGVsLmgtNDItXFxuaW5jbHVkZS9hc20tZ2VuZXJpYy9tZW1vcnlfbW9kZWwuaDo0MzojZWxpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcXG5pbmNsdWRlL2FzbS1nZW5lcmljL21lbW9yeV9tb2RlbC5oLTQ0LVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oPTIxMT1leHRlcm4gdW5zaWduZWQgbG9uZyBzeXNjdGxfYWRtaW5fcmVzZXJ2ZV9rYnl0ZXM7XFxuaW5jbHVkZS9saW51eC9tbS5oLTIxMi1cXG5pbmNsdWRlL2xpbnV4L21tLmg6MjEzOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFxcdTAwMjZcXHUwMDI2ICFkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcXG5pbmNsdWRlL2xpbnV4L21tLmgtMjE0LWJvb2wgcGFnZV9yYW5nZV9jb250aWd1b3VzKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaD0yMjY1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19ub21tdV9zaGFyZWRfdm1hX2ZsYWdzKGNvbnN0IHZtYV9mbGFnc190ICpmbGFncylcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaC0yMjcwLVxcbmluY2x1ZGUvbGludXgvbW0uaDoyMjcxOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFxcdTAwMjZcXHUwMDI2ICFkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcXG5pbmNsdWRlL2xpbnV4L21tLmgtMjI3Mi0jZGVmaW5lIFNFQ1RJT05fSU5fUEFHRV9GTEFHU1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oPTQ5MTg9dm9pZCB2bWVtbWFwX2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tLmgtNDkyMS1cXG5pbmNsdWRlL2xpbnV4L21tLmg6NDkyMjojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuaW5jbHVkZS9saW51eC9tbS5oLTQ5MjMtc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHZtZW1fYWx0bWFwX29mZnNldChjb25zdCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcClcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtNzAtI2RlZmluZSBNQVhfRk9MSU9fT1JERVJcXHRcXHRNQVhfUEFHRV9PUkRFUlxcbmluY2x1ZGUvbGludXgvbW16b25lLmg6NzE6I2VsaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNKSBcXHUwMDI2XFx1MDAyNiAhZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC03Mi0vKlxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0xOTg0PXN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSB7XFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xOTg1LVxcdHN0cnVjdCByY3VfaGVhZCByY3U7XFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoxOTg2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTE5ODctXFx0REVDTEFSRV9CSVRNQVAoc3Vic2VjdGlvbl9tYXAsIFNVQlNFQ1RJT05TX1BFUl9TRUNUSU9OKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg9MjA3Mz1lbnVtIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjA4MC0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIwODE6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0yMDgyLVxcdFNFQ1RJT05fSVNfVk1FTU1BUF9QUkVJTklUX0JJVCxcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjA5My0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIwOTQ6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0yMDk1LSNkZWZpbmUgU0VDVElPTl9JU19WTUVNTUFQX1BSRUlOSVRcXHRCSVQoU0VDVElPTl9JU19WTUVNTUFQX1BSRUlOSVRfQklUKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0yMTQ1PXN0YXRpYyBpbmxpbmUgaW50IG9ubGluZV9kZXZpY2Vfc2VjdGlvbihjb25zdCBzdHJ1Y3QgbWVtX3NlY3Rpb24gKnNlY3Rpb24pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIxNTAtXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoyMTUxOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBfUFJFSU5JVFxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjE1Mi1zdGF0aWMgaW5saW5lIGludCBwcmVpbml0ZWRfdm1lbW1hcF9zZWN0aW9uKGNvbnN0IHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlvbilcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg9MjE5Mj1zdGF0aWMgaW5saW5lIGludCBzdWJzZWN0aW9uX21hcF9pbmRleCh1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjE5Ni1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIxOTc6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjE5OC1zdGF0aWMgaW5saW5lIGludCBwZm5fc2VjdGlvbl92YWxpZChzdHJ1Y3QgbWVtX3NlY3Rpb24gKm1zLCB1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg9MjMxMD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbmV4dF92YWxpZF9wZm4odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgZW5kX3BmbilcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjMyMi1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIzMjM6XFx0aWYgKHBmbiBcXHUwMDI2IH4oSVNfRU5BQkxFRChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApID9cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIzMjQtXFx0XFx0ICAgUEFHRV9TVUJTRUNUSU9OX01BU0sgOiBQQUdFX1NFQ1RJT05fTUFTSykpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNTEtICovXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLWxheW91dC5oOjUyOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFxcdTAwMjZcXHUwMDI2ICFkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNTMtI2RlZmluZSBTRUNUSU9OU19XSURUSFxcdFxcdFNFQ1RJT05TX1NISUZUXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjAtI2RlZmluZSBOT0RFU19XSURUSFxcdFxcdE5PREVTX1NISUZUXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLWxheW91dC5oOjYxOiNlbGlmIGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaC02Mi0jZXJyb3IgXFxcIlZtZW1tYXA6IE5vIHNwYWNlIGZvciBub2RlcyBmaWVsZCBpbiBwYWdlIGZsYWdzXFxcIlxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtOTAtICogU1BBUlNFTUVNIHNlY3Rpb24gKGZvciB2YXJpYW50cyBvZiBTUEFSU0VNRU0gdGhhdCByZXF1aXJlIHNlY3Rpb24gaWRzIGxpa2VcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDo5MTogKiBTUEFSU0VNRU1fRVhUUkVNRSB3aXRoICFTUEFSU0VNRU1fVk1FTU1BUCkuXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtOTItICovXFxuLS1cXG5rZXJuZWwvdm1jb3JlX2luZm8uYz0xNDA9c3RhdGljIGludCBfX2luaXQgY3Jhc2hfc2F2ZV92bWNvcmVpbmZvX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC92bWNvcmVfaW5mby5jLTE3NS0jZW5kaWZcXG5rZXJuZWwvdm1jb3JlX2luZm8uYzoxNzY6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmtlcm5lbC92bWNvcmVfaW5mby5jLTE3Ny1cXHRWTUNPUkVJTkZPX1NZTUJPTF9BUlJBWSh2bWVtbWFwKTtcXG4tLVxcbm1tL0tjb25maWc9NDUxPWNvbmZpZyBTUEFSU0VNRU1fRVhUUkVNRVxcbi0tXFxubW0vS2NvbmZpZy00NTQtXFxubW0vS2NvbmZpZzo0NTU6Y29uZmlnIFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxcbm1tL0tjb25maWctNDU2LVxcdGJvb2xcXG5tbS9LY29uZmlnLTQ1Ny1cXG5tbS9LY29uZmlnOjQ1ODpjb25maWcgU1BBUlNFTUVNX1ZNRU1NQVBcXG5tbS9LY29uZmlnLTQ1OS1cXHRkZWZfYm9vbCB5XFxubW0vS2NvbmZpZzo0NjA6XFx0ZGVwZW5kcyBvbiBTUEFSU0VNRU0gXFx1MDAyNlxcdTAwMjYgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFXFxubW0vS2NvbmZpZy00NjEtXFx0aGVscFxcbm1tL0tjb25maWc6NDYyOlxcdCAgU1BBUlNFTUVNX1ZNRU1NQVAgdXNlcyBhIHZpcnR1YWxseSBtYXBwZWQgbWVtbWFwIHRvIG9wdGltaXNlXFxubW0vS2NvbmZpZy00NjMtXFx0ICBwZm5fdG9fcGFnZSBhbmQgcGFnZV90b19wZm4gb3BlcmF0aW9ucy4gIFRoaXMgaXMgdGhlIG1vc3RcXG4tLVxcbm1tL0tjb25maWctNDY1LVxcbm1tL0tjb25maWc6NDY2OmNvbmZpZyBTUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxubW0vS2NvbmZpZy00NjctXFx0Ym9vbFxcbi0tXFxubW0vS2NvbmZpZz01MjM9bWVudWNvbmZpZyBNRU1PUllfSE9UUExVR1xcbi0tXFxubW0vS2NvbmZpZy01MjUtXFx0c2VsZWN0IE1FTU9SWV9JU09MQVRJT05cXG5tbS9LY29uZmlnOjUyNjpcXHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXFxubW0vS2NvbmZpZy01MjctXFx0ZGVwZW5kcyBvbiBBUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVR1xcbi0tXFxubW0vS2NvbmZpZz01OTc9Y29uZmlnIE1IUF9NRU1NQVBfT05fTUVNT1JZXFxubW0vS2NvbmZpZy01OTgtXFx0ZGVmX2Jvb2wgeVxcbm1tL0tjb25maWc6NTk5OlxcdGRlcGVuZHMgb24gTUVNT1JZX0hPVFBMVUcgXFx1MDAyNlxcdTAwMjYgU1BBUlNFTUVNX1ZNRU1NQVBcXG5tbS9LY29uZmlnLTYwMC1cXHRkZXBlbmRzIG9uIEFSQ0hfTUhQX01FTU1BUF9PTl9NRU1PUllfRU5BQkxFXFxuLS1cXG5tbS9LY29uZmlnPTEyMzY9Y29uZmlnIFpPTkVfREVWSUNFXFxuLS1cXG5tbS9LY29uZmlnLTEyMzktXFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXFxubW0vS2NvbmZpZzoxMjQwOlxcdGRlcGVuZHMgb24gU1BBUlNFTUVNX1ZNRU1NQVBcXG5tbS9LY29uZmlnLTEyNDEtXFx0c2VsZWN0IFhBUlJBWV9NVUxUSVxcbi0tXFxubW0vS2NvbmZpZz0xNDA5PWNvbmZpZyBMUlVfR0VOXFxuLS1cXG5tbS9LY29uZmlnLTE0MTItXFx0IyBtYWtlIHN1cmUgZm9saW8tXFx1MDAzZWZsYWdzIGhhcyBlbm91Z2ggc3BhcmUgYml0c1xcbm1tL0tjb25maWc6MTQxMzpcXHRkZXBlbmRzIG9uIDY0QklUIHx8ICFTUEFSU0VNRU0gfHwgU1BBUlNFTUVNX1ZNRU1NQVBcXG5tbS9LY29uZmlnLTE0MTQtXFx0aGVscFxcbi0tXFxubW0vTWFrZWZpbGU9ODc9b2JqLSQoQ09ORklHX1NQQVJTRU1FTSlcXHQrPSBzcGFyc2Uub1xcbm1tL01ha2VmaWxlOjg4Om9iai0kKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgKz0gc3BhcnNlLXZtZW1tYXAub1xcbm1tL01ha2VmaWxlLTg5LW9iai0kKENPTkZJR19NTVVfTk9USUZJRVIpICs9IG1tdV9ub3RpZmllci5vXFxuLS1cXG5tbS9odWdldGxiX3ZtZW1tYXAuYz03MDQ9dm9pZCBodWdldGxiX3ZtZW1tYXBfb3B0aW1pemVfYm9vdG1lbV9mb2xpb3Moc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdClcXG4tLVxcbm1tL2h1Z2V0bGJfdm1lbW1hcC5jLTcwOC1cXG5tbS9odWdldGxiX3ZtZW1tYXAuYzo3MDk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxubW0vaHVnZXRsYl92bWVtbWFwLmMtNzEwLVxcbi0tXFxubW0vaHVnZXRsYl92bWVtbWFwLmg9Mjk9dm9pZCBodWdldGxiX3ZtZW1tYXBfb3B0aW1pemVfYm9vdG1lbV9mb2xpb3Moc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCk7XFxubW0vaHVnZXRsYl92bWVtbWFwLmg6MzA6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxubW0vaHVnZXRsYl92bWVtbWFwLmgtMzEtdm9pZCBodWdldGxiX3ZtZW1tYXBfaW5pdF9lYXJseShpbnQgbmlkKTtcXG4tLVxcbm1tL2ludGVybmFsLmg9OTU5PXN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdF9vbmVfc2VjdGlvbihzdHJ1Y3QgbWVtX3NlY3Rpb24gKm1zLFxcbi0tXFxubW0vaW50ZXJuYWwuaC05NjgtXFx0ICogV2UgZW5jb2RlIHRoZSBzdGFydCBQRk4gb2YgdGhlIHNlY3Rpb24gaW50byB0aGUgbWVtX21hcCBzdWNoIHRoYXRcXG5tbS9pbnRlcm5hbC5oOjk2OTpcXHQgKiBwYWdlX3RvX3BmbigpIG9uICFDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgY2FuIHNpbXBseSBzdWJ0cmFjdCBpdFxcbm1tL2ludGVybmFsLmgtOTcwLVxcdCAqIGZyb20gdGhlIHBhZ2UgcG9pbnRlciB0byBvYnRhaW4gdGhlIFBGTi5cXG4tLVxcbm1tL2ludGVybmFsLmg9OTkwPXN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdCh2b2lkKSB7fVxcbi0tXFxubW0vaW50ZXJuYWwuaC05OTUtICovXFxubW0vaW50ZXJuYWwuaDo5OTY6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbm1tL2ludGVybmFsLmgtOTk3LXZvaWQgc3BhcnNlX2luaXRfc3Vic2VjdGlvbl9tYXAodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpO1xcbi0tXFxubW0vaW50ZXJuYWwuaD05OTk9c3RhdGljIGlubGluZSB2b2lkIHNwYXJzZV9pbml0X3N1YnNlY3Rpb25fbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxcbi0tXFxubW0vaW50ZXJuYWwuaC0xMDAyLX1cXG5tbS9pbnRlcm5hbC5oOjEwMDM6I2VuZGlmIC8qIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCAqL1xcbm1tL2ludGVybmFsLmgtMTAwNC1cXG4tLVxcbm1tL21lbWJsb2NrLmM9MjE4Mz1zdGF0aWMgdm9pZCBfX2luaXQgZnJlZV91bnVzZWRfbWVtbWFwKHZvaWQpXFxuLS1cXG5tbS9tZW1ibG9jay5jLTIxODgtXFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19IQVZFX0FSQ0hfUEZOX1ZBTElEKSB8fFxcbm1tL21lbWJsb2NrLmM6MjE4OTpcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApKVxcbm1tL21lbWJsb2NrLmMtMjE5MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTU1Mz1zdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYy01NzctXFxubW0vc3BhcnNlLXZtZW1tYXAuYzo1Nzg6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxubW0vc3BhcnNlLXZtZW1tYXAuYy01NzktLypcXG4tLVxcbm1tL3NwYXJzZS5jPTIyMD1zaXplX3QgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSh2b2lkKVxcbi0tXFxubW0vc3BhcnNlLmMtMjI0LVxcbm1tL3NwYXJzZS5jOjIyNTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxubW0vc3BhcnNlLmMtMjI2LXVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcXG4tLVxcbm1tL3NwYXJzZS5jPTIzNz1zdHJ1Y3QgcGFnZSBfX2luaXQgKl9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXFxuLS1cXG5tbS9zcGFyc2UuYy0yNTEtfVxcbm1tL3NwYXJzZS5jOjI1MjojZW5kaWYgLyogIUNPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCAqL1xcbm1tL3NwYXJzZS5jLTI1My1cXG4tLVxcbm1tL3V0aWwuYz0xNTY3PXVuc2lnbmVkIGludCBmb2xpb19wdGVfYmF0Y2goc3RydWN0IGZvbGlvICpmb2xpbywgcHRlX3QgKnB0ZXAsIHB0ZV90IHB0ZSxcXG4tLVxcbm1tL3V0aWwuYy0xNTczLVxcbm1tL3V0aWwuYzoxNTc0OiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFxcdTAwMjZcXHUwMDI2ICFkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcXG5tbS91dGlsLmMtMTU3NS0vKipcXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L2NvbnN0YW50cy5weS5pbj0xNTY9TFhfQ09ORklHKENPTkZJR19TUEFSU0VNRU1fRVhUUkVNRSlcXG5zY3JpcHRzL2dkYi9saW51eC9jb25zdGFudHMucHkuaW46MTU3OkxYX0NPTkZJRyhDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXFxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluLTE1OC1MWF9DT05GSUcoQ09ORklHX0tBU0FOKVxcbi0tXFxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHk9MjI9Y2xhc3MgcGFnZV9vcHMoKTpcXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5LTI0LSAgICBkZWYgX19pbml0X18oc2VsZik6XFxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHk6MjU6ICAgICAgICBpZiBub3QgY29uc3RhbnRzLkxYX0NPTkZJR19TUEFSU0VNRU1fVk1FTU1BUDpcXG5zY3JpcHRzL2dkYi9saW51eC9tbS5weToyNjogICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3IoJ09ubHkgc3VwcG9ydCBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgbm93JylcXG5zY3JpcHRzL2dkYi9saW51eC9tbS5weS0yNy0gICAgICAgIGlmIGNvbnN0YW50cy5MWF9DT05GSUdfQVJNNjQgYW5kIHV0aWxzLmlzX3RhcmdldF9hcmNoKCdhYXJjaDY0Jyk6XFxuLS1cXG5zY3JpcHRzL2dkYi9saW51eC9tbS5weT0zND1jbGFzcyB4ODZfcGFnZV9vcHMoKTpcXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5LTEyMC0gICAgZGVmIHBmbl9zZWN0aW9uX3ZhbGlkKHNlbGYsIG1zLCBwZm4pOlxcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5OjEyMTogICAgICAgIGlmIGNvbnN0YW50cy5MWF9DT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVA6XFxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMTIyLSAgICAgICAgICAgIGlkeCA9IHNlbGYuc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKVxcbi0tXFxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHk9MjAzPWNsYXNzIGFhcmNoNjRfcGFnZV9vcHMoKTpcXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5LTMyNC0gICAgZGVmIHBmbl9zZWN0aW9uX3ZhbGlkKHNlbGYsIG1zLCBwZm4pOlxcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5OjMyNTogICAgICAgIGlmIGNvbnN0YW50cy5MWF9DT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVA6XFxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMzI2LSAgICAgICAgICAgIGlkeCA9IHNlbGYuc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDozMDowOS41MzY0ODQxOTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3MTIyODUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBzeXN0ZW0gYW5kIGl0IHNlZW1zIGxpa2Ugd2UndmUgZ290IGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZnV6emluZy4gSSBzZWUgYFNQQVJTRU1FTV9WTUVNTUFQYCBhbmQgYE1FTU9SWV9IT1RQTFVHYCBhcyBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBHaXZlbiB0aGVzZSBvcHRpb25zLCBteSBndXQgdGVsbHMgbWUgdGhpcyBpcyB3b3J0aCB0aGUgZWZmb3J0LCBzbyBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gVGhpcyBzdWdnZXN0cyB0aGVyZSdzIGEgZ29vZCBjaGFuY2UgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGJ1Z3MuXG5cblNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSBzeW1ib2xzOiBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgYW5kIGB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplYC4gVGhlc2UgYXJlIGxpa2VseSB3aGVyZSB0aGUgYWN0aW9uIGlzLCByZWxhdGVkIHRvIHRoZSB2aXJ0dWFsIG1lbW9yeSBtYXAgcG9wdWxhdGlvbiBhbmQgZmluYWxpemF0aW9uLCB3aGljaCBhcmUgb2Z0ZW4gc291cmNlcyBvZiBtZW1vcnkgbWFuYWdlbWVudCBidWdzLlxuXG5BbmQgb2YgY291cnNlLCBmb3IgdGhpcyB0byBiZSBlZmZlY3RpdmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgdHdvIGNvbmZpZ3VyYXRpb25zLCBgU1BBUlNFTUVNX1ZNRU1NQVBgIGFuZCBgTUVNT1JZX0hPVFBMVUdgLCBhcmUgZW5hYmxlZCBkdXJpbmcgdGhlIGZ1enppbmcgcHJvY2Vzcy4gVGhvc2UgYXJlIHRoZSBlbmFibGluZyBjb25kaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjg3MCwiT3V0cHV0VG9rZW5zIjoxMjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDozMDoxNC43MDc3MTUzMDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjc0MzMzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1BBUlNFTUVNX1ZNRU1NQVBcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcFwiLFxuICAgIFwidm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGFuZCBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIGJ5IGFkZGluZyBhIFRMQiBmbHVzaCAodm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSkgYWZ0ZXIgcG9wdWxhdGluZyBhIHZtZW1tYXAgc2VjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb3JlIE1NIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNQQVJTRU1FTV9WTUVNTUFQXCIsXG4gICAgXCJNRU1PUllfSE9UUExVR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBcIixcbiAgICBcInZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIFJJU0MtViBieSBhZGRpbmcgYSBUTEIgZmx1c2ggKHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUpIGFmdGVyIHBvcHVsYXRpbmcgYSB2bWVtbWFwIHNlY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29yZSBNTSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowx5mtg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 10:19:59 +0000 UTC FinishedAt: 2026-06-30 10:30:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SPARSEMEM_VMEMMAP", "MEMORY_HOTPLUG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SPARSEMEM_VMEMMAP", "MEMORY_HOTPLUG" ], "series_id": "a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__populate_section_memmap", "vmemmap_populate_finalize" ], "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+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NQQVJTRU1FTV9WTUVNTUFQJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCYjMzQ7LAogICAgJiMzNDt2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGFuZCBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIGJ5IGFkZGluZyBhIFRMQiBmbHVzaCAodm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSkgYWZ0ZXIgcG9wdWxhdGluZyBhIHZtZW1tYXAgc2VjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb3JlIE1NIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTg3NTIwZjg0MDQ0NDM2N2Q2ZGY2ZWQyMTk1ZjhjZmI5NDI5NThiYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDEwOjI5OjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcbmluZGV4IDVkNTc1NmJkYTgyZTNkLi42YjAwMGM5OTBiYTcxOSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxuQEAgLTEyNTMsNiAmIzQzOzEyNTMsMTAgQEAgc3RhdGljIGlubGluZSBwdGVfdCBwdGVfc3dwX2NsZWFyX2V4Y2x1c2l2ZShwdGVfdCBwdGUpXG4gI2RlZmluZSBUQVNLX1NJWkVcdEZJWEFERFJfU1RBUlRcbiAjZW5kaWZcbiBcbiYjNDM7LyogTmVlZGVkIG9uIFNQQVJTRU1FTV9WTUVNTUFQICovXG4mIzQzOyNkZWZpbmUgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXG4mIzQzO3ZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZCk7XG4mIzQzO1xuICNlbHNlIC8qIENPTkZJR19NTVUgKi9cbiBcbiAjZGVmaW5lIFBBR0VfU0hBUkVEXHRcdF9fcGdwcm90KDApXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xuaW5kZXggNWIxYjNjODhiNGQxMzAuLjgwMGNiNWMwMDdkMTAyIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9tbS9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jXG5AQCAtMTM3Miw2ICYjNDM7MTM3MiwxMiBAQCBpbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxuIFx0ICovXG4gXHRyZXR1cm4gdm1lbW1hcF9wb3B1bGF0ZV9odWdlcGFnZXMoc3RhcnQsIGVuZCwgbm9kZSwgYWx0bWFwKTtcbiB9XG4mIzQzO1xuJiM0Mzt2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHQvKiBBdm9pZCBmYXVsdHMgb24gY2FjaGVkIG5vbi1wcmVzZW50IFRMQiBlbnRyaWVzLiAqL1xuJiM0MztcdG1hcmtfbmV3X3ZhbGlkX21hcCgpO1xuJiM0Mzt9XG4gI2VuZGlmXG4gXG4gI2lmIGRlZmluZWQoQ09ORklHX01NVSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHXzY0QklUKVxuZGlmZiAtLWdpdCBhL21tL3NwYXJzZS12bWVtbWFwLmMgYi9tbS9zcGFyc2Utdm1lbW1hcC5jXG5pbmRleCA5OWUyYmUzOTY3MWI2My4uMjkwY2FmY2ZkNzIzMDUgMTAwNjQ0XG4tLS0gYS9tbS9zcGFyc2Utdm1lbW1hcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9zcGFyc2Utdm1lbW1hcC5jXG5AQCAtNTQ0LDYgJiM0Mzs1NDQsMTIgQEAgc3RhdGljIGludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9jb21wb3VuZF9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbixcbiBcbiAjZW5kaWZcbiBcbiYjNDM7I2lmbmRlZiB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXG4mIzQzO3N0YXRpYyB2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKHZvaWQpXG4mIzQzO3tcbiYjNDM7fVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4gc3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbiBcdFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgaW50IG5pZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXG4gXHRcdHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXApXG5AQCAtNTY0LDYgJiM0Mzs1NzAsOCBAQCBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxuIFx0aWYgKHIgXHUwMDNjIDApXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuJiM0MztcdHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUoKTtcbiYjNDM7XG4gXHRyZXR1cm4gcGZuX3RvX3BhZ2UocGZuKTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1BBUlNFTUVNX1ZNRU1NQVAmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFBMVUcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwJiMzNDssCiAgICAmIzM0O3ZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGhvdHBsdWcgYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljIGZvciBSSVNDLVYgYnkgYWRkaW5nIGEgVExCIGZsdXNoICh2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKSBhZnRlciBwb3B1bGF0aW5nIGEgdm1lbW1hcCBzZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvcmUgTU0gY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE4NzUyMGY4NDA0NDQzNjdkNmRmNmVkMjE5NWY4Y2ZiOTQyOTU4YmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAzMCAxMDoyOTozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKaW5kZXggNWQ1NzU2YmRhODJlM2QuLjZiMDAwYzk5MGJhNzE5IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaApAQCAtMTI1Myw2ICYjNDM7MTI1MywxMCBAQCBzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9zd3BfY2xlYXJfZXhjbHVzaXZlKHB0ZV90IHB0ZSkKICNkZWZpbmUgVEFTS19TSVpFCUZJWEFERFJfU1RBUlQKICNlbmRpZgogCiYjNDM7LyogTmVlZGVkIG9uIFNQQVJTRU1FTV9WTUVNTUFQICovCiYjNDM7I2RlZmluZSB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplIHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUKJiM0Mzt2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKHZvaWQpOwomIzQzOwogI2Vsc2UgLyogQ09ORklHX01NVSAqLwogCiAjZGVmaW5lIFBBR0VfU0hBUkVECQlfX3BncHJvdCgwKQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuYwppbmRleCA1YjFiM2M4OGI0ZDEzMC4uODAwY2I1YzAwN2QxMDIgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jCkBAIC0xMzcyLDYgJiM0MzsxMzcyLDEyIEBAIGludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsCiAJICovCiAJcmV0dXJuIHZtZW1tYXBfcG9wdWxhdGVfaHVnZXBhZ2VzKHN0YXJ0LCBlbmQsIG5vZGUsIGFsdG1hcCk7CiB9CiYjNDM7CiYjNDM7dm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKQomIzQzO3sKJiM0MzsJLyogQXZvaWQgZmF1bHRzIG9uIGNhY2hlZCBub24tcHJlc2VudCBUTEIgZW50cmllcy4gKi8KJiM0MzsJbWFya19uZXdfdmFsaWRfbWFwKCk7CiYjNDM7fQogI2VuZGlmCiAKICNpZiBkZWZpbmVkKENPTkZJR19NTVUpICZhbXA7JmFtcDsgZGVmaW5lZChDT05GSUdfNjRCSVQpCmRpZmYgLS1naXQgYS9tbS9zcGFyc2Utdm1lbW1hcC5jIGIvbW0vc3BhcnNlLXZtZW1tYXAuYwppbmRleCA5OWUyYmUzOTY3MWI2My4uMjkwY2FmY2ZkNzIzMDUgMTAwNjQ0Ci0tLSBhL21tL3NwYXJzZS12bWVtbWFwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vc3BhcnNlLXZtZW1tYXAuYwpAQCAtNTQ0LDYgJiM0Mzs1NDQsMTIgQEAgc3RhdGljIGludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9jb21wb3VuZF9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwKIAogI2VuZGlmCiAKJiM0MzsjaWZuZGVmIHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUKJiM0MztzdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKQomIzQzO3sKJiM0Mzt9CiYjNDM7I2VuZGlmCiYjNDM7CiBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLAogCQl1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCwKIAkJc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcCkKQEAgLTU2NCw2ICYjNDM7NTcwLDggQEAgc3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbiwKIAlpZiAociAmbHQ7IDApCiAJCXJldHVybiBOVUxMOwogCiYjNDM7CXZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUoKTsKJiM0MzsKIAlyZXR1cm4gcGZuX3RvX3BhZ2UocGZuKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzk2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgdm1lbW1hcCBQb3B1bGF0aW9uIGFuZCBGaW5hbGl6YXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemVgIGZ1bmN0aW9uLCBjYWxsZWQgZnJvbSB3aXRoaW4gYF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGluIGBtbS9zcGFyc2Utdm1lbW1hcC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZmluYWxpemF0aW9uIHN0ZXAgaXMgbmVjZXNzYXJ5LiBTcGVjaWZpY2FsbHksIG9uIFJJU0MtViwgaXQgbG9va3MgbGlrZSBgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZWAgaXMgaW1wbGVtZW50ZWQgdG8gY2FsbCBgbWFya19uZXdfdmFsaWRfbWFwKClgIGluIGBhcmNoL3Jpc2N2L21tL2luaXQuY2AuIFRoZSBjb21tZW50IG1lbnRpb25zIGF2b2lkaW5nIGZhdWx0cyByZWxhdGVkIHRvIGNhY2hlZCwgbm9uLXByZXNlbnQgVExCIGVudHJpZXMuIE1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci4KCkxldCYjMzk7cyBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjYWxsIGNvbnRleHQuIEkga25vdyBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgaXMgaW52b2tlZCBkdXJpbmcgbWVtb3J5IGhvdHBsdWcgb3IgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBPa2F5LCBpbml0aWFsaXphdGlvbiBhbmQgbWVtb3J5IGhvdHBsdWcgcHJpbWFyaWx5LCBzbywgd2hpbGUgbWVtb3J5IGhvdHBsdWcgaXMgYSAmIzM0O2ZlYXR1cmUsJiMzNDsgdGhpcyBhcHBlYXJzIHRvIGJlIHByaW1hcmlseSBkdXJpbmcgaW5pdC4gVGhpcyBoYXMgbWUgd29uZGVyaW5nIGlmIHRoZXJlJiMzOTtzIGFueSBpbW1lZGlhdGUgZnV6emluZyBvcHBvcnR1bml0eSBoZXJlLiBNZW1vcnkgaG90cGx1ZyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgdXNlciB2aWEgc3lzZnMgb3IgYnkgYWRkaW5nIG1lbW9yeS4gQnV0IHRoZSBmaW5hbGl6YXRpb24gc3RlcCBpdHNlbGYg4oCTIGB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplYCDigJMgc2VlbXMgdG8gYmUganVzdCBhIFRMQiBmbHVzaCBvciBhIHNpbWlsYXIgb3BlcmF0aW9uIHZpYSBgbWFya19uZXdfdmFsaWRfbWFwKClgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0LgoKU28sIHRoZSBrZXkgaGVyZSBpcyBgbWFya19uZXdfdmFsaWRfbWFwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGJlaGF2aW9yIG9mIHRoYXQgZnVuY3Rpb24sIGFzIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uYWxpdHkgc2VlbXMgdG8gcmVzaWRlLiBLbm93aW5nIHRoaXMgd2lsbCBjbGFyaWZ5IHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBwYXRjaCBhbmQgaWYgdGhlcmUgYXJlIGFueSByZWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYXJrX25ld192YWxpZF9tYXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jYWNoZWZsdXNoLmg9NDY9ZXh0ZXJuIGNoYXIgX2VuZFtdO1xuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jYWNoZWZsdXNoLmg6NDc6c3RhdGljIGlubGluZSB2b2lkIG1hcmtfbmV3X3ZhbGlkX21hcCh2b2lkKVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jYWNoZWZsdXNoLmgtNDgte1xuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oPTU3PXN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF9jYWNoZV92bWFwKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oLTU5LVx0aWYgKGlzX3ZtYWxsb2Nfb3JfbW9kdWxlX2FkZHIoKHZvaWQgKilzdGFydCkpXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2guaDo2MDpcdFx0bWFya19uZXdfdmFsaWRfbWFwKCk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2guaC02MS19XG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rZmVuY2UuaD0xNz1zdGF0aWMgaW5saW5lIGJvb2wga2ZlbmNlX3Byb3RlY3RfcGFnZSh1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgcHJvdGVjdClcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2tmZW5jZS5oLTI0LVx0XHRzZXRfcHRlKHB0ZSwgX19wdGUocHRlX3ZhbChwdGVwX2dldChwdGUpKSB8IF9QQUdFX1BSRVNFTlQpKTtcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va2ZlbmNlLmg6MjU6XHRcdG1hcmtfbmV3X3ZhbGlkX21hcCgpO1xuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rZmVuY2UuaC0yNi1cdH1cbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xMzc2PXZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZClcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xMzc4LVx0LyogQXZvaWQgZmF1bHRzIG9uIGNhY2hlZCBub24tcHJlc2VudCBUTEIgZW50cmllcy4gKi9cbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjEzNzk6XHRtYXJrX25ld192YWxpZF9tYXAoKTtcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzODAtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MjUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUklTQy1WIE1lbW9yeSBIb3RwbHVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBgbWFya19uZXdfdmFsaWRfbWFwYCDigJMgSSBrbm93IHRoYXQgZmx1c2hlcyB0aGUgVHJhbnNsYXRpb24gTG9va2FzaWRlIEJ1ZmZlciAoVExCKSwgb3Igc29tZXRoaW5nIGNsb3NlbHkgcmVsYXRlZCwgcmlnaHQ/IFRoZW4gSSBzZWUgdGhhdCBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgaXMgYmVpbmcgY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1ZywgYW5kIGltbWVkaWF0ZWx5IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzLiBIb3dldmVyLCB0aGlzIGxvb2tzIGxpa2UgYSB2ZXJ5IHNwZWNpZmljIGFyY2hpdGVjdHVyZSBmaXgsIHNwZWNpZmljYWxseSBmb3IgUklTQy1WLgoKSXQgbG9va3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYWZ0ZXIgdGhlIGB2bWVtbWFwX3BvcHVsYXRlKClgIGNhbGwgd2l0aGluIGBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKClgLCBpdCBqdXN0IGNhbGxzIGBtYXJrX25ld192YWxpZF9tYXAoKWAuIFJpZ2h0LCBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCgpYCBpcyBjYWxsZWQgd2hlbiBhIG1lbW9yeSBzZWN0aW9uIGlzIHBvcHVsYXRlZCwgd2hpY2ggaXMgbW9zdGx5IGluaXRpYWxpemF0aW9uIG9yIGR1cmluZyBtZW1vcnkgaG90cGx1ZyBldmVudHMuIEZ1bmN0aW9uYWxseSwgaXQmIzM5O3MgYSBtaW5vciBjaGFuZ2UsIGEgc21hbGwgZml4IHJlYWxseSwgYnV0IGEgY3JpdGljYWwgb25lIGZvciBSSVNDLVYgbWVtb3J5IGhvdHBsdWcgYW5kIGluaXRpYWxpemF0aW9uLgoKTXkgcHJpbWFyeSBjb25jZXJuIGlzOiBpcyB0aGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZT8gTWVtb3J5IGhvdHBsdWcgaXMgdHJpZ2dlcmVkIHZpYSBzeXNmcywgc28gdGhhdCBzZWVtcyBsaWtlIGEgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3IuIEkgc2hvdWxkIGNoZWNrIHRoZSBjYWxsZXJzIG9mIGBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCB0byBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgdGhlIGNvZGUgZmxvdyBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbW0uaD00ODkyPXVuc2lnbmVkIGxvbmcgc2VjdGlvbl9tYXBfc2l6ZSh2b2lkKTtcbmluY2x1ZGUvbGludXgvbW0uaDo0ODkzOnN0cnVjdCBwYWdlICogX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbmluY2x1ZGUvbGludXgvbW0uaC00ODk0LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTU0OD1zdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKVxuLS1cbm1tL3NwYXJzZS12bWVtbWFwLmMtNTUyLVxubW0vc3BhcnNlLXZtZW1tYXAuYzo1NTM6c3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbm1tL3NwYXJzZS12bWVtbWFwLmMtNTU0LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTY4OD1zdGF0aWMgc3RydWN0IHBhZ2UgKiBfX21lbWluaXQgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy02OTEte1xubW0vc3BhcnNlLXZtZW1tYXAuYzo2OTI6XHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAocGZuLCBucl9wYWdlcywgbmlkLCBhbHRtYXAsXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTY5My1cdFx0XHRcdFx0XHQgICAgICBwZ21hcCk7XG4tLVxubW0vc3BhcnNlLmM9MjMyPXVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcbi0tXG5tbS9zcGFyc2UuYy0yMzYtXG5tbS9zcGFyc2UuYzoyMzc6c3RydWN0IHBhZ2UgX19pbml0ICpfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxubW0vc3BhcnNlLmMtMjM4LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2UuYz0yOTg9c3RhdGljIHZvaWQgX19pbml0IHNwYXJzZV9pbml0X25pZChpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHBudW1fYmVnaW4sXG4tLVxubW0vc3BhcnNlLmMtMzIwLVx0XHRpZiAoIXByZWluaXRlZF92bWVtbWFwX3NlY3Rpb24obXMpKSB7XG5tbS9zcGFyc2UuYzozMjE6XHRcdFx0bWFwID0gX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcChwZm4sIFBBR0VTX1BFUl9TRUNUSU9OLFxubW0vc3BhcnNlLmMtMzIyLVx0XHRcdFx0XHRuaWQsIE5VTEwsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MzgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSBjb2RlIHNuaXBwZXRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGEgc2Vhc29uZWQga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50IGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgU3BhcnNlIFZtZW1tYXAgSW5pdGlhbGl6YXRpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3BhcnNlIHZtZW1tYXAsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBlbnRyeSBwb2ludHMgSSYjMzk7bSBjb25jZXJuZWQgd2l0aCBhcmUgYHBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCBpbiBgbW0vc3BhcnNlLXZtZW1tYXAuY2AgYW5kIGFsc28gYHNwYXJzZV9pbml0X25pZGAgaW4gYG1tL3NwYXJzZS5jYC4gTm93LCBgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIHNlZW1zIHRvIGJlIHRoZSBjcnVjaWFsIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIGBzcGFyc2VfYWRkX3NlY3Rpb25gLCBJIHNlZSBub3cuIFRoaXMgc3VnZ2VzdHMgYSBtb2R1bGFyIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEJhc2ljYWxseSwgYHNwYXJzZV9hZGRfc2VjdGlvbmAgdHJpZ2dlcnMgdGhlIHBvcHVsYXRpb24gb2YgdGhlIG1lbW1hcCBzdHJ1Y3R1cmUgZm9yIGEgcGFydGljdWxhciBzZWN0aW9uLCBhbmQgd2l0aGluIGl0LCBgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGhhbmRsZXMgdGhlIGFjdHVhbCBuaXR0eS1ncml0dHkgb2YgY3JlYXRpbmcgYW5kIHBvcHVsYXRpbmcgdGhvc2UgbWVtb3J5IG1hcHMuIEdvdCBpdC4gVGhpcyBtYWtlcyB0aGUgY29kZSBtb3JlIG1hbmFnZWFibGUsIHNlcGFyYXRpbmcgdGhlIGFsbG9jYXRpb24gbWFuYWdlbWVudCBmcm9tIHRoZSBwb3B1bGF0aW9uLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBzcGFyc2VfaW5pdF9uaWRgIGFuZCBgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIHRvIGdldCBhIGZ1bGwgdmlldyBvZiB0aGUgbWVtb3J5IGxheW91dCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbW0uaD00ODkyPXVuc2lnbmVkIGxvbmcgc2VjdGlvbl9tYXBfc2l6ZSh2b2lkKTtcbmluY2x1ZGUvbGludXgvbW0uaDo0ODkzOnN0cnVjdCBwYWdlICogX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbmluY2x1ZGUvbGludXgvbW0uaC00ODk0LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTU0OD1zdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKVxuLS1cbm1tL3NwYXJzZS12bWVtbWFwLmMtNTUyLVxubW0vc3BhcnNlLXZtZW1tYXAuYzo1NTM6c3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbm1tL3NwYXJzZS12bWVtbWFwLmMtNTU0LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTY2Mz1zdGF0aWMgaW50IF9fbWVtaW5pdCBzZWN0aW9uX25yX3ZtZW1tYXBfcGFnZXModW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy02ODctXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjY4ODpzdGF0aWMgc3RydWN0IHBhZ2UgKiBfX21lbWluaXQgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTY4OS1cdFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgaW50IG5pZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy02OTEte1xubW0vc3BhcnNlLXZtZW1tYXAuYzo2OTI6XHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAocGZuLCBucl9wYWdlcywgbmlkLCBhbHRtYXAsXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTY5My1cdFx0XHRcdFx0XHQgICAgICBwZ21hcCk7XG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy02OTktXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjcwMDpzdGF0aWMgdm9pZCBkZXBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxubW0vc3BhcnNlLXZtZW1tYXAuYy03MDEtXHRcdHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLCBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuLS1cbm1tL3NwYXJzZS12bWVtbWFwLmM9NzgyPXN0YXRpYyB2b2lkIHNlY3Rpb25fZGVhY3RpdmF0ZSh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTgyMC1cdGlmICghc2VjdGlvbl9pc19lYXJseSlcbm1tL3NwYXJzZS12bWVtbWFwLmM6ODIxOlx0XHRkZXBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHBmbiwgbnJfcGFnZXMsIGFsdG1hcCwgcGdtYXApO1xubW0vc3BhcnNlLXZtZW1tYXAuYy04MjItXHRlbHNlIGlmIChtZW1tYXApXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYz04Mjk9c3RhdGljIHN0cnVjdCBwYWdlICogX19tZW1pbml0IHNlY3Rpb25fYWN0aXZhdGUoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBwZm4sXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy04NjItXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjg2MzpcdG1lbW1hcCA9IHBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHBmbiwgbnJfcGFnZXMsIG5pZCwgYWx0bWFwLCBwZ21hcCk7XG5tbS9zcGFyc2Utdm1lbW1hcC5jLTg2NC1cdGlmICghbWVtbWFwKSB7XG4tLVxubW0vc3BhcnNlLmM9MjMyPXVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcbi0tXG5tbS9zcGFyc2UuYy0yMzYtXG5tbS9zcGFyc2UuYzoyMzc6c3RydWN0IHBhZ2UgX19pbml0ICpfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxubW0vc3BhcnNlLmMtMjM4LVx0XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5tbS9zcGFyc2UuYz0yOTg9c3RhdGljIHZvaWQgX19pbml0IHNwYXJzZV9pbml0X25pZChpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHBudW1fYmVnaW4sXG4tLVxubW0vc3BhcnNlLmMtMzIwLVx0XHRpZiAoIXByZWluaXRlZF92bWVtbWFwX3NlY3Rpb24obXMpKSB7XG5tbS9zcGFyc2UuYzozMjE6XHRcdFx0bWFwID0gX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcChwZm4sIFBBR0VTX1BFUl9TRUNUSU9OLFxubW0vc3BhcnNlLmMtMzIyLVx0XHRcdFx0XHRuaWQsIE5VTEwsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MjgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgTWVtb3J5IEhvdHBsdWcgVExCIEZsdXNoIG9uIFJJU0MtVioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29kZSBpbiBxdWVzdGlvbiBpbnZvbHZlcyBgc2VjdGlvbl9hY3RpdmF0ZWAsIGNhbGxlZCBmcm9tIGBzcGFyc2VfYWRkX3NlY3Rpb25gLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBfX2FkZF9wYWdlc2AuIFRoaXMgd2hvbGUgcGF0aCByZWxhdGVzIHRvIG1lbW9yeSBob3RwbHVnLCBhbmQsIGNydWNpYWxseSwgdXNlcnNwYWNlICpjYW4qIHRyaWdnZXIgdGhpcyB0aHJvdWdoIHN5c2ZzLCBzbyBpdCYjMzk7cyBhIHJlYWxpc3RpYyBleGVjdXRpb24gcGF0aC4gVGhpcyBzcGVjaWZpYyBjaGFuZ2UgaXMgYSBUTEIgZmx1c2ggb24gUklTQy1WIGFmdGVyIG1lbW9yeSBob3RwbHVnLCBhIHRhcmdldGVkIGFyY2hpdGVjdHVyYWwgYWRqdXN0bWVudC4KClRoZSBjb3JlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgZnV6emluZyBpcyBqdXN0aWZpZWQuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0aG91Z2ggcXVpdGUgc21hbGwgYW5kIHNwZWNpYWxpemVkLCB0aGF0IGltcGFjdHMgYSBjb3JlIHN5c3RlbSBmdW5jdGlvbiB0cmlnZ2VyZWQgYnkgYSB1c2VyIGFjdGlvbiwgSSBuZWVkIHRvIGV2YWx1YXRlIHRoaXMgcHJvcGVybHkuIFRoZSBwcmltYXJ5IGNvbmNlcm4gaXMgaWYgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBhbmQgdGhlIHRleHQgc2F5cyBpdCBpcyBpbiBRRU1VLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KClRoZSBwcm92aWRlZCBndWlkYW5jZSBzdGF0ZXMgJiMzNDtJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLiYjMzQ7IFRoaXMgcGF0Y2ggKmRvZXMqIHRvdWNoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIGZvciBSSVNDLVYgYW5kIGFsc28gaW50ZXJhY3RzIHdpdGggdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGNvcmUsIHNwZWNpZmljYWxseSBgc3BhcnNlLXZtZW1tYXAuY2AuCgpDb25zaWRlcmluZyB0aGlzLCBJIG5lZWQgdG8gZm9jdXMgb24gcmVhY2hhYmlsaXR5LiBTaW5jZSBRRU1VIGNhbiBiZSB1c2VkIGZvciBtZW1vcnkgaG90cGx1ZywgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgZnV6emluZyB0aGlzIGlzIHRoZSByaWdodCBkZWNpc2lvbi4gVGhpcyBtZWFucyBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYHRydWVgLgoKUmVnYXJkaW5nIGZ1enppbmcgdGFyZ2V0cywgd2hpbGUgdGhlIHBhdGNoIGl0c2VsZiBpcyBqdXN0IGEgVExCIGZsdXNoLCB0aGUgcGF0aCAqbGVhZGluZyogdG8gaXQgaXMgaW50ZXJlc3RpbmcuIFNvIHRoZSBjcml0aWNhbCBzZWN0aW9ucyB0byBmb2N1cyBvbiBhcmUgYF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGFuZCBgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZWAuIFdoaWxlIHRoZSBsYXR0ZXIgaXMganVzdCBhIHdyYXBwZXIgZm9yIGBtYXJrX25ld192YWxpZF9tYXBgLCB0aGUgZm9ybWVyIGlzIGEgbWVtb3J5IGhvdHBsdWcgZnVuY3Rpb24gYW5kIHRoZSBlbnRyeSBwb2ludCB0aGF0IG1ha2VzIHNlbnNlLgoKTGFzdGx5LCBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uIGVuYWJsZXMgYFNQQVJTRU1FTV9WTUVNTUFQYCBhbmQgYE1FTU9SWV9IT1RQTFVHYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7U1BBUlNFTUVNX1ZNRU1NQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9tbS9tZW1vcnktbW9kZWwucnN0PTEwMj12bWVtbWFwXCYjMzQ7LiBUaGUgc2VsZWN0aW9uIGlzIG1hZGUgYXQgYnVpbGQgdGltZSBhbmQgaXQgaXMgZGV0ZXJtaW5lZCBieVxuRG9jdW1lbnRhdGlvbi9tbS9tZW1vcnktbW9kZWwucnN0OjEwMzp0aGUgdmFsdWUgb2YgYENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUGAuXG5Eb2N1bWVudGF0aW9uL21tL21lbW9yeS1tb2RlbC5yc3QtMTA0LVxuLS1cbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdD0xMzQ9Wk9ORV9ERVZJQ0VcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdC0xMzUtPT09PT09PT09PT1cbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdDoxMzY6VGhlIGBaT05FX0RFVklDRWAgZmFjaWxpdHkgYnVpbGRzIHVwb24gYFNQQVJTRU1FTV9WTUVNTUFQYCB0byBvZmZlclxuRG9jdW1lbnRhdGlvbi9tbS9tZW1vcnktbW9kZWwucnN0LTEzNy1gc3RydWN0IHBhZ2VgIGBtZW1fbWFwYCBzZXJ2aWNlcyBmb3IgZGV2aWNlIGRyaXZlciBpZGVudGlmaWVkIHBoeXNpY2FsXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdD02Mz1TUEFSU0VNRU3mqKHlnovlsIbniannkIblhoXlrZjmmL7npLrkuLrkuIDkuKrpg6jliIbnmoTpm4blkIjjgILkuIDkuKrljLrmrrXnlKhtZW1fc2VjdGlvbue7k+aehFxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL21lbW9yeS1tb2RlbC5yc3QtODYt6YCa6L+HU1BBUlNFTUVN77yM5pyJ5Lik56eN5Y+v6IO955qE5pa55byP5bCGUEZO6L2s5o2i5Li655u45bqU55qEIGBzdHJ1Y3QgcGFnZWAgLS1cJiMzNDtjbGFzc2ljIHNwYXJzZVwmIzM0O+WSjFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdDo4NzogXCYjMzQ7c3BhcnNlIHZtZW1tYXBcJiMzNDvjgILpgInmi6nmmK/lnKjmnoTlu7rml7bov5vooYznmoTvvIzlroPnlLEgYENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUGAg55qEXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9tZW1vcnktbW9kZWwucnN0LTg4LSDlgLzlhrPlrprjgIJcbi0tXG5hcmNoL2FybTY0L0tjb25maWc9MTYwNj1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXG5hcmNoL2FybTY0L0tjb25maWctMTYwNy1cdGRlZl9ib29sIHlcbmFyY2gvYXJtNjQvS2NvbmZpZzoxNjA4Olx0c2VsZWN0IFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxuYXJjaC9hcm02NC9LY29uZmlnLTE2MDktXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYz0yMTAzPXN0YXRpYyBib29sIGNhbl91bm1hcF93aXRob3V0X3NwbGl0KHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMjExOS1cdC8qIFBGTiByYW5nZSYjMzk7cyB2bWVtbWFwIGVkZ2VzIGFyZSBsZWFmIGVudHJ5IGFsaWduZWQgKi9cbmFyY2gvYXJtNjQvbW0vbW11LmM6MjEyMDpcdEJVSUxEX0JVR19PTighSVNfRU5BQkxFRChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApKTtcbmFyY2gvYXJtNjQvbW0vbW11LmMtMjEyMS1cdHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpcGZuX3RvX3BhZ2UocGZuKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnPTc3NT1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTc3Ni1cdGRlZl9ib29sIDY0QklUXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnOjc3NzpcdHNlbGVjdCBTUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEVcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzc4LVx0aGVscFxuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTEzLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmg6MTQ6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMTUtI2RlZmluZSBWTUVNTUFQX1NJWkVcdChzaXplb2Yoc3RydWN0IHBhZ2UpICogKDFVTCBcdTAwM2NcdTAwM2MgKGNwdV9wYWJpdHMgJiM0MzsgMSAtIFBBR0VfU0hJRlQpKSlcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9MTIyPXZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuLS1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xMzEtXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTMyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xMzMtdm9pZCBfX21lbWluaXQgdm1lbW1hcF9zZXRfcG1kKHBtZF90ICpwbWQsIHZvaWQgKnAsIGludCBub2RlLFxuLS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnPTc5ND1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXG4tLVxuYXJjaC9wb3dlcnBjL0tjb25maWctNzk2LVx0ZGVwZW5kcyBvbiBQUEM2NFxuYXJjaC9wb3dlcnBjL0tjb25maWc6Nzk3Olx0c2VsZWN0IFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxuYXJjaC9wb3dlcnBjL0tjb25maWctNzk4LVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWc9MzU9Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWctMzYtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnOjM3OiMgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQIGlzIG5vdCBzZXRcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWctMzgtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTE3LSAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjE4OiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9FWFRSRU1FKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTE5LSNkZWZpbmUgSF9NQVhfUEhZU01FTV9CSVRTXHQ1MVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0xMDktXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MTEwOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9FWFRSRU1FKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oLTExMS0jZGVmaW5lIFJfTUFYX1BIWVNNRU1fQklUU1x0NTFcbi0tXG5hcmNoL3Bvd2VycGMva2V4ZWMvdm1jb3JlX2luZm8uYz02PXZvaWQgYXJjaF9jcmFzaF9zYXZlX3ZtY29yZWluZm8odm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2V4ZWMvdm1jb3JlX2luZm8uYy0xNS0jZW5kaWZcbmFyY2gvcG93ZXJwYy9rZXhlYy92bWNvcmVfaW5mby5jOjE2OiNpZiBkZWZpbmVkKENPTkZJR19QUEM2NCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxuYXJjaC9wb3dlcnBjL2tleGVjL3ZtY29yZV9pbmZvLmMtMTctXHRWTUNPUkVJTkZPX1NZTUJPTCh2bWVtbWFwX2xpc3QpO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0yNi1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYzoyNzojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtMjgtLypcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM9MTMxPXZvaWQgaGFzaF9fdm1lbW1hcF9yZW1vdmVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xNDAtI2VuZGlmXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM6MTQxOiNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xNDItXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz0xMDc4PXN0YXRpYyB2b2lkIF9faW5pdCBodGFiX2luaXRfcGFnZV9zaXplcyh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTEyOC1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTEyOTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTExMzAtXHQvKlxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTEzOC1cdFx0bW11X3ZtZW1tYXBfcHNpemUgPSBtbXVfdmlydHVhbF9wc2l6ZTtcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTEzOTojZW5kaWYgLyogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQICovXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTExNDAtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMTQyLVx0ICAgICAgIFwmIzM0O3ZpcnR1YWwgPSAlZCwgaW8gPSAlZFwmIzM0O1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoxMTQzOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTE0NC1cdCAgICAgICBcJiMzNDssIHZtZW1tYXAgPSAlZFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTE0OS1cdCAgICAgICBtbXVfcHNpemVfZGVmc1ttbXVfaW9fcHNpemVdLnNoaWZ0XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjExNTA6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMTUxLVx0ICAgICAgICxtbXVfcHNpemVfZGVmc1ttbXVfdm1lbW1hcF9wc2l6ZV0uc2hpZnRcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jPTI3PUVYUE9SVF9TWU1CT0xfR1BMKG1tdV9wc2l6ZV9kZWZzKTtcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjgtXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jOjI5OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMzAtaW50IG1tdV92bWVtbWFwX3BzaXplID0gTU1VX1BBR0VfNEs7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz03MjM9c3RhdGljIHZvaWQgZnJlZV9wdWRfdGFibGUocHVkX3QgKnB1ZF9zdGFydCwgcDRkX3QgKnA0ZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTczNy1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6NzM4OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtNzM5LXN0YXRpYyBib29sIF9fbWVtaW5pdCB2bWVtbWFwX3BtZF9pc191bnVzZWQodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTc4Nz1zdGF0aWMgdm9pZCBfX21lbWluaXQgcmVtb3ZlX3B0ZV90YWJsZShwdGVfdCAqcHRlX3N0YXJ0LCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy04MDgtXHRcdH1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6ODA5OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtODEwLVx0XHRlbHNlIGlmICghZGlyZWN0IFx1MDAyNlx1MDAyNiB2bWVtbWFwX3BhZ2VfaXNfdW51c2VkKGFkZHIsIG5leHQpKSB7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz04MjA9c3RhdGljIHZvaWQgX19tZW1pbml0IHJlbW92ZV9wbWRfdGFibGUocG1kX3QgKnBtZF9zdGFydCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtODQyLVx0XHRcdH1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6ODQzOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtODQ0LVx0XHRcdGVsc2UgaWYgKCFkaXJlY3QgXHUwMDI2XHUwMDI2IHZtZW1tYXBfcG1kX2lzX3VudXNlZChhZGRyLCBuZXh0KSkge1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9OTQ2PWludCBfX21lbWluaXQgcmFkaXhfX3JlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy05NTItXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjk1MzojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTk1NC1zdGF0aWMgaW50IF9fbWFwX2tlcm5lbF9wYWdlX25pZCh1bnNpZ25lZCBsb25nIGVhLCB1bnNpZ25lZCBsb25nIHBhLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYz00Njc9dm9pZCBzbGJfaW5pdGlhbGl6ZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00NzEtXHRzdGF0aWMgaW50IHNsYl9lbmNvZGluZ19pbml0ZWQ7XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmM6NDcyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00NzMtXHR1bnNpZ25lZCBsb25nIHZtZW1tYXBfbGxwO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00ODAtXHRnZXRfcGFjYSgpLVx1MDAzZXZtYWxsb2Nfc2xscCA9IFNMQl9WU0lEX0tFUk5FTCB8IHZtYWxsb2NfbGxwO1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsYi5jOjQ4MTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmMtNDgyLVx0dm1lbW1hcF9sbHAgPSBtbXVfcHNpemVfZGVmc1ttbXVfdm1lbW1hcF9wc2l6ZV0uc2xscDtcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmMtNDg3LVx0XHRwcl9kZXZlbChcJiMzNDtTTEI6IGlvICAgICAgTExQID0gJTA0bHhcXG5cJiMzNDssIGlvX2xscCk7XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmM6NDg4OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00ODktXHRcdHByX2RldmVsKFwmIzM0O1NMQjogdm1lbW1hcCBMTFAgPSAlMDRseFxcblwmIzM0Oywgdm1lbW1hcF9sbHApO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYz02NjI9c3RhdGljIGxvbmcgc2xiX2FsbG9jYXRlX2tlcm5lbCh1bnNpZ25lZCBsb25nIGVhLCB1bnNpZ25lZCBsb25nIGlkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy02NzUtXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmM6Njc2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy02NzctXHR9IGVsc2UgaWYgKGlkID09IFZNRU1NQVBfUkVHSU9OX0lEKSB7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy02Ni1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM6Njc6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy02OC0vKlxuLS1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM9Mzc4PXZvaWQgX19yZWYgdm1lbW1hcF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtMzg5LVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzozOTA6I2VuZGlmIC8qIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCAqL1xuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy0zOTEtXG4tLVxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jLTE2LVxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jOjE3OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy0xOC0vKlxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYz00OD12b2lkIHZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmMtNTItI2VuZGlmXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmM6NTM6I2VuZGlmIC8qIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCAqL1xuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jLTU0LVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvaGFzaHBhZ2V0YWJsZS5jPTQ5MD1zdGF0aWMgdm9pZCB3YWxrX3ZtZW1tYXAoc3RydWN0IHBnX3N0YXRlICpzdClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL2hhc2hwYWdldGFibGUuYy00OTMtXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL2hhc2hwYWdldGFibGUuYzo0OTQ6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKSlcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvaGFzaHBhZ2V0YWJsZS5jLTQ5NS1cdFx0cmV0dXJuO1xuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZz0xMz1jb25maWcgUklTQ1Zcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWctMjItXHRzZWxlY3QgQVJDSF9FTkFCTEVfSFVHRVBBR0VfTUlHUkFUSU9OIGlmIEhVR0VUTEJfUEFHRSBcdTAwMjZcdTAwMjYgTUlHUkFUSU9OXG5hcmNoL3Jpc2N2L0tjb25maWc6MjM6XHRzZWxlY3QgQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUcgaWYgU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcmlzY3YvS2NvbmZpZy0yNC1cdHNlbGVjdCBBUkNIX0VOQUJMRV9TUExJVF9QTURfUFRMT0NLIGlmIFBHVEFCTEVfTEVWRUxTIFx1MDAzZSAyXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnPTMwOD1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTMxMS1cdHNlbGVjdCBTUEFSU0VNRU1fU1RBVElDIGlmIDMyQklUIFx1MDAyNlx1MDAyNiBTUEFSU0VNRU1cbmFyY2gvcmlzY3YvS2NvbmZpZzozMTI6XHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlmIDY0QklUXG5hcmNoL3Jpc2N2L0tjb25maWctMzEzLVxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTkxLSAqIERlZmluZSB2bWVtbWFwIGZvciBwZm5fdG9fcGFnZSBcdTAwMjYgcGFnZV90b19wZm4gY2FsbHMuIE5lZWRlZCBpZiBrZXJuZWxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjkyOiAqIGlzIGNvbmZpZ3VyZWQgd2l0aCBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgZW5hYmxlZC5cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTkzLSAqL1xuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTk4LSNkZWZpbmUgRElSRUNUX01BUF9QSFlTTUVNX0VORCAocGh5c19yYW1fYmFzZSAmIzQzOyBLRVJOX1ZJUlRfU0laRSAtIDEpXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaDo5OTojZWxpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEwMC0jZGVmaW5lIERJUkVDVF9NQVBfUEhZU01FTV9FTkQgXFxcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMjA2PXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX3N3cF9jbGVhcl9leGNsdXNpdmUocHRlX3QgcHRlKVxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEyNTUtXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMjU2Oi8qIE5lZWRlZCBvbiBTUEFSU0VNRU1fVk1FTU1BUCAqL1xuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTI1Ny0jZGVmaW5lIHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZVxuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTYwPUVYUE9SVF9TWU1CT0wocGh5c19yYW1fYmFzZSk7XG5hcmNoL3Jpc2N2L21tL2luaXQuYy02MS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjYyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTYzLSNkZWZpbmUgVk1FTU1BUF9BRERSX0FMSUdOXHRtYXgoMVVMTCBcdTAwM2NcdTAwM2MgU0VDVElPTl9TSVpFX0JJVFMsIFxcXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MjA3PXN0YXRpYyB2b2lkIF9faW5pdCBzZXR1cF9ib290bWVtKHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMjMzLVx0cGh5c19yYW1fYmFzZSA9IG1lbWJsb2NrX3N0YXJ0X29mX0RSQU0oKSBcdTAwMjYgUE1EX01BU0s7XG5hcmNoL3Jpc2N2L21tL2luaXQuYzoyMzQ6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMjM1LVx0dm1lbW1hcF9zdGFydF9wZm4gPSByb3VuZF9kb3duKHBoeXNfcmFtX2Jhc2UsIFZNRU1NQVBfQUREUl9BTElHTikgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTM0OT12b2lkIF9faW5pdCBtaXNjX21lbV9pbml0KHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTM1Mi1cdGFyY2hfbnVtYV9pbml0KCk7XG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxMzUzOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNTQtXHQvKiBUaGUgZW50aXJlIFZNRU1NQVAgcmVnaW9uIGhhcyBiZWVuIHBvcHVsYXRlZC4gRmx1c2ggVExCIGZvciB0aGlzIHJlZ2lvbiAqL1xuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNjAtXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxMzYxOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNjItaW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBpbnQgbm9kZSxcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xMzY3LVx0LypcbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjEzNjg6XHQgKiBOb3RlIHRoYXQgU1BBUlNFTUVNX1ZNRU1NQVAgaXMgb25seSBzZWxlY3RlZCBmb3IgcnY2NCBhbmQgdGhhdCB3ZVxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTM2OS1cdCAqIGNhbiYjMzk7dCB1c2UgaHVnZXBhZ2UgbWFwcGluZ3MgZm9yIDItbGV2ZWwgcGFnZSB0YWJsZSBiZWNhdXNlIGluIGNhc2Ugb2Zcbi0tXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jPTYxPWVudW0gYWRkcmVzc19tYXJrZXJzX2lkeCB7XG4tLVxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy02NS1cdFBDSV9JT19FTkRfTlIsXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jOjY2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtNjctXHRWTUVNTUFQX1NUQVJUX05SLFxuLS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9ODQ9c3RhdGljIHN0cnVjdCBhZGRyX21hcmtlciBhZGRyZXNzX21hcmtlcnNbXSA9IHtcbi0tXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTg4LVx0ezAsIFwmIzM0O1BDSSBJL08gZW5kXCYjMzQ7fSxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6ODk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy05MC1cdHswLCBcJiMzNDt2bWVtbWFwIHN0YXJ0XCYjMzQ7fSxcbi0tXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jPTQyMz1zdGF0aWMgaW50IF9faW5pdCBwdGR1bXBfaW5pdCh2b2lkKVxuLS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtNDMwLVx0YWRkcmVzc19tYXJrZXJzW1BDSV9JT19FTkRfTlJdLnN0YXJ0X2FkZHJlc3MgPSBQQ0lfSU9fRU5EO1xuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYzo0MzE6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy00MzItXHRhZGRyZXNzX21hcmtlcnNbVk1FTU1BUF9TVEFSVF9OUl0uc3RhcnRfYWRkcmVzcyA9IFZNRU1NQVBfU1RBUlQ7XG4tLVxuYXJjaC9zMzkwL0tjb25maWc9NzEwPWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcbmFyY2gvczM5MC9LY29uZmlnLTcxMS1cdGRlZl9ib29sIHlcbmFyY2gvczM5MC9LY29uZmlnOjcxMjpcdHNlbGVjdCBTUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEVcbmFyY2gvczM5MC9LY29uZmlnLTcxMy1cbi0tXG5hcmNoL3NwYXJjL0tjb25maWc9MjcyPWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcbmFyY2gvc3BhcmMvS2NvbmZpZy0yNzMtXHRkZWZfYm9vbCB5IGlmIFNQQVJDNjRcbmFyY2gvc3BhcmMvS2NvbmZpZzoyNzQ6XHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFXG5hcmNoL3NwYXJjL0tjb25maWctMjc1LVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUz0xNzE9a3ZtYXBfZHRsYl9sb2FkOlxuLS1cbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0xOTUtXG5hcmNoL3NwYXJjL2tlcm5lbC9rdGxiLlM6MTk2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0xOTcta3ZtYXBfdm1lbW1hcDpcbi0tXG5hcmNoL3NwYXJjL2tlcm5lbC9rdGxiLlM9MjAyPWt2bWFwX2R0bGJfbm9ubGluZWFyOlxuLS1cbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0yMDgtXG5hcmNoL3NwYXJjL2tlcm5lbC9rdGxiLlM6MjA5OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0yMTAtXHQvKiBEbyBub3QgdXNlIHRoZSBUU0IgZm9yIHZtZW1tYXAuICAqL1xuLS1cbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jPTI1NDI9RVhQT1JUX1NZTUJPTChfUEFHRV9DQUNIRSk7XG5hcmNoL3NwYXJjL21tL2luaXRfNjQuYy0yNTQzLVxuYXJjaC9zcGFyYy9tbS9pbml0XzY0LmM6MjU0NDojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5hcmNoL3NwYXJjL21tL2luaXRfNjQuYy0yNTQ1LXZvaWQgX19tZW1pbml0IHZtZW1tYXBfc2V0X3BtZChwbWRfdCAqcG1kLCB2b2lkICpwLCBpbnQgbm9kZSxcbi0tXG5hcmNoL3NwYXJjL21tL2luaXRfNjQuYz0yNTYyPWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHZzdGFydCwgdW5zaWduZWQgbG9uZyB2ZW5kLFxuLS1cbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jLTI1NjYtfVxuYXJjaC9zcGFyYy9tbS9pbml0XzY0LmM6MjU2NzojZW5kaWYgLyogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQICovXG5hcmNoL3NwYXJjL21tL2luaXRfNjQuYy0yNTY4LVxuLS1cbmFyY2gveDg2L0tjb25maWc9MTU1Nz1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXG4tLVxuYXJjaC94ODYvS2NvbmZpZy0xNTU5LVx0c2VsZWN0IFNQQVJTRU1FTV9TVEFUSUMgaWYgWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnOjE1NjA6XHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlmIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy0xNTYxLVxuLS1cbmFyY2gveDg2L2VudHJ5L3Zkc28vdmRzbzMyL2Zha2VfMzJiaXRfYnVpbGQuaC0xMi0jdW5kZWYgQ09ORklHX0lMTEVHQUxfUE9JTlRFUl9WQUxVRVxuYXJjaC94ODYvZW50cnkvdmRzby92ZHNvMzIvZmFrZV8zMmJpdF9idWlsZC5oOjEzOiN1bmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmFyY2gveDg2L2VudHJ5L3Zkc28vdmRzbzMyL2Zha2VfMzJiaXRfYnVpbGQuaC0xNC0jdW5kZWYgQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXG4tLVxuZnMvS2NvbmZpZz0yNzc9Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXG4tLVxuZnMvS2NvbmZpZy0yNzktXHRkZXBlbmRzIG9uIEFSQ0hfV0FOVF9PUFRJTUlaRV9IVUdFVExCX1ZNRU1NQVBcbmZzL0tjb25maWc6MjgwOlx0ZGVwZW5kcyBvbiBTUEFSU0VNRU1fVk1FTU1BUFxuZnMvS2NvbmZpZzoyODE6XHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfUFJFSU5JVCBpZiBBUkNIX1dBTlRfSFVHRVRMQl9WTUVNTUFQX1BSRUlOSVRcbmZzL0tjb25maWctMjgyLVxuLS1cbmZzL3Byb2Mva2NvcmUuYz0xNDI9c3RhdGljIGludCBrY29yZV9yYW1fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuLS1cbmZzL3Byb2Mva2NvcmUuYy0xNTctXG5mcy9wcm9jL2tjb3JlLmM6MTU4OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmZzL3Byb2Mva2NvcmUuYy0xNTktLyogY2FsY3VsYXRlIHZtZW1tYXAmIzM5O3MgYWRkcmVzcyBmcm9tIGdpdmVuIHN5c3RlbSByYW0gcGZuIGFuZCByZWdpc3RlciBpdCAqL1xuLS1cbmluY2x1ZGUvYXNtLWdlbmVyaWMvbWVtb3J5X21vZGVsLmg9MjY9c3RhdGljIGlubGluZSBpbnQgcGZuX3ZhbGlkKHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbmluY2x1ZGUvYXNtLWdlbmVyaWMvbWVtb3J5X21vZGVsLmgtNDItXG5pbmNsdWRlL2FzbS1nZW5lcmljL21lbW9yeV9tb2RlbC5oOjQzOiNlbGlmIGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxuaW5jbHVkZS9hc20tZ2VuZXJpYy9tZW1vcnlfbW9kZWwuaC00NC1cbi0tXG5pbmNsdWRlL2xpbnV4L21tLmg9MjExPWV4dGVybiB1bnNpZ25lZCBsb25nIHN5c2N0bF9hZG1pbl9yZXNlcnZlX2tieXRlcztcbmluY2x1ZGUvbGludXgvbW0uaC0yMTItXG5pbmNsdWRlL2xpbnV4L21tLmg6MjEzOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFx1MDAyNlx1MDAyNiAhZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXG5pbmNsdWRlL2xpbnV4L21tLmgtMjE0LWJvb2wgcGFnZV9yYW5nZV9jb250aWd1b3VzKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmg9MjI2NT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbm9tbXVfc2hhcmVkX3ZtYV9mbGFncyhjb25zdCB2bWFfZmxhZ3NfdCAqZmxhZ3MpXG4tLVxuaW5jbHVkZS9saW51eC9tbS5oLTIyNzAtXG5pbmNsdWRlL2xpbnV4L21tLmg6MjI3MTojaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNKSBcdTAwMjZcdTAwMjYgIWRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxuaW5jbHVkZS9saW51eC9tbS5oLTIyNzItI2RlZmluZSBTRUNUSU9OX0lOX1BBR0VfRkxBR1Ncbi0tXG5pbmNsdWRlL2xpbnV4L21tLmg9NDkxOD12b2lkIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtNDkyMS1cbmluY2x1ZGUvbGludXgvbW0uaDo0OTIyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmluY2x1ZGUvbGludXgvbW0uaC00OTIzLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB2bWVtX2FsdG1hcF9vZmZzZXQoY29uc3Qgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC03MC0jZGVmaW5lIE1BWF9GT0xJT19PUkRFUlx0XHRNQVhfUEFHRV9PUkRFUlxuaW5jbHVkZS9saW51eC9tbXpvbmUuaDo3MTojZWxpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFx1MDAyNlx1MDAyNiAhZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTcyLS8qXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0xOTg0PXN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSB7XG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTE5ODUtXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoxOTg2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTk4Ny1cdERFQ0xBUkVfQklUTUFQKHN1YnNlY3Rpb25fbWFwLCBTVUJTRUNUSU9OU19QRVJfU0VDVElPTik7XG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0yMDczPWVudW0ge1xuLS1cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjA4MC0jZW5kaWZcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MjA4MTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQX1BSRUlOSVRcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjA4Mi1cdFNFQ1RJT05fSVNfVk1FTU1BUF9QUkVJTklUX0JJVCxcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIwOTMtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIwOTQ6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIwOTUtI2RlZmluZSBTRUNUSU9OX0lTX1ZNRU1NQVBfUFJFSU5JVFx0QklUKFNFQ1RJT05fSVNfVk1FTU1BUF9QUkVJTklUX0JJVClcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTIxNDU9c3RhdGljIGlubGluZSBpbnQgb25saW5lX2RldmljZV9zZWN0aW9uKGNvbnN0IHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlvbilcbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIxNTAtXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIxNTE6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIxNTItc3RhdGljIGlubGluZSBpbnQgcHJlaW5pdGVkX3ZtZW1tYXBfc2VjdGlvbihjb25zdCBzdHJ1Y3QgbWVtX3NlY3Rpb24gKnNlY3Rpb24pXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0yMTkyPXN0YXRpYyBpbmxpbmUgaW50IHN1YnNlY3Rpb25fbWFwX2luZGV4KHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjE5Ni1cbmluY2x1ZGUvbGludXgvbW16b25lLmg6MjE5NzojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIxOTgtc3RhdGljIGlubGluZSBpbnQgcGZuX3NlY3Rpb25fdmFsaWQoc3RydWN0IG1lbV9zZWN0aW9uICptcywgdW5zaWduZWQgbG9uZyBwZm4pXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0yMzEwPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBuZXh0X3ZhbGlkX3Bmbih1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBlbmRfcGZuKVxuLS1cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjMyMi1cdCAqL1xuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoyMzIzOlx0aWYgKHBmbiBcdTAwMjYgfihJU19FTkFCTEVEKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgP1xuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0yMzI0LVx0XHQgICBQQUdFX1NVQlNFQ1RJT05fTUFTSyA6IFBBR0VfU0VDVElPTl9NQVNLKSlcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNTEtICovXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0Lmg6NTI6I2lmIGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTSkgXHUwMDI2XHUwMDI2ICFkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaC01My0jZGVmaW5lIFNFQ1RJT05TX1dJRFRIXHRcdFNFQ1RJT05TX1NISUZUXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLWxheW91dC5oLTYwLSNkZWZpbmUgTk9ERVNfV0lEVEhcdFx0Tk9ERVNfU0hJRlRcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaDo2MTojZWxpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaC02Mi0jZXJyb3IgXCYjMzQ7Vm1lbW1hcDogTm8gc3BhY2UgZm9yIG5vZGVzIGZpZWxkIGluIHBhZ2UgZmxhZ3NcJiMzNDtcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC05MC0gKiBTUEFSU0VNRU0gc2VjdGlvbiAoZm9yIHZhcmlhbnRzIG9mIFNQQVJTRU1FTSB0aGF0IHJlcXVpcmUgc2VjdGlvbiBpZHMgbGlrZVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6OTE6ICogU1BBUlNFTUVNX0VYVFJFTUUgd2l0aCAhU1BBUlNFTUVNX1ZNRU1NQVApLlxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtOTItICovXG4tLVxua2VybmVsL3ZtY29yZV9pbmZvLmM9MTQwPXN0YXRpYyBpbnQgX19pbml0IGNyYXNoX3NhdmVfdm1jb3JlaW5mb19pbml0KHZvaWQpXG4tLVxua2VybmVsL3ZtY29yZV9pbmZvLmMtMTc1LSNlbmRpZlxua2VybmVsL3ZtY29yZV9pbmZvLmM6MTc2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbmtlcm5lbC92bWNvcmVfaW5mby5jLTE3Ny1cdFZNQ09SRUlORk9fU1lNQk9MX0FSUkFZKHZtZW1tYXApO1xuLS1cbm1tL0tjb25maWc9NDUxPWNvbmZpZyBTUEFSU0VNRU1fRVhUUkVNRVxuLS1cbm1tL0tjb25maWctNDU0LVxubW0vS2NvbmZpZzo0NTU6Y29uZmlnIFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxubW0vS2NvbmZpZy00NTYtXHRib29sXG5tbS9LY29uZmlnLTQ1Ny1cbm1tL0tjb25maWc6NDU4OmNvbmZpZyBTUEFSU0VNRU1fVk1FTU1BUFxubW0vS2NvbmZpZy00NTktXHRkZWZfYm9vbCB5XG5tbS9LY29uZmlnOjQ2MDpcdGRlcGVuZHMgb24gU1BBUlNFTUVNIFx1MDAyNlx1MDAyNiBTUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEVcbm1tL0tjb25maWctNDYxLVx0aGVscFxubW0vS2NvbmZpZzo0NjI6XHQgIFNQQVJTRU1FTV9WTUVNTUFQIHVzZXMgYSB2aXJ0dWFsbHkgbWFwcGVkIG1lbW1hcCB0byBvcHRpbWlzZVxubW0vS2NvbmZpZy00NjMtXHQgIHBmbl90b19wYWdlIGFuZCBwYWdlX3RvX3BmbiBvcGVyYXRpb25zLiAgVGhpcyBpcyB0aGUgbW9zdFxuLS1cbm1tL0tjb25maWctNDY1LVxubW0vS2NvbmZpZzo0NjY6Y29uZmlnIFNQQVJTRU1FTV9WTUVNTUFQX1BSRUlOSVRcbm1tL0tjb25maWctNDY3LVx0Ym9vbFxuLS1cbm1tL0tjb25maWc9NTIzPW1lbnVjb25maWcgTUVNT1JZX0hPVFBMVUdcbi0tXG5tbS9LY29uZmlnLTUyNS1cdHNlbGVjdCBNRU1PUllfSVNPTEFUSU9OXG5tbS9LY29uZmlnOjUyNjpcdGRlcGVuZHMgb24gU1BBUlNFTUVNX1ZNRU1NQVBcbm1tL0tjb25maWctNTI3LVx0ZGVwZW5kcyBvbiBBUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVR1xuLS1cbm1tL0tjb25maWc9NTk3PWNvbmZpZyBNSFBfTUVNTUFQX09OX01FTU9SWVxubW0vS2NvbmZpZy01OTgtXHRkZWZfYm9vbCB5XG5tbS9LY29uZmlnOjU5OTpcdGRlcGVuZHMgb24gTUVNT1JZX0hPVFBMVUcgXHUwMDI2XHUwMDI2IFNQQVJTRU1FTV9WTUVNTUFQXG5tbS9LY29uZmlnLTYwMC1cdGRlcGVuZHMgb24gQVJDSF9NSFBfTUVNTUFQX09OX01FTU9SWV9FTkFCTEVcbi0tXG5tbS9LY29uZmlnPTEyMzY9Y29uZmlnIFpPTkVfREVWSUNFXG4tLVxubW0vS2NvbmZpZy0xMjM5LVx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXG5tbS9LY29uZmlnOjEyNDA6XHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXG5tbS9LY29uZmlnLTEyNDEtXHRzZWxlY3QgWEFSUkFZX01VTFRJXG4tLVxubW0vS2NvbmZpZz0xNDA5PWNvbmZpZyBMUlVfR0VOXG4tLVxubW0vS2NvbmZpZy0xNDEyLVx0IyBtYWtlIHN1cmUgZm9saW8tXHUwMDNlZmxhZ3MgaGFzIGVub3VnaCBzcGFyZSBiaXRzXG5tbS9LY29uZmlnOjE0MTM6XHRkZXBlbmRzIG9uIDY0QklUIHx8ICFTUEFSU0VNRU0gfHwgU1BBUlNFTUVNX1ZNRU1NQVBcbm1tL0tjb25maWctMTQxNC1cdGhlbHBcbi0tXG5tbS9NYWtlZmlsZT04Nz1vYmotJChDT05GSUdfU1BBUlNFTUVNKVx0JiM0Mzs9IHNwYXJzZS5vXG5tbS9NYWtlZmlsZTo4ODpvYmotJChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApICYjNDM7PSBzcGFyc2Utdm1lbW1hcC5vXG5tbS9NYWtlZmlsZS04OS1vYmotJChDT05GSUdfTU1VX05PVElGSUVSKSAmIzQzOz0gbW11X25vdGlmaWVyLm9cbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuYz03MDQ9dm9pZCBodWdldGxiX3ZtZW1tYXBfb3B0aW1pemVfYm9vdG1lbV9mb2xpb3Moc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdClcbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuYy03MDgtXG5tbS9odWdldGxiX3ZtZW1tYXAuYzo3MDk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXG5tbS9odWdldGxiX3ZtZW1tYXAuYy03MTAtXG4tLVxubW0vaHVnZXRsYl92bWVtbWFwLmg9Mjk9dm9pZCBodWdldGxiX3ZtZW1tYXBfb3B0aW1pemVfYm9vdG1lbV9mb2xpb3Moc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCk7XG5tbS9odWdldGxiX3ZtZW1tYXAuaDozMDojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQX1BSRUlOSVRcbm1tL2h1Z2V0bGJfdm1lbW1hcC5oLTMxLXZvaWQgaHVnZXRsYl92bWVtbWFwX2luaXRfZWFybHkoaW50IG5pZCk7XG4tLVxubW0vaW50ZXJuYWwuaD05NTk9c3RhdGljIGlubGluZSB2b2lkIHNwYXJzZV9pbml0X29uZV9zZWN0aW9uKHN0cnVjdCBtZW1fc2VjdGlvbiAqbXMsXG4tLVxubW0vaW50ZXJuYWwuaC05NjgtXHQgKiBXZSBlbmNvZGUgdGhlIHN0YXJ0IFBGTiBvZiB0aGUgc2VjdGlvbiBpbnRvIHRoZSBtZW1fbWFwIHN1Y2ggdGhhdFxubW0vaW50ZXJuYWwuaDo5Njk6XHQgKiBwYWdlX3RvX3BmbigpIG9uICFDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgY2FuIHNpbXBseSBzdWJ0cmFjdCBpdFxubW0vaW50ZXJuYWwuaC05NzAtXHQgKiBmcm9tIHRoZSBwYWdlIHBvaW50ZXIgdG8gb2J0YWluIHRoZSBQRk4uXG4tLVxubW0vaW50ZXJuYWwuaD05OTA9c3RhdGljIGlubGluZSB2b2lkIHNwYXJzZV9pbml0KHZvaWQpIHt9XG4tLVxubW0vaW50ZXJuYWwuaC05OTUtICovXG5tbS9pbnRlcm5hbC5oOjk5NjojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXG5tbS9pbnRlcm5hbC5oLTk5Ny12b2lkIHNwYXJzZV9pbml0X3N1YnNlY3Rpb25fbWFwKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcbi0tXG5tbS9pbnRlcm5hbC5oPTk5OT1zdGF0aWMgaW5saW5lIHZvaWQgc3BhcnNlX2luaXRfc3Vic2VjdGlvbl9tYXAodW5zaWduZWQgbG9uZyBwZm4sXG4tLVxubW0vaW50ZXJuYWwuaC0xMDAyLX1cbm1tL2ludGVybmFsLmg6MTAwMzojZW5kaWYgLyogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQICovXG5tbS9pbnRlcm5hbC5oLTEwMDQtXG4tLVxubW0vbWVtYmxvY2suYz0yMTgzPXN0YXRpYyB2b2lkIF9faW5pdCBmcmVlX3VudXNlZF9tZW1tYXAodm9pZClcbi0tXG5tbS9tZW1ibG9jay5jLTIxODgtXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0hBVkVfQVJDSF9QRk5fVkFMSUQpIHx8XG5tbS9tZW1ibG9jay5jOjIxODk6XHQgICAgSVNfRU5BQkxFRChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApKVxubW0vbWVtYmxvY2suYy0yMTkwLVx0XHRyZXR1cm47XG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYz01NTM9c3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTU3Ny1cbm1tL3NwYXJzZS12bWVtbWFwLmM6NTc4OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBfUFJFSU5JVFxubW0vc3BhcnNlLXZtZW1tYXAuYy01NzktLypcbi0tXG5tbS9zcGFyc2UuYz0yMjA9c2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcbi0tXG5tbS9zcGFyc2UuYy0yMjQtXG5tbS9zcGFyc2UuYzoyMjU6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxubW0vc3BhcnNlLmMtMjI2LXVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcbi0tXG5tbS9zcGFyc2UuYz0yMzc9c3RydWN0IHBhZ2UgX19pbml0ICpfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxuLS1cbm1tL3NwYXJzZS5jLTI1MS19XG5tbS9zcGFyc2UuYzoyNTI6I2VuZGlmIC8qICFDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgKi9cbm1tL3NwYXJzZS5jLTI1My1cbi0tXG5tbS91dGlsLmM9MTU2Nz11bnNpZ25lZCBpbnQgZm9saW9fcHRlX2JhdGNoKHN0cnVjdCBmb2xpbyAqZm9saW8sIHB0ZV90ICpwdGVwLCBwdGVfdCBwdGUsXG4tLVxubW0vdXRpbC5jLTE1NzMtXG5tbS91dGlsLmM6MTU3NDojaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNKSBcdTAwMjZcdTAwMjYgIWRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxubW0vdXRpbC5jLTE1NzUtLyoqXG4tLVxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluPTE1Nj1MWF9DT05GSUcoQ09ORklHX1NQQVJTRU1FTV9FWFRSRU1FKVxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluOjE1NzpMWF9DT05GSUcoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluLTE1OC1MWF9DT05GSUcoQ09ORklHX0tBU0FOKVxuLS1cbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5PTIyPWNsYXNzIHBhZ2Vfb3BzKCk6XG4tLVxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMjQtICAgIGRlZiBfX2luaXRfXyhzZWxmKTpcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5OjI1OiAgICAgICAgaWYgbm90IGNvbnN0YW50cy5MWF9DT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVA6XG5zY3JpcHRzL2dkYi9saW51eC9tbS5weToyNjogICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3IoJiMzOTtPbmx5IHN1cHBvcnQgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQIG5vdyYjMzk7KVxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMjctICAgICAgICBpZiBjb25zdGFudHMuTFhfQ09ORklHX0FSTTY0IGFuZCB1dGlscy5pc190YXJnZXRfYXJjaCgmIzM5O2FhcmNoNjQmIzM5Oyk6XG4tLVxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHk9MzQ9Y2xhc3MgeDg2X3BhZ2Vfb3BzKCk6XG4tLVxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMTIwLSAgICBkZWYgcGZuX3NlY3Rpb25fdmFsaWQoc2VsZiwgbXMsIHBmbik6XG5zY3JpcHRzL2dkYi9saW51eC9tbS5weToxMjE6ICAgICAgICBpZiBjb25zdGFudHMuTFhfQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQOlxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMTIyLSAgICAgICAgICAgIGlkeCA9IHNlbGYuc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKVxuLS1cbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5PTIwMz1jbGFzcyBhYXJjaDY0X3BhZ2Vfb3BzKCk6XG4tLVxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMzI0LSAgICBkZWYgcGZuX3NlY3Rpb25fdmFsaWQoc2VsZiwgbXMsIHBmbik6XG5zY3JpcHRzL2dkYi9saW51eC9tbS5weTozMjU6ICAgICAgICBpZiBjb25zdGFudHMuTFhfQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQOlxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMzI2LSAgICAgICAgICAgIGlkeCA9IHNlbGYuc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjg3MAoJCQkJCQkJb3V0cHV0OiAxMjYKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHN5c3RlbSBhbmQgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7dmUgZ290IGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZnV6emluZy4gSSBzZWUgYFNQQVJTRU1FTV9WTUVNTUFQYCBhbmQgYE1FTU9SWV9IT1RQTFVHYCBhcyBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBHaXZlbiB0aGVzZSBvcHRpb25zLCBteSBndXQgdGVsbHMgbWUgdGhpcyBpcyB3b3J0aCB0aGUgZWZmb3J0LCBzbyBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoaXMgc3VnZ2VzdHMgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSB0byBmaW5kIHNvbWUgaW50ZXJlc3RpbmcgYnVncy4KClNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSBzeW1ib2xzOiBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgYW5kIGB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplYC4gVGhlc2UgYXJlIGxpa2VseSB3aGVyZSB0aGUgYWN0aW9uIGlzLCByZWxhdGVkIHRvIHRoZSB2aXJ0dWFsIG1lbW9yeSBtYXAgcG9wdWxhdGlvbiBhbmQgZmluYWxpemF0aW9uLCB3aGljaCBhcmUgb2Z0ZW4gc291cmNlcyBvZiBtZW1vcnkgbWFuYWdlbWVudCBidWdzLgoKQW5kIG9mIGNvdXJzZSwgZm9yIHRoaXMgdG8gYmUgZWZmZWN0aXZlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIHR3byBjb25maWd1cmF0aW9ucywgYFNQQVJTRU1FTV9WTUVNTUFQYCBhbmQgYE1FTU9SWV9IT1RQTFVHYCwgYXJlIGVuYWJsZWQgZHVyaW5nIHRoZSBmdXp6aW5nIHByb2Nlc3MuIFRob3NlIGFyZSB0aGUgZW5hYmxpbmcgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NQQVJTRU1FTV9WTUVNTUFQJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCYjMzQ7LAogICAgJiMzNDt2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGFuZCBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIGJ5IGFkZGluZyBhIFRMQiBmbHVzaCAodm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSkgYWZ0ZXIgcG9wdWxhdGluZyBhIHZtZW1tYXAgc2VjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb3JlIE1NIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTUEFSU0VNRU1fVk1FTU1BUCYjMzQ7LAogICAgJiMzNDtNRU1PUllfSE9UUExVRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAmIzM0OywKICAgICYjMzQ7dm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIFJJU0MtViBieSBhZGRpbmcgYSBUTEIgZmx1c2ggKHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUpIGFmdGVyIHBvcHVsYXRpbmcgYSB2bWVtbWFwIHNlY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29yZSBNTSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjI5OjM2Ljc0NzIwNTI3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgwNDMyNzA4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1BBUlNFTUVNX1ZNRU1NQVBcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcFwiLFxuICAgIFwidm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGFuZCBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIGJ5IGFkZGluZyBhIFRMQiBmbHVzaCAodm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSkgYWZ0ZXIgcG9wdWxhdGluZyBhIHZtZW1tYXAgc2VjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb3JlIE1NIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDoyOTozNi43NDcyMTI1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0NzM2ODg3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE4NzUyMGY4NDA0NDQzNjdkNmRmNmVkMjE5NWY4Y2ZiOTQyOTU4YmJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTA6Mjk6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxcbmluZGV4IDVkNTc1NmJkYTgyZTNkLi42YjAwMGM5OTBiYTcxOSAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oXFxuQEAgLTEyNTMsNiArMTI1MywxMCBAQCBzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9zd3BfY2xlYXJfZXhjbHVzaXZlKHB0ZV90IHB0ZSlcXG4gI2RlZmluZSBUQVNLX1NJWkVcXHRGSVhBRERSX1NUQVJUXFxuICNlbmRpZlxcbiBcXG4rLyogTmVlZGVkIG9uIFNQQVJTRU1FTV9WTUVNTUFQICovXFxuKyNkZWZpbmUgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXFxuK3ZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZCk7XFxuK1xcbiAjZWxzZSAvKiBDT05GSUdfTU1VICovXFxuIFxcbiAjZGVmaW5lIFBBR0VfU0hBUkVEXFx0XFx0X19wZ3Byb3QoMClcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xcbmluZGV4IDViMWIzYzg4YjRkMTMwLi44MDBjYjVjMDA3ZDEwMiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L21tL2luaXQuY1xcbisrKyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jXFxuQEAgLTEzNzIsNiArMTM3MiwxMiBAQCBpbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxcbiBcXHQgKi9cXG4gXFx0cmV0dXJuIHZtZW1tYXBfcG9wdWxhdGVfaHVnZXBhZ2VzKHN0YXJ0LCBlbmQsIG5vZGUsIGFsdG1hcCk7XFxuIH1cXG4rXFxuK3ZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZClcXG4re1xcbitcXHQvKiBBdm9pZCBmYXVsdHMgb24gY2FjaGVkIG5vbi1wcmVzZW50IFRMQiBlbnRyaWVzLiAqL1xcbitcXHRtYXJrX25ld192YWxpZF9tYXAoKTtcXG4rfVxcbiAjZW5kaWZcXG4gXFxuICNpZiBkZWZpbmVkKENPTkZJR19NTVUpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHXzY0QklUKVxcbmRpZmYgLS1naXQgYS9tbS9zcGFyc2Utdm1lbW1hcC5jIGIvbW0vc3BhcnNlLXZtZW1tYXAuY1xcbmluZGV4IDk5ZTJiZTM5NjcxYjYzLi4yOTBjYWZjZmQ3MjMwNSAxMDA2NDRcXG4tLS0gYS9tbS9zcGFyc2Utdm1lbW1hcC5jXFxuKysrIGIvbW0vc3BhcnNlLXZtZW1tYXAuY1xcbkBAIC01NDQsNiArNTQ0LDEyIEBAIHN0YXRpYyBpbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfY29tcG91bmRfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXFxuIFxcbiAjZW5kaWZcXG4gXFxuKyNpZm5kZWYgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZVxcbitzdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKVxcbit7XFxuK31cXG4rI2VuZGlmXFxuK1xcbiBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxcbiBcXHRcXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG4gXFx0XFx0c3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG5AQCAtNTY0LDYgKzU3MCw4IEBAIHN0cnVjdCBwYWdlICogX19tZW1pbml0IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXFxuIFxcdGlmIChyIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbitcXHR2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKCk7XFxuK1xcbiBcXHRyZXR1cm4gcGZuX3RvX3BhZ2UocGZuKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6Mjk6MzguMzk1NDAxODg5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM5NTA2MjE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTUEFSU0VNRU1fVk1FTU1BUFwiLFxuICAgIFwiTUVNT1JZX0hPVFBMVUdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwXCIsXG4gICAgXCJ2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGhvdHBsdWcgYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljIGZvciBSSVNDLVYgYnkgYWRkaW5nIGEgVExCIGZsdXNoICh2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKSBhZnRlciBwb3B1bGF0aW5nIGEgdm1lbW1hcCBzZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvcmUgTU0gY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTg3NTIwZjg0MDQ0NDM2N2Q2ZGY2ZWQyMTk1ZjhjZmI5NDI5NThiYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDEwOjI5OjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxuaW5kZXggNWQ1NzU2YmRhODJlM2QuLjZiMDAwYzk5MGJhNzE5IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oXG5AQCAtMTI1Myw2ICsxMjUzLDEwIEBAIHN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX3N3cF9jbGVhcl9leGNsdXNpdmUocHRlX3QgcHRlKVxuICNkZWZpbmUgVEFTS19TSVpFXHRGSVhBRERSX1NUQVJUXG4gI2VuZGlmXG4gXG4rLyogTmVlZGVkIG9uIFNQQVJTRU1FTV9WTUVNTUFQICovXG4rI2RlZmluZSB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplIHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemVcbit2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKHZvaWQpO1xuK1xuICNlbHNlIC8qIENPTkZJR19NTVUgKi9cbiBcbiAjZGVmaW5lIFBBR0VfU0hBUkVEXHRcdF9fcGdwcm90KDApXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xuaW5kZXggNWIxYjNjODhiNGQxMzAuLjgwMGNiNWMwMDdkMTAyIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9tbS9pbml0LmNcbisrKyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jXG5AQCAtMTM3Miw2ICsxMzcyLDEyIEBAIGludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsXG4gXHQgKi9cbiBcdHJldHVybiB2bWVtbWFwX3BvcHVsYXRlX2h1Z2VwYWdlcyhzdGFydCwgZW5kLCBub2RlLCBhbHRtYXApO1xuIH1cbitcbit2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplKHZvaWQpXG4re1xuK1x0LyogQXZvaWQgZmF1bHRzIG9uIGNhY2hlZCBub24tcHJlc2VudCBUTEIgZW50cmllcy4gKi9cbitcdG1hcmtfbmV3X3ZhbGlkX21hcCgpO1xuK31cbiAjZW5kaWZcbiBcbiAjaWYgZGVmaW5lZChDT05GSUdfTU1VKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfNjRCSVQpXG5kaWZmIC0tZ2l0IGEvbW0vc3BhcnNlLXZtZW1tYXAuYyBiL21tL3NwYXJzZS12bWVtbWFwLmNcbmluZGV4IDk5ZTJiZTM5NjcxYjYzLi4yOTBjYWZjZmQ3MjMwNSAxMDA2NDRcbi0tLSBhL21tL3NwYXJzZS12bWVtbWFwLmNcbisrKyBiL21tL3NwYXJzZS12bWVtbWFwLmNcbkBAIC01NDQsNiArNTQ0LDEyIEBAIHN0YXRpYyBpbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfY29tcG91bmRfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXG4gXG4gI2VuZGlmXG4gXG4rI2lmbmRlZiB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXG4rc3RhdGljIHZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZClcbit7XG4rfVxuKyNlbmRpZlxuK1xuIHN0cnVjdCBwYWdlICogX19tZW1pbml0IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXG4gXHRcdHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsIGludCBuaWQsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuIFx0XHRzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuQEAgLTU2NCw2ICs1NzAsOCBAQCBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxuIFx0aWYgKHIgXHUwMDNjIDApXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuK1x0dm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSgpO1xuK1xuIFx0cmV0dXJuIHBmbl90b19wYWdlKHBmbik7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6Mjk6MzguMzk1NDA0Njc5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUzNzc4MTA4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHZtZW1tYXAgUG9wdWxhdGlvbiBhbmQgRmluYWxpemF0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemVgIGZ1bmN0aW9uLCBjYWxsZWQgZnJvbSB3aXRoaW4gYF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGluIGBtbS9zcGFyc2Utdm1lbW1hcC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZmluYWxpemF0aW9uIHN0ZXAgaXMgbmVjZXNzYXJ5LiBTcGVjaWZpY2FsbHksIG9uIFJJU0MtViwgaXQgbG9va3MgbGlrZSBgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZWAgaXMgaW1wbGVtZW50ZWQgdG8gY2FsbCBgbWFya19uZXdfdmFsaWRfbWFwKClgIGluIGBhcmNoL3Jpc2N2L21tL2luaXQuY2AuIFRoZSBjb21tZW50IG1lbnRpb25zIGF2b2lkaW5nIGZhdWx0cyByZWxhdGVkIHRvIGNhY2hlZCwgbm9uLXByZXNlbnQgVExCIGVudHJpZXMuIE1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci5cblxuTGV0J3MgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY2FsbCBjb250ZXh0LiBJIGtub3cgYF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGlzIGludm9rZWQgZHVyaW5nIG1lbW9yeSBob3RwbHVnIG9yIGR1cmluZyBpbml0aWFsaXphdGlvbi4gT2theSwgaW5pdGlhbGl6YXRpb24gYW5kIG1lbW9yeSBob3RwbHVnIHByaW1hcmlseSwgc28sIHdoaWxlIG1lbW9yeSBob3RwbHVnIGlzIGEgXCJmZWF0dXJlLFwiIHRoaXMgYXBwZWFycyB0byBiZSBwcmltYXJpbHkgZHVyaW5nIGluaXQuIFRoaXMgaGFzIG1lIHdvbmRlcmluZyBpZiB0aGVyZSdzIGFueSBpbW1lZGlhdGUgZnV6emluZyBvcHBvcnR1bml0eSBoZXJlLiBNZW1vcnkgaG90cGx1ZyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgdXNlciB2aWEgc3lzZnMgb3IgYnkgYWRkaW5nIG1lbW9yeS4gQnV0IHRoZSBmaW5hbGl6YXRpb24gc3RlcCBpdHNlbGYg4oCTIGB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplYCDigJMgc2VlbXMgdG8gYmUganVzdCBhIFRMQiBmbHVzaCBvciBhIHNpbWlsYXIgb3BlcmF0aW9uIHZpYSBgbWFya19uZXdfdmFsaWRfbWFwKClgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0LlxuXG5TbywgdGhlIGtleSBoZXJlIGlzIGBtYXJrX25ld192YWxpZF9tYXBgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgYmVoYXZpb3Igb2YgdGhhdCBmdW5jdGlvbiwgYXMgdGhhdCdzIHdoZXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbmFsaXR5IHNlZW1zIHRvIHJlc2lkZS4gS25vd2luZyB0aGlzIHdpbGwgY2xhcmlmeSB0aGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgcGF0Y2ggYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmVhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDoyOTo0NC45MzMxODg5NzFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ3OTM3Mzg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYXJrX25ld192YWxpZF9tYXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jYWNoZWZsdXNoLmg9NDY9ZXh0ZXJuIGNoYXIgX2VuZFtdO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oOjQ3OnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX25ld192YWxpZF9tYXAodm9pZClcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2guaC00OC17XFxuLS1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2guaD01Nz1zdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfY2FjaGVfdm1hcCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oLTU5LVxcdGlmIChpc192bWFsbG9jX29yX21vZHVsZV9hZGRyKCh2b2lkICopc3RhcnQpKVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oOjYwOlxcdFxcdG1hcmtfbmV3X3ZhbGlkX21hcCgpO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGVmbHVzaC5oLTYxLX1cXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va2ZlbmNlLmg9MTc9c3RhdGljIGlubGluZSBib29sIGtmZW5jZV9wcm90ZWN0X3BhZ2UodW5zaWduZWQgbG9uZyBhZGRyLCBib29sIHByb3RlY3QpXFxuLS1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2tmZW5jZS5oLTI0LVxcdFxcdHNldF9wdGUocHRlLCBfX3B0ZShwdGVfdmFsKHB0ZXBfZ2V0KHB0ZSkpIHwgX1BBR0VfUFJFU0VOVCkpO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va2ZlbmNlLmg6MjU6XFx0XFx0bWFya19uZXdfdmFsaWRfbWFwKCk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rZmVuY2UuaC0yNi1cXHR9XFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xMzc2PXZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNzgtXFx0LyogQXZvaWQgZmF1bHRzIG9uIGNhY2hlZCBub24tcHJlc2VudCBUTEIgZW50cmllcy4gKi9cXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxMzc5OlxcdG1hcmtfbmV3X3ZhbGlkX21hcCgpO1xcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzODAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDoyOTo0Ny40MTI1NzMxODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQ0OTA3Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJJU0MtViBNZW1vcnkgSG90cGx1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGBtYXJrX25ld192YWxpZF9tYXBgIOKAkyBJIGtub3cgdGhhdCBmbHVzaGVzIHRoZSBUcmFuc2xhdGlvbiBMb29rYXNpZGUgQnVmZmVyIChUTEIpLCBvciBzb21ldGhpbmcgY2xvc2VseSByZWxhdGVkLCByaWdodD8gVGhlbiBJIHNlZSB0aGF0IGBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCBpcyBiZWluZyBjYWxsZWQgZHVyaW5nIG1lbW9yeSBob3RwbHVnLCBhbmQgaW1tZWRpYXRlbHkgSSdtIHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcy4gSG93ZXZlciwgdGhpcyBsb29rcyBsaWtlIGEgdmVyeSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgZml4LCBzcGVjaWZpY2FsbHkgZm9yIFJJU0MtVi5cblxuSXQgbG9va3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYWZ0ZXIgdGhlIGB2bWVtbWFwX3BvcHVsYXRlKClgIGNhbGwgd2l0aGluIGBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKClgLCBpdCBqdXN0IGNhbGxzIGBtYXJrX25ld192YWxpZF9tYXAoKWAuIFJpZ2h0LCBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCgpYCBpcyBjYWxsZWQgd2hlbiBhIG1lbW9yeSBzZWN0aW9uIGlzIHBvcHVsYXRlZCwgd2hpY2ggaXMgbW9zdGx5IGluaXRpYWxpemF0aW9uIG9yIGR1cmluZyBtZW1vcnkgaG90cGx1ZyBldmVudHMuIEZ1bmN0aW9uYWxseSwgaXQncyBhIG1pbm9yIGNoYW5nZSwgYSBzbWFsbCBmaXggcmVhbGx5LCBidXQgYSBjcml0aWNhbCBvbmUgZm9yIFJJU0MtViBtZW1vcnkgaG90cGx1ZyBhbmQgaW5pdGlhbGl6YXRpb24uXG5cbk15IHByaW1hcnkgY29uY2VybiBpczogaXMgdGhpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2U/IE1lbW9yeSBob3RwbHVnIGlzIHRyaWdnZXJlZCB2aWEgc3lzZnMsIHNvIHRoYXQgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yLiBJIHNob3VsZCBjaGVjayB0aGUgY2FsbGVycyBvZiBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgdG8gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIHRoZSBjb2RlIGZsb3cgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MjUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6Mjk6NTIuNDU3NDgzNzI4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjk1ODQyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21tLmg9NDg5Mj11bnNpZ25lZCBsb25nIHNlY3Rpb25fbWFwX3NpemUodm9pZCk7XFxuaW5jbHVkZS9saW51eC9tbS5oOjQ4OTM6c3RydWN0IHBhZ2UgKiBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxcbmluY2x1ZGUvbGludXgvbW0uaC00ODk0LVxcdFxcdHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsIGludCBuaWQsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYz01NDg9c3RhdGljIHZvaWQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUodm9pZClcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmMtNTUyLVxcbm1tL3NwYXJzZS12bWVtbWFwLmM6NTUzOnN0cnVjdCBwYWdlICogX19tZW1pbml0IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXFxubW0vc3BhcnNlLXZtZW1tYXAuYy01NTQtXFx0XFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgaW50IG5pZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXFxuLS1cXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTY4OD1zdGF0aWMgc3RydWN0IHBhZ2UgKiBfX21lbWluaXQgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXFxuLS1cXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTY5MS17XFxubW0vc3BhcnNlLXZtZW1tYXAuYzo2OTI6XFx0c3RydWN0IHBhZ2UgKnBhZ2UgPSBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHBmbiwgbnJfcGFnZXMsIG5pZCwgYWx0bWFwLFxcbm1tL3NwYXJzZS12bWVtbWFwLmMtNjkzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHBnbWFwKTtcXG4tLVxcbm1tL3NwYXJzZS5jPTIzMj11bnNpZ25lZCBsb25nIF9faW5pdCBzZWN0aW9uX21hcF9zaXplKHZvaWQpXFxuLS1cXG5tbS9zcGFyc2UuYy0yMzYtXFxubW0vc3BhcnNlLmM6MjM3OnN0cnVjdCBwYWdlIF9faW5pdCAqX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcXG5tbS9zcGFyc2UuYy0yMzgtXFx0XFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgaW50IG5pZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXFxuLS1cXG5tbS9zcGFyc2UuYz0yOTg9c3RhdGljIHZvaWQgX19pbml0IHNwYXJzZV9pbml0X25pZChpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHBudW1fYmVnaW4sXFxuLS1cXG5tbS9zcGFyc2UuYy0zMjAtXFx0XFx0aWYgKCFwcmVpbml0ZWRfdm1lbW1hcF9zZWN0aW9uKG1zKSkge1xcbm1tL3NwYXJzZS5jOjMyMTpcXHRcXHRcXHRtYXAgPSBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHBmbiwgUEFHRVNfUEVSX1NFQ1RJT04sXFxubW0vc3BhcnNlLmMtMzIyLVxcdFxcdFxcdFxcdFxcdG5pZCwgTlVMTCwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjI5OjU0LjYyNzA4Mjg1NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDExNjExNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSBjb2RlIHNuaXBwZXRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGEgc2Vhc29uZWQga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50IGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBTcGFyc2UgVm1lbW1hcCBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3BhcnNlIHZtZW1tYXAsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBlbnRyeSBwb2ludHMgSSdtIGNvbmNlcm5lZCB3aXRoIGFyZSBgcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBgIGluIGBtbS9zcGFyc2Utdm1lbW1hcC5jYCBhbmQgYWxzbyBgc3BhcnNlX2luaXRfbmlkYCBpbiBgbW0vc3BhcnNlLmNgLiBOb3csIGBwb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgc2VlbXMgdG8gYmUgdGhlIGNydWNpYWwgZnVuY3Rpb24gdGhhdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgc3BhcnNlX2FkZF9zZWN0aW9uYCwgSSBzZWUgbm93LiBUaGlzIHN1Z2dlc3RzIGEgbW9kdWxhciBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBCYXNpY2FsbHksIGBzcGFyc2VfYWRkX3NlY3Rpb25gIHRyaWdnZXJzIHRoZSBwb3B1bGF0aW9uIG9mIHRoZSBtZW1tYXAgc3RydWN0dXJlIGZvciBhIHBhcnRpY3VsYXIgc2VjdGlvbiwgYW5kIHdpdGhpbiBpdCwgYHBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCBoYW5kbGVzIHRoZSBhY3R1YWwgbml0dHktZ3JpdHR5IG9mIGNyZWF0aW5nIGFuZCBwb3B1bGF0aW5nIHRob3NlIG1lbW9yeSBtYXBzLiBHb3QgaXQuIFRoaXMgbWFrZXMgdGhlIGNvZGUgbW9yZSBtYW5hZ2VhYmxlLCBzZXBhcmF0aW5nIHRoZSBhbGxvY2F0aW9uIG1hbmFnZW1lbnQgZnJvbSB0aGUgcG9wdWxhdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgc3BhcnNlX2luaXRfbmlkYCBhbmQgYHBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCB0byBnZXQgYSBmdWxsIHZpZXcgb2YgdGhlIG1lbW9yeSBsYXlvdXQgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQzOCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjI5OjU4LjA2ODI0Njg5MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzMyNzA4MjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbW0uaD00ODkyPXVuc2lnbmVkIGxvbmcgc2VjdGlvbl9tYXBfc2l6ZSh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L21tLmg6NDg5MzpzdHJ1Y3QgcGFnZSAqIF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXFxuaW5jbHVkZS9saW51eC9tbS5oLTQ4OTQtXFx0XFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgaW50IG5pZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXFxuLS1cXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTU0OD1zdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSh2b2lkKVxcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYy01NTItXFxubW0vc3BhcnNlLXZtZW1tYXAuYzo1NTM6c3RydWN0IHBhZ2UgKiBfX21lbWluaXQgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTU1NC1cXHRcXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmM9NjYzPXN0YXRpYyBpbnQgX19tZW1pbml0IHNlY3Rpb25fbnJfdm1lbW1hcF9wYWdlcyh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmMtNjg3LVxcbm1tL3NwYXJzZS12bWVtbWFwLmM6Njg4OnN0YXRpYyBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBwb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbixcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTY4OS1cXHRcXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmMtNjkxLXtcXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjY5MjpcXHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAocGZuLCBucl9wYWdlcywgbmlkLCBhbHRtYXAsXFxubW0vc3BhcnNlLXZtZW1tYXAuYy02OTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcGdtYXApO1xcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYy02OTktXFxubW0vc3BhcnNlLXZtZW1tYXAuYzo3MDA6c3RhdGljIHZvaWQgZGVwb3B1bGF0ZV9zZWN0aW9uX21lbW1hcCh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTcwMS1cXHRcXHRzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCwgc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmM9NzgyPXN0YXRpYyB2b2lkIHNlY3Rpb25fZGVhY3RpdmF0ZSh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmMtODIwLVxcdGlmICghc2VjdGlvbl9pc19lYXJseSlcXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjgyMTpcXHRcXHRkZXBvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHBmbiwgbnJfcGFnZXMsIGFsdG1hcCwgcGdtYXApO1xcbm1tL3NwYXJzZS12bWVtbWFwLmMtODIyLVxcdGVsc2UgaWYgKG1lbW1hcClcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmM9ODI5PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBzZWN0aW9uX2FjdGl2YXRlKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgcGZuLFxcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYy04NjItXFxubW0vc3BhcnNlLXZtZW1tYXAuYzo4NjM6XFx0bWVtbWFwID0gcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAocGZuLCBucl9wYWdlcywgbmlkLCBhbHRtYXAsIHBnbWFwKTtcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTg2NC1cXHRpZiAoIW1lbW1hcCkge1xcbi0tXFxubW0vc3BhcnNlLmM9MjMyPXVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcXG4tLVxcbm1tL3NwYXJzZS5jLTIzNi1cXG5tbS9zcGFyc2UuYzoyMzc6c3RydWN0IHBhZ2UgX19pbml0ICpfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxcbm1tL3NwYXJzZS5jLTIzOC1cXHRcXHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBpbnQgbmlkLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG4tLVxcbm1tL3NwYXJzZS5jPTI5OD1zdGF0aWMgdm9pZCBfX2luaXQgc3BhcnNlX2luaXRfbmlkKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgcG51bV9iZWdpbixcXG4tLVxcbm1tL3NwYXJzZS5jLTMyMC1cXHRcXHRpZiAoIXByZWluaXRlZF92bWVtbWFwX3NlY3Rpb24obXMpKSB7XFxubW0vc3BhcnNlLmM6MzIxOlxcdFxcdFxcdG1hcCA9IF9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAocGZuLCBQQUdFU19QRVJfU0VDVElPTixcXG5tbS9zcGFyc2UuYy0zMjItXFx0XFx0XFx0XFx0XFx0bmlkLCBOVUxMLCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTA6MzA6MDAuNDAwOTYyNDYzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE2OTI2NTczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBNZW1vcnkgSG90cGx1ZyBUTEIgRmx1c2ggb24gUklTQy1WKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29kZSBpbiBxdWVzdGlvbiBpbnZvbHZlcyBgc2VjdGlvbl9hY3RpdmF0ZWAsIGNhbGxlZCBmcm9tIGBzcGFyc2VfYWRkX3NlY3Rpb25gLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBfX2FkZF9wYWdlc2AuIFRoaXMgd2hvbGUgcGF0aCByZWxhdGVzIHRvIG1lbW9yeSBob3RwbHVnLCBhbmQsIGNydWNpYWxseSwgdXNlcnNwYWNlICpjYW4qIHRyaWdnZXIgdGhpcyB0aHJvdWdoIHN5c2ZzLCBzbyBpdCdzIGEgcmVhbGlzdGljIGV4ZWN1dGlvbiBwYXRoLiBUaGlzIHNwZWNpZmljIGNoYW5nZSBpcyBhIFRMQiBmbHVzaCBvbiBSSVNDLVYgYWZ0ZXIgbWVtb3J5IGhvdHBsdWcsIGEgdGFyZ2V0ZWQgYXJjaGl0ZWN0dXJhbCBhZGp1c3RtZW50LlxuXG5UaGUgY29yZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGZ1enppbmcgaXMganVzdGlmaWVkLiBHaXZlbiB0aGF0IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0aG91Z2ggcXVpdGUgc21hbGwgYW5kIHNwZWNpYWxpemVkLCB0aGF0IGltcGFjdHMgYSBjb3JlIHN5c3RlbSBmdW5jdGlvbiB0cmlnZ2VyZWQgYnkgYSB1c2VyIGFjdGlvbiwgSSBuZWVkIHRvIGV2YWx1YXRlIHRoaXMgcHJvcGVybHkuIFRoZSBwcmltYXJ5IGNvbmNlcm4gaXMgaWYgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBhbmQgdGhlIHRleHQgc2F5cyBpdCBpcyBpbiBRRU1VLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5UaGUgcHJvdmlkZWQgZ3VpZGFuY2Ugc3RhdGVzIFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIiBUaGlzIHBhdGNoICpkb2VzKiB0b3VjaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSBmb3IgUklTQy1WIGFuZCBhbHNvIGludGVyYWN0cyB3aXRoIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBjb3JlLCBzcGVjaWZpY2FsbHkgYHNwYXJzZS12bWVtbWFwLmNgLlxuXG5Db25zaWRlcmluZyB0aGlzLCBJIG5lZWQgdG8gZm9jdXMgb24gcmVhY2hhYmlsaXR5LiBTaW5jZSBRRU1VIGNhbiBiZSB1c2VkIGZvciBtZW1vcnkgaG90cGx1ZywgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLiBUaGVyZWZvcmUsIEknbSBjb25maWRlbnQgdGhhdCBmdXp6aW5nIHRoaXMgaXMgdGhlIHJpZ2h0IGRlY2lzaW9uLiBUaGlzIG1lYW5zIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgdHJ1ZWAuXG5cblJlZ2FyZGluZyBmdXp6aW5nIHRhcmdldHMsIHdoaWxlIHRoZSBwYXRjaCBpdHNlbGYgaXMganVzdCBhIFRMQiBmbHVzaCwgdGhlIHBhdGggKmxlYWRpbmcqIHRvIGl0IGlzIGludGVyZXN0aW5nLiBTbyB0aGUgY3JpdGljYWwgc2VjdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwYCBhbmQgYHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemVgLiBXaGlsZSB0aGUgbGF0dGVyIGlzIGp1c3QgYSB3cmFwcGVyIGZvciBgbWFya19uZXdfdmFsaWRfbWFwYCwgdGhlIGZvcm1lciBpcyBhIG1lbW9yeSBob3RwbHVnIGZ1bmN0aW9uIGFuZCB0aGUgZW50cnkgcG9pbnQgdGhhdCBtYWtlcyBzZW5zZS5cblxuTGFzdGx5LCBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gZW5hYmxlcyBgU1BBUlNFTUVNX1ZNRU1NQVBgIGFuZCBgTUVNT1JZX0hPVFBMVUdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzI4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEwOjMwOjA3LjU3MDIzMTcwNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2NjI0MzMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTUEFSU0VNRU1fVk1FTU1BUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL21tL21lbW9yeS1tb2RlbC5yc3Q9MTAyPXZtZW1tYXBcXFwiLiBUaGUgc2VsZWN0aW9uIGlzIG1hZGUgYXQgYnVpbGQgdGltZSBhbmQgaXQgaXMgZGV0ZXJtaW5lZCBieVxcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdDoxMDM6dGhlIHZhbHVlIG9mIGBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBgLlxcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdC0xMDQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL21lbW9yeS1tb2RlbC5yc3Q9MTM0PVpPTkVfREVWSUNFXFxuRG9jdW1lbnRhdGlvbi9tbS9tZW1vcnktbW9kZWwucnN0LTEzNS09PT09PT09PT09PVxcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdDoxMzY6VGhlIGBaT05FX0RFVklDRWAgZmFjaWxpdHkgYnVpbGRzIHVwb24gYFNQQVJTRU1FTV9WTUVNTUFQYCB0byBvZmZlclxcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdC0xMzctYHN0cnVjdCBwYWdlYCBgbWVtX21hcGAgc2VydmljZXMgZm9yIGRldmljZSBkcml2ZXIgaWRlbnRpZmllZCBwaHlzaWNhbFxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdD02Mz1TUEFSU0VNRU3mqKHlnovlsIbniannkIblhoXlrZjmmL7npLrkuLrkuIDkuKrpg6jliIbnmoTpm4blkIjjgILkuIDkuKrljLrmrrXnlKhtZW1fc2VjdGlvbue7k+aehFxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdC04Ni3pgJrov4dTUEFSU0VNRU3vvIzmnInkuKTnp43lj6/og73nmoTmlrnlvI/lsIZQRk7ovazmjaLkuLrnm7jlupTnmoQgYHN0cnVjdCBwYWdlYCAtLVxcXCJjbGFzc2ljIHNwYXJzZVxcXCLlkoxcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9tZW1vcnktbW9kZWwucnN0Ojg3OiBcXFwic3BhcnNlIHZtZW1tYXBcXFwi44CC6YCJ5oup5piv5Zyo5p6E5bu65pe26L+b6KGM55qE77yM5a6D55SxIGBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBgIOeahFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL21lbW9yeS1tb2RlbC5yc3QtODgtIOWAvOWGs+WumuOAglxcbi0tXFxuYXJjaC9hcm02NC9LY29uZmlnPTE2MDY9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xNjA3LVxcdGRlZl9ib29sIHlcXG5hcmNoL2FybTY0L0tjb25maWc6MTYwODpcXHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFXFxuYXJjaC9hcm02NC9LY29uZmlnLTE2MDktXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jPTIxMDM9c3RhdGljIGJvb2wgY2FuX3VubWFwX3dpdGhvdXRfc3BsaXQodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTIxMTktXFx0LyogUEZOIHJhbmdlJ3Mgdm1lbW1hcCBlZGdlcyBhcmUgbGVhZiBlbnRyeSBhbGlnbmVkICovXFxuYXJjaC9hcm02NC9tbS9tbXUuYzoyMTIwOlxcdEJVSUxEX0JVR19PTighSVNfRU5BQkxFRChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApKTtcXG5hcmNoL2FybTY0L21tL21tdS5jLTIxMjEtXFx0c3RhcnQgPSAodW5zaWduZWQgbG9uZylwZm5fdG9fcGFnZShwZm4pO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZz03NzU9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzc2LVxcdGRlZl9ib29sIDY0QklUXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzo3Nzc6XFx0c2VsZWN0IFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzc4LVxcdGhlbHBcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTEzLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oOjE0OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaC0xNS0jZGVmaW5lIFZNRU1NQVBfU0laRVxcdChzaXplb2Yoc3RydWN0IHBhZ2UpICogKDFVTCBcXHUwMDNjXFx1MDAzYyAoY3B1X3BhYml0cyArIDEgLSBQQUdFX1NISUZUKSkpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9MTIyPXZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEzMS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTMyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTMzLXZvaWQgX19tZW1pbml0IHZtZW1tYXBfc2V0X3BtZChwbWRfdCAqcG1kLCB2b2lkICpwLCBpbnQgbm9kZSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnPTc5ND1jb25maWcgQVJDSF9TUEFSU0VNRU1fRU5BQkxFXFxuLS1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy03OTYtXFx0ZGVwZW5kcyBvbiBQUEM2NFxcbmFyY2gvcG93ZXJwYy9LY29uZmlnOjc5NzpcXHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFXFxuYXJjaC9wb3dlcnBjL0tjb25maWctNzk4LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZz0zNT1DT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWctMzYtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZzozNzojIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCBpcyBub3Qgc2V0XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZy0zOC0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC0xNy0gKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg6MTg6I2lmIGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fRVhUUkVNRSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTktI2RlZmluZSBIX01BWF9QSFlTTUVNX0JJVFNcXHQ1MVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oLTEwOS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MTEwOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX0VYVFJFTUUpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oLTExMS0jZGVmaW5lIFJfTUFYX1BIWVNNRU1fQklUU1xcdDUxXFxuLS1cXG5hcmNoL3Bvd2VycGMva2V4ZWMvdm1jb3JlX2luZm8uYz02PXZvaWQgYXJjaF9jcmFzaF9zYXZlX3ZtY29yZWluZm8odm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXhlYy92bWNvcmVfaW5mby5jLTE1LSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9rZXhlYy92bWNvcmVfaW5mby5jOjE2OiNpZiBkZWZpbmVkKENPTkZJR19QUEM2NCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXFxuYXJjaC9wb3dlcnBjL2tleGVjL3ZtY29yZV9pbmZvLmMtMTctXFx0Vk1DT1JFSU5GT19TWU1CT0wodm1lbW1hcF9saXN0KTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0yNi1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM6Mjc6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0yOC0vKlxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jPTEzMT12b2lkIGhhc2hfX3ZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xNDAtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jOjE0MTojZW5kaWYgLyogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQICovXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jLTE0Mi1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9MTA3OD1zdGF0aWMgdm9pZCBfX2luaXQgaHRhYl9pbml0X3BhZ2Vfc2l6ZXModm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTEyOC1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjExMjk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTEzMC1cXHQvKlxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMTM4LVxcdFxcdG1tdV92bWVtbWFwX3BzaXplID0gbW11X3ZpcnR1YWxfcHNpemU7XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoxMTM5OiNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTExNDAtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTExNDItXFx0ICAgICAgIFxcXCJ2aXJ0dWFsID0gJWQsIGlvID0gJWRcXFwiXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoxMTQzOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTExNDQtXFx0ICAgICAgIFxcXCIsIHZtZW1tYXAgPSAlZFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTE0OS1cXHQgICAgICAgbW11X3BzaXplX2RlZnNbbW11X2lvX3BzaXplXS5zaGlmdFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTE1MDojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMTUxLVxcdCAgICAgICAsbW11X3BzaXplX2RlZnNbbW11X3ZtZW1tYXBfcHNpemVdLnNoaWZ0XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jPTI3PUVYUE9SVF9TWU1CT0xfR1BMKG1tdV9wc2l6ZV9kZWZzKTtcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTI4LVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6Mjk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMzAtaW50IG1tdV92bWVtbWFwX3BzaXplID0gTU1VX1BBR0VfNEs7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTcyMz1zdGF0aWMgdm9pZCBmcmVlX3B1ZF90YWJsZShwdWRfdCAqcHVkX3N0YXJ0LCBwNGRfdCAqcDRkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy03MzctXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo3Mzg6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtNzM5LXN0YXRpYyBib29sIF9fbWVtaW5pdCB2bWVtbWFwX3BtZF9pc191bnVzZWQodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9Nzg3PXN0YXRpYyB2b2lkIF9fbWVtaW5pdCByZW1vdmVfcHRlX3RhYmxlKHB0ZV90ICpwdGVfc3RhcnQsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtODA4LVxcdFxcdH1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjgwOTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy04MTAtXFx0XFx0ZWxzZSBpZiAoIWRpcmVjdCBcXHUwMDI2XFx1MDAyNiB2bWVtbWFwX3BhZ2VfaXNfdW51c2VkKGFkZHIsIG5leHQpKSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTgyMD1zdGF0aWMgdm9pZCBfX21lbWluaXQgcmVtb3ZlX3BtZF90YWJsZShwbWRfdCAqcG1kX3N0YXJ0LCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTg0Mi1cXHRcXHRcXHR9XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo4NDM6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtODQ0LVxcdFxcdFxcdGVsc2UgaWYgKCFkaXJlY3QgXFx1MDAyNlxcdTAwMjYgdm1lbW1hcF9wbWRfaXNfdW51c2VkKGFkZHIsIG5leHQpKSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTk0Nj1pbnQgX19tZW1pbml0IHJhZGl4X19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy05NTItXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo5NTM6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtOTU0LXN0YXRpYyBpbnQgX19tYXBfa2VybmVsX3BhZ2VfbmlkKHVuc2lnbmVkIGxvbmcgZWEsIHVuc2lnbmVkIGxvbmcgcGEsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmM9NDY3PXZvaWQgc2xiX2luaXRpYWxpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00NzEtXFx0c3RhdGljIGludCBzbGJfZW5jb2RpbmdfaW5pdGVkO1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYzo0NzI6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00NzMtXFx0dW5zaWduZWQgbG9uZyB2bWVtbWFwX2xscDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00ODAtXFx0Z2V0X3BhY2EoKS1cXHUwMDNldm1hbGxvY19zbGxwID0gU0xCX1ZTSURfS0VSTkVMIHwgdm1hbGxvY19sbHA7XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsYi5jOjQ4MTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsYi5jLTQ4Mi1cXHR2bWVtbWFwX2xscCA9IG1tdV9wc2l6ZV9kZWZzW21tdV92bWVtbWFwX3BzaXplXS5zbGxwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsYi5jLTQ4Ny1cXHRcXHRwcl9kZXZlbChcXFwiU0xCOiBpbyAgICAgIExMUCA9ICUwNGx4XFxcXG5cXFwiLCBpb19sbHApO1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYzo0ODg6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy00ODktXFx0XFx0cHJfZGV2ZWwoXFxcIlNMQjogdm1lbW1hcCBMTFAgPSAlMDRseFxcXFxuXFxcIiwgdm1lbW1hcF9sbHApO1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsYi5jPTY2Mj1zdGF0aWMgbG9uZyBzbGJfYWxsb2NhdGVfa2VybmVsKHVuc2lnbmVkIGxvbmcgZWEsIHVuc2lnbmVkIGxvbmcgaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xiLmMtNjc1LVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYzo2NzY6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGIuYy02NzctXFx0fSBlbHNlIGlmIChpZCA9PSBWTUVNTUFQX1JFR0lPTl9JRCkge1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy02Ni1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jOjY3OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTY4LS8qXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jPTM3OD12b2lkIF9fcmVmIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtMzg5LVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM6MzkwOiNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgKi9cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTM5MS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy0xNi1cXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmM6MTc6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy0xOC0vKlxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jPTQ4PXZvaWQgdm1lbW1hcF9yZW1vdmVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jLTUyLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYzo1MzojZW5kaWYgLyogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQICovXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jLTU0LVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9oYXNocGFnZXRhYmxlLmM9NDkwPXN0YXRpYyB2b2lkIHdhbGtfdm1lbW1hcChzdHJ1Y3QgcGdfc3RhdGUgKnN0KVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9oYXNocGFnZXRhYmxlLmMtNDkzLVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvaGFzaHBhZ2V0YWJsZS5jOjQ5NDpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKSlcXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL2hhc2hwYWdldGFibGUuYy00OTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnPTEzPWNvbmZpZyBSSVNDVlxcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnLTIyLVxcdHNlbGVjdCBBUkNIX0VOQUJMRV9IVUdFUEFHRV9NSUdSQVRJT04gaWYgSFVHRVRMQl9QQUdFIFxcdTAwMjZcXHUwMDI2IE1JR1JBVElPTlxcbmFyY2gvcmlzY3YvS2NvbmZpZzoyMzpcXHRzZWxlY3QgQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUcgaWYgU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Jpc2N2L0tjb25maWctMjQtXFx0c2VsZWN0IEFSQ0hfRU5BQkxFX1NQTElUX1BNRF9QVExPQ0sgaWYgUEdUQUJMRV9MRVZFTFMgXFx1MDAzZSAyXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWc9MzA4PWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0zMTEtXFx0c2VsZWN0IFNQQVJTRU1FTV9TVEFUSUMgaWYgMzJCSVQgXFx1MDAyNlxcdTAwMjYgU1BBUlNFTUVNXFxuYXJjaC9yaXNjdi9LY29uZmlnOjMxMjpcXHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlmIDY0QklUXFxuYXJjaC9yaXNjdi9LY29uZmlnLTMxMy1cXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTkxLSAqIERlZmluZSB2bWVtbWFwIGZvciBwZm5fdG9fcGFnZSBcXHUwMDI2IHBhZ2VfdG9fcGZuIGNhbGxzLiBOZWVkZWQgaWYga2VybmVsXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6OTI6ICogaXMgY29uZmlndXJlZCB3aXRoIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCBlbmFibGVkLlxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTkzLSAqL1xcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtOTgtI2RlZmluZSBESVJFQ1RfTUFQX1BIWVNNRU1fRU5EIChwaHlzX3JhbV9iYXNlICsgS0VSTl9WSVJUX1NJWkUgLSAxKVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjk5OiNlbGlmIGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEwMC0jZGVmaW5lIERJUkVDVF9NQVBfUEhZU01FTV9FTkQgXFxcXFxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTIwNj1zdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9zd3BfY2xlYXJfZXhjbHVzaXZlKHB0ZV90IHB0ZSlcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEyNTUtXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTI1NjovKiBOZWVkZWQgb24gU1BBUlNFTUVNX1ZNRU1NQVAgKi9cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMjU3LSNkZWZpbmUgdm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplXFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYz02MD1FWFBPUlRfU1lNQk9MKHBoeXNfcmFtX2Jhc2UpO1xcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTYxLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjYyOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy02My0jZGVmaW5lIFZNRU1NQVBfQUREUl9BTElHTlxcdG1heCgxVUxMIFxcdTAwM2NcXHUwMDNjIFNFQ1RJT05fU0laRV9CSVRTLCBcXFxcXFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0yMDc9c3RhdGljIHZvaWQgX19pbml0IHNldHVwX2Jvb3RtZW0odm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTIzMy1cXHRwaHlzX3JhbV9iYXNlID0gbWVtYmxvY2tfc3RhcnRfb2ZfRFJBTSgpIFxcdTAwMjYgUE1EX01BU0s7XFxuYXJjaC9yaXNjdi9tbS9pbml0LmM6MjM0OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0yMzUtXFx0dm1lbW1hcF9zdGFydF9wZm4gPSByb3VuZF9kb3duKHBoeXNfcmFtX2Jhc2UsIFZNRU1NQVBfQUREUl9BTElHTikgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVDtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTEzNDk9dm9pZCBfX2luaXQgbWlzY19tZW1faW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTM1Mi1cXHRhcmNoX251bWFfaW5pdCgpO1xcbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjEzNTM6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNTQtXFx0LyogVGhlIGVudGlyZSBWTUVNTUFQIHJlZ2lvbiBoYXMgYmVlbiBwb3B1bGF0ZWQuIEZsdXNoIFRMQiBmb3IgdGhpcyByZWdpb24gKi9cXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTEzNjAtXFxuYXJjaC9yaXNjdi9tbS9pbml0LmM6MTM2MTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTM2Mi1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTM2Ny1cXHQvKlxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjEzNjg6XFx0ICogTm90ZSB0aGF0IFNQQVJTRU1FTV9WTUVNTUFQIGlzIG9ubHkgc2VsZWN0ZWQgZm9yIHJ2NjQgYW5kIHRoYXQgd2VcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xMzY5LVxcdCAqIGNhbid0IHVzZSBodWdlcGFnZSBtYXBwaW5ncyBmb3IgMi1sZXZlbCBwYWdlIHRhYmxlIGJlY2F1c2UgaW4gY2FzZSBvZlxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYz02MT1lbnVtIGFkZHJlc3NfbWFya2Vyc19pZHgge1xcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy02NS1cXHRQQ0lfSU9fRU5EX05SLFxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6NjY6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtNjctXFx0Vk1FTU1BUF9TVEFSVF9OUixcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9ODQ9c3RhdGljIHN0cnVjdCBhZGRyX21hcmtlciBhZGRyZXNzX21hcmtlcnNbXSA9IHtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtODgtXFx0ezAsIFxcXCJQQ0kgSS9PIGVuZFxcXCJ9LFxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6ODk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtOTAtXFx0ezAsIFxcXCJ2bWVtbWFwIHN0YXJ0XFxcIn0sXFxuLS1cXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jPTQyMz1zdGF0aWMgaW50IF9faW5pdCBwdGR1bXBfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy00MzAtXFx0YWRkcmVzc19tYXJrZXJzW1BDSV9JT19FTkRfTlJdLnN0YXJ0X2FkZHJlc3MgPSBQQ0lfSU9fRU5EO1xcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6NDMxOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTQzMi1cXHRhZGRyZXNzX21hcmtlcnNbVk1FTU1BUF9TVEFSVF9OUl0uc3RhcnRfYWRkcmVzcyA9IFZNRU1NQVBfU1RBUlQ7XFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZz03MTA9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxcbmFyY2gvczM5MC9LY29uZmlnLTcxMS1cXHRkZWZfYm9vbCB5XFxuYXJjaC9zMzkwL0tjb25maWc6NzEyOlxcdHNlbGVjdCBTUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEVcXG5hcmNoL3MzOTAvS2NvbmZpZy03MTMtXFxuLS1cXG5hcmNoL3NwYXJjL0tjb25maWc9MjcyPWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcXG5hcmNoL3NwYXJjL0tjb25maWctMjczLVxcdGRlZl9ib29sIHkgaWYgU1BBUkM2NFxcbmFyY2gvc3BhcmMvS2NvbmZpZzoyNzQ6XFx0c2VsZWN0IFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxcbmFyY2gvc3BhcmMvS2NvbmZpZy0yNzUtXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9rdGxiLlM9MTcxPWt2bWFwX2R0bGJfbG9hZDpcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0xOTUtXFxuYXJjaC9zcGFyYy9rZXJuZWwva3RsYi5TOjE5NjojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9zcGFyYy9rZXJuZWwva3RsYi5TLTE5Ny1rdm1hcF92bWVtbWFwOlxcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwva3RsYi5TPTIwMj1rdm1hcF9kdGxiX25vbmxpbmVhcjpcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL2t0bGIuUy0yMDgtXFxuYXJjaC9zcGFyYy9rZXJuZWwva3RsYi5TOjIwOTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC9zcGFyYy9rZXJuZWwva3RsYi5TLTIxMC1cXHQvKiBEbyBub3QgdXNlIHRoZSBUU0IgZm9yIHZtZW1tYXAuICAqL1xcbi0tXFxuYXJjaC9zcGFyYy9tbS9pbml0XzY0LmM9MjU0Mj1FWFBPUlRfU1lNQk9MKF9QQUdFX0NBQ0hFKTtcXG5hcmNoL3NwYXJjL21tL2luaXRfNjQuYy0yNTQzLVxcbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jOjI1NDQ6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jLTI1NDUtdm9pZCBfX21lbWluaXQgdm1lbW1hcF9zZXRfcG1kKHBtZF90ICpwbWQsIHZvaWQgKnAsIGludCBub2RlLFxcbi0tXFxuYXJjaC9zcGFyYy9tbS9pbml0XzY0LmM9MjU2Mj1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyB2c3RhcnQsIHVuc2lnbmVkIGxvbmcgdmVuZCxcXG4tLVxcbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jLTI1NjYtfVxcbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jOjI1Njc6I2VuZGlmIC8qIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCAqL1xcbmFyY2gvc3BhcmMvbW0vaW5pdF82NC5jLTI1NjgtXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE1NTc9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xNTU5LVxcdHNlbGVjdCBTUEFSU0VNRU1fU1RBVElDIGlmIFg4Nl8zMlxcbmFyY2gveDg2L0tjb25maWc6MTU2MDpcXHRzZWxlY3QgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlmIFg4Nl82NFxcbmFyY2gveDg2L0tjb25maWctMTU2MS1cXG4tLVxcbmFyY2gveDg2L2VudHJ5L3Zkc28vdmRzbzMyL2Zha2VfMzJiaXRfYnVpbGQuaC0xMi0jdW5kZWYgQ09ORklHX0lMTEVHQUxfUE9JTlRFUl9WQUxVRVxcbmFyY2gveDg2L2VudHJ5L3Zkc28vdmRzbzMyL2Zha2VfMzJiaXRfYnVpbGQuaDoxMzojdW5kZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuYXJjaC94ODYvZW50cnkvdmRzby92ZHNvMzIvZmFrZV8zMmJpdF9idWlsZC5oLTE0LSN1bmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcXG4tLVxcbmZzL0tjb25maWc9Mjc3PWNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxcbi0tXFxuZnMvS2NvbmZpZy0yNzktXFx0ZGVwZW5kcyBvbiBBUkNIX1dBTlRfT1BUSU1JWkVfSFVHRVRMQl9WTUVNTUFQXFxuZnMvS2NvbmZpZzoyODA6XFx0ZGVwZW5kcyBvbiBTUEFSU0VNRU1fVk1FTU1BUFxcbmZzL0tjb25maWc6MjgxOlxcdHNlbGVjdCBTUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUIGlmIEFSQ0hfV0FOVF9IVUdFVExCX1ZNRU1NQVBfUFJFSU5JVFxcbmZzL0tjb25maWctMjgyLVxcbi0tXFxuZnMvcHJvYy9rY29yZS5jPTE0Mj1zdGF0aWMgaW50IGtjb3JlX3JhbV9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuLS1cXG5mcy9wcm9jL2tjb3JlLmMtMTU3LVxcbmZzL3Byb2Mva2NvcmUuYzoxNTg6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmZzL3Byb2Mva2NvcmUuYy0xNTktLyogY2FsY3VsYXRlIHZtZW1tYXAncyBhZGRyZXNzIGZyb20gZ2l2ZW4gc3lzdGVtIHJhbSBwZm4gYW5kIHJlZ2lzdGVyIGl0ICovXFxuLS1cXG5pbmNsdWRlL2FzbS1nZW5lcmljL21lbW9yeV9tb2RlbC5oPTI2PXN0YXRpYyBpbmxpbmUgaW50IHBmbl92YWxpZCh1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvbWVtb3J5X21vZGVsLmgtNDItXFxuaW5jbHVkZS9hc20tZ2VuZXJpYy9tZW1vcnlfbW9kZWwuaDo0MzojZWxpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcXG5pbmNsdWRlL2FzbS1nZW5lcmljL21lbW9yeV9tb2RlbC5oLTQ0LVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oPTIxMT1leHRlcm4gdW5zaWduZWQgbG9uZyBzeXNjdGxfYWRtaW5fcmVzZXJ2ZV9rYnl0ZXM7XFxuaW5jbHVkZS9saW51eC9tbS5oLTIxMi1cXG5pbmNsdWRlL2xpbnV4L21tLmg6MjEzOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFxcdTAwMjZcXHUwMDI2ICFkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcXG5pbmNsdWRlL2xpbnV4L21tLmgtMjE0LWJvb2wgcGFnZV9yYW5nZV9jb250aWd1b3VzKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaD0yMjY1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19ub21tdV9zaGFyZWRfdm1hX2ZsYWdzKGNvbnN0IHZtYV9mbGFnc190ICpmbGFncylcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaC0yMjcwLVxcbmluY2x1ZGUvbGludXgvbW0uaDoyMjcxOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFxcdTAwMjZcXHUwMDI2ICFkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcXG5pbmNsdWRlL2xpbnV4L21tLmgtMjI3Mi0jZGVmaW5lIFNFQ1RJT05fSU5fUEFHRV9GTEFHU1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oPTQ5MTg9dm9pZCB2bWVtbWFwX2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tLmgtNDkyMS1cXG5pbmNsdWRlL2xpbnV4L21tLmg6NDkyMjojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuaW5jbHVkZS9saW51eC9tbS5oLTQ5MjMtc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHZtZW1fYWx0bWFwX29mZnNldChjb25zdCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcClcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtNzAtI2RlZmluZSBNQVhfRk9MSU9fT1JERVJcXHRcXHRNQVhfUEFHRV9PUkRFUlxcbmluY2x1ZGUvbGludXgvbW16b25lLmg6NzE6I2VsaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNKSBcXHUwMDI2XFx1MDAyNiAhZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC03Mi0vKlxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0xOTg0PXN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSB7XFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xOTg1LVxcdHN0cnVjdCByY3VfaGVhZCByY3U7XFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoxOTg2OiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTE5ODctXFx0REVDTEFSRV9CSVRNQVAoc3Vic2VjdGlvbl9tYXAsIFNVQlNFQ1RJT05TX1BFUl9TRUNUSU9OKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg9MjA3Mz1lbnVtIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjA4MC0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIwODE6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0yMDgyLVxcdFNFQ1RJT05fSVNfVk1FTU1BUF9QUkVJTklUX0JJVCxcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjA5My0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIwOTQ6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0yMDk1LSNkZWZpbmUgU0VDVElPTl9JU19WTUVNTUFQX1BSRUlOSVRcXHRCSVQoU0VDVElPTl9JU19WTUVNTUFQX1BSRUlOSVRfQklUKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD0yMTQ1PXN0YXRpYyBpbmxpbmUgaW50IG9ubGluZV9kZXZpY2Vfc2VjdGlvbihjb25zdCBzdHJ1Y3QgbWVtX3NlY3Rpb24gKnNlY3Rpb24pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIxNTAtXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoyMTUxOiNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBfUFJFSU5JVFxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjE1Mi1zdGF0aWMgaW5saW5lIGludCBwcmVpbml0ZWRfdm1lbW1hcF9zZWN0aW9uKGNvbnN0IHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlvbilcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg9MjE5Mj1zdGF0aWMgaW5saW5lIGludCBzdWJzZWN0aW9uX21hcF9pbmRleCh1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjE5Ni1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIxOTc6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjE5OC1zdGF0aWMgaW5saW5lIGludCBwZm5fc2VjdGlvbl92YWxpZChzdHJ1Y3QgbWVtX3NlY3Rpb24gKm1zLCB1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg9MjMxMD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbmV4dF92YWxpZF9wZm4odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgZW5kX3BmbilcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMjMyMi1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjIzMjM6XFx0aWYgKHBmbiBcXHUwMDI2IH4oSVNfRU5BQkxFRChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApID9cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTIzMjQtXFx0XFx0ICAgUEFHRV9TVUJTRUNUSU9OX01BU0sgOiBQQUdFX1NFQ1RJT05fTUFTSykpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNTEtICovXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLWxheW91dC5oOjUyOiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFxcdTAwMjZcXHUwMDI2ICFkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNTMtI2RlZmluZSBTRUNUSU9OU19XSURUSFxcdFxcdFNFQ1RJT05TX1NISUZUXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MtbGF5b3V0LmgtNjAtI2RlZmluZSBOT0RFU19XSURUSFxcdFxcdE5PREVTX1NISUZUXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLWxheW91dC5oOjYxOiNlbGlmIGRlZmluZWQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaC02Mi0jZXJyb3IgXFxcIlZtZW1tYXA6IE5vIHNwYWNlIGZvciBub2RlcyBmaWVsZCBpbiBwYWdlIGZsYWdzXFxcIlxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtOTAtICogU1BBUlNFTUVNIHNlY3Rpb24gKGZvciB2YXJpYW50cyBvZiBTUEFSU0VNRU0gdGhhdCByZXF1aXJlIHNlY3Rpb24gaWRzIGxpa2VcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDo5MTogKiBTUEFSU0VNRU1fRVhUUkVNRSB3aXRoICFTUEFSU0VNRU1fVk1FTU1BUCkuXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtOTItICovXFxuLS1cXG5rZXJuZWwvdm1jb3JlX2luZm8uYz0xNDA9c3RhdGljIGludCBfX2luaXQgY3Jhc2hfc2F2ZV92bWNvcmVpbmZvX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC92bWNvcmVfaW5mby5jLTE3NS0jZW5kaWZcXG5rZXJuZWwvdm1jb3JlX2luZm8uYzoxNzY6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbmtlcm5lbC92bWNvcmVfaW5mby5jLTE3Ny1cXHRWTUNPUkVJTkZPX1NZTUJPTF9BUlJBWSh2bWVtbWFwKTtcXG4tLVxcbm1tL0tjb25maWc9NDUxPWNvbmZpZyBTUEFSU0VNRU1fRVhUUkVNRVxcbi0tXFxubW0vS2NvbmZpZy00NTQtXFxubW0vS2NvbmZpZzo0NTU6Y29uZmlnIFNQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRVxcbm1tL0tjb25maWctNDU2LVxcdGJvb2xcXG5tbS9LY29uZmlnLTQ1Ny1cXG5tbS9LY29uZmlnOjQ1ODpjb25maWcgU1BBUlNFTUVNX1ZNRU1NQVBcXG5tbS9LY29uZmlnLTQ1OS1cXHRkZWZfYm9vbCB5XFxubW0vS2NvbmZpZzo0NjA6XFx0ZGVwZW5kcyBvbiBTUEFSU0VNRU0gXFx1MDAyNlxcdTAwMjYgU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFXFxubW0vS2NvbmZpZy00NjEtXFx0aGVscFxcbm1tL0tjb25maWc6NDYyOlxcdCAgU1BBUlNFTUVNX1ZNRU1NQVAgdXNlcyBhIHZpcnR1YWxseSBtYXBwZWQgbWVtbWFwIHRvIG9wdGltaXNlXFxubW0vS2NvbmZpZy00NjMtXFx0ICBwZm5fdG9fcGFnZSBhbmQgcGFnZV90b19wZm4gb3BlcmF0aW9ucy4gIFRoaXMgaXMgdGhlIG1vc3RcXG4tLVxcbm1tL0tjb25maWctNDY1LVxcbm1tL0tjb25maWc6NDY2OmNvbmZpZyBTUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxubW0vS2NvbmZpZy00NjctXFx0Ym9vbFxcbi0tXFxubW0vS2NvbmZpZz01MjM9bWVudWNvbmZpZyBNRU1PUllfSE9UUExVR1xcbi0tXFxubW0vS2NvbmZpZy01MjUtXFx0c2VsZWN0IE1FTU9SWV9JU09MQVRJT05cXG5tbS9LY29uZmlnOjUyNjpcXHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXFxubW0vS2NvbmZpZy01MjctXFx0ZGVwZW5kcyBvbiBBUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVR1xcbi0tXFxubW0vS2NvbmZpZz01OTc9Y29uZmlnIE1IUF9NRU1NQVBfT05fTUVNT1JZXFxubW0vS2NvbmZpZy01OTgtXFx0ZGVmX2Jvb2wgeVxcbm1tL0tjb25maWc6NTk5OlxcdGRlcGVuZHMgb24gTUVNT1JZX0hPVFBMVUcgXFx1MDAyNlxcdTAwMjYgU1BBUlNFTUVNX1ZNRU1NQVBcXG5tbS9LY29uZmlnLTYwMC1cXHRkZXBlbmRzIG9uIEFSQ0hfTUhQX01FTU1BUF9PTl9NRU1PUllfRU5BQkxFXFxuLS1cXG5tbS9LY29uZmlnPTEyMzY9Y29uZmlnIFpPTkVfREVWSUNFXFxuLS1cXG5tbS9LY29uZmlnLTEyMzktXFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXFxubW0vS2NvbmZpZzoxMjQwOlxcdGRlcGVuZHMgb24gU1BBUlNFTUVNX1ZNRU1NQVBcXG5tbS9LY29uZmlnLTEyNDEtXFx0c2VsZWN0IFhBUlJBWV9NVUxUSVxcbi0tXFxubW0vS2NvbmZpZz0xNDA5PWNvbmZpZyBMUlVfR0VOXFxuLS1cXG5tbS9LY29uZmlnLTE0MTItXFx0IyBtYWtlIHN1cmUgZm9saW8tXFx1MDAzZWZsYWdzIGhhcyBlbm91Z2ggc3BhcmUgYml0c1xcbm1tL0tjb25maWc6MTQxMzpcXHRkZXBlbmRzIG9uIDY0QklUIHx8ICFTUEFSU0VNRU0gfHwgU1BBUlNFTUVNX1ZNRU1NQVBcXG5tbS9LY29uZmlnLTE0MTQtXFx0aGVscFxcbi0tXFxubW0vTWFrZWZpbGU9ODc9b2JqLSQoQ09ORklHX1NQQVJTRU1FTSlcXHQrPSBzcGFyc2Uub1xcbm1tL01ha2VmaWxlOjg4Om9iai0kKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgKz0gc3BhcnNlLXZtZW1tYXAub1xcbm1tL01ha2VmaWxlLTg5LW9iai0kKENPTkZJR19NTVVfTk9USUZJRVIpICs9IG1tdV9ub3RpZmllci5vXFxuLS1cXG5tbS9odWdldGxiX3ZtZW1tYXAuYz03MDQ9dm9pZCBodWdldGxiX3ZtZW1tYXBfb3B0aW1pemVfYm9vdG1lbV9mb2xpb3Moc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdClcXG4tLVxcbm1tL2h1Z2V0bGJfdm1lbW1hcC5jLTcwOC1cXG5tbS9odWdldGxiX3ZtZW1tYXAuYzo3MDk6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxubW0vaHVnZXRsYl92bWVtbWFwLmMtNzEwLVxcbi0tXFxubW0vaHVnZXRsYl92bWVtbWFwLmg9Mjk9dm9pZCBodWdldGxiX3ZtZW1tYXBfb3B0aW1pemVfYm9vdG1lbV9mb2xpb3Moc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCk7XFxubW0vaHVnZXRsYl92bWVtbWFwLmg6MzA6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxubW0vaHVnZXRsYl92bWVtbWFwLmgtMzEtdm9pZCBodWdldGxiX3ZtZW1tYXBfaW5pdF9lYXJseShpbnQgbmlkKTtcXG4tLVxcbm1tL2ludGVybmFsLmg9OTU5PXN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdF9vbmVfc2VjdGlvbihzdHJ1Y3QgbWVtX3NlY3Rpb24gKm1zLFxcbi0tXFxubW0vaW50ZXJuYWwuaC05NjgtXFx0ICogV2UgZW5jb2RlIHRoZSBzdGFydCBQRk4gb2YgdGhlIHNlY3Rpb24gaW50byB0aGUgbWVtX21hcCBzdWNoIHRoYXRcXG5tbS9pbnRlcm5hbC5oOjk2OTpcXHQgKiBwYWdlX3RvX3BmbigpIG9uICFDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgY2FuIHNpbXBseSBzdWJ0cmFjdCBpdFxcbm1tL2ludGVybmFsLmgtOTcwLVxcdCAqIGZyb20gdGhlIHBhZ2UgcG9pbnRlciB0byBvYnRhaW4gdGhlIFBGTi5cXG4tLVxcbm1tL2ludGVybmFsLmg9OTkwPXN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdCh2b2lkKSB7fVxcbi0tXFxubW0vaW50ZXJuYWwuaC05OTUtICovXFxubW0vaW50ZXJuYWwuaDo5OTY6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxcbm1tL2ludGVybmFsLmgtOTk3LXZvaWQgc3BhcnNlX2luaXRfc3Vic2VjdGlvbl9tYXAodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpO1xcbi0tXFxubW0vaW50ZXJuYWwuaD05OTk9c3RhdGljIGlubGluZSB2b2lkIHNwYXJzZV9pbml0X3N1YnNlY3Rpb25fbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxcbi0tXFxubW0vaW50ZXJuYWwuaC0xMDAyLX1cXG5tbS9pbnRlcm5hbC5oOjEwMDM6I2VuZGlmIC8qIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCAqL1xcbm1tL2ludGVybmFsLmgtMTAwNC1cXG4tLVxcbm1tL21lbWJsb2NrLmM9MjE4Mz1zdGF0aWMgdm9pZCBfX2luaXQgZnJlZV91bnVzZWRfbWVtbWFwKHZvaWQpXFxuLS1cXG5tbS9tZW1ibG9jay5jLTIxODgtXFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19IQVZFX0FSQ0hfUEZOX1ZBTElEKSB8fFxcbm1tL21lbWJsb2NrLmM6MjE4OTpcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApKVxcbm1tL21lbWJsb2NrLmMtMjE5MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTU1Mz1zdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBfX3BvcHVsYXRlX3NlY3Rpb25fbWVtbWFwKHVuc2lnbmVkIGxvbmcgcGZuLFxcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYy01NzctXFxubW0vc3BhcnNlLXZtZW1tYXAuYzo1Nzg6I2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9QUkVJTklUXFxubW0vc3BhcnNlLXZtZW1tYXAuYy01NzktLypcXG4tLVxcbm1tL3NwYXJzZS5jPTIyMD1zaXplX3QgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSh2b2lkKVxcbi0tXFxubW0vc3BhcnNlLmMtMjI0LVxcbm1tL3NwYXJzZS5jOjIyNTojaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxubW0vc3BhcnNlLmMtMjI2LXVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcXG4tLVxcbm1tL3NwYXJzZS5jPTIzNz1zdHJ1Y3QgcGFnZSBfX2luaXQgKl9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXAodW5zaWduZWQgbG9uZyBwZm4sXFxuLS1cXG5tbS9zcGFyc2UuYy0yNTEtfVxcbm1tL3NwYXJzZS5jOjI1MjojZW5kaWYgLyogIUNPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCAqL1xcbm1tL3NwYXJzZS5jLTI1My1cXG4tLVxcbm1tL3V0aWwuYz0xNTY3PXVuc2lnbmVkIGludCBmb2xpb19wdGVfYmF0Y2goc3RydWN0IGZvbGlvICpmb2xpbywgcHRlX3QgKnB0ZXAsIHB0ZV90IHB0ZSxcXG4tLVxcbm1tL3V0aWwuYy0xNTczLVxcbm1tL3V0aWwuYzoxNTc0OiNpZiBkZWZpbmVkKENPTkZJR19TUEFSU0VNRU0pIFxcdTAwMjZcXHUwMDI2ICFkZWZpbmVkKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUClcXG5tbS91dGlsLmMtMTU3NS0vKipcXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L2NvbnN0YW50cy5weS5pbj0xNTY9TFhfQ09ORklHKENPTkZJR19TUEFSU0VNRU1fRVhUUkVNRSlcXG5zY3JpcHRzL2dkYi9saW51eC9jb25zdGFudHMucHkuaW46MTU3OkxYX0NPTkZJRyhDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVApXFxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluLTE1OC1MWF9DT05GSUcoQ09ORklHX0tBU0FOKVxcbi0tXFxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHk9MjI9Y2xhc3MgcGFnZV9vcHMoKTpcXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5LTI0LSAgICBkZWYgX19pbml0X18oc2VsZik6XFxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHk6MjU6ICAgICAgICBpZiBub3QgY29uc3RhbnRzLkxYX0NPTkZJR19TUEFSU0VNRU1fVk1FTU1BUDpcXG5zY3JpcHRzL2dkYi9saW51eC9tbS5weToyNjogICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3IoJ09ubHkgc3VwcG9ydCBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAgbm93JylcXG5zY3JpcHRzL2dkYi9saW51eC9tbS5weS0yNy0gICAgICAgIGlmIGNvbnN0YW50cy5MWF9DT05GSUdfQVJNNjQgYW5kIHV0aWxzLmlzX3RhcmdldF9hcmNoKCdhYXJjaDY0Jyk6XFxuLS1cXG5zY3JpcHRzL2dkYi9saW51eC9tbS5weT0zND1jbGFzcyB4ODZfcGFnZV9vcHMoKTpcXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5LTEyMC0gICAgZGVmIHBmbl9zZWN0aW9uX3ZhbGlkKHNlbGYsIG1zLCBwZm4pOlxcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5OjEyMTogICAgICAgIGlmIGNvbnN0YW50cy5MWF9DT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVA6XFxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMTIyLSAgICAgICAgICAgIGlkeCA9IHNlbGYuc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKVxcbi0tXFxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHk9MjAzPWNsYXNzIGFhcmNoNjRfcGFnZV9vcHMoKTpcXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5LTMyNC0gICAgZGVmIHBmbl9zZWN0aW9uX3ZhbGlkKHNlbGYsIG1zLCBwZm4pOlxcbnNjcmlwdHMvZ2RiL2xpbnV4L21tLnB5OjMyNTogICAgICAgIGlmIGNvbnN0YW50cy5MWF9DT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVA6XFxuc2NyaXB0cy9nZGIvbGludXgvbW0ucHktMzI2LSAgICAgICAgICAgIGlkeCA9IHNlbGYuc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDozMDowOS41MzY0ODQxOTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3MTIyODUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBzeXN0ZW0gYW5kIGl0IHNlZW1zIGxpa2Ugd2UndmUgZ290IGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZnV6emluZy4gSSBzZWUgYFNQQVJTRU1FTV9WTUVNTUFQYCBhbmQgYE1FTU9SWV9IT1RQTFVHYCBhcyBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBHaXZlbiB0aGVzZSBvcHRpb25zLCBteSBndXQgdGVsbHMgbWUgdGhpcyBpcyB3b3J0aCB0aGUgZWZmb3J0LCBzbyBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gVGhpcyBzdWdnZXN0cyB0aGVyZSdzIGEgZ29vZCBjaGFuY2UgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGJ1Z3MuXG5cblNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSBzeW1ib2xzOiBgX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcGAgYW5kIGB2bWVtbWFwX3BvcHVsYXRlX2ZpbmFsaXplYC4gVGhlc2UgYXJlIGxpa2VseSB3aGVyZSB0aGUgYWN0aW9uIGlzLCByZWxhdGVkIHRvIHRoZSB2aXJ0dWFsIG1lbW9yeSBtYXAgcG9wdWxhdGlvbiBhbmQgZmluYWxpemF0aW9uLCB3aGljaCBhcmUgb2Z0ZW4gc291cmNlcyBvZiBtZW1vcnkgbWFuYWdlbWVudCBidWdzLlxuXG5BbmQgb2YgY291cnNlLCBmb3IgdGhpcyB0byBiZSBlZmZlY3RpdmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgdHdvIGNvbmZpZ3VyYXRpb25zLCBgU1BBUlNFTUVNX1ZNRU1NQVBgIGFuZCBgTUVNT1JZX0hPVFBMVUdgLCBhcmUgZW5hYmxlZCBkdXJpbmcgdGhlIGZ1enppbmcgcHJvY2Vzcy4gVGhvc2UgYXJlIHRoZSBlbmFibGluZyBjb25kaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjg3MCwiT3V0cHV0VG9rZW5zIjoxMjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMDozMDoxNC43MDc3MTUzMDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjc0MzMzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1BBUlNFTUVNX1ZNRU1NQVBcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19wb3B1bGF0ZV9zZWN0aW9uX21lbW1hcFwiLFxuICAgIFwidm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGFuZCBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIGJ5IGFkZGluZyBhIFRMQiBmbHVzaCAodm1lbW1hcF9wb3B1bGF0ZV9maW5hbGl6ZSkgYWZ0ZXIgcG9wdWxhdGluZyBhIHZtZW1tYXAgc2VjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb3JlIE1NIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNQQVJTRU1FTV9WTUVNTUFQXCIsXG4gICAgXCJNRU1PUllfSE9UUExVR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcG9wdWxhdGVfc2VjdGlvbl9tZW1tYXBcIixcbiAgICBcInZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIFJJU0MtViBieSBhZGRpbmcgYSBUTEIgZmx1c2ggKHZtZW1tYXBfcG9wdWxhdGVfZmluYWxpemUpIGFmdGVyIHBvcHVsYXRpbmcgYSB2bWVtbWFwIHNlY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29yZSBNTSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowx5mtg[1] Phase: Succeeded StartedAt: 2026-06-30 10:31:26 +0000 UTC FinishedAt: 2026-06-30 10:31:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 10:31:26 +0000 UTC FinishedAt: 2026-06-30 10:31:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2] Phase: Succeeded StartedAt: 2026-06-30 10:31:26 +0000 UTC FinishedAt: 2026-06-30 14:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 10:31:26 +0000 UTC FinishedAt: 2026-06-30 14:47:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 10:31:26 +0000 UTC FinishedAt: 2026-06-30 10:32:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 10:31:26 +0000 UTC FinishedAt: 2026-06-30 10:32:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowx5mtg/series-workflowx5mtg-convert-artifact-1105215467/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 10:32:12 +0000 UTC FinishedAt: 2026-06-30 11:06:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 10:32:12 +0000 UTC FinishedAt: 2026-06-30 11:06:02 +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:*fab65a14-c90f-408d-80d7-d6fd925e5fb6,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-workflowx5mtg/series-workflowx5mtg-convert-artifact-1105215467/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": "6449bb70-f058-4965-b8bc-b686353b11f2", "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-workflowx5mtg/series-workflowx5mtg-build-action-151172073/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 10:32:12 +0000 UTC FinishedAt: 2026-06-30 11:04:55 +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:*fab65a14-c90f-408d-80d7-d6fd925e5fb6,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-workflowx5mtg/series-workflowx5mtg-convert-artifact-1105215467/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": "6449bb70-f058-4965-b8bc-b686353b11f2", "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-workflowx5mtg/series-workflowx5mtg-build-action-151172073/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 11:06:02 +0000 UTC FinishedAt: 2026-06-30 11:06:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 11:06:02 +0000 UTC FinishedAt: 2026-06-30 11:06:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 11:06:02 +0000 UTC FinishedAt: 2026-06-30 11:07:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 11:06:02 +0000 UTC FinishedAt: 2026-06-30 11:06:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowx5mtg/series-workflowx5mtg-convert-artifact-3560315586/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 11:07:04 +0000 UTC FinishedAt: 2026-06-30 11:09:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 11:07:04 +0000 UTC FinishedAt: 2026-06-30 11:09:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6449bb70-f058-4965-b8bc-b686353b11f2,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-workflowx5mtg/series-workflowx5mtg-build-action-151172073/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-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 11:09:21 +0000 UTC FinishedAt: 2026-06-30 11:09:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 11:09:21 +0000 UTC FinishedAt: 2026-06-30 11:09:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 11:09:21 +0000 UTC FinishedAt: 2026-06-30 11:42:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 11:09:21 +0000 UTC FinishedAt: 2026-06-30 11:42:44 +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:*fab65a14-c90f-408d-80d7-d6fd925e5fb6,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-workflowx5mtg/series-workflowx5mtg-convert-artifact-3560315586/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": "aff23ac2-ed54-4932-b90b-4a5a1ade5417", "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-workflowx5mtg/series-workflowx5mtg-build-action-120900886/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 11:09:21 +0000 UTC FinishedAt: 2026-06-30 11:42:34 +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:*fab65a14-c90f-408d-80d7-d6fd925e5fb6,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-workflowx5mtg/series-workflowx5mtg-convert-artifact-3560315586/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": "aff23ac2-ed54-4932-b90b-4a5a1ade5417", "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-workflowx5mtg/series-workflowx5mtg-build-action-120900886/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 11:42:44 +0000 UTC FinishedAt: 2026-06-30 11:42:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 11:42:44 +0000 UTC FinishedAt: 2026-06-30 11:42:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 11:42:44 +0000 UTC FinishedAt: 2026-06-30 11:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 11:42:44 +0000 UTC FinishedAt: 2026-06-30 11:44:23 +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:*aff23ac2-ed54-4932-b90b-4a5a1ade5417,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-workflowx5mtg/series-workflowx5mtg-build-action-120900886/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-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 11:44:33 +0000 UTC FinishedAt: 2026-06-30 14:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 11:44:33 +0000 UTC FinishedAt: 2026-06-30 14:47: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":["__populate_section_memmap","vmemmap_populate_finalize"],"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:*6449bb70-f058-4965-b8bc-b686353b11f2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aff23ac2-ed54-4932-b90b-4a5a1ade5417,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-workflowx5mtg/series-workflowx5mtg-build-action-151172073/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-workflowx5mtg/series-workflowx5mtg-build-action-120900886/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 11:44:33 +0000 UTC FinishedAt: 2026-06-30 11:44:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 11:44:33 +0000 UTC FinishedAt: 2026-06-30 11:44:40 +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":["__populate_section_memmap","vmemmap_populate_finalize"],"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-workflowx5mtg/series-workflowx5mtg-convert-artifact-1672283639/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 11:44:33 +0000 UTC FinishedAt: 2026-06-30 11:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 11:44:33 +0000 UTC FinishedAt: 2026-06-30 11:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 11:44:33 +0000 UTC FinishedAt: 2026-06-30 11:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 11:44:45 +0000 UTC FinishedAt: 2026-06-30 14:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx5mtg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__populate_section_memmap","vmemmap_populate_finalize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["SPARSEMEM_VMEMMAP","MEMORY_HOTPLUG"],"series_id":"a706b8b0-b7f5-4aeb-976a-4915c0ff0ebf","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 11:44:45 +0000 UTC FinishedAt: 2026-06-30 14:47:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6449bb70-f058-4965-b8bc-b686353b11f2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aff23ac2-ed54-4932-b90b-4a5a1ade5417,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-workflowx5mtg/series-workflowx5mtg-build-action-151172073/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-workflowx5mtg/series-workflowx5mtg-build-action-120900886/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-workflowx5mtg/series-workflowx5mtg-convert-artifact-1672283639/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,}