Name: series-workflowxddmf Phase: Succeeded StartedAt: 2026-06-24 07:40:56 +0000 UTC FinishedAt: 2026-06-24 08:59:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[0] Phase: Succeeded StartedAt: 2026-06-24 07:40:56 +0000 UTC FinishedAt: 2026-06-24 07:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 07:40:56 +0000 UTC FinishedAt: 2026-06-24 07:54:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_MICROSOFT", "MICROSOFT_MANA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_MICROSOFT", "MICROSOFT_MANA" ], "series_id": "8d5e9ba5-c812-491c-9d8f-7a079dfcb650" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mana_gd_setup_dyn_irqs", "mana_irq_setup_linear", "mana_irq_setup_numa_aware", "mana_gd_setup_irqs", "mana_gd_query_max_resources" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfTUlDUk9TT0ZUJiMzNDssCiAgICAmIzM0O01JQ1JPU09GVF9NQU5BJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFuYV9nZF9zZXR1cF9keW5faXJxcyYjMzQ7LAogICAgJiMzNDttYW5hX2lycV9zZXR1cF9saW5lYXImIzM0OywKICAgICYjMzQ7bWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSYjMzQ7LAogICAgJiMzNDttYW5hX2dkX3NldHVwX2lycXMmIzM0OywKICAgICYjMzQ7bWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUlEgc2V0dXAgbG9naWMgaW4gdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFkZGluZyBsaW5lYXIgSVJRIHNldHVwIGFuZCBtb2RpZnlpbmcgdGhlIE5VTUEtYXdhcmUgSVJRIHNldHVwLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBlbXVsYXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgSVJRIGFsbG9jYXRpb24gYW5kIGFmZmluaXR5IGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzkwNTI0MWI4Njk2MTMwMmJhM2RiYmJlYjEzNTA1N2JmYmY5OWU5MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDA3OjUxOjQ5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcbmluZGV4IGEwZmRkMDUyZDdmMTYzLi5lOGI3ZmZiNDdlYjk4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uY1xuQEAgLTIxMCw2ICYjNDM7MjEwLDggQEAgc3RhdGljIGludCBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHR9IGVsc2Uge1xuIFx0XHQvKiBJZiBkeW5hbWljIGFsbG9jYXRpb24gaXMgZW5hYmxlZCB3ZSBoYXZlIGFscmVhZHkgYWxsb2NhdGVkXG4gXHRcdCAqIGh3YyBtc2lcbiYjNDM7XHRcdCAqIEFsc28sIHdlIG1ha2Ugc3VyZSBpbiB0aGlzIGNhc2UgdGhlIGZvbGxvd2luZyBpcyBhbHdheXMgdHJ1ZVxuJiM0MztcdFx0ICogKG51bV9tc2l4X3VzYWJsZSAtIDEgSFdDKSBcdTAwM2M9IG51bV9vbmxpbmVfY3B1cygpXG4gXHRcdCAqL1xuIFx0XHRnYy1cdTAwM2VudW1fbXNpeF91c2FibGUgPSBtaW4ocmVzcC5tYXhfbXNpeCwgbnVtX29ubGluZV9jcHVzKCkgJiM0MzsgMSk7XG4gXHR9XG5AQCAtMTkwOSw4ICYjNDM7MTkxMSw4IEBAIHZvaWQgbWFuYV9nZF9mcmVlX3Jlc19tYXAoc3RydWN0IGdkbWFfcmVzb3VyY2UgKnIpXG4gICogZG8gdGhlIHNhbWUgdGhpbmcuXG4gICovXG4gXG4tc3RhdGljIGludCBpcnFfc2V0dXAodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSxcbi1cdFx0ICAgICBib29sIHNraXBfZmlyc3RfY3B1KVxuJiM0MztzdGF0aWMgaW50IG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLFxuJiM0MztcdFx0XHRcdCAgICAgaW50IG5vZGUsIGJvb2wgc2tpcF9maXJzdF9jcHUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGNwdW1hc2sgKm5leHQsICpwcmV2ID0gY3B1X25vbmVfbWFzaztcbiBcdGNwdW1hc2tfdmFyX3QgY3B1cyBfX2ZyZWUoZnJlZV9jcHVtYXNrX3Zhcik7XG5AQCAtMTk0NiwxMSAmIzQzOzE5NDgsMjQgQEAgc3RhdGljIGludCBpcnFfc2V0dXAodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSxcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7LyogbXVzdCBiZSBjYWxsZWQgd2l0aCBjcHVzX3JlYWRfbG9jaygpIGhlbGQgKi9cbiYjNDM7c3RhdGljIHZvaWQgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilcbiYjNDM7e1xuJiM0MztcdGludCBjcHU7XG4mIzQzO1xuJiM0MztcdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XG4mIzQzO1x0XHRpZiAobGVuID09IDApXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoKmlycXMmIzQzOyYjNDM7LCBjcHVtYXNrX29mKGNwdSkpO1xuJiM0MztcdFx0bGVuLS07XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG4ge1xuIFx0c3RydWN0IGdkbWFfY29udGV4dCAqZ2MgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4gXHRzdHJ1Y3QgZ2RtYV9pcnFfY29udGV4dCAqZ2ljO1xuLVx0Ym9vbCBza2lwX2ZpcnN0X2NwdSA9IGZhbHNlO1xuIFx0aW50ICppcnFzLCBlcnIsIGksIG1zaTtcbiBcbiBcdGlycXMgPSBrbWFsbG9jX29ianMoaW50LCBudmVjKTtcbkBAIC0xOTU4LDEwICYjNDM7MTk3MywxMiBAQCBzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfZHluX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdC8qXG4mIzQzO1x0ICogSW4gdGhpcyBmdW5jdGlvbiwgbnVtX21zaXhfdXNhYmxlID0gSFdDIElSUSAmIzQzOyBRdWV1ZSBJUlEuXG4mIzQzO1x0ICogbnZlYyBpcyBvbmx5IFF1ZXVlIElSUSAoSFdDIGFscmVhZHkgc2V0dXApLlxuIFx0ICogV2hpbGUgcHJvY2Vzc2luZyB0aGUgbmV4dCBwY2kgaXJxIHZlY3Rvciwgd2Ugc3RhcnQgd2l0aCBpbmRleCAxLFxuIFx0ICogYXMgSVJRIHZlY3RvciBhdCBpbmRleCAwIGlzIGFscmVhZHkgcHJvY2Vzc2VkIGZvciBIV0MuXG4gXHQgKiBIb3dldmVyLCB0aGUgcG9wdWxhdGlvbiBvZiBpcnFzIGFycmF5IHN0YXJ0cyB3aXRoIGluZGV4IDAsIHRvIGJlXG4tXHQgKiBmdXJ0aGVyIHVzZWQgaW4gaXJxX3NldHVwKClcbiYjNDM7XHQgKiBmdXJ0aGVyIHVzZWQgaW4gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSgpXG4gXHQgKi9cbiBcdGZvciAoaSA9IDE7IGkgXHUwMDNjPSBudmVjOyBpJiM0MzsmIzQzOykge1xuIFx0XHRtc2kgPSBpO1xuQEAgLTE5NzUsMTggJiM0MzsxOTkyLDUxIEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG4gXHR9XG4gXG4gXHQvKlxuLVx0ICogV2hlbiBjYWxsaW5nIGlycV9zZXR1cCgpIGZvciBkeW5hbWljYWxseSBhZGRlZCBJUlFzLCBpZiBudW1iZXIgb2Zcbi1cdCAqIENQVXMgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIGFsbG9jYXRlZCBNU0ktWCwgd2UgbmVlZCB0byBza2lwIHRoZVxuLVx0ICogZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0byBIV0MgSVJRXG4mIzQzO1x0ICogV2hlbiBjYWxsaW5nIG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUoKSBmb3IgZHluYW1pY2FsbHkgYWRkZWQgSVJRcyxcbiYjNDM7XHQgKiBpZiBudW1iZXIgb2YgQ1BVcyBpcyBtb3JlIHRoYW4gb3IgZXF1YWwgdG8gYWxsb2NhdGVkIE1TSS1YLCB3ZSBuZWVkIHRvXG4mIzQzO1x0ICogc2tpcCB0aGUgZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0b1xuJiM0MztcdCAqIEhXQyBJUlFcbiBcdCAqL1xuIFx0Y3B1c19yZWFkX2xvY2soKTtcbi1cdGlmIChnYy1cdTAwM2VudW1fbXNpeF91c2FibGUgXHUwMDNjPSBudW1fb25saW5lX2NwdXMoKSlcbi1cdFx0c2tpcF9maXJzdF9jcHUgPSB0cnVlO1xuJiM0MztcdGlmIChnYy1cdTAwM2VudW1fbXNpeF91c2FibGUgXHUwMDNjPSBudW1fb25saW5lX2NwdXMoKSkge1xuJiM0MztcdFx0ZXJyID0gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZShpcnFzLCBudmVjLCBnYy1cdTAwM2VudW1hX25vZGUsXG4mIzQzO1x0XHRcdFx0XHRcdHRydWUpO1xuJiM0MztcdFx0aWYgKGVycikge1xuJiM0MztcdFx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0XHRcdGdvdG8gZnJlZV9pcnE7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBXaGVuIG51bV9tc2l4X3VzYWJsZSBhcmUgbW9yZSB0aGFuIG51bV9vbmxpbmVfY3B1cywgb3VyXG4mIzQzO1x0XHQgKiBxdWV1ZSBJUlFzIHNob3VsZCBiZSBlcXVhbCB0byBudW0gb2Ygb25saW5lIHZDUFVzLlxuJiM0MztcdFx0ICogV2UgdHJ5IHRvIG1ha2Ugc3VyZSBxdWV1ZSBJUlFzIHNwcmVhZCBhY3Jvc3MgYWxsIHZDUFVzLlxuJiM0MztcdFx0ICogSW4gc3VjaCBhIGNhc2UgTlVNQSBvciBDUFUgY29yZSBhZmZpbml0eSBkb2VzIG5vdCBtYXR0ZXIuXG4mIzQzO1x0XHQgKiBOb3RlOiBpbiB0aGlzIGNhc2UgdGhlIHRvdGFsIG1hbmEgSVJRIHNob3VsZCBhbHdheXMgYmVcbiYjNDM7XHRcdCAqIG51bV9vbmxpbmVfY3B1cyAmIzQzOyAxLiBUaGUgZmlyc3QgSFdDIElSUSBpcyBhbHJlYWR5IGhhbmRsZWRcbiYjNDM7XHRcdCAqIGluIEhXQyBzZXR1cCBjYWxsc1xuJiM0MztcdFx0ICogSG93ZXZlciwgaWYgQ1BVcyB3ZW50IG9mZmxpbmUgc2luY2UgbnVtX21zaXhfdXNhYmxlIHdhc1xuJiM0MztcdFx0ICogY29tcHV0ZWQsIHF1ZXVlIElSUXMgd2lsbCBiZSBtb3JlIHRoYW4gbnVtX29ubGluZV9jcHVzKCkuXG4mIzQzO1x0XHQgKiBJbiBzdWNoIGNhc2VzIHJlbWFpbmluZyBleHRyYSBJUlFzIHdpbGwgcmV0YWluIHRoZWlyIGRlZmF1bHRcbiYjNDM7XHRcdCAqIGFmZmluaXR5LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpbnQgZmlyc3RfdW5hc3NpZ25lZCA9IG51bV9vbmxpbmVfY3B1cygpO1xuIFxuLVx0ZXJyID0gaXJxX3NldHVwKGlycXMsIG52ZWMsIGdjLVx1MDAzZW51bWFfbm9kZSwgc2tpcF9maXJzdF9jcHUpO1xuLVx0aWYgKGVycikge1xuLVx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4tXHRcdGdvdG8gZnJlZV9pcnE7XG4mIzQzO1x0XHRpZiAobnZlYyBcdTAwM2UgZmlyc3RfdW5hc3NpZ25lZCkge1xuJiM0MztcdFx0XHRjaGFyIGJ1ZlszMl07XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoZmlyc3RfdW5hc3NpZ25lZCA9PSBudmVjIC0gMSlcbiYjNDM7XHRcdFx0XHRzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBcJiMzNDslZFwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCBmaXJzdF91bmFzc2lnbmVkKTtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFwmIzM0OyVkLSVkXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0IGZpcnN0X3VuYXNzaWduZWQsIG52ZWMgLSAxKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGRldl9kYmcoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0XCYjMzQ7TUFOQSBJUlEgaW5kaWNlcyAjJXMgd2lsbCByZXRhaW4gdGhlIGRlZmF1bHQgQ1BVIGFmZmluaXR5XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdGJ1Zik7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0bWFuYV9pcnFfc2V0dXBfbGluZWFyKGlycXMsIG52ZWMpO1xuIFx0fVxuIFxuIFx0Y3B1c19yZWFkX3VubG9jaygpO1xuQEAgLTIwNDEsNyAmIzQzOzIwOTEsNyBAQCBzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG4gXHRcdG52ZWMgLT0gMTtcbiBcdH1cbiBcbi1cdGVyciA9IGlycV9zZXR1cChpcnFzLCBudmVjLCBnYy1cdTAwM2VudW1hX25vZGUsIGZhbHNlKTtcbiYjNDM7XHRlcnIgPSBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlKGlycXMsIG52ZWMsIGdjLVx1MDAzZW51bWFfbm9kZSwgZmFsc2UpO1xuIFx0aWYgKGVycikge1xuIFx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4gXHRcdGdvdG8gZnJlZV9pcnE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9NSUNST1NPRlQmIzM0OywKICAgICYjMzQ7TUlDUk9TT0ZUX01BTkEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYW5hX2dkX3NldHVwX2R5bl9pcnFzJiMzNDssCiAgICAmIzM0O21hbmFfaXJxX3NldHVwX2xpbmVhciYjMzQ7LAogICAgJiMzNDttYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlJiMzNDssCiAgICAmIzM0O21hbmFfZ2Rfc2V0dXBfaXJxcyYjMzQ7LAogICAgJiMzNDttYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElSUSBzZXR1cCBsb2dpYyBpbiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGxpbmVhciBJUlEgc2V0dXAgYW5kIG1vZGlmeWluZyB0aGUgTlVNQS1hd2FyZSBJUlEgc2V0dXAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIGVtdWxhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBJUlEgYWxsb2NhdGlvbiBhbmQgYWZmaW5pdHkgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc5MDUyNDFiODY5NjEzMDJiYTNkYmJiZWIxMzUwNTdiZmJmOTllOTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1biAyNCAwNzo1MTo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMKaW5kZXggYTBmZGQwNTJkN2YxNjMuLmU4YjdmZmI0N2ViOTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYwpAQCAtMjEwLDYgJiM0MzsyMTAsOCBAQCBzdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldikKIAl9IGVsc2UgewogCQkvKiBJZiBkeW5hbWljIGFsbG9jYXRpb24gaXMgZW5hYmxlZCB3ZSBoYXZlIGFscmVhZHkgYWxsb2NhdGVkCiAJCSAqIGh3YyBtc2kKJiM0MzsJCSAqIEFsc28sIHdlIG1ha2Ugc3VyZSBpbiB0aGlzIGNhc2UgdGhlIGZvbGxvd2luZyBpcyBhbHdheXMgdHJ1ZQomIzQzOwkJICogKG51bV9tc2l4X3VzYWJsZSAtIDEgSFdDKSAmbHQ7PSBudW1fb25saW5lX2NwdXMoKQogCQkgKi8KIAkJZ2MtJmd0O251bV9tc2l4X3VzYWJsZSA9IG1pbihyZXNwLm1heF9tc2l4LCBudW1fb25saW5lX2NwdXMoKSAmIzQzOyAxKTsKIAl9CkBAIC0xOTA5LDggJiM0MzsxOTExLDggQEAgdm9pZCBtYW5hX2dkX2ZyZWVfcmVzX21hcChzdHJ1Y3QgZ2RtYV9yZXNvdXJjZSAqcikKICAqIGRvIHRoZSBzYW1lIHRoaW5nLgogICovCiAKLXN0YXRpYyBpbnQgaXJxX3NldHVwKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbiwgaW50IG5vZGUsCi0JCSAgICAgYm9vbCBza2lwX2ZpcnN0X2NwdSkKJiM0MztzdGF0aWMgaW50IG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLAomIzQzOwkJCQkgICAgIGludCBub2RlLCBib29sIHNraXBfZmlyc3RfY3B1KQogewogCWNvbnN0IHN0cnVjdCBjcHVtYXNrICpuZXh0LCAqcHJldiA9IGNwdV9ub25lX21hc2s7CiAJY3B1bWFza192YXJfdCBjcHVzIF9fZnJlZShmcmVlX2NwdW1hc2tfdmFyKTsKQEAgLTE5NDYsMTEgJiM0MzsxOTQ4LDI0IEBAIHN0YXRpYyBpbnQgaXJxX3NldHVwKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbiwgaW50IG5vZGUsCiAJcmV0dXJuIDA7CiB9CiAKJiM0MzsvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIGNwdXNfcmVhZF9sb2NrKCkgaGVsZCAqLwomIzQzO3N0YXRpYyB2b2lkIG1hbmFfaXJxX3NldHVwX2xpbmVhcih1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4pCiYjNDM7ewomIzQzOwlpbnQgY3B1OwomIzQzOwomIzQzOwlmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkgewomIzQzOwkJaWYgKGxlbiA9PSAwKQomIzQzOwkJCWJyZWFrOwomIzQzOwomIzQzOwkJaXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcyYjNDM7JiM0MzssIGNwdW1hc2tfb2YoY3B1KSk7CiYjNDM7CQlsZW4tLTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpCiB7CiAJc3RydWN0IGdkbWFfY29udGV4dCAqZ2MgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7CiAJc3RydWN0IGdkbWFfaXJxX2NvbnRleHQgKmdpYzsKLQlib29sIHNraXBfZmlyc3RfY3B1ID0gZmFsc2U7CiAJaW50ICppcnFzLCBlcnIsIGksIG1zaTsKIAogCWlycXMgPSBrbWFsbG9jX29ianMoaW50LCBudmVjKTsKQEAgLTE5NTgsMTAgJiM0MzsxOTczLDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJLyoKJiM0MzsJICogSW4gdGhpcyBmdW5jdGlvbiwgbnVtX21zaXhfdXNhYmxlID0gSFdDIElSUSAmIzQzOyBRdWV1ZSBJUlEuCiYjNDM7CSAqIG52ZWMgaXMgb25seSBRdWV1ZSBJUlEgKEhXQyBhbHJlYWR5IHNldHVwKS4KIAkgKiBXaGlsZSBwcm9jZXNzaW5nIHRoZSBuZXh0IHBjaSBpcnEgdmVjdG9yLCB3ZSBzdGFydCB3aXRoIGluZGV4IDEsCiAJICogYXMgSVJRIHZlY3RvciBhdCBpbmRleCAwIGlzIGFscmVhZHkgcHJvY2Vzc2VkIGZvciBIV0MuCiAJICogSG93ZXZlciwgdGhlIHBvcHVsYXRpb24gb2YgaXJxcyBhcnJheSBzdGFydHMgd2l0aCBpbmRleCAwLCB0byBiZQotCSAqIGZ1cnRoZXIgdXNlZCBpbiBpcnFfc2V0dXAoKQomIzQzOwkgKiBmdXJ0aGVyIHVzZWQgaW4gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSgpCiAJICovCiAJZm9yIChpID0gMTsgaSAmbHQ7PSBudmVjOyBpJiM0MzsmIzQzOykgewogCQltc2kgPSBpOwpAQCAtMTk3NSwxOCAmIzQzOzE5OTIsNTEgQEAgc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYykKIAl9CiAKIAkvKgotCSAqIFdoZW4gY2FsbGluZyBpcnFfc2V0dXAoKSBmb3IgZHluYW1pY2FsbHkgYWRkZWQgSVJRcywgaWYgbnVtYmVyIG9mCi0JICogQ1BVcyBpcyBtb3JlIHRoYW4gb3IgZXF1YWwgdG8gYWxsb2NhdGVkIE1TSS1YLCB3ZSBuZWVkIHRvIHNraXAgdGhlCi0JICogZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0byBIV0MgSVJRCiYjNDM7CSAqIFdoZW4gY2FsbGluZyBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlKCkgZm9yIGR5bmFtaWNhbGx5IGFkZGVkIElSUXMsCiYjNDM7CSAqIGlmIG51bWJlciBvZiBDUFVzIGlzIG1vcmUgdGhhbiBvciBlcXVhbCB0byBhbGxvY2F0ZWQgTVNJLVgsIHdlIG5lZWQgdG8KJiM0MzsJICogc2tpcCB0aGUgZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0bwomIzQzOwkgKiBIV0MgSVJRCiAJICovCiAJY3B1c19yZWFkX2xvY2soKTsKLQlpZiAoZ2MtJmd0O251bV9tc2l4X3VzYWJsZSAmbHQ7PSBudW1fb25saW5lX2NwdXMoKSkKLQkJc2tpcF9maXJzdF9jcHUgPSB0cnVlOwomIzQzOwlpZiAoZ2MtJmd0O251bV9tc2l4X3VzYWJsZSAmbHQ7PSBudW1fb25saW5lX2NwdXMoKSkgewomIzQzOwkJZXJyID0gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZShpcnFzLCBudmVjLCBnYy0mZ3Q7bnVtYV9ub2RlLAomIzQzOwkJCQkJCXRydWUpOwomIzQzOwkJaWYgKGVycikgewomIzQzOwkJCWNwdXNfcmVhZF91bmxvY2soKTsKJiM0MzsJCQlnb3RvIGZyZWVfaXJxOwomIzQzOwkJfQomIzQzOwl9IGVsc2UgewomIzQzOwkJLyoKJiM0MzsJCSAqIFdoZW4gbnVtX21zaXhfdXNhYmxlIGFyZSBtb3JlIHRoYW4gbnVtX29ubGluZV9jcHVzLCBvdXIKJiM0MzsJCSAqIHF1ZXVlIElSUXMgc2hvdWxkIGJlIGVxdWFsIHRvIG51bSBvZiBvbmxpbmUgdkNQVXMuCiYjNDM7CQkgKiBXZSB0cnkgdG8gbWFrZSBzdXJlIHF1ZXVlIElSUXMgc3ByZWFkIGFjcm9zcyBhbGwgdkNQVXMuCiYjNDM7CQkgKiBJbiBzdWNoIGEgY2FzZSBOVU1BIG9yIENQVSBjb3JlIGFmZmluaXR5IGRvZXMgbm90IG1hdHRlci4KJiM0MzsJCSAqIE5vdGU6IGluIHRoaXMgY2FzZSB0aGUgdG90YWwgbWFuYSBJUlEgc2hvdWxkIGFsd2F5cyBiZQomIzQzOwkJICogbnVtX29ubGluZV9jcHVzICYjNDM7IDEuIFRoZSBmaXJzdCBIV0MgSVJRIGlzIGFscmVhZHkgaGFuZGxlZAomIzQzOwkJICogaW4gSFdDIHNldHVwIGNhbGxzCiYjNDM7CQkgKiBIb3dldmVyLCBpZiBDUFVzIHdlbnQgb2ZmbGluZSBzaW5jZSBudW1fbXNpeF91c2FibGUgd2FzCiYjNDM7CQkgKiBjb21wdXRlZCwgcXVldWUgSVJRcyB3aWxsIGJlIG1vcmUgdGhhbiBudW1fb25saW5lX2NwdXMoKS4KJiM0MzsJCSAqIEluIHN1Y2ggY2FzZXMgcmVtYWluaW5nIGV4dHJhIElSUXMgd2lsbCByZXRhaW4gdGhlaXIgZGVmYXVsdAomIzQzOwkJICogYWZmaW5pdHkuCiYjNDM7CQkgKi8KJiM0MzsJCWludCBmaXJzdF91bmFzc2lnbmVkID0gbnVtX29ubGluZV9jcHVzKCk7CiAKLQllcnIgPSBpcnFfc2V0dXAoaXJxcywgbnZlYywgZ2MtJmd0O251bWFfbm9kZSwgc2tpcF9maXJzdF9jcHUpOwotCWlmIChlcnIpIHsKLQkJY3B1c19yZWFkX3VubG9jaygpOwotCQlnb3RvIGZyZWVfaXJxOwomIzQzOwkJaWYgKG52ZWMgJmd0OyBmaXJzdF91bmFzc2lnbmVkKSB7CiYjNDM7CQkJY2hhciBidWZbMzJdOwomIzQzOwomIzQzOwkJCWlmIChmaXJzdF91bmFzc2lnbmVkID09IG52ZWMgLSAxKQomIzQzOwkJCQlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAmIzM0OyVkJiMzNDssCiYjNDM7CQkJCQkgZmlyc3RfdW5hc3NpZ25lZCk7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAmIzM0OyVkLSVkJiMzNDssCiYjNDM7CQkJCQkgZmlyc3RfdW5hc3NpZ25lZCwgbnZlYyAtIDEpOwomIzQzOwomIzQzOwkJCWRldl9kYmcoJmFtcDtwZGV2LSZndDtkZXYsCiYjNDM7CQkJCSYjMzQ7TUFOQSBJUlEgaW5kaWNlcyAjJXMgd2lsbCByZXRhaW4gdGhlIGRlZmF1bHQgQ1BVIGFmZmluaXR5XG4mIzM0OywKJiM0MzsJCQkJYnVmKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCW1hbmFfaXJxX3NldHVwX2xpbmVhcihpcnFzLCBudmVjKTsKIAl9CiAKIAljcHVzX3JlYWRfdW5sb2NrKCk7CkBAIC0yMDQxLDcgJiM0MzsyMDkxLDcgQEAgc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKQogCQludmVjIC09IDE7CiAJfQogCi0JZXJyID0gaXJxX3NldHVwKGlycXMsIG52ZWMsIGdjLSZndDtudW1hX25vZGUsIGZhbHNlKTsKJiM0MzsJZXJyID0gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZShpcnFzLCBudmVjLCBnYy0mZ3Q7bnVtYV9ub2RlLCBmYWxzZSk7CiAJaWYgKGVycikgewogCQljcHVzX3JlYWRfdW5sb2NrKCk7CiAJCWdvdG8gZnJlZV9pcnE7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTUFOQSBEcml2ZXIgSVJRIEFmZmluaXR5IENvbmZpZ3VyYXRpb24gLSBBIFJlZmluZW1lbnQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNgLiBNeSBpbml0aWFsIHJlYWQgaW5kaWNhdGVzIHRoaXMgaXMgYSBmb2N1c2VkIHVwZGF0ZSB0byB0aGUgTUFOQSBkcml2ZXIuIEkgc2VlIHRoZXkmIzM5O3JlIHJlbmFtaW5nIGBpcnFfc2V0dXBgIHRvIGBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlYCwgd2hpY2ggaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24uIFRoYXQgc3VnZ2VzdHMgYSBkZWxpYmVyYXRlIGVmZm9ydCB0byBpbnRlZ3JhdGUgTlVNQSBhd2FyZW5lc3MgaW50byB0aGUgSVJRIHNldHVwLCBsaWtlbHkgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvbiBOVU1BIGFyY2hpdGVjdHVyZXMuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYG1hbmFfaXJxX3NldHVwX2xpbmVhcmAgaXMgYWxzbyBpbnRlcmVzdGluZzsgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGF0IHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIGNvbnRleHQuCgpUaGUgbWVhdCBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2AsIHdoaWNoIGlzIHdoZXJlIHRoZXkmIzM5O3JlIG1vZGlmeWluZyB0aGUgSVJRIGFmZmluaXR5IGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZGVmaW5pdGVseSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCBzdWdnZXN0cyBhIG1vcmUgc29waGlzdGljYXRlZCBvciBjb25maWd1cmFibGUgYXBwcm9hY2ggdG8gYXNzaWduaW5nIElSUXMgdG8gQ1BVcyBvciBDUFUgY29yZXMuIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgdGhpcyBpbiBsaWdodCBvZiBNQU5BJiMzOTtzIGludGVuZGVkIHVzZSBjYXNlIGFuZCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaXQmIzM5O3MgZGVzaWduZWQgZm9yIHRvIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBzaGlmdC4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGl0JiMzOTtzIHdvcnRoIGNoZWNraW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE1BTkEuIEFyZSB0aGVyZSBhbnkgbmV3IGtub2JzIG9yIHBhcmFtZXRlcnMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgZXhpc3Rpbmcgb3B0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCBvciBkZXByZWNhdGVkPyBUaGlzIGNvbnRleHQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBwcmFjdGljYWwgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFuYV9nZF9zZXR1cF9keW5faXJxcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xOTUyPXN0YXRpYyB2b2lkIG1hbmFfaXJxX3NldHVwX2xpbmVhcih1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE5NjU6c3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NjYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTIxNDQ9c3RhdGljIGludCBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMTY4Olx0ZXJyID0gbWFuYV9nZF9zZXR1cF9keW5faXJxcyhwZGV2LCBtYXhfaXJxcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTY5LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjE1CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkZpbmRpbmcgdGhlIE1BTkEgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBsb2NhdGUgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggTUFOQS4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBzZWFyY2g7IGl0JiMzOTtzIGEgcGlucG9pbnRpbmcgZXhlcmNpc2UuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IGRpY3RhdGVzIHRoZSBidWlsZCBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCB1bHRpbWF0ZWx5LCB0aGUgYmVoYXZpb3Igb2YgdGhlIE1BTkEgY29tcG9uZW50IHdpdGhpbiB0aGUgc3lzdGVtLiBJcyBpdCBhIHRvcC1sZXZlbCBLY29uZmlnLCBuZXN0bGVkIGluIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGlyZWN0b3JpZXMsIG9yIHBlcmhhcHMgd2l0aGluIGEgc3ViLW1vZHVsZT8gT3IgbWF5YmUgaXQmIzM5O3MgaW50ZWdyYXRlZCB3aXRoIGEgbW9yZSBnZW5lcmFsaXplZCBmcmFtZXdvcms/CgpNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0czogZmlyc3QsIHRoZSBvYnZpb3VzIHBsYWNlcy4uLiBjb21tb24gYXJlYXMsIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZS4gTmV4dCwgSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBjdXN0b20gYnVpbGQgc3lzdGVtcyBvciBtZXRhLWxheWVycyB0aGF0IG1pZ2h0IGJlIGludm9sdmVkIOKAkyB3aGVyZSBhcmUgdGhlIGJ1aWxkIHN5c3RlbXMgaW5jbHVkaW5nIHRoZXNlPyBBIHF1aWNrIGdyZXAgbWlnaHQgYmUgaW4gb3JkZXIsIHNjYW5uaW5nIGZvciAmIzM0O01BTkEmIzM0OyB3aXRoaW4gdGhlIGJ1aWxkIHRyZWUsIGZvY3VzaW5nIG9uIGZpbGVzIHdpdGggdGhlIGAuY29uZmlnYCBvciBgS2NvbmZpZ2AgZXh0ZW5zaW9ucy4gSWYgdGhhdCBkb2VzbiYjMzk7dCBpbW1lZGlhdGVseSB5aWVsZCByZXN1bHRzLCBJJiMzOTtsbCBuZWVkIHRvIGV4cGFuZCBteSBzZWFyY2gsIHRoaW5raW5nIGFib3V0IGhvdyBNQU5BIGlzIGludGVncmF0ZWQ7IGl0cyBkZXBlbmRlbmN5IGNoYWluLCBpZiBhbnkuIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBhdCBhIHJlY3Vyc2l2ZSBhcHByb2FjaCwgZGl2aW5nIHRocm91Z2ggdmFyaW91cyBkaXJlY3RvcmllcyBhbmQgcG90ZW50aWFsIG1vZHVsZXMgdW50aWwgSSBmaW5kIHRoZSBkZWZpbmluZyBLY29uZmlnLiBUaGUgZ29hbCBpc24mIzM5O3QganVzdCB0byAqZmluZCogaXQsIGJ1dCB0byB1bmRlcnN0YW5kIGl0cyBsb2NhdGlvbiB3aXRoaW4gdGhlIHdpZGVyIHByb2plY3Qgc3RydWN0dXJlLiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBNQU5BIGlzIGNvbmZpZ3VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1JQ1JPU09GVF9NQU5BJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjE4OmNvbmZpZyBNSUNST1NPRlRfTUFOQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY2MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiB0aGUgTUFOQSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgTUlDUk9TT0ZUX01BTkFgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQgd2l0aGluIHRoaXMgY29udGV4dC4gSSYjMzk7bSBzZWVpbmcgY2hhbmdlcyB0byBgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzYCwgYG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmVgICh3aGljaCB3YXMgcmVuYW1lZCBmcm9tIGBpcnFfc2V0dXBgKSwgYW5kIHRoZSBhZGRpdGlvbiBvZiBgbWFuYV9pcnFfc2V0dXBfbGluZWFyYCBhbG9uZyB3aXRoIGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYCBhbmQgYG1hbmFfZ2Rfc2V0dXBfaXJxc2AuIEFsbCBvZiB0aGVzZSBhcHBlYXIgdG8gYmUgaW50ZWdyYWwgdG8gdGhlIE1BTkEgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIGFuZCBzZXR1cCBzZXF1ZW5jZS4KCk15IG5leHQgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVzZSBjb2RlIHBhdGhzIGFyZSBhY3R1YWxseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQ29uc2lkZXJpbmcgdGhhdCBNQU5BIGlzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIGFuZCB0aGF0IGl0IGlzIGEgUENJIGRldmljZSwgdGhpcyBkb2VzIG1ha2UgYSBkaWZmZXJlbmNlLiBEaXJlY3QgZnV6emluZyB3aXRoIHNvbWV0aGluZyBsaWtlIFN5emthbGxlciBtaWdodCBiZSB0cmlja3kgdW5sZXNzIHdlJiMzOTtyZSBydW5uaW5nIGluIEF6dXJlIG9yIGhhdmUgYSBnb29kIGVtdWxhdG9yLiBIb3dldmVyLCBiZWluZyBhIFBDSSBkcml2ZXIsIGl0IHNob3VsZCwgaW4gdGhlb3J5LCBiZSByZWFjaGFibGUgdGhyb3VnaCBQQ0kgZnV6emluZyBpZiB0aGUgY29ycmVjdCBQQ0kgSUQgaXMgdHJpZ2dlcmVkLgoKQWgsIGJ1dCBJIG5lZWQgdG8gcmVjYWxsIHRoZSBjb250ZXh0LiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0IGNlcnRhaW4gY29kZSBwYXRocyBhcmUgKmltcG9zc2libGUqIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBUaGF0IGxlYWRzIG1lIHRvIGFzayAtIElzIE1BTkEgZW11bGF0ZWQgaW4gc29tZXRoaW5nIGxpa2UgUUVNVT8gSSBkb24mIzM5O3QgcmVjYWxsIGl0IGJlaW5nLiBUaGUgdGhpbmcgaXMsIFN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIgYW5kIHRoYXQmIzM5O3MgYW4gaW1wb3J0YW50IGRldGFpbC4gSXQgKmNhbiogZW11bGF0ZSBQQ0kgZGV2aWNlcy4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gVGhpcyBtZWFucywgUENJIGRyaXZlcnMgKmFyZSogYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciAoYHN5el9wY2lfZGV2aWNlYCksIHdoaWNoIGFsbG93cyBhcmJpdHJhcnkgUENJIGRldmljZSBpbmplY3Rpb24uIE5vdyBJIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBQQ0kgSURzIGZvciBNQU5BLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01PRFVMRV9ERVZJQ0VfVEFCTEUuKnBjaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNTYwPW1vZHVsZV9leGl0KG1hbmFfZHJpdmVyX2V4aXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjU2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1NjI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1hbmFfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjU2My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTYwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIGFuZCB3cml0aW5nIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRGF0YSBTY2hlbWEqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEZpcnN0LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0xldCYjMzk7cyBzZWUgYG1hbmFfaWRfdGFibGVgLiYjMzQ7IFRoaXMgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgSSYjMzk7bSBhYm91dCB0byBhc3Nlc3MgYSBkYXRhYmFzZSB0YWJsZSwgbGlrZWx5IGNydWNpYWwgZm9yIHNvbWUgcHJvY2Vzcy4gVGhlIHVzZSBvZiAmIzM0O3NlZSYjMzQ7IGhpbnRzIHRoYXQgSSYjMzk7bSBtZW50YWxseSB2aXN1YWxpemluZyBvciByZXRyaWV2aW5nIHRoZSB0YWJsZSYjMzk7cyBzdHJ1Y3R1cmUgaW4gbXkgbWluZCwgb3IgcGVyaGFwcyBwcmVwYXJpbmcgdG8gcXVlcnkgb3IgaW5zcGVjdCBpdCBkaXJlY3RseS4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBpdHMgc3RydWN0dXJlLCBrZXkgZmllbGRzLCBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gdGhlIGJyb2FkZXIgZGF0YSBtb2RlbC4gSXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBzb21lIGRlZXBlciBpbnZlc3RpZ2F0aW9uLiBUaGlzIGNvdWxkIGJlIGRhdGEgYW5hbHlzaXMsIGRlYnVnZ2luZyBhIHJlbGF0ZWQgcHJvY2Vzcywgb3IgbWF5YmUgZXZlbiBwcmVwYXJpbmcgdG8gd3JpdGUgc29tZSBjb2RlIHRoYXQgdXRpbGl6ZXMgdGhpcyB0YWJsZS4gVGhlIHNwZWNpZmljIG5hbWUgYG1hbmFfaWRfdGFibGVgIGl0c2VsZiBvZmZlcnMgYSBoaW50OyBJdCBsaWtlbHkgaG9sZHMgbWFwcGluZ3MgYmV0d2VlbiBkaWZmZXJlbnQgaWRlbnRpZmljYXRpb24gbWV0aG9kcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFuYV9pZF90YWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNDg1PXN0YXRpYyB2b2lkIG1hbmFfZ2Rfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0OTk6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1hbmFfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDAtXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NSUNST1NPRlQsIE1BTkFfUEZfREVWSUNFX0lEKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI1MDY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hbmFfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUwNy1cdC5uYW1lXHRcdD0gXCYjMzQ7bWFuYVwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1MDg6XHQuaWRfdGFibGVcdD0gbWFuYV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDktXHQucHJvYmVcdFx0PSBtYW5hX2dkX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI1NjA9bW9kdWxlX2V4aXQobWFuYV9kcml2ZXJfZXhpdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjU2MjpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbWFuYV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTYzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipQQ0kgRHJpdmVyIEZ1enppbmcgU3RyYXRlZ3kqKgoKUmlnaHQsIHNvIHRoaXMgaXMgYSB0eXBpY2FsIFBDSSBkcml2ZXIsIGFuZCB0aGUgcGxhbiBpcyB0byBoaXQgaXQgd2l0aCBTeXprYWxsZXIsIHNwZWNpZmljYWxseSB1c2luZyBgc3l6X3BjaV9kZXZpY2VgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUga2V5IGZ1bmN0aW9ucyBTeXprYWxsZXIgd2lsbCB0YXJnZXQgZm9yIGZ1enppbmcuIFNlZW1zIGxpa2UgdGhlIGNvcmUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBhcmU6IGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYCwgYG1hbmFfaXJxX3NldHVwX2xpbmVhcmAsIGBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlYCwgYW5kIGBtYW5hX2dkX3NldHVwX2lycXNgLgoKVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBkbyBJIGdldCB0byBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2A/IEkmIzM5O2xsIHRyYWNlIGl0cyBjYWxsIHBhdGguIE9rYXksIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzYCwgd2hpY2ggc3VnZ2VzdHMgaXQmIzM5O3MgcGFydCBvZiBhbiBpbml0aWFsaXphdGlvbiBvciBzZXR1cCBzZXF1ZW5jZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlICp0aGF0KiBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbS4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHRyaWdnZXJpbmcgdGhlIHZ1bG5lcmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hbmFfZ2Rfc2V0dXBfcmVtYWluaW5nX2lycXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjExMj1zdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfaHdjX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxNDQ6c3RhdGljIGludCBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjIwMj1zdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjI0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIyNDU6XHRlcnIgPSBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjI0Ni1cdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGVlcCBEaXZlOiBgbWFuYV9nZF9zZXR1cGAgQ2FsbGVkIGJ5IGBtYW5hX2dkX3Byb2JlYCoqCgpBbHJpZ2h0LCBzbyB0aGUgYXJjaGl0ZWN0dXJlIGhlcmUgaXMgY3J5c3RhbCBjbGVhci4gSSYjMzk7bSBzZWVpbmcgYSB2ZXJ5IHNwZWNpZmljLCBkZWxpYmVyYXRlIGZsb3cgb2YgZXhlY3V0aW9uLiBXZSYjMzk7dmUgZ290IGBtYW5hX2dkX3Byb2JlYCwgd2hpY2ggaXMsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBhIHByb2JpbmcgZnVuY3Rpb24uIEl0cyBqb2IgaXMgbGlrZWx5IHRvIGRldGVjdCBzb21ldGhpbmcg4oCTIHBlcmhhcHMgaGFyZHdhcmUgcHJlc2VuY2UsIGRyaXZlciBjYXBhYmlsaXRpZXMsIGNvbmZpZ3VyYXRpb24sIG9yIHNvbWUgY3JpdGljYWwgc3lzdGVtIHN0YXRlIHJlbGF0ZWQgdG8gJiMzNDttYW5hJiMzNDsgKHdoYXRldmVyIHRoYXQgaXMg4oCTIGxpa2VseSBncmFwaGljcyBvciBtZW1vcnkgYWxsb2NhdGlvbikuCgpUaGUgZmFjdCB0aGF0IGBtYW5hX2dkX3Byb2JlYCBjYWxscyBgbWFuYV9nZF9zZXR1cGAgaW1tZWRpYXRlbHkgc2lnbmFscyBhIGtleSBkZXNpZ24gcHJpbmNpcGxlOiB0aGUgcHJvYmUgKmVzdGFibGlzaGVzIHRoZSBlbnZpcm9ubWVudCogZm9yIHRoZSBzZXR1cC4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlIGluIGFueSByb2J1c3Qgc3lzdGVtLiBGaXJzdCwgeW91IGFzc2VzczsgdGhlbiwgeW91IGNvbmZpZ3VyZS4gVGhlIHByb2Jpbmcgc3RlcCB3aWxsIHByb2JhYmx5IGdhdGhlciBhbGwgdGhlIG5lY2Vzc2FyeSBwYXJhbWV0ZXJzLCBjb25maWd1cmF0aW9ucywgYW5kIHBvdGVudGlhbGx5IGFueSByZXNvdXJjZSBhbGxvY2F0aW9ucyBvciBpbml0aWFsaXphdGlvbnMsIGJlZm9yZSB0aGVuIGNhbGxpbmcgdGhlIGBzZXR1cGAgZnVuY3Rpb24uIFRoZSBgc2V0dXBgIGZ1bmN0aW9uLCB0aGVuLCB3aWxsIGFjdHVhbGx5IHBlcmZvcm0gYWxsIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBhbmQgY29uZmlndXJhdGlvbiB3b3JrIGJhc2VkIG9uIHdoYXRldmVyIGBwcm9iZWAgaGFzIGRpc2NvdmVyZWQuIFRoZSBzZXR1cCB3b3VsZCBoYW5kbGUgYW55IGRldmljZSBzcGVjaWZpY3MsIHJlc291cmNlIGFsbG9jYXRpb25zLCBvciBnZW5lcmFsIHN5c3RlbSBzZXR1cC4KCkl0JiMzOTtzIGEgbmljZSwgY2xlYW4gc2VwYXJhdGlvbiBvZiBjb25jZXJucy4gYG1hbmFfZ2RfcHJvYmVgIGhhbmRsZXMgZGlzY292ZXJ5LCBhbmQgdGhlbiBgbWFuYV9nZF9zZXR1cGAgaGFuZGxlcyBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHdoYXQgdGhlIHByb2JlIGZpbmRzLiBUaGlzIG1ha2VzIHRoZSBjb2RlIGZhciBtb3JlIG1vZHVsYXIgYW5kIG1haW50YWluYWJsZSwgc29tZXRoaW5nIEkgYWx3YXlzIGFwcHJlY2lhdGUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBib3RoIGZ1bmN0aW9uIGRlZmluaXRpb25zIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcywgYnV0IHRoZSBoaWdoLWxldmVsIGRlc2lnbiBpcyBhbHJlYWR5IHNvdW5kLiBJIGNhbiBwcm9iYWJseSBtYWtlIGEgZ29vZCBwcmVkaWN0aW9uIGJhc2VkIG9uIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hbmFfZ2Rfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MTc3PXN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5MS1cdCAqIE1TSS1YIGFsbG9jYXRpb247IG9uIG5vbi1keW4gcGxhdGZvcm1zIG1zaV9zaGFyaW5nIGlzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxOTI6XHQgKiB1bmNvbmRpdGlvbmFsbHkgdHJ1ZSAoc2V0IGluIG1hbmFfZ2Rfc2V0dXBfaHdjX2lycXMpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTkzLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MTk1Mj1zdGF0aWMgdm9pZCBtYW5hX2lycV9zZXR1cF9saW5lYXIodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxOTY1OnN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTY2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjA1MzpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMDU0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjExMjpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfaHdjX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTEzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjEzMjpcdGVyciA9IG1hbmFfZ2Rfc2V0dXBfaXJxcyhwZGV2LCBudmVjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxMzMtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxNDQ6c3RhdGljIGludCBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxNjg6XHRlcnIgPSBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHBkZXYsIG1heF9pcnFzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxNjktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTIxNzc9c3RhdGljIHZvaWQgbWFuYV9nZF9yZW1vdmVfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMjAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjIwMjpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMjAzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjIyMjpcdGVyciA9IG1hbmFfZ2Rfc2V0dXBfaHdjX2lycXMocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMjIzLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMjQ1Olx0ZXJyID0gbWFuYV9nZF9zZXR1cF9yZW1haW5pbmdfaXJxcyhwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyNDYtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjMwMj1zdGF0aWMgaW50IG1hbmFfZ2RfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIzNTQ6XHRlcnIgPSBtYW5hX2dkX3NldHVwKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM1NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM5Ni1cdCAqIEhhcmR3YXJlIGNvdWxkIGJlIGluIHJlY292ZXJ5IG1vZGUgYW5kIHRoZSBIV0MgcmV0dXJucyBUSU1FRE9VVCBvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjM5NzpcdCAqIEVQUk9UTyBmcm9tIG1hbmFfZ2Rfc2V0dXAoKSwgbWFuYV9wcm9iZSgpIG9yIG1hbmFfcmRtYV9wcm9iZSgpLCBvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM5OC1cdCAqIHdlIHJlY2VpdmVkIGEgaGFyZHdhcmUgcmVzZXQgZXZlbnQgb3ZlciBIV0MgaW50ZXJydXB0LiBJbiB0aGlzIGNhc2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjQ2MD1pbnQgbWFuYV9nZF9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0NjU6XHRlcnIgPSBtYW5hX2dkX3NldHVwKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ2Ni1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTUFOQSBEcml2ZXIgQ29kZSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O3ZlIHRyYWNlZCB0aGUgY2FsbCBzdGFjayBoZXJlLiBgbWFuYV9nZF9wcm9iZWAgdHJpZ2dlcnMgYG1hbmFfZ2Rfc2V0dXBgLCB3aGljaCB0aGVuIGNhbGxzIGBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzYCBhbmQsIGNydWNpYWxseSwgYG1hbmFfZ2Rfc2V0dXBfZHluX2lycXNgLiBUaGF0JiMzOTtzIGEgY2xlYXIgcGF0aCB0aGF0IGEgUENJIGZ1enplciBjb3VsZCBkZWZpbml0ZWx5IGhpdCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpHaXZlbiB0aGF0LCBJIG5lZWQgdG8gemVybyBpbiBvbiBhIGZldyBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5OiBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2AsIG9idmlvdXNseSwgYWxvbmcgd2l0aCBgbWFuYV9pcnFfc2V0dXBfbGluZWFyYCwgYG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmVgLCBhbmQgYG1hbmFfZ2Rfc2V0dXBfaXJxc2AuIFRob3NlIGFyZSB0aGUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGlzIHBhdGguCgpOb3csIGJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIHRoZSBjb2RlLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGltcG9ydGFudDogYXJlIHRoZXJlIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcywgYmVzaWRlcyB0aGUgb2J2aW91cyBvbmUsIHRoYXQgd291bGQgcHJldmVudCBtZSBmcm9tIHJlYWNoaW5nIHRoZXNlIGZ1bmN0aW9ucz8gTGV0JiMzOTtzIHNlZS4uLiBgTUlDUk9TT0ZUX01BTkFgIHNlZW1zIHRvIGJlIHRoZSBtYWluIGNvbmZpZywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEFoLCBnb29kLiBUaGUgcmVsZXZhbnQgcGF0Y2ggaXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jYC4gQWxyaWdodCwgc28gSSBzaG91bGQgYmUgZm9jdXNlZCBvbiBtYWtpbmcgc3VyZSB0aGF0IGBNSUNST1NPRlRfTUFOQWAgaXMgYWxsIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1JQ1JPU09GVF9NQU5BJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9NSUNST1NPRlRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MTg6Y29uZmlnIE1JQ1JPU09GVF9NQU5BXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ3NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgTkVUX1ZFTkRPUl9NSUNST1NPRlRgIENvbnRleHQqKgoKT2theSwgc28gdGhlIHByb21wdCBkaXJlY3RzIG1lIHRvIGNvbnNpZGVyIGBORVRfVkVORE9SX01JQ1JPU09GVGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBwYXJzZSB3aGF0IHRoYXQgY29udGV4dCBtZWFucyBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdCBiZWluZyBmbGFnZ2VkIGZvciByZXZpZXcuICBUaGlzIHN1Z2dlc3RzIHdlJiMzOTtyZSBsaWtlbHkgbG9va2luZyBhdCBuZXR3b3JrLXJlbGF0ZWQgYWN0aXZpdHksIHNwZWNpZmljYWxseSBzb21ldGhpbmcgdGhhdCYjMzk7cyBvcmlnaW5hdGluZyBmcm9tLCBvciBhc3NvY2lhdGVkIHdpdGgsIE1pY3Jvc29mdC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzcGVjaWZpYyBhc3BlY3QgcmVxdWlyaW5nIGF0dGVudGlvbi4gSXMgdGhpcyBhIHBvdGVudGlhbCBzZWN1cml0eSBjb25jZXJuPyBJcyB0aGlzIGFuIGFsZXJ0IGJhc2VkIG9uIHRyYWZmaWMgdm9sdW1lPyBJcyB0aGVyZSBhIGtub3duIHZ1bG5lcmFiaWxpdHksIG9yIG1heWJlIGl0JiMzOTtzIHJlbGF0ZWQgdG8gc29tZSBjb25maWd1cmF0aW9uIGF1ZGl0PyBJIG5lZWQgbW9yZSBkYXRhIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgaXNzdWUuIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBuZXR3b3JrIHRyYWZmaWMsIGxvb2sgYXQgdGhlIHByb3RvY29scyBpbnZvbHZlZCwgYW55IHJlbGF0ZWQgbG9ncyBvciBhbGVydHMsIGFuZCBwb3NzaWJseSB0aGUgY29udGV4dCBvZiB0aGUgZW52aXJvbm1lbnQgdGhlIHRyYWZmaWMgaXMgaW4uICBNeSBleHBlcmllbmNlIHNheXMgdGhhdCBqdXN0IHNlZWluZyB0aGlzIGVudHJ5IGlzIG5vdCBlbm91Z2gsIGFzIG9mdGVuIE1pY3Jvc29mdCBoYXMgYSBsYXJnZSBhbmQgY29tcGxleCBmb290cHJpbnQgaW4gbWFueSBpbmZyYXN0cnVjdHVyZSBzdGFja3MuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb2xsZWN0IHRoZSBzdXBwb3J0aW5nIGV2aWRlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1ZFTkRPUl9NSUNST1NPRlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy00LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6NTpjb25maWcgTkVUX1ZFTkRPUl9NSUNST1NPRlRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTYtXHRib29sIFwmIzM0O01pY3Jvc29mdCBOZXR3b3JrIERldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgyMwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogTWljcm9zb2Z0IE5ldHdvcmsgQWRhcHRlciBhbmQgTUFOQSoqCgpBbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBORVRfVkVORE9SX01JQ1JPU09GVGAgYW5kIGBNSUNST1NPRlRfTUFOQWAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZGV0ZXJtaW5lIGlmIGBQQ0lfTVNJYCBpcyBhbHNvIGVzc2VudGlhbCB0byBjb25maWd1cmUgcHJvcGVybHkuIEkga25vdyBNQU5BIHV0aWxpemVzIE1TSS1YLCB3aGljaCBpcyBhIG1vcmUgYWR2YW5jZWQgaW50ZXJydXB0IG1lY2hhbmlzbS4gVGhlcmVmb3JlLCBpdCBtYWtlcyBzZW5zZSB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBBaGEhIEl0IGxvb2tzIGxpa2UgYE1JQ1JPU09GVF9NQU5BYCAqZG9lcyogZGVwZW5kIG9uIGBQQ0lfTVNJYC4gU28sIEkmIzM5O2xsIG5lZWQgdG8gZW5zdXJlIHRoYXQgYFBDSV9NU0lgIGlzIGNvcnJlY3RseSBjb25maWd1cmVkIGlmIEkgd2FudCBgTUlDUk9TT0ZUX01BTkFgIHRvIGZ1bmN0aW9uIGFzIGV4cGVjdGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGNvbmZpZ3VyZSB0aG9zZSB0d28gYXBwcm9wcmlhdGVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbi4qUENJX01TSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyMDpcdGRlcGVuZHMgb24gUENJX01TSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjEtXHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXHUwMDI2XHUwMDI2ICFDUFVfQklHX0VORElBTilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMTUKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogNDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNQU5BIERyaXZlciBJUlEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGF0IGBQQ0lfTVNJYCBpcyBhIGtleSBkZXBlbmRlbmN5IOKAkyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgcHJpbWFyeSBjb25maWd1cmF0aW9uIHRhcmdldCBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIGBNSUNST1NPRlRfTUFOQWAuIFRoYXQmIzM5O3MgdGhlIG1haW4gZHJpdmVyIGNvbmZpZyB0byBlbmFibGUuCgpOb3csIGxldCYjMzk7cyBnZXQgZG93biB0byB0aGUgZnVuY3Rpb25zIHRoaXMgcGF0Y2ggaXMgcmVhbGx5IGFib3V0LiBJJiMzOTt2ZSBnb3QgdG8gZm9jdXMgb246IGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYCwgYG1hbmFfaXJxX3NldHVwX2xpbmVhcmAsIGBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlYCwgYG1hbmFfZ2Rfc2V0dXBfaXJxc2AsIGFuZCBJIHNlZSBoZXJlIHRoYXQgYG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlc2AgaXMgYWxzbyBtb2RpZmllZCwgc28gSeKAmW0gYWRkaW5nIHRoYXQgdG8gdGhlIGxpc3QgdG9vLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCBob3cgdGhlIE1BTkEgZHJpdmVyIGhhbmRsZXMgSVJRIHNldHVwLiBXZSYjMzk7cmUgc2VlaW5nIGNoYW5nZXMgdG8gYm90aCBhIGxpbmVhciBJUlEgc2V0dXAgYW5kIGEgTlVNQS1hd2FyZSBJUlEgc2V0dXAg4oCTIHRoZSBsYXR0ZXIgaGFzIGJlZW4gcmVuYW1lZC9tb2RpZmllZCwgaXQgc2VlbXMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBwcm9iYWJseSBhY2Nlc3NpYmxlIHZpYSB0aGUgUENJIGRldmljZSBlbXVsYXRpb24sIHdoaWNoIG1ha2VzIGl0IHBlcmZlY3QgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gZW5zdXJlIElSUSBhbGxvY2F0aW9uIGFuZCBhZmZpbml0eSBoYW5kbGluZyBhcmUgY29ycmVjdC4KCkZvciBjb25maWd1cmF0aW9uLCBJJiMzOTtsbCBkZWZpbml0ZWx5IGJlIGxvb2tpbmcgYXQgYE1JQ1JPU09GVF9NQU5BYCBhbmQgYE5FVF9WRU5ET1JfTUlDUk9TT0ZUYC4KCkp1c3QgdG8gY29uZmlybSB0aGUgZnVuY3Rpb24gbmFtZXMsIGxldCBtZSBkb3VibGUtY2hlY2suIE9rYXksIHllcywgaXQmIzM5O3MgYG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSwgYm9vbCBza2lwX2ZpcnN0X2NwdSlgLCBgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilgLCBgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpYCwgYG1hbmFfZ2Rfc2V0dXBfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpYCwgYW5kIGBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpYC4gWWVwLCB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0byB0YXJnZXQuCgpBbHJpZ2h0LCBJIGRvbuKAmXQgc2VlIGFueSBvdGhlciByZWxldmFudCBmdW5jdGlvbnMgaGVyZS4gSSB0aGluayBJJiMzOTttIHJlYWR5IHRvIGNhbGwgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfVkVORE9SX01JQ1JPU09GVCYjMzQ7LAogICAgJiMzNDtNSUNST1NPRlRfTUFOQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hbmFfZ2Rfc2V0dXBfZHluX2lycXMmIzM0OywKICAgICYjMzQ7bWFuYV9pcnFfc2V0dXBfbGluZWFyJiMzNDssCiAgICAmIzM0O21hbmFfaXJxX3NldHVwX251bWFfYXdhcmUmIzM0OywKICAgICYjMzQ7bWFuYV9nZF9zZXR1cF9pcnFzJiMzNDssCiAgICAmIzM0O21hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSVJRIHNldHVwIGxvZ2ljIGluIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHNwZWNpZmljYWxseSBhZGRpbmcgbGluZWFyIElSUSBzZXR1cCBhbmQgbW9kaWZ5aW5nIHRoZSBOVU1BLWF3YXJlIElSUSBzZXR1cC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgZW11bGF0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IElSUSBhbGxvY2F0aW9uIGFuZCBhZmZpbml0eSBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9NSUNST1NPRlQmIzM0OywKICAgICYjMzQ7TUlDUk9TT0ZUX01BTkEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYW5hX2dkX3NldHVwX2R5bl9pcnFzJiMzNDssCiAgICAmIzM0O21hbmFfaXJxX3NldHVwX2xpbmVhciYjMzQ7LAogICAgJiMzNDttYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlJiMzNDssCiAgICAmIzM0O21hbmFfZ2Rfc2V0dXBfaXJxcyYjMzQ7LAogICAgJiMzNDttYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElSUSBzZXR1cCBsb2dpYyBpbiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGxpbmVhciBJUlEgc2V0dXAgYW5kIG1vZGlmeWluZyB0aGUgTlVNQS1hd2FyZSBJUlEgc2V0dXAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIGVtdWxhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBJUlEgYWxsb2NhdGlvbiBhbmQgYWZmaW5pdHkgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MTo1MS4wMzg5MDcyNjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTM4Nzk5MDYzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfVkVORE9SX01JQ1JPU09GVFwiLFxuICAgIFwiTUlDUk9TT0ZUX01BTkFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYW5hX2dkX3NldHVwX2R5bl9pcnFzXCIsXG4gICAgXCJtYW5hX2lycV9zZXR1cF9saW5lYXJcIixcbiAgICBcIm1hbmFfaXJxX3NldHVwX251bWFfYXdhcmVcIixcbiAgICBcIm1hbmFfZ2Rfc2V0dXBfaXJxc1wiLFxuICAgIFwibWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElSUSBzZXR1cCBsb2dpYyBpbiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGxpbmVhciBJUlEgc2V0dXAgYW5kIG1vZGlmeWluZyB0aGUgTlVNQS1hd2FyZSBJUlEgc2V0dXAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIGVtdWxhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBJUlEgYWxsb2NhdGlvbiBhbmQgYWZmaW5pdHkgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUxOjUxLjAzODkxODEzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc1Mzg5Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzkwNTI0MWI4Njk2MTMwMmJhM2RiYmJlYjEzNTA1N2JmYmY5OWU5MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1biAyNCAwNzo1MTo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXFxuaW5kZXggYTBmZGQwNTJkN2YxNjMuLmU4YjdmZmI0N2ViOTgyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcXG5AQCAtMjEwLDYgKzIxMCw4IEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHQvKiBJZiBkeW5hbWljIGFsbG9jYXRpb24gaXMgZW5hYmxlZCB3ZSBoYXZlIGFscmVhZHkgYWxsb2NhdGVkXFxuIFxcdFxcdCAqIGh3YyBtc2lcXG4rXFx0XFx0ICogQWxzbywgd2UgbWFrZSBzdXJlIGluIHRoaXMgY2FzZSB0aGUgZm9sbG93aW5nIGlzIGFsd2F5cyB0cnVlXFxuK1xcdFxcdCAqIChudW1fbXNpeF91c2FibGUgLSAxIEhXQykgXFx1MDAzYz0gbnVtX29ubGluZV9jcHVzKClcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGdjLVxcdTAwM2VudW1fbXNpeF91c2FibGUgPSBtaW4ocmVzcC5tYXhfbXNpeCwgbnVtX29ubGluZV9jcHVzKCkgKyAxKTtcXG4gXFx0fVxcbkBAIC0xOTA5LDggKzE5MTEsOCBAQCB2b2lkIG1hbmFfZ2RfZnJlZV9yZXNfbWFwKHN0cnVjdCBnZG1hX3Jlc291cmNlICpyKVxcbiAgKiBkbyB0aGUgc2FtZSB0aGluZy5cXG4gICovXFxuIFxcbi1zdGF0aWMgaW50IGlycV9zZXR1cCh1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4sIGludCBub2RlLFxcbi1cXHRcXHQgICAgIGJvb2wgc2tpcF9maXJzdF9jcHUpXFxuK3N0YXRpYyBpbnQgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSh1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4sXFxuK1xcdFxcdFxcdFxcdCAgICAgaW50IG5vZGUsIGJvb2wgc2tpcF9maXJzdF9jcHUpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IGNwdW1hc2sgKm5leHQsICpwcmV2ID0gY3B1X25vbmVfbWFzaztcXG4gXFx0Y3B1bWFza192YXJfdCBjcHVzIF9fZnJlZShmcmVlX2NwdW1hc2tfdmFyKTtcXG5AQCAtMTk0NiwxMSArMTk0OCwyNCBAQCBzdGF0aWMgaW50IGlycV9zZXR1cCh1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4sIGludCBub2RlLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBjcHVzX3JlYWRfbG9jaygpIGhlbGQgKi9cXG4rc3RhdGljIHZvaWQgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilcXG4re1xcbitcXHRpbnQgY3B1O1xcbitcXG4rXFx0Zm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHtcXG4rXFx0XFx0aWYgKGxlbiA9PSAwKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoKmlycXMrKywgY3B1bWFza19vZihjcHUpKTtcXG4rXFx0XFx0bGVuLS07XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcXG4ge1xcbiBcXHRzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYyA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gXFx0c3RydWN0IGdkbWFfaXJxX2NvbnRleHQgKmdpYztcXG4tXFx0Ym9vbCBza2lwX2ZpcnN0X2NwdSA9IGZhbHNlO1xcbiBcXHRpbnQgKmlycXMsIGVyciwgaSwgbXNpO1xcbiBcXG4gXFx0aXJxcyA9IGttYWxsb2Nfb2JqcyhpbnQsIG52ZWMpO1xcbkBAIC0xOTU4LDEwICsxOTczLDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0LypcXG4rXFx0ICogSW4gdGhpcyBmdW5jdGlvbiwgbnVtX21zaXhfdXNhYmxlID0gSFdDIElSUSArIFF1ZXVlIElSUS5cXG4rXFx0ICogbnZlYyBpcyBvbmx5IFF1ZXVlIElSUSAoSFdDIGFscmVhZHkgc2V0dXApLlxcbiBcXHQgKiBXaGlsZSBwcm9jZXNzaW5nIHRoZSBuZXh0IHBjaSBpcnEgdmVjdG9yLCB3ZSBzdGFydCB3aXRoIGluZGV4IDEsXFxuIFxcdCAqIGFzIElSUSB2ZWN0b3IgYXQgaW5kZXggMCBpcyBhbHJlYWR5IHByb2Nlc3NlZCBmb3IgSFdDLlxcbiBcXHQgKiBIb3dldmVyLCB0aGUgcG9wdWxhdGlvbiBvZiBpcnFzIGFycmF5IHN0YXJ0cyB3aXRoIGluZGV4IDAsIHRvIGJlXFxuLVxcdCAqIGZ1cnRoZXIgdXNlZCBpbiBpcnFfc2V0dXAoKVxcbitcXHQgKiBmdXJ0aGVyIHVzZWQgaW4gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSgpXFxuIFxcdCAqL1xcbiBcXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2M9IG52ZWM7IGkrKykge1xcbiBcXHRcXHRtc2kgPSBpO1xcbkBAIC0xOTc1LDE4ICsxOTkyLDUxIEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXFxuIFxcdH1cXG4gXFxuIFxcdC8qXFxuLVxcdCAqIFdoZW4gY2FsbGluZyBpcnFfc2V0dXAoKSBmb3IgZHluYW1pY2FsbHkgYWRkZWQgSVJRcywgaWYgbnVtYmVyIG9mXFxuLVxcdCAqIENQVXMgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIGFsbG9jYXRlZCBNU0ktWCwgd2UgbmVlZCB0byBza2lwIHRoZVxcbi1cXHQgKiBmaXJzdCBDUFUgc2libGluZyBncm91cCBzaW5jZSB0aGV5IGFyZSBhbHJlYWR5IGFmZmluaXRpemVkIHRvIEhXQyBJUlFcXG4rXFx0ICogV2hlbiBjYWxsaW5nIG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUoKSBmb3IgZHluYW1pY2FsbHkgYWRkZWQgSVJRcyxcXG4rXFx0ICogaWYgbnVtYmVyIG9mIENQVXMgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIGFsbG9jYXRlZCBNU0ktWCwgd2UgbmVlZCB0b1xcbitcXHQgKiBza2lwIHRoZSBmaXJzdCBDUFUgc2libGluZyBncm91cCBzaW5jZSB0aGV5IGFyZSBhbHJlYWR5IGFmZmluaXRpemVkIHRvXFxuK1xcdCAqIEhXQyBJUlFcXG4gXFx0ICovXFxuIFxcdGNwdXNfcmVhZF9sb2NrKCk7XFxuLVxcdGlmIChnYy1cXHUwMDNlbnVtX21zaXhfdXNhYmxlIFxcdTAwM2M9IG51bV9vbmxpbmVfY3B1cygpKVxcbi1cXHRcXHRza2lwX2ZpcnN0X2NwdSA9IHRydWU7XFxuK1xcdGlmIChnYy1cXHUwMDNlbnVtX21zaXhfdXNhYmxlIFxcdTAwM2M9IG51bV9vbmxpbmVfY3B1cygpKSB7XFxuK1xcdFxcdGVyciA9IG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUoaXJxcywgbnZlYywgZ2MtXFx1MDAzZW51bWFfbm9kZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0dHJ1ZSk7XFxuK1xcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0Y3B1c19yZWFkX3VubG9jaygpO1xcbitcXHRcXHRcXHRnb3RvIGZyZWVfaXJxO1xcbitcXHRcXHR9XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIFdoZW4gbnVtX21zaXhfdXNhYmxlIGFyZSBtb3JlIHRoYW4gbnVtX29ubGluZV9jcHVzLCBvdXJcXG4rXFx0XFx0ICogcXVldWUgSVJRcyBzaG91bGQgYmUgZXF1YWwgdG8gbnVtIG9mIG9ubGluZSB2Q1BVcy5cXG4rXFx0XFx0ICogV2UgdHJ5IHRvIG1ha2Ugc3VyZSBxdWV1ZSBJUlFzIHNwcmVhZCBhY3Jvc3MgYWxsIHZDUFVzLlxcbitcXHRcXHQgKiBJbiBzdWNoIGEgY2FzZSBOVU1BIG9yIENQVSBjb3JlIGFmZmluaXR5IGRvZXMgbm90IG1hdHRlci5cXG4rXFx0XFx0ICogTm90ZTogaW4gdGhpcyBjYXNlIHRoZSB0b3RhbCBtYW5hIElSUSBzaG91bGQgYWx3YXlzIGJlXFxuK1xcdFxcdCAqIG51bV9vbmxpbmVfY3B1cyArIDEuIFRoZSBmaXJzdCBIV0MgSVJRIGlzIGFscmVhZHkgaGFuZGxlZFxcbitcXHRcXHQgKiBpbiBIV0Mgc2V0dXAgY2FsbHNcXG4rXFx0XFx0ICogSG93ZXZlciwgaWYgQ1BVcyB3ZW50IG9mZmxpbmUgc2luY2UgbnVtX21zaXhfdXNhYmxlIHdhc1xcbitcXHRcXHQgKiBjb21wdXRlZCwgcXVldWUgSVJRcyB3aWxsIGJlIG1vcmUgdGhhbiBudW1fb25saW5lX2NwdXMoKS5cXG4rXFx0XFx0ICogSW4gc3VjaCBjYXNlcyByZW1haW5pbmcgZXh0cmEgSVJRcyB3aWxsIHJldGFpbiB0aGVpciBkZWZhdWx0XFxuK1xcdFxcdCAqIGFmZmluaXR5LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aW50IGZpcnN0X3VuYXNzaWduZWQgPSBudW1fb25saW5lX2NwdXMoKTtcXG4gXFxuLVxcdGVyciA9IGlycV9zZXR1cChpcnFzLCBudmVjLCBnYy1cXHUwMDNlbnVtYV9ub2RlLCBza2lwX2ZpcnN0X2NwdSk7XFxuLVxcdGlmIChlcnIpIHtcXG4tXFx0XFx0Y3B1c19yZWFkX3VubG9jaygpO1xcbi1cXHRcXHRnb3RvIGZyZWVfaXJxO1xcbitcXHRcXHRpZiAobnZlYyBcXHUwMDNlIGZpcnN0X3VuYXNzaWduZWQpIHtcXG4rXFx0XFx0XFx0Y2hhciBidWZbMzJdO1xcbitcXG4rXFx0XFx0XFx0aWYgKGZpcnN0X3VuYXNzaWduZWQgPT0gbnZlYyAtIDEpXFxuK1xcdFxcdFxcdFxcdHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFxcXCIlZFxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCBmaXJzdF91bmFzc2lnbmVkKTtcXG4rXFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBcXFwiJWQtJWRcXFwiLFxcbitcXHRcXHRcXHRcXHRcXHQgZmlyc3RfdW5hc3NpZ25lZCwgbnZlYyAtIDEpO1xcbitcXG4rXFx0XFx0XFx0ZGV2X2RiZyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHRcXFwiTUFOQSBJUlEgaW5kaWNlcyAjJXMgd2lsbCByZXRhaW4gdGhlIGRlZmF1bHQgQ1BVIGFmZmluaXR5XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRidWYpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRtYW5hX2lycV9zZXR1cF9saW5lYXIoaXJxcywgbnZlYyk7XFxuIFxcdH1cXG4gXFxuIFxcdGNwdXNfcmVhZF91bmxvY2soKTtcXG5AQCAtMjA0MSw3ICsyMDkxLDcgQEAgc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKVxcbiBcXHRcXHRudmVjIC09IDE7XFxuIFxcdH1cXG4gXFxuLVxcdGVyciA9IGlycV9zZXR1cChpcnFzLCBudmVjLCBnYy1cXHUwMDNlbnVtYV9ub2RlLCBmYWxzZSk7XFxuK1xcdGVyciA9IG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUoaXJxcywgbnZlYywgZ2MtXFx1MDAzZW51bWFfbm9kZSwgZmFsc2UpO1xcbiBcXHRpZiAoZXJyKSB7XFxuIFxcdFxcdGNwdXNfcmVhZF91bmxvY2soKTtcXG4gXFx0XFx0Z290byBmcmVlX2lycTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6NTEuNzE1Mzg2ODQ5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODcxMTQ5MjcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfVkVORE9SX01JQ1JPU09GVFwiLFxuICAgIFwiTUlDUk9TT0ZUX01BTkFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYW5hX2dkX3NldHVwX2R5bl9pcnFzXCIsXG4gICAgXCJtYW5hX2lycV9zZXR1cF9saW5lYXJcIixcbiAgICBcIm1hbmFfaXJxX3NldHVwX251bWFfYXdhcmVcIixcbiAgICBcIm1hbmFfZ2Rfc2V0dXBfaXJxc1wiLFxuICAgIFwibWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElSUSBzZXR1cCBsb2dpYyBpbiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGxpbmVhciBJUlEgc2V0dXAgYW5kIG1vZGlmeWluZyB0aGUgTlVNQS1hd2FyZSBJUlEgc2V0dXAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIGVtdWxhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBJUlEgYWxsb2NhdGlvbiBhbmQgYWZmaW5pdHkgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzkwNTI0MWI4Njk2MTMwMmJhM2RiYmJlYjEzNTA1N2JmYmY5OWU5MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDA3OjUxOjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uY1xuaW5kZXggYTBmZGQwNTJkN2YxNjMuLmU4YjdmZmI0N2ViOTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXG5AQCAtMjEwLDYgKzIxMCw4IEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0fSBlbHNlIHtcbiBcdFx0LyogSWYgZHluYW1pYyBhbGxvY2F0aW9uIGlzIGVuYWJsZWQgd2UgaGF2ZSBhbHJlYWR5IGFsbG9jYXRlZFxuIFx0XHQgKiBod2MgbXNpXG4rXHRcdCAqIEFsc28sIHdlIG1ha2Ugc3VyZSBpbiB0aGlzIGNhc2UgdGhlIGZvbGxvd2luZyBpcyBhbHdheXMgdHJ1ZVxuK1x0XHQgKiAobnVtX21zaXhfdXNhYmxlIC0gMSBIV0MpIFx1MDAzYz0gbnVtX29ubGluZV9jcHVzKClcbiBcdFx0ICovXG4gXHRcdGdjLVx1MDAzZW51bV9tc2l4X3VzYWJsZSA9IG1pbihyZXNwLm1heF9tc2l4LCBudW1fb25saW5lX2NwdXMoKSArIDEpO1xuIFx0fVxuQEAgLTE5MDksOCArMTkxMSw4IEBAIHZvaWQgbWFuYV9nZF9mcmVlX3Jlc19tYXAoc3RydWN0IGdkbWFfcmVzb3VyY2UgKnIpXG4gICogZG8gdGhlIHNhbWUgdGhpbmcuXG4gICovXG4gXG4tc3RhdGljIGludCBpcnFfc2V0dXAodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSxcbi1cdFx0ICAgICBib29sIHNraXBfZmlyc3RfY3B1KVxuK3N0YXRpYyBpbnQgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSh1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4sXG4rXHRcdFx0XHQgICAgIGludCBub2RlLCBib29sIHNraXBfZmlyc3RfY3B1KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBjcHVtYXNrICpuZXh0LCAqcHJldiA9IGNwdV9ub25lX21hc2s7XG4gXHRjcHVtYXNrX3Zhcl90IGNwdXMgX19mcmVlKGZyZWVfY3B1bWFza192YXIpO1xuQEAgLTE5NDYsMTEgKzE5NDgsMjQgQEAgc3RhdGljIGludCBpcnFfc2V0dXAodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSxcbiBcdHJldHVybiAwO1xuIH1cbiBcbisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIGNwdXNfcmVhZF9sb2NrKCkgaGVsZCAqL1xuK3N0YXRpYyB2b2lkIG1hbmFfaXJxX3NldHVwX2xpbmVhcih1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4pXG4re1xuK1x0aW50IGNwdTtcbitcbitcdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XG4rXHRcdGlmIChsZW4gPT0gMClcbitcdFx0XHRicmVhaztcbitcbitcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcysrLCBjcHVtYXNrX29mKGNwdSkpO1xuK1x0XHRsZW4tLTtcbitcdH1cbit9XG4rXG4gc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcbiB7XG4gXHRzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYyA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiBcdHN0cnVjdCBnZG1hX2lycV9jb250ZXh0ICpnaWM7XG4tXHRib29sIHNraXBfZmlyc3RfY3B1ID0gZmFsc2U7XG4gXHRpbnQgKmlycXMsIGVyciwgaSwgbXNpO1xuIFxuIFx0aXJxcyA9IGttYWxsb2Nfb2JqcyhpbnQsIG52ZWMpO1xuQEAgLTE5NTgsMTAgKzE5NzMsMTIgQEAgc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHQvKlxuK1x0ICogSW4gdGhpcyBmdW5jdGlvbiwgbnVtX21zaXhfdXNhYmxlID0gSFdDIElSUSArIFF1ZXVlIElSUS5cbitcdCAqIG52ZWMgaXMgb25seSBRdWV1ZSBJUlEgKEhXQyBhbHJlYWR5IHNldHVwKS5cbiBcdCAqIFdoaWxlIHByb2Nlc3NpbmcgdGhlIG5leHQgcGNpIGlycSB2ZWN0b3IsIHdlIHN0YXJ0IHdpdGggaW5kZXggMSxcbiBcdCAqIGFzIElSUSB2ZWN0b3IgYXQgaW5kZXggMCBpcyBhbHJlYWR5IHByb2Nlc3NlZCBmb3IgSFdDLlxuIFx0ICogSG93ZXZlciwgdGhlIHBvcHVsYXRpb24gb2YgaXJxcyBhcnJheSBzdGFydHMgd2l0aCBpbmRleCAwLCB0byBiZVxuLVx0ICogZnVydGhlciB1c2VkIGluIGlycV9zZXR1cCgpXG4rXHQgKiBmdXJ0aGVyIHVzZWQgaW4gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSgpXG4gXHQgKi9cbiBcdGZvciAoaSA9IDE7IGkgXHUwMDNjPSBudmVjOyBpKyspIHtcbiBcdFx0bXNpID0gaTtcbkBAIC0xOTc1LDE4ICsxOTkyLDUxIEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG4gXHR9XG4gXG4gXHQvKlxuLVx0ICogV2hlbiBjYWxsaW5nIGlycV9zZXR1cCgpIGZvciBkeW5hbWljYWxseSBhZGRlZCBJUlFzLCBpZiBudW1iZXIgb2Zcbi1cdCAqIENQVXMgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIGFsbG9jYXRlZCBNU0ktWCwgd2UgbmVlZCB0byBza2lwIHRoZVxuLVx0ICogZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0byBIV0MgSVJRXG4rXHQgKiBXaGVuIGNhbGxpbmcgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSgpIGZvciBkeW5hbWljYWxseSBhZGRlZCBJUlFzLFxuK1x0ICogaWYgbnVtYmVyIG9mIENQVXMgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIGFsbG9jYXRlZCBNU0ktWCwgd2UgbmVlZCB0b1xuK1x0ICogc2tpcCB0aGUgZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0b1xuK1x0ICogSFdDIElSUVxuIFx0ICovXG4gXHRjcHVzX3JlYWRfbG9jaygpO1xuLVx0aWYgKGdjLVx1MDAzZW51bV9tc2l4X3VzYWJsZSBcdTAwM2M9IG51bV9vbmxpbmVfY3B1cygpKVxuLVx0XHRza2lwX2ZpcnN0X2NwdSA9IHRydWU7XG4rXHRpZiAoZ2MtXHUwMDNlbnVtX21zaXhfdXNhYmxlIFx1MDAzYz0gbnVtX29ubGluZV9jcHVzKCkpIHtcbitcdFx0ZXJyID0gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZShpcnFzLCBudmVjLCBnYy1cdTAwM2VudW1hX25vZGUsXG4rXHRcdFx0XHRcdFx0dHJ1ZSk7XG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4rXHRcdFx0Z290byBmcmVlX2lycTtcbitcdFx0fVxuK1x0fSBlbHNlIHtcbitcdFx0LypcbitcdFx0ICogV2hlbiBudW1fbXNpeF91c2FibGUgYXJlIG1vcmUgdGhhbiBudW1fb25saW5lX2NwdXMsIG91clxuK1x0XHQgKiBxdWV1ZSBJUlFzIHNob3VsZCBiZSBlcXVhbCB0byBudW0gb2Ygb25saW5lIHZDUFVzLlxuK1x0XHQgKiBXZSB0cnkgdG8gbWFrZSBzdXJlIHF1ZXVlIElSUXMgc3ByZWFkIGFjcm9zcyBhbGwgdkNQVXMuXG4rXHRcdCAqIEluIHN1Y2ggYSBjYXNlIE5VTUEgb3IgQ1BVIGNvcmUgYWZmaW5pdHkgZG9lcyBub3QgbWF0dGVyLlxuK1x0XHQgKiBOb3RlOiBpbiB0aGlzIGNhc2UgdGhlIHRvdGFsIG1hbmEgSVJRIHNob3VsZCBhbHdheXMgYmVcbitcdFx0ICogbnVtX29ubGluZV9jcHVzICsgMS4gVGhlIGZpcnN0IEhXQyBJUlEgaXMgYWxyZWFkeSBoYW5kbGVkXG4rXHRcdCAqIGluIEhXQyBzZXR1cCBjYWxsc1xuK1x0XHQgKiBIb3dldmVyLCBpZiBDUFVzIHdlbnQgb2ZmbGluZSBzaW5jZSBudW1fbXNpeF91c2FibGUgd2FzXG4rXHRcdCAqIGNvbXB1dGVkLCBxdWV1ZSBJUlFzIHdpbGwgYmUgbW9yZSB0aGFuIG51bV9vbmxpbmVfY3B1cygpLlxuK1x0XHQgKiBJbiBzdWNoIGNhc2VzIHJlbWFpbmluZyBleHRyYSBJUlFzIHdpbGwgcmV0YWluIHRoZWlyIGRlZmF1bHRcbitcdFx0ICogYWZmaW5pdHkuXG4rXHRcdCAqL1xuK1x0XHRpbnQgZmlyc3RfdW5hc3NpZ25lZCA9IG51bV9vbmxpbmVfY3B1cygpO1xuIFxuLVx0ZXJyID0gaXJxX3NldHVwKGlycXMsIG52ZWMsIGdjLVx1MDAzZW51bWFfbm9kZSwgc2tpcF9maXJzdF9jcHUpO1xuLVx0aWYgKGVycikge1xuLVx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4tXHRcdGdvdG8gZnJlZV9pcnE7XG4rXHRcdGlmIChudmVjIFx1MDAzZSBmaXJzdF91bmFzc2lnbmVkKSB7XG4rXHRcdFx0Y2hhciBidWZbMzJdO1xuK1xuK1x0XHRcdGlmIChmaXJzdF91bmFzc2lnbmVkID09IG52ZWMgLSAxKVxuK1x0XHRcdFx0c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXCIlZFwiLFxuK1x0XHRcdFx0XHQgZmlyc3RfdW5hc3NpZ25lZCk7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXCIlZC0lZFwiLFxuK1x0XHRcdFx0XHQgZmlyc3RfdW5hc3NpZ25lZCwgbnZlYyAtIDEpO1xuK1xuK1x0XHRcdGRldl9kYmcoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHRcIk1BTkEgSVJRIGluZGljZXMgIyVzIHdpbGwgcmV0YWluIHRoZSBkZWZhdWx0IENQVSBhZmZpbml0eVxcblwiLFxuK1x0XHRcdFx0YnVmKTtcbitcdFx0fVxuK1xuK1x0XHRtYW5hX2lycV9zZXR1cF9saW5lYXIoaXJxcywgbnZlYyk7XG4gXHR9XG4gXG4gXHRjcHVzX3JlYWRfdW5sb2NrKCk7XG5AQCAtMjA0MSw3ICsyMDkxLDcgQEAgc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKVxuIFx0XHRudmVjIC09IDE7XG4gXHR9XG4gXG4tXHRlcnIgPSBpcnFfc2V0dXAoaXJxcywgbnZlYywgZ2MtXHUwMDNlbnVtYV9ub2RlLCBmYWxzZSk7XG4rXHRlcnIgPSBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlKGlycXMsIG52ZWMsIGdjLVx1MDAzZW51bWFfbm9kZSwgZmFsc2UpO1xuIFx0aWYgKGVycikge1xuIFx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4gXHRcdGdvdG8gZnJlZV9pcnE7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MTo1MS43MTUzODg3NzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM0NTA0NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1BTkEgRHJpdmVyIElSUSBBZmZpbml0eSBDb25maWd1cmF0aW9uIC0gQSBSZWZpbmVtZW50KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNgLiBNeSBpbml0aWFsIHJlYWQgaW5kaWNhdGVzIHRoaXMgaXMgYSBmb2N1c2VkIHVwZGF0ZSB0byB0aGUgTUFOQSBkcml2ZXIuIEkgc2VlIHRoZXkncmUgcmVuYW1pbmcgYGlycV9zZXR1cGAgdG8gYG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmVgLCB3aGljaCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGF0dGVudGlvbi4gVGhhdCBzdWdnZXN0cyBhIGRlbGliZXJhdGUgZWZmb3J0IHRvIGludGVncmF0ZSBOVU1BIGF3YXJlbmVzcyBpbnRvIHRoZSBJUlEgc2V0dXAsIGxpa2VseSBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9uIE5VTUEgYXJjaGl0ZWN0dXJlcy4gVGhlIGludHJvZHVjdGlvbiBvZiBgbWFuYV9pcnFfc2V0dXBfbGluZWFyYCBpcyBhbHNvIGludGVyZXN0aW5nOyBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhhdCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBjb250ZXh0LlxuXG5UaGUgbWVhdCBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2AsIHdoaWNoIGlzIHdoZXJlIHRoZXkncmUgbW9kaWZ5aW5nIHRoZSBJUlEgYWZmaW5pdHkgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBkZWZpbml0ZWx5IHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0IHN1Z2dlc3RzIGEgbW9yZSBzb3BoaXN0aWNhdGVkIG9yIGNvbmZpZ3VyYWJsZSBhcHByb2FjaCB0byBhc3NpZ25pbmcgSVJRcyB0byBDUFVzIG9yIENQVSBjb3Jlcy4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIHRoaXMgaW4gbGlnaHQgb2YgTUFOQSdzIGludGVuZGVkIHVzZSBjYXNlIGFuZCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaXQncyBkZXNpZ25lZCBmb3IgdG8gdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHNoaWZ0LlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBpdCdzIHdvcnRoIGNoZWNraW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE1BTkEuIEFyZSB0aGVyZSBhbnkgbmV3IGtub2JzIG9yIHBhcmFtZXRlcnMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgZXhpc3Rpbmcgb3B0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCBvciBkZXByZWNhdGVkPyBUaGlzIGNvbnRleHQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBwcmFjdGljYWwgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MTo1NS45NDk4OTgwNTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQwNjA4NTMwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYW5hX2dkX3NldHVwX2R5bl9pcnFzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTE5NTI9c3RhdGljIHZvaWQgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTk2NTpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfZHluX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjE0ND1zdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfcmVtYWluaW5nX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxNjg6XFx0ZXJyID0gbWFuYV9nZF9zZXR1cF9keW5faXJxcyhwZGV2LCBtYXhfaXJxcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE2OS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MTo1OS4zNTU5OTU5MDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYxNDcxNjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqRmluZGluZyB0aGUgTUFOQSBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBsb2NhdGUgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggTUFOQS4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIHNlYXJjaDsgaXQncyBhIHBpbnBvaW50aW5nIGV4ZXJjaXNlLiBJJ20gbG9va2luZyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IGRpY3RhdGVzIHRoZSBidWlsZCBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCB1bHRpbWF0ZWx5LCB0aGUgYmVoYXZpb3Igb2YgdGhlIE1BTkEgY29tcG9uZW50IHdpdGhpbiB0aGUgc3lzdGVtLiBJcyBpdCBhIHRvcC1sZXZlbCBLY29uZmlnLCBuZXN0bGVkIGluIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGlyZWN0b3JpZXMsIG9yIHBlcmhhcHMgd2l0aGluIGEgc3ViLW1vZHVsZT8gT3IgbWF5YmUgaXQncyBpbnRlZ3JhdGVkIHdpdGggYSBtb3JlIGdlbmVyYWxpemVkIGZyYW1ld29yaz9cblxuTXkgbWVudGFsIGNoZWNrbGlzdCBzdGFydHM6IGZpcnN0LCB0aGUgb2J2aW91cyBwbGFjZXMuLi4gY29tbW9uIGFyZWFzLCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UuIE5leHQsIEkgbmVlZCB0byBjb25zaWRlciBhbnkgY3VzdG9tIGJ1aWxkIHN5c3RlbXMgb3IgbWV0YS1sYXllcnMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZCDigJMgd2hlcmUgYXJlIHRoZSBidWlsZCBzeXN0ZW1zIGluY2x1ZGluZyB0aGVzZT8gQSBxdWljayBncmVwIG1pZ2h0IGJlIGluIG9yZGVyLCBzY2FubmluZyBmb3IgXCJNQU5BXCIgd2l0aGluIHRoZSBidWlsZCB0cmVlLCBmb2N1c2luZyBvbiBmaWxlcyB3aXRoIHRoZSBgLmNvbmZpZ2Agb3IgYEtjb25maWdgIGV4dGVuc2lvbnMuIElmIHRoYXQgZG9lc24ndCBpbW1lZGlhdGVseSB5aWVsZCByZXN1bHRzLCBJJ2xsIG5lZWQgdG8gZXhwYW5kIG15IHNlYXJjaCwgdGhpbmtpbmcgYWJvdXQgaG93IE1BTkEgaXMgaW50ZWdyYXRlZDsgaXRzIGRlcGVuZGVuY3kgY2hhaW4sIGlmIGFueS4gSSdtIHByb2JhYmx5IGxvb2tpbmcgYXQgYSByZWN1cnNpdmUgYXBwcm9hY2gsIGRpdmluZyB0aHJvdWdoIHZhcmlvdXMgZGlyZWN0b3JpZXMgYW5kIHBvdGVudGlhbCBtb2R1bGVzIHVudGlsIEkgZmluZCB0aGUgZGVmaW5pbmcgS2NvbmZpZy4gVGhlIGdvYWwgaXNuJ3QganVzdCB0byAqZmluZCogaXQsIGJ1dCB0byB1bmRlcnN0YW5kIGl0cyBsb2NhdGlvbiB3aXRoaW4gdGhlIHdpZGVyIHByb2plY3Qgc3RydWN0dXJlLiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBNQU5BIGlzIGNvbmZpZ3VyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjowMi44MTc0NzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI5MDExMDk1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUlDUk9TT0ZUX01BTkFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoxODpjb25maWcgTUlDUk9TT0ZUX01BTkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTI6MDYuMTA3NTkxNjExWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA0MzU0NDQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiB0aGUgTUFOQSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBNSUNST1NPRlRfTUFOQWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBJJ20gc2VlaW5nIGNoYW5nZXMgdG8gYG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlc2AsIGBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlYCAod2hpY2ggd2FzIHJlbmFtZWQgZnJvbSBgaXJxX3NldHVwYCksIGFuZCB0aGUgYWRkaXRpb24gb2YgYG1hbmFfaXJxX3NldHVwX2xpbmVhcmAgYWxvbmcgd2l0aCBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2AgYW5kIGBtYW5hX2dkX3NldHVwX2lycXNgLiBBbGwgb2YgdGhlc2UgYXBwZWFyIHRvIGJlIGludGVncmFsIHRvIHRoZSBNQU5BIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIGFuZCBzZXR1cCBzZXF1ZW5jZS5cblxuTXkgbmV4dCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBDb25zaWRlcmluZyB0aGF0IE1BTkEgaXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgYW5kIHRoYXQgaXQgaXMgYSBQQ0kgZGV2aWNlLCB0aGlzIGRvZXMgbWFrZSBhIGRpZmZlcmVuY2UuIERpcmVjdCBmdXp6aW5nIHdpdGggc29tZXRoaW5nIGxpa2UgU3l6a2FsbGVyIG1pZ2h0IGJlIHRyaWNreSB1bmxlc3Mgd2UncmUgcnVubmluZyBpbiBBenVyZSBvciBoYXZlIGEgZ29vZCBlbXVsYXRvci4gSG93ZXZlciwgYmVpbmcgYSBQQ0kgZHJpdmVyLCBpdCBzaG91bGQsIGluIHRoZW9yeSwgYmUgcmVhY2hhYmxlIHRocm91Z2ggUENJIGZ1enppbmcgaWYgdGhlIGNvcnJlY3QgUENJIElEIGlzIHRyaWdnZXJlZC5cblxuQWgsIGJ1dCBJIG5lZWQgdG8gcmVjYWxsIHRoZSBjb250ZXh0LiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0IGNlcnRhaW4gY29kZSBwYXRocyBhcmUgKmltcG9zc2libGUqIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBUaGF0IGxlYWRzIG1lIHRvIGFzayAtIElzIE1BTkEgZW11bGF0ZWQgaW4gc29tZXRoaW5nIGxpa2UgUUVNVT8gSSBkb24ndCByZWNhbGwgaXQgYmVpbmcuIFRoZSB0aGluZyBpcywgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciBhbmQgdGhhdCdzIGFuIGltcG9ydGFudCBkZXRhaWwuIEl0ICpjYW4qIGVtdWxhdGUgUENJIGRldmljZXMuIFRoYXQgY2hhbmdlcyB0aGluZ3MuIFRoaXMgbWVhbnMsIFBDSSBkcml2ZXJzICphcmUqIGFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggU3l6a2FsbGVyJ3MgUENJIGZ1enplciAoYHN5el9wY2lfZGV2aWNlYCksIHdoaWNoIGFsbG93cyBhcmJpdHJhcnkgUENJIGRldmljZSBpbmplY3Rpb24uIE5vdyBJIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBQQ0kgSURzIGZvciBNQU5BLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjYwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUyOjEzLjE1MTEzOTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUzOTk4MzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEUuKnBjaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjU2MD1tb2R1bGVfZXhpdChtYW5hX2RyaXZlcl9leGl0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1NjI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1hbmFfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1NjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUyOjEzLjQwNTE0OTk1M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjg5MjE2MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCBhbmQgd3JpdGluZyBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgRGF0YSBTY2hlbWEqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBGaXJzdCwgSSdtIHRoaW5raW5nLCBcIkxldCdzIHNlZSBgbWFuYV9pZF90YWJsZWAuXCIgVGhpcyBpbW1lZGlhdGVseSBzdWdnZXN0cyBJJ20gYWJvdXQgdG8gYXNzZXNzIGEgZGF0YWJhc2UgdGFibGUsIGxpa2VseSBjcnVjaWFsIGZvciBzb21lIHByb2Nlc3MuIFRoZSB1c2Ugb2YgXCJzZWVcIiBoaW50cyB0aGF0IEknbSBtZW50YWxseSB2aXN1YWxpemluZyBvciByZXRyaWV2aW5nIHRoZSB0YWJsZSdzIHN0cnVjdHVyZSBpbiBteSBtaW5kLCBvciBwZXJoYXBzIHByZXBhcmluZyB0byBxdWVyeSBvciBpbnNwZWN0IGl0IGRpcmVjdGx5LiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3IgaXRzIHN0cnVjdHVyZSwga2V5IGZpZWxkcywgYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBicm9hZGVyIGRhdGEgbW9kZWwuIEl0J3MgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBzb21lIGRlZXBlciBpbnZlc3RpZ2F0aW9uLiBUaGlzIGNvdWxkIGJlIGRhdGEgYW5hbHlzaXMsIGRlYnVnZ2luZyBhIHJlbGF0ZWQgcHJvY2Vzcywgb3IgbWF5YmUgZXZlbiBwcmVwYXJpbmcgdG8gd3JpdGUgc29tZSBjb2RlIHRoYXQgdXRpbGl6ZXMgdGhpcyB0YWJsZS4gVGhlIHNwZWNpZmljIG5hbWUgYG1hbmFfaWRfdGFibGVgIGl0c2VsZiBvZmZlcnMgYSBoaW50OyBJdCBsaWtlbHkgaG9sZHMgbWFwcGluZ3MgYmV0d2VlbiBkaWZmZXJlbnQgaWRlbnRpZmljYXRpb24gbWV0aG9kcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU2MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUyOjE2LjQ3NDA3NDk5OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwODk4OTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hbmFfaWRfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0ODU9c3RhdGljIHZvaWQgbWFuYV9nZF9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ5OTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWFuYV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDAtXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGX0RFVklDRV9JRCkgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI1MDY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hbmFfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDctXFx0Lm5hbWVcXHRcXHQ9IFxcXCJtYW5hXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTA4OlxcdC5pZF90YWJsZVxcdD0gbWFuYV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTA5LVxcdC5wcm9iZVxcdFxcdD0gbWFuYV9nZF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI1NjA9bW9kdWxlX2V4aXQobWFuYV9kcml2ZXJfZXhpdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjU2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTYyOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtYW5hX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTYzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjoxNi43NDQ5OTM2MTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI0NTE1OTI1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKlBDSSBEcml2ZXIgRnV6emluZyBTdHJhdGVneSoqXG5cblJpZ2h0LCBzbyB0aGlzIGlzIGEgdHlwaWNhbCBQQ0kgZHJpdmVyLCBhbmQgdGhlIHBsYW4gaXMgdG8gaGl0IGl0IHdpdGggU3l6a2FsbGVyLCBzcGVjaWZpY2FsbHkgdXNpbmcgYHN5el9wY2lfZGV2aWNlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGtleSBmdW5jdGlvbnMgU3l6a2FsbGVyIHdpbGwgdGFyZ2V0IGZvciBmdXp6aW5nLiBTZWVtcyBsaWtlIHRoZSBjb3JlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlOiBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2AsIGBtYW5hX2lycV9zZXR1cF9saW5lYXJgLCBgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZWAsIGFuZCBgbWFuYV9nZF9zZXR1cF9pcnFzYC5cblxuVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBkbyBJIGdldCB0byBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2A/IEknbGwgdHJhY2UgaXRzIGNhbGwgcGF0aC4gT2theSwgaXQncyBjYWxsZWQgZnJvbSBgbWFuYV9nZF9zZXR1cF9yZW1haW5pbmdfaXJxc2AsIHdoaWNoIHN1Z2dlc3RzIGl0J3MgcGFydCBvZiBhbiBpbml0aWFsaXphdGlvbiBvciBzZXR1cCBzZXF1ZW5jZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlICp0aGF0KiBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbS4gVGhhdCdzIHRoZSBrZXkgdG8gdHJpZ2dlcmluZyB0aGUgdnVsbmVyYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI0MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjoyNC45OTAxNTYwODNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Mjc2NjM4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMTEyPXN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9od2NfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjE0NDpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfcmVtYWluaW5nX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMjAyPXN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjI0NTpcXHRlcnIgPSBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyNDYtXFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjoyNS4xMzI5MzE0MTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzODEyMjEzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRlZXAgRGl2ZTogYG1hbmFfZ2Rfc2V0dXBgIENhbGxlZCBieSBgbWFuYV9nZF9wcm9iZWAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYXJjaGl0ZWN0dXJlIGhlcmUgaXMgY3J5c3RhbCBjbGVhci4gSSdtIHNlZWluZyBhIHZlcnkgc3BlY2lmaWMsIGRlbGliZXJhdGUgZmxvdyBvZiBleGVjdXRpb24uIFdlJ3ZlIGdvdCBgbWFuYV9nZF9wcm9iZWAsIHdoaWNoIGlzLCBhcyB0aGUgbmFtZSBzdWdnZXN0cywgYSBwcm9iaW5nIGZ1bmN0aW9uLiBJdHMgam9iIGlzIGxpa2VseSB0byBkZXRlY3Qgc29tZXRoaW5nIOKAkyBwZXJoYXBzIGhhcmR3YXJlIHByZXNlbmNlLCBkcml2ZXIgY2FwYWJpbGl0aWVzLCBjb25maWd1cmF0aW9uLCBvciBzb21lIGNyaXRpY2FsIHN5c3RlbSBzdGF0ZSByZWxhdGVkIHRvIFwibWFuYVwiICh3aGF0ZXZlciB0aGF0IGlzIOKAkyBsaWtlbHkgZ3JhcGhpY3Mgb3IgbWVtb3J5IGFsbG9jYXRpb24pLlxuXG5UaGUgZmFjdCB0aGF0IGBtYW5hX2dkX3Byb2JlYCBjYWxscyBgbWFuYV9nZF9zZXR1cGAgaW1tZWRpYXRlbHkgc2lnbmFscyBhIGtleSBkZXNpZ24gcHJpbmNpcGxlOiB0aGUgcHJvYmUgKmVzdGFibGlzaGVzIHRoZSBlbnZpcm9ubWVudCogZm9yIHRoZSBzZXR1cC4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlIGluIGFueSByb2J1c3Qgc3lzdGVtLiBGaXJzdCwgeW91IGFzc2VzczsgdGhlbiwgeW91IGNvbmZpZ3VyZS4gVGhlIHByb2Jpbmcgc3RlcCB3aWxsIHByb2JhYmx5IGdhdGhlciBhbGwgdGhlIG5lY2Vzc2FyeSBwYXJhbWV0ZXJzLCBjb25maWd1cmF0aW9ucywgYW5kIHBvdGVudGlhbGx5IGFueSByZXNvdXJjZSBhbGxvY2F0aW9ucyBvciBpbml0aWFsaXphdGlvbnMsIGJlZm9yZSB0aGVuIGNhbGxpbmcgdGhlIGBzZXR1cGAgZnVuY3Rpb24uIFRoZSBgc2V0dXBgIGZ1bmN0aW9uLCB0aGVuLCB3aWxsIGFjdHVhbGx5IHBlcmZvcm0gYWxsIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBhbmQgY29uZmlndXJhdGlvbiB3b3JrIGJhc2VkIG9uIHdoYXRldmVyIGBwcm9iZWAgaGFzIGRpc2NvdmVyZWQuIFRoZSBzZXR1cCB3b3VsZCBoYW5kbGUgYW55IGRldmljZSBzcGVjaWZpY3MsIHJlc291cmNlIGFsbG9jYXRpb25zLCBvciBnZW5lcmFsIHN5c3RlbSBzZXR1cC5cblxuSXQncyBhIG5pY2UsIGNsZWFuIHNlcGFyYXRpb24gb2YgY29uY2VybnMuIGBtYW5hX2dkX3Byb2JlYCBoYW5kbGVzIGRpc2NvdmVyeSwgYW5kIHRoZW4gYG1hbmFfZ2Rfc2V0dXBgIGhhbmRsZXMgY29uZmlndXJhdGlvbiBiYXNlZCBvbiB3aGF0IHRoZSBwcm9iZSBmaW5kcy4gVGhpcyBtYWtlcyB0aGUgY29kZSBmYXIgbW9yZSBtb2R1bGFyIGFuZCBtYWludGFpbmFibGUsIHNvbWV0aGluZyBJIGFsd2F5cyBhcHByZWNpYXRlLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBib3RoIGZ1bmN0aW9uIGRlZmluaXRpb25zIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcywgYnV0IHRoZSBoaWdoLWxldmVsIGRlc2lnbiBpcyBhbHJlYWR5IHNvdW5kLiBJIGNhbiBwcm9iYWJseSBtYWtlIGEgZ29vZCBwcmVkaWN0aW9uIGJhc2VkIG9uIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MTUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjoyOC45NzEwNTczMzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzU5ODc5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYW5hX2dkX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xNzc9c3RhdGljIGludCBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTEtXFx0ICogTVNJLVggYWxsb2NhdGlvbjsgb24gbm9uLWR5biBwbGF0Zm9ybXMgbXNpX3NoYXJpbmcgaXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxOTI6XFx0ICogdW5jb25kaXRpb25hbGx5IHRydWUgKHNldCBpbiBtYW5hX2dkX3NldHVwX2h3Y19pcnFzKS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTMtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xOTUyPXN0YXRpYyB2b2lkIG1hbmFfaXJxX3NldHVwX2xpbmVhcih1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE5NjU6c3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIwNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjA1MzpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjA1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxMTI6c3RhdGljIGludCBtYW5hX2dkX3NldHVwX2h3Y19pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMTMyOlxcdGVyciA9IG1hbmFfZ2Rfc2V0dXBfaXJxcyhwZGV2LCBudmVjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTMzLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjE0NDpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfcmVtYWluaW5nX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxNjg6XFx0ZXJyID0gbWFuYV9nZF9zZXR1cF9keW5faXJxcyhwZGV2LCBtYXhfaXJxcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE2OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjE3Nz1zdGF0aWMgdm9pZCBtYW5hX2dkX3JlbW92ZV9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMjAyOnN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMjAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjIyMjpcXHRlcnIgPSBtYW5hX2dkX3NldHVwX2h3Y19pcnFzKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyMjMtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjI0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMjQ1OlxcdGVyciA9IG1hbmFfZ2Rfc2V0dXBfcmVtYWluaW5nX2lycXMocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjI0Ni1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMzAyPXN0YXRpYyBpbnQgbWFuYV9nZF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjM1NDpcXHRlcnIgPSBtYW5hX2dkX3NldHVwKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzNTUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzOTYtXFx0ICogSGFyZHdhcmUgY291bGQgYmUgaW4gcmVjb3ZlcnkgbW9kZSBhbmQgdGhlIEhXQyByZXR1cm5zIFRJTUVET1VUIG9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjM5NzpcXHQgKiBFUFJPVE8gZnJvbSBtYW5hX2dkX3NldHVwKCksIG1hbmFfcHJvYmUoKSBvciBtYW5hX3JkbWFfcHJvYmUoKSwgb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMzk4LVxcdCAqIHdlIHJlY2VpdmVkIGEgaGFyZHdhcmUgcmVzZXQgZXZlbnQgb3ZlciBIV0MgaW50ZXJydXB0LiBJbiB0aGlzIGNhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNDYwPWludCBtYW5hX2dkX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0NjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ2NTpcXHRlcnIgPSBtYW5hX2dkX3NldHVwKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0NjYtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTI6MjkuMTk4NjYxNjIxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTU5NjMwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTUFOQSBEcml2ZXIgQ29kZSBQYXRoKipcblxuT2theSwgc28gSSd2ZSB0cmFjZWQgdGhlIGNhbGwgc3RhY2sgaGVyZS4gYG1hbmFfZ2RfcHJvYmVgIHRyaWdnZXJzIGBtYW5hX2dkX3NldHVwYCwgd2hpY2ggdGhlbiBjYWxscyBgbWFuYV9nZF9zZXR1cF9yZW1haW5pbmdfaXJxc2AgYW5kLCBjcnVjaWFsbHksIGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYC4gVGhhdCdzIGEgY2xlYXIgcGF0aCB0aGF0IGEgUENJIGZ1enplciBjb3VsZCBkZWZpbml0ZWx5IGhpdCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuXG5cbkdpdmVuIHRoYXQsIEkgbmVlZCB0byB6ZXJvIGluIG9uIGEgZmV3IGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHk6IGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYCwgb2J2aW91c2x5LCBhbG9uZyB3aXRoIGBtYW5hX2lycV9zZXR1cF9saW5lYXJgLCBgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZWAsIGFuZCBgbWFuYV9nZF9zZXR1cF9pcnFzYC4gVGhvc2UgYXJlIHRoZSBwcmltZSBjYW5kaWRhdGVzIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoaXMgcGF0aC5cblxuTm93LCBiZWZvcmUgSSBkaWcgdG9vIGRlZXAgaW50byB0aGUgY29kZSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBpbXBvcnRhbnQ6IGFyZSB0aGVyZSBhbnkgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMsIGJlc2lkZXMgdGhlIG9idmlvdXMgb25lLCB0aGF0IHdvdWxkIHByZXZlbnQgbWUgZnJvbSByZWFjaGluZyB0aGVzZSBmdW5jdGlvbnM/IExldCdzIHNlZS4uLiBgTUlDUk9TT0ZUX01BTkFgIHNlZW1zIHRvIGJlIHRoZSBtYWluIGNvbmZpZywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gQWgsIGdvb2QuIFRoZSByZWxldmFudCBwYXRjaCBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNgLiBBbHJpZ2h0LCBzbyBJIHNob3VsZCBiZSBmb2N1c2VkIG9uIG1ha2luZyBzdXJlIHRoYXQgYE1JQ1JPU09GVF9NQU5BYCBpcyBhbGwgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODY0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUyOjMzLjYxNDYyNzcwNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc1NTI3ODEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSUNST1NPRlRfTUFOQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xNj1pZiBORVRfVkVORE9SX01JQ1JPU09GVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjE4OmNvbmZpZyBNSUNST1NPRlRfTUFOQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjozMy44OTAxNjA5MTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4NjU4MDYyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBORVRfVkVORE9SX01JQ1JPU09GVGAgQ29udGV4dCoqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgZGlyZWN0cyBtZSB0byBjb25zaWRlciBgTkVUX1ZFTkRPUl9NSUNST1NPRlRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgcGFyc2Ugd2hhdCB0aGF0IGNvbnRleHQgbWVhbnMgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXQgYmVpbmcgZmxhZ2dlZCBmb3IgcmV2aWV3LiAgVGhpcyBzdWdnZXN0cyB3ZSdyZSBsaWtlbHkgbG9va2luZyBhdCBuZXR3b3JrLXJlbGF0ZWQgYWN0aXZpdHksIHNwZWNpZmljYWxseSBzb21ldGhpbmcgdGhhdCdzIG9yaWdpbmF0aW5nIGZyb20sIG9yIGFzc29jaWF0ZWQgd2l0aCwgTWljcm9zb2Z0LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIGFzcGVjdCByZXF1aXJpbmcgYXR0ZW50aW9uLiBJcyB0aGlzIGEgcG90ZW50aWFsIHNlY3VyaXR5IGNvbmNlcm4/IElzIHRoaXMgYW4gYWxlcnQgYmFzZWQgb24gdHJhZmZpYyB2b2x1bWU/IElzIHRoZXJlIGEga25vd24gdnVsbmVyYWJpbGl0eSwgb3IgbWF5YmUgaXQncyByZWxhdGVkIHRvIHNvbWUgY29uZmlndXJhdGlvbiBhdWRpdD8gSSBuZWVkIG1vcmUgZGF0YSB0byB1bmRlcnN0YW5kIHRoZSB1bmRlcmx5aW5nIGlzc3VlLiBJJ2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBuZXR3b3JrIHRyYWZmaWMsIGxvb2sgYXQgdGhlIHByb3RvY29scyBpbnZvbHZlZCwgYW55IHJlbGF0ZWQgbG9ncyBvciBhbGVydHMsIGFuZCBwb3NzaWJseSB0aGUgY29udGV4dCBvZiB0aGUgZW52aXJvbm1lbnQgdGhlIHRyYWZmaWMgaXMgaW4uICBNeSBleHBlcmllbmNlIHNheXMgdGhhdCBqdXN0IHNlZWluZyB0aGlzIGVudHJ5IGlzIG5vdCBlbm91Z2gsIGFzIG9mdGVuIE1pY3Jvc29mdCBoYXMgYSBsYXJnZSBhbmQgY29tcGxleCBmb290cHJpbnQgaW4gbWFueSBpbmZyYXN0cnVjdHVyZSBzdGFja3MuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb2xsZWN0IHRoZSBzdXBwb3J0aW5nIGV2aWRlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDc1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTI6MzcuOTc2Nzc4NDk4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDY5NTc0NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6NTpjb25maWcgTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy02LVxcdGJvb2wgXFxcIk1pY3Jvc29mdCBOZXR3b3JrIERldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUyOjM4LjE4Mzc5MjU2M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ1OTMyNjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXM6IE1pY3Jvc29mdCBOZXR3b3JrIEFkYXB0ZXIgYW5kIE1BTkEqKlxuXG5BbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBORVRfVkVORE9SX01JQ1JPU09GVGAgYW5kIGBNSUNST1NPRlRfTUFOQWAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZGV0ZXJtaW5lIGlmIGBQQ0lfTVNJYCBpcyBhbHNvIGVzc2VudGlhbCB0byBjb25maWd1cmUgcHJvcGVybHkuIEkga25vdyBNQU5BIHV0aWxpemVzIE1TSS1YLCB3aGljaCBpcyBhIG1vcmUgYWR2YW5jZWQgaW50ZXJydXB0IG1lY2hhbmlzbS4gVGhlcmVmb3JlLCBpdCBtYWtlcyBzZW5zZSB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBBaGEhIEl0IGxvb2tzIGxpa2UgYE1JQ1JPU09GVF9NQU5BYCAqZG9lcyogZGVwZW5kIG9uIGBQQ0lfTVNJYC4gU28sIEknbGwgbmVlZCB0byBlbnN1cmUgdGhhdCBgUENJX01TSWAgaXMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgaWYgSSB3YW50IGBNSUNST1NPRlRfTUFOQWAgdG8gZnVuY3Rpb24gYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gY29uZmlndXJlIHRob3NlIHR3byBhcHByb3ByaWF0ZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODIzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTI6NDEuMzI5NzI5NDA2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzMxNjk4MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qUENJX01TSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyMDpcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXFx1MDAyNlxcdTAwMjYgIUNQVV9CSUdfRU5ESUFOKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1Mjo0MS41NjI5MDU2MzFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODY4Mzk0OTkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTUFOQSBEcml2ZXIgSVJRIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYFBDSV9NU0lgIGlzIGEga2V5IGRlcGVuZGVuY3kg4oCTIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE15IHByaW1hcnkgY29uZmlndXJhdGlvbiB0YXJnZXQgaXMgZGVmaW5pdGVseSBnb2luZyB0byBiZSBgTUlDUk9TT0ZUX01BTkFgLiBUaGF0J3MgdGhlIG1haW4gZHJpdmVyIGNvbmZpZyB0byBlbmFibGUuXG5cbk5vdywgbGV0J3MgZ2V0IGRvd24gdG8gdGhlIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIGlzIHJlYWxseSBhYm91dC4gSSd2ZSBnb3QgdG8gZm9jdXMgb246IGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYCwgYG1hbmFfaXJxX3NldHVwX2xpbmVhcmAsIGBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlYCwgYG1hbmFfZ2Rfc2V0dXBfaXJxc2AsIGFuZCBJIHNlZSBoZXJlIHRoYXQgYG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlc2AgaXMgYWxzbyBtb2RpZmllZCwgc28gSeKAmW0gYWRkaW5nIHRoYXQgdG8gdGhlIGxpc3QgdG9vLlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFib3V0IGhvdyB0aGUgTUFOQSBkcml2ZXIgaGFuZGxlcyBJUlEgc2V0dXAuIFdlJ3JlIHNlZWluZyBjaGFuZ2VzIHRvIGJvdGggYSBsaW5lYXIgSVJRIHNldHVwIGFuZCBhIE5VTUEtYXdhcmUgSVJRIHNldHVwIOKAkyB0aGUgbGF0dGVyIGhhcyBiZWVuIHJlbmFtZWQvbW9kaWZpZWQsIGl0IHNlZW1zLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcHJvYmFibHkgYWNjZXNzaWJsZSB2aWEgdGhlIFBDSSBkZXZpY2UgZW11bGF0aW9uLCB3aGljaCBtYWtlcyBpdCBwZXJmZWN0IGZvciBmdXp6aW5nLiBXZSBuZWVkIHRvIGVuc3VyZSBJUlEgYWxsb2NhdGlvbiBhbmQgYWZmaW5pdHkgaGFuZGxpbmcgYXJlIGNvcnJlY3QuXG5cbkZvciBjb25maWd1cmF0aW9uLCBJJ2xsIGRlZmluaXRlbHkgYmUgbG9va2luZyBhdCBgTUlDUk9TT0ZUX01BTkFgIGFuZCBgTkVUX1ZFTkRPUl9NSUNST1NPRlRgLlxuXG5KdXN0IHRvIGNvbmZpcm0gdGhlIGZ1bmN0aW9uIG5hbWVzLCBsZXQgbWUgZG91YmxlLWNoZWNrLiBPa2F5LCB5ZXMsIGl0J3MgYG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSwgYm9vbCBza2lwX2ZpcnN0X2NwdSlgLCBgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilgLCBgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpYCwgYG1hbmFfZ2Rfc2V0dXBfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpYCwgYW5kIGBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpYC4gWWVwLCB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0byB0YXJnZXQuXG5cbkFscmlnaHQsIEkgZG9u4oCZdCBzZWUgYW55IG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBoZXJlLiBJIHRoaW5rIEknbSByZWFkeSB0byBjYWxsIHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDIxNSwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTI6NTAuMjQ2ODU5NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDAxMDU5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9NSUNST1NPRlRcIixcbiAgICBcIk1JQ1JPU09GVF9NQU5BXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFuYV9nZF9zZXR1cF9keW5faXJxc1wiLFxuICAgIFwibWFuYV9pcnFfc2V0dXBfbGluZWFyXCIsXG4gICAgXCJtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlXCIsXG4gICAgXCJtYW5hX2dkX3NldHVwX2lycXNcIixcbiAgICBcIm1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUlEgc2V0dXAgbG9naWMgaW4gdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFkZGluZyBsaW5lYXIgSVJRIHNldHVwIGFuZCBtb2RpZnlpbmcgdGhlIE5VTUEtYXdhcmUgSVJRIHNldHVwLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBlbXVsYXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgSVJRIGFsbG9jYXRpb24gYW5kIGFmZmluaXR5IGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9WRU5ET1JfTUlDUk9TT0ZUXCIsXG4gICAgXCJNSUNST1NPRlRfTUFOQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hbmFfZ2Rfc2V0dXBfZHluX2lycXNcIixcbiAgICBcIm1hbmFfaXJxX3NldHVwX2xpbmVhclwiLFxuICAgIFwibWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZVwiLFxuICAgIFwibWFuYV9nZF9zZXR1cF9pcnFzXCIsXG4gICAgXCJtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSVJRIHNldHVwIGxvZ2ljIGluIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHNwZWNpZmljYWxseSBhZGRpbmcgbGluZWFyIElSUSBzZXR1cCBhbmQgbW9kaWZ5aW5nIHRoZSBOVU1BLWF3YXJlIElSUSBzZXR1cC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgZW11bGF0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IElSUSBhbGxvY2F0aW9uIGFuZCBhZmZpbml0eSBoYW5kbGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowxddmf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 07:40:56 +0000 UTC FinishedAt: 2026-06-24 07:52:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_MICROSOFT", "MICROSOFT_MANA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_MICROSOFT", "MICROSOFT_MANA" ], "series_id": "8d5e9ba5-c812-491c-9d8f-7a079dfcb650" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mana_gd_setup_dyn_irqs", "mana_irq_setup_linear", "mana_irq_setup_numa_aware", "mana_gd_setup_irqs", "mana_gd_query_max_resources" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfTUlDUk9TT0ZUJiMzNDssCiAgICAmIzM0O01JQ1JPU09GVF9NQU5BJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFuYV9nZF9zZXR1cF9keW5faXJxcyYjMzQ7LAogICAgJiMzNDttYW5hX2lycV9zZXR1cF9saW5lYXImIzM0OywKICAgICYjMzQ7bWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSYjMzQ7LAogICAgJiMzNDttYW5hX2dkX3NldHVwX2lycXMmIzM0OywKICAgICYjMzQ7bWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUlEgc2V0dXAgbG9naWMgaW4gdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFkZGluZyBsaW5lYXIgSVJRIHNldHVwIGFuZCBtb2RpZnlpbmcgdGhlIE5VTUEtYXdhcmUgSVJRIHNldHVwLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBlbXVsYXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgSVJRIGFsbG9jYXRpb24gYW5kIGFmZmluaXR5IGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzkwNTI0MWI4Njk2MTMwMmJhM2RiYmJlYjEzNTA1N2JmYmY5OWU5MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDA3OjUxOjQ5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcbmluZGV4IGEwZmRkMDUyZDdmMTYzLi5lOGI3ZmZiNDdlYjk4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uY1xuQEAgLTIxMCw2ICYjNDM7MjEwLDggQEAgc3RhdGljIGludCBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHR9IGVsc2Uge1xuIFx0XHQvKiBJZiBkeW5hbWljIGFsbG9jYXRpb24gaXMgZW5hYmxlZCB3ZSBoYXZlIGFscmVhZHkgYWxsb2NhdGVkXG4gXHRcdCAqIGh3YyBtc2lcbiYjNDM7XHRcdCAqIEFsc28sIHdlIG1ha2Ugc3VyZSBpbiB0aGlzIGNhc2UgdGhlIGZvbGxvd2luZyBpcyBhbHdheXMgdHJ1ZVxuJiM0MztcdFx0ICogKG51bV9tc2l4X3VzYWJsZSAtIDEgSFdDKSBcdTAwM2M9IG51bV9vbmxpbmVfY3B1cygpXG4gXHRcdCAqL1xuIFx0XHRnYy1cdTAwM2VudW1fbXNpeF91c2FibGUgPSBtaW4ocmVzcC5tYXhfbXNpeCwgbnVtX29ubGluZV9jcHVzKCkgJiM0MzsgMSk7XG4gXHR9XG5AQCAtMTkwOSw4ICYjNDM7MTkxMSw4IEBAIHZvaWQgbWFuYV9nZF9mcmVlX3Jlc19tYXAoc3RydWN0IGdkbWFfcmVzb3VyY2UgKnIpXG4gICogZG8gdGhlIHNhbWUgdGhpbmcuXG4gICovXG4gXG4tc3RhdGljIGludCBpcnFfc2V0dXAodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSxcbi1cdFx0ICAgICBib29sIHNraXBfZmlyc3RfY3B1KVxuJiM0MztzdGF0aWMgaW50IG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLFxuJiM0MztcdFx0XHRcdCAgICAgaW50IG5vZGUsIGJvb2wgc2tpcF9maXJzdF9jcHUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGNwdW1hc2sgKm5leHQsICpwcmV2ID0gY3B1X25vbmVfbWFzaztcbiBcdGNwdW1hc2tfdmFyX3QgY3B1cyBfX2ZyZWUoZnJlZV9jcHVtYXNrX3Zhcik7XG5AQCAtMTk0NiwxMSAmIzQzOzE5NDgsMjQgQEAgc3RhdGljIGludCBpcnFfc2V0dXAodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSxcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7LyogbXVzdCBiZSBjYWxsZWQgd2l0aCBjcHVzX3JlYWRfbG9jaygpIGhlbGQgKi9cbiYjNDM7c3RhdGljIHZvaWQgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilcbiYjNDM7e1xuJiM0MztcdGludCBjcHU7XG4mIzQzO1xuJiM0MztcdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XG4mIzQzO1x0XHRpZiAobGVuID09IDApXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoKmlycXMmIzQzOyYjNDM7LCBjcHVtYXNrX29mKGNwdSkpO1xuJiM0MztcdFx0bGVuLS07XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG4ge1xuIFx0c3RydWN0IGdkbWFfY29udGV4dCAqZ2MgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4gXHRzdHJ1Y3QgZ2RtYV9pcnFfY29udGV4dCAqZ2ljO1xuLVx0Ym9vbCBza2lwX2ZpcnN0X2NwdSA9IGZhbHNlO1xuIFx0aW50ICppcnFzLCBlcnIsIGksIG1zaTtcbiBcbiBcdGlycXMgPSBrbWFsbG9jX29ianMoaW50LCBudmVjKTtcbkBAIC0xOTU4LDEwICYjNDM7MTk3MywxMiBAQCBzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfZHluX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdC8qXG4mIzQzO1x0ICogSW4gdGhpcyBmdW5jdGlvbiwgbnVtX21zaXhfdXNhYmxlID0gSFdDIElSUSAmIzQzOyBRdWV1ZSBJUlEuXG4mIzQzO1x0ICogbnZlYyBpcyBvbmx5IFF1ZXVlIElSUSAoSFdDIGFscmVhZHkgc2V0dXApLlxuIFx0ICogV2hpbGUgcHJvY2Vzc2luZyB0aGUgbmV4dCBwY2kgaXJxIHZlY3Rvciwgd2Ugc3RhcnQgd2l0aCBpbmRleCAxLFxuIFx0ICogYXMgSVJRIHZlY3RvciBhdCBpbmRleCAwIGlzIGFscmVhZHkgcHJvY2Vzc2VkIGZvciBIV0MuXG4gXHQgKiBIb3dldmVyLCB0aGUgcG9wdWxhdGlvbiBvZiBpcnFzIGFycmF5IHN0YXJ0cyB3aXRoIGluZGV4IDAsIHRvIGJlXG4tXHQgKiBmdXJ0aGVyIHVzZWQgaW4gaXJxX3NldHVwKClcbiYjNDM7XHQgKiBmdXJ0aGVyIHVzZWQgaW4gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSgpXG4gXHQgKi9cbiBcdGZvciAoaSA9IDE7IGkgXHUwMDNjPSBudmVjOyBpJiM0MzsmIzQzOykge1xuIFx0XHRtc2kgPSBpO1xuQEAgLTE5NzUsMTggJiM0MzsxOTkyLDUxIEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG4gXHR9XG4gXG4gXHQvKlxuLVx0ICogV2hlbiBjYWxsaW5nIGlycV9zZXR1cCgpIGZvciBkeW5hbWljYWxseSBhZGRlZCBJUlFzLCBpZiBudW1iZXIgb2Zcbi1cdCAqIENQVXMgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIGFsbG9jYXRlZCBNU0ktWCwgd2UgbmVlZCB0byBza2lwIHRoZVxuLVx0ICogZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0byBIV0MgSVJRXG4mIzQzO1x0ICogV2hlbiBjYWxsaW5nIG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUoKSBmb3IgZHluYW1pY2FsbHkgYWRkZWQgSVJRcyxcbiYjNDM7XHQgKiBpZiBudW1iZXIgb2YgQ1BVcyBpcyBtb3JlIHRoYW4gb3IgZXF1YWwgdG8gYWxsb2NhdGVkIE1TSS1YLCB3ZSBuZWVkIHRvXG4mIzQzO1x0ICogc2tpcCB0aGUgZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0b1xuJiM0MztcdCAqIEhXQyBJUlFcbiBcdCAqL1xuIFx0Y3B1c19yZWFkX2xvY2soKTtcbi1cdGlmIChnYy1cdTAwM2VudW1fbXNpeF91c2FibGUgXHUwMDNjPSBudW1fb25saW5lX2NwdXMoKSlcbi1cdFx0c2tpcF9maXJzdF9jcHUgPSB0cnVlO1xuJiM0MztcdGlmIChnYy1cdTAwM2VudW1fbXNpeF91c2FibGUgXHUwMDNjPSBudW1fb25saW5lX2NwdXMoKSkge1xuJiM0MztcdFx0ZXJyID0gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZShpcnFzLCBudmVjLCBnYy1cdTAwM2VudW1hX25vZGUsXG4mIzQzO1x0XHRcdFx0XHRcdHRydWUpO1xuJiM0MztcdFx0aWYgKGVycikge1xuJiM0MztcdFx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0XHRcdGdvdG8gZnJlZV9pcnE7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBXaGVuIG51bV9tc2l4X3VzYWJsZSBhcmUgbW9yZSB0aGFuIG51bV9vbmxpbmVfY3B1cywgb3VyXG4mIzQzO1x0XHQgKiBxdWV1ZSBJUlFzIHNob3VsZCBiZSBlcXVhbCB0byBudW0gb2Ygb25saW5lIHZDUFVzLlxuJiM0MztcdFx0ICogV2UgdHJ5IHRvIG1ha2Ugc3VyZSBxdWV1ZSBJUlFzIHNwcmVhZCBhY3Jvc3MgYWxsIHZDUFVzLlxuJiM0MztcdFx0ICogSW4gc3VjaCBhIGNhc2UgTlVNQSBvciBDUFUgY29yZSBhZmZpbml0eSBkb2VzIG5vdCBtYXR0ZXIuXG4mIzQzO1x0XHQgKiBOb3RlOiBpbiB0aGlzIGNhc2UgdGhlIHRvdGFsIG1hbmEgSVJRIHNob3VsZCBhbHdheXMgYmVcbiYjNDM7XHRcdCAqIG51bV9vbmxpbmVfY3B1cyAmIzQzOyAxLiBUaGUgZmlyc3QgSFdDIElSUSBpcyBhbHJlYWR5IGhhbmRsZWRcbiYjNDM7XHRcdCAqIGluIEhXQyBzZXR1cCBjYWxsc1xuJiM0MztcdFx0ICogSG93ZXZlciwgaWYgQ1BVcyB3ZW50IG9mZmxpbmUgc2luY2UgbnVtX21zaXhfdXNhYmxlIHdhc1xuJiM0MztcdFx0ICogY29tcHV0ZWQsIHF1ZXVlIElSUXMgd2lsbCBiZSBtb3JlIHRoYW4gbnVtX29ubGluZV9jcHVzKCkuXG4mIzQzO1x0XHQgKiBJbiBzdWNoIGNhc2VzIHJlbWFpbmluZyBleHRyYSBJUlFzIHdpbGwgcmV0YWluIHRoZWlyIGRlZmF1bHRcbiYjNDM7XHRcdCAqIGFmZmluaXR5LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpbnQgZmlyc3RfdW5hc3NpZ25lZCA9IG51bV9vbmxpbmVfY3B1cygpO1xuIFxuLVx0ZXJyID0gaXJxX3NldHVwKGlycXMsIG52ZWMsIGdjLVx1MDAzZW51bWFfbm9kZSwgc2tpcF9maXJzdF9jcHUpO1xuLVx0aWYgKGVycikge1xuLVx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4tXHRcdGdvdG8gZnJlZV9pcnE7XG4mIzQzO1x0XHRpZiAobnZlYyBcdTAwM2UgZmlyc3RfdW5hc3NpZ25lZCkge1xuJiM0MztcdFx0XHRjaGFyIGJ1ZlszMl07XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoZmlyc3RfdW5hc3NpZ25lZCA9PSBudmVjIC0gMSlcbiYjNDM7XHRcdFx0XHRzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBcJiMzNDslZFwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCBmaXJzdF91bmFzc2lnbmVkKTtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFwmIzM0OyVkLSVkXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0IGZpcnN0X3VuYXNzaWduZWQsIG52ZWMgLSAxKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGRldl9kYmcoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0XCYjMzQ7TUFOQSBJUlEgaW5kaWNlcyAjJXMgd2lsbCByZXRhaW4gdGhlIGRlZmF1bHQgQ1BVIGFmZmluaXR5XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdGJ1Zik7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0bWFuYV9pcnFfc2V0dXBfbGluZWFyKGlycXMsIG52ZWMpO1xuIFx0fVxuIFxuIFx0Y3B1c19yZWFkX3VubG9jaygpO1xuQEAgLTIwNDEsNyAmIzQzOzIwOTEsNyBAQCBzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG4gXHRcdG52ZWMgLT0gMTtcbiBcdH1cbiBcbi1cdGVyciA9IGlycV9zZXR1cChpcnFzLCBudmVjLCBnYy1cdTAwM2VudW1hX25vZGUsIGZhbHNlKTtcbiYjNDM7XHRlcnIgPSBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlKGlycXMsIG52ZWMsIGdjLVx1MDAzZW51bWFfbm9kZSwgZmFsc2UpO1xuIFx0aWYgKGVycikge1xuIFx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4gXHRcdGdvdG8gZnJlZV9pcnE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9NSUNST1NPRlQmIzM0OywKICAgICYjMzQ7TUlDUk9TT0ZUX01BTkEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYW5hX2dkX3NldHVwX2R5bl9pcnFzJiMzNDssCiAgICAmIzM0O21hbmFfaXJxX3NldHVwX2xpbmVhciYjMzQ7LAogICAgJiMzNDttYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlJiMzNDssCiAgICAmIzM0O21hbmFfZ2Rfc2V0dXBfaXJxcyYjMzQ7LAogICAgJiMzNDttYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElSUSBzZXR1cCBsb2dpYyBpbiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGxpbmVhciBJUlEgc2V0dXAgYW5kIG1vZGlmeWluZyB0aGUgTlVNQS1hd2FyZSBJUlEgc2V0dXAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIGVtdWxhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBJUlEgYWxsb2NhdGlvbiBhbmQgYWZmaW5pdHkgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc5MDUyNDFiODY5NjEzMDJiYTNkYmJiZWIxMzUwNTdiZmJmOTllOTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1biAyNCAwNzo1MTo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMKaW5kZXggYTBmZGQwNTJkN2YxNjMuLmU4YjdmZmI0N2ViOTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYwpAQCAtMjEwLDYgJiM0MzsyMTAsOCBAQCBzdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldikKIAl9IGVsc2UgewogCQkvKiBJZiBkeW5hbWljIGFsbG9jYXRpb24gaXMgZW5hYmxlZCB3ZSBoYXZlIGFscmVhZHkgYWxsb2NhdGVkCiAJCSAqIGh3YyBtc2kKJiM0MzsJCSAqIEFsc28sIHdlIG1ha2Ugc3VyZSBpbiB0aGlzIGNhc2UgdGhlIGZvbGxvd2luZyBpcyBhbHdheXMgdHJ1ZQomIzQzOwkJICogKG51bV9tc2l4X3VzYWJsZSAtIDEgSFdDKSAmbHQ7PSBudW1fb25saW5lX2NwdXMoKQogCQkgKi8KIAkJZ2MtJmd0O251bV9tc2l4X3VzYWJsZSA9IG1pbihyZXNwLm1heF9tc2l4LCBudW1fb25saW5lX2NwdXMoKSAmIzQzOyAxKTsKIAl9CkBAIC0xOTA5LDggJiM0MzsxOTExLDggQEAgdm9pZCBtYW5hX2dkX2ZyZWVfcmVzX21hcChzdHJ1Y3QgZ2RtYV9yZXNvdXJjZSAqcikKICAqIGRvIHRoZSBzYW1lIHRoaW5nLgogICovCiAKLXN0YXRpYyBpbnQgaXJxX3NldHVwKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbiwgaW50IG5vZGUsCi0JCSAgICAgYm9vbCBza2lwX2ZpcnN0X2NwdSkKJiM0MztzdGF0aWMgaW50IG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLAomIzQzOwkJCQkgICAgIGludCBub2RlLCBib29sIHNraXBfZmlyc3RfY3B1KQogewogCWNvbnN0IHN0cnVjdCBjcHVtYXNrICpuZXh0LCAqcHJldiA9IGNwdV9ub25lX21hc2s7CiAJY3B1bWFza192YXJfdCBjcHVzIF9fZnJlZShmcmVlX2NwdW1hc2tfdmFyKTsKQEAgLTE5NDYsMTEgJiM0MzsxOTQ4LDI0IEBAIHN0YXRpYyBpbnQgaXJxX3NldHVwKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbiwgaW50IG5vZGUsCiAJcmV0dXJuIDA7CiB9CiAKJiM0MzsvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIGNwdXNfcmVhZF9sb2NrKCkgaGVsZCAqLwomIzQzO3N0YXRpYyB2b2lkIG1hbmFfaXJxX3NldHVwX2xpbmVhcih1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4pCiYjNDM7ewomIzQzOwlpbnQgY3B1OwomIzQzOwomIzQzOwlmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkgewomIzQzOwkJaWYgKGxlbiA9PSAwKQomIzQzOwkJCWJyZWFrOwomIzQzOwomIzQzOwkJaXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcyYjNDM7JiM0MzssIGNwdW1hc2tfb2YoY3B1KSk7CiYjNDM7CQlsZW4tLTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpCiB7CiAJc3RydWN0IGdkbWFfY29udGV4dCAqZ2MgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7CiAJc3RydWN0IGdkbWFfaXJxX2NvbnRleHQgKmdpYzsKLQlib29sIHNraXBfZmlyc3RfY3B1ID0gZmFsc2U7CiAJaW50ICppcnFzLCBlcnIsIGksIG1zaTsKIAogCWlycXMgPSBrbWFsbG9jX29ianMoaW50LCBudmVjKTsKQEAgLTE5NTgsMTAgJiM0MzsxOTczLDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJLyoKJiM0MzsJICogSW4gdGhpcyBmdW5jdGlvbiwgbnVtX21zaXhfdXNhYmxlID0gSFdDIElSUSAmIzQzOyBRdWV1ZSBJUlEuCiYjNDM7CSAqIG52ZWMgaXMgb25seSBRdWV1ZSBJUlEgKEhXQyBhbHJlYWR5IHNldHVwKS4KIAkgKiBXaGlsZSBwcm9jZXNzaW5nIHRoZSBuZXh0IHBjaSBpcnEgdmVjdG9yLCB3ZSBzdGFydCB3aXRoIGluZGV4IDEsCiAJICogYXMgSVJRIHZlY3RvciBhdCBpbmRleCAwIGlzIGFscmVhZHkgcHJvY2Vzc2VkIGZvciBIV0MuCiAJICogSG93ZXZlciwgdGhlIHBvcHVsYXRpb24gb2YgaXJxcyBhcnJheSBzdGFydHMgd2l0aCBpbmRleCAwLCB0byBiZQotCSAqIGZ1cnRoZXIgdXNlZCBpbiBpcnFfc2V0dXAoKQomIzQzOwkgKiBmdXJ0aGVyIHVzZWQgaW4gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSgpCiAJICovCiAJZm9yIChpID0gMTsgaSAmbHQ7PSBudmVjOyBpJiM0MzsmIzQzOykgewogCQltc2kgPSBpOwpAQCAtMTk3NSwxOCAmIzQzOzE5OTIsNTEgQEAgc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYykKIAl9CiAKIAkvKgotCSAqIFdoZW4gY2FsbGluZyBpcnFfc2V0dXAoKSBmb3IgZHluYW1pY2FsbHkgYWRkZWQgSVJRcywgaWYgbnVtYmVyIG9mCi0JICogQ1BVcyBpcyBtb3JlIHRoYW4gb3IgZXF1YWwgdG8gYWxsb2NhdGVkIE1TSS1YLCB3ZSBuZWVkIHRvIHNraXAgdGhlCi0JICogZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0byBIV0MgSVJRCiYjNDM7CSAqIFdoZW4gY2FsbGluZyBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlKCkgZm9yIGR5bmFtaWNhbGx5IGFkZGVkIElSUXMsCiYjNDM7CSAqIGlmIG51bWJlciBvZiBDUFVzIGlzIG1vcmUgdGhhbiBvciBlcXVhbCB0byBhbGxvY2F0ZWQgTVNJLVgsIHdlIG5lZWQgdG8KJiM0MzsJICogc2tpcCB0aGUgZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0bwomIzQzOwkgKiBIV0MgSVJRCiAJICovCiAJY3B1c19yZWFkX2xvY2soKTsKLQlpZiAoZ2MtJmd0O251bV9tc2l4X3VzYWJsZSAmbHQ7PSBudW1fb25saW5lX2NwdXMoKSkKLQkJc2tpcF9maXJzdF9jcHUgPSB0cnVlOwomIzQzOwlpZiAoZ2MtJmd0O251bV9tc2l4X3VzYWJsZSAmbHQ7PSBudW1fb25saW5lX2NwdXMoKSkgewomIzQzOwkJZXJyID0gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZShpcnFzLCBudmVjLCBnYy0mZ3Q7bnVtYV9ub2RlLAomIzQzOwkJCQkJCXRydWUpOwomIzQzOwkJaWYgKGVycikgewomIzQzOwkJCWNwdXNfcmVhZF91bmxvY2soKTsKJiM0MzsJCQlnb3RvIGZyZWVfaXJxOwomIzQzOwkJfQomIzQzOwl9IGVsc2UgewomIzQzOwkJLyoKJiM0MzsJCSAqIFdoZW4gbnVtX21zaXhfdXNhYmxlIGFyZSBtb3JlIHRoYW4gbnVtX29ubGluZV9jcHVzLCBvdXIKJiM0MzsJCSAqIHF1ZXVlIElSUXMgc2hvdWxkIGJlIGVxdWFsIHRvIG51bSBvZiBvbmxpbmUgdkNQVXMuCiYjNDM7CQkgKiBXZSB0cnkgdG8gbWFrZSBzdXJlIHF1ZXVlIElSUXMgc3ByZWFkIGFjcm9zcyBhbGwgdkNQVXMuCiYjNDM7CQkgKiBJbiBzdWNoIGEgY2FzZSBOVU1BIG9yIENQVSBjb3JlIGFmZmluaXR5IGRvZXMgbm90IG1hdHRlci4KJiM0MzsJCSAqIE5vdGU6IGluIHRoaXMgY2FzZSB0aGUgdG90YWwgbWFuYSBJUlEgc2hvdWxkIGFsd2F5cyBiZQomIzQzOwkJICogbnVtX29ubGluZV9jcHVzICYjNDM7IDEuIFRoZSBmaXJzdCBIV0MgSVJRIGlzIGFscmVhZHkgaGFuZGxlZAomIzQzOwkJICogaW4gSFdDIHNldHVwIGNhbGxzCiYjNDM7CQkgKiBIb3dldmVyLCBpZiBDUFVzIHdlbnQgb2ZmbGluZSBzaW5jZSBudW1fbXNpeF91c2FibGUgd2FzCiYjNDM7CQkgKiBjb21wdXRlZCwgcXVldWUgSVJRcyB3aWxsIGJlIG1vcmUgdGhhbiBudW1fb25saW5lX2NwdXMoKS4KJiM0MzsJCSAqIEluIHN1Y2ggY2FzZXMgcmVtYWluaW5nIGV4dHJhIElSUXMgd2lsbCByZXRhaW4gdGhlaXIgZGVmYXVsdAomIzQzOwkJICogYWZmaW5pdHkuCiYjNDM7CQkgKi8KJiM0MzsJCWludCBmaXJzdF91bmFzc2lnbmVkID0gbnVtX29ubGluZV9jcHVzKCk7CiAKLQllcnIgPSBpcnFfc2V0dXAoaXJxcywgbnZlYywgZ2MtJmd0O251bWFfbm9kZSwgc2tpcF9maXJzdF9jcHUpOwotCWlmIChlcnIpIHsKLQkJY3B1c19yZWFkX3VubG9jaygpOwotCQlnb3RvIGZyZWVfaXJxOwomIzQzOwkJaWYgKG52ZWMgJmd0OyBmaXJzdF91bmFzc2lnbmVkKSB7CiYjNDM7CQkJY2hhciBidWZbMzJdOwomIzQzOwomIzQzOwkJCWlmIChmaXJzdF91bmFzc2lnbmVkID09IG52ZWMgLSAxKQomIzQzOwkJCQlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAmIzM0OyVkJiMzNDssCiYjNDM7CQkJCQkgZmlyc3RfdW5hc3NpZ25lZCk7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAmIzM0OyVkLSVkJiMzNDssCiYjNDM7CQkJCQkgZmlyc3RfdW5hc3NpZ25lZCwgbnZlYyAtIDEpOwomIzQzOwomIzQzOwkJCWRldl9kYmcoJmFtcDtwZGV2LSZndDtkZXYsCiYjNDM7CQkJCSYjMzQ7TUFOQSBJUlEgaW5kaWNlcyAjJXMgd2lsbCByZXRhaW4gdGhlIGRlZmF1bHQgQ1BVIGFmZmluaXR5XG4mIzM0OywKJiM0MzsJCQkJYnVmKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCW1hbmFfaXJxX3NldHVwX2xpbmVhcihpcnFzLCBudmVjKTsKIAl9CiAKIAljcHVzX3JlYWRfdW5sb2NrKCk7CkBAIC0yMDQxLDcgJiM0MzsyMDkxLDcgQEAgc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKQogCQludmVjIC09IDE7CiAJfQogCi0JZXJyID0gaXJxX3NldHVwKGlycXMsIG52ZWMsIGdjLSZndDtudW1hX25vZGUsIGZhbHNlKTsKJiM0MzsJZXJyID0gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZShpcnFzLCBudmVjLCBnYy0mZ3Q7bnVtYV9ub2RlLCBmYWxzZSk7CiAJaWYgKGVycikgewogCQljcHVzX3JlYWRfdW5sb2NrKCk7CiAJCWdvdG8gZnJlZV9pcnE7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTUFOQSBEcml2ZXIgSVJRIEFmZmluaXR5IENvbmZpZ3VyYXRpb24gLSBBIFJlZmluZW1lbnQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNgLiBNeSBpbml0aWFsIHJlYWQgaW5kaWNhdGVzIHRoaXMgaXMgYSBmb2N1c2VkIHVwZGF0ZSB0byB0aGUgTUFOQSBkcml2ZXIuIEkgc2VlIHRoZXkmIzM5O3JlIHJlbmFtaW5nIGBpcnFfc2V0dXBgIHRvIGBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlYCwgd2hpY2ggaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24uIFRoYXQgc3VnZ2VzdHMgYSBkZWxpYmVyYXRlIGVmZm9ydCB0byBpbnRlZ3JhdGUgTlVNQSBhd2FyZW5lc3MgaW50byB0aGUgSVJRIHNldHVwLCBsaWtlbHkgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvbiBOVU1BIGFyY2hpdGVjdHVyZXMuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYG1hbmFfaXJxX3NldHVwX2xpbmVhcmAgaXMgYWxzbyBpbnRlcmVzdGluZzsgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGF0IHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIGNvbnRleHQuCgpUaGUgbWVhdCBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2AsIHdoaWNoIGlzIHdoZXJlIHRoZXkmIzM5O3JlIG1vZGlmeWluZyB0aGUgSVJRIGFmZmluaXR5IGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZGVmaW5pdGVseSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCBzdWdnZXN0cyBhIG1vcmUgc29waGlzdGljYXRlZCBvciBjb25maWd1cmFibGUgYXBwcm9hY2ggdG8gYXNzaWduaW5nIElSUXMgdG8gQ1BVcyBvciBDUFUgY29yZXMuIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgdGhpcyBpbiBsaWdodCBvZiBNQU5BJiMzOTtzIGludGVuZGVkIHVzZSBjYXNlIGFuZCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaXQmIzM5O3MgZGVzaWduZWQgZm9yIHRvIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBzaGlmdC4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGl0JiMzOTtzIHdvcnRoIGNoZWNraW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE1BTkEuIEFyZSB0aGVyZSBhbnkgbmV3IGtub2JzIG9yIHBhcmFtZXRlcnMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgZXhpc3Rpbmcgb3B0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCBvciBkZXByZWNhdGVkPyBUaGlzIGNvbnRleHQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBwcmFjdGljYWwgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFuYV9nZF9zZXR1cF9keW5faXJxcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xOTUyPXN0YXRpYyB2b2lkIG1hbmFfaXJxX3NldHVwX2xpbmVhcih1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE5NjU6c3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NjYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTIxNDQ9c3RhdGljIGludCBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMTY4Olx0ZXJyID0gbWFuYV9nZF9zZXR1cF9keW5faXJxcyhwZGV2LCBtYXhfaXJxcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTY5LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjE1CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkZpbmRpbmcgdGhlIE1BTkEgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBsb2NhdGUgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggTUFOQS4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBzZWFyY2g7IGl0JiMzOTtzIGEgcGlucG9pbnRpbmcgZXhlcmNpc2UuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IGRpY3RhdGVzIHRoZSBidWlsZCBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCB1bHRpbWF0ZWx5LCB0aGUgYmVoYXZpb3Igb2YgdGhlIE1BTkEgY29tcG9uZW50IHdpdGhpbiB0aGUgc3lzdGVtLiBJcyBpdCBhIHRvcC1sZXZlbCBLY29uZmlnLCBuZXN0bGVkIGluIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGlyZWN0b3JpZXMsIG9yIHBlcmhhcHMgd2l0aGluIGEgc3ViLW1vZHVsZT8gT3IgbWF5YmUgaXQmIzM5O3MgaW50ZWdyYXRlZCB3aXRoIGEgbW9yZSBnZW5lcmFsaXplZCBmcmFtZXdvcms/CgpNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0czogZmlyc3QsIHRoZSBvYnZpb3VzIHBsYWNlcy4uLiBjb21tb24gYXJlYXMsIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZS4gTmV4dCwgSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBjdXN0b20gYnVpbGQgc3lzdGVtcyBvciBtZXRhLWxheWVycyB0aGF0IG1pZ2h0IGJlIGludm9sdmVkIOKAkyB3aGVyZSBhcmUgdGhlIGJ1aWxkIHN5c3RlbXMgaW5jbHVkaW5nIHRoZXNlPyBBIHF1aWNrIGdyZXAgbWlnaHQgYmUgaW4gb3JkZXIsIHNjYW5uaW5nIGZvciAmIzM0O01BTkEmIzM0OyB3aXRoaW4gdGhlIGJ1aWxkIHRyZWUsIGZvY3VzaW5nIG9uIGZpbGVzIHdpdGggdGhlIGAuY29uZmlnYCBvciBgS2NvbmZpZ2AgZXh0ZW5zaW9ucy4gSWYgdGhhdCBkb2VzbiYjMzk7dCBpbW1lZGlhdGVseSB5aWVsZCByZXN1bHRzLCBJJiMzOTtsbCBuZWVkIHRvIGV4cGFuZCBteSBzZWFyY2gsIHRoaW5raW5nIGFib3V0IGhvdyBNQU5BIGlzIGludGVncmF0ZWQ7IGl0cyBkZXBlbmRlbmN5IGNoYWluLCBpZiBhbnkuIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBhdCBhIHJlY3Vyc2l2ZSBhcHByb2FjaCwgZGl2aW5nIHRocm91Z2ggdmFyaW91cyBkaXJlY3RvcmllcyBhbmQgcG90ZW50aWFsIG1vZHVsZXMgdW50aWwgSSBmaW5kIHRoZSBkZWZpbmluZyBLY29uZmlnLiBUaGUgZ29hbCBpc24mIzM5O3QganVzdCB0byAqZmluZCogaXQsIGJ1dCB0byB1bmRlcnN0YW5kIGl0cyBsb2NhdGlvbiB3aXRoaW4gdGhlIHdpZGVyIHByb2plY3Qgc3RydWN0dXJlLiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBNQU5BIGlzIGNvbmZpZ3VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1JQ1JPU09GVF9NQU5BJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjE4OmNvbmZpZyBNSUNST1NPRlRfTUFOQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY2MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiB0aGUgTUFOQSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgTUlDUk9TT0ZUX01BTkFgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQgd2l0aGluIHRoaXMgY29udGV4dC4gSSYjMzk7bSBzZWVpbmcgY2hhbmdlcyB0byBgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzYCwgYG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmVgICh3aGljaCB3YXMgcmVuYW1lZCBmcm9tIGBpcnFfc2V0dXBgKSwgYW5kIHRoZSBhZGRpdGlvbiBvZiBgbWFuYV9pcnFfc2V0dXBfbGluZWFyYCBhbG9uZyB3aXRoIGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYCBhbmQgYG1hbmFfZ2Rfc2V0dXBfaXJxc2AuIEFsbCBvZiB0aGVzZSBhcHBlYXIgdG8gYmUgaW50ZWdyYWwgdG8gdGhlIE1BTkEgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIGFuZCBzZXR1cCBzZXF1ZW5jZS4KCk15IG5leHQgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVzZSBjb2RlIHBhdGhzIGFyZSBhY3R1YWxseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQ29uc2lkZXJpbmcgdGhhdCBNQU5BIGlzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIGFuZCB0aGF0IGl0IGlzIGEgUENJIGRldmljZSwgdGhpcyBkb2VzIG1ha2UgYSBkaWZmZXJlbmNlLiBEaXJlY3QgZnV6emluZyB3aXRoIHNvbWV0aGluZyBsaWtlIFN5emthbGxlciBtaWdodCBiZSB0cmlja3kgdW5sZXNzIHdlJiMzOTtyZSBydW5uaW5nIGluIEF6dXJlIG9yIGhhdmUgYSBnb29kIGVtdWxhdG9yLiBIb3dldmVyLCBiZWluZyBhIFBDSSBkcml2ZXIsIGl0IHNob3VsZCwgaW4gdGhlb3J5LCBiZSByZWFjaGFibGUgdGhyb3VnaCBQQ0kgZnV6emluZyBpZiB0aGUgY29ycmVjdCBQQ0kgSUQgaXMgdHJpZ2dlcmVkLgoKQWgsIGJ1dCBJIG5lZWQgdG8gcmVjYWxsIHRoZSBjb250ZXh0LiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0IGNlcnRhaW4gY29kZSBwYXRocyBhcmUgKmltcG9zc2libGUqIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBUaGF0IGxlYWRzIG1lIHRvIGFzayAtIElzIE1BTkEgZW11bGF0ZWQgaW4gc29tZXRoaW5nIGxpa2UgUUVNVT8gSSBkb24mIzM5O3QgcmVjYWxsIGl0IGJlaW5nLiBUaGUgdGhpbmcgaXMsIFN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIgYW5kIHRoYXQmIzM5O3MgYW4gaW1wb3J0YW50IGRldGFpbC4gSXQgKmNhbiogZW11bGF0ZSBQQ0kgZGV2aWNlcy4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gVGhpcyBtZWFucywgUENJIGRyaXZlcnMgKmFyZSogYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2l0aCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciAoYHN5el9wY2lfZGV2aWNlYCksIHdoaWNoIGFsbG93cyBhcmJpdHJhcnkgUENJIGRldmljZSBpbmplY3Rpb24uIE5vdyBJIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBQQ0kgSURzIGZvciBNQU5BLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01PRFVMRV9ERVZJQ0VfVEFCTEUuKnBjaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNTYwPW1vZHVsZV9leGl0KG1hbmFfZHJpdmVyX2V4aXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjU2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1NjI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1hbmFfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjU2My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTYwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIGFuZCB3cml0aW5nIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRGF0YSBTY2hlbWEqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEZpcnN0LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0xldCYjMzk7cyBzZWUgYG1hbmFfaWRfdGFibGVgLiYjMzQ7IFRoaXMgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgSSYjMzk7bSBhYm91dCB0byBhc3Nlc3MgYSBkYXRhYmFzZSB0YWJsZSwgbGlrZWx5IGNydWNpYWwgZm9yIHNvbWUgcHJvY2Vzcy4gVGhlIHVzZSBvZiAmIzM0O3NlZSYjMzQ7IGhpbnRzIHRoYXQgSSYjMzk7bSBtZW50YWxseSB2aXN1YWxpemluZyBvciByZXRyaWV2aW5nIHRoZSB0YWJsZSYjMzk7cyBzdHJ1Y3R1cmUgaW4gbXkgbWluZCwgb3IgcGVyaGFwcyBwcmVwYXJpbmcgdG8gcXVlcnkgb3IgaW5zcGVjdCBpdCBkaXJlY3RseS4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBpdHMgc3RydWN0dXJlLCBrZXkgZmllbGRzLCBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gdGhlIGJyb2FkZXIgZGF0YSBtb2RlbC4gSXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBzb21lIGRlZXBlciBpbnZlc3RpZ2F0aW9uLiBUaGlzIGNvdWxkIGJlIGRhdGEgYW5hbHlzaXMsIGRlYnVnZ2luZyBhIHJlbGF0ZWQgcHJvY2Vzcywgb3IgbWF5YmUgZXZlbiBwcmVwYXJpbmcgdG8gd3JpdGUgc29tZSBjb2RlIHRoYXQgdXRpbGl6ZXMgdGhpcyB0YWJsZS4gVGhlIHNwZWNpZmljIG5hbWUgYG1hbmFfaWRfdGFibGVgIGl0c2VsZiBvZmZlcnMgYSBoaW50OyBJdCBsaWtlbHkgaG9sZHMgbWFwcGluZ3MgYmV0d2VlbiBkaWZmZXJlbnQgaWRlbnRpZmljYXRpb24gbWV0aG9kcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFuYV9pZF90YWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNDg1PXN0YXRpYyB2b2lkIG1hbmFfZ2Rfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0OTk6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1hbmFfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDAtXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NSUNST1NPRlQsIE1BTkFfUEZfREVWSUNFX0lEKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI1MDY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hbmFfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUwNy1cdC5uYW1lXHRcdD0gXCYjMzQ7bWFuYVwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1MDg6XHQuaWRfdGFibGVcdD0gbWFuYV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDktXHQucHJvYmVcdFx0PSBtYW5hX2dkX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI1NjA9bW9kdWxlX2V4aXQobWFuYV9kcml2ZXJfZXhpdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjU2MjpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbWFuYV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTYzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipQQ0kgRHJpdmVyIEZ1enppbmcgU3RyYXRlZ3kqKgoKUmlnaHQsIHNvIHRoaXMgaXMgYSB0eXBpY2FsIFBDSSBkcml2ZXIsIGFuZCB0aGUgcGxhbiBpcyB0byBoaXQgaXQgd2l0aCBTeXprYWxsZXIsIHNwZWNpZmljYWxseSB1c2luZyBgc3l6X3BjaV9kZXZpY2VgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUga2V5IGZ1bmN0aW9ucyBTeXprYWxsZXIgd2lsbCB0YXJnZXQgZm9yIGZ1enppbmcuIFNlZW1zIGxpa2UgdGhlIGNvcmUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBhcmU6IGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYCwgYG1hbmFfaXJxX3NldHVwX2xpbmVhcmAsIGBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlYCwgYW5kIGBtYW5hX2dkX3NldHVwX2lycXNgLgoKVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBkbyBJIGdldCB0byBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2A/IEkmIzM5O2xsIHRyYWNlIGl0cyBjYWxsIHBhdGguIE9rYXksIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzYCwgd2hpY2ggc3VnZ2VzdHMgaXQmIzM5O3MgcGFydCBvZiBhbiBpbml0aWFsaXphdGlvbiBvciBzZXR1cCBzZXF1ZW5jZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlICp0aGF0KiBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbS4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHRyaWdnZXJpbmcgdGhlIHZ1bG5lcmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hbmFfZ2Rfc2V0dXBfcmVtYWluaW5nX2lycXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjExMj1zdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfaHdjX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxNDQ6c3RhdGljIGludCBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjIwMj1zdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjI0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIyNDU6XHRlcnIgPSBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjI0Ni1cdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGVlcCBEaXZlOiBgbWFuYV9nZF9zZXR1cGAgQ2FsbGVkIGJ5IGBtYW5hX2dkX3Byb2JlYCoqCgpBbHJpZ2h0LCBzbyB0aGUgYXJjaGl0ZWN0dXJlIGhlcmUgaXMgY3J5c3RhbCBjbGVhci4gSSYjMzk7bSBzZWVpbmcgYSB2ZXJ5IHNwZWNpZmljLCBkZWxpYmVyYXRlIGZsb3cgb2YgZXhlY3V0aW9uLiBXZSYjMzk7dmUgZ290IGBtYW5hX2dkX3Byb2JlYCwgd2hpY2ggaXMsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBhIHByb2JpbmcgZnVuY3Rpb24uIEl0cyBqb2IgaXMgbGlrZWx5IHRvIGRldGVjdCBzb21ldGhpbmcg4oCTIHBlcmhhcHMgaGFyZHdhcmUgcHJlc2VuY2UsIGRyaXZlciBjYXBhYmlsaXRpZXMsIGNvbmZpZ3VyYXRpb24sIG9yIHNvbWUgY3JpdGljYWwgc3lzdGVtIHN0YXRlIHJlbGF0ZWQgdG8gJiMzNDttYW5hJiMzNDsgKHdoYXRldmVyIHRoYXQgaXMg4oCTIGxpa2VseSBncmFwaGljcyBvciBtZW1vcnkgYWxsb2NhdGlvbikuCgpUaGUgZmFjdCB0aGF0IGBtYW5hX2dkX3Byb2JlYCBjYWxscyBgbWFuYV9nZF9zZXR1cGAgaW1tZWRpYXRlbHkgc2lnbmFscyBhIGtleSBkZXNpZ24gcHJpbmNpcGxlOiB0aGUgcHJvYmUgKmVzdGFibGlzaGVzIHRoZSBlbnZpcm9ubWVudCogZm9yIHRoZSBzZXR1cC4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlIGluIGFueSByb2J1c3Qgc3lzdGVtLiBGaXJzdCwgeW91IGFzc2VzczsgdGhlbiwgeW91IGNvbmZpZ3VyZS4gVGhlIHByb2Jpbmcgc3RlcCB3aWxsIHByb2JhYmx5IGdhdGhlciBhbGwgdGhlIG5lY2Vzc2FyeSBwYXJhbWV0ZXJzLCBjb25maWd1cmF0aW9ucywgYW5kIHBvdGVudGlhbGx5IGFueSByZXNvdXJjZSBhbGxvY2F0aW9ucyBvciBpbml0aWFsaXphdGlvbnMsIGJlZm9yZSB0aGVuIGNhbGxpbmcgdGhlIGBzZXR1cGAgZnVuY3Rpb24uIFRoZSBgc2V0dXBgIGZ1bmN0aW9uLCB0aGVuLCB3aWxsIGFjdHVhbGx5IHBlcmZvcm0gYWxsIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBhbmQgY29uZmlndXJhdGlvbiB3b3JrIGJhc2VkIG9uIHdoYXRldmVyIGBwcm9iZWAgaGFzIGRpc2NvdmVyZWQuIFRoZSBzZXR1cCB3b3VsZCBoYW5kbGUgYW55IGRldmljZSBzcGVjaWZpY3MsIHJlc291cmNlIGFsbG9jYXRpb25zLCBvciBnZW5lcmFsIHN5c3RlbSBzZXR1cC4KCkl0JiMzOTtzIGEgbmljZSwgY2xlYW4gc2VwYXJhdGlvbiBvZiBjb25jZXJucy4gYG1hbmFfZ2RfcHJvYmVgIGhhbmRsZXMgZGlzY292ZXJ5LCBhbmQgdGhlbiBgbWFuYV9nZF9zZXR1cGAgaGFuZGxlcyBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHdoYXQgdGhlIHByb2JlIGZpbmRzLiBUaGlzIG1ha2VzIHRoZSBjb2RlIGZhciBtb3JlIG1vZHVsYXIgYW5kIG1haW50YWluYWJsZSwgc29tZXRoaW5nIEkgYWx3YXlzIGFwcHJlY2lhdGUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBib3RoIGZ1bmN0aW9uIGRlZmluaXRpb25zIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcywgYnV0IHRoZSBoaWdoLWxldmVsIGRlc2lnbiBpcyBhbHJlYWR5IHNvdW5kLiBJIGNhbiBwcm9iYWJseSBtYWtlIGEgZ29vZCBwcmVkaWN0aW9uIGJhc2VkIG9uIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hbmFfZ2Rfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MTc3PXN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5MS1cdCAqIE1TSS1YIGFsbG9jYXRpb247IG9uIG5vbi1keW4gcGxhdGZvcm1zIG1zaV9zaGFyaW5nIGlzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxOTI6XHQgKiB1bmNvbmRpdGlvbmFsbHkgdHJ1ZSAoc2V0IGluIG1hbmFfZ2Rfc2V0dXBfaHdjX2lycXMpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTkzLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MTk1Mj1zdGF0aWMgdm9pZCBtYW5hX2lycV9zZXR1cF9saW5lYXIodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxOTY1OnN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTY2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjA1MzpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMDU0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjExMjpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfaHdjX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTEzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjEzMjpcdGVyciA9IG1hbmFfZ2Rfc2V0dXBfaXJxcyhwZGV2LCBudmVjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxMzMtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxNDQ6c3RhdGljIGludCBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxNjg6XHRlcnIgPSBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHBkZXYsIG1heF9pcnFzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxNjktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTIxNzc9c3RhdGljIHZvaWQgbWFuYV9nZF9yZW1vdmVfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMjAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjIwMjpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMjAzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjIyMjpcdGVyciA9IG1hbmFfZ2Rfc2V0dXBfaHdjX2lycXMocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMjIzLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMjQ1Olx0ZXJyID0gbWFuYV9nZF9zZXR1cF9yZW1haW5pbmdfaXJxcyhwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyNDYtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjMwMj1zdGF0aWMgaW50IG1hbmFfZ2RfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIzNTQ6XHRlcnIgPSBtYW5hX2dkX3NldHVwKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM1NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM5Ni1cdCAqIEhhcmR3YXJlIGNvdWxkIGJlIGluIHJlY292ZXJ5IG1vZGUgYW5kIHRoZSBIV0MgcmV0dXJucyBUSU1FRE9VVCBvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjM5NzpcdCAqIEVQUk9UTyBmcm9tIG1hbmFfZ2Rfc2V0dXAoKSwgbWFuYV9wcm9iZSgpIG9yIG1hbmFfcmRtYV9wcm9iZSgpLCBvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM5OC1cdCAqIHdlIHJlY2VpdmVkIGEgaGFyZHdhcmUgcmVzZXQgZXZlbnQgb3ZlciBIV0MgaW50ZXJydXB0LiBJbiB0aGlzIGNhc2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjQ2MD1pbnQgbWFuYV9nZF9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0NjU6XHRlcnIgPSBtYW5hX2dkX3NldHVwKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ2Ni1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTUFOQSBEcml2ZXIgQ29kZSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O3ZlIHRyYWNlZCB0aGUgY2FsbCBzdGFjayBoZXJlLiBgbWFuYV9nZF9wcm9iZWAgdHJpZ2dlcnMgYG1hbmFfZ2Rfc2V0dXBgLCB3aGljaCB0aGVuIGNhbGxzIGBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzYCBhbmQsIGNydWNpYWxseSwgYG1hbmFfZ2Rfc2V0dXBfZHluX2lycXNgLiBUaGF0JiMzOTtzIGEgY2xlYXIgcGF0aCB0aGF0IGEgUENJIGZ1enplciBjb3VsZCBkZWZpbml0ZWx5IGhpdCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpHaXZlbiB0aGF0LCBJIG5lZWQgdG8gemVybyBpbiBvbiBhIGZldyBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5OiBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2AsIG9idmlvdXNseSwgYWxvbmcgd2l0aCBgbWFuYV9pcnFfc2V0dXBfbGluZWFyYCwgYG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmVgLCBhbmQgYG1hbmFfZ2Rfc2V0dXBfaXJxc2AuIFRob3NlIGFyZSB0aGUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGlzIHBhdGguCgpOb3csIGJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIHRoZSBjb2RlLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGltcG9ydGFudDogYXJlIHRoZXJlIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcywgYmVzaWRlcyB0aGUgb2J2aW91cyBvbmUsIHRoYXQgd291bGQgcHJldmVudCBtZSBmcm9tIHJlYWNoaW5nIHRoZXNlIGZ1bmN0aW9ucz8gTGV0JiMzOTtzIHNlZS4uLiBgTUlDUk9TT0ZUX01BTkFgIHNlZW1zIHRvIGJlIHRoZSBtYWluIGNvbmZpZywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEFoLCBnb29kLiBUaGUgcmVsZXZhbnQgcGF0Y2ggaXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jYC4gQWxyaWdodCwgc28gSSBzaG91bGQgYmUgZm9jdXNlZCBvbiBtYWtpbmcgc3VyZSB0aGF0IGBNSUNST1NPRlRfTUFOQWAgaXMgYWxsIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1JQ1JPU09GVF9NQU5BJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9NSUNST1NPRlRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MTg6Y29uZmlnIE1JQ1JPU09GVF9NQU5BXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ3NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgTkVUX1ZFTkRPUl9NSUNST1NPRlRgIENvbnRleHQqKgoKT2theSwgc28gdGhlIHByb21wdCBkaXJlY3RzIG1lIHRvIGNvbnNpZGVyIGBORVRfVkVORE9SX01JQ1JPU09GVGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBwYXJzZSB3aGF0IHRoYXQgY29udGV4dCBtZWFucyBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdCBiZWluZyBmbGFnZ2VkIGZvciByZXZpZXcuICBUaGlzIHN1Z2dlc3RzIHdlJiMzOTtyZSBsaWtlbHkgbG9va2luZyBhdCBuZXR3b3JrLXJlbGF0ZWQgYWN0aXZpdHksIHNwZWNpZmljYWxseSBzb21ldGhpbmcgdGhhdCYjMzk7cyBvcmlnaW5hdGluZyBmcm9tLCBvciBhc3NvY2lhdGVkIHdpdGgsIE1pY3Jvc29mdC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzcGVjaWZpYyBhc3BlY3QgcmVxdWlyaW5nIGF0dGVudGlvbi4gSXMgdGhpcyBhIHBvdGVudGlhbCBzZWN1cml0eSBjb25jZXJuPyBJcyB0aGlzIGFuIGFsZXJ0IGJhc2VkIG9uIHRyYWZmaWMgdm9sdW1lPyBJcyB0aGVyZSBhIGtub3duIHZ1bG5lcmFiaWxpdHksIG9yIG1heWJlIGl0JiMzOTtzIHJlbGF0ZWQgdG8gc29tZSBjb25maWd1cmF0aW9uIGF1ZGl0PyBJIG5lZWQgbW9yZSBkYXRhIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgaXNzdWUuIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBuZXR3b3JrIHRyYWZmaWMsIGxvb2sgYXQgdGhlIHByb3RvY29scyBpbnZvbHZlZCwgYW55IHJlbGF0ZWQgbG9ncyBvciBhbGVydHMsIGFuZCBwb3NzaWJseSB0aGUgY29udGV4dCBvZiB0aGUgZW52aXJvbm1lbnQgdGhlIHRyYWZmaWMgaXMgaW4uICBNeSBleHBlcmllbmNlIHNheXMgdGhhdCBqdXN0IHNlZWluZyB0aGlzIGVudHJ5IGlzIG5vdCBlbm91Z2gsIGFzIG9mdGVuIE1pY3Jvc29mdCBoYXMgYSBsYXJnZSBhbmQgY29tcGxleCBmb290cHJpbnQgaW4gbWFueSBpbmZyYXN0cnVjdHVyZSBzdGFja3MuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb2xsZWN0IHRoZSBzdXBwb3J0aW5nIGV2aWRlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1ZFTkRPUl9NSUNST1NPRlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy00LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6NTpjb25maWcgTkVUX1ZFTkRPUl9NSUNST1NPRlRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTYtXHRib29sIFwmIzM0O01pY3Jvc29mdCBOZXR3b3JrIERldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgyMwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogTWljcm9zb2Z0IE5ldHdvcmsgQWRhcHRlciBhbmQgTUFOQSoqCgpBbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBORVRfVkVORE9SX01JQ1JPU09GVGAgYW5kIGBNSUNST1NPRlRfTUFOQWAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZGV0ZXJtaW5lIGlmIGBQQ0lfTVNJYCBpcyBhbHNvIGVzc2VudGlhbCB0byBjb25maWd1cmUgcHJvcGVybHkuIEkga25vdyBNQU5BIHV0aWxpemVzIE1TSS1YLCB3aGljaCBpcyBhIG1vcmUgYWR2YW5jZWQgaW50ZXJydXB0IG1lY2hhbmlzbS4gVGhlcmVmb3JlLCBpdCBtYWtlcyBzZW5zZSB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBBaGEhIEl0IGxvb2tzIGxpa2UgYE1JQ1JPU09GVF9NQU5BYCAqZG9lcyogZGVwZW5kIG9uIGBQQ0lfTVNJYC4gU28sIEkmIzM5O2xsIG5lZWQgdG8gZW5zdXJlIHRoYXQgYFBDSV9NU0lgIGlzIGNvcnJlY3RseSBjb25maWd1cmVkIGlmIEkgd2FudCBgTUlDUk9TT0ZUX01BTkFgIHRvIGZ1bmN0aW9uIGFzIGV4cGVjdGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGNvbmZpZ3VyZSB0aG9zZSB0d28gYXBwcm9wcmlhdGVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbi4qUENJX01TSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyMDpcdGRlcGVuZHMgb24gUENJX01TSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjEtXHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXHUwMDI2XHUwMDI2ICFDUFVfQklHX0VORElBTilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMTUKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogNDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNQU5BIERyaXZlciBJUlEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGF0IGBQQ0lfTVNJYCBpcyBhIGtleSBkZXBlbmRlbmN5IOKAkyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgcHJpbWFyeSBjb25maWd1cmF0aW9uIHRhcmdldCBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIGBNSUNST1NPRlRfTUFOQWAuIFRoYXQmIzM5O3MgdGhlIG1haW4gZHJpdmVyIGNvbmZpZyB0byBlbmFibGUuCgpOb3csIGxldCYjMzk7cyBnZXQgZG93biB0byB0aGUgZnVuY3Rpb25zIHRoaXMgcGF0Y2ggaXMgcmVhbGx5IGFib3V0LiBJJiMzOTt2ZSBnb3QgdG8gZm9jdXMgb246IGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYCwgYG1hbmFfaXJxX3NldHVwX2xpbmVhcmAsIGBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlYCwgYG1hbmFfZ2Rfc2V0dXBfaXJxc2AsIGFuZCBJIHNlZSBoZXJlIHRoYXQgYG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlc2AgaXMgYWxzbyBtb2RpZmllZCwgc28gSeKAmW0gYWRkaW5nIHRoYXQgdG8gdGhlIGxpc3QgdG9vLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCBob3cgdGhlIE1BTkEgZHJpdmVyIGhhbmRsZXMgSVJRIHNldHVwLiBXZSYjMzk7cmUgc2VlaW5nIGNoYW5nZXMgdG8gYm90aCBhIGxpbmVhciBJUlEgc2V0dXAgYW5kIGEgTlVNQS1hd2FyZSBJUlEgc2V0dXAg4oCTIHRoZSBsYXR0ZXIgaGFzIGJlZW4gcmVuYW1lZC9tb2RpZmllZCwgaXQgc2VlbXMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBwcm9iYWJseSBhY2Nlc3NpYmxlIHZpYSB0aGUgUENJIGRldmljZSBlbXVsYXRpb24sIHdoaWNoIG1ha2VzIGl0IHBlcmZlY3QgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gZW5zdXJlIElSUSBhbGxvY2F0aW9uIGFuZCBhZmZpbml0eSBoYW5kbGluZyBhcmUgY29ycmVjdC4KCkZvciBjb25maWd1cmF0aW9uLCBJJiMzOTtsbCBkZWZpbml0ZWx5IGJlIGxvb2tpbmcgYXQgYE1JQ1JPU09GVF9NQU5BYCBhbmQgYE5FVF9WRU5ET1JfTUlDUk9TT0ZUYC4KCkp1c3QgdG8gY29uZmlybSB0aGUgZnVuY3Rpb24gbmFtZXMsIGxldCBtZSBkb3VibGUtY2hlY2suIE9rYXksIHllcywgaXQmIzM5O3MgYG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSwgYm9vbCBza2lwX2ZpcnN0X2NwdSlgLCBgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilgLCBgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpYCwgYG1hbmFfZ2Rfc2V0dXBfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpYCwgYW5kIGBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpYC4gWWVwLCB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0byB0YXJnZXQuCgpBbHJpZ2h0LCBJIGRvbuKAmXQgc2VlIGFueSBvdGhlciByZWxldmFudCBmdW5jdGlvbnMgaGVyZS4gSSB0aGluayBJJiMzOTttIHJlYWR5IHRvIGNhbGwgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfVkVORE9SX01JQ1JPU09GVCYjMzQ7LAogICAgJiMzNDtNSUNST1NPRlRfTUFOQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hbmFfZ2Rfc2V0dXBfZHluX2lycXMmIzM0OywKICAgICYjMzQ7bWFuYV9pcnFfc2V0dXBfbGluZWFyJiMzNDssCiAgICAmIzM0O21hbmFfaXJxX3NldHVwX251bWFfYXdhcmUmIzM0OywKICAgICYjMzQ7bWFuYV9nZF9zZXR1cF9pcnFzJiMzNDssCiAgICAmIzM0O21hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSVJRIHNldHVwIGxvZ2ljIGluIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHNwZWNpZmljYWxseSBhZGRpbmcgbGluZWFyIElSUSBzZXR1cCBhbmQgbW9kaWZ5aW5nIHRoZSBOVU1BLWF3YXJlIElSUSBzZXR1cC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgZW11bGF0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IElSUSBhbGxvY2F0aW9uIGFuZCBhZmZpbml0eSBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9NSUNST1NPRlQmIzM0OywKICAgICYjMzQ7TUlDUk9TT0ZUX01BTkEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYW5hX2dkX3NldHVwX2R5bl9pcnFzJiMzNDssCiAgICAmIzM0O21hbmFfaXJxX3NldHVwX2xpbmVhciYjMzQ7LAogICAgJiMzNDttYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlJiMzNDssCiAgICAmIzM0O21hbmFfZ2Rfc2V0dXBfaXJxcyYjMzQ7LAogICAgJiMzNDttYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElSUSBzZXR1cCBsb2dpYyBpbiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGxpbmVhciBJUlEgc2V0dXAgYW5kIG1vZGlmeWluZyB0aGUgTlVNQS1hd2FyZSBJUlEgc2V0dXAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIGVtdWxhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBJUlEgYWxsb2NhdGlvbiBhbmQgYWZmaW5pdHkgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MTo1MS4wMzg5MDcyNjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTM4Nzk5MDYzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfVkVORE9SX01JQ1JPU09GVFwiLFxuICAgIFwiTUlDUk9TT0ZUX01BTkFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYW5hX2dkX3NldHVwX2R5bl9pcnFzXCIsXG4gICAgXCJtYW5hX2lycV9zZXR1cF9saW5lYXJcIixcbiAgICBcIm1hbmFfaXJxX3NldHVwX251bWFfYXdhcmVcIixcbiAgICBcIm1hbmFfZ2Rfc2V0dXBfaXJxc1wiLFxuICAgIFwibWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElSUSBzZXR1cCBsb2dpYyBpbiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGxpbmVhciBJUlEgc2V0dXAgYW5kIG1vZGlmeWluZyB0aGUgTlVNQS1hd2FyZSBJUlEgc2V0dXAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIGVtdWxhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBJUlEgYWxsb2NhdGlvbiBhbmQgYWZmaW5pdHkgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUxOjUxLjAzODkxODEzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc1Mzg5Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzkwNTI0MWI4Njk2MTMwMmJhM2RiYmJlYjEzNTA1N2JmYmY5OWU5MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1biAyNCAwNzo1MTo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXFxuaW5kZXggYTBmZGQwNTJkN2YxNjMuLmU4YjdmZmI0N2ViOTgyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcXG5AQCAtMjEwLDYgKzIxMCw4IEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHQvKiBJZiBkeW5hbWljIGFsbG9jYXRpb24gaXMgZW5hYmxlZCB3ZSBoYXZlIGFscmVhZHkgYWxsb2NhdGVkXFxuIFxcdFxcdCAqIGh3YyBtc2lcXG4rXFx0XFx0ICogQWxzbywgd2UgbWFrZSBzdXJlIGluIHRoaXMgY2FzZSB0aGUgZm9sbG93aW5nIGlzIGFsd2F5cyB0cnVlXFxuK1xcdFxcdCAqIChudW1fbXNpeF91c2FibGUgLSAxIEhXQykgXFx1MDAzYz0gbnVtX29ubGluZV9jcHVzKClcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGdjLVxcdTAwM2VudW1fbXNpeF91c2FibGUgPSBtaW4ocmVzcC5tYXhfbXNpeCwgbnVtX29ubGluZV9jcHVzKCkgKyAxKTtcXG4gXFx0fVxcbkBAIC0xOTA5LDggKzE5MTEsOCBAQCB2b2lkIG1hbmFfZ2RfZnJlZV9yZXNfbWFwKHN0cnVjdCBnZG1hX3Jlc291cmNlICpyKVxcbiAgKiBkbyB0aGUgc2FtZSB0aGluZy5cXG4gICovXFxuIFxcbi1zdGF0aWMgaW50IGlycV9zZXR1cCh1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4sIGludCBub2RlLFxcbi1cXHRcXHQgICAgIGJvb2wgc2tpcF9maXJzdF9jcHUpXFxuK3N0YXRpYyBpbnQgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSh1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4sXFxuK1xcdFxcdFxcdFxcdCAgICAgaW50IG5vZGUsIGJvb2wgc2tpcF9maXJzdF9jcHUpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IGNwdW1hc2sgKm5leHQsICpwcmV2ID0gY3B1X25vbmVfbWFzaztcXG4gXFx0Y3B1bWFza192YXJfdCBjcHVzIF9fZnJlZShmcmVlX2NwdW1hc2tfdmFyKTtcXG5AQCAtMTk0NiwxMSArMTk0OCwyNCBAQCBzdGF0aWMgaW50IGlycV9zZXR1cCh1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4sIGludCBub2RlLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBjcHVzX3JlYWRfbG9jaygpIGhlbGQgKi9cXG4rc3RhdGljIHZvaWQgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilcXG4re1xcbitcXHRpbnQgY3B1O1xcbitcXG4rXFx0Zm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHtcXG4rXFx0XFx0aWYgKGxlbiA9PSAwKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoKmlycXMrKywgY3B1bWFza19vZihjcHUpKTtcXG4rXFx0XFx0bGVuLS07XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcXG4ge1xcbiBcXHRzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYyA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gXFx0c3RydWN0IGdkbWFfaXJxX2NvbnRleHQgKmdpYztcXG4tXFx0Ym9vbCBza2lwX2ZpcnN0X2NwdSA9IGZhbHNlO1xcbiBcXHRpbnQgKmlycXMsIGVyciwgaSwgbXNpO1xcbiBcXG4gXFx0aXJxcyA9IGttYWxsb2Nfb2JqcyhpbnQsIG52ZWMpO1xcbkBAIC0xOTU4LDEwICsxOTczLDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0LypcXG4rXFx0ICogSW4gdGhpcyBmdW5jdGlvbiwgbnVtX21zaXhfdXNhYmxlID0gSFdDIElSUSArIFF1ZXVlIElSUS5cXG4rXFx0ICogbnZlYyBpcyBvbmx5IFF1ZXVlIElSUSAoSFdDIGFscmVhZHkgc2V0dXApLlxcbiBcXHQgKiBXaGlsZSBwcm9jZXNzaW5nIHRoZSBuZXh0IHBjaSBpcnEgdmVjdG9yLCB3ZSBzdGFydCB3aXRoIGluZGV4IDEsXFxuIFxcdCAqIGFzIElSUSB2ZWN0b3IgYXQgaW5kZXggMCBpcyBhbHJlYWR5IHByb2Nlc3NlZCBmb3IgSFdDLlxcbiBcXHQgKiBIb3dldmVyLCB0aGUgcG9wdWxhdGlvbiBvZiBpcnFzIGFycmF5IHN0YXJ0cyB3aXRoIGluZGV4IDAsIHRvIGJlXFxuLVxcdCAqIGZ1cnRoZXIgdXNlZCBpbiBpcnFfc2V0dXAoKVxcbitcXHQgKiBmdXJ0aGVyIHVzZWQgaW4gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSgpXFxuIFxcdCAqL1xcbiBcXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2M9IG52ZWM7IGkrKykge1xcbiBcXHRcXHRtc2kgPSBpO1xcbkBAIC0xOTc1LDE4ICsxOTkyLDUxIEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXFxuIFxcdH1cXG4gXFxuIFxcdC8qXFxuLVxcdCAqIFdoZW4gY2FsbGluZyBpcnFfc2V0dXAoKSBmb3IgZHluYW1pY2FsbHkgYWRkZWQgSVJRcywgaWYgbnVtYmVyIG9mXFxuLVxcdCAqIENQVXMgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIGFsbG9jYXRlZCBNU0ktWCwgd2UgbmVlZCB0byBza2lwIHRoZVxcbi1cXHQgKiBmaXJzdCBDUFUgc2libGluZyBncm91cCBzaW5jZSB0aGV5IGFyZSBhbHJlYWR5IGFmZmluaXRpemVkIHRvIEhXQyBJUlFcXG4rXFx0ICogV2hlbiBjYWxsaW5nIG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUoKSBmb3IgZHluYW1pY2FsbHkgYWRkZWQgSVJRcyxcXG4rXFx0ICogaWYgbnVtYmVyIG9mIENQVXMgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIGFsbG9jYXRlZCBNU0ktWCwgd2UgbmVlZCB0b1xcbitcXHQgKiBza2lwIHRoZSBmaXJzdCBDUFUgc2libGluZyBncm91cCBzaW5jZSB0aGV5IGFyZSBhbHJlYWR5IGFmZmluaXRpemVkIHRvXFxuK1xcdCAqIEhXQyBJUlFcXG4gXFx0ICovXFxuIFxcdGNwdXNfcmVhZF9sb2NrKCk7XFxuLVxcdGlmIChnYy1cXHUwMDNlbnVtX21zaXhfdXNhYmxlIFxcdTAwM2M9IG51bV9vbmxpbmVfY3B1cygpKVxcbi1cXHRcXHRza2lwX2ZpcnN0X2NwdSA9IHRydWU7XFxuK1xcdGlmIChnYy1cXHUwMDNlbnVtX21zaXhfdXNhYmxlIFxcdTAwM2M9IG51bV9vbmxpbmVfY3B1cygpKSB7XFxuK1xcdFxcdGVyciA9IG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUoaXJxcywgbnZlYywgZ2MtXFx1MDAzZW51bWFfbm9kZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0dHJ1ZSk7XFxuK1xcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0Y3B1c19yZWFkX3VubG9jaygpO1xcbitcXHRcXHRcXHRnb3RvIGZyZWVfaXJxO1xcbitcXHRcXHR9XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIFdoZW4gbnVtX21zaXhfdXNhYmxlIGFyZSBtb3JlIHRoYW4gbnVtX29ubGluZV9jcHVzLCBvdXJcXG4rXFx0XFx0ICogcXVldWUgSVJRcyBzaG91bGQgYmUgZXF1YWwgdG8gbnVtIG9mIG9ubGluZSB2Q1BVcy5cXG4rXFx0XFx0ICogV2UgdHJ5IHRvIG1ha2Ugc3VyZSBxdWV1ZSBJUlFzIHNwcmVhZCBhY3Jvc3MgYWxsIHZDUFVzLlxcbitcXHRcXHQgKiBJbiBzdWNoIGEgY2FzZSBOVU1BIG9yIENQVSBjb3JlIGFmZmluaXR5IGRvZXMgbm90IG1hdHRlci5cXG4rXFx0XFx0ICogTm90ZTogaW4gdGhpcyBjYXNlIHRoZSB0b3RhbCBtYW5hIElSUSBzaG91bGQgYWx3YXlzIGJlXFxuK1xcdFxcdCAqIG51bV9vbmxpbmVfY3B1cyArIDEuIFRoZSBmaXJzdCBIV0MgSVJRIGlzIGFscmVhZHkgaGFuZGxlZFxcbitcXHRcXHQgKiBpbiBIV0Mgc2V0dXAgY2FsbHNcXG4rXFx0XFx0ICogSG93ZXZlciwgaWYgQ1BVcyB3ZW50IG9mZmxpbmUgc2luY2UgbnVtX21zaXhfdXNhYmxlIHdhc1xcbitcXHRcXHQgKiBjb21wdXRlZCwgcXVldWUgSVJRcyB3aWxsIGJlIG1vcmUgdGhhbiBudW1fb25saW5lX2NwdXMoKS5cXG4rXFx0XFx0ICogSW4gc3VjaCBjYXNlcyByZW1haW5pbmcgZXh0cmEgSVJRcyB3aWxsIHJldGFpbiB0aGVpciBkZWZhdWx0XFxuK1xcdFxcdCAqIGFmZmluaXR5LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aW50IGZpcnN0X3VuYXNzaWduZWQgPSBudW1fb25saW5lX2NwdXMoKTtcXG4gXFxuLVxcdGVyciA9IGlycV9zZXR1cChpcnFzLCBudmVjLCBnYy1cXHUwMDNlbnVtYV9ub2RlLCBza2lwX2ZpcnN0X2NwdSk7XFxuLVxcdGlmIChlcnIpIHtcXG4tXFx0XFx0Y3B1c19yZWFkX3VubG9jaygpO1xcbi1cXHRcXHRnb3RvIGZyZWVfaXJxO1xcbitcXHRcXHRpZiAobnZlYyBcXHUwMDNlIGZpcnN0X3VuYXNzaWduZWQpIHtcXG4rXFx0XFx0XFx0Y2hhciBidWZbMzJdO1xcbitcXG4rXFx0XFx0XFx0aWYgKGZpcnN0X3VuYXNzaWduZWQgPT0gbnZlYyAtIDEpXFxuK1xcdFxcdFxcdFxcdHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFxcXCIlZFxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCBmaXJzdF91bmFzc2lnbmVkKTtcXG4rXFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBcXFwiJWQtJWRcXFwiLFxcbitcXHRcXHRcXHRcXHRcXHQgZmlyc3RfdW5hc3NpZ25lZCwgbnZlYyAtIDEpO1xcbitcXG4rXFx0XFx0XFx0ZGV2X2RiZyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHRcXFwiTUFOQSBJUlEgaW5kaWNlcyAjJXMgd2lsbCByZXRhaW4gdGhlIGRlZmF1bHQgQ1BVIGFmZmluaXR5XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRidWYpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRtYW5hX2lycV9zZXR1cF9saW5lYXIoaXJxcywgbnZlYyk7XFxuIFxcdH1cXG4gXFxuIFxcdGNwdXNfcmVhZF91bmxvY2soKTtcXG5AQCAtMjA0MSw3ICsyMDkxLDcgQEAgc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKVxcbiBcXHRcXHRudmVjIC09IDE7XFxuIFxcdH1cXG4gXFxuLVxcdGVyciA9IGlycV9zZXR1cChpcnFzLCBudmVjLCBnYy1cXHUwMDNlbnVtYV9ub2RlLCBmYWxzZSk7XFxuK1xcdGVyciA9IG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUoaXJxcywgbnZlYywgZ2MtXFx1MDAzZW51bWFfbm9kZSwgZmFsc2UpO1xcbiBcXHRpZiAoZXJyKSB7XFxuIFxcdFxcdGNwdXNfcmVhZF91bmxvY2soKTtcXG4gXFx0XFx0Z290byBmcmVlX2lycTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTE6NTEuNzE1Mzg2ODQ5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODcxMTQ5MjcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfVkVORE9SX01JQ1JPU09GVFwiLFxuICAgIFwiTUlDUk9TT0ZUX01BTkFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYW5hX2dkX3NldHVwX2R5bl9pcnFzXCIsXG4gICAgXCJtYW5hX2lycV9zZXR1cF9saW5lYXJcIixcbiAgICBcIm1hbmFfaXJxX3NldHVwX251bWFfYXdhcmVcIixcbiAgICBcIm1hbmFfZ2Rfc2V0dXBfaXJxc1wiLFxuICAgIFwibWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElSUSBzZXR1cCBsb2dpYyBpbiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGxpbmVhciBJUlEgc2V0dXAgYW5kIG1vZGlmeWluZyB0aGUgTlVNQS1hd2FyZSBJUlEgc2V0dXAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIGVtdWxhdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBJUlEgYWxsb2NhdGlvbiBhbmQgYWZmaW5pdHkgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzkwNTI0MWI4Njk2MTMwMmJhM2RiYmJlYjEzNTA1N2JmYmY5OWU5MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDA3OjUxOjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uY1xuaW5kZXggYTBmZGQwNTJkN2YxNjMuLmU4YjdmZmI0N2ViOTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXG5AQCAtMjEwLDYgKzIxMCw4IEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0fSBlbHNlIHtcbiBcdFx0LyogSWYgZHluYW1pYyBhbGxvY2F0aW9uIGlzIGVuYWJsZWQgd2UgaGF2ZSBhbHJlYWR5IGFsbG9jYXRlZFxuIFx0XHQgKiBod2MgbXNpXG4rXHRcdCAqIEFsc28sIHdlIG1ha2Ugc3VyZSBpbiB0aGlzIGNhc2UgdGhlIGZvbGxvd2luZyBpcyBhbHdheXMgdHJ1ZVxuK1x0XHQgKiAobnVtX21zaXhfdXNhYmxlIC0gMSBIV0MpIFx1MDAzYz0gbnVtX29ubGluZV9jcHVzKClcbiBcdFx0ICovXG4gXHRcdGdjLVx1MDAzZW51bV9tc2l4X3VzYWJsZSA9IG1pbihyZXNwLm1heF9tc2l4LCBudW1fb25saW5lX2NwdXMoKSArIDEpO1xuIFx0fVxuQEAgLTE5MDksOCArMTkxMSw4IEBAIHZvaWQgbWFuYV9nZF9mcmVlX3Jlc19tYXAoc3RydWN0IGdkbWFfcmVzb3VyY2UgKnIpXG4gICogZG8gdGhlIHNhbWUgdGhpbmcuXG4gICovXG4gXG4tc3RhdGljIGludCBpcnFfc2V0dXAodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSxcbi1cdFx0ICAgICBib29sIHNraXBfZmlyc3RfY3B1KVxuK3N0YXRpYyBpbnQgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSh1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4sXG4rXHRcdFx0XHQgICAgIGludCBub2RlLCBib29sIHNraXBfZmlyc3RfY3B1KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBjcHVtYXNrICpuZXh0LCAqcHJldiA9IGNwdV9ub25lX21hc2s7XG4gXHRjcHVtYXNrX3Zhcl90IGNwdXMgX19mcmVlKGZyZWVfY3B1bWFza192YXIpO1xuQEAgLTE5NDYsMTEgKzE5NDgsMjQgQEAgc3RhdGljIGludCBpcnFfc2V0dXAodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSxcbiBcdHJldHVybiAwO1xuIH1cbiBcbisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIGNwdXNfcmVhZF9sb2NrKCkgaGVsZCAqL1xuK3N0YXRpYyB2b2lkIG1hbmFfaXJxX3NldHVwX2xpbmVhcih1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4pXG4re1xuK1x0aW50IGNwdTtcbitcbitcdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XG4rXHRcdGlmIChsZW4gPT0gMClcbitcdFx0XHRicmVhaztcbitcbitcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcysrLCBjcHVtYXNrX29mKGNwdSkpO1xuK1x0XHRsZW4tLTtcbitcdH1cbit9XG4rXG4gc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcbiB7XG4gXHRzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYyA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiBcdHN0cnVjdCBnZG1hX2lycV9jb250ZXh0ICpnaWM7XG4tXHRib29sIHNraXBfZmlyc3RfY3B1ID0gZmFsc2U7XG4gXHRpbnQgKmlycXMsIGVyciwgaSwgbXNpO1xuIFxuIFx0aXJxcyA9IGttYWxsb2Nfb2JqcyhpbnQsIG52ZWMpO1xuQEAgLTE5NTgsMTAgKzE5NzMsMTIgQEAgc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHQvKlxuK1x0ICogSW4gdGhpcyBmdW5jdGlvbiwgbnVtX21zaXhfdXNhYmxlID0gSFdDIElSUSArIFF1ZXVlIElSUS5cbitcdCAqIG52ZWMgaXMgb25seSBRdWV1ZSBJUlEgKEhXQyBhbHJlYWR5IHNldHVwKS5cbiBcdCAqIFdoaWxlIHByb2Nlc3NpbmcgdGhlIG5leHQgcGNpIGlycSB2ZWN0b3IsIHdlIHN0YXJ0IHdpdGggaW5kZXggMSxcbiBcdCAqIGFzIElSUSB2ZWN0b3IgYXQgaW5kZXggMCBpcyBhbHJlYWR5IHByb2Nlc3NlZCBmb3IgSFdDLlxuIFx0ICogSG93ZXZlciwgdGhlIHBvcHVsYXRpb24gb2YgaXJxcyBhcnJheSBzdGFydHMgd2l0aCBpbmRleCAwLCB0byBiZVxuLVx0ICogZnVydGhlciB1c2VkIGluIGlycV9zZXR1cCgpXG4rXHQgKiBmdXJ0aGVyIHVzZWQgaW4gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSgpXG4gXHQgKi9cbiBcdGZvciAoaSA9IDE7IGkgXHUwMDNjPSBudmVjOyBpKyspIHtcbiBcdFx0bXNpID0gaTtcbkBAIC0xOTc1LDE4ICsxOTkyLDUxIEBAIHN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXG4gXHR9XG4gXG4gXHQvKlxuLVx0ICogV2hlbiBjYWxsaW5nIGlycV9zZXR1cCgpIGZvciBkeW5hbWljYWxseSBhZGRlZCBJUlFzLCBpZiBudW1iZXIgb2Zcbi1cdCAqIENQVXMgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIGFsbG9jYXRlZCBNU0ktWCwgd2UgbmVlZCB0byBza2lwIHRoZVxuLVx0ICogZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0byBIV0MgSVJRXG4rXHQgKiBXaGVuIGNhbGxpbmcgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSgpIGZvciBkeW5hbWljYWxseSBhZGRlZCBJUlFzLFxuK1x0ICogaWYgbnVtYmVyIG9mIENQVXMgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIGFsbG9jYXRlZCBNU0ktWCwgd2UgbmVlZCB0b1xuK1x0ICogc2tpcCB0aGUgZmlyc3QgQ1BVIHNpYmxpbmcgZ3JvdXAgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZmZpbml0aXplZCB0b1xuK1x0ICogSFdDIElSUVxuIFx0ICovXG4gXHRjcHVzX3JlYWRfbG9jaygpO1xuLVx0aWYgKGdjLVx1MDAzZW51bV9tc2l4X3VzYWJsZSBcdTAwM2M9IG51bV9vbmxpbmVfY3B1cygpKVxuLVx0XHRza2lwX2ZpcnN0X2NwdSA9IHRydWU7XG4rXHRpZiAoZ2MtXHUwMDNlbnVtX21zaXhfdXNhYmxlIFx1MDAzYz0gbnVtX29ubGluZV9jcHVzKCkpIHtcbitcdFx0ZXJyID0gbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZShpcnFzLCBudmVjLCBnYy1cdTAwM2VudW1hX25vZGUsXG4rXHRcdFx0XHRcdFx0dHJ1ZSk7XG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4rXHRcdFx0Z290byBmcmVlX2lycTtcbitcdFx0fVxuK1x0fSBlbHNlIHtcbitcdFx0LypcbitcdFx0ICogV2hlbiBudW1fbXNpeF91c2FibGUgYXJlIG1vcmUgdGhhbiBudW1fb25saW5lX2NwdXMsIG91clxuK1x0XHQgKiBxdWV1ZSBJUlFzIHNob3VsZCBiZSBlcXVhbCB0byBudW0gb2Ygb25saW5lIHZDUFVzLlxuK1x0XHQgKiBXZSB0cnkgdG8gbWFrZSBzdXJlIHF1ZXVlIElSUXMgc3ByZWFkIGFjcm9zcyBhbGwgdkNQVXMuXG4rXHRcdCAqIEluIHN1Y2ggYSBjYXNlIE5VTUEgb3IgQ1BVIGNvcmUgYWZmaW5pdHkgZG9lcyBub3QgbWF0dGVyLlxuK1x0XHQgKiBOb3RlOiBpbiB0aGlzIGNhc2UgdGhlIHRvdGFsIG1hbmEgSVJRIHNob3VsZCBhbHdheXMgYmVcbitcdFx0ICogbnVtX29ubGluZV9jcHVzICsgMS4gVGhlIGZpcnN0IEhXQyBJUlEgaXMgYWxyZWFkeSBoYW5kbGVkXG4rXHRcdCAqIGluIEhXQyBzZXR1cCBjYWxsc1xuK1x0XHQgKiBIb3dldmVyLCBpZiBDUFVzIHdlbnQgb2ZmbGluZSBzaW5jZSBudW1fbXNpeF91c2FibGUgd2FzXG4rXHRcdCAqIGNvbXB1dGVkLCBxdWV1ZSBJUlFzIHdpbGwgYmUgbW9yZSB0aGFuIG51bV9vbmxpbmVfY3B1cygpLlxuK1x0XHQgKiBJbiBzdWNoIGNhc2VzIHJlbWFpbmluZyBleHRyYSBJUlFzIHdpbGwgcmV0YWluIHRoZWlyIGRlZmF1bHRcbitcdFx0ICogYWZmaW5pdHkuXG4rXHRcdCAqL1xuK1x0XHRpbnQgZmlyc3RfdW5hc3NpZ25lZCA9IG51bV9vbmxpbmVfY3B1cygpO1xuIFxuLVx0ZXJyID0gaXJxX3NldHVwKGlycXMsIG52ZWMsIGdjLVx1MDAzZW51bWFfbm9kZSwgc2tpcF9maXJzdF9jcHUpO1xuLVx0aWYgKGVycikge1xuLVx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4tXHRcdGdvdG8gZnJlZV9pcnE7XG4rXHRcdGlmIChudmVjIFx1MDAzZSBmaXJzdF91bmFzc2lnbmVkKSB7XG4rXHRcdFx0Y2hhciBidWZbMzJdO1xuK1xuK1x0XHRcdGlmIChmaXJzdF91bmFzc2lnbmVkID09IG52ZWMgLSAxKVxuK1x0XHRcdFx0c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXCIlZFwiLFxuK1x0XHRcdFx0XHQgZmlyc3RfdW5hc3NpZ25lZCk7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXCIlZC0lZFwiLFxuK1x0XHRcdFx0XHQgZmlyc3RfdW5hc3NpZ25lZCwgbnZlYyAtIDEpO1xuK1xuK1x0XHRcdGRldl9kYmcoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHRcIk1BTkEgSVJRIGluZGljZXMgIyVzIHdpbGwgcmV0YWluIHRoZSBkZWZhdWx0IENQVSBhZmZpbml0eVxcblwiLFxuK1x0XHRcdFx0YnVmKTtcbitcdFx0fVxuK1xuK1x0XHRtYW5hX2lycV9zZXR1cF9saW5lYXIoaXJxcywgbnZlYyk7XG4gXHR9XG4gXG4gXHRjcHVzX3JlYWRfdW5sb2NrKCk7XG5AQCAtMjA0MSw3ICsyMDkxLDcgQEAgc3RhdGljIGludCBtYW5hX2dkX3NldHVwX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKVxuIFx0XHRudmVjIC09IDE7XG4gXHR9XG4gXG4tXHRlcnIgPSBpcnFfc2V0dXAoaXJxcywgbnZlYywgZ2MtXHUwMDNlbnVtYV9ub2RlLCBmYWxzZSk7XG4rXHRlcnIgPSBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlKGlycXMsIG52ZWMsIGdjLVx1MDAzZW51bWFfbm9kZSwgZmFsc2UpO1xuIFx0aWYgKGVycikge1xuIFx0XHRjcHVzX3JlYWRfdW5sb2NrKCk7XG4gXHRcdGdvdG8gZnJlZV9pcnE7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MTo1MS43MTUzODg3NzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM0NTA0NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1BTkEgRHJpdmVyIElSUSBBZmZpbml0eSBDb25maWd1cmF0aW9uIC0gQSBSZWZpbmVtZW50KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNgLiBNeSBpbml0aWFsIHJlYWQgaW5kaWNhdGVzIHRoaXMgaXMgYSBmb2N1c2VkIHVwZGF0ZSB0byB0aGUgTUFOQSBkcml2ZXIuIEkgc2VlIHRoZXkncmUgcmVuYW1pbmcgYGlycV9zZXR1cGAgdG8gYG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmVgLCB3aGljaCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGF0dGVudGlvbi4gVGhhdCBzdWdnZXN0cyBhIGRlbGliZXJhdGUgZWZmb3J0IHRvIGludGVncmF0ZSBOVU1BIGF3YXJlbmVzcyBpbnRvIHRoZSBJUlEgc2V0dXAsIGxpa2VseSBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9uIE5VTUEgYXJjaGl0ZWN0dXJlcy4gVGhlIGludHJvZHVjdGlvbiBvZiBgbWFuYV9pcnFfc2V0dXBfbGluZWFyYCBpcyBhbHNvIGludGVyZXN0aW5nOyBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhhdCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBjb250ZXh0LlxuXG5UaGUgbWVhdCBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2AsIHdoaWNoIGlzIHdoZXJlIHRoZXkncmUgbW9kaWZ5aW5nIHRoZSBJUlEgYWZmaW5pdHkgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBkZWZpbml0ZWx5IHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0IHN1Z2dlc3RzIGEgbW9yZSBzb3BoaXN0aWNhdGVkIG9yIGNvbmZpZ3VyYWJsZSBhcHByb2FjaCB0byBhc3NpZ25pbmcgSVJRcyB0byBDUFVzIG9yIENQVSBjb3Jlcy4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIHRoaXMgaW4gbGlnaHQgb2YgTUFOQSdzIGludGVuZGVkIHVzZSBjYXNlIGFuZCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaXQncyBkZXNpZ25lZCBmb3IgdG8gdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHNoaWZ0LlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBpdCdzIHdvcnRoIGNoZWNraW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE1BTkEuIEFyZSB0aGVyZSBhbnkgbmV3IGtub2JzIG9yIHBhcmFtZXRlcnMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgZXhpc3Rpbmcgb3B0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCBvciBkZXByZWNhdGVkPyBUaGlzIGNvbnRleHQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBwcmFjdGljYWwgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MTo1NS45NDk4OTgwNTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQwNjA4NTMwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYW5hX2dkX3NldHVwX2R5bl9pcnFzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTE5NTI9c3RhdGljIHZvaWQgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTk2NTpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfZHluX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjE0ND1zdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfcmVtYWluaW5nX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxNjg6XFx0ZXJyID0gbWFuYV9nZF9zZXR1cF9keW5faXJxcyhwZGV2LCBtYXhfaXJxcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE2OS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MTo1OS4zNTU5OTU5MDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYxNDcxNjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqRmluZGluZyB0aGUgTUFOQSBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBsb2NhdGUgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggTUFOQS4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIHNlYXJjaDsgaXQncyBhIHBpbnBvaW50aW5nIGV4ZXJjaXNlLiBJJ20gbG9va2luZyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IGRpY3RhdGVzIHRoZSBidWlsZCBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCB1bHRpbWF0ZWx5LCB0aGUgYmVoYXZpb3Igb2YgdGhlIE1BTkEgY29tcG9uZW50IHdpdGhpbiB0aGUgc3lzdGVtLiBJcyBpdCBhIHRvcC1sZXZlbCBLY29uZmlnLCBuZXN0bGVkIGluIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGlyZWN0b3JpZXMsIG9yIHBlcmhhcHMgd2l0aGluIGEgc3ViLW1vZHVsZT8gT3IgbWF5YmUgaXQncyBpbnRlZ3JhdGVkIHdpdGggYSBtb3JlIGdlbmVyYWxpemVkIGZyYW1ld29yaz9cblxuTXkgbWVudGFsIGNoZWNrbGlzdCBzdGFydHM6IGZpcnN0LCB0aGUgb2J2aW91cyBwbGFjZXMuLi4gY29tbW9uIGFyZWFzLCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UuIE5leHQsIEkgbmVlZCB0byBjb25zaWRlciBhbnkgY3VzdG9tIGJ1aWxkIHN5c3RlbXMgb3IgbWV0YS1sYXllcnMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZCDigJMgd2hlcmUgYXJlIHRoZSBidWlsZCBzeXN0ZW1zIGluY2x1ZGluZyB0aGVzZT8gQSBxdWljayBncmVwIG1pZ2h0IGJlIGluIG9yZGVyLCBzY2FubmluZyBmb3IgXCJNQU5BXCIgd2l0aGluIHRoZSBidWlsZCB0cmVlLCBmb2N1c2luZyBvbiBmaWxlcyB3aXRoIHRoZSBgLmNvbmZpZ2Agb3IgYEtjb25maWdgIGV4dGVuc2lvbnMuIElmIHRoYXQgZG9lc24ndCBpbW1lZGlhdGVseSB5aWVsZCByZXN1bHRzLCBJJ2xsIG5lZWQgdG8gZXhwYW5kIG15IHNlYXJjaCwgdGhpbmtpbmcgYWJvdXQgaG93IE1BTkEgaXMgaW50ZWdyYXRlZDsgaXRzIGRlcGVuZGVuY3kgY2hhaW4sIGlmIGFueS4gSSdtIHByb2JhYmx5IGxvb2tpbmcgYXQgYSByZWN1cnNpdmUgYXBwcm9hY2gsIGRpdmluZyB0aHJvdWdoIHZhcmlvdXMgZGlyZWN0b3JpZXMgYW5kIHBvdGVudGlhbCBtb2R1bGVzIHVudGlsIEkgZmluZCB0aGUgZGVmaW5pbmcgS2NvbmZpZy4gVGhlIGdvYWwgaXNuJ3QganVzdCB0byAqZmluZCogaXQsIGJ1dCB0byB1bmRlcnN0YW5kIGl0cyBsb2NhdGlvbiB3aXRoaW4gdGhlIHdpZGVyIHByb2plY3Qgc3RydWN0dXJlLiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBNQU5BIGlzIGNvbmZpZ3VyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjowMi44MTc0NzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI5MDExMDk1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUlDUk9TT0ZUX01BTkFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoxODpjb25maWcgTUlDUk9TT0ZUX01BTkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTI6MDYuMTA3NTkxNjExWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA0MzU0NDQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiB0aGUgTUFOQSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBNSUNST1NPRlRfTUFOQWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBJJ20gc2VlaW5nIGNoYW5nZXMgdG8gYG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlc2AsIGBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlYCAod2hpY2ggd2FzIHJlbmFtZWQgZnJvbSBgaXJxX3NldHVwYCksIGFuZCB0aGUgYWRkaXRpb24gb2YgYG1hbmFfaXJxX3NldHVwX2xpbmVhcmAgYWxvbmcgd2l0aCBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2AgYW5kIGBtYW5hX2dkX3NldHVwX2lycXNgLiBBbGwgb2YgdGhlc2UgYXBwZWFyIHRvIGJlIGludGVncmFsIHRvIHRoZSBNQU5BIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIGFuZCBzZXR1cCBzZXF1ZW5jZS5cblxuTXkgbmV4dCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBDb25zaWRlcmluZyB0aGF0IE1BTkEgaXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgYW5kIHRoYXQgaXQgaXMgYSBQQ0kgZGV2aWNlLCB0aGlzIGRvZXMgbWFrZSBhIGRpZmZlcmVuY2UuIERpcmVjdCBmdXp6aW5nIHdpdGggc29tZXRoaW5nIGxpa2UgU3l6a2FsbGVyIG1pZ2h0IGJlIHRyaWNreSB1bmxlc3Mgd2UncmUgcnVubmluZyBpbiBBenVyZSBvciBoYXZlIGEgZ29vZCBlbXVsYXRvci4gSG93ZXZlciwgYmVpbmcgYSBQQ0kgZHJpdmVyLCBpdCBzaG91bGQsIGluIHRoZW9yeSwgYmUgcmVhY2hhYmxlIHRocm91Z2ggUENJIGZ1enppbmcgaWYgdGhlIGNvcnJlY3QgUENJIElEIGlzIHRyaWdnZXJlZC5cblxuQWgsIGJ1dCBJIG5lZWQgdG8gcmVjYWxsIHRoZSBjb250ZXh0LiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0IGNlcnRhaW4gY29kZSBwYXRocyBhcmUgKmltcG9zc2libGUqIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBUaGF0IGxlYWRzIG1lIHRvIGFzayAtIElzIE1BTkEgZW11bGF0ZWQgaW4gc29tZXRoaW5nIGxpa2UgUUVNVT8gSSBkb24ndCByZWNhbGwgaXQgYmVpbmcuIFRoZSB0aGluZyBpcywgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciBhbmQgdGhhdCdzIGFuIGltcG9ydGFudCBkZXRhaWwuIEl0ICpjYW4qIGVtdWxhdGUgUENJIGRldmljZXMuIFRoYXQgY2hhbmdlcyB0aGluZ3MuIFRoaXMgbWVhbnMsIFBDSSBkcml2ZXJzICphcmUqIGFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggU3l6a2FsbGVyJ3MgUENJIGZ1enplciAoYHN5el9wY2lfZGV2aWNlYCksIHdoaWNoIGFsbG93cyBhcmJpdHJhcnkgUENJIGRldmljZSBpbmplY3Rpb24uIE5vdyBJIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBQQ0kgSURzIGZvciBNQU5BLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjYwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUyOjEzLjE1MTEzOTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUzOTk4MzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEUuKnBjaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjU2MD1tb2R1bGVfZXhpdChtYW5hX2RyaXZlcl9leGl0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1NjI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1hbmFfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1NjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUyOjEzLjQwNTE0OTk1M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjg5MjE2MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCBhbmQgd3JpdGluZyBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgRGF0YSBTY2hlbWEqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBGaXJzdCwgSSdtIHRoaW5raW5nLCBcIkxldCdzIHNlZSBgbWFuYV9pZF90YWJsZWAuXCIgVGhpcyBpbW1lZGlhdGVseSBzdWdnZXN0cyBJJ20gYWJvdXQgdG8gYXNzZXNzIGEgZGF0YWJhc2UgdGFibGUsIGxpa2VseSBjcnVjaWFsIGZvciBzb21lIHByb2Nlc3MuIFRoZSB1c2Ugb2YgXCJzZWVcIiBoaW50cyB0aGF0IEknbSBtZW50YWxseSB2aXN1YWxpemluZyBvciByZXRyaWV2aW5nIHRoZSB0YWJsZSdzIHN0cnVjdHVyZSBpbiBteSBtaW5kLCBvciBwZXJoYXBzIHByZXBhcmluZyB0byBxdWVyeSBvciBpbnNwZWN0IGl0IGRpcmVjdGx5LiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3IgaXRzIHN0cnVjdHVyZSwga2V5IGZpZWxkcywgYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBicm9hZGVyIGRhdGEgbW9kZWwuIEl0J3MgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBzb21lIGRlZXBlciBpbnZlc3RpZ2F0aW9uLiBUaGlzIGNvdWxkIGJlIGRhdGEgYW5hbHlzaXMsIGRlYnVnZ2luZyBhIHJlbGF0ZWQgcHJvY2Vzcywgb3IgbWF5YmUgZXZlbiBwcmVwYXJpbmcgdG8gd3JpdGUgc29tZSBjb2RlIHRoYXQgdXRpbGl6ZXMgdGhpcyB0YWJsZS4gVGhlIHNwZWNpZmljIG5hbWUgYG1hbmFfaWRfdGFibGVgIGl0c2VsZiBvZmZlcnMgYSBoaW50OyBJdCBsaWtlbHkgaG9sZHMgbWFwcGluZ3MgYmV0d2VlbiBkaWZmZXJlbnQgaWRlbnRpZmljYXRpb24gbWV0aG9kcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU2MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUyOjE2LjQ3NDA3NDk5OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwODk4OTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hbmFfaWRfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0ODU9c3RhdGljIHZvaWQgbWFuYV9nZF9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ5OTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWFuYV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDAtXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGX0RFVklDRV9JRCkgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI1MDY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hbmFfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDctXFx0Lm5hbWVcXHRcXHQ9IFxcXCJtYW5hXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTA4OlxcdC5pZF90YWJsZVxcdD0gbWFuYV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTA5LVxcdC5wcm9iZVxcdFxcdD0gbWFuYV9nZF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI1NjA9bW9kdWxlX2V4aXQobWFuYV9kcml2ZXJfZXhpdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjU2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTYyOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtYW5hX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTYzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjoxNi43NDQ5OTM2MTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI0NTE1OTI1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKlBDSSBEcml2ZXIgRnV6emluZyBTdHJhdGVneSoqXG5cblJpZ2h0LCBzbyB0aGlzIGlzIGEgdHlwaWNhbCBQQ0kgZHJpdmVyLCBhbmQgdGhlIHBsYW4gaXMgdG8gaGl0IGl0IHdpdGggU3l6a2FsbGVyLCBzcGVjaWZpY2FsbHkgdXNpbmcgYHN5el9wY2lfZGV2aWNlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGtleSBmdW5jdGlvbnMgU3l6a2FsbGVyIHdpbGwgdGFyZ2V0IGZvciBmdXp6aW5nLiBTZWVtcyBsaWtlIHRoZSBjb3JlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlOiBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2AsIGBtYW5hX2lycV9zZXR1cF9saW5lYXJgLCBgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZWAsIGFuZCBgbWFuYV9nZF9zZXR1cF9pcnFzYC5cblxuVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBkbyBJIGdldCB0byBgbWFuYV9nZF9zZXR1cF9keW5faXJxc2A/IEknbGwgdHJhY2UgaXRzIGNhbGwgcGF0aC4gT2theSwgaXQncyBjYWxsZWQgZnJvbSBgbWFuYV9nZF9zZXR1cF9yZW1haW5pbmdfaXJxc2AsIHdoaWNoIHN1Z2dlc3RzIGl0J3MgcGFydCBvZiBhbiBpbml0aWFsaXphdGlvbiBvciBzZXR1cCBzZXF1ZW5jZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlICp0aGF0KiBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbS4gVGhhdCdzIHRoZSBrZXkgdG8gdHJpZ2dlcmluZyB0aGUgdnVsbmVyYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI0MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjoyNC45OTAxNTYwODNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Mjc2NjM4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMTEyPXN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9od2NfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjE0NDpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfcmVtYWluaW5nX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMjAyPXN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjI0NTpcXHRlcnIgPSBtYW5hX2dkX3NldHVwX3JlbWFpbmluZ19pcnFzKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyNDYtXFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjoyNS4xMzI5MzE0MTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzODEyMjEzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRlZXAgRGl2ZTogYG1hbmFfZ2Rfc2V0dXBgIENhbGxlZCBieSBgbWFuYV9nZF9wcm9iZWAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYXJjaGl0ZWN0dXJlIGhlcmUgaXMgY3J5c3RhbCBjbGVhci4gSSdtIHNlZWluZyBhIHZlcnkgc3BlY2lmaWMsIGRlbGliZXJhdGUgZmxvdyBvZiBleGVjdXRpb24uIFdlJ3ZlIGdvdCBgbWFuYV9nZF9wcm9iZWAsIHdoaWNoIGlzLCBhcyB0aGUgbmFtZSBzdWdnZXN0cywgYSBwcm9iaW5nIGZ1bmN0aW9uLiBJdHMgam9iIGlzIGxpa2VseSB0byBkZXRlY3Qgc29tZXRoaW5nIOKAkyBwZXJoYXBzIGhhcmR3YXJlIHByZXNlbmNlLCBkcml2ZXIgY2FwYWJpbGl0aWVzLCBjb25maWd1cmF0aW9uLCBvciBzb21lIGNyaXRpY2FsIHN5c3RlbSBzdGF0ZSByZWxhdGVkIHRvIFwibWFuYVwiICh3aGF0ZXZlciB0aGF0IGlzIOKAkyBsaWtlbHkgZ3JhcGhpY3Mgb3IgbWVtb3J5IGFsbG9jYXRpb24pLlxuXG5UaGUgZmFjdCB0aGF0IGBtYW5hX2dkX3Byb2JlYCBjYWxscyBgbWFuYV9nZF9zZXR1cGAgaW1tZWRpYXRlbHkgc2lnbmFscyBhIGtleSBkZXNpZ24gcHJpbmNpcGxlOiB0aGUgcHJvYmUgKmVzdGFibGlzaGVzIHRoZSBlbnZpcm9ubWVudCogZm9yIHRoZSBzZXR1cC4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlIGluIGFueSByb2J1c3Qgc3lzdGVtLiBGaXJzdCwgeW91IGFzc2VzczsgdGhlbiwgeW91IGNvbmZpZ3VyZS4gVGhlIHByb2Jpbmcgc3RlcCB3aWxsIHByb2JhYmx5IGdhdGhlciBhbGwgdGhlIG5lY2Vzc2FyeSBwYXJhbWV0ZXJzLCBjb25maWd1cmF0aW9ucywgYW5kIHBvdGVudGlhbGx5IGFueSByZXNvdXJjZSBhbGxvY2F0aW9ucyBvciBpbml0aWFsaXphdGlvbnMsIGJlZm9yZSB0aGVuIGNhbGxpbmcgdGhlIGBzZXR1cGAgZnVuY3Rpb24uIFRoZSBgc2V0dXBgIGZ1bmN0aW9uLCB0aGVuLCB3aWxsIGFjdHVhbGx5IHBlcmZvcm0gYWxsIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBhbmQgY29uZmlndXJhdGlvbiB3b3JrIGJhc2VkIG9uIHdoYXRldmVyIGBwcm9iZWAgaGFzIGRpc2NvdmVyZWQuIFRoZSBzZXR1cCB3b3VsZCBoYW5kbGUgYW55IGRldmljZSBzcGVjaWZpY3MsIHJlc291cmNlIGFsbG9jYXRpb25zLCBvciBnZW5lcmFsIHN5c3RlbSBzZXR1cC5cblxuSXQncyBhIG5pY2UsIGNsZWFuIHNlcGFyYXRpb24gb2YgY29uY2VybnMuIGBtYW5hX2dkX3Byb2JlYCBoYW5kbGVzIGRpc2NvdmVyeSwgYW5kIHRoZW4gYG1hbmFfZ2Rfc2V0dXBgIGhhbmRsZXMgY29uZmlndXJhdGlvbiBiYXNlZCBvbiB3aGF0IHRoZSBwcm9iZSBmaW5kcy4gVGhpcyBtYWtlcyB0aGUgY29kZSBmYXIgbW9yZSBtb2R1bGFyIGFuZCBtYWludGFpbmFibGUsIHNvbWV0aGluZyBJIGFsd2F5cyBhcHByZWNpYXRlLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBib3RoIGZ1bmN0aW9uIGRlZmluaXRpb25zIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcywgYnV0IHRoZSBoaWdoLWxldmVsIGRlc2lnbiBpcyBhbHJlYWR5IHNvdW5kLiBJIGNhbiBwcm9iYWJseSBtYWtlIGEgZ29vZCBwcmVkaWN0aW9uIGJhc2VkIG9uIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MTUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjoyOC45NzEwNTczMzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzU5ODc5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYW5hX2dkX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xNzc9c3RhdGljIGludCBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTEtXFx0ICogTVNJLVggYWxsb2NhdGlvbjsgb24gbm9uLWR5biBwbGF0Zm9ybXMgbXNpX3NoYXJpbmcgaXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxOTI6XFx0ICogdW5jb25kaXRpb25hbGx5IHRydWUgKHNldCBpbiBtYW5hX2dkX3NldHVwX2h3Y19pcnFzKS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTMtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xOTUyPXN0YXRpYyB2b2lkIG1hbmFfaXJxX3NldHVwX2xpbmVhcih1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE5NjU6c3RhdGljIGludCBtYW5hX2dkX3NldHVwX2R5bl9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIwNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjA1MzpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjA1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxMTI6c3RhdGljIGludCBtYW5hX2dkX3NldHVwX2h3Y19pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMTMyOlxcdGVyciA9IG1hbmFfZ2Rfc2V0dXBfaXJxcyhwZGV2LCBudmVjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTMzLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjE0NDpzdGF0aWMgaW50IG1hbmFfZ2Rfc2V0dXBfcmVtYWluaW5nX2lycXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxNjg6XFx0ZXJyID0gbWFuYV9nZF9zZXR1cF9keW5faXJxcyhwZGV2LCBtYXhfaXJxcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE2OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjE3Nz1zdGF0aWMgdm9pZCBtYW5hX2dkX3JlbW92ZV9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMjAyOnN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMjAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjIyMjpcXHRlcnIgPSBtYW5hX2dkX3NldHVwX2h3Y19pcnFzKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIyMjMtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjI0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMjQ1OlxcdGVyciA9IG1hbmFfZ2Rfc2V0dXBfcmVtYWluaW5nX2lycXMocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjI0Ni1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMzAyPXN0YXRpYyBpbnQgbWFuYV9nZF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjM1NDpcXHRlcnIgPSBtYW5hX2dkX3NldHVwKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzNTUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzOTYtXFx0ICogSGFyZHdhcmUgY291bGQgYmUgaW4gcmVjb3ZlcnkgbW9kZSBhbmQgdGhlIEhXQyByZXR1cm5zIFRJTUVET1VUIG9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjM5NzpcXHQgKiBFUFJPVE8gZnJvbSBtYW5hX2dkX3NldHVwKCksIG1hbmFfcHJvYmUoKSBvciBtYW5hX3JkbWFfcHJvYmUoKSwgb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMzk4LVxcdCAqIHdlIHJlY2VpdmVkIGEgaGFyZHdhcmUgcmVzZXQgZXZlbnQgb3ZlciBIV0MgaW50ZXJydXB0LiBJbiB0aGlzIGNhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNDYwPWludCBtYW5hX2dkX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0NjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ2NTpcXHRlcnIgPSBtYW5hX2dkX3NldHVwKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0NjYtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTI6MjkuMTk4NjYxNjIxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTU5NjMwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTUFOQSBEcml2ZXIgQ29kZSBQYXRoKipcblxuT2theSwgc28gSSd2ZSB0cmFjZWQgdGhlIGNhbGwgc3RhY2sgaGVyZS4gYG1hbmFfZ2RfcHJvYmVgIHRyaWdnZXJzIGBtYW5hX2dkX3NldHVwYCwgd2hpY2ggdGhlbiBjYWxscyBgbWFuYV9nZF9zZXR1cF9yZW1haW5pbmdfaXJxc2AgYW5kLCBjcnVjaWFsbHksIGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYC4gVGhhdCdzIGEgY2xlYXIgcGF0aCB0aGF0IGEgUENJIGZ1enplciBjb3VsZCBkZWZpbml0ZWx5IGhpdCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuXG5cbkdpdmVuIHRoYXQsIEkgbmVlZCB0byB6ZXJvIGluIG9uIGEgZmV3IGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHk6IGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYCwgb2J2aW91c2x5LCBhbG9uZyB3aXRoIGBtYW5hX2lycV9zZXR1cF9saW5lYXJgLCBgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZWAsIGFuZCBgbWFuYV9nZF9zZXR1cF9pcnFzYC4gVGhvc2UgYXJlIHRoZSBwcmltZSBjYW5kaWRhdGVzIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoaXMgcGF0aC5cblxuTm93LCBiZWZvcmUgSSBkaWcgdG9vIGRlZXAgaW50byB0aGUgY29kZSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBpbXBvcnRhbnQ6IGFyZSB0aGVyZSBhbnkgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMsIGJlc2lkZXMgdGhlIG9idmlvdXMgb25lLCB0aGF0IHdvdWxkIHByZXZlbnQgbWUgZnJvbSByZWFjaGluZyB0aGVzZSBmdW5jdGlvbnM/IExldCdzIHNlZS4uLiBgTUlDUk9TT0ZUX01BTkFgIHNlZW1zIHRvIGJlIHRoZSBtYWluIGNvbmZpZywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gQWgsIGdvb2QuIFRoZSByZWxldmFudCBwYXRjaCBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNgLiBBbHJpZ2h0LCBzbyBJIHNob3VsZCBiZSBmb2N1c2VkIG9uIG1ha2luZyBzdXJlIHRoYXQgYE1JQ1JPU09GVF9NQU5BYCBpcyBhbGwgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODY0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUyOjMzLjYxNDYyNzcwNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc1NTI3ODEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSUNST1NPRlRfTUFOQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xNj1pZiBORVRfVkVORE9SX01JQ1JPU09GVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjE4OmNvbmZpZyBNSUNST1NPRlRfTUFOQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1MjozMy44OTAxNjA5MTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4NjU4MDYyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBORVRfVkVORE9SX01JQ1JPU09GVGAgQ29udGV4dCoqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgZGlyZWN0cyBtZSB0byBjb25zaWRlciBgTkVUX1ZFTkRPUl9NSUNST1NPRlRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgcGFyc2Ugd2hhdCB0aGF0IGNvbnRleHQgbWVhbnMgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXQgYmVpbmcgZmxhZ2dlZCBmb3IgcmV2aWV3LiAgVGhpcyBzdWdnZXN0cyB3ZSdyZSBsaWtlbHkgbG9va2luZyBhdCBuZXR3b3JrLXJlbGF0ZWQgYWN0aXZpdHksIHNwZWNpZmljYWxseSBzb21ldGhpbmcgdGhhdCdzIG9yaWdpbmF0aW5nIGZyb20sIG9yIGFzc29jaWF0ZWQgd2l0aCwgTWljcm9zb2Z0LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIGFzcGVjdCByZXF1aXJpbmcgYXR0ZW50aW9uLiBJcyB0aGlzIGEgcG90ZW50aWFsIHNlY3VyaXR5IGNvbmNlcm4/IElzIHRoaXMgYW4gYWxlcnQgYmFzZWQgb24gdHJhZmZpYyB2b2x1bWU/IElzIHRoZXJlIGEga25vd24gdnVsbmVyYWJpbGl0eSwgb3IgbWF5YmUgaXQncyByZWxhdGVkIHRvIHNvbWUgY29uZmlndXJhdGlvbiBhdWRpdD8gSSBuZWVkIG1vcmUgZGF0YSB0byB1bmRlcnN0YW5kIHRoZSB1bmRlcmx5aW5nIGlzc3VlLiBJJ2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBuZXR3b3JrIHRyYWZmaWMsIGxvb2sgYXQgdGhlIHByb3RvY29scyBpbnZvbHZlZCwgYW55IHJlbGF0ZWQgbG9ncyBvciBhbGVydHMsIGFuZCBwb3NzaWJseSB0aGUgY29udGV4dCBvZiB0aGUgZW52aXJvbm1lbnQgdGhlIHRyYWZmaWMgaXMgaW4uICBNeSBleHBlcmllbmNlIHNheXMgdGhhdCBqdXN0IHNlZWluZyB0aGlzIGVudHJ5IGlzIG5vdCBlbm91Z2gsIGFzIG9mdGVuIE1pY3Jvc29mdCBoYXMgYSBsYXJnZSBhbmQgY29tcGxleCBmb290cHJpbnQgaW4gbWFueSBpbmZyYXN0cnVjdHVyZSBzdGFja3MuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb2xsZWN0IHRoZSBzdXBwb3J0aW5nIGV2aWRlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDc1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTI6MzcuOTc2Nzc4NDk4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDY5NTc0NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6NTpjb25maWcgTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy02LVxcdGJvb2wgXFxcIk1pY3Jvc29mdCBOZXR3b3JrIERldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA3OjUyOjM4LjE4Mzc5MjU2M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ1OTMyNjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXM6IE1pY3Jvc29mdCBOZXR3b3JrIEFkYXB0ZXIgYW5kIE1BTkEqKlxuXG5BbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBORVRfVkVORE9SX01JQ1JPU09GVGAgYW5kIGBNSUNST1NPRlRfTUFOQWAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZGV0ZXJtaW5lIGlmIGBQQ0lfTVNJYCBpcyBhbHNvIGVzc2VudGlhbCB0byBjb25maWd1cmUgcHJvcGVybHkuIEkga25vdyBNQU5BIHV0aWxpemVzIE1TSS1YLCB3aGljaCBpcyBhIG1vcmUgYWR2YW5jZWQgaW50ZXJydXB0IG1lY2hhbmlzbS4gVGhlcmVmb3JlLCBpdCBtYWtlcyBzZW5zZSB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBBaGEhIEl0IGxvb2tzIGxpa2UgYE1JQ1JPU09GVF9NQU5BYCAqZG9lcyogZGVwZW5kIG9uIGBQQ0lfTVNJYC4gU28sIEknbGwgbmVlZCB0byBlbnN1cmUgdGhhdCBgUENJX01TSWAgaXMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgaWYgSSB3YW50IGBNSUNST1NPRlRfTUFOQWAgdG8gZnVuY3Rpb24gYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gY29uZmlndXJlIHRob3NlIHR3byBhcHByb3ByaWF0ZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODIzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTI6NDEuMzI5NzI5NDA2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzMxNjk4MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qUENJX01TSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyMDpcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXFx1MDAyNlxcdTAwMjYgIUNQVV9CSUdfRU5ESUFOKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwNzo1Mjo0MS41NjI5MDU2MzFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODY4Mzk0OTkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTUFOQSBEcml2ZXIgSVJRIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYFBDSV9NU0lgIGlzIGEga2V5IGRlcGVuZGVuY3kg4oCTIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE15IHByaW1hcnkgY29uZmlndXJhdGlvbiB0YXJnZXQgaXMgZGVmaW5pdGVseSBnb2luZyB0byBiZSBgTUlDUk9TT0ZUX01BTkFgLiBUaGF0J3MgdGhlIG1haW4gZHJpdmVyIGNvbmZpZyB0byBlbmFibGUuXG5cbk5vdywgbGV0J3MgZ2V0IGRvd24gdG8gdGhlIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIGlzIHJlYWxseSBhYm91dC4gSSd2ZSBnb3QgdG8gZm9jdXMgb246IGBtYW5hX2dkX3NldHVwX2R5bl9pcnFzYCwgYG1hbmFfaXJxX3NldHVwX2xpbmVhcmAsIGBtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlYCwgYG1hbmFfZ2Rfc2V0dXBfaXJxc2AsIGFuZCBJIHNlZSBoZXJlIHRoYXQgYG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlc2AgaXMgYWxzbyBtb2RpZmllZCwgc28gSeKAmW0gYWRkaW5nIHRoYXQgdG8gdGhlIGxpc3QgdG9vLlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFib3V0IGhvdyB0aGUgTUFOQSBkcml2ZXIgaGFuZGxlcyBJUlEgc2V0dXAuIFdlJ3JlIHNlZWluZyBjaGFuZ2VzIHRvIGJvdGggYSBsaW5lYXIgSVJRIHNldHVwIGFuZCBhIE5VTUEtYXdhcmUgSVJRIHNldHVwIOKAkyB0aGUgbGF0dGVyIGhhcyBiZWVuIHJlbmFtZWQvbW9kaWZpZWQsIGl0IHNlZW1zLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcHJvYmFibHkgYWNjZXNzaWJsZSB2aWEgdGhlIFBDSSBkZXZpY2UgZW11bGF0aW9uLCB3aGljaCBtYWtlcyBpdCBwZXJmZWN0IGZvciBmdXp6aW5nLiBXZSBuZWVkIHRvIGVuc3VyZSBJUlEgYWxsb2NhdGlvbiBhbmQgYWZmaW5pdHkgaGFuZGxpbmcgYXJlIGNvcnJlY3QuXG5cbkZvciBjb25maWd1cmF0aW9uLCBJJ2xsIGRlZmluaXRlbHkgYmUgbG9va2luZyBhdCBgTUlDUk9TT0ZUX01BTkFgIGFuZCBgTkVUX1ZFTkRPUl9NSUNST1NPRlRgLlxuXG5KdXN0IHRvIGNvbmZpcm0gdGhlIGZ1bmN0aW9uIG5hbWVzLCBsZXQgbWUgZG91YmxlLWNoZWNrLiBPa2F5LCB5ZXMsIGl0J3MgYG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgbm9kZSwgYm9vbCBza2lwX2ZpcnN0X2NwdSlgLCBgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilgLCBgbWFuYV9nZF9zZXR1cF9keW5faXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpYCwgYG1hbmFfZ2Rfc2V0dXBfaXJxcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpYCwgYW5kIGBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpYC4gWWVwLCB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0byB0YXJnZXQuXG5cbkFscmlnaHQsIEkgZG9u4oCZdCBzZWUgYW55IG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBoZXJlLiBJIHRoaW5rIEknbSByZWFkeSB0byBjYWxsIHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDIxNSwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDc6NTI6NTAuMjQ2ODU5NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDAxMDU5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9NSUNST1NPRlRcIixcbiAgICBcIk1JQ1JPU09GVF9NQU5BXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFuYV9nZF9zZXR1cF9keW5faXJxc1wiLFxuICAgIFwibWFuYV9pcnFfc2V0dXBfbGluZWFyXCIsXG4gICAgXCJtYW5hX2lycV9zZXR1cF9udW1hX2F3YXJlXCIsXG4gICAgXCJtYW5hX2dkX3NldHVwX2lycXNcIixcbiAgICBcIm1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUlEgc2V0dXAgbG9naWMgaW4gdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFkZGluZyBsaW5lYXIgSVJRIHNldHVwIGFuZCBtb2RpZnlpbmcgdGhlIE5VTUEtYXdhcmUgSVJRIHNldHVwLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBlbXVsYXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgSVJRIGFsbG9jYXRpb24gYW5kIGFmZmluaXR5IGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9WRU5ET1JfTUlDUk9TT0ZUXCIsXG4gICAgXCJNSUNST1NPRlRfTUFOQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hbmFfZ2Rfc2V0dXBfZHluX2lycXNcIixcbiAgICBcIm1hbmFfaXJxX3NldHVwX2xpbmVhclwiLFxuICAgIFwibWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZVwiLFxuICAgIFwibWFuYV9nZF9zZXR1cF9pcnFzXCIsXG4gICAgXCJtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSVJRIHNldHVwIGxvZ2ljIGluIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHNwZWNpZmljYWxseSBhZGRpbmcgbGluZWFyIElSUSBzZXR1cCBhbmQgbW9kaWZ5aW5nIHRoZSBOVU1BLWF3YXJlIElSUSBzZXR1cC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgZW11bGF0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IElSUSBhbGxvY2F0aW9uIGFuZCBhZmZpbml0eSBoYW5kbGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowxddmf[1] Phase: Succeeded StartedAt: 2026-06-24 07:54:51 +0000 UTC FinishedAt: 2026-06-24 07:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-24 07:54:51 +0000 UTC FinishedAt: 2026-06-24 07:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2] Phase: Succeeded StartedAt: 2026-06-24 07:54:51 +0000 UTC FinishedAt: 2026-06-24 08:59:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-24 07:54:51 +0000 UTC FinishedAt: 2026-06-24 08:59:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-24 07:54:51 +0000 UTC FinishedAt: 2026-06-24 07:55:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-24 07:54:51 +0000 UTC FinishedAt: 2026-06-24 07:54:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowxddmf/series-workflowxddmf-convert-artifact-2036572191/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-24 07:55:01 +0000 UTC FinishedAt: 2026-06-24 08:28:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-24 07:55:01 +0000 UTC FinishedAt: 2026-06-24 08:28:34 +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:*c92dc063-6328-44a3-836d-30cc34583bef,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-workflowxddmf/series-workflowxddmf-convert-artifact-2036572191/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": "6d811d8d-7d18-4536-bdc3-4e3e513138cd", "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-workflowxddmf/series-workflowxddmf-build-action-984355365/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-24 07:55:01 +0000 UTC FinishedAt: 2026-06-24 08:28:22 +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:*c92dc063-6328-44a3-836d-30cc34583bef,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-workflowxddmf/series-workflowxddmf-convert-artifact-2036572191/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": "6d811d8d-7d18-4536-bdc3-4e3e513138cd", "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-workflowxddmf/series-workflowxddmf-build-action-984355365/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-24 08:28:34 +0000 UTC FinishedAt: 2026-06-24 08:28:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-24 08:28:34 +0000 UTC FinishedAt: 2026-06-24 08:28:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-24 08:28:34 +0000 UTC FinishedAt: 2026-06-24 08:29:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-24 08:28:34 +0000 UTC FinishedAt: 2026-06-24 08:29:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowxddmf/series-workflowxddmf-convert-artifact-2355121326/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-24 08:29:17 +0000 UTC FinishedAt: 2026-06-24 08:30:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-24 08:29:17 +0000 UTC FinishedAt: 2026-06-24 08:30:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6d811d8d-7d18-4536-bdc3-4e3e513138cd,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-workflowxddmf/series-workflowxddmf-build-action-984355365/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-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-24 08:30:56 +0000 UTC FinishedAt: 2026-06-24 08:30:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-24 08:30:56 +0000 UTC FinishedAt: 2026-06-24 08:30:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-24 08:30:56 +0000 UTC FinishedAt: 2026-06-24 08:56:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-24 08:30:56 +0000 UTC FinishedAt: 2026-06-24 08:56:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c92dc063-6328-44a3-836d-30cc34583bef,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-workflowxddmf/series-workflowxddmf-convert-artifact-2355121326/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": "5f33ea55-a144-4983-89cc-1d262fcbf945", "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-workflowxddmf/series-workflowxddmf-build-action-2895709122/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-24 08:30:56 +0000 UTC FinishedAt: 2026-06-24 08:56:06 +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:*c92dc063-6328-44a3-836d-30cc34583bef,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-workflowxddmf/series-workflowxddmf-convert-artifact-2355121326/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": "5f33ea55-a144-4983-89cc-1d262fcbf945", "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-workflowxddmf/series-workflowxddmf-build-action-2895709122/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-24 08:56:15 +0000 UTC FinishedAt: 2026-06-24 08:56:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-24 08:56:15 +0000 UTC FinishedAt: 2026-06-24 08:56:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-24 08:56:15 +0000 UTC FinishedAt: 2026-06-24 08:58:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-24 08:56:15 +0000 UTC FinishedAt: 2026-06-24 08:58:04 +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:*5f33ea55-a144-4983-89cc-1d262fcbf945,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-workflowxddmf/series-workflowxddmf-build-action-2895709122/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-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-24 08:58:14 +0000 UTC FinishedAt: 2026-06-24 08:59:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-24 08:58:14 +0000 UTC FinishedAt: 2026-06-24 08:59:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*6d811d8d-7d18-4536-bdc3-4e3e513138cd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5f33ea55-a144-4983-89cc-1d262fcbf945,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-workflowxddmf/series-workflowxddmf-build-action-984355365/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-workflowxddmf/series-workflowxddmf-build-action-2895709122/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-24 08:58:14 +0000 UTC FinishedAt: 2026-06-24 08:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-24 08:58:14 +0000 UTC FinishedAt: 2026-06-24 08:58:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxddmf/series-workflowxddmf-convert-artifact-1051115347/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-24 08:58:14 +0000 UTC FinishedAt: 2026-06-24 08:58:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-24 08:58:14 +0000 UTC FinishedAt: 2026-06-24 08:58:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-24 08:58:14 +0000 UTC FinishedAt: 2026-06-24 08:58:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-24 08:58:24 +0000 UTC FinishedAt: 2026-06-24 08:59:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxddmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_gd_setup_dyn_irqs","mana_irq_setup_linear","mana_irq_setup_numa_aware","mana_gd_setup_irqs","mana_gd_query_max_resources"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_MICROSOFT","MICROSOFT_MANA"],"series_id":"8d5e9ba5-c812-491c-9d8f-7a079dfcb650","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-24 08:58:24 +0000 UTC FinishedAt: 2026-06-24 08:59:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6d811d8d-7d18-4536-bdc3-4e3e513138cd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5f33ea55-a144-4983-89cc-1d262fcbf945,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-workflowxddmf/series-workflowxddmf-build-action-984355365/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-workflowxddmf/series-workflowxddmf-build-action-2895709122/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-workflowxddmf/series-workflowxddmf-convert-artifact-1051115347/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,}