Name: series-workfloww9bzx Phase: Succeeded StartedAt: 2026-08-15 02:30:04 +0000 UTC FinishedAt: 2026-08-15 06:39:53 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[0] Phase: Succeeded StartedAt: 2026-08-15 02:30:04 +0000 UTC FinishedAt: 2026-08-15 02:58:01 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[0].run-triage Phase: Succeeded StartedAt: 2026-08-15 02:30:04 +0000 UTC FinishedAt: 2026-08-15 02:58:01 +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": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SCHED_CLASS_EXT", "BPF_SYSCALL", "BPF_JIT", "DEBUG_INFO_BTF" ], "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": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SCHED_CLASS_EXT", "BPF_SYSCALL", "BPF_JIT", "DEBUG_INFO_BTF" ], "series_id": "b2244fe5-c02f-4b4e-ab89-4f16d218e685" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "scx_bpf_destroy_dsq", "scx_bpf_create_dsq" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NDSEVEX0NMQVNTX0VYVCYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N4X2JwZl9kZXN0cm95X2RzcSYjMzQ7LAogICAgJiMzNDtzY3hfYnBmX2NyZWF0ZV9kc3EmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCBtYXkgaGF2ZSBpbnZhbGlkYXRlZCBhIGRpc3BhdGNoIHF1ZXVlIChgZHNxYCkgYmVmb3JlIGl0IGlzIHByb2Nlc3NlZCBpbiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycygpYC4gVGhlIGZpeCBhZGRzIGEgY2hlY2sgZm9yIGBkc3EtXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEYCB0byBza2lwIHRoZSBpbnZhbGlkYXRlZCBxdWV1ZS4gVGhpcyBhZGRyZXNzZXMgYSBsb2dpY2FsIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9pbnZhbGlkIHN0YXRlIGJ1Zywgd2hpY2ggYXJlIHdpdGhpbiB0aGUgc2NvcGUgb2Ygc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3VjaCBhcyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSksIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBzY2hlZF9leHQgY29yZSBiZXR3ZWVuIGRlc3Ryb3lfZHNxKCkgYW5kIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBieSBjaGVja2luZyBpZiB0aGUgRFNRIGhhcyBiZWVuIGludmFsaWRhdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGVCUEYtYmFzZWQgc2NoZWR1bGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGE0NTVkN2I3NTc0YmQ2ZTA1MDM0MTZlMTFmZjIyM2M5YTA5OThlN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDAyOjU2OjEzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG5pbmRleCAyNmRiYmJmZTVhODc4Li43ZDA5NzIwOWU3NzgwIDEwMDY0NFxuLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuQEAgLTQ2MzcsNiAmIzQzOzQ2MzcsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxuIFx0XHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cbiBcdFx0c21wX21iKCk7XG4gXG4mIzQzO1x0XHQvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovXG4mIzQzO1x0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiBcdFx0QlVHX09OKGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pO1xuIFx0XHRyZWVucV91c2VyKHJxLCBkc3EsIHJlZW5xX2ZsYWdzKTtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U0NIRURfQ0xBU1NfRVhUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3hfYnBmX2Rlc3Ryb3lfZHNxJiMzNDssCiAgICAmIzM0O3NjeF9icGZfY3JlYXRlX2RzcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBzY2hlZF9leHQgY29yZSBiZXR3ZWVuIGRlc3Ryb3lfZHNxKCkgYW5kIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBieSBjaGVja2luZyBpZiB0aGUgRFNRIGhhcyBiZWVuIGludmFsaWRhdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGVCUEYtYmFzZWQgc2NoZWR1bGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGE0NTVkN2I3NTc0YmQ2ZTA1MDM0MTZlMTFmZjIyM2M5YTA5OThlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDAyOjU2OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMKaW5kZXggMjZkYmJiZmU1YTg3OC4uN2QwOTcyMDllNzc4MCAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jCkBAIC00NjM3LDYgJiM0Mzs0NjM3LDEwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSkKIAkJLyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovCiAJCXNtcF9tYigpOwogCiYjNDM7CQkvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovCiYjNDM7CQlpZiAodW5saWtlbHkoZHNxLSZndDtpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwogCQlCVUdfT04oZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTik7CiAJCXJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyMwoJCQkJCQkJb3V0cHV0OiA3MAoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTY2hlZHVsZXIgRXh0ZW5zaW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AuIFNlZW1zIGxpa2Ugd2UgaGF2ZSBhIGNyaXRpY2FsIGZpeCBoZXJlLCBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBgc2NoZWRfZXh0YCAoZUJQRi1iYXNlZCBzY2hlZHVsZXIpIGltcGxlbWVudGF0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2hlY2sgaW4gYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKWA6IGBpZiAodW5saWtlbHkoZHNxLSZndDtpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKSBjb250aW51ZTtgLiBTbWFydCBtb3ZlLiBUaGlzIHN1Z2dlc3RzIGBkZXN0cm95X2RzcSgpYCBjb3VsZCBiZSByYWNpbmcgd2l0aCB0aGUgcmUtZW5xdWV1aW5nIGxvZ2ljLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gaWYgdGhlIGBkc3FgIChkZWZlcnJlZCBzY2hlZHVsaW5nIHF1ZXVlKSBnZXRzIGludmFsaWRhdGVkLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhIGJpdCBiZXR0ZXIuIFRvIGdldCBhIGhhbmRsZSBvbiB0aGlzLCBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBmaWd1cmUgb3V0IGhvdyBgc2NoZWRfZXh0YCBpcyBlbmFibGVkLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIGJvdGggdGhlIGZ1bmN0aW9uIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBpdHNlbGYgdG8gc2VlIHdoZXJlIGl0JiMzOTtzIHVzZWQgYW5kIGFsc28gbG9vayBmb3IgYW55IGNvbmZpZyBzeW1ib2xzIHJlbGF0ZWQgdG8gYFNDSEVEX0NMQVNTX0VYVGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBzZWUgaG93IHRoZSB3aG9sZSBzY2hlZHVsZXIgZXh0ZW5zaW9uIGdldHMgY29uZmlndXJlZCBhbmQgYnVpbHQuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgd2lsbCByZWFsbHkgaGVscCB0byBmaWd1cmUgb3V0IHRoZSB1c2UgY2FzZSBmb3IgdGhpcyBwYXRjaCBhbmQgaG93IGxpa2VseSB0aGlzIHJhY2UgY29uZGl0aW9uIGlzIHRvIG9jY3VyIGluIHJlYWwtd29ybGQgc2NlbmFyaW9zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA4Mj12b2lkIHNjaGVkdWxlX2RzcV9yZWVucShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTEzMy1cdFx0Lypcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTEzNDpcdFx0ICogUGFpcnMgd2l0aCBzbXBfbWIoKSBpbiBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKCkgYW5kXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMzUtXHRcdCAqIGd1YXJhbnRlZXMgdGhhdCB0aGVyZSBpcyBhIHJlZW5xX3VzZXIoKSBhZnRlcndhcmRzLlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDUzNT1zdGF0aWMgdm9pZCByZWVucV91c2VyKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLCB1NjQgcmVlbnFfZmxhZ3MpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NjEwLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NjExOnN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDYxMi17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NjQ5PXN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY1Ni1cdGlmICghbGlzdF9lbXB0eShcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMpKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NjU3Olx0XHRwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQ0hFRF9DTEFTU19FWFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipMb2NhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgLiBUaGlzIGlzbiYjMzk7dCBhIGNvZGluZyBwcm9ibGVtICpwZXIgc2UqLCBtb3JlIG9mIGEgY29uZmlndXJhdGlvbiBhbmQgYnVpbGQgc3lzdGVtIGlzc3VlLiBXaGVyZSBkbyBJIHN0YXJ0PyBXZWxsLCBgZXh0LmNgIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgcGFydCBvZiB0aGUgJiMzNDtleHQmIzM0OyAob3IgJiMzNDtleHRlbmRlZCYjMzQ7KSBzY2hlZHVsZXIsIGxpa2VseSBhIENQVSBzY2hlZHVsZXIgZXh0ZW5zaW9uLCBzbyBJJiMzOTttIGFscmVhZHkgdXNpbmcgbXkgZG9tYWluIGtub3dsZWRnZSB0byBzdGFydCBtYWtpbmcgc29tZSBlZHVjYXRlZCBndWVzc2VzLgoKRmlyc3QgaW5zdGluY3Q6IGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyAqYWx3YXlzKiB0aGUgcGxhY2UgdG8gYmVnaW4gd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb24uIEnigJlsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGxvb2sgaW4uIEl0JiMzOTtzIHByb2JhYmx5IHNvbWV3aGVyZSB1bmRlciBga2VybmVsL3NjaGVkL2AsIGJ1dCBwb3RlbnRpYWxseSBhIGRlZXBlciBsZXZlbCBpbiB0aGUgZGlyZWN0b3J5IHRyZWUgaWYgaXQgaXMgcmVhbGx5ICYjMzk7ZXh0ZW5kZWQmIzM5Oy4gSSB3b3VsZCBiZSBsb29raW5nIGZvciBzb21ldGhpbmcgdGhhdCBpcyBuYW1lZCBgS2NvbmZpZ2Agb3IgYENvbmZpZ2AuIAoKTmV4dCBzdGVwLCBJJiMzOTtkIHByb2JhYmx5IHVzZSBgZmluZGAgb3IgYGdyZXBgIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIGEgYEtjb25maWdgIGZpbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGBleHQuY2Agb3IgcGFydHMgb2YgaXQsIGxpa2UgYGV4dGAgb3IgYHNjaGVkYC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIGEgdmVyeSBicm9hZCBzZWFyY2ggYW5kIHRoZW4gbmFycm93IGRvd24gbXkgcmVzdWx0cy4gSeKAmWQgYmUgdGhpbmtpbmcgYWJvdXQgY29tbWFuZC1saW5lIHRvb2xzIHN1Y2ggYXMgYGZpbmRgLCBgZ3JlcGAgYW5kIHBvc3NpYmx5IGBhd2tgIHRvIG5hcnJvdyBkb3duIHRoZSBzZWFyY2guIEhvcGVmdWxseSwgdGhlIGZpbGUgd2lsbCBiZSB3ZWxsLWNvbW1lbnRlZC4KCk9uY2UgSSYjMzk7dmUgZm91bmQgYSBsaWtlbHkgYEtjb25maWdgIGZpbGUsIEkmIzM5O2xsIGV4YW1pbmUgaXQgY2FyZWZ1bGx5LiBJJiMzOTttIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgdXN1YWxseSBkZWZpbmVkIHVzaW5nIGBjb25maWcgJmx0O3N5bWJvbCZndDtgIGRpcmVjdGl2ZXMsIHdpdGggYXNzb2NpYXRlZCBkZXNjcmlwdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVGhlIGRlcGVuZGVuY2llcyBhcmUga2V5OyB0aGV5JiMzOTtsbCB0ZWxsIG1lIHdoZW4gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIHRoZSBzY2hlZHVsZXIgaXMgZXZlbiBpbmNsdWRlZCwgb3IgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgdGhlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgdGhpcyBjb2RlLiBJIG1heSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgdG8gb3RoZXIgYEtjb25maWdgIGZpbGVzIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBsYXllcnMgb2YgYWJzdHJhY3Rpb24uCgpGaW5hbGx5LCBJ4oCZbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIG9mIHRoZXNlIHN5bWJvbHMgYW5kIHRoZSBidWlsZCBwcm9jZXNzLiBJJiMzOTtsbCBsaWtlbHkgbmVlZCB0byBjb25zdWx0IHRoZSBidWlsZCBzeXN0ZW0gZG9jdW1lbnRhdGlvbiwgc3VjaCBhcyB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeS4gSSBjYW4gcHJvYmFibHkgZmlndXJlIHRoaXMgb3V0IGJ5IGxvb2tpbmcgYXQgaG93IHRoZSBidWlsZCBzeXN0ZW0gaW5jbHVkZXMgYW5kIGV4Y2x1ZGVzIHNwZWNpZmljIGZpbGVzIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbHMuIFRoaXMgbWlnaHQgaW52b2x2ZSBsb29raW5nIGF0IHRoaW5ncyBsaWtlIGAjaWZkZWZgIHN0YXRlbWVudHMgd2l0aGluIHRoZSBjb2RlLCBhbmQgdW5kZXJzdGFuZGluZyBob3cgdGhlIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIGFyZSBtYXBwZWQgdG8ga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSWYgdGhpcyBpcyBhIGRyaXZlciwgdGhlIG1vZHVsZSBtaWdodCBuZWVkIHRoZSBgbW9kdWxlYCBvcHRpb24gdG8gYmUgc2V0LiBUaGlzIGlzIGEgYml0IG9mIGEgYnJlYWRjcnVtYiBodW50LCByZWFsbHksIGJ1dCB0aGUgKktjb25maWcqIGZpbGVzIGFyZSB0aGUgbWFwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NzYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpcmVjdGluZyBNeSBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgc2NoZWR1bGVyIGJ1aWxkIHByb2Nlc3MuIEluc3RlYWQgb2Ygd2FkaW5nIHRocm91Z2ggcG90ZW50aWFsbHkgdW5yZWxhdGVkIGRvY3VtZW50YXRpb24gb3IgYmxpbmRseSBzZWFyY2hpbmcsIEkmIzM5O20gZ29pbmcgdG8gZ28gcmlnaHQgdG8gdGhlIHNvdXJjZS4gVGhlIGBrZXJuZWwvc2NoZWQvYCBkaXJlY3RvcnkgaXMgd2hlcmUgdGhlIHNjaGVkdWxlciBjb2RlIGxpdmVzLCBhbmQgdGhlIGBNYWtlZmlsZWAgaW4gdGhhdCBkaXJlY3RvcnkgaXMgdGhlIGJ1aWxkIGluc3RydWN0aW9ucy4gU2VlbXMgbG9naWNhbCB0byBjaGVjayBga2VybmVsL3NjaGVkL01ha2VmaWxlYCBkaXJlY3RseS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY3JpdGljYWwgaW5mb3JtYXRpb24gb24gaG93IHRob3NlIHNjaGVkdWxlciBjb21wb25lbnRzIGFyZSBjb21waWxlZCBhbmQgbGlua2VkIHNob3VsZCByZXNpZGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4gSSYjMzk7bSBob3BpbmcgSSBjYW4gZmluZCB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IgcXVpY2tseSB0aGlzIHdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0Q09OVEVYVF9BTkFMWVNJU19jb3JlLm8gOj0geVxuICAgNDpcdENPTlRFWFRfQU5BTFlTSVNfZmFpci5vIDo9IHlcbiAgIDU6XHRcbiAgIDY6XHQjIFRoZSBjb21waWxlcnMgYXJlIGNvbXBsYWluaW5nIGFib3V0IHVudXNlZCB2YXJpYWJsZXMgaW5zaWRlIGFuIGlmKDApIHNjb3BlXG4gICA3Olx0IyBibG9jay4gVGhpcyBpcyBkYWZ0LCBzaHV0IHRoZW0gdXAuXG4gICA4Olx0Y2NmbGFncy15ICYjNDM7PSAkKGNhbGwgY2MtZGlzYWJsZS13YXJuaW5nLCB1bnVzZWQtYnV0LXNldC12YXJpYWJsZSlcbiAgIDk6XHRcbiAgMTA6XHQjIFRoZXNlIGZpbGVzIGFyZSBkaXNhYmxlZCBiZWNhdXNlIHRoZXkgcHJvZHVjZSBub24taW50ZXJlc3RpbmcgZmxha3kgY292ZXJhZ2VcbiAgMTE6XHQjIHRoYXQgaXMgbm90IGEgZnVuY3Rpb24gb2Ygc3lzY2FsbCBpbnB1dHMuIEUuZy4gaW52b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlcy5cbiAgMTI6XHRLQ09WX0lOU1RSVU1FTlQgOj0gblxuICAxMzpcdFxuICAxNDpcdCMgRGlzYWJsZSBLQ1NBTiB0byBhdm9pZCBleGNlc3NpdmUgbm9pc2UgYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uLiBUbyBhdm9pZFxuICAxNTpcdCMgZmFsc2UgcG9zaXRpdmVzIGVuc3VyZSBiYXJyaWVycyBpbXBsaWVkIGJ5IHNjaGVkIGZ1bmN0aW9ucyBhcmUgaW5zdHJ1bWVudGVkLlxuICAxNjpcdEtDU0FOX1NBTklUSVpFIDo9IG5cbiAgMTc6XHRLQ1NBTl9JTlNUUlVNRU5UX0JBUlJJRVJTIDo9IHlcbiAgMTg6XHRcbiAgMTk6XHRpZm5lcSAoJChDT05GSUdfU0NIRURfT01JVF9GUkFNRV9QT0lOVEVSKSx5KVxuICAyMDpcdCMgQWNjb3JkaW5nIHRvIEFsYW4gTW9kcmEgXHUwMDNjYWxhbkBsaW51eGNhcmUuY29tLmF1XHUwMDNlLCB0aGUgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgaXNcbiAgMjE6XHQjIG5lZWRlZCBmb3IgeDg2IG9ubHkuICBXaHkgdGhpcyB1c2VkIHRvIGJlIGVuYWJsZWQgZm9yIGFsbCBhcmNoaXRlY3R1cmVzIGlzIGJleW9uZFxuICAyMjpcdCMgbWUuICBJIHN1c3BlY3QgbW9zdCBwbGF0Zm9ybXMgZG9uJiMzOTt0IG5lZWQgdGhpcywgYnV0IHVudGlsIHdlIGtub3cgdGhhdCBmb3Igc3VyZVxuICAyMzpcdCMgSSB0dXJuIHRoaXMgb2ZmIGZvciBJQS02NCBvbmx5LiAgQW5kcmVhcyBTY2h3YWIgc2F5cyBpdCYjMzk7cyBhbHNvIG5lZWRlZCBvbiBtNjhrXG4gIDI0Olx0IyB0byBnZXQgYSBjb3JyZWN0IHZhbHVlIGZvciB0aGUgd2FpdC1jaGFubmVsIChXQ0hBTiBpbiBwcykuIC0tZGF2aWRtXG4gIDI1Olx0Q0ZMQUdTX2NvcmUubyA6PSAkKFBST0ZJTElORykgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbiAgMjY6XHRlbmRpZlxuICAyNzpcdFxuICAyODpcdCMgQnJhbmNoIHByb2ZpbGluZyBpc24mIzM5O3Qgbm9pbnN0ci1zYWZlXG4gIDI5Olx0aWZkZWYgQ09ORklHX1RSQUNFX0JSQU5DSF9QUk9GSUxJTkdcbiAgMzA6XHRDRkxBR1NfYnVpbGRfcG9saWN5Lm8gJiM0Mzs9IC1ERElTQUJMRV9CUkFOQ0hfUFJPRklMSU5HXG4gIDMxOlx0Q0ZMQUdTX2J1aWxkX3V0aWxpdHkubyAmIzQzOz0gLURESVNBQkxFX0JSQU5DSF9QUk9GSUxJTkdcbiAgMzI6XHRlbmRpZlxuICAzMzpcdCNcbiAgMzQ6XHQjIEJ1aWxkIGVmZmljaWVuY3k6XG4gIDM1Olx0I1xuICAzNjpcdCMgVGhlc2UgY29tcGlsYXRpb24gdW5pdHMgaGF2ZSByb3VnaGx5IHRoZSBzYW1lIHNpemUgYW5kIGNvbXBsZXhpdHkgLSBzbyB0aGVpclxuICAzNzpcdCMgYnVpbGQgcGFyYWxsZWxpemVzIHdlbGwgYW5kIGZpbmlzaGVzIHJvdWdobHkgYXQgb25jZTpcbiAgMzg6XHQjXG4gIDM5Olx0b2JqLXkgJiM0Mzs9IGNvcmUub1xuICA0MDpcdG9iai15ICYjNDM7PSBmYWlyLm9cbiAgNDE6XHRvYmoteSAmIzQzOz0gYnVpbGRfcG9saWN5Lm9cbiAgNDI6XHRvYmoteSAmIzQzOz0gYnVpbGRfdXRpbGl0eS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKk5hdmlnYXRpbmcgdGhlIFNjaGVkdWxlciYjMzk7cyBMYWJ5cmludGgqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIHRocm91Z2ggdGhlIGtlcm5lbCBzY2hlZHVsZXIgY29kZSBhZ2FpbiwgYW5kIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGBleHQuY2AgZmlsZS4gV2FpdCBhIG1pbnV0ZS4uLiB0aGF0IGBleHQuY2AgZmlsZSAqc2hvdWxkbiYjMzk7dCogYmUgZGlyZWN0bHkgaW4gYGtlcm5lbC9zY2hlZC9gLCBiZWNhdXNlIGl0JiMzOTtzIGEgc3ViLWNvbXBvbmVudC4gSSYjMzk7dmUgZ290IHRvIGJhY2t0cmFjayBhbmQgY2hlY2sgdGhlIHJlbGV2YW50IE1ha2VmaWxlcy4gSSBiZXQgaXQmIzM5O3MgYWN0dWFsbHkgZGVmaW5lZCBlaXRoZXIgaW4gYGtlcm5lbC9zY2hlZC9leHQvTWFrZWZpbGVgIG9yIG1heWJlIGV2ZW4gaGlnaGVyIHVwIGluIGBrZXJuZWwvc2NoZWQvTWFrZWZpbGVgLiBMZXQgbWUganVtcCBvdmVyIHRoZXJlIGFuZCBzZWUgd2hhdCYjMzk7cyBpbmNsdWRlZC4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZWJhc2U7IEkgc2hvdWxkIGhhdmUgdGhvdWdodCBvZiBjaGVja2luZyB0aGUgTWFrZWZpbGVzIGZpcnN0LCBiZWZvcmUgZGl2aW5nIGRvd24gYSBwb3RlbnRpYWxseSBmcnVpdGxlc3Mgc2VhcmNoLiBUaW1lIHRvIHRyYWNlIHRoZSBpbmNsdWRlcy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0b2JqLXkgJiM0Mzs9IGZhaXIub1xuICA0MTpcdG9iai15ICYjNDM7PSBidWlsZF9wb2xpY3kub1xuICA0MjpcdG9iai15ICYjNDM7PSBidWlsZF91dGlsaXR5Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2NwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBleHQub2AgaW4gdGhlIFNjaGVkdWxlciBDb2RlYmFzZSoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IGBleHQub2AsIGxpa2VseSBhIGNvbXBpbGVkIG9iamVjdCBmaWxlIHJlbGF0ZWQgdG8gc2NoZWR1bGluZy4gR2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwmIzM5O3Mgc3RydWN0dXJlLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBzb3VyY2UgZGlyZWN0b3JpZXMuIFRoZSBuYW1lIHN1Z2dlc3RzIGl0JiMzOTtzIGFuIGV4dGVuc2lvbiwgcG9zc2libHkgYSBtb2R1bGUgb3IgcGFydCBvZiBhIG1vcmUgc3BlY2lhbGl6ZWQgc2NoZWR1bGVyLiBUaGVyZWZvcmUsIG15IGluaXRpYWwgc2VhcmNoIHdpbGwgYmUgZm9jdXNlZCBhcm91bmQgYGtlcm5lbC9zY2hlZC9gIGFuZCBpdHMgcG90ZW50aWFsIHN1YmRpcmVjdG9yaWVzLCBwYXJ0aWN1bGFybHkgYGtlcm5lbC9zY2hlZC9leHQvYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGFueSBzY2hlZHVsaW5nIGV4dGVuc2lvbnMgaW1wbGVtZW50ZWQuCgpUbyBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLCBpdCYjMzk7cyBub3QgZW5vdWdoIHRvIGxvb2sganVzdCBmb3IgdGhlIHNvdXJjZTsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBidWlsZCBzeXN0ZW0gaW50ZWdyYXRlcyB0aGlzIG9iamVjdC4gVGhlcmVmb3JlLCBhIHF1aWNrIGdyZXAgdGhyb3VnaCB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgc2NoZWR1bGluZyBkaXJlY3RvcmllcyBpcyBhIG11c3QuIEtub3dpbmcgdGhlIGJ1aWxkIHJ1bGVzIHdpbGwgY2xhcmlmeSBob3cgYGV4dC5vYCBpcyBjb21waWxlZCwgbGlua2VkLCBhbmQgaW5jb3Jwb3JhdGVkIGludG8gdGhlIG92ZXJhbGwga2VybmVsIGltYWdlLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGNvbnRleHR1YWxpemUgdGhlIG9iamVjdCBhbmQgaXRzIHB1cnBvc2UuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0YXJnZXQgcnVsZXMuIEhvcGVmdWxseSwgdGhpcyBzaG91bGQgbGVhZCBtZSB0byB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIGFuZCBwcm92aWRlIGEgY2xlYXIgaWRlYSBvZiB3aGF0IGBleHQub2AgZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2F1dG9ncm91cC5jJiMzNDssCiAgICAmIzM0O2F1dG9ncm91cC5oJiMzNDssCiAgICAmIzM0O2J1aWxkX3BvbGljeS5jJiMzNDssCiAgICAmIzM0O2J1aWxkX3V0aWxpdHkuYyYjMzQ7LAogICAgJiMzNDtjbG9jay5jJiMzNDssCiAgICAmIzM0O2NvbXBsZXRpb24uYyYjMzQ7LAogICAgJiMzNDtjb3JlLmMmIzM0OywKICAgICYjMzQ7Y29yZV9zY2hlZC5jJiMzNDssCiAgICAmIzM0O2NwdWFjY3QuYyYjMzQ7LAogICAgJiMzNDtjcHVkZWFkbGluZS5jJiMzNDssCiAgICAmIzM0O2NwdWRlYWRsaW5lLmgmIzM0OywKICAgICYjMzQ7Y3B1ZnJlcS5jJiMzNDssCiAgICAmIzM0O2NwdWZyZXFfc2NoZWR1dGlsLmMmIzM0OywKICAgICYjMzQ7Y3B1cHJpLmMmIzM0OywKICAgICYjMzQ7Y3B1cHJpLmgmIzM0OywKICAgICYjMzQ7Y3B1dGltZS5jJiMzNDssCiAgICAmIzM0O2RlYWRsaW5lLmMmIzM0OywKICAgICYjMzQ7ZGVidWcuYyYjMzQ7LAogICAgJiMzNDtmYWlyLmMmIzM0OywKICAgICYjMzQ7ZmVhdHVyZXMuaCYjMzQ7LAogICAgJiMzNDtpZGxlLmMmIzM0OywKICAgICYjMzQ7aXNvbGF0aW9uLmMmIzM0OywKICAgICYjMzQ7bG9hZGF2Zy5jJiMzNDssCiAgICAmIzM0O21lbWJhcnJpZXIuYyYjMzQ7LAogICAgJiMzNDtwZWx0LmMmIzM0OywKICAgICYjMzQ7cGVsdC5oJiMzNDssCiAgICAmIzM0O3BzaS5jJiMzNDssCiAgICAmIzM0O3JxLW9mZnNldHMuYyYjMzQ7LAogICAgJiMzNDtydC5jJiMzNDssCiAgICAmIzM0O3NjaGVkLXBlbHQuaCYjMzQ7LAogICAgJiMzNDtzY2hlZC5oJiMzNDssCiAgICAmIzM0O3NtcC5oJiMzNDssCiAgICAmIzM0O3N0YXRzLmMmIzM0OywKICAgICYjMzQ7c3RhdHMuaCYjMzQ7LAogICAgJiMzNDtzdG9wX3Rhc2suYyYjMzQ7LAogICAgJiMzNDtzd2FpdC5jJiMzNDssCiAgICAmIzM0O3N5c2NhbGxzLmMmIzM0OywKICAgICYjMzQ7dG9wb2xvZ3kuYyYjMzQ7LAogICAgJiMzNDt3YWl0LmMmIzM0OywKICAgICYjMzQ7d2FpdF9iaXQuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDtleHQmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDA3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlNlYXJjaGluZyBmb3IgYGV4dC5vYCBpbiB0aGUgU2NoZWR1bGVyIEV4dGVuc2lvbiBCdWlsZCBTeXN0ZW0qKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gd2hlcmUgYGV4dC5vYCBpcyBiZWluZyBidWlsdC4gU2luY2UgSSYjMzk7bSB3b3JraW5nIHdpdGggdGhlIGtlcm5lbCYjMzk7cyBzY2hlZHVsZXIgZXh0ZW5zaW9uLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYnVpbGQgc3lzdGVtIGZpbGVzIHNwZWNpZmljIHRvIHRoYXQgbW9kdWxlLiBMZXQmIzM5O3Mgc2VlLi4uIGBrZXJuZWwvc2NoZWQvZXh0L01ha2VmaWxlYCBpcyB0aGUgb2J2aW91cyBmaXJzdCBzdG9wLiBUaGF0IGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIHJ1bGVzIGZvciBidWlsZGluZyB0aGUgYC5vYCBmaWxlcywgc28gaWYgaXQmIzM5O3MgdGhlcmUsIGdyZWF0LiBJZiBub3QsIGl0JiMzOTtzIHBvc3NpYmxlIHRoYXQgdGhlIG9iamVjdCBpcyBvbmx5IGNvbmRpdGlvbmFsbHkgYnVpbHQsIGJhc2VkIG9uIGEgS2NvbmZpZyBvcHRpb24uIEluIHRoYXQgY2FzZSwgSSBzaG91bGQgdGhlbiBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9LY29uZmlnYC4gVGhhdCBjb25maWd1cmF0aW9uIGZpbGUgaXMgdGhlIHVzdWFsIGxvY2F0aW9uIGZvciBkZWZpbmluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoZSBzY2hlZHVsZXIgZXh0ZW5zaW9ucy4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGlmIGl0IGlzIGRlZmluZWQgdGhlcmUgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGBleHQub2Agd291bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIEJhc2ljYWxseSwgSSBhbSB0aGlua2luZyB0aHJvdWdoIHRoZSBsaWtlbHkgcGxhY2VzIHRoZSBpbmZvcm1hdGlvbiB0aGF0IEkgbmVlZCB3b3VsZCBiZSBsb2NhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YXJlbmEuYyYjMzQ7LAogICAgJiMzNDthcmVuYS5oJiMzNDssCiAgICAmIzM0O2NpZC5jJiMzNDssCiAgICAmIzM0O2NpZC5oJiMzNDssCiAgICAmIzM0O2V4dC5jJiMzNDssCiAgICAmIzM0O2V4dC5oJiMzNDssCiAgICAmIzM0O2lkbGUuYyYjMzQ7LAogICAgJiMzNDtpZGxlLmgmIzM0OywKICAgICYjMzQ7aW5saW5lcy5oJiMzNDssCiAgICAmIzM0O2ludGVybmFsLmgmIzM0OywKICAgICYjMzQ7c3ViLmMmIzM0OywKICAgICYjMzQ7c3ViLmgmIzM0OywKICAgICYjMzQ7dHlwZXMuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NzgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBCdWlsZCBMb2NhdGlvbiBmb3IgYSBDIEV4dGVuc2lvbioqCgpSaWdodCwgc29tZXRoaW5nIGp1c3QgdHJpZ2dlcmVkIGEgbWVtb3J5IC0gd2hlcmUgdGhlIGhlY2sgaXMgdGhhdCBgZXh0LmNgIGZpbGUgY29tcGlsZWQ/IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGVyZSBpbiB0aGUgYnVpbGQgcHJvY2VzcyB0aGF0IHBhcnRpY3VsYXIgZXh0ZW5zaW9uIGlzIGhhbmRsZWQuIEl04oCZcyBwcmV0dHkgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBkZXBlbmRlbmN5IGlzc3VlcyBvciBkZWJ1Z2dpbmcgY29tcGlsYXRpb24gcHJvYmxlbXMgbGF0ZXIgb24uIFNvLCBmaXJzdCB0aG91Z2h0IC0gbGV0JiMzOTtzIGNoZWNrIHRoZSBjb3JlIHNjaGVkdWxpbmcgY29kZSwgdGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBidWlsZCBwb2xpY3kgYW5kIHV0aWxpdGllcyBhcmUgZGVmaW5lZC4gTXkgZ3V0IHNheXMgaXQgd2lsbCBiZSBpbiB0aGUgYGtlcm5lbC9zY2hlZGAgZGlyZWN0b3J5LiBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyBsb29raW5nIGF0IGVpdGhlciBgYnVpbGRfcG9saWN5LmNgIG9yIHBlcmhhcHMgYGJ1aWxkX3V0aWxpdHkuY2AuIFRoYXQgc2VlbXMgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBmaW5kIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhhdCBleHRlbnNpb24uIExldCBtZSBkaXZlIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQuYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jLTY1LSMgaW5jbHVkZSBcJiMzNDtleHQvaW50ZXJuYWwuaFwmIzM0O1xua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jOjY2OiMgaW5jbHVkZSBcJiMzNDtleHQvY2lkLmhcJiMzNDtcbmtlcm5lbC9zY2hlZC9idWlsZF9wb2xpY3kuYy02Ny0jIGluY2x1ZGUgXCYjMzQ7ZXh0L2FyZW5hLmhcJiMzNDtcbi0tXG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmMtNzAtIyBpbmNsdWRlIFwmIzM0O2V4dC9pbmxpbmVzLmhcJiMzNDtcbmtlcm5lbC9zY2hlZC9idWlsZF9wb2xpY3kuYzo3MTojIGluY2x1ZGUgXCYjMzQ7ZXh0L2V4dC5jXCYjMzQ7XG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmM6NzI6IyBpbmNsdWRlIFwmIzM0O2V4dC9jaWQuY1wmIzM0O1xua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jLTczLSMgaW5jbHVkZSBcJiMzNDtleHQvYXJlbmEuY1wmIzM0O1xuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9MjI5ND12b2lkIHdha2V1cF9wcmVlbXB0KHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IGZsYWdzKVxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmMtMjI5Ny1cbmtlcm5lbC9zY2hlZC9jb3JlLmM6MjI5ODpcdGlmIChwLVx1MDAzZXNjaGVkX2NsYXNzID09IHJxLVx1MDAzZW5leHRfY2xhc3MpIHtcbmtlcm5lbC9zY2hlZC9jb3JlLmM6MjI5OTpcdFx0cnEtXHUwMDNlbmV4dF9jbGFzcy1cdTAwM2V3YWtldXBfcHJlZW1wdChycSwgcCwgZmxhZ3MpO1xua2VybmVsL3NjaGVkL2NvcmUuYy0yMzAwLVxua2VybmVsL3NjaGVkL2NvcmUuYzoyMzAxOlx0fSBlbHNlIGlmIChzY2hlZF9jbGFzc19hYm92ZShwLVx1MDAzZXNjaGVkX2NsYXNzLCBycS1cdTAwM2VuZXh0X2NsYXNzKSkge1xua2VybmVsL3NjaGVkL2NvcmUuYzoyMzAyOlx0XHRycS1cdTAwM2VuZXh0X2NsYXNzLVx1MDAzZXdha2V1cF9wcmVlbXB0KHJxLCBwLCBmbGFncyk7XG5rZXJuZWwvc2NoZWQvY29yZS5jLTIzMDMtXHRcdHJlc2NoZWRfY3VycihycSk7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjIzMDQ6XHRcdHJxLVx1MDAzZW5leHRfY2xhc3MgPSBwLVx1MDAzZXNjaGVkX2NsYXNzO1xua2VybmVsL3NjaGVkL2NvcmUuYy0yMzA1LVx0fVxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9Njc4Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJveHlfcmVzY2hlZF9pZGxlKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy02Nzg0LVx0cHV0X3ByZXZfc2V0X25leHRfdGFzayhycSwgcnEtXHUwMDNlZG9ub3IsIHJxLVx1MDAzZWlkbGUpO1xua2VybmVsL3NjaGVkL2NvcmUuYzo2Nzg1Olx0cnEtXHUwMDNlbmV4dF9jbGFzcyA9IFx1MDAyNmlkbGVfc2NoZWRfY2xhc3M7XG5rZXJuZWwvc2NoZWQvY29yZS5jLTY3ODYtXHRycV9zZXRfZG9ub3IocnEsIHJxLVx1MDAzZWlkbGUpO1xuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9NzA5OD1zdGF0aWMgdm9pZCBfX3NjaGVkIG5vdHJhY2UgX19zY2hlZHVsZShpbnQgc2NoZWRfbW9kZSlcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTcxNjktXHRcdFx0bmV4dCA9IHByZXY7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjcxNzA6XHRcdFx0cnEtXHUwMDNlbmV4dF9jbGFzcyA9IFx1MDAyNmlkbGVfc2NoZWRfY2xhc3M7XG5rZXJuZWwvc2NoZWQvY29yZS5jLTcxNzEtXHRcdFx0Z290byBwaWNrZWQ7XG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy03MTg3LVx0bmV4dCA9IHBpY2tfbmV4dF90YXNrKHJxLCBcdTAwMjZyZik7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjcxODg6XHRycS1cdTAwM2VuZXh0X2NsYXNzID0gbmV4dC1cdTAwM2VzY2hlZF9jbGFzcztcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzE4OS1cdGlmIChzY2hlZF9wcm94eV9leGVjKCkpIHtcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jPTc2NjU9dm9pZCBydF9tdXRleF9zZXRwcmlvKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHRhc2tfc3RydWN0ICpwaV90YXNrKVxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzY2OC1cdFx0REVRVUVVRV9TQVZFIHwgREVRVUVVRV9NT1ZFIHwgREVRVUVVRV9OT0NMT0NLO1xua2VybmVsL3NjaGVkL2NvcmUuYzo3NjY5Olx0Y29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpwcmV2X2NsYXNzLCAqbmV4dF9jbGFzcztcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzY3MC1cdHN0cnVjdCBycV9mbGFncyByZjtcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTc3MjYtXHRwcmV2X2NsYXNzID0gcC1cdTAwM2VzY2hlZF9jbGFzcztcbmtlcm5lbC9zY2hlZC9jb3JlLmM6NzcyNzpcdG5leHRfY2xhc3MgPSBfX3NldHNjaGVkdWxlcl9jbGFzcyhwLVx1MDAzZXBvbGljeSwgcHJpbyk7XG5rZXJuZWwvc2NoZWQvY29yZS5jLTc3MjgtXG5rZXJuZWwvc2NoZWQvY29yZS5jOjc3Mjk6XHRpZiAocHJldl9jbGFzcyAhPSBuZXh0X2NsYXNzKVxua2VybmVsL3NjaGVkL2NvcmUuYy03NzMwLVx0XHRxdWV1ZV9mbGFnIHw9IERFUVVFVUVfQ0xBU1M7XG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy03NzYyLVxua2VybmVsL3NjaGVkL2NvcmUuYzo3NzYzOlx0XHRwLVx1MDAzZXNjaGVkX2NsYXNzID0gbmV4dF9jbGFzcztcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzc2NC1cdFx0cC1cdTAwM2VwcmlvID0gcHJpbztcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jPTg5NTM9dm9pZCBfX2luaXQgc2NoZWRfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmMtOTA1MC0jZW5kaWZcbmtlcm5lbC9zY2hlZC9jb3JlLmM6OTA1MTpcdFx0cnEtXHUwMDNlbmV4dF9jbGFzcyA9IFx1MDAyNmlkbGVfc2NoZWRfY2xhc3M7XG5rZXJuZWwvc2NoZWQvY29yZS5jLTkwNTItXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy05MTM3LVx0aW5pdF9zY2hlZF9mYWlyX2NsYXNzKCk7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjkxMzg6XHRpbml0X3NjaGVkX2V4dF9jbGFzcygpO1xua2VybmVsL3NjaGVkL2NvcmUuYy05MTM5LVxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9MTEyNzg9dm9pZCBzY2hlZF9jaGFuZ2VfZW5kKHN0cnVjdCBzY2hlZF9jaGFuZ2VfY3R4ICpjdHgpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy0xMTMwOS1cdFx0XHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUocC1cdTAwM2VzY2hlZF9jbGFzcywgY3R4LVx1MDAzZWNsYXNzKSkge1xua2VybmVsL3NjaGVkL2NvcmUuYzoxMTMxMDpcdFx0XHRcdHJxLVx1MDAzZW5leHRfY2xhc3MtXHUwMDNld2FrZXVwX3ByZWVtcHQocnEsIHAsIDApO1xua2VybmVsL3NjaGVkL2NvcmUuYzoxMTMxMTpcdFx0XHRcdHJxLVx1MDAzZW5leHRfY2xhc3MgPSBwLVx1MDAzZXNjaGVkX2NsYXNzO1xua2VybmVsL3NjaGVkL2NvcmUuYy0xMTMxMi1cdFx0XHR9XG4tLVxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM9MTE0MT1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgZGxfc2VydmVyX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lciwgc3RydWN0IHNjaGVkX2RsX2VudGl0eSAqZGxfc2UpXG4tLVxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmMtMTIwOC0gKiB1cGRhdGluZyAoYW5kIHRoZSBxdWV1ZWluZyBiYWNrIHRvIGRsX3JxKSB3aWxsIGJlIGRvbmUgYnkgdGhlXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYzoxMjA5OiAqIG5leHQgY2FsbCB0byBlbnF1ZXVlX3Rhc2tfZGwoKS5cbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTEyMTAtICovXG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYz0xODA9czMyIHNjeF9jaWRfaW5pdChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0xODgtXHRzdHJ1Y3Qgc2N4X2NpZF90YWJsZXMgKnRibHM7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjE4OTpcdHUzMiBuZXh0X2NpZCA9IDA7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjE5MDpcdHMzMiBuZXh0X25vZGVfaWR4ID0gMCwgbmV4dF9sbGNfaWR4ID0gMCwgbmV4dF9jb3JlX2lkeCA9IDA7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTE5MS1cdHMzMiBuZXh0X3NoYXJkX2lkeCA9IDA7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yMjktXHR3aGlsZSAoIWNwdW1hc2tfZW1wdHkodG9fd2FsaykpIHtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MjMwOlx0XHRzMzIgbmV4dF9jcHUgPSBjcHVtYXNrX2ZpcnN0KHRvX3dhbGspO1xua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyMzE6XHRcdHMzMiBuaWQgPSBjcHVfdG9fbm9kZShuZXh0X2NwdSk7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjIzMjpcdFx0czMyIG5vZGVfY2lkID0gbmV4dF9jaWQ7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTIzMy1cdFx0czMyIG5vZGVfaWR4O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjM5LVx0XHRpZiAobmlkIFx1MDAzYyAwKSB7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjI0MDpcdFx0XHRjcHVtYXNrX2NsZWFyX2NwdShuZXh0X2NwdSwgdG9fd2Fsayk7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI0MS1cdFx0XHRjb250aW51ZTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI0Ny1cdFx0Y3B1bWFza19hbmQobm9kZV9zY3JhdGNoLCB0b193YWxrLCBjcHVtYXNrX29mX25vZGUobmlkKSk7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjI0ODpcdFx0aWYgKFdBUk5fT05fT05DRSghY3B1bWFza190ZXN0X2NwdShuZXh0X2NwdSwgbm9kZV9zY3JhdGNoKSkpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI0OS1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI1My1cdFx0XHRjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbGxjX21hc2sgPSBjcHVfbGxjX21hc2sobmNwdSwgbGxjX2ZhbGxiYWNrKTtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MjU0Olx0XHRcdHMzMiBsbGNfY2lkID0gbmV4dF9jaWQ7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI1NS1cdFx0XHRzMzIgbGxjX2lkeCA9IG5leHRfbGxjX2lkeCYjNDM7JiM0Mzs7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yNjUtXHRcdFx0Y2FsY19zaGFyZF9sYXlvdXQobGxjX3NjcmF0Y2gsIHNoYXJkX3NpemUsIFx1MDAyNmNvcmVzX3Blcl9zaGFyZCwgXHUwMDI2bnJfbGFyZ2UpO1xua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNjY6XHRcdFx0c2hhcmRfY2lkID0gbmV4dF9jaWQ7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI2Ny1cdFx0XHRzaGFyZF9pZHggPSBuZXh0X3NoYXJkX2lkeCYjNDM7JiM0Mzs7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yNzItXHRcdFx0XHRjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc2liID0gdG9wb2xvZ3lfc2libGluZ19jcHVtYXNrKGxjcHUpO1xua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNzM6XHRcdFx0XHRzMzIgY29yZV9jaWQgPSBuZXh0X2NpZDtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Mjc0Olx0XHRcdFx0czMyIGNvcmVfaWR4ID0gbmV4dF9jb3JlX2lkeCYjNDM7JiM0Mzs7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI3NS1cdFx0XHRcdHMzMiBjY3B1O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjk2LVx0XHRcdFx0XHRjaWRzX2luX3NoYXJkID0gMDtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Mjk3Olx0XHRcdFx0XHRzaGFyZF9jaWQgPSBuZXh0X2NpZDtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjk4LVx0XHRcdFx0XHRzaGFyZF9pZHggPSBuZXh0X3NoYXJkX2lkeCYjNDM7JiM0Mzs7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0zMDQtXHRcdFx0XHRmb3JfZWFjaF9jcHUoY2NwdSwgY29yZV9zY3JhdGNoKSB7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjMwNTpcdFx0XHRcdFx0czMyIGNpZCA9IG5leHRfY2lkJiM0MzsmIzQzOztcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzA2LVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzQ2LVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzozNDc6XHRcdGNpZCA9IG5leHRfY2lkJiM0MzsmIzQzOztcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzQ4LVx0XHR0YmxzLVx1MDAzZWNpZF90b19jcHVbY2lkXSA9IGNwdTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTM3NS1cdCAqL1xua2VybmVsL3NjaGVkL2V4dC9jaWQuYzozNzY6XHRmb3IgKGNpZCA9IDA7IGNpZCBcdTAwM2MgbmV4dF9jaWQ7IGNpZCYjNDM7JiM0MzspIHtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzc3LVx0XHRzMzIgc2lkeCA9IHRibHMtXHUwMDNlY2lkX3RvX3NoYXJkW2NpZF07XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNTQ9c3RhdGljIGJvb2wgcnFfaXNfb3BlbihzdHJ1Y3QgcnEgKnJxLCB1NjQgZW5xX2ZsYWdzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzYxLVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM2MjpcdGlmIChzY2hlZF9jbGFzc19hYm92ZShycS1cdTAwM2VuZXh0X2NsYXNzLCBcdTAwMjZleHRfc2NoZWRfY2xhc3MpKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNjMtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM2OC1cdCAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNjk6XHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUoXHUwMDI2ZXh0X3NjaGVkX2NsYXNzLCBycS1cdTAwM2VuZXh0X2NsYXNzKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzcwLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTE1Njg9c3RhdGljIHZvaWQgcnFfb3duZWRfcG9zdF9lbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgcnEgKnJxLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTYwOS1cdCAqIHB1cnBvc2UsIGJ1dCBmb3IgaXQgdG8gYmUgaW52b2tlZCwgd2UgbXVzdCBlbnN1cmUgdGhhdCB3ZSBidW1wXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE2MTA6XHQgKiBAcnEtXHUwMDNlbmV4dF9jbGFzcyB0byBcdTAwMjZleHRfc2NoZWRfY2xhc3MgaWYgaXQmIzM5O3MgY3VycmVudGx5IGlkbGUuXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MTEtXHQgKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjEyLVx0ICogd2FrZXVwX3ByZWVtcHQoKSBkb2VzIHRoZSBidW1waW5nLCBhbmQgc2luY2Ugd2Ugb25seSBpbnZva2UgaXQgaWZcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYxMzpcdCAqIEBycS1cdTAwM2VuZXh0X2NsYXNzIGlzIGJlbG93IFx1MDAyNmV4dF9zY2hlZF9jbGFzcywgaXQgd2lsbCBhbHNvXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MTQtXHQgKiByZXNjaGVkX2N1cnIocnEpLlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjE1LVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE2MTY6XHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUocC1cdTAwM2VzY2hlZF9jbGFzcywgcnEtXHUwMDNlbmV4dF9jbGFzcykpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MTctXHRcdHdha2V1cF9wcmVlbXB0KHJxLCBwLCAwKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MjMtXHQgKiBOb3RlIHRoYXQgdGhlIHdha2V1cF9wcmVlbXB0KCkgYWJvdmUgbWF5IGhhdmUgYWxyZWFkeSB0cmlnZ2VyZWRcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYyNDpcdCAqIGEgcmVzY2hlZCBpZiBAcnEtXHUwMDNlbmV4dF9jbGFzcyB3YXMgaWRsZS4gSXQmIzM5O3MgaGFybWxlc3MsIHNpbmNlXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MjUtXHQgKiBuZWVkX3Jlc2NoZWQgaXMgY2xlYXJlZCBpbW1lZGlhdGVseSBhZnRlciB0YXNrIHBpY2suXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zMTM5PXN0YXRpYyB2b2lkIHN3aXRjaF9jbGFzcyhzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMTQxLVx0c3RydWN0IHNjeF9zY2hlZCAqc2NoID0gc2N4X3Jvb3RfcHJvdGVjdGVkX2xpdmUoKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzE0MjpcdGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqbmV4dF9jbGFzcyA9IG5leHQtXHUwMDNlc2NoZWRfY2xhc3M7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMxNDMtXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMTQ5LVx0ICogbG9uZ2VyIHVuZGVyIHRoZSBjb250cm9sIG9mIFNDWC4gVGhlcmVmb3JlLCBkb24mIzM5O3QgaW52b2tlIHRoZSBjYWxsYmFja1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMTUwOlx0ICogaWYgdGhlIG5leHQgY2xhc3MgaXMgYmVsb3cgU0NYIChpbiB3aGljaCBjYXNlIHRoZSBCUEYgc2NoZWR1bGVyIGhhc1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMTUxLVx0ICogYWN0aXZlbHkgZGVjaWRlZCBub3QgdG8gc2NoZWR1bGUgYW55IHRhc2tzIG9uIHRoZSBDUFUpLlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMTUyLVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjMxNTM6XHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUoXHUwMDI2ZXh0X3NjaGVkX2NsYXNzLCBuZXh0X2NsYXNzKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE1NC1cdFx0cmV0dXJuO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE2Ny1cdFx0XHRzdHJ1Y3Qgc2N4X2NwdV9yZWxlYXNlX2FyZ3MgYXJncyA9IHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzE2ODpcdFx0XHRcdC5yZWFzb24gPSBwcmVlbXB0X3JlYXNvbl9mcm9tX2NsYXNzKG5leHRfY2xhc3MpLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMTY5LVx0XHRcdFx0LnRhc2sgPSBuZXh0LFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTU3Mj1ib29sIHNjeF9hbGxvd190dHd1X3F1ZXVlKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU1OTItLyoqXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjU1OTM6ICogaGFuZGxlX2xvY2t1cCAtIHNjaGVkX2V4dCBjb21tb24gbG9ja3VwIGhhbmRsZXJcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTU5NC0gKiBAZXhpdF9jcHU6IENQVSB0byByZWNvcmQgaW4gZXhpdF9pbmZvLiBQYXNzIHRoZSBzdGFsbGVkL2h1bmcgQ1BVLCBub3QgY3VycmVudC5cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTg2ODY9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBzY3hfcG1fbm90aWZpZXIgPSB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04Njg5LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NjkwOnZvaWQgX19pbml0IGluaXRfc2NoZWRfZXh0X2NsYXNzKHZvaWQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2OTEte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA5NDM9c3RhdGljIGludCBfX2luaXQgc2N4X2luaXQodm9pZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMDIwLVx0Lypcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTEwMjE6XHQgKiBrZnVuYyByZWdpc3RyYXRpb24gY2FuJiMzOTt0IGJlIGRvbmUgZnJvbSBpbml0X3NjaGVkX2V4dF9jbGFzcygpIGFzXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMDIyLVx0ICogcmVnaXN0ZXJfYnRmX2tmdW5jX2lkX3NldCgpIG5lZWRzIG1vc3Qgb2YgdGhlIHN5c3RlbSB0byBiZSB1cC5cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oPTIyPWJvb2wgc2N4X2FsbG93X3R0d3VfcXVldWUoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg6MjM6dm9pZCBpbml0X3NjaGVkX2V4dF9jbGFzcyh2b2lkKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtMjQtXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuaD01Nj1zdGF0aWMgaW5saW5lIGJvb2wgc2N4X2FsbG93X3R0d3VfcXVldWUoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0cnVlOyB9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oOjU3OnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NjaGVkX2V4dF9jbGFzcyh2b2lkKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuaC01OC1cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz05MTM9c3RhdGljIGJvb2wgY2hlY2tfYnVpbHRpbl9pZGxlX2VuYWJsZWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTkyNi0gKiBXZSBjYW4mIzM5O3Qgc2ltcGx5IGNoZWNrIHdoZXRoZXIgQHAtXHUwMDNlbWlncmF0aW9uX2Rpc2FibGVkIGlzIHNldCBpbiBhXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzo5Mjc6ICogc2NoZWRfZXh0IGNhbGxiYWNrLCBiZWNhdXNlIHRoZSBCUEYgcHJvbG9nIChfX2JwZl9wcm9nX2VudGVyKSBtYXkgZGlzYWJsZVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtOTI4LSAqIG1pZ3JhdGlvbiBmb3IgdGhlIGN1cnJlbnQgdGFzayB3aGlsZSBydW5uaW5nIEJQRiBjb2RlLlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTE1MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHNjeF9rZnVuY19zZXRfaWRsZSA9IHtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNTM3LSAqXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNTM4OiAqIFRoZXNlIGtmdW5jcyBhcmUgYWxzbyBtZW1iZXJzIG9mIHNjeF9rZnVuY19pZHNfdW5sb2NrZWQgKHNlZSBleHQuYykgYmVjYXVzZVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTUzOS0gKiB0aGV5JiMzOTtyZSBjYWxsYWJsZSBmcm9tIHVubG9ja2VkIGNvbnRleHRzIGluIGFkZGl0aW9uIHRvIG9wcy5zZWxlY3RfY3B1KCkgYW5kXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTEzMj1lbnVtIHNjeF9vcHNfZmxhZ3Mge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMzgtXHQvKlxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEzOTpcdCAqIEJ5IGRlZmF1bHQsIGlmIHRoZXJlIGFyZSBubyBvdGhlciB0YXNrIHRvIHJ1biBvbiB0aGUgQ1BVLCBleHQgY29yZVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE0MC1cdCAqIGtlZXBzIHJ1bm5pbmcgdGhlIGN1cnJlbnQgdGFzayBldmVuIGFmdGVyIGl0cyBzbGljZSBleHBpcmVzLiBJZiB0aGlzXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTMxOT1zdHJ1Y3Qgc2NoZWRfZXh0X29wcyB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTM2OS1cdCAqXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MzcwOlx0ICogVGhlIGV4dCBjb3JlIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgdGhlIEJQRiBzaWRlIG93bnMgYSBnaXZlbiB0YXNrIG9yXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMzcxLVx0ICogbm90IGFuZCBjYW4gZ3JhY2VmdWxseSBpZ25vcmUgc3B1cmlvdXMgZGlzcGF0Y2hlcyBmcm9tIEJQRiBzaWRlLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaD0xNDIyPWVudW0gc2N4X2NhcF9mbGFncyB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE0NzMtICogZGVsaXZlcnkgaXMgaW4gZmxpZ2h0IHBlciBzaGFyZC4gRnVydGhlciBjaGFuZ2VzIGZvbGQgaW50byB0aGUgc2FtZSBidWZmZXJcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxNDc0OiAqIGFuZCBzaGlwIGFzIHRoZSBuZXh0IGNhbGxiYWNrLCBzbyBhIHNoYXJkJiMzOTtzIGNhbGxiYWNrcyBmaXJlIGluIG9yZGVyLlxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE0NzUtICpcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTY2Mz1lbnVtIHNjeF9lbnFfZmxhZ3Mge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNzE2LVx0ICogVGhlIHRhc2sgYmVpbmcgZW5xdWV1ZWQgaXMgdGhlIG9ubHkgdGFzayBhdmFpbGFibGUgZm9yIHRoZSBjcHUuIEJ5XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTcxNzpcdCAqIGRlZmF1bHQsIGV4dCBjb3JlIGtlZXBzIGV4ZWN1dGluZyBzdWNoIHRhc2tzIGJ1dCB3aGVuXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTcxOC1cdCAqICVTQ1hfT1BTX0VOUV9MQVNUIGlzIHNwZWNpZmllZCwgdGhleSYjMzk7cmUgb3BzLmVucXVldWUoKSYjMzk7ZCB3aXRoIHRoZVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaD0xODIwPXN0YXRpYyBjb25zdCBjaGFyICpzY3hfZW5hYmxlX3N0YXRlX3N0cltdID0ge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xODI5LSAqXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTgzMDogKiBUaGUgc2NoZWRfZXh0IGNvcmUgdXNlcyB0aGlzIHN0YXRlIG1hY2hpbmUgdG8gdHJhY2sgdGFzayBvd25lcnNoaXBcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xODMxLSAqIGJldHdlZW4gdGhlIFNDWCBjb3JlIGFuZCB0aGUgQlBGIHNjaGVkdWxlci4gVGhpcyBhbGxvd3MgdGhlIEJQRlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xOTAyLSAqXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTkwMzogKiBUaGUgc2NoZWRfZXh0IGNvcmUgdXNlcyBhIFwmIzM0O2xvY2sgZGFuY2luZ1wmIzM0OyBwcm90b2NvbCBjb29yZGluYXRlZCBieVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE5MDQtICogcC1cdTAwM2VzY3guaG9sZGluZ19jcHUuIFdoZW4gbW92aW5nIGEgdGFzayB0byBhIGRpZmZlcmVudCBycTpcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTEwLSAqIHN1Yi1zY2hlZHVsZXIgZW5hYmxlL2Rpc2FibGUgcGF0aHMuIFRoZSBjb3JlIGRpc3BhdGNoL2VucXVldWUgbWFjaGluZXJ5IGl0XG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjExOiAqIGJ1aWxkcyBvbiBsaXZlcyBpbiBleHQuYy5cbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTItICpcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jPTEyMjg9dm9pZCBkcmFpbl9kZXNjZW5kYW50cyhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9zdWIuYy0xMjQ1LSAqIHN0YXRlIHRvICVTQ1hfVEFTS19SRUFEWSB0byBhY2NvdW50IGZvciB0aGUgYWxyZWFkeSBjb21wbGV0ZWQgaW5pdC4gQSB0YXNrXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjEyNDY6ICogb24gYSBub24tZXh0IGNsYXNzLCBwb3NzaWJsZSB1bmRlciBhbiAlU0NYX09QU19TV0lUQ0hfUEFSVElBTCByb290LCBzdGF5c1xua2VybmVsL3NjaGVkL2V4dC9zdWIuYy0xMjQ3LSAqICVSRUFEWSBhbmQgaXMgZW5hYmxlZCBieSBzd2l0Y2hpbmdfdG9fc2N4KCkgaWYgaXQgc3dpdGNoZXMgb3Zlci5cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jPTE3MDU9dm9pZCBzY3hfc3ViX2VuYWJsZV93b3JrZm4oc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTE5NTAtXHRcdFx0ICogaXMgd2hhdCB3ZSB3YW50LiBBc3NpZ24gaXQgdG8gQHNjaCBhbmQsIGlmIGl0JiMzOTtzIG9uXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjE5NTE6XHRcdFx0ICogdGhlIGV4dCBjbGFzcywgZW5hYmxlLiBBIG5vbi1leHQgdGFzaywgcG9zc2libGUgdW5kZXJcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTk1Mi1cdFx0XHQgKiBhbiAlU0NYX09QU19TV0lUQ0hfUEFSVElBTCByb290LCBzdGF5cyBSRUFEWSBhbmQgaXNcbi0tXG5rZXJuZWwvc2NoZWQvZmFpci5jPTY5NzM9c3RhdGljIGJvb2wgdGhyb3R0bGVfY2ZzX3JxKHN0cnVjdCBjZnNfcnEgKmNmc19ycSlcbi0tXG5rZXJuZWwvc2NoZWQvZmFpci5jLTcwMjctXHQgKiBjdXJyZW50IGRvbm9yLiBJbiBjYXNlIG9mIHByb3h5LWV4ZWN1dGlvbiwgdGhlIGV4ZWN1dGlvblxua2VybmVsL3NjaGVkL2ZhaXIuYzo3MDI4Olx0ICogY29udGV4dCBjYW5ub3QgZXhpdCB0byB0aGUgdXNlcnNwYWNlIHdoaWxlIGhvbGRpbmcgYSBtdXRleFxua2VybmVsL3NjaGVkL2ZhaXIuYy03MDI5LVx0ICogYW5kIHRoZSBydWxlIG9mIHRocm90dGxlIGRlZmVycmFsIHRvIG9ubHkgdGhyb3R0bGUgdGhlXG4tLVxua2VybmVsL3NjaGVkL2ZhaXIuYz0xNTQzNj1pbnQgc2NoZWRfZ3JvdXBfc2V0X2lkbGUoc3RydWN0IHRhc2tfZ3JvdXAgKnRnLCBsb25nIGlkbGUpXG4tLVxua2VybmVsL3NjaGVkL2ZhaXIuYy0xNTQ2Ni1cdFx0aWYgKFdBUk5fT05fT05DRSh3YXNfaWRsZSA9PSBjZnNfcnFfaXNfaWRsZShncnBfY2ZzX3JxKSkpXG5rZXJuZWwvc2NoZWQvZmFpci5jOjE1NDY3Olx0XHRcdGdvdG8gbmV4dF9jcHU7XG5rZXJuZWwvc2NoZWQvZmFpci5jLTE1NDY4LVxuLS1cbmtlcm5lbC9zY2hlZC9mYWlyLmMtMTU0ODYtXG5rZXJuZWwvc2NoZWQvZmFpci5jOjE1NDg3Om5leHRfY3B1Olxua2VybmVsL3NjaGVkL2ZhaXIuYy0xNTQ4OC1cdFx0cnFfdW5sb2NrX2lycXJlc3RvcmUocnEsIFx1MDAyNnJmKTtcbi0tXG5rZXJuZWwvc2NoZWQvcnQuYz0yMDc4PXN0YXRpYyB2b2lkIHB1c2hfcnRfdGFza3Moc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvcnQuYy0yMTI3LSAqL1xua2VybmVsL3NjaGVkL3J0LmM6MjEyODpzdGF0aWMgaW50IHJ0b19uZXh0X2NwdShzdHJ1Y3Qgcm9vdF9kb21haW4gKnJkKVxua2VybmVsL3NjaGVkL3J0LmMtMjEyOS17XG4tLVxua2VybmVsL3NjaGVkL3J0LmMtMjEzNS1cdCAqIFdoZW4gc3RhcnRpbmcgdGhlIElQSSBSVCBwdXNoaW5nLCB0aGUgcnRvX2NwdSBpcyBzZXQgdG8gLTEsXG5rZXJuZWwvc2NoZWQvcnQuYzoyMTM2Olx0ICogcnRfbmV4dF9jcHUoKSB3aWxsIHNpbXBseSByZXR1cm4gdGhlIGZpcnN0IENQVSBmb3VuZCBpblxua2VybmVsL3NjaGVkL3J0LmMtMjEzNy1cdCAqIHRoZSBydG9fbWFzay5cbmtlcm5lbC9zY2hlZC9ydC5jLTIxMzgtXHQgKlxua2VybmVsL3NjaGVkL3J0LmM6MjEzOTpcdCAqIElmIHJ0b19uZXh0X2NwdSgpIGlzIGNhbGxlZCB3aXRoIHJ0b19jcHUgaXMgYSB2YWxpZCBDUFUsIGl0XG5rZXJuZWwvc2NoZWQvcnQuYy0yMTQwLVx0ICogd2lsbCByZXR1cm4gdGhlIG5leHQgQ1BVIGZvdW5kIGluIHRoZSBydG9fbWFzay5cbi0tXG5rZXJuZWwvc2NoZWQvcnQuYz0yMTkwPXN0YXRpYyB2b2lkIHRlbGxfY3B1X3RvX3B1c2goc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvcnQuYy0yMjA5LVx0aWYgKHJxLVx1MDAzZXJkLVx1MDAzZXJ0b19jcHUgXHUwMDNjIDApXG5rZXJuZWwvc2NoZWQvcnQuYzoyMjEwOlx0XHRjcHUgPSBydG9fbmV4dF9jcHUocnEtXHUwMDNlcmQpO1xua2VybmVsL3NjaGVkL3J0LmMtMjIxMS1cbi0tXG5rZXJuZWwvc2NoZWQvcnQuYz0yMjI0PXZvaWQgcnRvX3B1c2hfaXJxX3dvcmtfZnVuYyhzdHJ1Y3QgaXJxX3dvcmsgKndvcmspXG4tLVxua2VybmVsL3NjaGVkL3J0LmMtMjI0Ni1cdC8qIFBhc3MgdGhlIElQSSB0byB0aGUgbmV4dCBydCBvdmVybG9hZGVkIHF1ZXVlICovXG5rZXJuZWwvc2NoZWQvcnQuYzoyMjQ3Olx0Y3B1ID0gcnRvX25leHRfY3B1KHJkKTtcbmtlcm5lbC9zY2hlZC9ydC5jLTIyNDgtXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTE1OT1zdHJ1Y3QgcnEge1xuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTExODctXHQvKlxua2VybmVsL3NjaGVkL3NjaGVkLmg6MTE4ODpcdCAqIFRoZSBuZXh0IGNhY2hlbGluZSBob2xkcyB0aGUgKGhvdCkgcnVucXVldWUgbG9jaywgYXMgd2VsbCBhc1xua2VybmVsL3NjaGVkL3NjaGVkLmgtMTE4OS1cdCAqIHNvbWUgb3RoZXIgbGVzcyBwZXJmb3JtYW5jZS1jcml0aWNhbCBmaWVsZHMuXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTI1MS1cdHN0cnVjdCB0YXNrX3N0cnVjdFx0KnN0b3A7XG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoxMjUyOlx0Y29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpuZXh0X2NsYXNzO1xua2VybmVsL3NjaGVkL3NjaGVkLmgtMTI1My1cdHVuc2lnbmVkIGxvbmdcdFx0bmV4dF9iYWxhbmNlO1xuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oPTI4Njc9c3RhdGljIGlubGluZSB2b2lkIHJxX21vZGlmaWVkX2JlZ2luKHN0cnVjdCBycSAqcnEsIGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqY2xhc3MpXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0yODY4LXtcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjI4Njk6XHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUocnEtXHUwMDNlbmV4dF9jbGFzcywgY2xhc3MpKVxua2VybmVsL3NjaGVkL3NjaGVkLmg6Mjg3MDpcdFx0cnEtXHUwMDNlbmV4dF9jbGFzcyA9IGNsYXNzO1xua2VybmVsL3NjaGVkL3NjaGVkLmgtMjg3MS19XG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9Mjg3Mz1zdGF0aWMgaW5saW5lIGJvb2wgcnFfbW9kaWZpZWRfYWJvdmUoc3RydWN0IHJxICpycSwgY29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpjbGFzcylcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTI4NzQte1xua2VybmVsL3NjaGVkL3NjaGVkLmg6Mjg3NTpcdHJldHVybiBzY2hlZF9jbGFzc19hYm92ZShycS1cdTAwM2VuZXh0X2NsYXNzLCBjbGFzcyk7XG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0yODc2LX1cbi0tXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYz00OTM9aW50IF9fc2NoZWRfc2V0c2NoZWR1bGVyKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbi0tXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy00OTgtXHRpbnQgcmV0dmFsLCBvbGRwcmlvLCBuZXdwcmlvO1xua2VybmVsL3NjaGVkL3N5c2NhbGxzLmM6NDk5Olx0Y29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpwcmV2X2NsYXNzLCAqbmV4dF9jbGFzcztcbmtlcm5lbC9zY2hlZC9zeXNjYWxscy5jLTUwMC1cdHN0cnVjdCBiYWxhbmNlX2NhbGxiYWNrICpoZWFkO1xuLS1cbmtlcm5lbC9zY2hlZC9zeXNjYWxscy5jLTY3NS1cdHByZXZfY2xhc3MgPSBwLVx1MDAzZXNjaGVkX2NsYXNzO1xua2VybmVsL3NjaGVkL3N5c2NhbGxzLmM6Njc2Olx0bmV4dF9jbGFzcyA9IF9fc2V0c2NoZWR1bGVyX2NsYXNzKHBvbGljeSwgbmV3cHJpbyk7XG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy02NzctXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYzo2Nzg6XHRpZiAocHJldl9jbGFzcyAhPSBuZXh0X2NsYXNzKVxua2VybmVsL3NjaGVkL3N5c2NhbGxzLmMtNjc5LVx0XHRxdWV1ZV9mbGFncyB8PSBERVFVRVVFX0NMQVNTO1xuLS1cbmtlcm5lbC9zY2hlZC9zeXNjYWxscy5jLTY4NC1cdFx0XHRfX3NldHNjaGVkdWxlcl9wYXJhbXMocCwgYXR0cik7XG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYzo2ODU6XHRcdFx0cC1cdTAwM2VzY2hlZF9jbGFzcyA9IG5leHRfY2xhc3M7XG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy02ODYtXHRcdFx0cC1cdTAwM2VwcmlvID0gbmV3cHJpbztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MDgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBrZXJuZWwgY29uZmlnIHNldHRpbmc6CgoqKkRlbHZpbmcgaW50byB0aGUgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBpcyBgU0NIRURfQ0xBU1NfRVhUYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgZm9yIHRoZSBkZWZpbml0aW9uIGFuZCBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZmxhZyBlbmFibGVzIG9yIGRpc2FibGVzLCBhbmQgd2hlcmUgaXQgZml0cyB3aXRoaW4gdGhlIGxhcmdlciBzY2hlZHVsaW5nIGZyYW1ld29yay4gQSBxdWljayBzY2FuIG9mIGBrZXJuZWwvc2NoZWQvS2NvbmZpZ2AgaXMgZGVmaW5pdGVseSB0aGUgcGxhY2UgdG8gc3RhcnQuIFRoYXQgZmlsZSBpcyB0aGUgY2VudHJhbCByZXBvc2l0b3J5IGZvciBzY2hlZHVsZXItcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEJ5IGNoZWNraW5nIHRoZXJlLCBJIGNhbiBnZXQgYSBoYW5kbGUgb246CgoqICAgKipJdHMgUHVycG9zZToqKiBXaGF0IGZ1bmN0aW9uYWxpdHkgZG9lcyBgU0NIRURfQ0xBU1NfRVhUYCBjb250cm9sPyBJcyBpdCBlbmFibGluZyBhIHNwZWNpZmljIHNjaGVkdWxlciBjbGFzcywgZXh0ZW5kaW5nIGFuIGV4aXN0aW5nIG9uZSwgb3Igc29tZSBvdGhlciBhc3BlY3Qgb2YgdGhlIHNjaGVkdWxpbmcgc3lzdGVtPwoqICAgKipEZXBlbmRlbmNpZXM6KiogRG9lcyB0aGlzIG9wdGlvbiByZWx5IG9uIGFueSBvdGhlciBjb25maWdzPyBBcmUgdGhlcmUgcHJlcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/CiogICAqKkNvbnRleHQ6KiogV2hlcmUgZG9lcyBgU0NIRURfQ0xBU1NfRVhUYCBzaXQgaW4gdGhlIEtjb25maWcgaGllcmFyY2h5PyBLbm93aW5nIGl0cyBwYXJlbnQgbWVudSBvciBzZWN0aW9uIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGl0cyBvdmVyYWxsIHNjb3BlIGFuZCByZWxldmFuY2Ugd2l0aGluIHRoZSBzY2hlZHVsaW5nIGxhbmRzY2FwZS4KKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBIb3BlZnVsbHksIHRoZSBLY29uZmlnIGVudHJ5IHdpbGwgaW5jbHVkZSBhIGhlbHBmdWwgY29tbWVudC4gRXZlbiBhIGJyaWVmIGRlc2NyaXB0aW9uIHdvdWxkIGdpdmUgbWUgYSBzdGFydGluZyBwb2ludC4KCkFybWVkIHdpdGggdGhpcyBpbmZvcm1hdGlvbiwgSSBjYW4gbWFrZSBhIG1vcmUgaW5mb3JtZWQgYXNzZXNzbWVudCBvZiB0aGUgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIGJlIGFibGUgdG8gdGVsbCBob3cgdGhpcyBmbGFnIGltcGFjdHMgdGhlIHN5c3RlbSYjMzk7cyBzY2hlZHVsaW5nIGJlaGF2aW9yIGFuZCBwb3NzaWJseSBob3cgdG8gdHVuZSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTQ0hFRF9DTEFTU19FWFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTkxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgUHJlZW1wdGlvbiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHdoZXJlIHdvdWxkIHRoaXMgcHJlZW1wdGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbiBiZSBsdXJraW5nPyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBga2VybmVsL0tjb25maWcucHJlZW1wdGAuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHNwb3QsIGdpdmVuIHRoZSBuYW1lLiBCdXQgeW91IGtub3cgaG93IHRoZXNlIHRoaW5ncyBnbywgc29tZXRpbWVzIHRoaW5ncyBlbmQgdXAgaW4gdW5leHBlY3RlZCBwbGFjZXMuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIGFsc28gZ2xhbmNlIGF0IGBpbml0L0tjb25maWdgLiBUaGF0JiMzOTtzIGEgcG9zc2liaWxpdHksIGVzcGVjaWFsbHkgaWYgaXQmIzM5O3MgcmVsYXRlZCB0byBlYXJseSBib290IG9yIHN5c3RlbSBpbml0aWFsaXphdGlvbi4gQW5kLCBvZiBjb3Vyc2UsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBtYWluIGBrZXJuZWwvS2NvbmZpZ2AgZmlsZSBpdHNlbGYuIEl0JiMzOTtzIHRoZSBjYXRjaC1hbGwgZm9yIGtlcm5lbCBvcHRpb25zLCBhbmQgc29tZXRpbWVzIHRoaW5ncyBnZXQgcGxhY2VkIHRoZXJlIGlmIHRoZXkgZG9uJiMzOTt0IGZpdCBuZWF0bHkgZWxzZXdoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlc2UgS2NvbmZpZyBmaWxlcyByZXZlYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NDSEVEX0NMQVNTX0VYVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0PTMwPVN3aXRjaGluZyB0byBhbmQgZnJvbSBzY2hlZF9leHRcbi0tXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTMyLVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDozMzpgYENPTkZJR19TQ0hFRF9DTEFTU19FWFRgYCBpcyB0aGUgY29uZmlnIG9wdGlvbiB0byBlbmFibGUgc2NoZWRfZXh0IGFuZFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdC0zNC1gYHRvb2xzL3NjaGVkX2V4dGBgIGNvbnRhaW5zIHRoZSBleGFtcGxlIHNjaGVkdWxlcnMuIFRoZSBmb2xsb3dpbmcgY29uZmlnXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0PTM1PW9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgdG8gdXNlIHNjaGVkX2V4dDpcbi0tXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTM5LSAgICBDT05GSUdfQlBGPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6NDA6ICAgIENPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdC00MS0gICAgQ09ORklHX0JQRl9TWVNDQUxMPXlcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODM1PXN0cnVjdCB0YXNrX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTg5Mi1cdHN0cnVjdCBzY2hlZF9kbF9lbnRpdHlcdFx0KmRsX3NlcnZlcjtcbmluY2x1ZGUvbGludXgvc2NoZWQuaDo4OTM6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmluY2x1ZGUvbGludXgvc2NoZWQuaC04OTQtXHRzdHJ1Y3Qgc2NoZWRfZXh0X2VudGl0eVx0XHRzY3g7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC0xMS1cbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0Lmg6MTI6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0LmgtMTMtXG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaD0yOTU9Ym9vbCBzY3hfcmN1X2NwdV9zdGFsbChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3RhbGxlZF9tYXNrKTtcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0LmgtMjk2LVxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaDoyOTc6I2Vsc2VcdC8qICFDT05GSUdfU0NIRURfQ0xBU1NfRVhUICovXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oLTI5OC1cbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oPTMwMz1zdGF0aWMgaW5saW5lIGJvb2wgc2N4X3JjdV9jcHVfc3RhbGwoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnN0YWxsZWRfbWFzaykgeyByZXR1cm4gZmFsc2U7IH1cbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0LmgtMzA0LVxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaDozMDU6I2VuZGlmXHQvKiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUICovXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oLTMwNi1cbi0tXG5pbml0L0tjb25maWc9OTM3PWNvbmZpZyBTQ0hFRF9QUk9YWV9FWEVDXG4tLVxuaW5pdC9LY29uZmlnLTk0MS1cdCMgTmVlZCB0byBpbnZlc3RpZ2F0ZSBob3cgdG8gaW5mb3JtIHNjaGVkX2V4dCBvZiBzcGxpdCBjb250ZXh0c1xuaW5pdC9LY29uZmlnOjk0MjpcdGRlcGVuZHMgb24gIVNDSEVEX0NMQVNTX0VYVFxuaW5pdC9LY29uZmlnLTk0My1cdCMgTm90IHBhcnRpY3VsYXJseSB1c2VmdWwgdW50aWwgd2UgZ2V0IHRvIG11bHRpLXJxIHByb3h5aW5nXG4tLVxuaW5pdC9LY29uZmlnPTEyMDA9Y29uZmlnIEVYVF9HUk9VUF9TQ0hFRFxuaW5pdC9LY29uZmlnLTEyMDEtXHRib29sXG5pbml0L0tjb25maWc6MTIwMjpcdGRlcGVuZHMgb24gU0NIRURfQ0xBU1NfRVhUIFx1MDAyNlx1MDAyNiBDR1JPVVBfU0NIRURcbmluaXQvS2NvbmZpZy0xMjAzLVx0c2VsZWN0IEdST1VQX1NDSEVEX1dFSUdIVFxuLS1cbmluaXQvS2NvbmZpZz0xMjA5PWNvbmZpZyBFWFRfU1VCX1NDSEVEXG5pbml0L0tjb25maWctMTIxMC0gICAgICAgIGRlZl9ib29sIHlcbmluaXQvS2NvbmZpZzoxMjExOiAgICAgICAgZGVwZW5kcyBvbiBTQ0hFRF9DTEFTU19FWFQgXHUwMDI2XHUwMDI2IENHUk9VUFNcbmluaXQvS2NvbmZpZy0xMjEyLVxuLS1cbmluaXQvaW5pdF90YXNrLmM9MTA1PXN0cnVjdCB0YXNrX3N0cnVjdCBpbml0X3Rhc2sgX19hbGlnbmVkKEwxX0NBQ0hFX0JZVEVTKSA9IHtcbi0tXG5pbml0L2luaXRfdGFzay5jLTE0Mi0jZW5kaWZcbmluaXQvaW5pdF90YXNrLmM6MTQzOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5pbml0L2luaXRfdGFzay5jLTE0NC1cdC5zY3hcdFx0PSB7XG4tLVxua2VybmVsL0tjb25maWcucHJlZW1wdD0xNTU9Y29uZmlnIFNDSEVEX0NPUkVcbi0tXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3Mi1cbmtlcm5lbC9LY29uZmlnLnByZWVtcHQ6MTczOmNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTc0LVx0Ym9vbCBcJiMzNDtFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcJiMzNDtcbi0tXG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmMtNTktXG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmM6NjA6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9idWlsZF9wb2xpY3kuYy02MS0jIGluY2x1ZGUgXHUwMDNjbGludXgvYnRmX2lkcy5oXHUwMDNlXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYz0yMjg9c3RhdGljIGlubGluZSBib29sIHByaW9fbGVzcyhjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmEsXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy0yNjEtXG5rZXJuZWwvc2NoZWQvY29yZS5jOjI2MjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2NvcmUuYy0yNjMtXHRpZiAocGEgPT0gTUFYX1JUX1BSSU8gJiM0MzsgTUFYX05JQ0UgJiM0MzsgMSlcdC8qIGV4dCAqL1xuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDU3ND1zdGF0aWMgdm9pZCBfX3NjaGVkX2ZvcmsodTY0IGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy00NjExLVxua2VybmVsL3NjaGVkL2NvcmUuYzo0NjEyOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvY29yZS5jLTQ2MTMtXHRpbml0X3NjeF9lbnRpdHkoXHUwMDI2cC1cdTAwM2VzY3gpO1xuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDgxND1pbnQgc2NoZWRfZm9yayh1NjQgY2xvbmVfZmxhZ3MsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTQ4NjEtXHRcdHAtXHUwMDNlc2NoZWRfY2xhc3MgPSBcdTAwMjZydF9zY2hlZF9jbGFzcztcbmtlcm5lbC9zY2hlZC9jb3JlLmM6NDg2MjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2NvcmUuYy00ODYzLVx0fSBlbHNlIGlmICh0YXNrX3Nob3VsZF9zY3gocC1cdTAwM2Vwb2xpY3kpKSB7XG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYz03NjEwPWNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqX19zZXRzY2hlZHVsZXJfY2xhc3MoaW50IHBvbGljeSwgaW50IHByaW8pXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy03NjE3LVxua2VybmVsL3NjaGVkL2NvcmUuYzo3NjE4OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvY29yZS5jLTc2MTktXHRpZiAodGFza19zaG91bGRfc2N4KHBvbGljeSkpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYz04ODcwPWludCBzY2hlZF9jcHVfZHlpbmcodW5zaWduZWQgaW50IGNwdSlcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTg4ODQtXHRkbF9zZXJ2ZXJfc3RvcChcdTAwMjZycS1cdTAwM2VmYWlyX3NlcnZlcik7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjg4ODU6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9jb3JlLmMtODg4Ni1cdGRsX3NlcnZlcl9zdG9wKFx1MDAyNnJxLVx1MDAzZWV4dF9zZXJ2ZXIpO1xuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9ODk1Mz12b2lkIF9faW5pdCBzY2hlZF9pbml0KHZvaWQpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy04OTYyLVx0QlVHX09OKCFzY2hlZF9jbGFzc19hYm92ZShcdTAwMjZmYWlyX3NjaGVkX2NsYXNzLCBcdTAwMjZpZGxlX3NjaGVkX2NsYXNzKSk7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjg5NjM6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9jb3JlLmMtODk2NC1cdEJVR19PTighc2NoZWRfY2xhc3NfYWJvdmUoXHUwMDI2ZmFpcl9zY2hlZF9jbGFzcywgXHUwMDI2ZXh0X3NjaGVkX2NsYXNzKSk7XG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy05MDgwLVx0XHRmYWlyX3NlcnZlcl9pbml0KHJxKTtcbmtlcm5lbC9zY2hlZC9jb3JlLmM6OTA4MTojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2NvcmUuYy05MDgyLVx0XHRleHRfc2VydmVyX2luaXQocnEpO1xuLS1cbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jPTEwOD1zdGF0aWMgaW5saW5lIHU4IGRsX2dldF90eXBlKHN0cnVjdCBzY2hlZF9kbF9lbnRpdHkgKmRsX3NlLCBzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTExMy1cdFx0cmV0dXJuIERMX1NFUlZFUl9GQUlSO1xua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MTE0OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYy0xMTUtXHRpZiAoZGxfc2UgPT0gXHUwMDI2cnEtXHUwMDNlZXh0X3NlcnZlcilcbi0tXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0xODQyPXZvaWQgc2NoZWRfaW5pdF9kbF9zZXJ2ZXJzKHZvaWQpXG4tLVxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmMtMTg2Ni1cbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jOjE4Njc6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTE4NjgtXHRcdGRsX3NlID0gXHUwMDI2cnEtXHUwMDNlZXh0X3NlcnZlcjtcbi0tXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0zNDUxPXN0YXRpYyB2b2lkIGRsX3NlcnZlcl9hZGRfYncoc3RydWN0IHJvb3RfZG9tYWluICpyZCwgaW50IGNwdSlcbi0tXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYy0zNDU4LVxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MzQ1OTojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmMtMzQ2MC1cdGRsX3NlID0gXHUwMDI2Y3B1X3JxKGNwdSktXHUwMDNlZXh0X3NlcnZlcjtcbi0tXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0zNDY2PXN0YXRpYyB1NjQgZGxfc2VydmVyX3JlYWRfYncoaW50IGNwdSlcbi0tXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYy0zNDczLVxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MzQ3NDojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmMtMzQ3NS1cdGlmIChjcHVfcnEoY3B1KS1cdTAwM2VleHRfc2VydmVyLmRsX3NlcnZlciBcdTAwMjZcdTAwMjZcbi0tXG5rZXJuZWwvc2NoZWQvZGVidWcuYz00OTQ9c3RhdGljIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfc2NoZWQ7XG5rZXJuZWwvc2NoZWQvZGVidWcuYy00OTUtXG5rZXJuZWwvc2NoZWQvZGVidWcuYzo0OTY6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTQ5Ny1zdGF0aWMgc3NpemVfdFxuLS1cbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jPTU2MT1zdGF0aWMgdm9pZCBkZWJ1Z2ZzX2V4dF9zZXJ2ZXJfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTU4MC19XG5rZXJuZWwvc2NoZWQvZGVidWcuYzo1ODE6I2VuZGlmIC8qIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgKi9cbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTU4Mi1cbi0tXG5rZXJuZWwvc2NoZWQvZGVidWcuYz03MTI9c3RhdGljIF9faW5pdCBpbnQgc2NoZWRfaW5pdF9kZWJ1Zyh2b2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTc2OS1cdGRlYnVnZnNfZmFpcl9zZXJ2ZXJfaW5pdCgpO1xua2VybmVsL3NjaGVkL2RlYnVnLmM6NzcwOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvZGVidWcuYy03NzEtXHRkZWJ1Z2ZzX2V4dF9zZXJ2ZXJfaW5pdCgpO1xuLS1cbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jPTE0MDY9dm9pZCBwcm9jX3NjaGVkX3Nob3dfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcbi0tXG5rZXJuZWwvc2NoZWQvZGVidWcuYy0xNTA1LVx0fVxua2VybmVsL3NjaGVkL2RlYnVnLmM6MTUwNjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2RlYnVnLmMtMTUwNy1cdF9fUFMoXCYjMzQ7ZXh0LmVuYWJsZWRcJiMzNDssIHRhc2tfb25fc2N4KHApKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTY0MT12b2lkIHNjeF9zZXRfdGFza19zdGF0ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHUzMiBzdGF0ZSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTY5Ny0gKiBzY3hfdGFza3MgY2FuIGJlIHJlbW92ZWQgaW4gZmF2b3Igb2YgYWx3YXlzIHVzaW5nIGNncm91cCBpdGVyYXRpb24gaWZcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Njk4OiAqIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgZGVwZW5kcyBvbiBDT05GSUdfQ0dST1VQUy5cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjk5LSAqXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuaC04LSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuaDo5OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTEwLVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg9Mzk9Ym9vbCBzY3hfcHJpb19sZXNzKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqYSwgY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpiLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtNDItXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oOjQzOiNlbHNlXHQvKiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTQ0LVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg9NTc9c3RhdGljIGlubGluZSB2b2lkIGluaXRfc2NoZWRfZXh0X2NsYXNzKHZvaWQpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTU4LVxua2VybmVsL3NjaGVkL2V4dC9leHQuaDo1OTojZW5kaWZcdC8qIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtNjAtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oOjYxOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTYyLXZvaWQgX19zY3hfdXBkYXRlX2lkbGUoc3RydWN0IHJxICpycSwgYm9vbCBpZGxlLCBib29sIGRvX25vdGlmeSk7XG4tLVxua2VybmVsL3NjaGVkL2lkbGUuYz01NTc9c3RhdGljIHZvaWQgdXBkYXRlX2N1cnJfaWRsZShzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9pZGxlLmMtNTY5LVx0ZGxfc2VydmVyX3VwZGF0ZV9pZGxlKFx1MDAyNnJxLVx1MDAzZWZhaXJfc2VydmVyLCBkZWx0YV9leGVjKTtcbmtlcm5lbC9zY2hlZC9pZGxlLmM6NTcwOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvaWRsZS5jLTU3MS1cdGRsX3NlcnZlcl91cGRhdGVfaWRsZShcdTAwMjZycS1cdTAwM2VleHRfc2VydmVyLCBkZWx0YV9leGVjKTtcbi0tXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD0xOTQ9c3RhdGljIGlubGluZSBpbnQgbm9ybWFsX3BvbGljeShpbnQgcG9saWN5KVxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTk1LXtcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjE5NjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTk3LVx0aWYgKHBvbGljeSA9PSBTQ0hFRF9FWFQpXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9NjgxPXN0cnVjdCBjZnNfcnEge1xuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTc3OS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjc4MDojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL3NjaGVkLmgtNzgxLS8qIHNjeF9ycS1cdTAwM2VmbGFncywgcHJvdGVjdGVkIGJ5IHRoZSBycSBsb2NrICovXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9ODExPXN0cnVjdCBzY3hfcnEge1xuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTg1MC19O1xua2VybmVsL3NjaGVkL3NjaGVkLmg6ODUxOiNlbmRpZiAvKiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUICovXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC04NTItXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTE1OT1zdHJ1Y3QgcnEge1xuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTEyMTMtXHRzdHJ1Y3QgZGxfcnFcdFx0ZGw7XG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoxMjE0OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xMjE1LVx0c3RydWN0IHNjeF9ycVx0XHRzY3g7XG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTg4NT1leHRlcm4gc3RydWN0IGJhbGFuY2VfY2FsbGJhY2sgYmFsYW5jZV9wdXNoX2NhbGxiYWNrO1xua2VybmVsL3NjaGVkL3NjaGVkLmgtMTg4Ni1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjE4ODc6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTE4ODgtZXh0ZXJuIGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyBleHRfc2NoZWRfY2xhc3M7XG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTkwND1zdGF0aWMgaW5saW5lIHZvaWQgc2N4X3JxX2Nsb2NrX2ludmFsaWRhdGUoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xOTEwLVxua2VybmVsL3NjaGVkL3NjaGVkLmg6MTkxMTojZWxzZSAvKiAhQ09ORklHX1NDSEVEX0NMQVNTX0VYVDogKi9cbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTE5MTItI2RlZmluZSBzY3hfZW5hYmxlZCgpXHRcdGZhbHNlXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTkxNj1zdGF0aWMgaW5saW5lIHZvaWQgc2N4X3JxX2Nsb2NrX2ludmFsaWRhdGUoc3RydWN0IHJxICpycSkge31cbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjE5MTc6I2VuZGlmIC8qICFDT05GSUdfU0NIRURfQ0xBU1NfRVhUICovXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xOTE4LVxuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oPTI4NDE9c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3Qgc2NoZWRfY2xhc3MgKm5leHRfYWN0aXZlX2NsYXNzKGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqY2xhc3MpXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmgtMjg0My1cdGNsYXNzJiM0MzsmIzQzOztcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjI4NDQ6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTI4NDUtXHRpZiAoc2N4X3N3aXRjaGVkX2FsbCgpIFx1MDAyNlx1MDAyNiBjbGFzcyA9PSBcdTAwMjZmYWlyX3NjaGVkX2NsYXNzKVxuLS1cbmtlcm5lbC9zY2hlZC90b3BvbG9neS5jPTQ3ND12b2lkIHJxX2F0dGFjaF9yb290KHN0cnVjdCBycSAqcnEsIHN0cnVjdCByb290X2RvbWFpbiAqcmQpXG4tLVxua2VybmVsL3NjaGVkL3RvcG9sb2d5LmMtNTEyLVxua2VybmVsL3NjaGVkL3RvcG9sb2d5LmM6NTEzOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvdG9wb2xvZ3kuYy01MTQtXHRpZiAocnEtXHUwMDNlZXh0X3NlcnZlci5kbF9zZXJ2ZXIpXG4tLVxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmM9MjQ9c3RhdGljIGludCBfX2luaXQgcmVnaXN0ZXJfZGVhZGxpbmUodm9pZClcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5jLTI1LXtcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5jOjI2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1NDSEVEX0NMQVNTX0VYVCkpIHtcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5jLTI3LVx0XHRydl9leHRfc2NoZWRfY2xhc3MgPSAodm9pZCAqKWthbGxzeW1zX2xvb2t1cF9uYW1lKFwmIzM0O2V4dF9zY2hlZF9jbGFzc1wmIzM0Oyk7XG4tLVxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmg9Nzc9c3RhdGljIGlubGluZSBib29sIHRhc2tfaXNfc2N4X2VuYWJsZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaC03OC17XG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaDo3OTpcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19TQ0hFRF9DTEFTU19FWFQpIFx1MDAyNlx1MDAyNlxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmgtODAtXHQgICAgICAgdHNrLVx1MDAzZXNjaGVkX2NsYXNzID09IHJ2X2V4dF9zY2hlZF9jbGFzcztcbi0tXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaD0xNTc9c3RhdGljIGlubGluZSBpbnQgaW5pdF9zdG9yYWdlKGJvb2wgc2tpcF90YXNrcylcbi0tXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaC0xNjQtXHRcdFx0Z290byBmYWlsO1xua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmg6MTY1Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0NIRURfQ0xBU1NfRVhUKSBcdTAwMjZcdTAwMjZcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5oLTE2Ni1cdFx0ICAgICFkYV9jcmVhdGVfZW1wdHlfc3RvcmFnZShleHRfc2VydmVyX2lkKGNwdSkpKVxuLS1cbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9ub21pc3Mvbm9taXNzLmM9MTU3PXN0YXRpYyB2b2lkIGhhbmRsZV9zY2hlZF9zd2l0Y2godm9pZCAqZGF0YSwgYm9vbCBwcmVlbXB0LFxuLS1cbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9ub21pc3Mvbm9taXNzLmMtMTgwLVx0XHRoYW5kbGVfc2VydmVyX3N3aXRjaChuZXh0LCBjcHUsIERMX1NFUlZFUl9GQUlSKTtcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9ub21pc3Mvbm9taXNzLmM6MTgxOlx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0NIRURfQ0xBU1NfRVhUKSlcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9ub21pc3Mvbm9taXNzLmMtMTgyLVx0XHRcdGhhbmRsZV9zZXJ2ZXJfc3dpdGNoKG5leHQsIGNwdSwgRExfU0VSVkVSX0VYVCk7XG4tLVxudG9vbHMvc2NoZWRfZXh0L0tjb25maWc9OD1DT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnOjk6Q09ORklHX1NDSEVEX0NMQVNTX0VYVD15XG50b29scy9zY2hlZF9leHQvS2NvbmZpZy0xMC1cbi0tXG50b29scy9zY2hlZF9leHQvUkVBRE1FLm1kPTU2PUNPTkZJR19CUEY9eVxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZDo1NzpDT05GSUdfU0NIRURfQ0xBU1NfRVhUPXlcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQtNTgtQ09ORklHX0JQRl9TWVNDQUxMPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zY2hlZF9leHQvY29uZmlnOjE6Q09ORklHX1NDSEVEX0NMQVNTX0VYVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zY2hlZF9leHQvY29uZmlnLTItQ09ORklHX0NHUk9VUFM9eVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODAzNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTY2hlZHVsZXIgRXh0ZW5zaW9uIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWcgb3B0aW9uIGlzIGBTQ0hFRF9DTEFTU19FWFRgLCBhbmQgdGhlIGZ1bmN0aW9uIHdlJiMzOTtyZSBsb29raW5nIGF0IGlzIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYW55IGludGVyZXN0aW5nIG5ldyBzdXJmYWNlIGFyZWEuIFRoZSBwYXRjaCBhZGRzIGEgY2hlY2ssIHNwZWNpZmljYWxseToKCmBgYGMKCQkvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovCgkJaWYgKHVubGlrZWx5KGRzcS0mZ3Q7aWQgPT0gU0NYX0RTUV9JTlZBTElEKSkKCQkJY29udGludWU7CmBgYAoKUmlnaHQsIHRoaXMgaXMgYSByYWNlIGNvbmRpdGlvbiBmaXggcmVsYXRlZCB0byBgZGVzdHJveV9kc3EoKWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBFc3NlbnRpYWxseSwgaXQgcHJldmVudHMgYSB1c2UtYWZ0ZXItZnJlZSBpc3N1ZS4gVGhpcyBpcyAqZGVmaW5pdGVseSogYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGNvcmUgYHNjaGVkX2V4dGAgKHNjaGVkdWxlciBleHRlbnNpb24pIGltcGxlbWVudGF0aW9uLiBTaW5jZSBpdCYjMzk7cyBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiwgaXTigJlzIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSeKAmW0gdGhpbmtpbmcgYFdvcnRoRnV6emluZz10cnVlYCBpcyB0aGUgcmlnaHQgY2FsbCBoZXJlLgoKTm93LCBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBmaW5kIGl0cyBjYWxsZXJzLiBMZXTigJlzIHNlZeKApiBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxlZCBieSBgcnVuX2RlZmVycmVkYCwgd2hpY2ggaXMgaW4gdHVybiBjYWxsZWQgYnkgYHNjeF9icGZfcnVuX2RlZmVycmVkYCBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIHRha2UgYSBxdWljayBsb29rIGF0IGBydW5fZGVmZXJyZWRgIHRvIGNvbmZpcm0gdGhlIGNhbGwgcGF0aCBhbmQgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydW5fZGVmZXJyZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9MjUzPU1PRFVMRV9QQVJNX0RFU0MoYnlwYXNzX2xiX2ludHZfdXMsIFwmIzM0O2J5cGFzcyBsb2FkIGJhbGFuY2UgaW50ZXJ2YWwgaW4gbWljcm9zZWNvbmRzICgwIChkaXNhYmxlKSB0byAxMHMpXCYjMzQ7KTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI1OS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjYwOnN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjYxLXN0YXRpYyBib29sIHRhc2tfZGVhZF9hbmRfZG9uZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTk1PXN0YXRpYyB2b2lkIGRlZmVycmVkX2JhbF9jYl93b3JrZm4oc3RydWN0IHJxICpycSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTk2LXtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTk3Olx0cnVuX2RlZmVycmVkKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTk4LX1cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMDA9c3RhdGljIHZvaWQgZGVmZXJyZWRfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTAwNC1cdHJhd19zcGluX3JxX2xvY2socnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDA1Olx0cnVuX2RlZmVycmVkKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTAwNi1cdHNjeF9ycV9sb2NrX2Ryb3AocnEpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzM2MD1zdGF0aWMgZW51bSBzY3hfZHNwX3ZlcmRpY3QgZGlzcGF0Y2hfY29yZV9waWNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMzg5LVx0XHRycS1cdTAwM2VzY3guZmxhZ3MgXHUwMDI2PSB+U0NYX1JRX0JBTF9DQl9QRU5ESU5HO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMzkwOlx0XHRydW5fZGVmZXJyZWQocnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMzkxLVx0fVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzYyNT1zdGF0aWMgdm9pZCB0YXNrX3dva2VuX3NjeChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM2MjYte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNjI3Olx0cnVuX2RlZmVycmVkKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzYyOC19XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NjExPXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NDgtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ2NDk6c3RhdGljIHZvaWQgcnVuX2RlZmVycmVkKHN0cnVjdCBycSAqcnEpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTI2MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYHJ1bl9kZWZlcnJlZGAgRnVuY3Rpb24gQ2FsbGVycyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBydW5fZGVmZXJyZWRgIGlzIHRyaWdnZXJlZCBieSBhIGhhbmRmdWwgb2YgZnVuY3Rpb25zOiBgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbmAsIGBkZWZlcnJlZF9pcnFfd29ya2ZuYCwgYGRpc3BhdGNoX2NvcmVfcGlja2AsIGFuZCBgdGFza193b2tlbl9zY3hgLiBJbnRlcmVzdGluZy4gQW5kLCBpZiBJJiMzOTttIHJlYWRpbmcgdGhpcyByaWdodCwgYHRhc2tfd29rZW5fc2N4YCBpcyBhIGNhbGxiYWNrIHRpZWQgdG8gdGhlIHNjaGVkdWxlciBjbGFzcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGludmVzdGlnYXRpb24uIExldCYjMzk7cyBkaWcgaW50byBgdGFza193b2tlbl9zY3hgIGFuZCBhbHNvIHRoYXQgYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gIGZ1bmN0aW9uLCB0aGV5IHNlZW0gbGlrZSB0aGUgbW9zdCByZWxldmFudCByaWdodCBub3cuCgpJJiMzOTttIHRoaW5raW5nIGB0YXNrX3dva2VuX3NjeGAgaXMgYSBwcm9taXNpbmcgdGFyZ2V0IGZvciBub3cuCgpXYWl0LCB3aGF0IGFib3V0IGBkZXN0cm95X2RzcWA/IFRoYXQgY29tbWVudCBpcyBtYWtpbmcgbWUgcmFpc2UgYW4gZXllYnJvdzsgaXQgbWVudGlvbnMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gYW5kIGludmFsaWRhdGlvbiBvZiBgQGRzcWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBkZXN0cm95X2RzcWAgaXMgc29tZSBraW5kIG9mIGVCUEYga2Z1bmMgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRoYXQgY291bGQgYmUgc2lnbmlmaWNhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rlc3Ryb3lfZHNxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ2MTE9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDYzOS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDY0MDpcdFx0LyogZGVzdHJveV9kc3EoKSBtYXkgaGF2ZSByYWNlZCBhbmQgaW52YWxpZGF0ZWQgQGRzcSwgbm90aGluZyB0byByZWVucSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NjQxLVx0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01MTI3PXN0YXRpYyBERUZJTkVfSVJRX1dPUksoZnJlZV9kc3FfaXJxX3dvcmssIGZyZWVfZHNxX2lycV93b3JrZm4pO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MTI4LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1MTI5OnN0YXRpYyB2b2lkIGRlc3Ryb3lfZHNxKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgdTY0IGRzcV9pZClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTEzMC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01MzM4PXN0YXRpYyB2b2lkIHNjeF9zY2hlZF9mcmVlX3JjdV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU0MDMtXHRcdHdoaWxlICghSVNfRVJSX09SX05VTEwoKGRzcSA9IHJoYXNodGFibGVfd2Fsa19uZXh0KFx1MDAyNnJodF9pdGVyKSkpKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1NDA0Olx0XHRcdGRlc3Ryb3lfZHNxKHNjaCwgZHNxLVx1MDAzZWlkKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTQwNS1cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk2NzE9X19icGZfa2Z1bmMgczMyIHNjeF9icGZfZHNxX25yX3F1ZXVlZCh1NjQgZHNxX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzA4LS8qKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzA5OiAqIHNjeF9icGZfZGVzdHJveV9kc3EgLSBEZXN0cm95IGEgY3VzdG9tIERTUVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzEwLSAqIEBkc3FfaWQ6IERTUSB0byBkZXN0cm95XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzE3LSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzE4Ol9fYnBmX2tmdW5jIHZvaWQgc2N4X2JwZl9kZXN0cm95X2RzcSh1NjQgZHNxX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3MTkte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyNC1cdGlmIChzY2gpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk3MjU6XHRcdGRlc3Ryb3lfZHNxKHNjaCwgZHNxX2lkKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyNi19XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDcxOD1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbnJfcXVldWVkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDcxOTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kZXN0cm95X2RzcSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA3MjAtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3BlZWssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1VfUFJPVEVDVEVEIHwgS0ZfUkVUX05VTEwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTA2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBLZXJuZWwgRnVuY3Rpb24gUmFjZSBDb25kaXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYC4gSSBrbm93IHRoaXMgaXMgYSBCUEYga2Z1bmMsIHNvIHRoYXQgaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLiBUaGUgY3JpdGljYWwgcmFjZSBoZXJlIGlzIGJldHdlZW4gYHNjeF9icGZfZGVzdHJveV9kc3FgIGFuZCBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgaXMgdHJpZ2dlcmVkLiBSaWdodCwgaXQmIzM5O3MgY2FsbGVkIGJ5IGBydW5fZGVmZXJyZWRgLiBBbmQgYHJ1bl9kZWZlcnJlZGAgaGFzIG11bHRpcGxlIHBvdGVudGlhbCBlbnRyeSBwb2ludHM6IGB0YXNrX3dva2VuX3NjeGAsIGBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuYCwgYGRlZmVycmVkX2lycV93b3JrZm5gLCBhbmQgYGRpc3BhdGNoX2NvcmVfcGlja2AuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIHNldCB0byBjaGVjay4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGRpc3BhdGNoX2NvcmVfcGlja2AgZ2V0cyBpbnZva2VkLiBJcyB0aGF0IGNhbGxlZCBieSBgcGlja19uZXh0X3Rhc2tfZXh0YCBvciBzb21ldGhpbmcgYW5hbG9nb3VzPyBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgY2FsbCBncmFwaCBmb3IgdGhhdCBmdW5jdGlvbiB0byBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyBhY2N1cmF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGlzcGF0Y2hfY29yZV9waWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTMzMjM9c3RhdGljIGVudW0gc2N4X2RzcF92ZXJkaWN0IGRpc3BhdGNoX3BpY2soc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZixcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMzNTktICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjMzNjA6c3RhdGljIGVudW0gc2N4X2RzcF92ZXJkaWN0IGRpc3BhdGNoX2NvcmVfcGljayhzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgcnFfZmxhZ3MgKnJmLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMzYxLVx0XHRcdFx0XHQgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQwOC0jZWxzZVx0LyogQ09ORklHX1NDSEVEX0NPUkUgKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzQwOTpzdGF0aWMgZW51bSBzY3hfZHNwX3ZlcmRpY3QgZGlzcGF0Y2hfY29yZV9waWNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0MTAtXHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNDE3PWRvX3BpY2tfdGFza19zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZiwgYm9vbCBmb3JjZV9zY3gpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDI4LVx0aWYgKHNjaGVkX2NvcmVfZW5hYmxlZChycSkpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0Mjk6XHRcdHZlcmRpY3QgPSBkaXNwYXRjaF9jb3JlX3BpY2socnEsIHJmLCBwcmV2KTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQzMC1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyNTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBJbnF1aXJ5OiBEZWVwIERpdmUgaW50byBgc2NoZWRfZXh0YCoqCgpPa2F5LCBzbyBgZG9fcGlja190YXNrX3NjeGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB0aGUgbmV4dCB0YXNrIGZvciBgc2NoZWRfZXh0YC4gVGhhdCBtZWFucyBwb3RlbnRpYWwgZm9jdXMgYXJlYXMgYXJlIGVpdGhlciBgc2N4X2JwZl9kZXN0cm95X2RzcWAsIGBkb19waWNrX3Rhc2tfc2N4YCBpdHNlbGYsIG9yIHBlcmhhcHMgYHRhc2tfd29rZW5fc2N4YC4gSGFuZyBvbi4uLiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgYSBCUEYga2Z1bmMsIGlzbiYjMzk7dCBpdD8gTWVhbmluZyBpdCYjMzk7cyBjYWxsZWQgKmZyb20qIEJQRiBwcm9ncmFtcy4gSW50ZXJlc3RpbmcuIE5vdyBJIHJlbWVtYmVyIOKAkyBmdXp6aW5nIHRoZXNlIGtmdW5jcywgdGhhdCYjMzk7cyBzeXprYWxsZXImIzM5O3MgZG9tYWluLiBIbW0uLi4gTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHJlYWNoYWJpbGl0eSBmb3IgYHNjeF9icGZfZGVzdHJveV9kc3FgLiBZZXAsIGNvbmZpcm1lZC4gSXQmIzM5O3MgaW5kZWVkIGEga2Z1bmMuIEFscmlnaHQsIGxldCYjMzk7cyBhbHNvIG1ha2Ugc3VyZSBgc2N4X2JwZl9jcmVhdGVfZHNxYCBpcyBpbiBwbGFjZSwganVzdCBmb3IgZ29vZCBtZWFzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3hfYnBmX2NyZWF0ZV9kc3EmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTM3Nz1fX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05Mzc5LS8qKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MzgwOiAqIHNjeF9icGZfY3JlYXRlX2RzcSAtIENyZWF0ZSBhIGN1c3RvbSBEU1Fcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTM4MS0gKiBAZHNxX2lkOiBEU1EgdG8gY3JlYXRlXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05Mzg3LSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5Mzg4Ol9fYnBmX2tmdW5jIHMzMiBzY3hfYnBmX2NyZWF0ZV9kc3EodTY0IGRzcV9pZCwgczMyIG5vZGUsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTM4OS17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NDM2PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTQzNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcmVhdGVfZHNxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU0xFRVBBQkxFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NDM4LS8qIGFsc28gaW4gc2N4X2tmdW5jX2lkc19kaXNwYXRjaDogYWxzbyBjYWxsYWJsZSBmcm9tIG9wcy5kaXNwYXRjaCgpICovXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NjcxPV9fYnBmX2tmdW5jIHMzMiBzY3hfYnBmX2RzcV9ucl9xdWV1ZWQodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcxMy0gKiBEZXN0cm95IHRoZSBjdXN0b20gRFNRIGlkZW50aWZpZWQgYnkgQGRzcV9pZC4gT25seSBEU1FzIGNyZWF0ZWQgd2l0aFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzE0OiAqIHNjeF9icGZfY3JlYXRlX2RzcSgpIGNhbiBiZSBkZXN0cm95ZWQuIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUgRFNRIGlzXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3MTUtICogZW1wdHkgYW5kIG5vIGZ1cnRoZXIgdGFza3MgYXJlIGRpc3BhdGNoZWQgdG8gaXQuIElnbm9yZWQgaWYgY2FsbGVkIG9uIGEgRFNRXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTc2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUga2Z1bmMgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZXNlIGtmdW5jcywgYHNjeF9icGZfY3JlYXRlX2RzcWAgYW5kIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYC4gUmlnaHQsIHRob3NlIGFyZSBkZWZpbml0ZWx5IGtmdW5jcywgbm8gZG91YnQgYWJvdXQgaXQuIFRoZSBmaXggSSYjMzk7bSBjaGFzaW5nIGlzIGFwcGFyZW50bHkgbHVya2luZyBpbiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBOb3csIHRoZSByZWxldmFudCBjb25maWdzIGFyZSBgU0NIRURfQ0xBU1NfRVhUYC4gQWgsIGJ1dCB3YWl0IGEgbWludXRlLCBgU0NIRURfQ0xBU1NfRVhUYCBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIGNvcnJlY3RseSBlbmFibGVkIGZvciB3aGF0IEkmIzM5O20gZG9pbmcuIFJpZ2h0LCByaWdodC4uLiBJIHNob3VsZCBjaGVjayBga2VybmVsL0tjb25maWcucHJlZW1wdGAgdG8gY29uZmlybSB0aGUgZnVsbCBkZXBlbmRlbmNpZXMgZm9yIGBTQ0hFRF9DTEFTU19FWFRgLCBlbnN1cmluZyBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcml0aWNhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNDSEVEX0NMQVNTX0VYVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9LY29uZmlnLnByZWVtcHQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL0tjb25maWcucHJlZW1wdD0xNTU9Y29uZmlnIFNDSEVEX0NPUkVcbi0tXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3Mi1cbmtlcm5lbC9LY29uZmlnLnByZWVtcHQ6MTczOmNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTc0LVx0Ym9vbCBcJiMzNDtFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI2MDUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIFByZWVtcHRpb24gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgYWJvdXQgcHJlZW1wdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTczLiBUaGF0IGFyZWEgdXN1YWxseSBob2xkcyB0aGUgY29yZSBkZWZpbml0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGUgcHJlZW1wdGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBsaWVzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgZnVuZGFtZW50YWwgY2hvaWNlcyB0aGVyZSB0aGF0IGRyaXZlIHRoZSBiZWhhdmlvcjogd2hldGhlciBpdCYjMzk7cyBmdWxsIHByZWVtcHRpb24sIHZvbHVudGFyeSBwcmVlbXB0aW9uLCBvciBtYXliZSBzb21lIG1vcmUgbnVhbmNlZCBjb25maWd1cmF0aW9ucy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0IHRoZSBhdXRob3JzIGNvbnNpZGVyZWQgY3JpdGljYWwgaW4gbWFraW5nIHRoZWlyIGRlY2lzaW9ucy4gSXQmIzM5O3MgcHJvYmFibHkgdGhlIGJhc2lzIHRvIHNlZSB0aGUgaW50ZXItcmVsYXRlZCBpbXBhY3RzIGluIG90aGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCB0b28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL0tjb25maWcucHJlZW1wdCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XHQgIHdoaWNoIGlzIHRoZSBsaWtlbHkgdXNhZ2UgYnkgTGludXggZGlzdHJpYnV0aW9ucywgdGhlcmUgc2hvdWxkXG4gMTcxOlx0XHQgIGJlIG5vIG1lYXN1cmFibGUgaW1wYWN0IG9uIHBlcmZvcm1hbmNlLlxuIDE3MjpcdFxuIDE3MzpcdGNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcbiAxNzQ6XHRcdGJvb2wgXCYjMzQ7RXh0ZW5zaWJsZSBTY2hlZHVsaW5nIENsYXNzXCYjMzQ7XG4gMTc1Olx0XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFx1MDAyNlx1MDAyNiBCUEZfSklUIFx1MDAyNlx1MDAyNiBERUJVR19JTkZPX0JURlxuIDE3NjpcdFx0c2VsZWN0IFNUQUNLVFJBQ0UgaWYgU1RBQ0tUUkFDRV9TVVBQT1JUXG4gMTc3Olx0XHRoZWxwXG4gMTc4Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgYSBuZXcgc2NoZWR1bGVyIGNsYXNzIHNjaGVkX2V4dCAoU0NYKSwgd2hpY2hcbiAxNzk6XHRcdCAgYWxsb3dzIHNjaGVkdWxpbmcgcG9saWNpZXMgdG8gYmUgaW1wbGVtZW50ZWQgYXMgQlBGIHByb2dyYW1zIHRvXG4gMTgwOlx0XHQgIGFjaGlldmUgdGhlIGZvbGxvd2luZzpcbiAxODE6XHRcbiAxODI6XHRcdCAgLSBFYXNlIG9mIGV4cGVyaW1lbnRhdGlvbiBhbmQgZXhwbG9yYXRpb246IEVuYWJsaW5nIHJhcGlkXG4gMTgzOlx0XHQgICAgaXRlcmF0aW9uIG9mIG5ldyBzY2hlZHVsaW5nIHBvbGljaWVzLlxuIDE4NDpcdFx0ICAtIEN1c3RvbWl6YXRpb246IEJ1aWxkaW5nIGFwcGxpY2F0aW9uLXNwZWNpZmljIHNjaGVkdWxlcnMgd2hpY2hcbiAxODU6XHRcdCAgICBpbXBsZW1lbnQgcG9saWNpZXMgdGhhdCBhcmUgbm90IGFwcGxpY2FibGUgdG8gZ2VuZXJhbC1wdXJwb3NlXG4gMTg2Olx0XHQgICAgc2NoZWR1bGVycy5cbiAxODc6XHRcdCAgLSBSYXBpZCBzY2hlZHVsZXIgZGVwbG95bWVudHM6IE5vbi1kaXNydXB0aXZlIHN3YXAgb3V0cyBvZlxuIDE4ODpcdFx0ICAgIHNjaGVkdWxpbmcgcG9saWNpZXMgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMuXG4gMTg5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTQ1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uCgoqKk15IEFuYWx5c2lzIG9mIFNDSEVEX0NMQVNTX0VYVCBDb25maWd1cmF0aW9uIGFuZCBBc3NvY2lhdGVkIEZ1bmN0aW9ucyoqCgpSaWdodCwgc28gYFNDSEVEX0NMQVNTX0VYVGAgaXMgdGhlIGNvbmZpZ3VyYXRpb24ga2V5IEkmIzM5O20gd29ya2luZyB3aXRoIGhlcmUuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBOb3csIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgY3J1Y2lhbCBzeW1ib2xzIHJlbGF0ZWQgdG8gaXQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCBhbmQgYHNjeF9icGZfY3JlYXRlX2RzcWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uIOKAkyB0aGV5IHNlZW0gZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhlIGV4dGVuZGVkIHNjaGVkdWxlciBjbGFzcyYjMzk7cyBCUEYgaW50ZXJhY3Rpb25zLiBIb2xkIG9uLCB0aG91Z2guIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gU2luY2UgaXQmIzM5O3Mgc3RhdGljLCB0aGF0IG1lYW5zIGl0JiMzOTtzIGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0IGFuZCBub3QgdmlzaWJsZSBhcyBhIGZvY3VzIHN5bWJvbCBmcm9tIG91dHNpZGUuIEdvdHRhIGRpc2NvdW50IHRoYXQgb25lLiBBbHJpZ2h0LCBsZXQgbWUgZG91YmxlIGNoZWNrIHRoZSB2aXNpYmlsaXR5IG9mIGBkb19waWNrX3Rhc2tfc2N4YC4uLiBpdCYjMzk7cyB3b3J0aCBhIGxvb2sgdG8gY29uZmlybSBpZiBpdCYjMzk7cyBzdGF0aWMgb3Igbm90LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19waWNrX3Rhc2tfc2N4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTMxNzg9c3RhdGljIHZvaWQgcHV0X3ByZXZfdGFza19zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzI1My1cdFx0ICogbG9jYWxseSBydW5uYWJsZSBhbmQgY2FuIGxlZ2l0aW1hdGVseSBnbyBpZGxlIHdpdGggQHAgc3RpbGxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzI1NDpcdFx0ICogcnVubmFibGUgKHNlZSBkb19waWNrX3Rhc2tfc2N4KCkpLlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMjU1LVx0XHQgKi9cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM0MTY9c3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0MTc6ZG9fcGlja190YXNrX3NjeChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgcnFfZmxhZ3MgKnJmLCBib29sIGZvcmNlX3NjeClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQxOC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNDc5PXN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpY2tfdGFza19zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZilcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQ4MC17XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0ODE6XHRyZXR1cm4gZG9fcGlja190YXNrX3NjeChycSwgcmYsIGZhbHNlKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQ4Mi19XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDg2LSAqXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0ODc6ICogVXNlIGRvX3BpY2tfdGFza19zY3goKSBkaXJlY3RseSB3aXRoIEBmb3JjZV9zY3ggZW5hYmxlZCwgc2luY2UgdGhlXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0ODgtICogZGxfc2VydmVyIG11c3QgYWx3YXlzIHNlbGVjdCBhIHNjaGVkX2V4dCB0YXNrLlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzQ5MT1leHRfc2VydmVyX3BpY2tfdGFzayhzdHJ1Y3Qgc2NoZWRfZGxfZW50aXR5ICpkbF9zZSwgc3RydWN0IHJxX2ZsYWdzICpyZilcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0OTUtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0OTY6XHRyZXR1cm4gZG9fcGlja190YXNrX3NjeChkbF9zZS1cdTAwM2VycSwgcmYsIHRydWUpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDk3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwMDcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBJbnF1aXJ5OiBTdGF0aWMgdnMuIE5vbi1TdGF0aWMgRnVuY3Rpb25zIGluIFNDWCBhbmQgQlBGIEludGVncmF0aW9uKioKCk9rYXksIHNvIGBkb19waWNrX3Rhc2tfc2N4YCBpcyBkZWZpbml0ZWx5IGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gTm93LCBJJiMzOTttIHR1cm5pbmcgbXkgYXR0ZW50aW9uIHRvIHRoZSBgc2N4X2JwZl9gIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBCUEYgc2lkZSBvZiB0aGluZ3MuIEhtbSwgYHNjeF9icGZfZGVzdHJveV9kc3FgIGxvb2tzIHByb21pc2luZy4gSXQmIzM5O3MgYSBgX19icGZfa2Z1bmNgIGFuZCAqbm90KiBzdGF0aWMsIHNvIHRoYXQgbWFrZXMgaXQgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIE1ha2VzIHNlbnNlIC0gZGVzdHJ1Y3Rpb24gbGlrZWx5IG5lZWRzIGV4dGVybmFsIGFjY2Vzcy4KCk5vdywgd2hhdCBhYm91dCBgc2N4X2JwZl9jcmVhdGVfZHNxYD8gWWVwLCBzYW1lIHN0b3J5LiBBbHNvIGEgbm9uLXN0YXRpYyBrZnVuYywgYW5vdGhlciBrZXkgY2FuZGlkYXRlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zIGFuZCB3aGF0IHRoZXkgZXhwb3NlLgoKSSYjMzk7bSBnZXR0aW5nIHRoZSBmZWVsaW5nIEkgbWlnaHQgYmUgbWlzc2luZyBzb21lIHJlbGF0ZWQgZnVuY3Rpb25zLCBvciBwZXJoYXBzIEkgbmVlZCBhIGJyb2FkZXIgdmlldyBvZiB0aGlzIG1vZHVsZS4gVGltZSB0byBicm9hZGVuIHRoZSBzZWFyY2guIExldCYjMzk7cyBzZWUuLi5JJiMzOTtsbCBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9leHQuY2Agc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nIG5vbi1zdGF0aWMgaW4gdGhhdCBhcmVhLiBUaGlzIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBTQ1gtQlBGIGludGVncmF0aW9uIGxpdmVzLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O152b2lkIFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTYzNj11MzIgc2N4X2dldF90YXNrX3N0YXRlKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTY0MC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NjQxOnZvaWQgc2N4X3NldF90YXNrX3N0YXRlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTMyIHN0YXRlKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02NDIte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzA4LSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3MDk6dm9pZCBzY3hfdGFza19pdGVyX3N0YXJ0KHN0cnVjdCBzY3hfdGFza19pdGVyICppdGVyLCBzdHJ1Y3QgY2dyb3VwICpjZ3JwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MTAte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NzMwPXN0YXRpYyB2b2lkIF9fc2N4X3Rhc2tfaXRlcl9ycV91bmxvY2soc3RydWN0IHNjeF90YXNrX2l0ZXIgKml0ZXIpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03NDctICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc0ODp2b2lkIHNjeF90YXNrX2l0ZXJfdW5sb2NrKHN0cnVjdCBzY3hfdGFza19pdGVyICppdGVyKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03NDkte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NzczPXN0YXRpYyB2b2lkIHNjeF90YXNrX2l0ZXJfcmVsb2NrKHN0cnVjdCBzY3hfdGFza19pdGVyICppdGVyLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkwLSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTE6dm9pZCBzY3hfdGFza19pdGVyX3N0b3Aoc3RydWN0IHNjeF90YXNrX2l0ZXIgKml0ZXIpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5Mi17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDQyPXN0YXRpYyB2b2lkIHNjaGVkdWxlX2RlZmVycmVkX2xvY2tlZChzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA4Mjp2b2lkIHNjaGVkdWxlX2RzcV9yZWVucShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDgzLVx0XHRcdHU2NCByZWVucV9mbGFncywgc3RydWN0IHJxICpsb2NrZWRfcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMzI4PWJvb2wgc2N4X3NldF90YXNrX3NsaWNlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IHNsaWNlKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTM0OS0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTM1MDp2b2lkIHNjeF90YXNrX3NsaWNlX2VuZGVkKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTM1MS17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xNjM5PXN0YXRpYyB2b2lkIHNjeF9kaXNwYXRjaF9lbnF1ZXVlKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHJxICpycSxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE3ODEtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE3ODI6dm9pZCBzY3hfdGFza191bmxpbmtfZnJvbV9kc3Eoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTc4My17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xODAyLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxODAzOnZvaWQgc2N4X2Rpc3BhdGNoX2RlcXVldWUoc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xODA0LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTIwMTU9Ym9vbCBzY3hfcnFfb25saW5lKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yMDI2LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoyMDI3OnZvaWQgc2N4X2RvX2VucXVldWVfdGFzayhzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBlbnFfZmxhZ3MsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwMjgtXHRcdFx0IGludCBzdGlja3lfY3B1KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MjQxMz1zdGF0aWMgdm9pZCB3YWtldXBfcHJlZW1wdF9zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgd2FrZV9mbGFncylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI0MzYtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjI0Mzc6dm9pZCBzY3hfbW92ZV9sb2NhbF90YXNrX3RvX2xvY2FsX2RzcShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjQzOC1cdFx0XHRcdCAgICAgIHU2NCBlbnFfZmxhZ3MsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqc3JjX2RzcSxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTI4ODM9c3RhdGljIHZvaWQgZmluaXNoX2Rpc3BhdGNoKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjk1MC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mjk1MTp2b2lkIHNjeF9mbHVzaF9kaXNwYXRjaF9idWYoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgcnEgKnJxKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yOTUyLXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM0OTE9ZXh0X3NlcnZlcl9waWNrX3Rhc2soc3RydWN0IHNjaGVkX2RsX2VudGl0eSAqZGxfc2UsIHN0cnVjdCBycV9mbGFncyAqcmYpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNTAxLSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNTAyOnZvaWQgZXh0X3NlcnZlcl9pbml0KHN0cnVjdCBycSAqcnEpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MDMte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzY1Mj1zdGF0aWMgdm9pZCBoYW5kbGVfaG90cGx1ZyhzdHJ1Y3QgcnEgKnJxLCBib29sIG9ubGluZSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM3MDItXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM3MDM6dm9pZCBzY3hfcnFfYWN0aXZhdGUoc3RydWN0IHJxICpycSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzcwNC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNzA3LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNzA4OnZvaWQgc2N4X3JxX2RlYWN0aXZhdGUoc3RydWN0IHJxICpycSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzcwOS17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNzY4PXN0YXRpYyB2b2lkIHNjeF93YXRjaGRvZ193b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzc4Ni1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mzc4Nzp2b2lkIHNjeF90aWNrKHN0cnVjdCBycSAqcnEpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM3ODgte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzkyMj1zdGF0aWMgdm9pZCBfX3NjeF9lbmFibGVfdGFzayhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NTMtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM5NTQ6dm9pZCBzY3hfZW5hYmxlX3Rhc2soc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NTUte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9Mzk2MD1zdGF0aWMgdm9pZCBzY3hfZGlzYWJsZV90YXNrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk4OS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mzk5MDp2b2lkIF9fc2N4X2Rpc2FibGVfYW5kX2V4aXRfdGFzayhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk5MS17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MDIzLSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0MDI0OnZvaWQgc2N4X3N1Yl9pbml0X2NhbmNlbF90YXNrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MDI1LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQwMzUtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQwMzY6dm9pZCBzY3hfZGlzYWJsZV9hbmRfZXhpdF90YXNrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MDM3LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQwNTYtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQwNTc6dm9pZCBpbml0X3NjeF9lbnRpdHkoc3RydWN0IHNjaGVkX2V4dF9lbnRpdHkgKnNjeClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDA1OC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00MDg2PXN0YXRpYyB2b2lkIHNjeF90aWRfaGFzaF9pbnNlcnQoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDA5Ny1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDA5ODp2b2lkIHNjeF9wcmVfZm9yayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQwOTkte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDEwOT1pbnQgc2N4X2Zvcmsoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3Qga2VybmVsX2Nsb25lX2FyZ3MgKmthcmdzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDEzNS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDEzNjp2b2lkIHNjeF9wb3N0X2Zvcmsoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MTM3LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQxNjQtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQxNjU6dm9pZCBzY3hfY2FuY2VsX2Zvcmsoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MTY2LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQxOTQ9c3RhdGljIGJvb2wgdGFza19kZWFkX2FuZF9kb25lKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQyMDgtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQyMDk6dm9pZCBzY2hlZF9leHRfZGVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQyMTAte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDcwMT1ERUZJTkVfU1RBVElDX1BFUkNQVV9SV1NFTShzY3hfY2dyb3VwX29wc19yd3NlbSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ3MDItXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ3MDM6dm9pZCBzY3hfdGdfaW5pdChzdHJ1Y3QgdGFza19ncm91cCAqdGcpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ3MDQte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDc2NT1pbnQgc2N4X3RnX29ubGluZShzdHJ1Y3QgdGFza19ncm91cCAqdGcpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODA3LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0ODA4OnZvaWQgc2N4X3RnX29mZmxpbmUoc3RydWN0IHRhc2tfZ3JvdXAgKnRnKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODA5LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ4MzI9aW50IHNjeF9jZ3JvdXBfY2FuX2F0dGFjaChzdHJ1Y3QgY2dyb3VwX3Rhc2tzZXQgKnRzZXQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODkyLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0ODkzOnZvaWQgc2N4X2Nncm91cF9tb3ZlX3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODk0LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5MTMtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5MTQ6dm9pZCBzY3hfY2dyb3VwX2NhbmNlbF9hdHRhY2goc3RydWN0IGNncm91cF90YXNrc2V0ICp0c2V0KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTE1LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5MzItXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5MzM6dm9pZCBzY3hfZ3JvdXBfc2V0X3dlaWdodChzdHJ1Y3QgdGFza19ncm91cCAqdGcsIHVuc2lnbmVkIGxvbmcgd2VpZ2h0KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTM0LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5NDgtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5NDk6dm9pZCBzY3hfZ3JvdXBfc2V0X2lkbGUoc3RydWN0IHRhc2tfZ3JvdXAgKnRnLCBib29sIGlkbGUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5NTAte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDk2NC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDk2NTp2b2lkIHNjeF9ncm91cF9zZXRfYmFuZHdpZHRoKHN0cnVjdCB0YXNrX2dyb3VwICp0Zyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDk2Ni1cdFx0XHQgICAgIHU2NCBwZXJpb2RfdXMsIHU2NCBxdW90YV91cywgdTY0IGJ1cnN0X3VzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDk4OT1zdGF0aWMgc3RydWN0IGNncm91cCAqcm9vdF9jZ3JvdXAodm9pZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5OTgtICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5OTk6dm9pZCBzY3hfY2dyb3VwX2xvY2sodm9pZClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAwMC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MDA2LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1MDA3OnZvaWQgc2N4X2Nncm91cF91bmxvY2sodm9pZClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAwOC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01NjQxPWJvb2wgc2N4X3JjdV9jcHVfc3RhbGwoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnN0YWxsZWRfbWFzaylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU2OTItICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjU2OTM6dm9pZCBzY3hfc29mdGxvY2t1cCh1MzIgZHVyX3MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU2OTQte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTk2MT1zdGF0aWMgdm9pZCBlbmFibGVfYnlwYXNzX2RzcChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MDA3LS8qIG1heSBiZSBjYWxsZWQgd2l0aG91dCBob2xkaW5nIHNjeF9ieXBhc3NfbG9jayAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2MDA4OnZvaWQgc2N4X2Rpc2FibGVfYnlwYXNzX2RzcChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYwMDkte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NjA0Mz1zdGF0aWMgdm9pZCB1bmJ5cGFzc19yZW5vdGlmeV9pZGxlKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBzY3hfc2NoZWQgKnBvcyxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYwODctICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjYwODg6dm9pZCBzY3hfYnlwYXNzKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgYm9vbCBieXBhc3MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYwODkte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NjMwMD1zMzIgc2N4X2xpbmtfc2NoZWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM1NC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NjM1NTp2b2lkIHNjeF91bmxpbmtfc2NoZWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MzU2LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYzNzYtICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjYzNzc6dm9pZCBzY3hfZGlzYWJsZV9kdW1wKHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM3OC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MzgyLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2MzgzOnZvaWQgc2N4X2xvZ19zY2hlZF9kaXNhYmxlKHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM4NC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz02NjY3PXN0YXRpYyB2b2lkIHNjeF9kaXNhYmxlKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgZW51bSBzY3hfZXhpdF9raW5kIGtpbmQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02NjgxLSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2NjgyOnZvaWQgc2N4X2ZsdXNoX2Rpc2FibGVfd29yayhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTY2ODMte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODU1NT1zdGF0aWMgdm9pZCBraWNrX2NwdXNfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODYxNS0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODYxNjp2b2lkIHByaW50X3NjeF9pbmZvKGNvbnN0IGNoYXIgKmxvZ19sdmwsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODYxNy17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NTI5PV9fYnBmX2tmdW5jIGJvb2wgc2N4X2JwZl90YXNrX3NldF9kc3FfdnRpbWUoc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1NjQgdnRpbWUsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTQyLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NTQzOnZvaWQgc2N4X2tpY2tfY3B1KHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgczMyIGNwdSwgdTY0IGZsYWdzKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTQ0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1ODMKCQkJCQkJCW91dHB1dDogMTQyCgkJCQkJCQl0aG91Z2h0czogMTMyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgc2NoZWRfZXh0IFJhY2UgQ29uZGl0aW9uIGFuZCBSZWxldmFudCBDb25maWd1cmF0aW9ucyoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgY2VudGVyZWQgYXJvdW5kIGlkZW50aWZ5aW5nIGtleSBzeW1ib2xzIGZvciB0aGlzIHBhdGNoLiBJIHF1aWNrbHkgaG9uZWQgaW4gb24gYHNjeF9icGZfY3JlYXRlX2RzcWAgYW5kIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCBhcyBwb3RlbnRpYWwgZm9jdXMgcG9pbnRzLiBUaGVuIEkgcmVhbGl6ZWQgdGhhdCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgaW52YWxpZGF0ZXMgdGhlIGRzcSwgd2hpY2ggbWFkZSBpdCBhIHByaW1hcnkgdGFyZ2V0LiBUaGUgcmFjZSBjb25kaXRpb24gc2VlbXMgdG8gYmUgYmV0d2VlbiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCwgdGhlIGxhdHRlciBiZWluZyBjYWxsZWQgYnkgYHJ1bl9kZWZlcnJlZGAgd2hlbiBhIHRhc2sgaXMgd29rZW4gb3IgZGlzcGF0Y2hlZC4gVGhpcyBzb2xpZGlmaWVzIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCBhbmQgYHNjeF9icGZfY3JlYXRlX2RzcWAgYXMgdGhlIGNlbnRyYWwgc3ltYm9scyB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2UuCgpUbyBjb25maXJtIHRoaXMsIEkgY2hlY2tlZCBpZiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgdGhlICpvbmx5KiB3YXkgdG8gZGVzdHJveSBhIGRzcS4gSXQgY2FsbHMgYGRlc3Ryb3lfZHNxYCwgYW5kIHRoZSBvbmx5IG90aGVyIHBsYWNlIGlzIGBzY3hfc2NoZWRfZnJlZV9yY3Vfd29ya2AsIHdoaWNoIGRlc3Ryb3lzICphbGwqIGRzcXMgd2hlbiB0aGUgc2NoZWR1bGVyIGlzIHVubG9hZGVkLiBTbywgYHNjeF9icGZfZGVzdHJveV9kc3FgIGlzIGRlZmluaXRlbHkgYSByZWxldmFudCBzeW1ib2wsIGFzIGlzIGBzY3hfYnBmX2NyZWF0ZV9kc3FgLgoKSSBxdWlja2x5IHZlcmlmaWVkIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbiBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgYHNjeF9icGZfZGVzdHJveV9kc3FgIGFuZCBgc2N4X2JwZl9jcmVhdGVfZHNxYCB3YXMgY29ycmVjdCwgYW5kIHRoYXQgYHNjeF9icGZfZHNxX25yX3F1ZXVlZGAgd2FzIGFsc28gYSBrZnVuYy4gVGhpcyBjZW1lbnRlZCB0aGUgZm9jdXMgb24gdGhlc2UgdHdvIGZ1bmN0aW9ucy4KCk5leHQsIEkgbmVlZGVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgd2FzIGBTQ0hFRF9DTEFTU19FWFRgLCBidXQgSSBpbW1lZGlhdGVseSByZWFsaXplZCBpdCBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAsIGFuZCBJIGhhZCB0byByZW1lbWJlciB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzLiAgSSBkb3VibGUtY2hlY2tlZCB0byBzZWUgaWYgdGhlcmUgd2VyZSBhbnkgb3RoZXIgY29uZmlncyBJIHNob3VsZCBhZGQgdG8gdGhlIGxpc3QgYW5kIGZvdW5kIGBDT05GSUdfQlBGX1NZU0NBTExgLCBgQ09ORklHX0JQRl9KSVRgLiAgVGhlbiwgSSBjb25zdWx0ZWQgYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTQ0hFRF9DTEFTU19FWFRgLiBUaGlzIGxlZCBtZSB0byBhbHNvIGluY2x1ZGUgYERFQlVHX0lORk9fQlRGYCBhbmQgdGhlIGRlcGVuZGVuY2llcywgYnV0IHNpbmNlIHRoZSBwcm9tcHQgYXNrZWQgbWUgdG8gb25seSBsaXN0IHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIEkgc2VsZWN0ZWQgYFNDSEVEX0NMQVNTX0VYVGAsIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYERFQlVHX0lORk9fQlRGYC4KCkZpbmFsbHksIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmIHJlaW5mb3JjZWQgdGhlIGNvcmUgb2YgdGhlIGlzc3VlLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBiZXR3ZWVuIGBkZXN0cm95X2RzcWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gIGBkZXN0cm95X2RzcWAgc2V0cyBgZHNxLSZndDtpZGAgdG8gYFNDWF9EU1FfSU5WQUxJRGAuICBUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgRFNRIGhhcyBiZWVuIGludmFsaWRhdGVkLiBUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBzY2hlZHVsZXImIzM5O3MgYmVoYXZpb3IsIGFuZCB0aGUgZm9jdXMgc3ltYm9scyBhbmQgY29uZmlndXJhdGlvbnMgYWNjdXJhdGVseSByZWZsZWN0IHRoZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U0NIRURfQ0xBU1NfRVhUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3hfYnBmX2Rlc3Ryb3lfZHNxJiMzNDssCiAgICAmIzM0O3NjeF9icGZfY3JlYXRlX2RzcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBzY2hlZF9leHQgY29yZSBiZXR3ZWVuIGRlc3Ryb3lfZHNxKCkgYW5kIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBieSBjaGVja2luZyBpZiB0aGUgRFNRIGhhcyBiZWVuIGludmFsaWRhdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGVCUEYtYmFzZWQgc2NoZWR1bGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTQ0hFRF9DTEFTU19FWFQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7LAogICAgJiMzNDtERUJVR19JTkZPX0JURiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjeF9icGZfZGVzdHJveV9kc3EmIzM0OywKICAgICYjMzQ7c2N4X2JwZl9jcmVhdGVfZHNxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHNjaGVkX2V4dCBjb3JlIGJldHdlZW4gZGVzdHJveV9kc3EoKSBhbmQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycygpIGJ5IGNoZWNraW5nIGlmIHRoZSBEU1EgaGFzIGJlZW4gaW52YWxpZGF0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZUJQRi1iYXNlZCBzY2hlZHVsZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWF5IGhhdmUgaW52YWxpZGF0ZWQgYSBkaXNwYXRjaCBxdWV1ZSAoYGRzcWApIGJlZm9yZSBpdCBpcyBwcm9jZXNzZWQgaW4gYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKWAuIFRoZSBmaXggYWRkcyBhIGNoZWNrIGZvciBgZHNxLVx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRGAgdG8gc2tpcCB0aGUgaW52YWxpZGF0ZWQgcXVldWUuIFRoaXMgYWRkcmVzc2VzIGEgbG9naWNhbCByYWNlIGNvbmRpdGlvbiBvciBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUvaW52YWxpZCBzdGF0ZSBidWcsIHdoaWNoIGFyZSB3aXRoaW4gdGhlIHNjb3BlIG9mIHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN1Y2ggYXMgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcyBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UpLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGE0NTVkN2I3NTc0YmQ2ZTA1MDM0MTZlMTFmZjIyM2M5YTA5OThlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDAyOjU2OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMKaW5kZXggMjZkYmJiZmU1YTg3OC4uN2QwOTcyMDllNzc4MCAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jCkBAIC00NjM3LDYgJiM0Mzs0NjM3LDEwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSkKIAkJLyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovCiAJCXNtcF9tYigpOwogCiYjNDM7CQkvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovCiYjNDM7CQlpZiAodW5saWtlbHkoZHNxLSZndDtpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwogCQlCVUdfT04oZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTik7CiAJCXJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFNjaGVkdWxlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCwgc3BlY2lmaWNhbGx5IGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBhIGNoZWNrOiBgaWYgKHVubGlrZWx5KGRzcS0mZ3Q7aWQgPT0gU0NYX0RTUV9JTlZBTElEKSkgY29udGludWU7YC4gQWxyaWdodCwgdGhpcyBpcyBhIHJhY2UgY29uZGl0aW9uIGZpeCDigJMgYGRlc3Ryb3lfZHNxKClgIG1pZ2h0IGludmFsaWRhdGUgYGRzcWAgYmVmb3JlIHdlIGdldCB0byBpdC4gTWFrZXMgc2Vuc2UuIElmIGBkc3EtJmd0O2lkYCBpcyBlcXVhbCB0byBgU0NYX0RTUV9JTlZBTElEYCwgaXQgc2tpcHMgdGhlIGByZWVucV91c2VyYCBjYWxsLgoKSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhpcyBtaWdodCBiZSBhYm91dCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSwgYnV0IGl0JiMzOTtzIGNsZWFybHkgYSB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1ZywgcmlnaHQ/IFdhaXQsIGhvbGQgb24uIEV2ZW4gcmVhZGluZyBgZHNxLSZndDtpZGAgKmFmdGVyKiBgZGVzdHJveV9kc3EoKWAgY291bGQgYmUgYSByZWFkIG9mIGZyZWVkIG1lbW9yeSDigJMgdGhhdCYjMzk7cyBhIGNsYXNzaWMgVUFGIHRoYXQgS0FTQU4gKnNob3VsZCogYmUgY2F0Y2hpbmcuIE9yLCBtYXliZSBpdCYjMzk7cyBqdXN0IGEgbG9naWNhbCBidWcgd2hlcmUgYGRzcS0mZ3Q7aWRgIGlzIHNldCB0byBgU0NYX0RTUV9JTlZBTElEYCwgYnV0IHRoZSBtZW1vcnkgaXMgc3RpbGwgdGVjaG5pY2FsbHkgdmFsaWQsIHBlcmhhcHMgUkNVIHByb3RlY3RlZCBvciBzb21ldGhpbmcgYWxvbmcgdGhvc2UgbGluZXMuIEluIGVpdGhlciBjYXNlLCBpdCYjMzk7cyBub3QgYWN0dWFsbHkgYW4gKnVuaW5pdGlhbGl6ZWQgbWVtb3J5KiBwcm9ibGVtLiBJdCYjMzk7cyBqdXN0IGNoZWNraW5nIGBkc3EtJmd0O2lkYC4KClNvLCBubywgdGhlcmUmIzM5O3Mgbm8gaW5oZXJlbnQgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzayBoZXJlLiBXZSYjMzk7cmUganVzdCBjaGVja2luZyB0aGUgdmFsdWUgb2YgdGhlIGBpZGAgZmllbGQuIEkmIzM5O20gY29uZmlkZW50IGVub3VnaCB0byBtYXJrIGBOZWVkc0tNU0FOYCBhcyBmYWxzZSBmb3IgdGhpcyBjaGFuZ2UuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBhZ2FpbiB0byBjb25maXJtIHRoYXQgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLi4uICpjaGVja3MgY29kZSouLi4gWWVwLCBsb29rcyBnb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwODI9dm9pZCBzY2hlZHVsZV9kc3FfcmVlbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMzMtXHRcdC8qXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjExMzQ6XHRcdCAqIFBhaXJzIHdpdGggc21wX21iKCkgaW4gcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycygpIGFuZFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMTM1LVx0XHQgKiBndWFyYW50ZWVzIHRoYXQgdGhlcmUgaXMgYSByZWVucV91c2VyKCkgYWZ0ZXJ3YXJkcy5cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1MzU9c3RhdGljIHZvaWQgcmVlbnFfdXNlcihzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSwgdTY0IHJlZW5xX2ZsYWdzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDYxMC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDYxMTpzdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2MTIte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDY0OT1zdGF0aWMgdm9pZCBydW5fZGVmZXJyZWQoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NTYtXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2cnEtXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDY1NzpcdFx0cHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhycSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTQKCQkJCQkJCW91dHB1dDogMTYzCgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwcmV0dHkgc3BlY2lmaWMgaXNzdWUuIEl0IGxvb2tzIGxpa2UgdGhlIGBkZXN0cm95X2RzcSgpYCBmdW5jdGlvbiBoYXMgYSBzaWRlIGVmZmVjdDogaXQgaW52YWxpZGF0ZXMgdGhlIGBkc3FgIG9iamVjdC4gVGhlIGFkZGVkIGNoZWNrLCBgaWYgKHVubGlrZWx5KGRzcS0mZ3Q7aWQgPT0gU0NYX0RTUV9JTlZBTElEKSlgLCBzdWdnZXN0cyB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gcHJldmVudCBhIFVzZS1BZnRlci1JbnZhbGlkYXRlIChVQUkpIHNjZW5hcmlvLCBub3QgYSBVc2UtQWZ0ZXItRnJlZSAoVUFGKSBpc3N1ZS4gTXkgaW5pdGlhbCByZWFkIGlzIHRoYXQgdGhpcyBpcyBhIGxvZ2ljYWwgZXJyb3Igb3IsIG1vcmUgbGlrZWx5LCBhIHJhY2UgY29uZGl0aW9uLCByYXRoZXIgdGhhbiBhIHN0cmFpZ2h0Zm9yd2FyZCB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtLgoKR2l2ZW4gdGhhdCBLQVNBTiBvciBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzICpzaG91bGQqIGhhdmUgZmxhZ2dlZCBhIFVBRiBpZiB0aGUgbWVtb3J5IHdhcyBhY3R1YWxseSBmcmVlZCwgYnV0IHRoZXkgZGlkbiYjMzk7dCwgaXQgcmVhbGx5IHBvaW50cyB0byB0aGUgb2JqZWN0IGp1c3QgYmVpbmcgbWFya2VkIGFzIGludmFsaWQgYWZ0ZXIgdGhlIGBkZXN0cm95X2RzcSgpYCBjYWxsLiBBbmQgc2luY2UgdGhlIGZpeCBpcyBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgZm9yIHRoZSBpbnZhbGlkIHN0YXRlIGFuZCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gcmVhZCBvciBjb3B5IHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU5gIHRvIGZhbHNlLiBUaGlzIGlzIGEgdGFyZ2V0ZWQgZml4IHRvIGVuc3VyZSB0aGUgcHJvZ3JhbSBjb3JyZWN0bHkgaGFuZGxlcyB0aGUgaW52YWxpZGF0ZWQgc3RhdGUsIHJhdGhlciB0aGFuIGEgYnJvYWQgaW5pdGlhbGl6YXRpb24gaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1heSBoYXZlIGludmFsaWRhdGVkIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKSBiZWZvcmUgaXQgaXMgcHJvY2Vzc2VkIGluIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBUaGUgZml4IGFkZHMgYSBjaGVjayBmb3IgYGRzcS1cdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSURgIHRvIHNraXAgdGhlIGludmFsaWRhdGVkIHF1ZXVlLiBUaGlzIGFkZHJlc3NlcyBhIGxvZ2ljYWwgcmFjZSBjb25kaXRpb24gb3IgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlL2ludmFsaWQgc3RhdGUgYnVnLCB3aGljaCBhcmUgd2l0aGluIHRoZSBzY29wZSBvZiBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdWNoIGFzIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlKSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCBtYXkgaGF2ZSBpbnZhbGlkYXRlZCBhIGRpc3BhdGNoIHF1ZXVlIChgZHNxYCkgYmVmb3JlIGl0IGlzIHByb2Nlc3NlZCBpbiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycygpYC4gVGhlIGZpeCBhZGRzIGEgY2hlY2sgZm9yIGBkc3EtXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEYCB0byBza2lwIHRoZSBpbnZhbGlkYXRlZCBxdWV1ZS4gVGhpcyBhZGRyZXNzZXMgYSBsb2dpY2FsIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9pbnZhbGlkIHN0YXRlIGJ1Zywgd2hpY2ggYXJlIHdpdGhpbiB0aGUgc2NvcGUgb2Ygc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3VjaCBhcyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSksIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjoxNC4zNTUxODI1MTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTY3Mzc3MzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTQ0hFRF9DTEFTU19FWFRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJERUJVR19JTkZPX0JURlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjeF9icGZfZGVzdHJveV9kc3FcIixcbiAgICBcInNjeF9icGZfY3JlYXRlX2RzcVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWF5IGhhdmUgaW52YWxpZGF0ZWQgYSBkaXNwYXRjaCBxdWV1ZSAoYGRzcWApIGJlZm9yZSBpdCBpcyBwcm9jZXNzZWQgaW4gYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKWAuIFRoZSBmaXggYWRkcyBhIGNoZWNrIGZvciBgZHNxLVxcdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSURgIHRvIHNraXAgdGhlIGludmFsaWRhdGVkIHF1ZXVlLiBUaGlzIGFkZHJlc3NlcyBhIGxvZ2ljYWwgcmFjZSBjb25kaXRpb24gb3IgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlL2ludmFsaWQgc3RhdGUgYnVnLCB3aGljaCBhcmUgd2l0aGluIHRoZSBzY29wZSBvZiBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdWNoIGFzIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlKSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgc2NoZWRfZXh0IGNvcmUgYmV0d2VlbiBkZXN0cm95X2RzcSgpIGFuZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKCkgYnkgY2hlY2tpbmcgaWYgdGhlIERTUSBoYXMgYmVlbiBpbnZhbGlkYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBlQlBGLWJhc2VkIHNjaGVkdWxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MTQuMzU1MjAyODE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDYxOTgxNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0YTQ1NWQ3Yjc1NzRiZDZlMDUwMzQxNmUxMWZmMjIzYzlhMDk5OGU3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDE1IDAyOjU2OjEzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXFxuaW5kZXggMjZkYmJiZmU1YTg3OC4uN2QwOTcyMDllNzc4MCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXFxuKysrIGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xcbkBAIC00NjM3LDYgKzQ2MzcsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxcbiBcXHRcXHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cXG4gXFx0XFx0c21wX21iKCk7XFxuIFxcbitcXHRcXHQvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovXFxuK1xcdFxcdGlmICh1bmxpa2VseShkc3EtXFx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4gXFx0XFx0QlVHX09OKGRzcS1cXHUwMDNlaWQgXFx1MDAyNiBTQ1hfRFNRX0ZMQUdfQlVJTFRJTik7XFxuIFxcdFxcdHJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjE0LjgwMjI4Njg1NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg1NzU5ODA0NjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNDSEVEX0NMQVNTX0VYVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N4X2JwZl9kZXN0cm95X2RzcVwiLFxuICAgIFwic2N4X2JwZl9jcmVhdGVfZHNxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgc2NoZWRfZXh0IGNvcmUgYmV0d2VlbiBkZXN0cm95X2RzcSgpIGFuZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKCkgYnkgY2hlY2tpbmcgaWYgdGhlIERTUSBoYXMgYmVlbiBpbnZhbGlkYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBlQlBGLWJhc2VkIHNjaGVkdWxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGE0NTVkN2I3NTc0YmQ2ZTA1MDM0MTZlMTFmZjIyM2M5YTA5OThlN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDAyOjU2OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmNcbmluZGV4IDI2ZGJiYmZlNWE4NzguLjdkMDk3MjA5ZTc3ODAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG4rKysgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG5AQCAtNDYzNyw2ICs0NjM3LDEwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcbiBcdFx0Lyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovXG4gXHRcdHNtcF9tYigpO1xuIFxuK1x0XHQvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovXG4rXHRcdGlmICh1bmxpa2VseShkc3EtXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEKSlcbitcdFx0XHRjb250aW51ZTtcbitcbiBcdFx0QlVHX09OKGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pO1xuIFx0XHRyZWVucV91c2VyKHJxLCBkc3EsIHJlZW5xX2ZsYWdzKTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjE0LjgwMjI5NDE0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjk4OTUwNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU2NoZWR1bGVyIEV4dGVuc2lvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYC4gU2VlbXMgbGlrZSB3ZSBoYXZlIGEgY3JpdGljYWwgZml4IGhlcmUsIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIGBzY2hlZF9leHRgIChlQlBGLWJhc2VkIHNjaGVkdWxlcikgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgdGhleSd2ZSBhZGRlZCBhIGNoZWNrIGluIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgOiBgaWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKSBjb250aW51ZTtgLiBTbWFydCBtb3ZlLiBUaGlzIHN1Z2dlc3RzIGBkZXN0cm95X2RzcSgpYCBjb3VsZCBiZSByYWNpbmcgd2l0aCB0aGUgcmUtZW5xdWV1aW5nIGxvZ2ljLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gaWYgdGhlIGBkc3FgIChkZWZlcnJlZCBzY2hlZHVsaW5nIHF1ZXVlKSBnZXRzIGludmFsaWRhdGVkLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGEgYml0IGJldHRlci4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMsIEknbGwgbmVlZCB0byBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZmlndXJlIG91dCBob3cgYHNjaGVkX2V4dGAgaXMgZW5hYmxlZC4gVGltZSB0byBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciBib3RoIHRoZSBmdW5jdGlvbiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgaXRzZWxmIHRvIHNlZSB3aGVyZSBpdCdzIHVzZWQgYW5kIGFsc28gbG9vayBmb3IgYW55IGNvbmZpZyBzeW1ib2xzIHJlbGF0ZWQgdG8gYFNDSEVEX0NMQVNTX0VYVGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBzZWUgaG93IHRoZSB3aG9sZSBzY2hlZHVsZXIgZXh0ZW5zaW9uIGdldHMgY29uZmlndXJlZCBhbmQgYnVpbHQuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgd2lsbCByZWFsbHkgaGVscCB0byBmaWd1cmUgb3V0IHRoZSB1c2UgY2FzZSBmb3IgdGhpcyBwYXRjaCBhbmQgaG93IGxpa2VseSB0aGlzIHJhY2UgY29uZGl0aW9uIGlzIHRvIG9jY3VyIGluIHJlYWwtd29ybGQgc2NlbmFyaW9zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDIzLCJPdXRwdXRUb2tlbnMiOjcwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MTkuMTcyMTkxODU5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMzgyMTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwODI9dm9pZCBzY2hlZHVsZV9kc3FfcmVlbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTEzMy1cXHRcXHQvKlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTEzNDpcXHRcXHQgKiBQYWlycyB3aXRoIHNtcF9tYigpIGluIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBhbmRcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMzUtXFx0XFx0ICogZ3VhcmFudGVlcyB0aGF0IHRoZXJlIGlzIGEgcmVlbnFfdXNlcigpIGFmdGVyd2FyZHMuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1MzU9c3RhdGljIHZvaWQgcmVlbnFfdXNlcihzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSwgdTY0IHJlZW5xX2ZsYWdzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NjEwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDYxMTpzdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NjEyLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDY0OT1zdGF0aWMgdm9pZCBydW5fZGVmZXJyZWQoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY1Ni1cXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNnJxLVxcdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMpKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDY1NzpcXHRcXHRwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHJxKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjE5LjIyMjU3ODE0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE5MDQyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MTkuMjY5Nzc3NTI2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0MTcwNzUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkxvY2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIHJlbGV2YW50IHRvIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYC4gVGhpcyBpc24ndCBhIGNvZGluZyBwcm9ibGVtICpwZXIgc2UqLCBtb3JlIG9mIGEgY29uZmlndXJhdGlvbiBhbmQgYnVpbGQgc3lzdGVtIGlzc3VlLiBXaGVyZSBkbyBJIHN0YXJ0PyBXZWxsLCBgZXh0LmNgIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgcGFydCBvZiB0aGUgXCJleHRcIiAob3IgXCJleHRlbmRlZFwiKSBzY2hlZHVsZXIsIGxpa2VseSBhIENQVSBzY2hlZHVsZXIgZXh0ZW5zaW9uLCBzbyBJJ20gYWxyZWFkeSB1c2luZyBteSBkb21haW4ga25vd2xlZGdlIHRvIHN0YXJ0IG1ha2luZyBzb21lIGVkdWNhdGVkIGd1ZXNzZXMuXG5cbkZpcnN0IGluc3RpbmN0OiBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQncyAqYWx3YXlzKiB0aGUgcGxhY2UgdG8gYmVnaW4gd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb24uIEnigJlsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGxvb2sgaW4uIEl0J3MgcHJvYmFibHkgc29tZXdoZXJlIHVuZGVyIGBrZXJuZWwvc2NoZWQvYCwgYnV0IHBvdGVudGlhbGx5IGEgZGVlcGVyIGxldmVsIGluIHRoZSBkaXJlY3RvcnkgdHJlZSBpZiBpdCBpcyByZWFsbHkgJ2V4dGVuZGVkJy4gSSB3b3VsZCBiZSBsb29raW5nIGZvciBzb21ldGhpbmcgdGhhdCBpcyBuYW1lZCBgS2NvbmZpZ2Agb3IgYENvbmZpZ2AuIFxuXG5OZXh0IHN0ZXAsIEknZCBwcm9iYWJseSB1c2UgYGZpbmRgIG9yIGBncmVwYCB0byBxdWlja2x5IHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGZvciBhIGBLY29uZmlnYCBmaWxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBgZXh0LmNgIG9yIHBhcnRzIG9mIGl0LCBsaWtlIGBleHRgIG9yIGBzY2hlZGAuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIGEgdmVyeSBicm9hZCBzZWFyY2ggYW5kIHRoZW4gbmFycm93IGRvd24gbXkgcmVzdWx0cy4gSeKAmWQgYmUgdGhpbmtpbmcgYWJvdXQgY29tbWFuZC1saW5lIHRvb2xzIHN1Y2ggYXMgYGZpbmRgLCBgZ3JlcGAgYW5kIHBvc3NpYmx5IGBhd2tgIHRvIG5hcnJvdyBkb3duIHRoZSBzZWFyY2guIEhvcGVmdWxseSwgdGhlIGZpbGUgd2lsbCBiZSB3ZWxsLWNvbW1lbnRlZC5cblxuT25jZSBJJ3ZlIGZvdW5kIGEgbGlrZWx5IGBLY29uZmlnYCBmaWxlLCBJJ2xsIGV4YW1pbmUgaXQgY2FyZWZ1bGx5LiBJJ20gbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLCB1c3VhbGx5IGRlZmluZWQgdXNpbmcgYGNvbmZpZyBcdTAwM2NzeW1ib2xcdTAwM2VgIGRpcmVjdGl2ZXMsIHdpdGggYXNzb2NpYXRlZCBkZXNjcmlwdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVGhlIGRlcGVuZGVuY2llcyBhcmUga2V5OyB0aGV5J2xsIHRlbGwgbWUgd2hlbiB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgdGhlIHNjaGVkdWxlciBpcyBldmVuIGluY2x1ZGVkLCBvciBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbi4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbHMgYW5kIHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIHRoaXMgY29kZS4gSSBtYXkgbmVlZCB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIHRvIG90aGVyIGBLY29uZmlnYCBmaWxlcyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgbGF5ZXJzIG9mIGFic3RyYWN0aW9uLlxuXG5GaW5hbGx5LCBJ4oCZbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIG9mIHRoZXNlIHN5bWJvbHMgYW5kIHRoZSBidWlsZCBwcm9jZXNzLiBJJ2xsIGxpa2VseSBuZWVkIHRvIGNvbnN1bHQgdGhlIGJ1aWxkIHN5c3RlbSBkb2N1bWVudGF0aW9uLCBzdWNoIGFzIHRoZSBgTWFrZWZpbGVgIGluIHRoYXQgZGlyZWN0b3J5LiBJIGNhbiBwcm9iYWJseSBmaWd1cmUgdGhpcyBvdXQgYnkgbG9va2luZyBhdCBob3cgdGhlIGJ1aWxkIHN5c3RlbSBpbmNsdWRlcyBhbmQgZXhjbHVkZXMgc3BlY2lmaWMgZmlsZXMgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9scy4gVGhpcyBtaWdodCBpbnZvbHZlIGxvb2tpbmcgYXQgdGhpbmdzIGxpa2UgYCNpZmRlZmAgc3RhdGVtZW50cyB3aXRoaW4gdGhlIGNvZGUsIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgYXJlIG1hcHBlZCB0byBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJZiB0aGlzIGlzIGEgZHJpdmVyLCB0aGUgbW9kdWxlIG1pZ2h0IG5lZWQgdGhlIGBtb2R1bGVgIG9wdGlvbiB0byBiZSBzZXQuIFRoaXMgaXMgYSBiaXQgb2YgYSBicmVhZGNydW1iIGh1bnQsIHJlYWxseSwgYnV0IHRoZSAqS2NvbmZpZyogZmlsZXMgYXJlIHRoZSBtYXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MjMuODExNDg2ODc1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTY1Nzc5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjIzLjg1OTQ2MDkzNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1MzM2NjExNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGlyZWN0aW5nIE15IEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgYWJvdXQgdGhlIHNjaGVkdWxlciBidWlsZCBwcm9jZXNzLiBJbnN0ZWFkIG9mIHdhZGluZyB0aHJvdWdoIHBvdGVudGlhbGx5IHVucmVsYXRlZCBkb2N1bWVudGF0aW9uIG9yIGJsaW5kbHkgc2VhcmNoaW5nLCBJJ20gZ29pbmcgdG8gZ28gcmlnaHQgdG8gdGhlIHNvdXJjZS4gVGhlIGBrZXJuZWwvc2NoZWQvYCBkaXJlY3RvcnkgaXMgd2hlcmUgdGhlIHNjaGVkdWxlciBjb2RlIGxpdmVzLCBhbmQgdGhlIGBNYWtlZmlsZWAgaW4gdGhhdCBkaXJlY3RvcnkgaXMgdGhlIGJ1aWxkIGluc3RydWN0aW9ucy4gU2VlbXMgbG9naWNhbCB0byBjaGVjayBga2VybmVsL3NjaGVkL01ha2VmaWxlYCBkaXJlY3RseS4gVGhhdCdzIHdoZXJlIHRoZSBjcml0aWNhbCBpbmZvcm1hdGlvbiBvbiBob3cgdGhvc2Ugc2NoZWR1bGVyIGNvbXBvbmVudHMgYXJlIGNvbXBpbGVkIGFuZCBsaW5rZWQgc2hvdWxkIHJlc2lkZS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS4gSSdtIGhvcGluZyBJIGNhbiBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIHF1aWNrbHkgdGhpcyB3YXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjoyNi4zOTMxMjQ3NjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvc2NoZWQvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0XFxuICAgMzpcXHRDT05URVhUX0FOQUxZU0lTX2NvcmUubyA6PSB5XFxuICAgNDpcXHRDT05URVhUX0FOQUxZU0lTX2ZhaXIubyA6PSB5XFxuICAgNTpcXHRcXG4gICA2OlxcdCMgVGhlIGNvbXBpbGVycyBhcmUgY29tcGxhaW5pbmcgYWJvdXQgdW51c2VkIHZhcmlhYmxlcyBpbnNpZGUgYW4gaWYoMCkgc2NvcGVcXG4gICA3OlxcdCMgYmxvY2suIFRoaXMgaXMgZGFmdCwgc2h1dCB0aGVtIHVwLlxcbiAgIDg6XFx0Y2NmbGFncy15ICs9ICQoY2FsbCBjYy1kaXNhYmxlLXdhcm5pbmcsIHVudXNlZC1idXQtc2V0LXZhcmlhYmxlKVxcbiAgIDk6XFx0XFxuICAxMDpcXHQjIFRoZXNlIGZpbGVzIGFyZSBkaXNhYmxlZCBiZWNhdXNlIHRoZXkgcHJvZHVjZSBub24taW50ZXJlc3RpbmcgZmxha3kgY292ZXJhZ2VcXG4gIDExOlxcdCMgdGhhdCBpcyBub3QgYSBmdW5jdGlvbiBvZiBzeXNjYWxsIGlucHV0cy4gRS5nLiBpbnZvbHVudGFyeSBjb250ZXh0IHN3aXRjaGVzLlxcbiAgMTI6XFx0S0NPVl9JTlNUUlVNRU5UIDo9IG5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0IyBEaXNhYmxlIEtDU0FOIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBub2lzZSBhbmQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24uIFRvIGF2b2lkXFxuICAxNTpcXHQjIGZhbHNlIHBvc2l0aXZlcyBlbnN1cmUgYmFycmllcnMgaW1wbGllZCBieSBzY2hlZCBmdW5jdGlvbnMgYXJlIGluc3RydW1lbnRlZC5cXG4gIDE2OlxcdEtDU0FOX1NBTklUSVpFIDo9IG5cXG4gIDE3OlxcdEtDU0FOX0lOU1RSVU1FTlRfQkFSUklFUlMgOj0geVxcbiAgMTg6XFx0XFxuICAxOTpcXHRpZm5lcSAoJChDT05GSUdfU0NIRURfT01JVF9GUkFNRV9QT0lOVEVSKSx5KVxcbiAgMjA6XFx0IyBBY2NvcmRpbmcgdG8gQWxhbiBNb2RyYSBcXHUwMDNjYWxhbkBsaW51eGNhcmUuY29tLmF1XFx1MDAzZSwgdGhlIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIGlzXFxuICAyMTpcXHQjIG5lZWRlZCBmb3IgeDg2IG9ubHkuICBXaHkgdGhpcyB1c2VkIHRvIGJlIGVuYWJsZWQgZm9yIGFsbCBhcmNoaXRlY3R1cmVzIGlzIGJleW9uZFxcbiAgMjI6XFx0IyBtZS4gIEkgc3VzcGVjdCBtb3N0IHBsYXRmb3JtcyBkb24ndCBuZWVkIHRoaXMsIGJ1dCB1bnRpbCB3ZSBrbm93IHRoYXQgZm9yIHN1cmVcXG4gIDIzOlxcdCMgSSB0dXJuIHRoaXMgb2ZmIGZvciBJQS02NCBvbmx5LiAgQW5kcmVhcyBTY2h3YWIgc2F5cyBpdCdzIGFsc28gbmVlZGVkIG9uIG02OGtcXG4gIDI0OlxcdCMgdG8gZ2V0IGEgY29ycmVjdCB2YWx1ZSBmb3IgdGhlIHdhaXQtY2hhbm5lbCAoV0NIQU4gaW4gcHMpLiAtLWRhdmlkbVxcbiAgMjU6XFx0Q0ZMQUdTX2NvcmUubyA6PSAkKFBST0ZJTElORykgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcXG4gIDI2OlxcdGVuZGlmXFxuICAyNzpcXHRcXG4gIDI4OlxcdCMgQnJhbmNoIHByb2ZpbGluZyBpc24ndCBub2luc3RyLXNhZmVcXG4gIDI5OlxcdGlmZGVmIENPTkZJR19UUkFDRV9CUkFOQ0hfUFJPRklMSU5HXFxuICAzMDpcXHRDRkxBR1NfYnVpbGRfcG9saWN5Lm8gKz0gLURESVNBQkxFX0JSQU5DSF9QUk9GSUxJTkdcXG4gIDMxOlxcdENGTEFHU19idWlsZF91dGlsaXR5Lm8gKz0gLURESVNBQkxFX0JSQU5DSF9QUk9GSUxJTkdcXG4gIDMyOlxcdGVuZGlmXFxuICAzMzpcXHQjXFxuICAzNDpcXHQjIEJ1aWxkIGVmZmljaWVuY3k6XFxuICAzNTpcXHQjXFxuICAzNjpcXHQjIFRoZXNlIGNvbXBpbGF0aW9uIHVuaXRzIGhhdmUgcm91Z2hseSB0aGUgc2FtZSBzaXplIGFuZCBjb21wbGV4aXR5IC0gc28gdGhlaXJcXG4gIDM3OlxcdCMgYnVpbGQgcGFyYWxsZWxpemVzIHdlbGwgYW5kIGZpbmlzaGVzIHJvdWdobHkgYXQgb25jZTpcXG4gIDM4OlxcdCNcXG4gIDM5OlxcdG9iai15ICs9IGNvcmUub1xcbiAgNDA6XFx0b2JqLXkgKz0gZmFpci5vXFxuICA0MTpcXHRvYmoteSArPSBidWlsZF9wb2xpY3kub1xcbiAgNDI6XFx0b2JqLXkgKz0gYnVpbGRfdXRpbGl0eS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjI2LjM5MzE5NTI1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIwNzA5MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFNjaGVkdWxlcidzIExhYnlyaW50aCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIHRocm91Z2ggdGhlIGtlcm5lbCBzY2hlZHVsZXIgY29kZSBhZ2FpbiwgYW5kIEknbSBsb29raW5nIGZvciB0aGUgYGV4dC5jYCBmaWxlLiBXYWl0IGEgbWludXRlLi4uIHRoYXQgYGV4dC5jYCBmaWxlICpzaG91bGRuJ3QqIGJlIGRpcmVjdGx5IGluIGBrZXJuZWwvc2NoZWQvYCwgYmVjYXVzZSBpdCdzIGEgc3ViLWNvbXBvbmVudC4gSSd2ZSBnb3QgdG8gYmFja3RyYWNrIGFuZCBjaGVjayB0aGUgcmVsZXZhbnQgTWFrZWZpbGVzLiBJIGJldCBpdCdzIGFjdHVhbGx5IGRlZmluZWQgZWl0aGVyIGluIGBrZXJuZWwvc2NoZWQvZXh0L01ha2VmaWxlYCBvciBtYXliZSBldmVuIGhpZ2hlciB1cCBpbiBga2VybmVsL3NjaGVkL01ha2VmaWxlYC4gTGV0IG1lIGp1bXAgb3ZlciB0aGVyZSBhbmQgc2VlIHdoYXQncyBpbmNsdWRlZC4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZWJhc2U7IEkgc2hvdWxkIGhhdmUgdGhvdWdodCBvZiBjaGVja2luZyB0aGUgTWFrZWZpbGVzIGZpcnN0LCBiZWZvcmUgZGl2aW5nIGRvd24gYSBwb3RlbnRpYWxseSBmcnVpdGxlc3Mgc2VhcmNoLiBUaW1lIHRvIHRyYWNlIHRoZSBpbmNsdWRlcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDU5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjoyOS4zMTM5MDc3OTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL3NjaGVkL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHRvYmoteSArPSBmYWlyLm9cXG4gIDQxOlxcdG9iai15ICs9IGJ1aWxkX3BvbGljeS5vXFxuICA0MjpcXHRvYmoteSArPSBidWlsZF91dGlsaXR5Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MjkuMzEzOTY5NzAzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjUwMjgwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYGV4dC5vYCBpbiB0aGUgU2NoZWR1bGVyIENvZGViYXNlKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCBgZXh0Lm9gLCBsaWtlbHkgYSBjb21waWxlZCBvYmplY3QgZmlsZSByZWxhdGVkIHRvIHNjaGVkdWxpbmcuIEdpdmVuIG15IGtub3dsZWRnZSBvZiB0aGUga2VybmVsJ3Mgc3RydWN0dXJlLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBzb3VyY2UgZGlyZWN0b3JpZXMuIFRoZSBuYW1lIHN1Z2dlc3RzIGl0J3MgYW4gZXh0ZW5zaW9uLCBwb3NzaWJseSBhIG1vZHVsZSBvciBwYXJ0IG9mIGEgbW9yZSBzcGVjaWFsaXplZCBzY2hlZHVsZXIuIFRoZXJlZm9yZSwgbXkgaW5pdGlhbCBzZWFyY2ggd2lsbCBiZSBmb2N1c2VkIGFyb3VuZCBga2VybmVsL3NjaGVkL2AgYW5kIGl0cyBwb3RlbnRpYWwgc3ViZGlyZWN0b3JpZXMsIHBhcnRpY3VsYXJseSBga2VybmVsL3NjaGVkL2V4dC9gLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIGFueSBzY2hlZHVsaW5nIGV4dGVuc2lvbnMgaW1wbGVtZW50ZWQuXG5cblRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUsIGl0J3Mgbm90IGVub3VnaCB0byBsb29rIGp1c3QgZm9yIHRoZSBzb3VyY2U7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYnVpbGQgc3lzdGVtIGludGVncmF0ZXMgdGhpcyBvYmplY3QuIFRoZXJlZm9yZSwgYSBxdWljayBncmVwIHRocm91Z2ggdGhlIGBNYWtlZmlsZWAgaW4gdGhlIHNjaGVkdWxpbmcgZGlyZWN0b3JpZXMgaXMgYSBtdXN0LiBLbm93aW5nIHRoZSBidWlsZCBydWxlcyB3aWxsIGNsYXJpZnkgaG93IGBleHQub2AgaXMgY29tcGlsZWQsIGxpbmtlZCwgYW5kIGluY29ycG9yYXRlZCBpbnRvIHRoZSBvdmVyYWxsIGtlcm5lbCBpbWFnZS4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCB0byBjb250ZXh0dWFsaXplIHRoZSBvYmplY3QgYW5kIGl0cyBwdXJwb3NlLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0YXJnZXQgcnVsZXMuIEhvcGVmdWxseSwgdGhpcyBzaG91bGQgbGVhZCBtZSB0byB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIGFuZCBwcm92aWRlIGEgY2xlYXIgaWRlYSBvZiB3aGF0IGBleHQub2AgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc2NywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MzIuNDc5MDAwOTE0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJrZXJuZWwvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImF1dG9ncm91cC5jXCIsXG4gICAgXCJhdXRvZ3JvdXAuaFwiLFxuICAgIFwiYnVpbGRfcG9saWN5LmNcIixcbiAgICBcImJ1aWxkX3V0aWxpdHkuY1wiLFxuICAgIFwiY2xvY2suY1wiLFxuICAgIFwiY29tcGxldGlvbi5jXCIsXG4gICAgXCJjb3JlLmNcIixcbiAgICBcImNvcmVfc2NoZWQuY1wiLFxuICAgIFwiY3B1YWNjdC5jXCIsXG4gICAgXCJjcHVkZWFkbGluZS5jXCIsXG4gICAgXCJjcHVkZWFkbGluZS5oXCIsXG4gICAgXCJjcHVmcmVxLmNcIixcbiAgICBcImNwdWZyZXFfc2NoZWR1dGlsLmNcIixcbiAgICBcImNwdXByaS5jXCIsXG4gICAgXCJjcHVwcmkuaFwiLFxuICAgIFwiY3B1dGltZS5jXCIsXG4gICAgXCJkZWFkbGluZS5jXCIsXG4gICAgXCJkZWJ1Zy5jXCIsXG4gICAgXCJmYWlyLmNcIixcbiAgICBcImZlYXR1cmVzLmhcIixcbiAgICBcImlkbGUuY1wiLFxuICAgIFwiaXNvbGF0aW9uLmNcIixcbiAgICBcImxvYWRhdmcuY1wiLFxuICAgIFwibWVtYmFycmllci5jXCIsXG4gICAgXCJwZWx0LmNcIixcbiAgICBcInBlbHQuaFwiLFxuICAgIFwicHNpLmNcIixcbiAgICBcInJxLW9mZnNldHMuY1wiLFxuICAgIFwicnQuY1wiLFxuICAgIFwic2NoZWQtcGVsdC5oXCIsXG4gICAgXCJzY2hlZC5oXCIsXG4gICAgXCJzbXAuaFwiLFxuICAgIFwic3RhdHMuY1wiLFxuICAgIFwic3RhdHMuaFwiLFxuICAgIFwic3RvcF90YXNrLmNcIixcbiAgICBcInN3YWl0LmNcIixcbiAgICBcInN5c2NhbGxzLmNcIixcbiAgICBcInRvcG9sb2d5LmNcIixcbiAgICBcIndhaXQuY1wiLFxuICAgIFwid2FpdF9iaXQuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJleHRcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjozMi40NzkwOTExMTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1NTI1MDEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlNlYXJjaGluZyBmb3IgYGV4dC5vYCBpbiB0aGUgU2NoZWR1bGVyIEV4dGVuc2lvbiBCdWlsZCBTeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSBgZXh0Lm9gIGlzIGJlaW5nIGJ1aWx0LiBTaW5jZSBJJ20gd29ya2luZyB3aXRoIHRoZSBrZXJuZWwncyBzY2hlZHVsZXIgZXh0ZW5zaW9uLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYnVpbGQgc3lzdGVtIGZpbGVzIHNwZWNpZmljIHRvIHRoYXQgbW9kdWxlLiBMZXQncyBzZWUuLi4gYGtlcm5lbC9zY2hlZC9leHQvTWFrZWZpbGVgIGlzIHRoZSBvYnZpb3VzIGZpcnN0IHN0b3AuIFRoYXQgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgcnVsZXMgZm9yIGJ1aWxkaW5nIHRoZSBgLm9gIGZpbGVzLCBzbyBpZiBpdCdzIHRoZXJlLCBncmVhdC4gSWYgbm90LCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIG9iamVjdCBpcyBvbmx5IGNvbmRpdGlvbmFsbHkgYnVpbHQsIGJhc2VkIG9uIGEgS2NvbmZpZyBvcHRpb24uIEluIHRoYXQgY2FzZSwgSSBzaG91bGQgdGhlbiBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9LY29uZmlnYC4gVGhhdCBjb25maWd1cmF0aW9uIGZpbGUgaXMgdGhlIHVzdWFsIGxvY2F0aW9uIGZvciBkZWZpbmluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoZSBzY2hlZHVsZXIgZXh0ZW5zaW9ucy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgaXQgaXMgZGVmaW5lZCB0aGVyZSBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYGV4dC5vYCB3b3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gQmFzaWNhbGx5LCBJIGFtIHRoaW5raW5nIHRocm91Z2ggdGhlIGxpa2VseSBwbGFjZXMgdGhlIGluZm9ybWF0aW9uIHRoYXQgSSBuZWVkIHdvdWxkIGJlIGxvY2F0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MDcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MzUuNTM0MzQ0MjE4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJrZXJuZWwvc2NoZWQvZXh0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFyZW5hLmNcIixcbiAgICBcImFyZW5hLmhcIixcbiAgICBcImNpZC5jXCIsXG4gICAgXCJjaWQuaFwiLFxuICAgIFwiZXh0LmNcIixcbiAgICBcImV4dC5oXCIsXG4gICAgXCJpZGxlLmNcIixcbiAgICBcImlkbGUuaFwiLFxuICAgIFwiaW5saW5lcy5oXCIsXG4gICAgXCJpbnRlcm5hbC5oXCIsXG4gICAgXCJzdWIuY1wiLFxuICAgIFwic3ViLmhcIixcbiAgICBcInR5cGVzLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MzUuNTM0NDE2NTU4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTY0NjkwMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEJ1aWxkIExvY2F0aW9uIGZvciBhIEMgRXh0ZW5zaW9uKipcblxuUmlnaHQsIHNvbWV0aGluZyBqdXN0IHRyaWdnZXJlZCBhIG1lbW9yeSAtIHdoZXJlIHRoZSBoZWNrIGlzIHRoYXQgYGV4dC5jYCBmaWxlIGNvbXBpbGVkPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hlcmUgaW4gdGhlIGJ1aWxkIHByb2Nlc3MgdGhhdCBwYXJ0aWN1bGFyIGV4dGVuc2lvbiBpcyBoYW5kbGVkLiBJdOKAmXMgcHJldHR5IGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jeSBpc3N1ZXMgb3IgZGVidWdnaW5nIGNvbXBpbGF0aW9uIHByb2JsZW1zIGxhdGVyIG9uLiBTbywgZmlyc3QgdGhvdWdodCAtIGxldCdzIGNoZWNrIHRoZSBjb3JlIHNjaGVkdWxpbmcgY29kZSwgdGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIGJ1aWxkIHBvbGljeSBhbmQgdXRpbGl0aWVzIGFyZSBkZWZpbmVkLiBNeSBndXQgc2F5cyBpdCB3aWxsIGJlIGluIHRoZSBga2VybmVsL3NjaGVkYCBkaXJlY3RvcnkuIEknbSBsZWFuaW5nIHRvd2FyZHMgbG9va2luZyBhdCBlaXRoZXIgYGJ1aWxkX3BvbGljeS5jYCBvciBwZXJoYXBzIGBidWlsZF91dGlsaXR5LmNgLiBUaGF0IHNlZW1zIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gZmluZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHRoYXQgZXh0ZW5zaW9uLiBMZXQgbWUgZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc3OCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjozOC41MzA4ODg3OTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNTMyMDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dC5jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jLTY1LSMgaW5jbHVkZSBcXFwiZXh0L2ludGVybmFsLmhcXFwiXFxua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jOjY2OiMgaW5jbHVkZSBcXFwiZXh0L2NpZC5oXFxcIlxcbmtlcm5lbC9zY2hlZC9idWlsZF9wb2xpY3kuYy02Ny0jIGluY2x1ZGUgXFxcImV4dC9hcmVuYS5oXFxcIlxcbi0tXFxua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jLTcwLSMgaW5jbHVkZSBcXFwiZXh0L2lubGluZXMuaFxcXCJcXG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmM6NzE6IyBpbmNsdWRlIFxcXCJleHQvZXh0LmNcXFwiXFxua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jOjcyOiMgaW5jbHVkZSBcXFwiZXh0L2NpZC5jXFxcIlxcbmtlcm5lbC9zY2hlZC9idWlsZF9wb2xpY3kuYy03My0jIGluY2x1ZGUgXFxcImV4dC9hcmVuYS5jXFxcIlxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz0yMjk0PXZvaWQgd2FrZXVwX3ByZWVtcHQoc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTIyOTctXFxua2VybmVsL3NjaGVkL2NvcmUuYzoyMjk4OlxcdGlmIChwLVxcdTAwM2VzY2hlZF9jbGFzcyA9PSBycS1cXHUwMDNlbmV4dF9jbGFzcykge1xcbmtlcm5lbC9zY2hlZC9jb3JlLmM6MjI5OTpcXHRcXHRycS1cXHUwMDNlbmV4dF9jbGFzcy1cXHUwMDNld2FrZXVwX3ByZWVtcHQocnEsIHAsIGZsYWdzKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTIzMDAtXFxua2VybmVsL3NjaGVkL2NvcmUuYzoyMzAxOlxcdH0gZWxzZSBpZiAoc2NoZWRfY2xhc3NfYWJvdmUocC1cXHUwMDNlc2NoZWRfY2xhc3MsIHJxLVxcdTAwM2VuZXh0X2NsYXNzKSkge1xcbmtlcm5lbC9zY2hlZC9jb3JlLmM6MjMwMjpcXHRcXHRycS1cXHUwMDNlbmV4dF9jbGFzcy1cXHUwMDNld2FrZXVwX3ByZWVtcHQocnEsIHAsIGZsYWdzKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTIzMDMtXFx0XFx0cmVzY2hlZF9jdXJyKHJxKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjIzMDQ6XFx0XFx0cnEtXFx1MDAzZW5leHRfY2xhc3MgPSBwLVxcdTAwM2VzY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTIzMDUtXFx0fVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz02NzgyPXN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICpwcm94eV9yZXNjaGVkX2lkbGUoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNjc4NC1cXHRwdXRfcHJldl9zZXRfbmV4dF90YXNrKHJxLCBycS1cXHUwMDNlZG9ub3IsIHJxLVxcdTAwM2VpZGxlKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjY3ODU6XFx0cnEtXFx1MDAzZW5leHRfY2xhc3MgPSBcXHUwMDI2aWRsZV9zY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTY3ODYtXFx0cnFfc2V0X2Rvbm9yKHJxLCBycS1cXHUwMDNlaWRsZSk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jPTcwOTg9c3RhdGljIHZvaWQgX19zY2hlZCBub3RyYWNlIF9fc2NoZWR1bGUoaW50IHNjaGVkX21vZGUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTcxNjktXFx0XFx0XFx0bmV4dCA9IHByZXY7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo3MTcwOlxcdFxcdFxcdHJxLVxcdTAwM2VuZXh0X2NsYXNzID0gXFx1MDAyNmlkbGVfc2NoZWRfY2xhc3M7XFxua2VybmVsL3NjaGVkL2NvcmUuYy03MTcxLVxcdFxcdFxcdGdvdG8gcGlja2VkO1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYy03MTg3LVxcdG5leHQgPSBwaWNrX25leHRfdGFzayhycSwgXFx1MDAyNnJmKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjcxODg6XFx0cnEtXFx1MDAzZW5leHRfY2xhc3MgPSBuZXh0LVxcdTAwM2VzY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTcxODktXFx0aWYgKHNjaGVkX3Byb3h5X2V4ZWMoKSkge1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz03NjY1PXZvaWQgcnRfbXV0ZXhfc2V0cHJpbyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcGlfdGFzaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzY2OC1cXHRcXHRERVFVRVVFX1NBVkUgfCBERVFVRVVFX01PVkUgfCBERVFVRVVFX05PQ0xPQ0s7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo3NjY5OlxcdGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqcHJldl9jbGFzcywgKm5leHRfY2xhc3M7XFxua2VybmVsL3NjaGVkL2NvcmUuYy03NjcwLVxcdHN0cnVjdCBycV9mbGFncyByZjtcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzcyNi1cXHRwcmV2X2NsYXNzID0gcC1cXHUwMDNlc2NoZWRfY2xhc3M7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo3NzI3OlxcdG5leHRfY2xhc3MgPSBfX3NldHNjaGVkdWxlcl9jbGFzcyhwLVxcdTAwM2Vwb2xpY3ksIHByaW8pO1xcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzcyOC1cXG5rZXJuZWwvc2NoZWQvY29yZS5jOjc3Mjk6XFx0aWYgKHByZXZfY2xhc3MgIT0gbmV4dF9jbGFzcylcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTc3MzAtXFx0XFx0cXVldWVfZmxhZyB8PSBERVFVRVVFX0NMQVNTO1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYy03NzYyLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM6Nzc2MzpcXHRcXHRwLVxcdTAwM2VzY2hlZF9jbGFzcyA9IG5leHRfY2xhc3M7XFxua2VybmVsL3NjaGVkL2NvcmUuYy03NzY0LVxcdFxcdHAtXFx1MDAzZXByaW8gPSBwcmlvO1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz04OTUzPXZvaWQgX19pbml0IHNjaGVkX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtOTA1MC0jZW5kaWZcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjkwNTE6XFx0XFx0cnEtXFx1MDAzZW5leHRfY2xhc3MgPSBcXHUwMDI2aWRsZV9zY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTkwNTItXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTkxMzctXFx0aW5pdF9zY2hlZF9mYWlyX2NsYXNzKCk7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo5MTM4OlxcdGluaXRfc2NoZWRfZXh0X2NsYXNzKCk7XFxua2VybmVsL3NjaGVkL2NvcmUuYy05MTM5LVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz0xMTI3OD12b2lkIHNjaGVkX2NoYW5nZV9lbmQoc3RydWN0IHNjaGVkX2NoYW5nZV9jdHggKmN0eClcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtMTEzMDktXFx0XFx0XFx0aWYgKHNjaGVkX2NsYXNzX2Fib3ZlKHAtXFx1MDAzZXNjaGVkX2NsYXNzLCBjdHgtXFx1MDAzZWNsYXNzKSkge1xcbmtlcm5lbC9zY2hlZC9jb3JlLmM6MTEzMTA6XFx0XFx0XFx0XFx0cnEtXFx1MDAzZW5leHRfY2xhc3MtXFx1MDAzZXdha2V1cF9wcmVlbXB0KHJxLCBwLCAwKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjExMzExOlxcdFxcdFxcdFxcdHJxLVxcdTAwM2VuZXh0X2NsYXNzID0gcC1cXHUwMDNlc2NoZWRfY2xhc3M7XFxua2VybmVsL3NjaGVkL2NvcmUuYy0xMTMxMi1cXHRcXHRcXHR9XFxuLS1cXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0xMTQxPXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBkbF9zZXJ2ZXJfdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyLCBzdHJ1Y3Qgc2NoZWRfZGxfZW50aXR5ICpkbF9zZSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTEyMDgtICogdXBkYXRpbmcgKGFuZCB0aGUgcXVldWVpbmcgYmFjayB0byBkbF9ycSkgd2lsbCBiZSBkb25lIGJ5IHRoZVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jOjEyMDk6ICogbmV4dCBjYWxsIHRvIGVucXVldWVfdGFza19kbCgpLlxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTEyMTAtICovXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jPTE4MD1zMzIgc2N4X2NpZF9pbml0KHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMTg4LVxcdHN0cnVjdCBzY3hfY2lkX3RhYmxlcyAqdGJscztcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjE4OTpcXHR1MzIgbmV4dF9jaWQgPSAwO1xcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MTkwOlxcdHMzMiBuZXh0X25vZGVfaWR4ID0gMCwgbmV4dF9sbGNfaWR4ID0gMCwgbmV4dF9jb3JlX2lkeCA9IDA7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0xOTEtXFx0czMyIG5leHRfc2hhcmRfaWR4ID0gMDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjI5LVxcdHdoaWxlICghY3B1bWFza19lbXB0eSh0b193YWxrKSkge1xcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MjMwOlxcdFxcdHMzMiBuZXh0X2NwdSA9IGNwdW1hc2tfZmlyc3QodG9fd2Fsayk7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyMzE6XFx0XFx0czMyIG5pZCA9IGNwdV90b19ub2RlKG5leHRfY3B1KTtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjIzMjpcXHRcXHRzMzIgbm9kZV9jaWQgPSBuZXh0X2NpZDtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTIzMy1cXHRcXHRzMzIgbm9kZV9pZHg7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTIzOS1cXHRcXHRpZiAobmlkIFxcdTAwM2MgMCkge1xcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MjQwOlxcdFxcdFxcdGNwdW1hc2tfY2xlYXJfY3B1KG5leHRfY3B1LCB0b193YWxrKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI0MS1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjQ3LVxcdFxcdGNwdW1hc2tfYW5kKG5vZGVfc2NyYXRjaCwgdG9fd2FsaywgY3B1bWFza19vZl9ub2RlKG5pZCkpO1xcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MjQ4OlxcdFxcdGlmIChXQVJOX09OX09OQ0UoIWNwdW1hc2tfdGVzdF9jcHUobmV4dF9jcHUsIG5vZGVfc2NyYXRjaCkpKVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjQ5LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yNTMtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IGNwdW1hc2sgKmxsY19tYXNrID0gY3B1X2xsY19tYXNrKG5jcHUsIGxsY19mYWxsYmFjayk7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNTQ6XFx0XFx0XFx0czMyIGxsY19jaWQgPSBuZXh0X2NpZDtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI1NS1cXHRcXHRcXHRzMzIgbGxjX2lkeCA9IG5leHRfbGxjX2lkeCsrO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yNjUtXFx0XFx0XFx0Y2FsY19zaGFyZF9sYXlvdXQobGxjX3NjcmF0Y2gsIHNoYXJkX3NpemUsIFxcdTAwMjZjb3Jlc19wZXJfc2hhcmQsIFxcdTAwMjZucl9sYXJnZSk7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNjY6XFx0XFx0XFx0c2hhcmRfY2lkID0gbmV4dF9jaWQ7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yNjctXFx0XFx0XFx0c2hhcmRfaWR4ID0gbmV4dF9zaGFyZF9pZHgrKztcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjcyLVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzaWIgPSB0b3BvbG9neV9zaWJsaW5nX2NwdW1hc2sobGNwdSk7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNzM6XFx0XFx0XFx0XFx0czMyIGNvcmVfY2lkID0gbmV4dF9jaWQ7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNzQ6XFx0XFx0XFx0XFx0czMyIGNvcmVfaWR4ID0gbmV4dF9jb3JlX2lkeCsrO1xcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjc1LVxcdFxcdFxcdFxcdHMzMiBjY3B1O1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yOTYtXFx0XFx0XFx0XFx0XFx0Y2lkc19pbl9zaGFyZCA9IDA7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyOTc6XFx0XFx0XFx0XFx0XFx0c2hhcmRfY2lkID0gbmV4dF9jaWQ7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yOTgtXFx0XFx0XFx0XFx0XFx0c2hhcmRfaWR4ID0gbmV4dF9zaGFyZF9pZHgrKztcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzA0LVxcdFxcdFxcdFxcdGZvcl9lYWNoX2NwdShjY3B1LCBjb3JlX3NjcmF0Y2gpIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjMwNTpcXHRcXHRcXHRcXHRcXHRzMzIgY2lkID0gbmV4dF9jaWQrKztcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTMwNi1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzQ2LVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MzQ3OlxcdFxcdGNpZCA9IG5leHRfY2lkKys7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0zNDgtXFx0XFx0dGJscy1cXHUwMDNlY2lkX3RvX2NwdVtjaWRdID0gY3B1O1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0zNzUtXFx0ICovXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzozNzY6XFx0Zm9yIChjaWQgPSAwOyBjaWQgXFx1MDAzYyBuZXh0X2NpZDsgY2lkKyspIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTM3Ny1cXHRcXHRzMzIgc2lkeCA9IHRibHMtXFx1MDAzZWNpZF90b19zaGFyZFtjaWRdO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNTQ9c3RhdGljIGJvb2wgcnFfaXNfb3BlbihzdHJ1Y3QgcnEgKnJxLCB1NjQgZW5xX2ZsYWdzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNjEtXFx0ICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNjI6XFx0aWYgKHNjaGVkX2NsYXNzX2Fib3ZlKHJxLVxcdTAwM2VuZXh0X2NsYXNzLCBcXHUwMDI2ZXh0X3NjaGVkX2NsYXNzKSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM2My1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM2OC1cXHQgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM2OTpcXHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUoXFx1MDAyNmV4dF9zY2hlZF9jbGFzcywgcnEtXFx1MDAzZW5leHRfY2xhc3MpKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzcwLVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xNTY4PXN0YXRpYyB2b2lkIHJxX293bmVkX3Bvc3RfZW5xKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHJxICpycSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTYwOS1cXHQgKiBwdXJwb3NlLCBidXQgZm9yIGl0IHRvIGJlIGludm9rZWQsIHdlIG11c3QgZW5zdXJlIHRoYXQgd2UgYnVtcFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYxMDpcXHQgKiBAcnEtXFx1MDAzZW5leHRfY2xhc3MgdG8gXFx1MDAyNmV4dF9zY2hlZF9jbGFzcyBpZiBpdCdzIGN1cnJlbnRseSBpZGxlLlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTYxMS1cXHQgKlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTYxMi1cXHQgKiB3YWtldXBfcHJlZW1wdCgpIGRvZXMgdGhlIGJ1bXBpbmcsIGFuZCBzaW5jZSB3ZSBvbmx5IGludm9rZSBpdCBpZlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYxMzpcXHQgKiBAcnEtXFx1MDAzZW5leHRfY2xhc3MgaXMgYmVsb3cgXFx1MDAyNmV4dF9zY2hlZF9jbGFzcywgaXQgd2lsbCBhbHNvXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjE0LVxcdCAqIHJlc2NoZWRfY3VycihycSkuXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjE1LVxcdCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYxNjpcXHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUocC1cXHUwMDNlc2NoZWRfY2xhc3MsIHJxLVxcdTAwM2VuZXh0X2NsYXNzKSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MTctXFx0XFx0d2FrZXVwX3ByZWVtcHQocnEsIHAsIDApO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjIzLVxcdCAqIE5vdGUgdGhhdCB0aGUgd2FrZXVwX3ByZWVtcHQoKSBhYm92ZSBtYXkgaGF2ZSBhbHJlYWR5IHRyaWdnZXJlZFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYyNDpcXHQgKiBhIHJlc2NoZWQgaWYgQHJxLVxcdTAwM2VuZXh0X2NsYXNzIHdhcyBpZGxlLiBJdCdzIGhhcm1sZXNzLCBzaW5jZVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTYyNS1cXHQgKiBuZWVkX3Jlc2NoZWQgaXMgY2xlYXJlZCBpbW1lZGlhdGVseSBhZnRlciB0YXNrIHBpY2suXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTMxMzk9c3RhdGljIHZvaWQgc3dpdGNoX2NsYXNzKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE0MS1cXHRzdHJ1Y3Qgc2N4X3NjaGVkICpzY2ggPSBzY3hfcm9vdF9wcm90ZWN0ZWRfbGl2ZSgpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzE0MjpcXHRjb25zdCBzdHJ1Y3Qgc2NoZWRfY2xhc3MgKm5leHRfY2xhc3MgPSBuZXh0LVxcdTAwM2VzY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMxNDMtXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMxNDktXFx0ICogbG9uZ2VyIHVuZGVyIHRoZSBjb250cm9sIG9mIFNDWC4gVGhlcmVmb3JlLCBkb24ndCBpbnZva2UgdGhlIGNhbGxiYWNrXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMTUwOlxcdCAqIGlmIHRoZSBuZXh0IGNsYXNzIGlzIGJlbG93IFNDWCAoaW4gd2hpY2ggY2FzZSB0aGUgQlBGIHNjaGVkdWxlciBoYXNcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMxNTEtXFx0ICogYWN0aXZlbHkgZGVjaWRlZCBub3QgdG8gc2NoZWR1bGUgYW55IHRhc2tzIG9uIHRoZSBDUFUpLlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE1Mi1cXHQgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjMxNTM6XFx0aWYgKHNjaGVkX2NsYXNzX2Fib3ZlKFxcdTAwMjZleHRfc2NoZWRfY2xhc3MsIG5leHRfY2xhc3MpKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE1NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMxNjctXFx0XFx0XFx0c3RydWN0IHNjeF9jcHVfcmVsZWFzZV9hcmdzIGFyZ3MgPSB7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMTY4OlxcdFxcdFxcdFxcdC5yZWFzb24gPSBwcmVlbXB0X3JlYXNvbl9mcm9tX2NsYXNzKG5leHRfY2xhc3MpLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE2OS1cXHRcXHRcXHRcXHQudGFzayA9IG5leHQsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTU1NzI9Ym9vbCBzY3hfYWxsb3dfdHR3dV9xdWV1ZShjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU1OTItLyoqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1NTkzOiAqIGhhbmRsZV9sb2NrdXAgLSBzY2hlZF9leHQgY29tbW9uIGxvY2t1cCBoYW5kbGVyXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01NTk0LSAqIEBleGl0X2NwdTogQ1BVIHRvIHJlY29yZCBpbiBleGl0X2luZm8uIFBhc3MgdGhlIHN0YWxsZWQvaHVuZyBDUFUsIG5vdCBjdXJyZW50Llxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz04Njg2PXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgc2N4X3BtX25vdGlmaWVyID0ge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04Njg5LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODY5MDp2b2lkIF9faW5pdCBpbml0X3NjaGVkX2V4dF9jbGFzcyh2b2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODY5MS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwOTQzPXN0YXRpYyBpbnQgX19pbml0IHNjeF9pbml0KHZvaWQpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMDIwLVxcdC8qXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMTAyMTpcXHQgKiBrZnVuYyByZWdpc3RyYXRpb24gY2FuJ3QgYmUgZG9uZSBmcm9tIGluaXRfc2NoZWRfZXh0X2NsYXNzKCkgYXNcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMDIyLVxcdCAqIHJlZ2lzdGVyX2J0Zl9rZnVuY19pZF9zZXQoKSBuZWVkcyBtb3N0IG9mIHRoZSBzeXN0ZW0gdG8gYmUgdXAuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oPTIyPWJvb2wgc2N4X2FsbG93X3R0d3VfcXVldWUoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oOjIzOnZvaWQgaW5pdF9zY2hlZF9leHRfY2xhc3Modm9pZCk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuaC0yNC1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg9NTY9c3RhdGljIGlubGluZSBib29sIHNjeF9hbGxvd190dHd1X3F1ZXVlKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyByZXR1cm4gdHJ1ZTsgfVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg6NTc6c3RhdGljIGlubGluZSB2b2lkIGluaXRfc2NoZWRfZXh0X2NsYXNzKHZvaWQpIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuaC01OC1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTkxMz1zdGF0aWMgYm9vbCBjaGVja19idWlsdGluX2lkbGVfZW5hYmxlZChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy05MjYtICogV2UgY2FuJ3Qgc2ltcGx5IGNoZWNrIHdoZXRoZXIgQHAtXFx1MDAzZW1pZ3JhdGlvbl9kaXNhYmxlZCBpcyBzZXQgaW4gYVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjkyNzogKiBzY2hlZF9leHQgY2FsbGJhY2ssIGJlY2F1c2UgdGhlIEJQRiBwcm9sb2cgKF9fYnBmX3Byb2dfZW50ZXIpIG1heSBkaXNhYmxlXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtOTI4LSAqIG1pZ3JhdGlvbiBmb3IgdGhlIGN1cnJlbnQgdGFzayB3aGlsZSBydW5uaW5nIEJQRiBjb2RlLlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM9MTUyNT1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl9rZnVuY19pZF9zZXQgc2N4X2tmdW5jX3NldF9pZGxlID0ge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTUzNy0gKlxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE1Mzg6ICogVGhlc2Uga2Z1bmNzIGFyZSBhbHNvIG1lbWJlcnMgb2Ygc2N4X2tmdW5jX2lkc191bmxvY2tlZCAoc2VlIGV4dC5jKSBiZWNhdXNlXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTUzOS0gKiB0aGV5J3JlIGNhbGxhYmxlIGZyb20gdW5sb2NrZWQgY29udGV4dHMgaW4gYWRkaXRpb24gdG8gb3BzLnNlbGVjdF9jcHUoKSBhbmRcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaD0xMzI9ZW51bSBzY3hfb3BzX2ZsYWdzIHtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMzgtXFx0LypcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTM5OlxcdCAqIEJ5IGRlZmF1bHQsIGlmIHRoZXJlIGFyZSBubyBvdGhlciB0YXNrIHRvIHJ1biBvbiB0aGUgQ1BVLCBleHQgY29yZVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNDAtXFx0ICoga2VlcHMgcnVubmluZyB0aGUgY3VycmVudCB0YXNrIGV2ZW4gYWZ0ZXIgaXRzIHNsaWNlIGV4cGlyZXMuIElmIHRoaXNcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaD0zMTk9c3RydWN0IHNjaGVkX2V4dF9vcHMge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTM2OS1cXHQgKlxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDozNzA6XFx0ICogVGhlIGV4dCBjb3JlIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgdGhlIEJQRiBzaWRlIG93bnMgYSBnaXZlbiB0YXNrIG9yXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTM3MS1cXHQgKiBub3QgYW5kIGNhbiBncmFjZWZ1bGx5IGlnbm9yZSBzcHVyaW91cyBkaXNwYXRjaGVzIGZyb20gQlBGIHNpZGUsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTQyMj1lbnVtIHNjeF9jYXBfZmxhZ3Mge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE0NzMtICogZGVsaXZlcnkgaXMgaW4gZmxpZ2h0IHBlciBzaGFyZC4gRnVydGhlciBjaGFuZ2VzIGZvbGQgaW50byB0aGUgc2FtZSBidWZmZXJcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTQ3NDogKiBhbmQgc2hpcCBhcyB0aGUgbmV4dCBjYWxsYmFjaywgc28gYSBzaGFyZCdzIGNhbGxiYWNrcyBmaXJlIGluIG9yZGVyLlxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNDc1LSAqXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTY2Mz1lbnVtIHNjeF9lbnFfZmxhZ3Mge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE3MTYtXFx0ICogVGhlIHRhc2sgYmVpbmcgZW5xdWV1ZWQgaXMgdGhlIG9ubHkgdGFzayBhdmFpbGFibGUgZm9yIHRoZSBjcHUuIEJ5XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE3MTc6XFx0ICogZGVmYXVsdCwgZXh0IGNvcmUga2VlcHMgZXhlY3V0aW5nIHN1Y2ggdGFza3MgYnV0IHdoZW5cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTcxOC1cXHQgKiAlU0NYX09QU19FTlFfTEFTVCBpcyBzcGVjaWZpZWQsIHRoZXkncmUgb3BzLmVucXVldWUoKSdkIHdpdGggdGhlXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTgyMD1zdGF0aWMgY29uc3QgY2hhciAqc2N4X2VuYWJsZV9zdGF0ZV9zdHJbXSA9IHtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xODI5LSAqXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE4MzA6ICogVGhlIHNjaGVkX2V4dCBjb3JlIHVzZXMgdGhpcyBzdGF0ZSBtYWNoaW5lIHRvIHRyYWNrIHRhc2sgb3duZXJzaGlwXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE4MzEtICogYmV0d2VlbiB0aGUgU0NYIGNvcmUgYW5kIHRoZSBCUEYgc2NoZWR1bGVyLiBUaGlzIGFsbG93cyB0aGUgQlBGXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTkwMi0gKlxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxOTAzOiAqIFRoZSBzY2hlZF9leHQgY29yZSB1c2VzIGEgXFxcImxvY2sgZGFuY2luZ1xcXCIgcHJvdG9jb2wgY29vcmRpbmF0ZWQgYnlcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTkwNC0gKiBwLVxcdTAwM2VzY3guaG9sZGluZ19jcHUuIFdoZW4gbW92aW5nIGEgdGFzayB0byBhIGRpZmZlcmVudCBycTpcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTAtICogc3ViLXNjaGVkdWxlciBlbmFibGUvZGlzYWJsZSBwYXRocy4gVGhlIGNvcmUgZGlzcGF0Y2gvZW5xdWV1ZSBtYWNoaW5lcnkgaXRcXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjExOiAqIGJ1aWxkcyBvbiBsaXZlcyBpbiBleHQuYy5cXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTEyLSAqXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jPTEyMjg9dm9pZCBkcmFpbl9kZXNjZW5kYW50cyhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTEyNDUtICogc3RhdGUgdG8gJVNDWF9UQVNLX1JFQURZIHRvIGFjY291bnQgZm9yIHRoZSBhbHJlYWR5IGNvbXBsZXRlZCBpbml0LiBBIHRhc2tcXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjEyNDY6ICogb24gYSBub24tZXh0IGNsYXNzLCBwb3NzaWJsZSB1bmRlciBhbiAlU0NYX09QU19TV0lUQ0hfUEFSVElBTCByb290LCBzdGF5c1xcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTI0Ny0gKiAlUkVBRFkgYW5kIGlzIGVuYWJsZWQgYnkgc3dpdGNoaW5nX3RvX3NjeCgpIGlmIGl0IHN3aXRjaGVzIG92ZXIuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jPTE3MDU9dm9pZCBzY3hfc3ViX2VuYWJsZV93b3JrZm4oc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTk1MC1cXHRcXHRcXHQgKiBpcyB3aGF0IHdlIHdhbnQuIEFzc2lnbiBpdCB0byBAc2NoIGFuZCwgaWYgaXQncyBvblxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM6MTk1MTpcXHRcXHRcXHQgKiB0aGUgZXh0IGNsYXNzLCBlbmFibGUuIEEgbm9uLWV4dCB0YXNrLCBwb3NzaWJsZSB1bmRlclxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTk1Mi1cXHRcXHRcXHQgKiBhbiAlU0NYX09QU19TV0lUQ0hfUEFSVElBTCByb290LCBzdGF5cyBSRUFEWSBhbmQgaXNcXG4tLVxcbmtlcm5lbC9zY2hlZC9mYWlyLmM9Njk3Mz1zdGF0aWMgYm9vbCB0aHJvdHRsZV9jZnNfcnEoc3RydWN0IGNmc19ycSAqY2ZzX3JxKVxcbi0tXFxua2VybmVsL3NjaGVkL2ZhaXIuYy03MDI3LVxcdCAqIGN1cnJlbnQgZG9ub3IuIEluIGNhc2Ugb2YgcHJveHktZXhlY3V0aW9uLCB0aGUgZXhlY3V0aW9uXFxua2VybmVsL3NjaGVkL2ZhaXIuYzo3MDI4OlxcdCAqIGNvbnRleHQgY2Fubm90IGV4aXQgdG8gdGhlIHVzZXJzcGFjZSB3aGlsZSBob2xkaW5nIGEgbXV0ZXhcXG5rZXJuZWwvc2NoZWQvZmFpci5jLTcwMjktXFx0ICogYW5kIHRoZSBydWxlIG9mIHRocm90dGxlIGRlZmVycmFsIHRvIG9ubHkgdGhyb3R0bGUgdGhlXFxuLS1cXG5rZXJuZWwvc2NoZWQvZmFpci5jPTE1NDM2PWludCBzY2hlZF9ncm91cF9zZXRfaWRsZShzdHJ1Y3QgdGFza19ncm91cCAqdGcsIGxvbmcgaWRsZSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9mYWlyLmMtMTU0NjYtXFx0XFx0aWYgKFdBUk5fT05fT05DRSh3YXNfaWRsZSA9PSBjZnNfcnFfaXNfaWRsZShncnBfY2ZzX3JxKSkpXFxua2VybmVsL3NjaGVkL2ZhaXIuYzoxNTQ2NzpcXHRcXHRcXHRnb3RvIG5leHRfY3B1O1xcbmtlcm5lbC9zY2hlZC9mYWlyLmMtMTU0NjgtXFxuLS1cXG5rZXJuZWwvc2NoZWQvZmFpci5jLTE1NDg2LVxcbmtlcm5lbC9zY2hlZC9mYWlyLmM6MTU0ODc6bmV4dF9jcHU6XFxua2VybmVsL3NjaGVkL2ZhaXIuYy0xNTQ4OC1cXHRcXHRycV91bmxvY2tfaXJxcmVzdG9yZShycSwgXFx1MDAyNnJmKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9ydC5jPTIwNzg9c3RhdGljIHZvaWQgcHVzaF9ydF90YXNrcyhzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL3J0LmMtMjEyNy0gKi9cXG5rZXJuZWwvc2NoZWQvcnQuYzoyMTI4OnN0YXRpYyBpbnQgcnRvX25leHRfY3B1KHN0cnVjdCByb290X2RvbWFpbiAqcmQpXFxua2VybmVsL3NjaGVkL3J0LmMtMjEyOS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvcnQuYy0yMTM1LVxcdCAqIFdoZW4gc3RhcnRpbmcgdGhlIElQSSBSVCBwdXNoaW5nLCB0aGUgcnRvX2NwdSBpcyBzZXQgdG8gLTEsXFxua2VybmVsL3NjaGVkL3J0LmM6MjEzNjpcXHQgKiBydF9uZXh0X2NwdSgpIHdpbGwgc2ltcGx5IHJldHVybiB0aGUgZmlyc3QgQ1BVIGZvdW5kIGluXFxua2VybmVsL3NjaGVkL3J0LmMtMjEzNy1cXHQgKiB0aGUgcnRvX21hc2suXFxua2VybmVsL3NjaGVkL3J0LmMtMjEzOC1cXHQgKlxcbmtlcm5lbC9zY2hlZC9ydC5jOjIxMzk6XFx0ICogSWYgcnRvX25leHRfY3B1KCkgaXMgY2FsbGVkIHdpdGggcnRvX2NwdSBpcyBhIHZhbGlkIENQVSwgaXRcXG5rZXJuZWwvc2NoZWQvcnQuYy0yMTQwLVxcdCAqIHdpbGwgcmV0dXJuIHRoZSBuZXh0IENQVSBmb3VuZCBpbiB0aGUgcnRvX21hc2suXFxuLS1cXG5rZXJuZWwvc2NoZWQvcnQuYz0yMTkwPXN0YXRpYyB2b2lkIHRlbGxfY3B1X3RvX3B1c2goc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9ydC5jLTIyMDktXFx0aWYgKHJxLVxcdTAwM2VyZC1cXHUwMDNlcnRvX2NwdSBcXHUwMDNjIDApXFxua2VybmVsL3NjaGVkL3J0LmM6MjIxMDpcXHRcXHRjcHUgPSBydG9fbmV4dF9jcHUocnEtXFx1MDAzZXJkKTtcXG5rZXJuZWwvc2NoZWQvcnQuYy0yMjExLVxcbi0tXFxua2VybmVsL3NjaGVkL3J0LmM9MjIyND12b2lkIHJ0b19wdXNoX2lycV93b3JrX2Z1bmMoc3RydWN0IGlycV93b3JrICp3b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL3J0LmMtMjI0Ni1cXHQvKiBQYXNzIHRoZSBJUEkgdG8gdGhlIG5leHQgcnQgb3ZlcmxvYWRlZCBxdWV1ZSAqL1xcbmtlcm5lbC9zY2hlZC9ydC5jOjIyNDc6XFx0Y3B1ID0gcnRvX25leHRfY3B1KHJkKTtcXG5rZXJuZWwvc2NoZWQvcnQuYy0yMjQ4LVxcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTE1OT1zdHJ1Y3QgcnEge1xcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTE4Ny1cXHQvKlxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjExODg6XFx0ICogVGhlIG5leHQgY2FjaGVsaW5lIGhvbGRzIHRoZSAoaG90KSBydW5xdWV1ZSBsb2NrLCBhcyB3ZWxsIGFzXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTE4OS1cXHQgKiBzb21lIG90aGVyIGxlc3MgcGVyZm9ybWFuY2UtY3JpdGljYWwgZmllbGRzLlxcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTI1MS1cXHRzdHJ1Y3QgdGFza19zdHJ1Y3RcXHQqc3RvcDtcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoxMjUyOlxcdGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqbmV4dF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xMjUzLVxcdHVuc2lnbmVkIGxvbmdcXHRcXHRuZXh0X2JhbGFuY2U7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD0yODY3PXN0YXRpYyBpbmxpbmUgdm9pZCBycV9tb2RpZmllZF9iZWdpbihzdHJ1Y3QgcnEgKnJxLCBjb25zdCBzdHJ1Y3Qgc2NoZWRfY2xhc3MgKmNsYXNzKVxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTI4Njgte1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjI4Njk6XFx0aWYgKHNjaGVkX2NsYXNzX2Fib3ZlKHJxLVxcdTAwM2VuZXh0X2NsYXNzLCBjbGFzcykpXFxua2VybmVsL3NjaGVkL3NjaGVkLmg6Mjg3MDpcXHRcXHRycS1cXHUwMDNlbmV4dF9jbGFzcyA9IGNsYXNzO1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTI4NzEtfVxcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmg9Mjg3Mz1zdGF0aWMgaW5saW5lIGJvb2wgcnFfbW9kaWZpZWRfYWJvdmUoc3RydWN0IHJxICpycSwgY29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpjbGFzcylcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0yODc0LXtcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoyODc1OlxcdHJldHVybiBzY2hlZF9jbGFzc19hYm92ZShycS1cXHUwMDNlbmV4dF9jbGFzcywgY2xhc3MpO1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTI4NzYtfVxcbi0tXFxua2VybmVsL3NjaGVkL3N5c2NhbGxzLmM9NDkzPWludCBfX3NjaGVkX3NldHNjaGVkdWxlcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsXFxuLS1cXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy00OTgtXFx0aW50IHJldHZhbCwgb2xkcHJpbywgbmV3cHJpbztcXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYzo0OTk6XFx0Y29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpwcmV2X2NsYXNzLCAqbmV4dF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy01MDAtXFx0c3RydWN0IGJhbGFuY2VfY2FsbGJhY2sgKmhlYWQ7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy02NzUtXFx0cHJldl9jbGFzcyA9IHAtXFx1MDAzZXNjaGVkX2NsYXNzO1xcbmtlcm5lbC9zY2hlZC9zeXNjYWxscy5jOjY3NjpcXHRuZXh0X2NsYXNzID0gX19zZXRzY2hlZHVsZXJfY2xhc3MocG9saWN5LCBuZXdwcmlvKTtcXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy02NzctXFxua2VybmVsL3NjaGVkL3N5c2NhbGxzLmM6Njc4OlxcdGlmIChwcmV2X2NsYXNzICE9IG5leHRfY2xhc3MpXFxua2VybmVsL3NjaGVkL3N5c2NhbGxzLmMtNjc5LVxcdFxcdHF1ZXVlX2ZsYWdzIHw9IERFUVVFVUVfQ0xBU1M7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy02ODQtXFx0XFx0XFx0X19zZXRzY2hlZHVsZXJfcGFyYW1zKHAsIGF0dHIpO1xcbmtlcm5lbC9zY2hlZC9zeXNjYWxscy5jOjY4NTpcXHRcXHRcXHRwLVxcdTAwM2VzY2hlZF9jbGFzcyA9IG5leHRfY2xhc3M7XFxua2VybmVsL3NjaGVkL3N5c2NhbGxzLmMtNjg2LVxcdFxcdFxcdHAtXFx1MDAzZXByaW8gPSBuZXdwcmlvO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjozOC41ODM0MjY3ODNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0Njc5MDQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGtlcm5lbCBjb25maWcgc2V0dGluZzpcblxuKipEZWx2aW5nIGludG8gdGhlIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gd2UncmUgZGVhbGluZyB3aXRoIGlzIGBTQ0hFRF9DTEFTU19FWFRgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBmb3IgdGhlIGRlZmluaXRpb24gYW5kIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmbGFnIGVuYWJsZXMgb3IgZGlzYWJsZXMsIGFuZCB3aGVyZSBpdCBmaXRzIHdpdGhpbiB0aGUgbGFyZ2VyIHNjaGVkdWxpbmcgZnJhbWV3b3JrLiBBIHF1aWNrIHNjYW4gb2YgYGtlcm5lbC9zY2hlZC9LY29uZmlnYCBpcyBkZWZpbml0ZWx5IHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCBmaWxlIGlzIHRoZSBjZW50cmFsIHJlcG9zaXRvcnkgZm9yIHNjaGVkdWxlci1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQnkgY2hlY2tpbmcgdGhlcmUsIEkgY2FuIGdldCBhIGhhbmRsZSBvbjpcblxuKiAgICoqSXRzIFB1cnBvc2U6KiogV2hhdCBmdW5jdGlvbmFsaXR5IGRvZXMgYFNDSEVEX0NMQVNTX0VYVGAgY29udHJvbD8gSXMgaXQgZW5hYmxpbmcgYSBzcGVjaWZpYyBzY2hlZHVsZXIgY2xhc3MsIGV4dGVuZGluZyBhbiBleGlzdGluZyBvbmUsIG9yIHNvbWUgb3RoZXIgYXNwZWN0IG9mIHRoZSBzY2hlZHVsaW5nIHN5c3RlbT9cbiogICAqKkRlcGVuZGVuY2llczoqKiBEb2VzIHRoaXMgb3B0aW9uIHJlbHkgb24gYW55IG90aGVyIGNvbmZpZ3M/IEFyZSB0aGVyZSBwcmVyZXF1aXNpdGVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj9cbiogICAqKkNvbnRleHQ6KiogV2hlcmUgZG9lcyBgU0NIRURfQ0xBU1NfRVhUYCBzaXQgaW4gdGhlIEtjb25maWcgaGllcmFyY2h5PyBLbm93aW5nIGl0cyBwYXJlbnQgbWVudSBvciBzZWN0aW9uIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGl0cyBvdmVyYWxsIHNjb3BlIGFuZCByZWxldmFuY2Ugd2l0aGluIHRoZSBzY2hlZHVsaW5nIGxhbmRzY2FwZS5cbiogICAqKkRvY3VtZW50YXRpb246KiogSG9wZWZ1bGx5LCB0aGUgS2NvbmZpZyBlbnRyeSB3aWxsIGluY2x1ZGUgYSBoZWxwZnVsIGNvbW1lbnQuIEV2ZW4gYSBicmllZiBkZXNjcmlwdGlvbiB3b3VsZCBnaXZlIG1lIGEgc3RhcnRpbmcgcG9pbnQuXG5cbkFybWVkIHdpdGggdGhpcyBpbmZvcm1hdGlvbiwgSSBjYW4gbWFrZSBhIG1vcmUgaW5mb3JtZWQgYXNzZXNzbWVudCBvZiB0aGUgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb24uIEknbGwgYmUgYWJsZSB0byB0ZWxsIGhvdyB0aGlzIGZsYWcgaW1wYWN0cyB0aGUgc3lzdGVtJ3Mgc2NoZWR1bGluZyBiZWhhdmlvciBhbmQgcG9zc2libHkgaG93IHRvIHR1bmUgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODA4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6NDIuNjMwMjIwODcxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTMwMDU4OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU0NIRURfQ0xBU1NfRVhUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Njo0Mi42Nzk1MzUyMDlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNjA2ODQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB3aGVyZSB3b3VsZCB0aGlzIHByZWVtcHRpb24gY29uZmlndXJhdGlvbiBvcHRpb24gYmUgbHVya2luZz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgLiBUaGF0J3MgdGhlIG1vc3QgbGlrZWx5IHNwb3QsIGdpdmVuIHRoZSBuYW1lLiBCdXQgeW91IGtub3cgaG93IHRoZXNlIHRoaW5ncyBnbywgc29tZXRpbWVzIHRoaW5ncyBlbmQgdXAgaW4gdW5leHBlY3RlZCBwbGFjZXMuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgYWxzbyBnbGFuY2UgYXQgYGluaXQvS2NvbmZpZ2AuIFRoYXQncyBhIHBvc3NpYmlsaXR5LCBlc3BlY2lhbGx5IGlmIGl0J3MgcmVsYXRlZCB0byBlYXJseSBib290IG9yIHN5c3RlbSBpbml0aWFsaXphdGlvbi4gQW5kLCBvZiBjb3Vyc2UsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBtYWluIGBrZXJuZWwvS2NvbmZpZ2AgZmlsZSBpdHNlbGYuIEl0J3MgdGhlIGNhdGNoLWFsbCBmb3Iga2VybmVsIG9wdGlvbnMsIGFuZCBzb21ldGltZXMgdGhpbmdzIGdldCBwbGFjZWQgdGhlcmUgaWYgdGhleSBkb24ndCBmaXQgbmVhdGx5IGVsc2V3aGVyZS4gTGV0J3Mgc2VlIHdoYXQgdGhlc2UgS2NvbmZpZyBmaWxlcyByZXZlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMTkxLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6NDYuMDA1NjA3MDI3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzM5NDk4MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdD0zMD1Td2l0Y2hpbmcgdG8gYW5kIGZyb20gc2NoZWRfZXh0XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTMyLVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6MzM6YGBDT05GSUdfU0NIRURfQ0xBU1NfRVhUYGAgaXMgdGhlIGNvbmZpZyBvcHRpb24gdG8gZW5hYmxlIHNjaGVkX2V4dCBhbmRcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTM0LWBgdG9vbHMvc2NoZWRfZXh0YGAgY29udGFpbnMgdGhlIGV4YW1wbGUgc2NoZWR1bGVycy4gVGhlIGZvbGxvd2luZyBjb25maWdcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0PTM1PW9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgdG8gdXNlIHNjaGVkX2V4dDpcXG4tLVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtMzktICAgIENPTkZJR19CUEY9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6NDA6ICAgIENPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDEtICAgIENPTkZJR19CUEZfU1lTQ0FMTD15XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODM1PXN0cnVjdCB0YXNrX3N0cnVjdCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtODkyLVxcdHN0cnVjdCBzY2hlZF9kbF9lbnRpdHlcXHRcXHQqZGxfc2VydmVyO1xcbmluY2x1ZGUvbGludXgvc2NoZWQuaDo4OTM6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtODk0LVxcdHN0cnVjdCBzY2hlZF9leHRfZW50aXR5XFx0XFx0c2N4O1xcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC0xMS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oOjEyOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC0xMy1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0Lmg9Mjk1PWJvb2wgc2N4X3JjdV9jcHVfc3RhbGwoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnN0YWxsZWRfbWFzayk7XFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC0yOTYtXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaDoyOTc6I2Vsc2VcXHQvKiAhQ09ORklHX1NDSEVEX0NMQVNTX0VYVCAqL1xcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0LmgtMjk4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaD0zMDM9c3RhdGljIGlubGluZSBib29sIHNjeF9yY3VfY3B1X3N0YWxsKGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzdGFsbGVkX21hc2spIHsgcmV0dXJuIGZhbHNlOyB9XFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC0zMDQtXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaDozMDU6I2VuZGlmXFx0LyogQ09ORklHX1NDSEVEX0NMQVNTX0VYVCAqL1xcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0LmgtMzA2LVxcbi0tXFxuaW5pdC9LY29uZmlnPTkzNz1jb25maWcgU0NIRURfUFJPWFlfRVhFQ1xcbi0tXFxuaW5pdC9LY29uZmlnLTk0MS1cXHQjIE5lZWQgdG8gaW52ZXN0aWdhdGUgaG93IHRvIGluZm9ybSBzY2hlZF9leHQgb2Ygc3BsaXQgY29udGV4dHNcXG5pbml0L0tjb25maWc6OTQyOlxcdGRlcGVuZHMgb24gIVNDSEVEX0NMQVNTX0VYVFxcbmluaXQvS2NvbmZpZy05NDMtXFx0IyBOb3QgcGFydGljdWxhcmx5IHVzZWZ1bCB1bnRpbCB3ZSBnZXQgdG8gbXVsdGktcnEgcHJveHlpbmdcXG4tLVxcbmluaXQvS2NvbmZpZz0xMjAwPWNvbmZpZyBFWFRfR1JPVVBfU0NIRURcXG5pbml0L0tjb25maWctMTIwMS1cXHRib29sXFxuaW5pdC9LY29uZmlnOjEyMDI6XFx0ZGVwZW5kcyBvbiBTQ0hFRF9DTEFTU19FWFQgXFx1MDAyNlxcdTAwMjYgQ0dST1VQX1NDSEVEXFxuaW5pdC9LY29uZmlnLTEyMDMtXFx0c2VsZWN0IEdST1VQX1NDSEVEX1dFSUdIVFxcbi0tXFxuaW5pdC9LY29uZmlnPTEyMDk9Y29uZmlnIEVYVF9TVUJfU0NIRURcXG5pbml0L0tjb25maWctMTIxMC0gICAgICAgIGRlZl9ib29sIHlcXG5pbml0L0tjb25maWc6MTIxMTogICAgICAgIGRlcGVuZHMgb24gU0NIRURfQ0xBU1NfRVhUIFxcdTAwMjZcXHUwMDI2IENHUk9VUFNcXG5pbml0L0tjb25maWctMTIxMi1cXG4tLVxcbmluaXQvaW5pdF90YXNrLmM9MTA1PXN0cnVjdCB0YXNrX3N0cnVjdCBpbml0X3Rhc2sgX19hbGlnbmVkKEwxX0NBQ0hFX0JZVEVTKSA9IHtcXG4tLVxcbmluaXQvaW5pdF90YXNrLmMtMTQyLSNlbmRpZlxcbmluaXQvaW5pdF90YXNrLmM6MTQzOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxuaW5pdC9pbml0X3Rhc2suYy0xNDQtXFx0LnNjeFxcdFxcdD0ge1xcbi0tXFxua2VybmVsL0tjb25maWcucHJlZW1wdD0xNTU9Y29uZmlnIFNDSEVEX0NPUkVcXG4tLVxcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTcyLVxcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQ6MTczOmNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3NC1cXHRib29sIFxcXCJFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcXFwiXFxuLS1cXG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmMtNTktXFxua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jOjYwOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jLTYxLSMgaW5jbHVkZSBcXHUwMDNjbGludXgvYnRmX2lkcy5oXFx1MDAzZVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz0yMjg9c3RhdGljIGlubGluZSBib29sIHByaW9fbGVzcyhjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmEsXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTI2MS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jOjI2MjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtMjYzLVxcdGlmIChwYSA9PSBNQVhfUlRfUFJJTyArIE1BWF9OSUNFICsgMSlcXHQvKiBleHQgKi9cXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDU3ND1zdGF0aWMgdm9pZCBfX3NjaGVkX2ZvcmsodTY0IGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTQ2MTEtXFxua2VybmVsL3NjaGVkL2NvcmUuYzo0NjEyOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL2NvcmUuYy00NjEzLVxcdGluaXRfc2N4X2VudGl0eShcXHUwMDI2cC1cXHUwMDNlc2N4KTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDgxND1pbnQgc2NoZWRfZm9yayh1NjQgY2xvbmVfZmxhZ3MsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNDg2MS1cXHRcXHRwLVxcdTAwM2VzY2hlZF9jbGFzcyA9IFxcdTAwMjZydF9zY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjQ4NjI6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTQ4NjMtXFx0fSBlbHNlIGlmICh0YXNrX3Nob3VsZF9zY3gocC1cXHUwMDNlcG9saWN5KSkge1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz03NjEwPWNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqX19zZXRzY2hlZHVsZXJfY2xhc3MoaW50IHBvbGljeSwgaW50IHByaW8pXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTc2MTctXFxua2VybmVsL3NjaGVkL2NvcmUuYzo3NjE4OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL2NvcmUuYy03NjE5LVxcdGlmICh0YXNrX3Nob3VsZF9zY3gocG9saWN5KSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM9ODg3MD1pbnQgc2NoZWRfY3B1X2R5aW5nKHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTg4ODQtXFx0ZGxfc2VydmVyX3N0b3AoXFx1MDAyNnJxLVxcdTAwM2VmYWlyX3NlcnZlcik7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo4ODg1OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL2NvcmUuYy04ODg2LVxcdGRsX3NlcnZlcl9zdG9wKFxcdTAwMjZycS1cXHUwMDNlZXh0X3NlcnZlcik7XFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jPTg5NTM9dm9pZCBfX2luaXQgc2NoZWRfaW5pdCh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYy04OTYyLVxcdEJVR19PTighc2NoZWRfY2xhc3NfYWJvdmUoXFx1MDAyNmZhaXJfc2NoZWRfY2xhc3MsIFxcdTAwMjZpZGxlX3NjaGVkX2NsYXNzKSk7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo4OTYzOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL2NvcmUuYy04OTY0LVxcdEJVR19PTighc2NoZWRfY2xhc3NfYWJvdmUoXFx1MDAyNmZhaXJfc2NoZWRfY2xhc3MsIFxcdTAwMjZleHRfc2NoZWRfY2xhc3MpKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtOTA4MC1cXHRcXHRmYWlyX3NlcnZlcl9pbml0KHJxKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjkwODE6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTkwODItXFx0XFx0ZXh0X3NlcnZlcl9pbml0KHJxKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jPTEwOD1zdGF0aWMgaW5saW5lIHU4IGRsX2dldF90eXBlKHN0cnVjdCBzY2hlZF9kbF9lbnRpdHkgKmRsX3NlLCBzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmMtMTEzLVxcdFxcdHJldHVybiBETF9TRVJWRVJfRkFJUjtcXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYzoxMTQ6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYy0xMTUtXFx0aWYgKGRsX3NlID09IFxcdTAwMjZycS1cXHUwMDNlZXh0X3NlcnZlcilcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jPTE4NDI9dm9pZCBzY2hlZF9pbml0X2RsX3NlcnZlcnModm9pZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTE4NjYtXFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MTg2NzojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTE4NjgtXFx0XFx0ZGxfc2UgPSBcXHUwMDI2cnEtXFx1MDAzZWV4dF9zZXJ2ZXI7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0zNDUxPXN0YXRpYyB2b2lkIGRsX3NlcnZlcl9hZGRfYncoc3RydWN0IHJvb3RfZG9tYWluICpyZCwgaW50IGNwdSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTM0NTgtXFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MzQ1OTojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTM0NjAtXFx0ZGxfc2UgPSBcXHUwMDI2Y3B1X3JxKGNwdSktXFx1MDAzZWV4dF9zZXJ2ZXI7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0zNDY2PXN0YXRpYyB1NjQgZGxfc2VydmVyX3JlYWRfYncoaW50IGNwdSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTM0NzMtXFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MzQ3NDojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTM0NzUtXFx0aWYgKGNwdV9ycShjcHUpLVxcdTAwM2VleHRfc2VydmVyLmRsX3NlcnZlciBcXHUwMDI2XFx1MDAyNlxcbi0tXFxua2VybmVsL3NjaGVkL2RlYnVnLmM9NDk0PXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3NjaGVkO1xcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTQ5NS1cXG5rZXJuZWwvc2NoZWQvZGVidWcuYzo0OTY6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvZGVidWcuYy00OTctc3RhdGljIHNzaXplX3RcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jPTU2MT1zdGF0aWMgdm9pZCBkZWJ1Z2ZzX2V4dF9zZXJ2ZXJfaW5pdCh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2RlYnVnLmMtNTgwLX1cXG5rZXJuZWwvc2NoZWQvZGVidWcuYzo1ODE6I2VuZGlmIC8qIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgKi9cXG5rZXJuZWwvc2NoZWQvZGVidWcuYy01ODItXFxuLS1cXG5rZXJuZWwvc2NoZWQvZGVidWcuYz03MTI9c3RhdGljIF9faW5pdCBpbnQgc2NoZWRfaW5pdF9kZWJ1Zyh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2RlYnVnLmMtNzY5LVxcdGRlYnVnZnNfZmFpcl9zZXJ2ZXJfaW5pdCgpO1xcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jOjc3MDojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTc3MS1cXHRkZWJ1Z2ZzX2V4dF9zZXJ2ZXJfaW5pdCgpO1xcbi0tXFxua2VybmVsL3NjaGVkL2RlYnVnLmM9MTQwNj12b2lkIHByb2Nfc2NoZWRfc2hvd190YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxcbi0tXFxua2VybmVsL3NjaGVkL2RlYnVnLmMtMTUwNS1cXHR9XFxua2VybmVsL3NjaGVkL2RlYnVnLmM6MTUwNjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTE1MDctXFx0X19QUyhcXFwiZXh0LmVuYWJsZWRcXFwiLCB0YXNrX29uX3NjeChwKSk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTY0MT12b2lkIHNjeF9zZXRfdGFza19zdGF0ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHUzMiBzdGF0ZSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjk3LSAqIHNjeF90YXNrcyBjYW4gYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiBhbHdheXMgdXNpbmcgY2dyb3VwIGl0ZXJhdGlvbiBpZlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Njk4OiAqIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgZGVwZW5kcyBvbiBDT05GSUdfQ0dST1VQUy5cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTY5OS0gKlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuaC04LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg6OTojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtMTAtXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oPTM5PWJvb2wgc2N4X3ByaW9fbGVzcyhjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmEsIGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqYixcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtNDItXFxua2VybmVsL3NjaGVkL2V4dC9leHQuaDo0MzojZWxzZVxcdC8qIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTQ0LVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuaD01Nz1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9zY2hlZF9leHRfY2xhc3Modm9pZCkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTU4LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg6NTk6I2VuZGlmXFx0LyogQ09ORklHX1NDSEVEX0NMQVNTX0VYVCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtNjAtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuaDo2MTojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtNjItdm9pZCBfX3NjeF91cGRhdGVfaWRsZShzdHJ1Y3QgcnEgKnJxLCBib29sIGlkbGUsIGJvb2wgZG9fbm90aWZ5KTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9pZGxlLmM9NTU3PXN0YXRpYyB2b2lkIHVwZGF0ZV9jdXJyX2lkbGUoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9pZGxlLmMtNTY5LVxcdGRsX3NlcnZlcl91cGRhdGVfaWRsZShcXHUwMDI2cnEtXFx1MDAzZWZhaXJfc2VydmVyLCBkZWx0YV9leGVjKTtcXG5rZXJuZWwvc2NoZWQvaWRsZS5jOjU3MDojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9pZGxlLmMtNTcxLVxcdGRsX3NlcnZlcl91cGRhdGVfaWRsZShcXHUwMDI2cnEtXFx1MDAzZWV4dF9zZXJ2ZXIsIGRlbHRhX2V4ZWMpO1xcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTk0PXN0YXRpYyBpbmxpbmUgaW50IG5vcm1hbF9wb2xpY3koaW50IHBvbGljeSlcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xOTUte1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjE5NjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTE5Ny1cXHRpZiAocG9saWN5ID09IFNDSEVEX0VYVClcXG4tLVxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oPTY4MT1zdHJ1Y3QgY2ZzX3JxIHtcXG4tLVxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTc3OS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDo3ODA6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC03ODEtLyogc2N4X3JxLVxcdTAwM2VmbGFncywgcHJvdGVjdGVkIGJ5IHRoZSBycSBsb2NrICovXFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD04MTE9c3RydWN0IHNjeF9ycSB7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC04NTAtfTtcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDo4NTE6I2VuZGlmIC8qIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgKi9cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC04NTItXFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD0xMTU5PXN0cnVjdCBycSB7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xMjEzLVxcdHN0cnVjdCBkbF9ycVxcdFxcdGRsO1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjEyMTQ6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xMjE1LVxcdHN0cnVjdCBzY3hfcnFcXHRcXHRzY3g7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD0xODg1PWV4dGVybiBzdHJ1Y3QgYmFsYW5jZV9jYWxsYmFjayBiYWxhbmNlX3B1c2hfY2FsbGJhY2s7XFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTg4Ni1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoxODg3OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTg4OC1leHRlcm4gY29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzIGV4dF9zY2hlZF9jbGFzcztcXG4tLVxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oPTE5MDQ9c3RhdGljIGlubGluZSB2b2lkIHNjeF9ycV9jbG9ja19pbnZhbGlkYXRlKHN0cnVjdCBycSAqcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xOTEwLVxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjE5MTE6I2Vsc2UgLyogIUNPTkZJR19TQ0hFRF9DTEFTU19FWFQ6ICovXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTkxMi0jZGVmaW5lIHNjeF9lbmFibGVkKClcXHRcXHRmYWxzZVxcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTkxNj1zdGF0aWMgaW5saW5lIHZvaWQgc2N4X3JxX2Nsb2NrX2ludmFsaWRhdGUoc3RydWN0IHJxICpycSkge31cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoxOTE3OiNlbmRpZiAvKiAhQ09ORklHX1NDSEVEX0NMQVNTX0VYVCAqL1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTE5MTgtXFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD0yODQxPXN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpuZXh0X2FjdGl2ZV9jbGFzcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfY2xhc3MgKmNsYXNzKVxcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMjg0My1cXHRjbGFzcysrO1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjI4NDQ6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0yODQ1LVxcdGlmIChzY3hfc3dpdGNoZWRfYWxsKCkgXFx1MDAyNlxcdTAwMjYgY2xhc3MgPT0gXFx1MDAyNmZhaXJfc2NoZWRfY2xhc3MpXFxuLS1cXG5rZXJuZWwvc2NoZWQvdG9wb2xvZ3kuYz00NzQ9dm9pZCBycV9hdHRhY2hfcm9vdChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3Qgcm9vdF9kb21haW4gKnJkKVxcbi0tXFxua2VybmVsL3NjaGVkL3RvcG9sb2d5LmMtNTEyLVxcbmtlcm5lbC9zY2hlZC90b3BvbG9neS5jOjUxMzojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC90b3BvbG9neS5jLTUxNC1cXHRpZiAocnEtXFx1MDAzZWV4dF9zZXJ2ZXIuZGxfc2VydmVyKVxcbi0tXFxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmM9MjQ9c3RhdGljIGludCBfX2luaXQgcmVnaXN0ZXJfZGVhZGxpbmUodm9pZClcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuYy0yNS17XFxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmM6MjY6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1NDSEVEX0NMQVNTX0VYVCkpIHtcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuYy0yNy1cXHRcXHRydl9leHRfc2NoZWRfY2xhc3MgPSAodm9pZCAqKWthbGxzeW1zX2xvb2t1cF9uYW1lKFxcXCJleHRfc2NoZWRfY2xhc3NcXFwiKTtcXG4tLVxcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5oPTc3PXN0YXRpYyBpbmxpbmUgYm9vbCB0YXNrX2lzX3NjeF9lbmFibGVkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5oLTc4LXtcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaDo3OTpcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfU0NIRURfQ0xBU1NfRVhUKSBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5oLTgwLVxcdCAgICAgICB0c2stXFx1MDAzZXNjaGVkX2NsYXNzID09IHJ2X2V4dF9zY2hlZF9jbGFzcztcXG4tLVxcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5oPTE1Nz1zdGF0aWMgaW5saW5lIGludCBpbml0X3N0b3JhZ2UoYm9vbCBza2lwX3Rhc2tzKVxcbi0tXFxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmgtMTY0LVxcdFxcdFxcdGdvdG8gZmFpbDtcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaDoxNjU6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1NDSEVEX0NMQVNTX0VYVCkgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaC0xNjYtXFx0XFx0ICAgICFkYV9jcmVhdGVfZW1wdHlfc3RvcmFnZShleHRfc2VydmVyX2lkKGNwdSkpKVxcbi0tXFxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL25vbWlzcy9ub21pc3MuYz0xNTc9c3RhdGljIHZvaWQgaGFuZGxlX3NjaGVkX3N3aXRjaCh2b2lkICpkYXRhLCBib29sIHByZWVtcHQsXFxuLS1cXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvbm9taXNzL25vbWlzcy5jLTE4MC1cXHRcXHRoYW5kbGVfc2VydmVyX3N3aXRjaChuZXh0LCBjcHUsIERMX1NFUlZFUl9GQUlSKTtcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvbm9taXNzL25vbWlzcy5jOjE4MTpcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0NIRURfQ0xBU1NfRVhUKSlcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvbm9taXNzL25vbWlzcy5jLTE4Mi1cXHRcXHRcXHRoYW5kbGVfc2VydmVyX3N3aXRjaChuZXh0LCBjcHUsIERMX1NFUlZFUl9FWFQpO1xcbi0tXFxudG9vbHMvc2NoZWRfZXh0L0tjb25maWc9OD1DT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcXG50b29scy9zY2hlZF9leHQvS2NvbmZpZzo5OkNPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnLTEwLVxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZD01Nj1DT05GSUdfQlBGPXlcXG50b29scy9zY2hlZF9leHQvUkVBRE1FLm1kOjU3OkNPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQtNTgtQ09ORklHX0JQRl9TWVNDQUxMPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3NjaGVkX2V4dC9jb25maWc6MTpDT05GSUdfU0NIRURfQ0xBU1NfRVhUPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zY2hlZF9leHQvY29uZmlnLTItQ09ORklHX0NHUk9VUFM9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Njo0Ny43NDUxMTQ5NjlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzNDk2NzM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTY2hlZHVsZXIgRXh0ZW5zaW9uIFBhdGNoKipcblxuT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gaXMgYFNDSEVEX0NMQVNTX0VYVGAsIGFuZCB0aGUgZnVuY3Rpb24gd2UncmUgbG9va2luZyBhdCBpcyBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgd29ydGggZnV6emluZywgYW5kIGlmIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFueSBpbnRlcmVzdGluZyBuZXcgc3VyZmFjZSBhcmVhLiBUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrLCBzcGVjaWZpY2FsbHk6XG5cbmBgYGNcblx0XHQvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovXG5cdFx0aWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKVxuXHRcdFx0Y29udGludWU7XG5gYGBcblxuUmlnaHQsIHRoaXMgaXMgYSByYWNlIGNvbmRpdGlvbiBmaXggcmVsYXRlZCB0byBgZGVzdHJveV9kc3EoKWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBFc3NlbnRpYWxseSwgaXQgcHJldmVudHMgYSB1c2UtYWZ0ZXItZnJlZSBpc3N1ZS4gVGhpcyBpcyAqZGVmaW5pdGVseSogYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGNvcmUgYHNjaGVkX2V4dGAgKHNjaGVkdWxlciBleHRlbnNpb24pIGltcGxlbWVudGF0aW9uLiBTaW5jZSBpdCdzIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uLCBpdOKAmXMgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJ4oCZbSB0aGlua2luZyBgV29ydGhGdXp6aW5nPXRydWVgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuXG5cbk5vdywgbGV0J3MgZGlnIGEgYml0IGRlZXBlci4gYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBmaW5kIGl0cyBjYWxsZXJzLiBMZXTigJlzIHNlZeKApiBpdCBsb29rcyBsaWtlIGl0J3MgY2FsbGVkIGJ5IGBydW5fZGVmZXJyZWRgLCB3aGljaCBpcyBpbiB0dXJuIGNhbGxlZCBieSBgc2N4X2JwZl9ydW5fZGVmZXJyZWRgIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gdGFrZSBhIHF1aWNrIGxvb2sgYXQgYHJ1bl9kZWZlcnJlZGAgdG8gY29uZmlybSB0aGUgY2FsbCBwYXRoIGFuZCB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDM0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjUzLjA4MDA4NjM1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTIyMzYzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydW5fZGVmZXJyZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTI1Mz1NT0RVTEVfUEFSTV9ERVNDKGJ5cGFzc19sYl9pbnR2X3VzLCBcXFwiYnlwYXNzIGxvYWQgYmFsYW5jZSBpbnRlcnZhbCBpbiBtaWNyb3NlY29uZHMgKDAgKGRpc2FibGUpIHRvIDEwcylcXFwiKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjU5LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjYwOnN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI2MS1zdGF0aWMgYm9vbCB0YXNrX2RlYWRfYW5kX2RvbmUoc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTk1PXN0YXRpYyB2b2lkIGRlZmVycmVkX2JhbF9jYl93b3JrZm4oc3RydWN0IHJxICpycSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk5Ni17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5OTc6XFx0cnVuX2RlZmVycmVkKHJxKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk5OC19XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMDA9c3RhdGljIHZvaWQgZGVmZXJyZWRfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDA0LVxcdHJhd19zcGluX3JxX2xvY2socnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAwNTpcXHRydW5fZGVmZXJyZWQocnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTAwNi1cXHRzY3hfcnFfbG9ja19kcm9wKHJxKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzM2MD1zdGF0aWMgZW51bSBzY3hfZHNwX3ZlcmRpY3QgZGlzcGF0Y2hfY29yZV9waWNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMzODktXFx0XFx0cnEtXFx1MDAzZXNjeC5mbGFncyBcXHUwMDI2PSB+U0NYX1JRX0JBTF9DQl9QRU5ESU5HO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzM5MDpcXHRcXHRydW5fZGVmZXJyZWQocnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzM5MS1cXHR9XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM2MjU9c3RhdGljIHZvaWQgdGFza193b2tlbl9zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzYyNi17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNjI3OlxcdHJ1bl9kZWZlcnJlZChycSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNjI4LX1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDYxMT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NDgtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NjQ5OnN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY1MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjUzLjEyOTMxNjY4OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTI2OTU1NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgcnVuX2RlZmVycmVkYCBGdW5jdGlvbiBDYWxsZXJzKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgcnVuX2RlZmVycmVkYCBpcyB0cmlnZ2VyZWQgYnkgYSBoYW5kZnVsIG9mIGZ1bmN0aW9uczogYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gLCBgZGVmZXJyZWRfaXJxX3dvcmtmbmAsIGBkaXNwYXRjaF9jb3JlX3BpY2tgLCBhbmQgYHRhc2tfd29rZW5fc2N4YC4gSW50ZXJlc3RpbmcuIEFuZCwgaWYgSSdtIHJlYWRpbmcgdGhpcyByaWdodCwgYHRhc2tfd29rZW5fc2N4YCBpcyBhIGNhbGxiYWNrIHRpZWQgdG8gdGhlIHNjaGVkdWxlciBjbGFzcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgaW52ZXN0aWdhdGlvbi4gTGV0J3MgZGlnIGludG8gYHRhc2tfd29rZW5fc2N4YCBhbmQgYWxzbyB0aGF0IGBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuYCBmdW5jdGlvbiwgdGhleSBzZWVtIGxpa2UgdGhlIG1vc3QgcmVsZXZhbnQgcmlnaHQgbm93LlxuXG5JJ20gdGhpbmtpbmcgYHRhc2tfd29rZW5fc2N4YCBpcyBhIHByb21pc2luZyB0YXJnZXQgZm9yIG5vdy5cblxuV2FpdCwgd2hhdCBhYm91dCBgZGVzdHJveV9kc3FgPyBUaGF0IGNvbW1lbnQgaXMgbWFraW5nIG1lIHJhaXNlIGFuIGV5ZWJyb3c7IGl0IG1lbnRpb25zIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGFuZCBpbnZhbGlkYXRpb24gb2YgYEBkc3FgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgZGVzdHJveV9kc3FgIGlzIHNvbWUga2luZCBvZiBlQlBGIGtmdW5jIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBUaGF0IGNvdWxkIGJlIHNpZ25pZmljYW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI2MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Njo1Ny42NTYyNzU2MDNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzYxNjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlc3Ryb3lfZHNxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz00NjExPXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDYzOS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ2NDA6XFx0XFx0LyogZGVzdHJveV9kc3EoKSBtYXkgaGF2ZSByYWNlZCBhbmQgaW52YWxpZGF0ZWQgQGRzcSwgbm90aGluZyB0byByZWVucSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY0MS1cXHRcXHRpZiAodW5saWtlbHkoZHNxLVxcdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01MTI3PXN0YXRpYyBERUZJTkVfSVJRX1dPUksoZnJlZV9kc3FfaXJxX3dvcmssIGZyZWVfZHNxX2lycV93b3JrZm4pO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTEyOC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjUxMjk6c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTEzMC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTUzMzg9c3RhdGljIHZvaWQgc2N4X3NjaGVkX2ZyZWVfcmN1X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01NDAzLVxcdFxcdHdoaWxlICghSVNfRVJSX09SX05VTEwoKGRzcSA9IHJoYXNodGFibGVfd2Fsa19uZXh0KFxcdTAwMjZyaHRfaXRlcikpKSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjU0MDQ6XFx0XFx0XFx0ZGVzdHJveV9kc3Eoc2NoLCBkc3EtXFx1MDAzZWlkKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU0MDUtXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk2NzE9X19icGZfa2Z1bmMgczMyIHNjeF9icGZfZHNxX25yX3F1ZXVlZCh1NjQgZHNxX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3MDgtLyoqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzA5OiAqIHNjeF9icGZfZGVzdHJveV9kc3EgLSBEZXN0cm95IGEgY3VzdG9tIERTUVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcxMC0gKiBAZHNxX2lkOiBEU1EgdG8gZGVzdHJveVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzE3LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTcxODpfX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZGVzdHJveV9kc3EodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcxOS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3MjQtXFx0aWYgKHNjaClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk3MjU6XFx0XFx0ZGVzdHJveV9kc3Eoc2NoLCBkc3FfaWQpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyNi19XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNzE4PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9ucl9xdWV1ZWQsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDcxOTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kZXN0cm95X2RzcSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNzIwLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9wZWVrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVX1BST1RFQ1RFRCB8IEtGX1JFVF9OVUxMKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Njo1Ny43MDcwNDM3MTJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyNTI5NjcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgS2VybmVsIEZ1bmN0aW9uIFJhY2UgQ29uZGl0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHNjeF9icGZfZGVzdHJveV9kc3FgLiBJIGtub3cgdGhpcyBpcyBhIEJQRiBrZnVuYywgc28gdGhhdCBpbW1lZGlhdGVseSBuYXJyb3dzIGRvd24gdGhlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIFRoZSBjcml0aWNhbCByYWNlIGhlcmUgaXMgYmV0d2VlbiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBpcyB0cmlnZ2VyZWQuIFJpZ2h0LCBpdCdzIGNhbGxlZCBieSBgcnVuX2RlZmVycmVkYC4gQW5kIGBydW5fZGVmZXJyZWRgIGhhcyBtdWx0aXBsZSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzOiBgdGFza193b2tlbl9zY3hgLCBgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbmAsIGBkZWZlcnJlZF9pcnFfd29ya2ZuYCwgYW5kIGBkaXNwYXRjaF9jb3JlX3BpY2tgLiBUaGF0J3MgYSByZWFzb25hYmxlIHNldCB0byBjaGVjay4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGRpc3BhdGNoX2NvcmVfcGlja2AgZ2V0cyBpbnZva2VkLiBJcyB0aGF0IGNhbGxlZCBieSBgcGlja19uZXh0X3Rhc2tfZXh0YCBvciBzb21ldGhpbmcgYW5hbG9nb3VzPyBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBjYWxsIGdyYXBoIGZvciB0aGF0IGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGFjY3VyYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDUwNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzowMi4wMzIzNDkzN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2MzUxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGlzcGF0Y2hfY29yZV9waWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz0zMzIzPXN0YXRpYyBlbnVtIHNjeF9kc3BfdmVyZGljdCBkaXNwYXRjaF9waWNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMzNTktICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMzYwOnN0YXRpYyBlbnVtIHNjeF9kc3BfdmVyZGljdCBkaXNwYXRjaF9jb3JlX3BpY2soc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZixcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMzNjEtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldilcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQwOC0jZWxzZVxcdC8qIENPTkZJR19TQ0hFRF9DT1JFICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNDA5OnN0YXRpYyBlbnVtIHNjeF9kc3BfdmVyZGljdCBkaXNwYXRjaF9jb3JlX3BpY2soc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZixcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0MTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldilcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzQxNz1kb19waWNrX3Rhc2tfc2N4KHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYsIGJvb2wgZm9yY2Vfc2N4KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDI4LVxcdGlmIChzY2hlZF9jb3JlX2VuYWJsZWQocnEpKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzQyOTpcXHRcXHR2ZXJkaWN0ID0gZGlzcGF0Y2hfY29yZV9waWNrKHJxLCByZiwgcHJldik7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDMwLVxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MDIuMDc4OTkwMDQ4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzIwOTI0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBJbnF1aXJ5OiBEZWVwIERpdmUgaW50byBgc2NoZWRfZXh0YCoqXG5cbk9rYXksIHNvIGBkb19waWNrX3Rhc2tfc2N4YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHRoZSBuZXh0IHRhc2sgZm9yIGBzY2hlZF9leHRgLiBUaGF0IG1lYW5zIHBvdGVudGlhbCBmb2N1cyBhcmVhcyBhcmUgZWl0aGVyIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCwgYGRvX3BpY2tfdGFza19zY3hgIGl0c2VsZiwgb3IgcGVyaGFwcyBgdGFza193b2tlbl9zY3hgLiBIYW5nIG9uLi4uIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCBpcyBhIEJQRiBrZnVuYywgaXNuJ3QgaXQ/IE1lYW5pbmcgaXQncyBjYWxsZWQgKmZyb20qIEJQRiBwcm9ncmFtcy4gSW50ZXJlc3RpbmcuIE5vdyBJIHJlbWVtYmVyIOKAkyBmdXp6aW5nIHRoZXNlIGtmdW5jcywgdGhhdCdzIHN5emthbGxlcidzIGRvbWFpbi4gSG1tLi4uIExldCdzIHF1aWNrbHkgdmVyaWZ5IHJlYWNoYWJpbGl0eSBmb3IgYHNjeF9icGZfZGVzdHJveV9kc3FgLiBZZXAsIGNvbmZpcm1lZC4gSXQncyBpbmRlZWQgYSBrZnVuYy4gQWxyaWdodCwgbGV0J3MgYWxzbyBtYWtlIHN1cmUgYHNjeF9icGZfY3JlYXRlX2RzcWAgaXMgaW4gcGxhY2UsIGp1c3QgZm9yIGdvb2QgbWVhc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyNTcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MDYuMjUxMDg1NjIyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDI5NTMzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3hfYnBmX2NyZWF0ZV9kc3FcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTkzNzc9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05Mzc5LS8qKlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTM4MDogKiBzY3hfYnBmX2NyZWF0ZV9kc3EgLSBDcmVhdGUgYSBjdXN0b20gRFNRXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MzgxLSAqIEBkc3FfaWQ6IERTUSB0byBjcmVhdGVcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTM4Ny0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkzODg6X19icGZfa2Z1bmMgczMyIHNjeF9icGZfY3JlYXRlX2RzcSh1NjQgZHNxX2lkLCBzMzIgbm9kZSwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTM4OS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk0MzY9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX3VubG9ja2VkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTQzNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcmVhdGVfZHNxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU0xFRVBBQkxFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTQzOC0vKiBhbHNvIGluIHNjeF9rZnVuY19pZHNfZGlzcGF0Y2g6IGFsc28gY2FsbGFibGUgZnJvbSBvcHMuZGlzcGF0Y2goKSAqL1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NjcxPV9fYnBmX2tmdW5jIHMzMiBzY3hfYnBmX2RzcV9ucl9xdWV1ZWQodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzEzLSAqIERlc3Ryb3kgdGhlIGN1c3RvbSBEU1EgaWRlbnRpZmllZCBieSBAZHNxX2lkLiBPbmx5IERTUXMgY3JlYXRlZCB3aXRoXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzE0OiAqIHNjeF9icGZfY3JlYXRlX2RzcSgpIGNhbiBiZSBkZXN0cm95ZWQuIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUgRFNRIGlzXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzE1LSAqIGVtcHR5IGFuZCBubyBmdXJ0aGVyIHRhc2tzIGFyZSBkaXNwYXRjaGVkIHRvIGl0LiBJZ25vcmVkIGlmIGNhbGxlZCBvbiBhIERTUVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzowNi4zMDEzODY1MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU3MDM0MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUga2Z1bmMgQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGVzZSBrZnVuY3MsIGBzY3hfYnBmX2NyZWF0ZV9kc3FgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAuIFJpZ2h0LCB0aG9zZSBhcmUgZGVmaW5pdGVseSBrZnVuY3MsIG5vIGRvdWJ0IGFib3V0IGl0LiBUaGUgZml4IEknbSBjaGFzaW5nIGlzIGFwcGFyZW50bHkgbHVya2luZyBpbiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBOb3csIHRoZSByZWxldmFudCBjb25maWdzIGFyZSBgU0NIRURfQ0xBU1NfRVhUYC4gQWgsIGJ1dCB3YWl0IGEgbWludXRlLCBgU0NIRURfQ0xBU1NfRVhUYCBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYC4gVGhhdCdzIGltcG9ydGFudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgY29ycmVjdGx5IGVuYWJsZWQgZm9yIHdoYXQgSSdtIGRvaW5nLiBSaWdodCwgcmlnaHQuLi4gSSBzaG91bGQgY2hlY2sgYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgIHRvIGNvbmZpcm0gdGhlIGZ1bGwgZGVwZW5kZW5jaWVzIGZvciBgU0NIRURfQ0xBU1NfRVhUYCwgZW5zdXJpbmcgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcml0aWNhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNzYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MTEuNTU4NDI1NDgyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDM4NzA5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvS2NvbmZpZy5wcmVlbXB0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9LY29uZmlnLnByZWVtcHQ9MTU1PWNvbmZpZyBTQ0hFRF9DT1JFXFxuLS1cXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3Mi1cXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0OjE3Mzpjb25maWcgU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL0tjb25maWcucHJlZW1wdC0xNzQtXFx0Ym9vbCBcXFwiRXh0ZW5zaWJsZSBTY2hlZHVsaW5nIENsYXNzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzoxMS45NjIzMDEyMTFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5OTkxMjk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgYWJvdXQgcHJlZW1wdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc3RhcnQgd2l0aCBga2VybmVsL0tjb25maWcucHJlZW1wdGAsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxNzMuIFRoYXQgYXJlYSB1c3VhbGx5IGhvbGRzIHRoZSBjb3JlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBwcmVlbXB0aW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdtIGd1ZXNzaW5nIHRoYXQncyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBsaWVzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBmdW5kYW1lbnRhbCBjaG9pY2VzIHRoZXJlIHRoYXQgZHJpdmUgdGhlIGJlaGF2aW9yOiB3aGV0aGVyIGl0J3MgZnVsbCBwcmVlbXB0aW9uLCB2b2x1bnRhcnkgcHJlZW1wdGlvbiwgb3IgbWF5YmUgc29tZSBtb3JlIG51YW5jZWQgY29uZmlndXJhdGlvbnMuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0aGUgYXV0aG9ycyBjb25zaWRlcmVkIGNyaXRpY2FsIGluIG1ha2luZyB0aGVpciBkZWNpc2lvbnMuIEl0J3MgcHJvYmFibHkgdGhlIGJhc2lzIHRvIHNlZSB0aGUgaW50ZXItcmVsYXRlZCBpbXBhY3RzIGluIG90aGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCB0b28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNjA1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MTUuNzYyMjE4NzI3WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9LY29uZmlnLnByZWVtcHRcIixcbiAgXCJGaXJzdExpbmVcIjogMTcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTcwOlxcdFxcdCAgd2hpY2ggaXMgdGhlIGxpa2VseSB1c2FnZSBieSBMaW51eCBkaXN0cmlidXRpb25zLCB0aGVyZSBzaG91bGRcXG4gMTcxOlxcdFxcdCAgYmUgbm8gbWVhc3VyYWJsZSBpbXBhY3Qgb24gcGVyZm9ybWFuY2UuXFxuIDE3MjpcXHRcXG4gMTczOlxcdGNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcXG4gMTc0OlxcdFxcdGJvb2wgXFxcIkV4dGVuc2libGUgU2NoZWR1bGluZyBDbGFzc1xcXCJcXG4gMTc1OlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBERUJVR19JTkZPX0JURlxcbiAxNzY6XFx0XFx0c2VsZWN0IFNUQUNLVFJBQ0UgaWYgU1RBQ0tUUkFDRV9TVVBQT1JUXFxuIDE3NzpcXHRcXHRoZWxwXFxuIDE3ODpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgYSBuZXcgc2NoZWR1bGVyIGNsYXNzIHNjaGVkX2V4dCAoU0NYKSwgd2hpY2hcXG4gMTc5OlxcdFxcdCAgYWxsb3dzIHNjaGVkdWxpbmcgcG9saWNpZXMgdG8gYmUgaW1wbGVtZW50ZWQgYXMgQlBGIHByb2dyYW1zIHRvXFxuIDE4MDpcXHRcXHQgIGFjaGlldmUgdGhlIGZvbGxvd2luZzpcXG4gMTgxOlxcdFxcbiAxODI6XFx0XFx0ICAtIEVhc2Ugb2YgZXhwZXJpbWVudGF0aW9uIGFuZCBleHBsb3JhdGlvbjogRW5hYmxpbmcgcmFwaWRcXG4gMTgzOlxcdFxcdCAgICBpdGVyYXRpb24gb2YgbmV3IHNjaGVkdWxpbmcgcG9saWNpZXMuXFxuIDE4NDpcXHRcXHQgIC0gQ3VzdG9taXphdGlvbjogQnVpbGRpbmcgYXBwbGljYXRpb24tc3BlY2lmaWMgc2NoZWR1bGVycyB3aGljaFxcbiAxODU6XFx0XFx0ICAgIGltcGxlbWVudCBwb2xpY2llcyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZSB0byBnZW5lcmFsLXB1cnBvc2VcXG4gMTg2OlxcdFxcdCAgICBzY2hlZHVsZXJzLlxcbiAxODc6XFx0XFx0ICAtIFJhcGlkIHNjaGVkdWxlciBkZXBsb3ltZW50czogTm9uLWRpc3J1cHRpdmUgc3dhcCBvdXRzIG9mXFxuIDE4ODpcXHRcXHQgICAgc2NoZWR1bGluZyBwb2xpY2llcyBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cy5cXG4gMTg5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzoxNS43NjIzMDE3MDdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwMzU3MTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi5cblxuKipNeSBBbmFseXNpcyBvZiBTQ0hFRF9DTEFTU19FWFQgQ29uZmlndXJhdGlvbiBhbmQgQXNzb2NpYXRlZCBGdW5jdGlvbnMqKlxuXG5SaWdodCwgc28gYFNDSEVEX0NMQVNTX0VYVGAgaXMgdGhlIGNvbmZpZ3VyYXRpb24ga2V5IEknbSB3b3JraW5nIHdpdGggaGVyZS4gVGhhdCdzIHRoZSBiYXNlbGluZS4gTm93LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNydWNpYWwgc3ltYm9scyByZWxhdGVkIHRvIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYW5kIGBzY3hfYnBmX2NyZWF0ZV9kc3FgIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJIHNob3VsZCBiZSBmb2N1c2luZyBvbiDigJMgdGhleSBzZWVtIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBleHRlbmRlZCBzY2hlZHVsZXIgY2xhc3MncyBCUEYgaW50ZXJhY3Rpb25zLiBIb2xkIG9uLCB0aG91Z2guIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gU2luY2UgaXQncyBzdGF0aWMsIHRoYXQgbWVhbnMgaXQncyBpbnRlcm5hbCB0byBpdHMgY29tcGlsYXRpb24gdW5pdCBhbmQgbm90IHZpc2libGUgYXMgYSBmb2N1cyBzeW1ib2wgZnJvbSBvdXRzaWRlLiBHb3R0YSBkaXNjb3VudCB0aGF0IG9uZS4gQWxyaWdodCwgbGV0IG1lIGRvdWJsZSBjaGVjayB0aGUgdmlzaWJpbGl0eSBvZiBgZG9fcGlja190YXNrX3NjeGAuLi4gaXQncyB3b3J0aCBhIGxvb2sgdG8gY29uZmlybSBpZiBpdCdzIHN0YXRpYyBvciBub3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTQ1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzoyMC4wNjU4NzU2MjdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTg1NDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX3BpY2tfdGFza19zY3hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTMxNzg9c3RhdGljIHZvaWQgcHV0X3ByZXZfdGFza19zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMjUzLVxcdFxcdCAqIGxvY2FsbHkgcnVubmFibGUgYW5kIGNhbiBsZWdpdGltYXRlbHkgZ28gaWRsZSB3aXRoIEBwIHN0aWxsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMjU0OlxcdFxcdCAqIHJ1bm5hYmxlIChzZWUgZG9fcGlja190YXNrX3NjeCgpKS5cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMyNTUtXFx0XFx0ICovXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM0MTY9c3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNDE3OmRvX3BpY2tfdGFza19zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZiwgYm9vbCBmb3JjZV9zY3gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDE4LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzQ3OT1zdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICpwaWNrX3Rhc2tfc2N4KHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDgwLXtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0ODE6XFx0cmV0dXJuIGRvX3BpY2tfdGFza19zY3gocnEsIHJmLCBmYWxzZSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDgyLX1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQ4Ni0gKlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzQ4NzogKiBVc2UgZG9fcGlja190YXNrX3NjeCgpIGRpcmVjdGx5IHdpdGggQGZvcmNlX3NjeCBlbmFibGVkLCBzaW5jZSB0aGVcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0ODgtICogZGxfc2VydmVyIG11c3QgYWx3YXlzIHNlbGVjdCBhIHNjaGVkX2V4dCB0YXNrLlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNDkxPWV4dF9zZXJ2ZXJfcGlja190YXNrKHN0cnVjdCBzY2hlZF9kbF9lbnRpdHkgKmRsX3NlLCBzdHJ1Y3QgcnFfZmxhZ3MgKnJmKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDk1LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzQ5NjpcXHRyZXR1cm4gZG9fcGlja190YXNrX3NjeChkbF9zZS1cXHUwMDNlcnEsIHJmLCB0cnVlKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0OTctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzoyMC4xMjQ4NzEzOTZaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE1MzQ2ODU4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBMaW5lIG9mIElucXVpcnk6IFN0YXRpYyB2cy4gTm9uLVN0YXRpYyBGdW5jdGlvbnMgaW4gU0NYIGFuZCBCUEYgSW50ZWdyYXRpb24qKlxuXG5Pa2F5LCBzbyBgZG9fcGlja190YXNrX3NjeGAgaXMgZGVmaW5pdGVseSBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQuIE5vdywgSSdtIHR1cm5pbmcgbXkgYXR0ZW50aW9uIHRvIHRoZSBgc2N4X2JwZl9gIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBCUEYgc2lkZSBvZiB0aGluZ3MuIEhtbSwgYHNjeF9icGZfZGVzdHJveV9kc3FgIGxvb2tzIHByb21pc2luZy4gSXQncyBhIGBfX2JwZl9rZnVuY2AgYW5kICpub3QqIHN0YXRpYywgc28gdGhhdCBtYWtlcyBpdCBhIHBvdGVudGlhbCBmb2N1cyBzeW1ib2wgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gTWFrZXMgc2Vuc2UgLSBkZXN0cnVjdGlvbiBsaWtlbHkgbmVlZHMgZXh0ZXJuYWwgYWNjZXNzLlxuXG5Ob3csIHdoYXQgYWJvdXQgYHNjeF9icGZfY3JlYXRlX2RzcWA/IFllcCwgc2FtZSBzdG9yeS4gQWxzbyBhIG5vbi1zdGF0aWMga2Z1bmMsIGFub3RoZXIga2V5IGNhbmRpZGF0ZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVycGxheSBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBhbmQgd2hhdCB0aGV5IGV4cG9zZS5cblxuSSdtIGdldHRpbmcgdGhlIGZlZWxpbmcgSSBtaWdodCBiZSBtaXNzaW5nIHNvbWUgcmVsYXRlZCBmdW5jdGlvbnMsIG9yIHBlcmhhcHMgSSBuZWVkIGEgYnJvYWRlciB2aWV3IG9mIHRoaXMgbW9kdWxlLiBUaW1lIHRvIGJyb2FkZW4gdGhlIHNlYXJjaC4gTGV0J3Mgc2VlLi4uSSdsbCBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9leHQuY2Agc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgYW55dGhpbmcgbm9uLXN0YXRpYyBpbiB0aGF0IGFyZWEuIFRoaXMgc2VlbXMgdG8gYmUgd2hlcmUgdGhlIFNDWC1CUEYgaW50ZWdyYXRpb24gbGl2ZXMuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwMDcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MjYuMjc4MzQzNDUzWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTQyMTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJedm9pZCBbYS16QS1aMC05X10rXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTYzNj11MzIgc2N4X2dldF90YXNrX3N0YXRlKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjQwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NjQxOnZvaWQgc2N4X3NldF90YXNrX3N0YXRlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTMyIHN0YXRlKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjQyLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzA4LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzA5OnZvaWQgc2N4X3Rhc2tfaXRlcl9zdGFydChzdHJ1Y3Qgc2N4X3Rhc2tfaXRlciAqaXRlciwgc3RydWN0IGNncm91cCAqY2dycClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTcxMC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTczMD1zdGF0aWMgdm9pZCBfX3NjeF90YXNrX2l0ZXJfcnFfdW5sb2NrKHN0cnVjdCBzY3hfdGFza19pdGVyICppdGVyKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03NDctICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3NDg6dm9pZCBzY3hfdGFza19pdGVyX3VubG9jayhzdHJ1Y3Qgc2N4X3Rhc2tfaXRlciAqaXRlcilcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc0OS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTc3Mz1zdGF0aWMgdm9pZCBzY3hfdGFza19pdGVyX3JlbG9jayhzdHJ1Y3Qgc2N4X3Rhc2tfaXRlciAqaXRlcixcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkwLSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzkxOnZvaWQgc2N4X3Rhc2tfaXRlcl9zdG9wKHN0cnVjdCBzY3hfdGFza19pdGVyICppdGVyKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkyLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0Mj1zdGF0aWMgdm9pZCBzY2hlZHVsZV9kZWZlcnJlZF9sb2NrZWQoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODI6dm9pZCBzY2hlZHVsZV9kc3FfcmVlbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwODMtXFx0XFx0XFx0dTY0IHJlZW5xX2ZsYWdzLCBzdHJ1Y3QgcnEgKmxvY2tlZF9ycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTMyOD1ib29sIHNjeF9zZXRfdGFza19zbGljZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBzbGljZSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTM0OS0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEzNTA6dm9pZCBzY3hfdGFza19zbGljZV9lbmRlZChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMzUxLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTYzOT1zdGF0aWMgdm9pZCBzY3hfZGlzcGF0Y2hfZW5xdWV1ZShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBycSAqcnEsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE3ODEtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxNzgyOnZvaWQgc2N4X3Rhc2tfdW5saW5rX2Zyb21fZHNxKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNzgzLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTgwMi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE4MDM6dm9pZCBzY3hfZGlzcGF0Y2hfZGVxdWV1ZShzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xODA0LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MjAxNT1ib29sIHNjeF9ycV9vbmxpbmUoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjAyNi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjIwMjc6dm9pZCBzY3hfZG9fZW5xdWV1ZV90YXNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGVucV9mbGFncyxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwMjgtXFx0XFx0XFx0IGludCBzdGlja3lfY3B1KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0yNDEzPXN0YXRpYyB2b2lkIHdha2V1cF9wcmVlbXB0X3NjeChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCB3YWtlX2ZsYWdzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yNDM2LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjQzNzp2b2lkIHNjeF9tb3ZlX2xvY2FsX3Rhc2tfdG9fbG9jYWxfZHNxKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjQzOC1cXHRcXHRcXHRcXHQgICAgICB1NjQgZW5xX2ZsYWdzLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKnNyY19kc3EsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTI4ODM9c3RhdGljIHZvaWQgZmluaXNoX2Rpc3BhdGNoKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yOTUwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mjk1MTp2b2lkIHNjeF9mbHVzaF9kaXNwYXRjaF9idWYoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgcnEgKnJxKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjk1Mi17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM0OTE9ZXh0X3NlcnZlcl9waWNrX3Rhc2soc3RydWN0IHNjaGVkX2RsX2VudGl0eSAqZGxfc2UsIHN0cnVjdCBycV9mbGFncyAqcmYpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MDEtICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNTAyOnZvaWQgZXh0X3NlcnZlcl9pbml0KHN0cnVjdCBycSAqcnEpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNTAzLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzY1Mj1zdGF0aWMgdm9pZCBoYW5kbGVfaG90cGx1ZyhzdHJ1Y3QgcnEgKnJxLCBib29sIG9ubGluZSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzcwMi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM3MDM6dm9pZCBzY3hfcnFfYWN0aXZhdGUoc3RydWN0IHJxICpycSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM3MDQte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNzA3LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzcwODp2b2lkIHNjeF9ycV9kZWFjdGl2YXRlKHN0cnVjdCBycSAqcnEpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNzA5LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9Mzc2OD1zdGF0aWMgdm9pZCBzY3hfd2F0Y2hkb2dfd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzc4Ni1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM3ODc6dm9pZCBzY3hfdGljayhzdHJ1Y3QgcnEgKnJxKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzc4OC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM5MjI9c3RhdGljIHZvaWQgX19zY3hfZW5hYmxlX3Rhc2soc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NTMtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozOTU0OnZvaWQgc2N4X2VuYWJsZV90YXNrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk1NS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM5NjA9c3RhdGljIHZvaWQgc2N4X2Rpc2FibGVfdGFzayhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk4OS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM5OTA6dm9pZCBfX3NjeF9kaXNhYmxlX2FuZF9leGl0X3Rhc2soc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zOTkxLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDAyMy0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQwMjQ6dm9pZCBzY3hfc3ViX2luaXRfY2FuY2VsX3Rhc2soc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MDI1LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDAzNS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQwMzY6dm9pZCBzY3hfZGlzYWJsZV9hbmRfZXhpdF90YXNrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDAzNy17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQwNTYtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0MDU3OnZvaWQgaW5pdF9zY3hfZW50aXR5KHN0cnVjdCBzY2hlZF9leHRfZW50aXR5ICpzY3gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MDU4LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDA4Nj1zdGF0aWMgdm9pZCBzY3hfdGlkX2hhc2hfaW5zZXJ0KHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDA5Ny1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQwOTg6dm9pZCBzY3hfcHJlX2Zvcmsoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDA5OS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQxMDk9aW50IHNjeF9mb3JrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IGtlcm5lbF9jbG9uZV9hcmdzICprYXJncylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDEzNS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQxMzY6dm9pZCBzY3hfcG9zdF9mb3JrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQxMzcte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MTY0LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDE2NTp2b2lkIHNjeF9jYW5jZWxfZm9yayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MTY2LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDE5ND1zdGF0aWMgYm9vbCB0YXNrX2RlYWRfYW5kX2RvbmUoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MjA4LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDIwOTp2b2lkIHNjaGVkX2V4dF9kZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQyMTAte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NzAxPURFRklORV9TVEFUSUNfUEVSQ1BVX1JXU0VNKHNjeF9jZ3JvdXBfb3BzX3J3c2VtKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ3MDItXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NzAzOnZvaWQgc2N4X3RnX2luaXQoc3RydWN0IHRhc2tfZ3JvdXAgKnRnKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDcwNC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ3NjU9aW50IHNjeF90Z19vbmxpbmUoc3RydWN0IHRhc2tfZ3JvdXAgKnRnKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODA3LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDgwODp2b2lkIHNjeF90Z19vZmZsaW5lKHN0cnVjdCB0YXNrX2dyb3VwICp0ZylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ4MDkte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00ODMyPWludCBzY3hfY2dyb3VwX2Nhbl9hdHRhY2goc3RydWN0IGNncm91cF90YXNrc2V0ICp0c2V0KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODkyLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDg5Mzp2b2lkIHNjeF9jZ3JvdXBfbW92ZV90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ4OTQte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTEzLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDkxNDp2b2lkIHNjeF9jZ3JvdXBfY2FuY2VsX2F0dGFjaChzdHJ1Y3QgY2dyb3VwX3Rhc2tzZXQgKnRzZXQpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTE1LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkzMi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5MzM6dm9pZCBzY3hfZ3JvdXBfc2V0X3dlaWdodChzdHJ1Y3QgdGFza19ncm91cCAqdGcsIHVuc2lnbmVkIGxvbmcgd2VpZ2h0KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkzNC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5NDgtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0OTQ5OnZvaWQgc2N4X2dyb3VwX3NldF9pZGxlKHN0cnVjdCB0YXNrX2dyb3VwICp0ZywgYm9vbCBpZGxlKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDk1MC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5NjQtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0OTY1OnZvaWQgc2N4X2dyb3VwX3NldF9iYW5kd2lkdGgoc3RydWN0IHRhc2tfZ3JvdXAgKnRnLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDk2Ni1cXHRcXHRcXHQgICAgIHU2NCBwZXJpb2RfdXMsIHU2NCBxdW90YV91cywgdTY0IGJ1cnN0X3VzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00OTg5PXN0YXRpYyBzdHJ1Y3QgY2dyb3VwICpyb290X2Nncm91cCh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTk4LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDk5OTp2b2lkIHNjeF9jZ3JvdXBfbG9jayh2b2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAwMC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUwMDYtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1MDA3OnZvaWQgc2N4X2Nncm91cF91bmxvY2sodm9pZClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUwMDgte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01NjQxPWJvb2wgc2N4X3JjdV9jcHVfc3RhbGwoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnN0YWxsZWRfbWFzaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTY5Mi0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjU2OTM6dm9pZCBzY3hfc29mdGxvY2t1cCh1MzIgZHVyX3MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01Njk0LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTk2MT1zdGF0aWMgdm9pZCBlbmFibGVfYnlwYXNzX2RzcChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYwMDctLyogbWF5IGJlIGNhbGxlZCB3aXRob3V0IGhvbGRpbmcgc2N4X2J5cGFzc19sb2NrICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2MDA4OnZvaWQgc2N4X2Rpc2FibGVfYnlwYXNzX2RzcChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MDA5LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NjA0Mz1zdGF0aWMgdm9pZCB1bmJ5cGFzc19yZW5vdGlmeV9pZGxlKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBzY3hfc2NoZWQgKnBvcyxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjA4Ny0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjYwODg6dm9pZCBzY3hfYnlwYXNzKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgYm9vbCBieXBhc3MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MDg5LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NjMwMD1zMzIgc2N4X2xpbmtfc2NoZWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MzU0LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NjM1NTp2b2lkIHNjeF91bmxpbmtfc2NoZWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM1Ni17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYzNzYtICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2Mzc3OnZvaWQgc2N4X2Rpc2FibGVfZHVtcChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02Mzc4LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM4Mi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjYzODM6dm9pZCBzY3hfbG9nX3NjaGVkX2Rpc2FibGUoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM4NC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTY2Njc9c3RhdGljIHZvaWQgc2N4X2Rpc2FibGUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBlbnVtIHNjeF9leGl0X2tpbmQga2luZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjY4MS0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjY2ODI6dm9pZCBzY3hfZmx1c2hfZGlzYWJsZV93b3JrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTY2ODMte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz04NTU1PXN0YXRpYyB2b2lkIGtpY2tfY3B1c19pcnFfd29ya2ZuKHN0cnVjdCBpcnFfd29yayAqaXJxX3dvcmspXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2MTUtICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NjE2OnZvaWQgcHJpbnRfc2N4X2luZm8oY29uc3QgY2hhciAqbG9nX2x2bCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODYxNy17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk1Mjk9X19icGZfa2Z1bmMgYm9vbCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCB2dGltZSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU0Mi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk1NDM6dm9pZCBzY3hfa2lja19jcHUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzMzIgY3B1LCB1NjQgZmxhZ3MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTQ0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MjYuMzI3Nzc4ODUyWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MTU1MzA5NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBzY2hlZF9leHQgUmFjZSBDb25kaXRpb24gYW5kIFJlbGV2YW50IENvbmZpZ3VyYXRpb25zKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGNlbnRlcmVkIGFyb3VuZCBpZGVudGlmeWluZyBrZXkgc3ltYm9scyBmb3IgdGhpcyBwYXRjaC4gSSBxdWlja2x5IGhvbmVkIGluIG9uIGBzY3hfYnBmX2NyZWF0ZV9kc3FgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYXMgcG90ZW50aWFsIGZvY3VzIHBvaW50cy4gVGhlbiBJIHJlYWxpemVkIHRoYXQgYHNjeF9icGZfZGVzdHJveV9kc3FgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IGludmFsaWRhdGVzIHRoZSBkc3EsIHdoaWNoIG1hZGUgaXQgYSBwcmltYXJ5IHRhcmdldC4gVGhlIHJhY2UgY29uZGl0aW9uIHNlZW1zIHRvIGJlIGJldHdlZW4gYHNjeF9icGZfZGVzdHJveV9kc3FgIGFuZCBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AsIHRoZSBsYXR0ZXIgYmVpbmcgY2FsbGVkIGJ5IGBydW5fZGVmZXJyZWRgIHdoZW4gYSB0YXNrIGlzIHdva2VuIG9yIGRpc3BhdGNoZWQuIFRoaXMgc29saWRpZmllcyBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYW5kIGBzY3hfYnBmX2NyZWF0ZV9kc3FgIGFzIHRoZSBjZW50cmFsIHN5bWJvbHMgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlLlxuXG5UbyBjb25maXJtIHRoaXMsIEkgY2hlY2tlZCBpZiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgdGhlICpvbmx5KiB3YXkgdG8gZGVzdHJveSBhIGRzcS4gSXQgY2FsbHMgYGRlc3Ryb3lfZHNxYCwgYW5kIHRoZSBvbmx5IG90aGVyIHBsYWNlIGlzIGBzY3hfc2NoZWRfZnJlZV9yY3Vfd29ya2AsIHdoaWNoIGRlc3Ryb3lzICphbGwqIGRzcXMgd2hlbiB0aGUgc2NoZWR1bGVyIGlzIHVubG9hZGVkLiBTbywgYHNjeF9icGZfZGVzdHJveV9kc3FgIGlzIGRlZmluaXRlbHkgYSByZWxldmFudCBzeW1ib2wsIGFzIGlzIGBzY3hfYnBmX2NyZWF0ZV9kc3FgLlxuXG5JIHF1aWNrbHkgdmVyaWZpZWQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25zIGluIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCB0byBlbnN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYW5kIGBzY3hfYnBmX2NyZWF0ZV9kc3FgIHdhcyBjb3JyZWN0LCBhbmQgdGhhdCBgc2N4X2JwZl9kc3FfbnJfcXVldWVkYCB3YXMgYWxzbyBhIGtmdW5jLiBUaGlzIGNlbWVudGVkIHRoZSBmb2N1cyBvbiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuXG5OZXh0LCBJIG5lZWRlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IHdhcyBgU0NIRURfQ0xBU1NfRVhUYCwgYnV0IEkgaW1tZWRpYXRlbHkgcmVhbGl6ZWQgaXQgZGVwZW5kcyBvbiBgQlBGX1NZU0NBTExgLCBhbmQgSSBoYWQgdG8gcmVtZW1iZXIgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncy4gIEkgZG91YmxlLWNoZWNrZWQgdG8gc2VlIGlmIHRoZXJlIHdlcmUgYW55IG90aGVyIGNvbmZpZ3MgSSBzaG91bGQgYWRkIHRvIHRoZSBsaXN0IGFuZCBmb3VuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19CUEZfSklUYC4gIFRoZW4sIEkgY29uc3VsdGVkIGBrZXJuZWwvS2NvbmZpZy5wcmVlbXB0YCB0byBzZWUgdGhlIGRlcGVuZGVuY2llcyBvZiBgU0NIRURfQ0xBU1NfRVhUYC4gVGhpcyBsZWQgbWUgdG8gYWxzbyBpbmNsdWRlIGBERUJVR19JTkZPX0JURmAgYW5kIHRoZSBkZXBlbmRlbmNpZXMsIGJ1dCBzaW5jZSB0aGUgcHJvbXB0IGFza2VkIG1lIHRvIG9ubHkgbGlzdCB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBJIHNlbGVjdGVkIGBTQ0hFRF9DTEFTU19FWFRgLCBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGBERUJVR19JTkZPX0JURmAuXG5cbkZpbmFsbHksIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmIHJlaW5mb3JjZWQgdGhlIGNvcmUgb2YgdGhlIGlzc3VlLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBiZXR3ZWVuIGBkZXN0cm95X2RzcWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gIGBkZXN0cm95X2RzcWAgc2V0cyBgZHNxLVx1MDAzZWlkYCB0byBgU0NYX0RTUV9JTlZBTElEYC4gIFRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBEU1EgaGFzIGJlZW4gaW52YWxpZGF0ZWQuIFRoaXMgaXMgYSBjbGVhciwgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHNjaGVkdWxlcidzIGJlaGF2aW9yLCBhbmQgdGhlIGZvY3VzIHN5bWJvbHMgYW5kIGNvbmZpZ3VyYXRpb25zIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGUgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1ODMsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Nzo0MC40ODMwOTE5NjlaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODk5NTI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0NIRURfQ0xBU1NfRVhUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3hfYnBmX2Rlc3Ryb3lfZHNxXCIsXG4gICAgXCJzY3hfYnBmX2NyZWF0ZV9kc3FcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBzY2hlZF9leHQgY29yZSBiZXR3ZWVuIGRlc3Ryb3lfZHNxKCkgYW5kIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBieSBjaGVja2luZyBpZiB0aGUgRFNRIGhhcyBiZWVuIGludmFsaWRhdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGVCUEYtYmFzZWQgc2NoZWR1bGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNDSEVEX0NMQVNTX0VYVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N4X2JwZl9kZXN0cm95X2RzcVwiLFxuICAgIFwic2N4X2JwZl9jcmVhdGVfZHNxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgc2NoZWRfZXh0IGNvcmUgYmV0d2VlbiBkZXN0cm95X2RzcSgpIGFuZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKCkgYnkgY2hlY2tpbmcgaWYgdGhlIERTUSBoYXMgYmVlbiBpbnZhbGlkYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBlQlBGLWJhc2VkIHNjaGVkdWxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6NDAuNTYyMDk1Nzk3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDY2ODQ4NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6NDAuNTYyNjA3MDE3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk0NjYzMzQwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1heSBoYXZlIGludmFsaWRhdGVkIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKSBiZWZvcmUgaXQgaXMgcHJvY2Vzc2VkIGluIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBUaGUgZml4IGFkZHMgYSBjaGVjayBmb3IgYGRzcS1cXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEYCB0byBza2lwIHRoZSBpbnZhbGlkYXRlZCBxdWV1ZS4gVGhpcyBhZGRyZXNzZXMgYSBsb2dpY2FsIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9pbnZhbGlkIHN0YXRlIGJ1Zywgd2hpY2ggYXJlIHdpdGhpbiB0aGUgc2NvcGUgb2Ygc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3VjaCBhcyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSksIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRhNDU1ZDdiNzU3NGJkNmUwNTAzNDE2ZTExZmYyMjNjOWEwOTk4ZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAwMjo1NjoxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG5pbmRleCAyNmRiYmJmZTVhODc4Li43ZDA5NzIwOWU3NzgwIDEwMDY0NFxuLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuKysrIGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuQEAgLTQ2MzcsNiArNDYzNywxMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXG4gXHRcdC8qIHNlZSBzY2hlZHVsZV9kc3FfcmVlbnEoKSAqL1xuIFx0XHRzbXBfbWIoKTtcbiBcbitcdFx0LyogZGVzdHJveV9kc3EoKSBtYXkgaGF2ZSByYWNlZCBhbmQgaW52YWxpZGF0ZWQgQGRzcSwgbm90aGluZyB0byByZWVucSAqL1xuK1x0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpXG4rXHRcdFx0Y29udGludWU7XG4rXG4gXHRcdEJVR19PTihkc3EtXHUwMDNlaWQgXHUwMDI2IFNDWF9EU1FfRkxBR19CVUlMVElOKTtcbiBcdFx0cmVlbnFfdXNlcihycSwgZHNxLCByZWVucV9mbGFncyk7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Nzo0MC41NjI2MDc5ODdaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1OTQ5OTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgU2NoZWR1bGVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AsIHNwZWNpZmljYWxseSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIFRoZSBjb3JlIGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgYSBjaGVjazogYGlmICh1bmxpa2VseShkc3EtXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEKSkgY29udGludWU7YC4gQWxyaWdodCwgdGhpcyBpcyBhIHJhY2UgY29uZGl0aW9uIGZpeCDigJMgYGRlc3Ryb3lfZHNxKClgIG1pZ2h0IGludmFsaWRhdGUgYGRzcWAgYmVmb3JlIHdlIGdldCB0byBpdC4gTWFrZXMgc2Vuc2UuIElmIGBkc3EtXHUwMDNlaWRgIGlzIGVxdWFsIHRvIGBTQ1hfRFNRX0lOVkFMSURgLCBpdCBza2lwcyB0aGUgYHJlZW5xX3VzZXJgIGNhbGwuXG5cbkluaXRpYWxseSwgSSB0aG91Z2h0IHRoaXMgbWlnaHQgYmUgYWJvdXQgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUsIGJ1dCBpdCdzIGNsZWFybHkgYSB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1ZywgcmlnaHQ/IFdhaXQsIGhvbGQgb24uIEV2ZW4gcmVhZGluZyBgZHNxLVx1MDAzZWlkYCAqYWZ0ZXIqIGBkZXN0cm95X2RzcSgpYCBjb3VsZCBiZSBhIHJlYWQgb2YgZnJlZWQgbWVtb3J5IOKAkyB0aGF0J3MgYSBjbGFzc2ljIFVBRiB0aGF0IEtBU0FOICpzaG91bGQqIGJlIGNhdGNoaW5nLiBPciwgbWF5YmUgaXQncyBqdXN0IGEgbG9naWNhbCBidWcgd2hlcmUgYGRzcS1cdTAwM2VpZGAgaXMgc2V0IHRvIGBTQ1hfRFNRX0lOVkFMSURgLCBidXQgdGhlIG1lbW9yeSBpcyBzdGlsbCB0ZWNobmljYWxseSB2YWxpZCwgcGVyaGFwcyBSQ1UgcHJvdGVjdGVkIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcy4gSW4gZWl0aGVyIGNhc2UsIGl0J3Mgbm90IGFjdHVhbGx5IGFuICp1bmluaXRpYWxpemVkIG1lbW9yeSogcHJvYmxlbS4gSXQncyBqdXN0IGNoZWNraW5nIGBkc3EtXHUwMDNlaWRgLlxuXG5Tbywgbm8sIHRoZXJlJ3Mgbm8gaW5oZXJlbnQgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzayBoZXJlLiBXZSdyZSBqdXN0IGNoZWNraW5nIHRoZSB2YWx1ZSBvZiB0aGUgYGlkYCBmaWVsZC4gSSdtIGNvbmZpZGVudCBlbm91Z2ggdG8gbWFyayBgTmVlZHNLTVNBTmAgYXMgZmFsc2UgZm9yIHRoaXMgY2hhbmdlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGFnYWluIHRvIGNvbmZpcm0gdGhhdCBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy4uLiAqY2hlY2tzIGNvZGUqLi4uIFllcCwgbG9va3MgZ29vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU3OjQ1LjYyMjEwOTUzN1oiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwNzY0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA4Mj12b2lkIHNjaGVkdWxlX2RzcV9yZWVucShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMTMzLVxcdFxcdC8qXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMTM0OlxcdFxcdCAqIFBhaXJzIHdpdGggc21wX21iKCkgaW4gcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycygpIGFuZFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTEzNS1cXHRcXHQgKiBndWFyYW50ZWVzIHRoYXQgdGhlcmUgaXMgYSByZWVucV91c2VyKCkgYWZ0ZXJ3YXJkcy5cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDUzNT1zdGF0aWMgdm9pZCByZWVucV91c2VyKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLCB1NjQgcmVlbnFfZmxhZ3MpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2MTAtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NjExOnN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2MTIte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NjQ5PXN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NjU2LVxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2cnEtXFx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2VycykpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NjU3OlxcdFxcdHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMocnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY1OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6NDUuNjcxMTkxMDY1WiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTc3Mjk3OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IHNwZWNpZmljIGlzc3VlLiBJdCBsb29rcyBsaWtlIHRoZSBgZGVzdHJveV9kc3EoKWAgZnVuY3Rpb24gaGFzIGEgc2lkZSBlZmZlY3Q6IGl0IGludmFsaWRhdGVzIHRoZSBgZHNxYCBvYmplY3QuIFRoZSBhZGRlZCBjaGVjaywgYGlmICh1bmxpa2VseShkc3EtXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEKSlgLCBzdWdnZXN0cyB0aGV5J3JlIHRyeWluZyB0byBwcmV2ZW50IGEgVXNlLUFmdGVyLUludmFsaWRhdGUgKFVBSSkgc2NlbmFyaW8sIG5vdCBhIFVzZS1BZnRlci1GcmVlIChVQUYpIGlzc3VlLiBNeSBpbml0aWFsIHJlYWQgaXMgdGhhdCB0aGlzIGlzIGEgbG9naWNhbCBlcnJvciBvciwgbW9yZSBsaWtlbHksIGEgcmFjZSBjb25kaXRpb24sIHJhdGhlciB0aGFuIGEgc3RyYWlnaHRmb3J3YXJkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHByb2JsZW0uXG5cbkdpdmVuIHRoYXQgS0FTQU4gb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyAqc2hvdWxkKiBoYXZlIGZsYWdnZWQgYSBVQUYgaWYgdGhlIG1lbW9yeSB3YXMgYWN0dWFsbHkgZnJlZWQsIGJ1dCB0aGV5IGRpZG4ndCwgaXQgcmVhbGx5IHBvaW50cyB0byB0aGUgb2JqZWN0IGp1c3QgYmVpbmcgbWFya2VkIGFzIGludmFsaWQgYWZ0ZXIgdGhlIGBkZXN0cm95X2RzcSgpYCBjYWxsLiBBbmQgc2luY2UgdGhlIGZpeCBpcyBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgZm9yIHRoZSBpbnZhbGlkIHN0YXRlIGFuZCBkb2Vzbid0IGFwcGVhciB0byByZWFkIG9yIGNvcHkgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOYCB0byBmYWxzZS4gVGhpcyBpcyBhIHRhcmdldGVkIGZpeCB0byBlbnN1cmUgdGhlIHByb2dyYW0gY29ycmVjdGx5IGhhbmRsZXMgdGhlIGludmFsaWRhdGVkIHN0YXRlLCByYXRoZXIgdGhhbiBhIGJyb2FkIGluaXRpYWxpemF0aW9uIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE0LCJPdXRwdXRUb2tlbnMiOjE2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Nzo1MC4wMjg5MjMxNDVaIiwiU2VxIjo0NSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1heSBoYXZlIGludmFsaWRhdGVkIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKSBiZWZvcmUgaXQgaXMgcHJvY2Vzc2VkIGluIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBUaGUgZml4IGFkZHMgYSBjaGVjayBmb3IgYGRzcS1cXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEYCB0byBza2lwIHRoZSBpbnZhbGlkYXRlZCBxdWV1ZS4gVGhpcyBhZGRyZXNzZXMgYSBsb2dpY2FsIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9pbnZhbGlkIHN0YXRlIGJ1Zywgd2hpY2ggYXJlIHdpdGhpbiB0aGUgc2NvcGUgb2Ygc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3VjaCBhcyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSksIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1heSBoYXZlIGludmFsaWRhdGVkIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKSBiZWZvcmUgaXQgaXMgcHJvY2Vzc2VkIGluIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBUaGUgZml4IGFkZHMgYSBjaGVjayBmb3IgYGRzcS1cXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEYCB0byBza2lwIHRoZSBpbnZhbGlkYXRlZCBxdWV1ZS4gVGhpcyBhZGRyZXNzZXMgYSBsb2dpY2FsIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9pbnZhbGlkIHN0YXRlIGJ1Zywgd2hpY2ggYXJlIHdpdGhpbiB0aGUgc2NvcGUgb2Ygc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3VjaCBhcyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSksIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workfloww9bzx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-15 02:30:04 +0000 UTC FinishedAt: 2026-08-15 02:57: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": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SCHED_CLASS_EXT", "BPF_SYSCALL", "BPF_JIT", "DEBUG_INFO_BTF" ], "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": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SCHED_CLASS_EXT", "BPF_SYSCALL", "BPF_JIT", "DEBUG_INFO_BTF" ], "series_id": "b2244fe5-c02f-4b4e-ab89-4f16d218e685" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "scx_bpf_destroy_dsq", "scx_bpf_create_dsq" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NDSEVEX0NMQVNTX0VYVCYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N4X2JwZl9kZXN0cm95X2RzcSYjMzQ7LAogICAgJiMzNDtzY3hfYnBmX2NyZWF0ZV9kc3EmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCBtYXkgaGF2ZSBpbnZhbGlkYXRlZCBhIGRpc3BhdGNoIHF1ZXVlIChgZHNxYCkgYmVmb3JlIGl0IGlzIHByb2Nlc3NlZCBpbiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycygpYC4gVGhlIGZpeCBhZGRzIGEgY2hlY2sgZm9yIGBkc3EtXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEYCB0byBza2lwIHRoZSBpbnZhbGlkYXRlZCBxdWV1ZS4gVGhpcyBhZGRyZXNzZXMgYSBsb2dpY2FsIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9pbnZhbGlkIHN0YXRlIGJ1Zywgd2hpY2ggYXJlIHdpdGhpbiB0aGUgc2NvcGUgb2Ygc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3VjaCBhcyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSksIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBzY2hlZF9leHQgY29yZSBiZXR3ZWVuIGRlc3Ryb3lfZHNxKCkgYW5kIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBieSBjaGVja2luZyBpZiB0aGUgRFNRIGhhcyBiZWVuIGludmFsaWRhdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGVCUEYtYmFzZWQgc2NoZWR1bGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGE0NTVkN2I3NTc0YmQ2ZTA1MDM0MTZlMTFmZjIyM2M5YTA5OThlN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDAyOjU2OjEzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG5pbmRleCAyNmRiYmJmZTVhODc4Li43ZDA5NzIwOWU3NzgwIDEwMDY0NFxuLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuQEAgLTQ2MzcsNiAmIzQzOzQ2MzcsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxuIFx0XHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cbiBcdFx0c21wX21iKCk7XG4gXG4mIzQzO1x0XHQvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovXG4mIzQzO1x0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiBcdFx0QlVHX09OKGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pO1xuIFx0XHRyZWVucV91c2VyKHJxLCBkc3EsIHJlZW5xX2ZsYWdzKTtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U0NIRURfQ0xBU1NfRVhUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3hfYnBmX2Rlc3Ryb3lfZHNxJiMzNDssCiAgICAmIzM0O3NjeF9icGZfY3JlYXRlX2RzcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBzY2hlZF9leHQgY29yZSBiZXR3ZWVuIGRlc3Ryb3lfZHNxKCkgYW5kIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBieSBjaGVja2luZyBpZiB0aGUgRFNRIGhhcyBiZWVuIGludmFsaWRhdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGVCUEYtYmFzZWQgc2NoZWR1bGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGE0NTVkN2I3NTc0YmQ2ZTA1MDM0MTZlMTFmZjIyM2M5YTA5OThlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDAyOjU2OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMKaW5kZXggMjZkYmJiZmU1YTg3OC4uN2QwOTcyMDllNzc4MCAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jCkBAIC00NjM3LDYgJiM0Mzs0NjM3LDEwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSkKIAkJLyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovCiAJCXNtcF9tYigpOwogCiYjNDM7CQkvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovCiYjNDM7CQlpZiAodW5saWtlbHkoZHNxLSZndDtpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwogCQlCVUdfT04oZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTik7CiAJCXJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyMwoJCQkJCQkJb3V0cHV0OiA3MAoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTY2hlZHVsZXIgRXh0ZW5zaW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AuIFNlZW1zIGxpa2Ugd2UgaGF2ZSBhIGNyaXRpY2FsIGZpeCBoZXJlLCBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBgc2NoZWRfZXh0YCAoZUJQRi1iYXNlZCBzY2hlZHVsZXIpIGltcGxlbWVudGF0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2hlY2sgaW4gYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKWA6IGBpZiAodW5saWtlbHkoZHNxLSZndDtpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKSBjb250aW51ZTtgLiBTbWFydCBtb3ZlLiBUaGlzIHN1Z2dlc3RzIGBkZXN0cm95X2RzcSgpYCBjb3VsZCBiZSByYWNpbmcgd2l0aCB0aGUgcmUtZW5xdWV1aW5nIGxvZ2ljLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gaWYgdGhlIGBkc3FgIChkZWZlcnJlZCBzY2hlZHVsaW5nIHF1ZXVlKSBnZXRzIGludmFsaWRhdGVkLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhIGJpdCBiZXR0ZXIuIFRvIGdldCBhIGhhbmRsZSBvbiB0aGlzLCBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBmaWd1cmUgb3V0IGhvdyBgc2NoZWRfZXh0YCBpcyBlbmFibGVkLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIGJvdGggdGhlIGZ1bmN0aW9uIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBpdHNlbGYgdG8gc2VlIHdoZXJlIGl0JiMzOTtzIHVzZWQgYW5kIGFsc28gbG9vayBmb3IgYW55IGNvbmZpZyBzeW1ib2xzIHJlbGF0ZWQgdG8gYFNDSEVEX0NMQVNTX0VYVGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBzZWUgaG93IHRoZSB3aG9sZSBzY2hlZHVsZXIgZXh0ZW5zaW9uIGdldHMgY29uZmlndXJlZCBhbmQgYnVpbHQuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgd2lsbCByZWFsbHkgaGVscCB0byBmaWd1cmUgb3V0IHRoZSB1c2UgY2FzZSBmb3IgdGhpcyBwYXRjaCBhbmQgaG93IGxpa2VseSB0aGlzIHJhY2UgY29uZGl0aW9uIGlzIHRvIG9jY3VyIGluIHJlYWwtd29ybGQgc2NlbmFyaW9zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA4Mj12b2lkIHNjaGVkdWxlX2RzcV9yZWVucShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTEzMy1cdFx0Lypcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTEzNDpcdFx0ICogUGFpcnMgd2l0aCBzbXBfbWIoKSBpbiBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKCkgYW5kXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMzUtXHRcdCAqIGd1YXJhbnRlZXMgdGhhdCB0aGVyZSBpcyBhIHJlZW5xX3VzZXIoKSBhZnRlcndhcmRzLlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDUzNT1zdGF0aWMgdm9pZCByZWVucV91c2VyKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLCB1NjQgcmVlbnFfZmxhZ3MpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NjEwLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NjExOnN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDYxMi17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NjQ5PXN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY1Ni1cdGlmICghbGlzdF9lbXB0eShcdTAwMjZycS1cdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMpKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NjU3Olx0XHRwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQ0hFRF9DTEFTU19FWFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipMb2NhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gYGtlcm5lbC9zY2hlZC9leHQvZXh0LmNgLiBUaGlzIGlzbiYjMzk7dCBhIGNvZGluZyBwcm9ibGVtICpwZXIgc2UqLCBtb3JlIG9mIGEgY29uZmlndXJhdGlvbiBhbmQgYnVpbGQgc3lzdGVtIGlzc3VlLiBXaGVyZSBkbyBJIHN0YXJ0PyBXZWxsLCBgZXh0LmNgIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgcGFydCBvZiB0aGUgJiMzNDtleHQmIzM0OyAob3IgJiMzNDtleHRlbmRlZCYjMzQ7KSBzY2hlZHVsZXIsIGxpa2VseSBhIENQVSBzY2hlZHVsZXIgZXh0ZW5zaW9uLCBzbyBJJiMzOTttIGFscmVhZHkgdXNpbmcgbXkgZG9tYWluIGtub3dsZWRnZSB0byBzdGFydCBtYWtpbmcgc29tZSBlZHVjYXRlZCBndWVzc2VzLgoKRmlyc3QgaW5zdGluY3Q6IGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyAqYWx3YXlzKiB0aGUgcGxhY2UgdG8gYmVnaW4gd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb24uIEnigJlsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGxvb2sgaW4uIEl0JiMzOTtzIHByb2JhYmx5IHNvbWV3aGVyZSB1bmRlciBga2VybmVsL3NjaGVkL2AsIGJ1dCBwb3RlbnRpYWxseSBhIGRlZXBlciBsZXZlbCBpbiB0aGUgZGlyZWN0b3J5IHRyZWUgaWYgaXQgaXMgcmVhbGx5ICYjMzk7ZXh0ZW5kZWQmIzM5Oy4gSSB3b3VsZCBiZSBsb29raW5nIGZvciBzb21ldGhpbmcgdGhhdCBpcyBuYW1lZCBgS2NvbmZpZ2Agb3IgYENvbmZpZ2AuIAoKTmV4dCBzdGVwLCBJJiMzOTtkIHByb2JhYmx5IHVzZSBgZmluZGAgb3IgYGdyZXBgIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIGEgYEtjb25maWdgIGZpbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGBleHQuY2Agb3IgcGFydHMgb2YgaXQsIGxpa2UgYGV4dGAgb3IgYHNjaGVkYC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIGEgdmVyeSBicm9hZCBzZWFyY2ggYW5kIHRoZW4gbmFycm93IGRvd24gbXkgcmVzdWx0cy4gSeKAmWQgYmUgdGhpbmtpbmcgYWJvdXQgY29tbWFuZC1saW5lIHRvb2xzIHN1Y2ggYXMgYGZpbmRgLCBgZ3JlcGAgYW5kIHBvc3NpYmx5IGBhd2tgIHRvIG5hcnJvdyBkb3duIHRoZSBzZWFyY2guIEhvcGVmdWxseSwgdGhlIGZpbGUgd2lsbCBiZSB3ZWxsLWNvbW1lbnRlZC4KCk9uY2UgSSYjMzk7dmUgZm91bmQgYSBsaWtlbHkgYEtjb25maWdgIGZpbGUsIEkmIzM5O2xsIGV4YW1pbmUgaXQgY2FyZWZ1bGx5LiBJJiMzOTttIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgdXN1YWxseSBkZWZpbmVkIHVzaW5nIGBjb25maWcgJmx0O3N5bWJvbCZndDtgIGRpcmVjdGl2ZXMsIHdpdGggYXNzb2NpYXRlZCBkZXNjcmlwdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVGhlIGRlcGVuZGVuY2llcyBhcmUga2V5OyB0aGV5JiMzOTtsbCB0ZWxsIG1lIHdoZW4gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIHRoZSBzY2hlZHVsZXIgaXMgZXZlbiBpbmNsdWRlZCwgb3IgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgdGhlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgdGhpcyBjb2RlLiBJIG1heSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgdG8gb3RoZXIgYEtjb25maWdgIGZpbGVzIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBsYXllcnMgb2YgYWJzdHJhY3Rpb24uCgpGaW5hbGx5LCBJ4oCZbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIG9mIHRoZXNlIHN5bWJvbHMgYW5kIHRoZSBidWlsZCBwcm9jZXNzLiBJJiMzOTtsbCBsaWtlbHkgbmVlZCB0byBjb25zdWx0IHRoZSBidWlsZCBzeXN0ZW0gZG9jdW1lbnRhdGlvbiwgc3VjaCBhcyB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeS4gSSBjYW4gcHJvYmFibHkgZmlndXJlIHRoaXMgb3V0IGJ5IGxvb2tpbmcgYXQgaG93IHRoZSBidWlsZCBzeXN0ZW0gaW5jbHVkZXMgYW5kIGV4Y2x1ZGVzIHNwZWNpZmljIGZpbGVzIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbHMuIFRoaXMgbWlnaHQgaW52b2x2ZSBsb29raW5nIGF0IHRoaW5ncyBsaWtlIGAjaWZkZWZgIHN0YXRlbWVudHMgd2l0aGluIHRoZSBjb2RlLCBhbmQgdW5kZXJzdGFuZGluZyBob3cgdGhlIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIGFyZSBtYXBwZWQgdG8ga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSWYgdGhpcyBpcyBhIGRyaXZlciwgdGhlIG1vZHVsZSBtaWdodCBuZWVkIHRoZSBgbW9kdWxlYCBvcHRpb24gdG8gYmUgc2V0LiBUaGlzIGlzIGEgYml0IG9mIGEgYnJlYWRjcnVtYiBodW50LCByZWFsbHksIGJ1dCB0aGUgKktjb25maWcqIGZpbGVzIGFyZSB0aGUgbWFwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NzYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpcmVjdGluZyBNeSBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgc2NoZWR1bGVyIGJ1aWxkIHByb2Nlc3MuIEluc3RlYWQgb2Ygd2FkaW5nIHRocm91Z2ggcG90ZW50aWFsbHkgdW5yZWxhdGVkIGRvY3VtZW50YXRpb24gb3IgYmxpbmRseSBzZWFyY2hpbmcsIEkmIzM5O20gZ29pbmcgdG8gZ28gcmlnaHQgdG8gdGhlIHNvdXJjZS4gVGhlIGBrZXJuZWwvc2NoZWQvYCBkaXJlY3RvcnkgaXMgd2hlcmUgdGhlIHNjaGVkdWxlciBjb2RlIGxpdmVzLCBhbmQgdGhlIGBNYWtlZmlsZWAgaW4gdGhhdCBkaXJlY3RvcnkgaXMgdGhlIGJ1aWxkIGluc3RydWN0aW9ucy4gU2VlbXMgbG9naWNhbCB0byBjaGVjayBga2VybmVsL3NjaGVkL01ha2VmaWxlYCBkaXJlY3RseS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY3JpdGljYWwgaW5mb3JtYXRpb24gb24gaG93IHRob3NlIHNjaGVkdWxlciBjb21wb25lbnRzIGFyZSBjb21waWxlZCBhbmQgbGlua2VkIHNob3VsZCByZXNpZGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4gSSYjMzk7bSBob3BpbmcgSSBjYW4gZmluZCB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IgcXVpY2tseSB0aGlzIHdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0Q09OVEVYVF9BTkFMWVNJU19jb3JlLm8gOj0geVxuICAgNDpcdENPTlRFWFRfQU5BTFlTSVNfZmFpci5vIDo9IHlcbiAgIDU6XHRcbiAgIDY6XHQjIFRoZSBjb21waWxlcnMgYXJlIGNvbXBsYWluaW5nIGFib3V0IHVudXNlZCB2YXJpYWJsZXMgaW5zaWRlIGFuIGlmKDApIHNjb3BlXG4gICA3Olx0IyBibG9jay4gVGhpcyBpcyBkYWZ0LCBzaHV0IHRoZW0gdXAuXG4gICA4Olx0Y2NmbGFncy15ICYjNDM7PSAkKGNhbGwgY2MtZGlzYWJsZS13YXJuaW5nLCB1bnVzZWQtYnV0LXNldC12YXJpYWJsZSlcbiAgIDk6XHRcbiAgMTA6XHQjIFRoZXNlIGZpbGVzIGFyZSBkaXNhYmxlZCBiZWNhdXNlIHRoZXkgcHJvZHVjZSBub24taW50ZXJlc3RpbmcgZmxha3kgY292ZXJhZ2VcbiAgMTE6XHQjIHRoYXQgaXMgbm90IGEgZnVuY3Rpb24gb2Ygc3lzY2FsbCBpbnB1dHMuIEUuZy4gaW52b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlcy5cbiAgMTI6XHRLQ09WX0lOU1RSVU1FTlQgOj0gblxuICAxMzpcdFxuICAxNDpcdCMgRGlzYWJsZSBLQ1NBTiB0byBhdm9pZCBleGNlc3NpdmUgbm9pc2UgYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uLiBUbyBhdm9pZFxuICAxNTpcdCMgZmFsc2UgcG9zaXRpdmVzIGVuc3VyZSBiYXJyaWVycyBpbXBsaWVkIGJ5IHNjaGVkIGZ1bmN0aW9ucyBhcmUgaW5zdHJ1bWVudGVkLlxuICAxNjpcdEtDU0FOX1NBTklUSVpFIDo9IG5cbiAgMTc6XHRLQ1NBTl9JTlNUUlVNRU5UX0JBUlJJRVJTIDo9IHlcbiAgMTg6XHRcbiAgMTk6XHRpZm5lcSAoJChDT05GSUdfU0NIRURfT01JVF9GUkFNRV9QT0lOVEVSKSx5KVxuICAyMDpcdCMgQWNjb3JkaW5nIHRvIEFsYW4gTW9kcmEgXHUwMDNjYWxhbkBsaW51eGNhcmUuY29tLmF1XHUwMDNlLCB0aGUgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgaXNcbiAgMjE6XHQjIG5lZWRlZCBmb3IgeDg2IG9ubHkuICBXaHkgdGhpcyB1c2VkIHRvIGJlIGVuYWJsZWQgZm9yIGFsbCBhcmNoaXRlY3R1cmVzIGlzIGJleW9uZFxuICAyMjpcdCMgbWUuICBJIHN1c3BlY3QgbW9zdCBwbGF0Zm9ybXMgZG9uJiMzOTt0IG5lZWQgdGhpcywgYnV0IHVudGlsIHdlIGtub3cgdGhhdCBmb3Igc3VyZVxuICAyMzpcdCMgSSB0dXJuIHRoaXMgb2ZmIGZvciBJQS02NCBvbmx5LiAgQW5kcmVhcyBTY2h3YWIgc2F5cyBpdCYjMzk7cyBhbHNvIG5lZWRlZCBvbiBtNjhrXG4gIDI0Olx0IyB0byBnZXQgYSBjb3JyZWN0IHZhbHVlIGZvciB0aGUgd2FpdC1jaGFubmVsIChXQ0hBTiBpbiBwcykuIC0tZGF2aWRtXG4gIDI1Olx0Q0ZMQUdTX2NvcmUubyA6PSAkKFBST0ZJTElORykgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbiAgMjY6XHRlbmRpZlxuICAyNzpcdFxuICAyODpcdCMgQnJhbmNoIHByb2ZpbGluZyBpc24mIzM5O3Qgbm9pbnN0ci1zYWZlXG4gIDI5Olx0aWZkZWYgQ09ORklHX1RSQUNFX0JSQU5DSF9QUk9GSUxJTkdcbiAgMzA6XHRDRkxBR1NfYnVpbGRfcG9saWN5Lm8gJiM0Mzs9IC1ERElTQUJMRV9CUkFOQ0hfUFJPRklMSU5HXG4gIDMxOlx0Q0ZMQUdTX2J1aWxkX3V0aWxpdHkubyAmIzQzOz0gLURESVNBQkxFX0JSQU5DSF9QUk9GSUxJTkdcbiAgMzI6XHRlbmRpZlxuICAzMzpcdCNcbiAgMzQ6XHQjIEJ1aWxkIGVmZmljaWVuY3k6XG4gIDM1Olx0I1xuICAzNjpcdCMgVGhlc2UgY29tcGlsYXRpb24gdW5pdHMgaGF2ZSByb3VnaGx5IHRoZSBzYW1lIHNpemUgYW5kIGNvbXBsZXhpdHkgLSBzbyB0aGVpclxuICAzNzpcdCMgYnVpbGQgcGFyYWxsZWxpemVzIHdlbGwgYW5kIGZpbmlzaGVzIHJvdWdobHkgYXQgb25jZTpcbiAgMzg6XHQjXG4gIDM5Olx0b2JqLXkgJiM0Mzs9IGNvcmUub1xuICA0MDpcdG9iai15ICYjNDM7PSBmYWlyLm9cbiAgNDE6XHRvYmoteSAmIzQzOz0gYnVpbGRfcG9saWN5Lm9cbiAgNDI6XHRvYmoteSAmIzQzOz0gYnVpbGRfdXRpbGl0eS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKk5hdmlnYXRpbmcgdGhlIFNjaGVkdWxlciYjMzk7cyBMYWJ5cmludGgqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIHRocm91Z2ggdGhlIGtlcm5lbCBzY2hlZHVsZXIgY29kZSBhZ2FpbiwgYW5kIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGBleHQuY2AgZmlsZS4gV2FpdCBhIG1pbnV0ZS4uLiB0aGF0IGBleHQuY2AgZmlsZSAqc2hvdWxkbiYjMzk7dCogYmUgZGlyZWN0bHkgaW4gYGtlcm5lbC9zY2hlZC9gLCBiZWNhdXNlIGl0JiMzOTtzIGEgc3ViLWNvbXBvbmVudC4gSSYjMzk7dmUgZ290IHRvIGJhY2t0cmFjayBhbmQgY2hlY2sgdGhlIHJlbGV2YW50IE1ha2VmaWxlcy4gSSBiZXQgaXQmIzM5O3MgYWN0dWFsbHkgZGVmaW5lZCBlaXRoZXIgaW4gYGtlcm5lbC9zY2hlZC9leHQvTWFrZWZpbGVgIG9yIG1heWJlIGV2ZW4gaGlnaGVyIHVwIGluIGBrZXJuZWwvc2NoZWQvTWFrZWZpbGVgLiBMZXQgbWUganVtcCBvdmVyIHRoZXJlIGFuZCBzZWUgd2hhdCYjMzk7cyBpbmNsdWRlZC4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZWJhc2U7IEkgc2hvdWxkIGhhdmUgdGhvdWdodCBvZiBjaGVja2luZyB0aGUgTWFrZWZpbGVzIGZpcnN0LCBiZWZvcmUgZGl2aW5nIGRvd24gYSBwb3RlbnRpYWxseSBmcnVpdGxlc3Mgc2VhcmNoLiBUaW1lIHRvIHRyYWNlIHRoZSBpbmNsdWRlcy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0b2JqLXkgJiM0Mzs9IGZhaXIub1xuICA0MTpcdG9iai15ICYjNDM7PSBidWlsZF9wb2xpY3kub1xuICA0MjpcdG9iai15ICYjNDM7PSBidWlsZF91dGlsaXR5Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2NwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBleHQub2AgaW4gdGhlIFNjaGVkdWxlciBDb2RlYmFzZSoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IGBleHQub2AsIGxpa2VseSBhIGNvbXBpbGVkIG9iamVjdCBmaWxlIHJlbGF0ZWQgdG8gc2NoZWR1bGluZy4gR2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwmIzM5O3Mgc3RydWN0dXJlLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBzb3VyY2UgZGlyZWN0b3JpZXMuIFRoZSBuYW1lIHN1Z2dlc3RzIGl0JiMzOTtzIGFuIGV4dGVuc2lvbiwgcG9zc2libHkgYSBtb2R1bGUgb3IgcGFydCBvZiBhIG1vcmUgc3BlY2lhbGl6ZWQgc2NoZWR1bGVyLiBUaGVyZWZvcmUsIG15IGluaXRpYWwgc2VhcmNoIHdpbGwgYmUgZm9jdXNlZCBhcm91bmQgYGtlcm5lbC9zY2hlZC9gIGFuZCBpdHMgcG90ZW50aWFsIHN1YmRpcmVjdG9yaWVzLCBwYXJ0aWN1bGFybHkgYGtlcm5lbC9zY2hlZC9leHQvYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGFueSBzY2hlZHVsaW5nIGV4dGVuc2lvbnMgaW1wbGVtZW50ZWQuCgpUbyBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLCBpdCYjMzk7cyBub3QgZW5vdWdoIHRvIGxvb2sganVzdCBmb3IgdGhlIHNvdXJjZTsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBidWlsZCBzeXN0ZW0gaW50ZWdyYXRlcyB0aGlzIG9iamVjdC4gVGhlcmVmb3JlLCBhIHF1aWNrIGdyZXAgdGhyb3VnaCB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgc2NoZWR1bGluZyBkaXJlY3RvcmllcyBpcyBhIG11c3QuIEtub3dpbmcgdGhlIGJ1aWxkIHJ1bGVzIHdpbGwgY2xhcmlmeSBob3cgYGV4dC5vYCBpcyBjb21waWxlZCwgbGlua2VkLCBhbmQgaW5jb3Jwb3JhdGVkIGludG8gdGhlIG92ZXJhbGwga2VybmVsIGltYWdlLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGNvbnRleHR1YWxpemUgdGhlIG9iamVjdCBhbmQgaXRzIHB1cnBvc2UuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0YXJnZXQgcnVsZXMuIEhvcGVmdWxseSwgdGhpcyBzaG91bGQgbGVhZCBtZSB0byB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIGFuZCBwcm92aWRlIGEgY2xlYXIgaWRlYSBvZiB3aGF0IGBleHQub2AgZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2F1dG9ncm91cC5jJiMzNDssCiAgICAmIzM0O2F1dG9ncm91cC5oJiMzNDssCiAgICAmIzM0O2J1aWxkX3BvbGljeS5jJiMzNDssCiAgICAmIzM0O2J1aWxkX3V0aWxpdHkuYyYjMzQ7LAogICAgJiMzNDtjbG9jay5jJiMzNDssCiAgICAmIzM0O2NvbXBsZXRpb24uYyYjMzQ7LAogICAgJiMzNDtjb3JlLmMmIzM0OywKICAgICYjMzQ7Y29yZV9zY2hlZC5jJiMzNDssCiAgICAmIzM0O2NwdWFjY3QuYyYjMzQ7LAogICAgJiMzNDtjcHVkZWFkbGluZS5jJiMzNDssCiAgICAmIzM0O2NwdWRlYWRsaW5lLmgmIzM0OywKICAgICYjMzQ7Y3B1ZnJlcS5jJiMzNDssCiAgICAmIzM0O2NwdWZyZXFfc2NoZWR1dGlsLmMmIzM0OywKICAgICYjMzQ7Y3B1cHJpLmMmIzM0OywKICAgICYjMzQ7Y3B1cHJpLmgmIzM0OywKICAgICYjMzQ7Y3B1dGltZS5jJiMzNDssCiAgICAmIzM0O2RlYWRsaW5lLmMmIzM0OywKICAgICYjMzQ7ZGVidWcuYyYjMzQ7LAogICAgJiMzNDtmYWlyLmMmIzM0OywKICAgICYjMzQ7ZmVhdHVyZXMuaCYjMzQ7LAogICAgJiMzNDtpZGxlLmMmIzM0OywKICAgICYjMzQ7aXNvbGF0aW9uLmMmIzM0OywKICAgICYjMzQ7bG9hZGF2Zy5jJiMzNDssCiAgICAmIzM0O21lbWJhcnJpZXIuYyYjMzQ7LAogICAgJiMzNDtwZWx0LmMmIzM0OywKICAgICYjMzQ7cGVsdC5oJiMzNDssCiAgICAmIzM0O3BzaS5jJiMzNDssCiAgICAmIzM0O3JxLW9mZnNldHMuYyYjMzQ7LAogICAgJiMzNDtydC5jJiMzNDssCiAgICAmIzM0O3NjaGVkLXBlbHQuaCYjMzQ7LAogICAgJiMzNDtzY2hlZC5oJiMzNDssCiAgICAmIzM0O3NtcC5oJiMzNDssCiAgICAmIzM0O3N0YXRzLmMmIzM0OywKICAgICYjMzQ7c3RhdHMuaCYjMzQ7LAogICAgJiMzNDtzdG9wX3Rhc2suYyYjMzQ7LAogICAgJiMzNDtzd2FpdC5jJiMzNDssCiAgICAmIzM0O3N5c2NhbGxzLmMmIzM0OywKICAgICYjMzQ7dG9wb2xvZ3kuYyYjMzQ7LAogICAgJiMzNDt3YWl0LmMmIzM0OywKICAgICYjMzQ7d2FpdF9iaXQuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDtleHQmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDA3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlNlYXJjaGluZyBmb3IgYGV4dC5vYCBpbiB0aGUgU2NoZWR1bGVyIEV4dGVuc2lvbiBCdWlsZCBTeXN0ZW0qKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gd2hlcmUgYGV4dC5vYCBpcyBiZWluZyBidWlsdC4gU2luY2UgSSYjMzk7bSB3b3JraW5nIHdpdGggdGhlIGtlcm5lbCYjMzk7cyBzY2hlZHVsZXIgZXh0ZW5zaW9uLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYnVpbGQgc3lzdGVtIGZpbGVzIHNwZWNpZmljIHRvIHRoYXQgbW9kdWxlLiBMZXQmIzM5O3Mgc2VlLi4uIGBrZXJuZWwvc2NoZWQvZXh0L01ha2VmaWxlYCBpcyB0aGUgb2J2aW91cyBmaXJzdCBzdG9wLiBUaGF0IGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIHJ1bGVzIGZvciBidWlsZGluZyB0aGUgYC5vYCBmaWxlcywgc28gaWYgaXQmIzM5O3MgdGhlcmUsIGdyZWF0LiBJZiBub3QsIGl0JiMzOTtzIHBvc3NpYmxlIHRoYXQgdGhlIG9iamVjdCBpcyBvbmx5IGNvbmRpdGlvbmFsbHkgYnVpbHQsIGJhc2VkIG9uIGEgS2NvbmZpZyBvcHRpb24uIEluIHRoYXQgY2FzZSwgSSBzaG91bGQgdGhlbiBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9LY29uZmlnYC4gVGhhdCBjb25maWd1cmF0aW9uIGZpbGUgaXMgdGhlIHVzdWFsIGxvY2F0aW9uIGZvciBkZWZpbmluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoZSBzY2hlZHVsZXIgZXh0ZW5zaW9ucy4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGlmIGl0IGlzIGRlZmluZWQgdGhlcmUgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGBleHQub2Agd291bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIEJhc2ljYWxseSwgSSBhbSB0aGlua2luZyB0aHJvdWdoIHRoZSBsaWtlbHkgcGxhY2VzIHRoZSBpbmZvcm1hdGlvbiB0aGF0IEkgbmVlZCB3b3VsZCBiZSBsb2NhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YXJlbmEuYyYjMzQ7LAogICAgJiMzNDthcmVuYS5oJiMzNDssCiAgICAmIzM0O2NpZC5jJiMzNDssCiAgICAmIzM0O2NpZC5oJiMzNDssCiAgICAmIzM0O2V4dC5jJiMzNDssCiAgICAmIzM0O2V4dC5oJiMzNDssCiAgICAmIzM0O2lkbGUuYyYjMzQ7LAogICAgJiMzNDtpZGxlLmgmIzM0OywKICAgICYjMzQ7aW5saW5lcy5oJiMzNDssCiAgICAmIzM0O2ludGVybmFsLmgmIzM0OywKICAgICYjMzQ7c3ViLmMmIzM0OywKICAgICYjMzQ7c3ViLmgmIzM0OywKICAgICYjMzQ7dHlwZXMuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NzgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBCdWlsZCBMb2NhdGlvbiBmb3IgYSBDIEV4dGVuc2lvbioqCgpSaWdodCwgc29tZXRoaW5nIGp1c3QgdHJpZ2dlcmVkIGEgbWVtb3J5IC0gd2hlcmUgdGhlIGhlY2sgaXMgdGhhdCBgZXh0LmNgIGZpbGUgY29tcGlsZWQ/IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGVyZSBpbiB0aGUgYnVpbGQgcHJvY2VzcyB0aGF0IHBhcnRpY3VsYXIgZXh0ZW5zaW9uIGlzIGhhbmRsZWQuIEl04oCZcyBwcmV0dHkgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBkZXBlbmRlbmN5IGlzc3VlcyBvciBkZWJ1Z2dpbmcgY29tcGlsYXRpb24gcHJvYmxlbXMgbGF0ZXIgb24uIFNvLCBmaXJzdCB0aG91Z2h0IC0gbGV0JiMzOTtzIGNoZWNrIHRoZSBjb3JlIHNjaGVkdWxpbmcgY29kZSwgdGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBidWlsZCBwb2xpY3kgYW5kIHV0aWxpdGllcyBhcmUgZGVmaW5lZC4gTXkgZ3V0IHNheXMgaXQgd2lsbCBiZSBpbiB0aGUgYGtlcm5lbC9zY2hlZGAgZGlyZWN0b3J5LiBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyBsb29raW5nIGF0IGVpdGhlciBgYnVpbGRfcG9saWN5LmNgIG9yIHBlcmhhcHMgYGJ1aWxkX3V0aWxpdHkuY2AuIFRoYXQgc2VlbXMgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBmaW5kIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhhdCBleHRlbnNpb24uIExldCBtZSBkaXZlIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQuYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jLTY1LSMgaW5jbHVkZSBcJiMzNDtleHQvaW50ZXJuYWwuaFwmIzM0O1xua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jOjY2OiMgaW5jbHVkZSBcJiMzNDtleHQvY2lkLmhcJiMzNDtcbmtlcm5lbC9zY2hlZC9idWlsZF9wb2xpY3kuYy02Ny0jIGluY2x1ZGUgXCYjMzQ7ZXh0L2FyZW5hLmhcJiMzNDtcbi0tXG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmMtNzAtIyBpbmNsdWRlIFwmIzM0O2V4dC9pbmxpbmVzLmhcJiMzNDtcbmtlcm5lbC9zY2hlZC9idWlsZF9wb2xpY3kuYzo3MTojIGluY2x1ZGUgXCYjMzQ7ZXh0L2V4dC5jXCYjMzQ7XG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmM6NzI6IyBpbmNsdWRlIFwmIzM0O2V4dC9jaWQuY1wmIzM0O1xua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jLTczLSMgaW5jbHVkZSBcJiMzNDtleHQvYXJlbmEuY1wmIzM0O1xuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9MjI5ND12b2lkIHdha2V1cF9wcmVlbXB0KHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IGZsYWdzKVxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmMtMjI5Ny1cbmtlcm5lbC9zY2hlZC9jb3JlLmM6MjI5ODpcdGlmIChwLVx1MDAzZXNjaGVkX2NsYXNzID09IHJxLVx1MDAzZW5leHRfY2xhc3MpIHtcbmtlcm5lbC9zY2hlZC9jb3JlLmM6MjI5OTpcdFx0cnEtXHUwMDNlbmV4dF9jbGFzcy1cdTAwM2V3YWtldXBfcHJlZW1wdChycSwgcCwgZmxhZ3MpO1xua2VybmVsL3NjaGVkL2NvcmUuYy0yMzAwLVxua2VybmVsL3NjaGVkL2NvcmUuYzoyMzAxOlx0fSBlbHNlIGlmIChzY2hlZF9jbGFzc19hYm92ZShwLVx1MDAzZXNjaGVkX2NsYXNzLCBycS1cdTAwM2VuZXh0X2NsYXNzKSkge1xua2VybmVsL3NjaGVkL2NvcmUuYzoyMzAyOlx0XHRycS1cdTAwM2VuZXh0X2NsYXNzLVx1MDAzZXdha2V1cF9wcmVlbXB0KHJxLCBwLCBmbGFncyk7XG5rZXJuZWwvc2NoZWQvY29yZS5jLTIzMDMtXHRcdHJlc2NoZWRfY3VycihycSk7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjIzMDQ6XHRcdHJxLVx1MDAzZW5leHRfY2xhc3MgPSBwLVx1MDAzZXNjaGVkX2NsYXNzO1xua2VybmVsL3NjaGVkL2NvcmUuYy0yMzA1LVx0fVxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9Njc4Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJveHlfcmVzY2hlZF9pZGxlKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy02Nzg0LVx0cHV0X3ByZXZfc2V0X25leHRfdGFzayhycSwgcnEtXHUwMDNlZG9ub3IsIHJxLVx1MDAzZWlkbGUpO1xua2VybmVsL3NjaGVkL2NvcmUuYzo2Nzg1Olx0cnEtXHUwMDNlbmV4dF9jbGFzcyA9IFx1MDAyNmlkbGVfc2NoZWRfY2xhc3M7XG5rZXJuZWwvc2NoZWQvY29yZS5jLTY3ODYtXHRycV9zZXRfZG9ub3IocnEsIHJxLVx1MDAzZWlkbGUpO1xuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9NzA5OD1zdGF0aWMgdm9pZCBfX3NjaGVkIG5vdHJhY2UgX19zY2hlZHVsZShpbnQgc2NoZWRfbW9kZSlcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTcxNjktXHRcdFx0bmV4dCA9IHByZXY7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjcxNzA6XHRcdFx0cnEtXHUwMDNlbmV4dF9jbGFzcyA9IFx1MDAyNmlkbGVfc2NoZWRfY2xhc3M7XG5rZXJuZWwvc2NoZWQvY29yZS5jLTcxNzEtXHRcdFx0Z290byBwaWNrZWQ7XG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy03MTg3LVx0bmV4dCA9IHBpY2tfbmV4dF90YXNrKHJxLCBcdTAwMjZyZik7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjcxODg6XHRycS1cdTAwM2VuZXh0X2NsYXNzID0gbmV4dC1cdTAwM2VzY2hlZF9jbGFzcztcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzE4OS1cdGlmIChzY2hlZF9wcm94eV9leGVjKCkpIHtcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jPTc2NjU9dm9pZCBydF9tdXRleF9zZXRwcmlvKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHRhc2tfc3RydWN0ICpwaV90YXNrKVxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzY2OC1cdFx0REVRVUVVRV9TQVZFIHwgREVRVUVVRV9NT1ZFIHwgREVRVUVVRV9OT0NMT0NLO1xua2VybmVsL3NjaGVkL2NvcmUuYzo3NjY5Olx0Y29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpwcmV2X2NsYXNzLCAqbmV4dF9jbGFzcztcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzY3MC1cdHN0cnVjdCBycV9mbGFncyByZjtcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTc3MjYtXHRwcmV2X2NsYXNzID0gcC1cdTAwM2VzY2hlZF9jbGFzcztcbmtlcm5lbC9zY2hlZC9jb3JlLmM6NzcyNzpcdG5leHRfY2xhc3MgPSBfX3NldHNjaGVkdWxlcl9jbGFzcyhwLVx1MDAzZXBvbGljeSwgcHJpbyk7XG5rZXJuZWwvc2NoZWQvY29yZS5jLTc3MjgtXG5rZXJuZWwvc2NoZWQvY29yZS5jOjc3Mjk6XHRpZiAocHJldl9jbGFzcyAhPSBuZXh0X2NsYXNzKVxua2VybmVsL3NjaGVkL2NvcmUuYy03NzMwLVx0XHRxdWV1ZV9mbGFnIHw9IERFUVVFVUVfQ0xBU1M7XG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy03NzYyLVxua2VybmVsL3NjaGVkL2NvcmUuYzo3NzYzOlx0XHRwLVx1MDAzZXNjaGVkX2NsYXNzID0gbmV4dF9jbGFzcztcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzc2NC1cdFx0cC1cdTAwM2VwcmlvID0gcHJpbztcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jPTg5NTM9dm9pZCBfX2luaXQgc2NoZWRfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmMtOTA1MC0jZW5kaWZcbmtlcm5lbC9zY2hlZC9jb3JlLmM6OTA1MTpcdFx0cnEtXHUwMDNlbmV4dF9jbGFzcyA9IFx1MDAyNmlkbGVfc2NoZWRfY2xhc3M7XG5rZXJuZWwvc2NoZWQvY29yZS5jLTkwNTItXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy05MTM3LVx0aW5pdF9zY2hlZF9mYWlyX2NsYXNzKCk7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjkxMzg6XHRpbml0X3NjaGVkX2V4dF9jbGFzcygpO1xua2VybmVsL3NjaGVkL2NvcmUuYy05MTM5LVxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9MTEyNzg9dm9pZCBzY2hlZF9jaGFuZ2VfZW5kKHN0cnVjdCBzY2hlZF9jaGFuZ2VfY3R4ICpjdHgpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy0xMTMwOS1cdFx0XHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUocC1cdTAwM2VzY2hlZF9jbGFzcywgY3R4LVx1MDAzZWNsYXNzKSkge1xua2VybmVsL3NjaGVkL2NvcmUuYzoxMTMxMDpcdFx0XHRcdHJxLVx1MDAzZW5leHRfY2xhc3MtXHUwMDNld2FrZXVwX3ByZWVtcHQocnEsIHAsIDApO1xua2VybmVsL3NjaGVkL2NvcmUuYzoxMTMxMTpcdFx0XHRcdHJxLVx1MDAzZW5leHRfY2xhc3MgPSBwLVx1MDAzZXNjaGVkX2NsYXNzO1xua2VybmVsL3NjaGVkL2NvcmUuYy0xMTMxMi1cdFx0XHR9XG4tLVxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM9MTE0MT1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgZGxfc2VydmVyX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lciwgc3RydWN0IHNjaGVkX2RsX2VudGl0eSAqZGxfc2UpXG4tLVxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmMtMTIwOC0gKiB1cGRhdGluZyAoYW5kIHRoZSBxdWV1ZWluZyBiYWNrIHRvIGRsX3JxKSB3aWxsIGJlIGRvbmUgYnkgdGhlXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYzoxMjA5OiAqIG5leHQgY2FsbCB0byBlbnF1ZXVlX3Rhc2tfZGwoKS5cbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTEyMTAtICovXG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYz0xODA9czMyIHNjeF9jaWRfaW5pdChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0xODgtXHRzdHJ1Y3Qgc2N4X2NpZF90YWJsZXMgKnRibHM7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjE4OTpcdHUzMiBuZXh0X2NpZCA9IDA7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjE5MDpcdHMzMiBuZXh0X25vZGVfaWR4ID0gMCwgbmV4dF9sbGNfaWR4ID0gMCwgbmV4dF9jb3JlX2lkeCA9IDA7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTE5MS1cdHMzMiBuZXh0X3NoYXJkX2lkeCA9IDA7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yMjktXHR3aGlsZSAoIWNwdW1hc2tfZW1wdHkodG9fd2FsaykpIHtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MjMwOlx0XHRzMzIgbmV4dF9jcHUgPSBjcHVtYXNrX2ZpcnN0KHRvX3dhbGspO1xua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyMzE6XHRcdHMzMiBuaWQgPSBjcHVfdG9fbm9kZShuZXh0X2NwdSk7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjIzMjpcdFx0czMyIG5vZGVfY2lkID0gbmV4dF9jaWQ7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTIzMy1cdFx0czMyIG5vZGVfaWR4O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjM5LVx0XHRpZiAobmlkIFx1MDAzYyAwKSB7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjI0MDpcdFx0XHRjcHVtYXNrX2NsZWFyX2NwdShuZXh0X2NwdSwgdG9fd2Fsayk7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI0MS1cdFx0XHRjb250aW51ZTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI0Ny1cdFx0Y3B1bWFza19hbmQobm9kZV9zY3JhdGNoLCB0b193YWxrLCBjcHVtYXNrX29mX25vZGUobmlkKSk7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjI0ODpcdFx0aWYgKFdBUk5fT05fT05DRSghY3B1bWFza190ZXN0X2NwdShuZXh0X2NwdSwgbm9kZV9zY3JhdGNoKSkpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI0OS1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI1My1cdFx0XHRjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbGxjX21hc2sgPSBjcHVfbGxjX21hc2sobmNwdSwgbGxjX2ZhbGxiYWNrKTtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MjU0Olx0XHRcdHMzMiBsbGNfY2lkID0gbmV4dF9jaWQ7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI1NS1cdFx0XHRzMzIgbGxjX2lkeCA9IG5leHRfbGxjX2lkeCYjNDM7JiM0Mzs7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yNjUtXHRcdFx0Y2FsY19zaGFyZF9sYXlvdXQobGxjX3NjcmF0Y2gsIHNoYXJkX3NpemUsIFx1MDAyNmNvcmVzX3Blcl9zaGFyZCwgXHUwMDI2bnJfbGFyZ2UpO1xua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNjY6XHRcdFx0c2hhcmRfY2lkID0gbmV4dF9jaWQ7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI2Ny1cdFx0XHRzaGFyZF9pZHggPSBuZXh0X3NoYXJkX2lkeCYjNDM7JiM0Mzs7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yNzItXHRcdFx0XHRjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc2liID0gdG9wb2xvZ3lfc2libGluZ19jcHVtYXNrKGxjcHUpO1xua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNzM6XHRcdFx0XHRzMzIgY29yZV9jaWQgPSBuZXh0X2NpZDtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Mjc0Olx0XHRcdFx0czMyIGNvcmVfaWR4ID0gbmV4dF9jb3JlX2lkeCYjNDM7JiM0Mzs7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI3NS1cdFx0XHRcdHMzMiBjY3B1O1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjk2LVx0XHRcdFx0XHRjaWRzX2luX3NoYXJkID0gMDtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Mjk3Olx0XHRcdFx0XHRzaGFyZF9jaWQgPSBuZXh0X2NpZDtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjk4LVx0XHRcdFx0XHRzaGFyZF9pZHggPSBuZXh0X3NoYXJkX2lkeCYjNDM7JiM0Mzs7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0zMDQtXHRcdFx0XHRmb3JfZWFjaF9jcHUoY2NwdSwgY29yZV9zY3JhdGNoKSB7XG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjMwNTpcdFx0XHRcdFx0czMyIGNpZCA9IG5leHRfY2lkJiM0MzsmIzQzOztcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzA2LVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzQ2LVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzozNDc6XHRcdGNpZCA9IG5leHRfY2lkJiM0MzsmIzQzOztcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzQ4LVx0XHR0YmxzLVx1MDAzZWNpZF90b19jcHVbY2lkXSA9IGNwdTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTM3NS1cdCAqL1xua2VybmVsL3NjaGVkL2V4dC9jaWQuYzozNzY6XHRmb3IgKGNpZCA9IDA7IGNpZCBcdTAwM2MgbmV4dF9jaWQ7IGNpZCYjNDM7JiM0MzspIHtcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzc3LVx0XHRzMzIgc2lkeCA9IHRibHMtXHUwMDNlY2lkX3RvX3NoYXJkW2NpZF07XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNTQ9c3RhdGljIGJvb2wgcnFfaXNfb3BlbihzdHJ1Y3QgcnEgKnJxLCB1NjQgZW5xX2ZsYWdzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzYxLVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM2MjpcdGlmIChzY2hlZF9jbGFzc19hYm92ZShycS1cdTAwM2VuZXh0X2NsYXNzLCBcdTAwMjZleHRfc2NoZWRfY2xhc3MpKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNjMtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM2OC1cdCAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNjk6XHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUoXHUwMDI2ZXh0X3NjaGVkX2NsYXNzLCBycS1cdTAwM2VuZXh0X2NsYXNzKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzcwLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTE1Njg9c3RhdGljIHZvaWQgcnFfb3duZWRfcG9zdF9lbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgcnEgKnJxLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTYwOS1cdCAqIHB1cnBvc2UsIGJ1dCBmb3IgaXQgdG8gYmUgaW52b2tlZCwgd2UgbXVzdCBlbnN1cmUgdGhhdCB3ZSBidW1wXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE2MTA6XHQgKiBAcnEtXHUwMDNlbmV4dF9jbGFzcyB0byBcdTAwMjZleHRfc2NoZWRfY2xhc3MgaWYgaXQmIzM5O3MgY3VycmVudGx5IGlkbGUuXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MTEtXHQgKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjEyLVx0ICogd2FrZXVwX3ByZWVtcHQoKSBkb2VzIHRoZSBidW1waW5nLCBhbmQgc2luY2Ugd2Ugb25seSBpbnZva2UgaXQgaWZcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYxMzpcdCAqIEBycS1cdTAwM2VuZXh0X2NsYXNzIGlzIGJlbG93IFx1MDAyNmV4dF9zY2hlZF9jbGFzcywgaXQgd2lsbCBhbHNvXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MTQtXHQgKiByZXNjaGVkX2N1cnIocnEpLlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjE1LVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE2MTY6XHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUocC1cdTAwM2VzY2hlZF9jbGFzcywgcnEtXHUwMDNlbmV4dF9jbGFzcykpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MTctXHRcdHdha2V1cF9wcmVlbXB0KHJxLCBwLCAwKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MjMtXHQgKiBOb3RlIHRoYXQgdGhlIHdha2V1cF9wcmVlbXB0KCkgYWJvdmUgbWF5IGhhdmUgYWxyZWFkeSB0cmlnZ2VyZWRcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYyNDpcdCAqIGEgcmVzY2hlZCBpZiBAcnEtXHUwMDNlbmV4dF9jbGFzcyB3YXMgaWRsZS4gSXQmIzM5O3MgaGFybWxlc3MsIHNpbmNlXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MjUtXHQgKiBuZWVkX3Jlc2NoZWQgaXMgY2xlYXJlZCBpbW1lZGlhdGVseSBhZnRlciB0YXNrIHBpY2suXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zMTM5PXN0YXRpYyB2b2lkIHN3aXRjaF9jbGFzcyhzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMTQxLVx0c3RydWN0IHNjeF9zY2hlZCAqc2NoID0gc2N4X3Jvb3RfcHJvdGVjdGVkX2xpdmUoKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzE0MjpcdGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqbmV4dF9jbGFzcyA9IG5leHQtXHUwMDNlc2NoZWRfY2xhc3M7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMxNDMtXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMTQ5LVx0ICogbG9uZ2VyIHVuZGVyIHRoZSBjb250cm9sIG9mIFNDWC4gVGhlcmVmb3JlLCBkb24mIzM5O3QgaW52b2tlIHRoZSBjYWxsYmFja1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMTUwOlx0ICogaWYgdGhlIG5leHQgY2xhc3MgaXMgYmVsb3cgU0NYIChpbiB3aGljaCBjYXNlIHRoZSBCUEYgc2NoZWR1bGVyIGhhc1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMTUxLVx0ICogYWN0aXZlbHkgZGVjaWRlZCBub3QgdG8gc2NoZWR1bGUgYW55IHRhc2tzIG9uIHRoZSBDUFUpLlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMTUyLVx0ICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjMxNTM6XHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUoXHUwMDI2ZXh0X3NjaGVkX2NsYXNzLCBuZXh0X2NsYXNzKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE1NC1cdFx0cmV0dXJuO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE2Ny1cdFx0XHRzdHJ1Y3Qgc2N4X2NwdV9yZWxlYXNlX2FyZ3MgYXJncyA9IHtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzE2ODpcdFx0XHRcdC5yZWFzb24gPSBwcmVlbXB0X3JlYXNvbl9mcm9tX2NsYXNzKG5leHRfY2xhc3MpLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMTY5LVx0XHRcdFx0LnRhc2sgPSBuZXh0LFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTU3Mj1ib29sIHNjeF9hbGxvd190dHd1X3F1ZXVlKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU1OTItLyoqXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjU1OTM6ICogaGFuZGxlX2xvY2t1cCAtIHNjaGVkX2V4dCBjb21tb24gbG9ja3VwIGhhbmRsZXJcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTU5NC0gKiBAZXhpdF9jcHU6IENQVSB0byByZWNvcmQgaW4gZXhpdF9pbmZvLiBQYXNzIHRoZSBzdGFsbGVkL2h1bmcgQ1BVLCBub3QgY3VycmVudC5cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTg2ODY9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBzY3hfcG1fbm90aWZpZXIgPSB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04Njg5LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NjkwOnZvaWQgX19pbml0IGluaXRfc2NoZWRfZXh0X2NsYXNzKHZvaWQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2OTEte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA5NDM9c3RhdGljIGludCBfX2luaXQgc2N4X2luaXQodm9pZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMDIwLVx0Lypcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTEwMjE6XHQgKiBrZnVuYyByZWdpc3RyYXRpb24gY2FuJiMzOTt0IGJlIGRvbmUgZnJvbSBpbml0X3NjaGVkX2V4dF9jbGFzcygpIGFzXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMDIyLVx0ICogcmVnaXN0ZXJfYnRmX2tmdW5jX2lkX3NldCgpIG5lZWRzIG1vc3Qgb2YgdGhlIHN5c3RlbSB0byBiZSB1cC5cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oPTIyPWJvb2wgc2N4X2FsbG93X3R0d3VfcXVldWUoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg6MjM6dm9pZCBpbml0X3NjaGVkX2V4dF9jbGFzcyh2b2lkKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtMjQtXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuaD01Nj1zdGF0aWMgaW5saW5lIGJvb2wgc2N4X2FsbG93X3R0d3VfcXVldWUoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0cnVlOyB9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oOjU3OnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NjaGVkX2V4dF9jbGFzcyh2b2lkKSB7fVxua2VybmVsL3NjaGVkL2V4dC9leHQuaC01OC1cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz05MTM9c3RhdGljIGJvb2wgY2hlY2tfYnVpbHRpbl9pZGxlX2VuYWJsZWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTkyNi0gKiBXZSBjYW4mIzM5O3Qgc2ltcGx5IGNoZWNrIHdoZXRoZXIgQHAtXHUwMDNlbWlncmF0aW9uX2Rpc2FibGVkIGlzIHNldCBpbiBhXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzo5Mjc6ICogc2NoZWRfZXh0IGNhbGxiYWNrLCBiZWNhdXNlIHRoZSBCUEYgcHJvbG9nIChfX2JwZl9wcm9nX2VudGVyKSBtYXkgZGlzYWJsZVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtOTI4LSAqIG1pZ3JhdGlvbiBmb3IgdGhlIGN1cnJlbnQgdGFzayB3aGlsZSBydW5uaW5nIEJQRiBjb2RlLlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTE1MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHNjeF9rZnVuY19zZXRfaWRsZSA9IHtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNTM3LSAqXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNTM4OiAqIFRoZXNlIGtmdW5jcyBhcmUgYWxzbyBtZW1iZXJzIG9mIHNjeF9rZnVuY19pZHNfdW5sb2NrZWQgKHNlZSBleHQuYykgYmVjYXVzZVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTUzOS0gKiB0aGV5JiMzOTtyZSBjYWxsYWJsZSBmcm9tIHVubG9ja2VkIGNvbnRleHRzIGluIGFkZGl0aW9uIHRvIG9wcy5zZWxlY3RfY3B1KCkgYW5kXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTEzMj1lbnVtIHNjeF9vcHNfZmxhZ3Mge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMzgtXHQvKlxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjEzOTpcdCAqIEJ5IGRlZmF1bHQsIGlmIHRoZXJlIGFyZSBubyBvdGhlciB0YXNrIHRvIHJ1biBvbiB0aGUgQ1BVLCBleHQgY29yZVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE0MC1cdCAqIGtlZXBzIHJ1bm5pbmcgdGhlIGN1cnJlbnQgdGFzayBldmVuIGFmdGVyIGl0cyBzbGljZSBleHBpcmVzLiBJZiB0aGlzXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oPTMxOT1zdHJ1Y3Qgc2NoZWRfZXh0X29wcyB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTM2OS1cdCAqXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MzcwOlx0ICogVGhlIGV4dCBjb3JlIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgdGhlIEJQRiBzaWRlIG93bnMgYSBnaXZlbiB0YXNrIG9yXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMzcxLVx0ICogbm90IGFuZCBjYW4gZ3JhY2VmdWxseSBpZ25vcmUgc3B1cmlvdXMgZGlzcGF0Y2hlcyBmcm9tIEJQRiBzaWRlLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaD0xNDIyPWVudW0gc2N4X2NhcF9mbGFncyB7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE0NzMtICogZGVsaXZlcnkgaXMgaW4gZmxpZ2h0IHBlciBzaGFyZC4gRnVydGhlciBjaGFuZ2VzIGZvbGQgaW50byB0aGUgc2FtZSBidWZmZXJcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxNDc0OiAqIGFuZCBzaGlwIGFzIHRoZSBuZXh0IGNhbGxiYWNrLCBzbyBhIHNoYXJkJiMzOTtzIGNhbGxiYWNrcyBmaXJlIGluIG9yZGVyLlxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE0NzUtICpcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTY2Mz1lbnVtIHNjeF9lbnFfZmxhZ3Mge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNzE2LVx0ICogVGhlIHRhc2sgYmVpbmcgZW5xdWV1ZWQgaXMgdGhlIG9ubHkgdGFzayBhdmFpbGFibGUgZm9yIHRoZSBjcHUuIEJ5XG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTcxNzpcdCAqIGRlZmF1bHQsIGV4dCBjb3JlIGtlZXBzIGV4ZWN1dGluZyBzdWNoIHRhc2tzIGJ1dCB3aGVuXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTcxOC1cdCAqICVTQ1hfT1BTX0VOUV9MQVNUIGlzIHNwZWNpZmllZCwgdGhleSYjMzk7cmUgb3BzLmVucXVldWUoKSYjMzk7ZCB3aXRoIHRoZVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaD0xODIwPXN0YXRpYyBjb25zdCBjaGFyICpzY3hfZW5hYmxlX3N0YXRlX3N0cltdID0ge1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xODI5LSAqXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTgzMDogKiBUaGUgc2NoZWRfZXh0IGNvcmUgdXNlcyB0aGlzIHN0YXRlIG1hY2hpbmUgdG8gdHJhY2sgdGFzayBvd25lcnNoaXBcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xODMxLSAqIGJldHdlZW4gdGhlIFNDWCBjb3JlIGFuZCB0aGUgQlBGIHNjaGVkdWxlci4gVGhpcyBhbGxvd3MgdGhlIEJQRlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xOTAyLSAqXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTkwMzogKiBUaGUgc2NoZWRfZXh0IGNvcmUgdXNlcyBhIFwmIzM0O2xvY2sgZGFuY2luZ1wmIzM0OyBwcm90b2NvbCBjb29yZGluYXRlZCBieVxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE5MDQtICogcC1cdTAwM2VzY3guaG9sZGluZ19jcHUuIFdoZW4gbW92aW5nIGEgdGFzayB0byBhIGRpZmZlcmVudCBycTpcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTEwLSAqIHN1Yi1zY2hlZHVsZXIgZW5hYmxlL2Rpc2FibGUgcGF0aHMuIFRoZSBjb3JlIGRpc3BhdGNoL2VucXVldWUgbWFjaGluZXJ5IGl0XG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjExOiAqIGJ1aWxkcyBvbiBsaXZlcyBpbiBleHQuYy5cbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTItICpcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jPTEyMjg9dm9pZCBkcmFpbl9kZXNjZW5kYW50cyhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9zdWIuYy0xMjQ1LSAqIHN0YXRlIHRvICVTQ1hfVEFTS19SRUFEWSB0byBhY2NvdW50IGZvciB0aGUgYWxyZWFkeSBjb21wbGV0ZWQgaW5pdC4gQSB0YXNrXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjEyNDY6ICogb24gYSBub24tZXh0IGNsYXNzLCBwb3NzaWJsZSB1bmRlciBhbiAlU0NYX09QU19TV0lUQ0hfUEFSVElBTCByb290LCBzdGF5c1xua2VybmVsL3NjaGVkL2V4dC9zdWIuYy0xMjQ3LSAqICVSRUFEWSBhbmQgaXMgZW5hYmxlZCBieSBzd2l0Y2hpbmdfdG9fc2N4KCkgaWYgaXQgc3dpdGNoZXMgb3Zlci5cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jPTE3MDU9dm9pZCBzY3hfc3ViX2VuYWJsZV93b3JrZm4oc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTE5NTAtXHRcdFx0ICogaXMgd2hhdCB3ZSB3YW50LiBBc3NpZ24gaXQgdG8gQHNjaCBhbmQsIGlmIGl0JiMzOTtzIG9uXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjE5NTE6XHRcdFx0ICogdGhlIGV4dCBjbGFzcywgZW5hYmxlLiBBIG5vbi1leHQgdGFzaywgcG9zc2libGUgdW5kZXJcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTk1Mi1cdFx0XHQgKiBhbiAlU0NYX09QU19TV0lUQ0hfUEFSVElBTCByb290LCBzdGF5cyBSRUFEWSBhbmQgaXNcbi0tXG5rZXJuZWwvc2NoZWQvZmFpci5jPTY5NzM9c3RhdGljIGJvb2wgdGhyb3R0bGVfY2ZzX3JxKHN0cnVjdCBjZnNfcnEgKmNmc19ycSlcbi0tXG5rZXJuZWwvc2NoZWQvZmFpci5jLTcwMjctXHQgKiBjdXJyZW50IGRvbm9yLiBJbiBjYXNlIG9mIHByb3h5LWV4ZWN1dGlvbiwgdGhlIGV4ZWN1dGlvblxua2VybmVsL3NjaGVkL2ZhaXIuYzo3MDI4Olx0ICogY29udGV4dCBjYW5ub3QgZXhpdCB0byB0aGUgdXNlcnNwYWNlIHdoaWxlIGhvbGRpbmcgYSBtdXRleFxua2VybmVsL3NjaGVkL2ZhaXIuYy03MDI5LVx0ICogYW5kIHRoZSBydWxlIG9mIHRocm90dGxlIGRlZmVycmFsIHRvIG9ubHkgdGhyb3R0bGUgdGhlXG4tLVxua2VybmVsL3NjaGVkL2ZhaXIuYz0xNTQzNj1pbnQgc2NoZWRfZ3JvdXBfc2V0X2lkbGUoc3RydWN0IHRhc2tfZ3JvdXAgKnRnLCBsb25nIGlkbGUpXG4tLVxua2VybmVsL3NjaGVkL2ZhaXIuYy0xNTQ2Ni1cdFx0aWYgKFdBUk5fT05fT05DRSh3YXNfaWRsZSA9PSBjZnNfcnFfaXNfaWRsZShncnBfY2ZzX3JxKSkpXG5rZXJuZWwvc2NoZWQvZmFpci5jOjE1NDY3Olx0XHRcdGdvdG8gbmV4dF9jcHU7XG5rZXJuZWwvc2NoZWQvZmFpci5jLTE1NDY4LVxuLS1cbmtlcm5lbC9zY2hlZC9mYWlyLmMtMTU0ODYtXG5rZXJuZWwvc2NoZWQvZmFpci5jOjE1NDg3Om5leHRfY3B1Olxua2VybmVsL3NjaGVkL2ZhaXIuYy0xNTQ4OC1cdFx0cnFfdW5sb2NrX2lycXJlc3RvcmUocnEsIFx1MDAyNnJmKTtcbi0tXG5rZXJuZWwvc2NoZWQvcnQuYz0yMDc4PXN0YXRpYyB2b2lkIHB1c2hfcnRfdGFza3Moc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvcnQuYy0yMTI3LSAqL1xua2VybmVsL3NjaGVkL3J0LmM6MjEyODpzdGF0aWMgaW50IHJ0b19uZXh0X2NwdShzdHJ1Y3Qgcm9vdF9kb21haW4gKnJkKVxua2VybmVsL3NjaGVkL3J0LmMtMjEyOS17XG4tLVxua2VybmVsL3NjaGVkL3J0LmMtMjEzNS1cdCAqIFdoZW4gc3RhcnRpbmcgdGhlIElQSSBSVCBwdXNoaW5nLCB0aGUgcnRvX2NwdSBpcyBzZXQgdG8gLTEsXG5rZXJuZWwvc2NoZWQvcnQuYzoyMTM2Olx0ICogcnRfbmV4dF9jcHUoKSB3aWxsIHNpbXBseSByZXR1cm4gdGhlIGZpcnN0IENQVSBmb3VuZCBpblxua2VybmVsL3NjaGVkL3J0LmMtMjEzNy1cdCAqIHRoZSBydG9fbWFzay5cbmtlcm5lbC9zY2hlZC9ydC5jLTIxMzgtXHQgKlxua2VybmVsL3NjaGVkL3J0LmM6MjEzOTpcdCAqIElmIHJ0b19uZXh0X2NwdSgpIGlzIGNhbGxlZCB3aXRoIHJ0b19jcHUgaXMgYSB2YWxpZCBDUFUsIGl0XG5rZXJuZWwvc2NoZWQvcnQuYy0yMTQwLVx0ICogd2lsbCByZXR1cm4gdGhlIG5leHQgQ1BVIGZvdW5kIGluIHRoZSBydG9fbWFzay5cbi0tXG5rZXJuZWwvc2NoZWQvcnQuYz0yMTkwPXN0YXRpYyB2b2lkIHRlbGxfY3B1X3RvX3B1c2goc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvcnQuYy0yMjA5LVx0aWYgKHJxLVx1MDAzZXJkLVx1MDAzZXJ0b19jcHUgXHUwMDNjIDApXG5rZXJuZWwvc2NoZWQvcnQuYzoyMjEwOlx0XHRjcHUgPSBydG9fbmV4dF9jcHUocnEtXHUwMDNlcmQpO1xua2VybmVsL3NjaGVkL3J0LmMtMjIxMS1cbi0tXG5rZXJuZWwvc2NoZWQvcnQuYz0yMjI0PXZvaWQgcnRvX3B1c2hfaXJxX3dvcmtfZnVuYyhzdHJ1Y3QgaXJxX3dvcmsgKndvcmspXG4tLVxua2VybmVsL3NjaGVkL3J0LmMtMjI0Ni1cdC8qIFBhc3MgdGhlIElQSSB0byB0aGUgbmV4dCBydCBvdmVybG9hZGVkIHF1ZXVlICovXG5rZXJuZWwvc2NoZWQvcnQuYzoyMjQ3Olx0Y3B1ID0gcnRvX25leHRfY3B1KHJkKTtcbmtlcm5lbC9zY2hlZC9ydC5jLTIyNDgtXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTE1OT1zdHJ1Y3QgcnEge1xuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTExODctXHQvKlxua2VybmVsL3NjaGVkL3NjaGVkLmg6MTE4ODpcdCAqIFRoZSBuZXh0IGNhY2hlbGluZSBob2xkcyB0aGUgKGhvdCkgcnVucXVldWUgbG9jaywgYXMgd2VsbCBhc1xua2VybmVsL3NjaGVkL3NjaGVkLmgtMTE4OS1cdCAqIHNvbWUgb3RoZXIgbGVzcyBwZXJmb3JtYW5jZS1jcml0aWNhbCBmaWVsZHMuXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTI1MS1cdHN0cnVjdCB0YXNrX3N0cnVjdFx0KnN0b3A7XG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoxMjUyOlx0Y29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpuZXh0X2NsYXNzO1xua2VybmVsL3NjaGVkL3NjaGVkLmgtMTI1My1cdHVuc2lnbmVkIGxvbmdcdFx0bmV4dF9iYWxhbmNlO1xuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oPTI4Njc9c3RhdGljIGlubGluZSB2b2lkIHJxX21vZGlmaWVkX2JlZ2luKHN0cnVjdCBycSAqcnEsIGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqY2xhc3MpXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0yODY4LXtcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjI4Njk6XHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUocnEtXHUwMDNlbmV4dF9jbGFzcywgY2xhc3MpKVxua2VybmVsL3NjaGVkL3NjaGVkLmg6Mjg3MDpcdFx0cnEtXHUwMDNlbmV4dF9jbGFzcyA9IGNsYXNzO1xua2VybmVsL3NjaGVkL3NjaGVkLmgtMjg3MS19XG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9Mjg3Mz1zdGF0aWMgaW5saW5lIGJvb2wgcnFfbW9kaWZpZWRfYWJvdmUoc3RydWN0IHJxICpycSwgY29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpjbGFzcylcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTI4NzQte1xua2VybmVsL3NjaGVkL3NjaGVkLmg6Mjg3NTpcdHJldHVybiBzY2hlZF9jbGFzc19hYm92ZShycS1cdTAwM2VuZXh0X2NsYXNzLCBjbGFzcyk7XG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0yODc2LX1cbi0tXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYz00OTM9aW50IF9fc2NoZWRfc2V0c2NoZWR1bGVyKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbi0tXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy00OTgtXHRpbnQgcmV0dmFsLCBvbGRwcmlvLCBuZXdwcmlvO1xua2VybmVsL3NjaGVkL3N5c2NhbGxzLmM6NDk5Olx0Y29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpwcmV2X2NsYXNzLCAqbmV4dF9jbGFzcztcbmtlcm5lbC9zY2hlZC9zeXNjYWxscy5jLTUwMC1cdHN0cnVjdCBiYWxhbmNlX2NhbGxiYWNrICpoZWFkO1xuLS1cbmtlcm5lbC9zY2hlZC9zeXNjYWxscy5jLTY3NS1cdHByZXZfY2xhc3MgPSBwLVx1MDAzZXNjaGVkX2NsYXNzO1xua2VybmVsL3NjaGVkL3N5c2NhbGxzLmM6Njc2Olx0bmV4dF9jbGFzcyA9IF9fc2V0c2NoZWR1bGVyX2NsYXNzKHBvbGljeSwgbmV3cHJpbyk7XG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy02NzctXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYzo2Nzg6XHRpZiAocHJldl9jbGFzcyAhPSBuZXh0X2NsYXNzKVxua2VybmVsL3NjaGVkL3N5c2NhbGxzLmMtNjc5LVx0XHRxdWV1ZV9mbGFncyB8PSBERVFVRVVFX0NMQVNTO1xuLS1cbmtlcm5lbC9zY2hlZC9zeXNjYWxscy5jLTY4NC1cdFx0XHRfX3NldHNjaGVkdWxlcl9wYXJhbXMocCwgYXR0cik7XG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYzo2ODU6XHRcdFx0cC1cdTAwM2VzY2hlZF9jbGFzcyA9IG5leHRfY2xhc3M7XG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy02ODYtXHRcdFx0cC1cdTAwM2VwcmlvID0gbmV3cHJpbztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MDgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBrZXJuZWwgY29uZmlnIHNldHRpbmc6CgoqKkRlbHZpbmcgaW50byB0aGUgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBpcyBgU0NIRURfQ0xBU1NfRVhUYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgZm9yIHRoZSBkZWZpbml0aW9uIGFuZCBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZmxhZyBlbmFibGVzIG9yIGRpc2FibGVzLCBhbmQgd2hlcmUgaXQgZml0cyB3aXRoaW4gdGhlIGxhcmdlciBzY2hlZHVsaW5nIGZyYW1ld29yay4gQSBxdWljayBzY2FuIG9mIGBrZXJuZWwvc2NoZWQvS2NvbmZpZ2AgaXMgZGVmaW5pdGVseSB0aGUgcGxhY2UgdG8gc3RhcnQuIFRoYXQgZmlsZSBpcyB0aGUgY2VudHJhbCByZXBvc2l0b3J5IGZvciBzY2hlZHVsZXItcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEJ5IGNoZWNraW5nIHRoZXJlLCBJIGNhbiBnZXQgYSBoYW5kbGUgb246CgoqICAgKipJdHMgUHVycG9zZToqKiBXaGF0IGZ1bmN0aW9uYWxpdHkgZG9lcyBgU0NIRURfQ0xBU1NfRVhUYCBjb250cm9sPyBJcyBpdCBlbmFibGluZyBhIHNwZWNpZmljIHNjaGVkdWxlciBjbGFzcywgZXh0ZW5kaW5nIGFuIGV4aXN0aW5nIG9uZSwgb3Igc29tZSBvdGhlciBhc3BlY3Qgb2YgdGhlIHNjaGVkdWxpbmcgc3lzdGVtPwoqICAgKipEZXBlbmRlbmNpZXM6KiogRG9lcyB0aGlzIG9wdGlvbiByZWx5IG9uIGFueSBvdGhlciBjb25maWdzPyBBcmUgdGhlcmUgcHJlcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/CiogICAqKkNvbnRleHQ6KiogV2hlcmUgZG9lcyBgU0NIRURfQ0xBU1NfRVhUYCBzaXQgaW4gdGhlIEtjb25maWcgaGllcmFyY2h5PyBLbm93aW5nIGl0cyBwYXJlbnQgbWVudSBvciBzZWN0aW9uIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGl0cyBvdmVyYWxsIHNjb3BlIGFuZCByZWxldmFuY2Ugd2l0aGluIHRoZSBzY2hlZHVsaW5nIGxhbmRzY2FwZS4KKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBIb3BlZnVsbHksIHRoZSBLY29uZmlnIGVudHJ5IHdpbGwgaW5jbHVkZSBhIGhlbHBmdWwgY29tbWVudC4gRXZlbiBhIGJyaWVmIGRlc2NyaXB0aW9uIHdvdWxkIGdpdmUgbWUgYSBzdGFydGluZyBwb2ludC4KCkFybWVkIHdpdGggdGhpcyBpbmZvcm1hdGlvbiwgSSBjYW4gbWFrZSBhIG1vcmUgaW5mb3JtZWQgYXNzZXNzbWVudCBvZiB0aGUgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIGJlIGFibGUgdG8gdGVsbCBob3cgdGhpcyBmbGFnIGltcGFjdHMgdGhlIHN5c3RlbSYjMzk7cyBzY2hlZHVsaW5nIGJlaGF2aW9yIGFuZCBwb3NzaWJseSBob3cgdG8gdHVuZSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTQ0hFRF9DTEFTU19FWFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTkxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgUHJlZW1wdGlvbiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHdoZXJlIHdvdWxkIHRoaXMgcHJlZW1wdGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbiBiZSBsdXJraW5nPyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBga2VybmVsL0tjb25maWcucHJlZW1wdGAuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHNwb3QsIGdpdmVuIHRoZSBuYW1lLiBCdXQgeW91IGtub3cgaG93IHRoZXNlIHRoaW5ncyBnbywgc29tZXRpbWVzIHRoaW5ncyBlbmQgdXAgaW4gdW5leHBlY3RlZCBwbGFjZXMuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIGFsc28gZ2xhbmNlIGF0IGBpbml0L0tjb25maWdgLiBUaGF0JiMzOTtzIGEgcG9zc2liaWxpdHksIGVzcGVjaWFsbHkgaWYgaXQmIzM5O3MgcmVsYXRlZCB0byBlYXJseSBib290IG9yIHN5c3RlbSBpbml0aWFsaXphdGlvbi4gQW5kLCBvZiBjb3Vyc2UsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBtYWluIGBrZXJuZWwvS2NvbmZpZ2AgZmlsZSBpdHNlbGYuIEl0JiMzOTtzIHRoZSBjYXRjaC1hbGwgZm9yIGtlcm5lbCBvcHRpb25zLCBhbmQgc29tZXRpbWVzIHRoaW5ncyBnZXQgcGxhY2VkIHRoZXJlIGlmIHRoZXkgZG9uJiMzOTt0IGZpdCBuZWF0bHkgZWxzZXdoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlc2UgS2NvbmZpZyBmaWxlcyByZXZlYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NDSEVEX0NMQVNTX0VYVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0PTMwPVN3aXRjaGluZyB0byBhbmQgZnJvbSBzY2hlZF9leHRcbi0tXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTMyLVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDozMzpgYENPTkZJR19TQ0hFRF9DTEFTU19FWFRgYCBpcyB0aGUgY29uZmlnIG9wdGlvbiB0byBlbmFibGUgc2NoZWRfZXh0IGFuZFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdC0zNC1gYHRvb2xzL3NjaGVkX2V4dGBgIGNvbnRhaW5zIHRoZSBleGFtcGxlIHNjaGVkdWxlcnMuIFRoZSBmb2xsb3dpbmcgY29uZmlnXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0PTM1PW9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgdG8gdXNlIHNjaGVkX2V4dDpcbi0tXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTM5LSAgICBDT05GSUdfQlBGPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6NDA6ICAgIENPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdC00MS0gICAgQ09ORklHX0JQRl9TWVNDQUxMPXlcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODM1PXN0cnVjdCB0YXNrX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTg5Mi1cdHN0cnVjdCBzY2hlZF9kbF9lbnRpdHlcdFx0KmRsX3NlcnZlcjtcbmluY2x1ZGUvbGludXgvc2NoZWQuaDo4OTM6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmluY2x1ZGUvbGludXgvc2NoZWQuaC04OTQtXHRzdHJ1Y3Qgc2NoZWRfZXh0X2VudGl0eVx0XHRzY3g7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC0xMS1cbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0Lmg6MTI6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0LmgtMTMtXG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaD0yOTU9Ym9vbCBzY3hfcmN1X2NwdV9zdGFsbChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3RhbGxlZF9tYXNrKTtcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0LmgtMjk2LVxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaDoyOTc6I2Vsc2VcdC8qICFDT05GSUdfU0NIRURfQ0xBU1NfRVhUICovXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oLTI5OC1cbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oPTMwMz1zdGF0aWMgaW5saW5lIGJvb2wgc2N4X3JjdV9jcHVfc3RhbGwoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnN0YWxsZWRfbWFzaykgeyByZXR1cm4gZmFsc2U7IH1cbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0LmgtMzA0LVxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaDozMDU6I2VuZGlmXHQvKiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUICovXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oLTMwNi1cbi0tXG5pbml0L0tjb25maWc9OTM3PWNvbmZpZyBTQ0hFRF9QUk9YWV9FWEVDXG4tLVxuaW5pdC9LY29uZmlnLTk0MS1cdCMgTmVlZCB0byBpbnZlc3RpZ2F0ZSBob3cgdG8gaW5mb3JtIHNjaGVkX2V4dCBvZiBzcGxpdCBjb250ZXh0c1xuaW5pdC9LY29uZmlnOjk0MjpcdGRlcGVuZHMgb24gIVNDSEVEX0NMQVNTX0VYVFxuaW5pdC9LY29uZmlnLTk0My1cdCMgTm90IHBhcnRpY3VsYXJseSB1c2VmdWwgdW50aWwgd2UgZ2V0IHRvIG11bHRpLXJxIHByb3h5aW5nXG4tLVxuaW5pdC9LY29uZmlnPTEyMDA9Y29uZmlnIEVYVF9HUk9VUF9TQ0hFRFxuaW5pdC9LY29uZmlnLTEyMDEtXHRib29sXG5pbml0L0tjb25maWc6MTIwMjpcdGRlcGVuZHMgb24gU0NIRURfQ0xBU1NfRVhUIFx1MDAyNlx1MDAyNiBDR1JPVVBfU0NIRURcbmluaXQvS2NvbmZpZy0xMjAzLVx0c2VsZWN0IEdST1VQX1NDSEVEX1dFSUdIVFxuLS1cbmluaXQvS2NvbmZpZz0xMjA5PWNvbmZpZyBFWFRfU1VCX1NDSEVEXG5pbml0L0tjb25maWctMTIxMC0gICAgICAgIGRlZl9ib29sIHlcbmluaXQvS2NvbmZpZzoxMjExOiAgICAgICAgZGVwZW5kcyBvbiBTQ0hFRF9DTEFTU19FWFQgXHUwMDI2XHUwMDI2IENHUk9VUFNcbmluaXQvS2NvbmZpZy0xMjEyLVxuLS1cbmluaXQvaW5pdF90YXNrLmM9MTA1PXN0cnVjdCB0YXNrX3N0cnVjdCBpbml0X3Rhc2sgX19hbGlnbmVkKEwxX0NBQ0hFX0JZVEVTKSA9IHtcbi0tXG5pbml0L2luaXRfdGFzay5jLTE0Mi0jZW5kaWZcbmluaXQvaW5pdF90YXNrLmM6MTQzOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5pbml0L2luaXRfdGFzay5jLTE0NC1cdC5zY3hcdFx0PSB7XG4tLVxua2VybmVsL0tjb25maWcucHJlZW1wdD0xNTU9Y29uZmlnIFNDSEVEX0NPUkVcbi0tXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3Mi1cbmtlcm5lbC9LY29uZmlnLnByZWVtcHQ6MTczOmNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTc0LVx0Ym9vbCBcJiMzNDtFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcJiMzNDtcbi0tXG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmMtNTktXG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmM6NjA6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9idWlsZF9wb2xpY3kuYy02MS0jIGluY2x1ZGUgXHUwMDNjbGludXgvYnRmX2lkcy5oXHUwMDNlXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYz0yMjg9c3RhdGljIGlubGluZSBib29sIHByaW9fbGVzcyhjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmEsXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy0yNjEtXG5rZXJuZWwvc2NoZWQvY29yZS5jOjI2MjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2NvcmUuYy0yNjMtXHRpZiAocGEgPT0gTUFYX1JUX1BSSU8gJiM0MzsgTUFYX05JQ0UgJiM0MzsgMSlcdC8qIGV4dCAqL1xuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDU3ND1zdGF0aWMgdm9pZCBfX3NjaGVkX2ZvcmsodTY0IGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy00NjExLVxua2VybmVsL3NjaGVkL2NvcmUuYzo0NjEyOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvY29yZS5jLTQ2MTMtXHRpbml0X3NjeF9lbnRpdHkoXHUwMDI2cC1cdTAwM2VzY3gpO1xuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDgxND1pbnQgc2NoZWRfZm9yayh1NjQgY2xvbmVfZmxhZ3MsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTQ4NjEtXHRcdHAtXHUwMDNlc2NoZWRfY2xhc3MgPSBcdTAwMjZydF9zY2hlZF9jbGFzcztcbmtlcm5lbC9zY2hlZC9jb3JlLmM6NDg2MjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2NvcmUuYy00ODYzLVx0fSBlbHNlIGlmICh0YXNrX3Nob3VsZF9zY3gocC1cdTAwM2Vwb2xpY3kpKSB7XG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYz03NjEwPWNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqX19zZXRzY2hlZHVsZXJfY2xhc3MoaW50IHBvbGljeSwgaW50IHByaW8pXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy03NjE3LVxua2VybmVsL3NjaGVkL2NvcmUuYzo3NjE4OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvY29yZS5jLTc2MTktXHRpZiAodGFza19zaG91bGRfc2N4KHBvbGljeSkpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYz04ODcwPWludCBzY2hlZF9jcHVfZHlpbmcodW5zaWduZWQgaW50IGNwdSlcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTg4ODQtXHRkbF9zZXJ2ZXJfc3RvcChcdTAwMjZycS1cdTAwM2VmYWlyX3NlcnZlcik7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjg4ODU6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9jb3JlLmMtODg4Ni1cdGRsX3NlcnZlcl9zdG9wKFx1MDAyNnJxLVx1MDAzZWV4dF9zZXJ2ZXIpO1xuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9ODk1Mz12b2lkIF9faW5pdCBzY2hlZF9pbml0KHZvaWQpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy04OTYyLVx0QlVHX09OKCFzY2hlZF9jbGFzc19hYm92ZShcdTAwMjZmYWlyX3NjaGVkX2NsYXNzLCBcdTAwMjZpZGxlX3NjaGVkX2NsYXNzKSk7XG5rZXJuZWwvc2NoZWQvY29yZS5jOjg5NjM6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9jb3JlLmMtODk2NC1cdEJVR19PTighc2NoZWRfY2xhc3NfYWJvdmUoXHUwMDI2ZmFpcl9zY2hlZF9jbGFzcywgXHUwMDI2ZXh0X3NjaGVkX2NsYXNzKSk7XG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy05MDgwLVx0XHRmYWlyX3NlcnZlcl9pbml0KHJxKTtcbmtlcm5lbC9zY2hlZC9jb3JlLmM6OTA4MTojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2NvcmUuYy05MDgyLVx0XHRleHRfc2VydmVyX2luaXQocnEpO1xuLS1cbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jPTEwOD1zdGF0aWMgaW5saW5lIHU4IGRsX2dldF90eXBlKHN0cnVjdCBzY2hlZF9kbF9lbnRpdHkgKmRsX3NlLCBzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTExMy1cdFx0cmV0dXJuIERMX1NFUlZFUl9GQUlSO1xua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MTE0OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYy0xMTUtXHRpZiAoZGxfc2UgPT0gXHUwMDI2cnEtXHUwMDNlZXh0X3NlcnZlcilcbi0tXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0xODQyPXZvaWQgc2NoZWRfaW5pdF9kbF9zZXJ2ZXJzKHZvaWQpXG4tLVxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmMtMTg2Ni1cbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jOjE4Njc6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTE4NjgtXHRcdGRsX3NlID0gXHUwMDI2cnEtXHUwMDNlZXh0X3NlcnZlcjtcbi0tXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0zNDUxPXN0YXRpYyB2b2lkIGRsX3NlcnZlcl9hZGRfYncoc3RydWN0IHJvb3RfZG9tYWluICpyZCwgaW50IGNwdSlcbi0tXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYy0zNDU4LVxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MzQ1OTojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmMtMzQ2MC1cdGRsX3NlID0gXHUwMDI2Y3B1X3JxKGNwdSktXHUwMDNlZXh0X3NlcnZlcjtcbi0tXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0zNDY2PXN0YXRpYyB1NjQgZGxfc2VydmVyX3JlYWRfYncoaW50IGNwdSlcbi0tXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYy0zNDczLVxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MzQ3NDojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmMtMzQ3NS1cdGlmIChjcHVfcnEoY3B1KS1cdTAwM2VleHRfc2VydmVyLmRsX3NlcnZlciBcdTAwMjZcdTAwMjZcbi0tXG5rZXJuZWwvc2NoZWQvZGVidWcuYz00OTQ9c3RhdGljIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfc2NoZWQ7XG5rZXJuZWwvc2NoZWQvZGVidWcuYy00OTUtXG5rZXJuZWwvc2NoZWQvZGVidWcuYzo0OTY6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTQ5Ny1zdGF0aWMgc3NpemVfdFxuLS1cbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jPTU2MT1zdGF0aWMgdm9pZCBkZWJ1Z2ZzX2V4dF9zZXJ2ZXJfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTU4MC19XG5rZXJuZWwvc2NoZWQvZGVidWcuYzo1ODE6I2VuZGlmIC8qIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgKi9cbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTU4Mi1cbi0tXG5rZXJuZWwvc2NoZWQvZGVidWcuYz03MTI9c3RhdGljIF9faW5pdCBpbnQgc2NoZWRfaW5pdF9kZWJ1Zyh2b2lkKVxuLS1cbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTc2OS1cdGRlYnVnZnNfZmFpcl9zZXJ2ZXJfaW5pdCgpO1xua2VybmVsL3NjaGVkL2RlYnVnLmM6NzcwOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvZGVidWcuYy03NzEtXHRkZWJ1Z2ZzX2V4dF9zZXJ2ZXJfaW5pdCgpO1xuLS1cbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jPTE0MDY9dm9pZCBwcm9jX3NjaGVkX3Nob3dfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcbi0tXG5rZXJuZWwvc2NoZWQvZGVidWcuYy0xNTA1LVx0fVxua2VybmVsL3NjaGVkL2RlYnVnLmM6MTUwNjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL2RlYnVnLmMtMTUwNy1cdF9fUFMoXCYjMzQ7ZXh0LmVuYWJsZWRcJiMzNDssIHRhc2tfb25fc2N4KHApKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTY0MT12b2lkIHNjeF9zZXRfdGFza19zdGF0ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHUzMiBzdGF0ZSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTY5Ny0gKiBzY3hfdGFza3MgY2FuIGJlIHJlbW92ZWQgaW4gZmF2b3Igb2YgYWx3YXlzIHVzaW5nIGNncm91cCBpdGVyYXRpb24gaWZcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Njk4OiAqIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgZGVwZW5kcyBvbiBDT05GSUdfQ0dST1VQUy5cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjk5LSAqXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuaC04LSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuaDo5OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTEwLVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg9Mzk9Ym9vbCBzY3hfcHJpb19sZXNzKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqYSwgY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpiLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtNDItXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oOjQzOiNlbHNlXHQvKiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTQ0LVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg9NTc9c3RhdGljIGlubGluZSB2b2lkIGluaXRfc2NoZWRfZXh0X2NsYXNzKHZvaWQpIHt9XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTU4LVxua2VybmVsL3NjaGVkL2V4dC9leHQuaDo1OTojZW5kaWZcdC8qIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtNjAtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oOjYxOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTYyLXZvaWQgX19zY3hfdXBkYXRlX2lkbGUoc3RydWN0IHJxICpycSwgYm9vbCBpZGxlLCBib29sIGRvX25vdGlmeSk7XG4tLVxua2VybmVsL3NjaGVkL2lkbGUuYz01NTc9c3RhdGljIHZvaWQgdXBkYXRlX2N1cnJfaWRsZShzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9pZGxlLmMtNTY5LVx0ZGxfc2VydmVyX3VwZGF0ZV9pZGxlKFx1MDAyNnJxLVx1MDAzZWZhaXJfc2VydmVyLCBkZWx0YV9leGVjKTtcbmtlcm5lbC9zY2hlZC9pZGxlLmM6NTcwOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvaWRsZS5jLTU3MS1cdGRsX3NlcnZlcl91cGRhdGVfaWRsZShcdTAwMjZycS1cdTAwM2VleHRfc2VydmVyLCBkZWx0YV9leGVjKTtcbi0tXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD0xOTQ9c3RhdGljIGlubGluZSBpbnQgbm9ybWFsX3BvbGljeShpbnQgcG9saWN5KVxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTk1LXtcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjE5NjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTk3LVx0aWYgKHBvbGljeSA9PSBTQ0hFRF9FWFQpXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9NjgxPXN0cnVjdCBjZnNfcnEge1xuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTc3OS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjc4MDojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxua2VybmVsL3NjaGVkL3NjaGVkLmgtNzgxLS8qIHNjeF9ycS1cdTAwM2VmbGFncywgcHJvdGVjdGVkIGJ5IHRoZSBycSBsb2NrICovXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9ODExPXN0cnVjdCBzY3hfcnEge1xuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTg1MC19O1xua2VybmVsL3NjaGVkL3NjaGVkLmg6ODUxOiNlbmRpZiAvKiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUICovXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC04NTItXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTE1OT1zdHJ1Y3QgcnEge1xuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTEyMTMtXHRzdHJ1Y3QgZGxfcnFcdFx0ZGw7XG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoxMjE0OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xMjE1LVx0c3RydWN0IHNjeF9ycVx0XHRzY3g7XG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTg4NT1leHRlcm4gc3RydWN0IGJhbGFuY2VfY2FsbGJhY2sgYmFsYW5jZV9wdXNoX2NhbGxiYWNrO1xua2VybmVsL3NjaGVkL3NjaGVkLmgtMTg4Ni1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjE4ODc6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTE4ODgtZXh0ZXJuIGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyBleHRfc2NoZWRfY2xhc3M7XG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTkwND1zdGF0aWMgaW5saW5lIHZvaWQgc2N4X3JxX2Nsb2NrX2ludmFsaWRhdGUoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xOTEwLVxua2VybmVsL3NjaGVkL3NjaGVkLmg6MTkxMTojZWxzZSAvKiAhQ09ORklHX1NDSEVEX0NMQVNTX0VYVDogKi9cbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTE5MTItI2RlZmluZSBzY3hfZW5hYmxlZCgpXHRcdGZhbHNlXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTkxNj1zdGF0aWMgaW5saW5lIHZvaWQgc2N4X3JxX2Nsb2NrX2ludmFsaWRhdGUoc3RydWN0IHJxICpycSkge31cbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjE5MTc6I2VuZGlmIC8qICFDT05GSUdfU0NIRURfQ0xBU1NfRVhUICovXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xOTE4LVxuLS1cbmtlcm5lbC9zY2hlZC9zY2hlZC5oPTI4NDE9c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3Qgc2NoZWRfY2xhc3MgKm5leHRfYWN0aXZlX2NsYXNzKGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqY2xhc3MpXG4tLVxua2VybmVsL3NjaGVkL3NjaGVkLmgtMjg0My1cdGNsYXNzJiM0MzsmIzQzOztcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjI4NDQ6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTI4NDUtXHRpZiAoc2N4X3N3aXRjaGVkX2FsbCgpIFx1MDAyNlx1MDAyNiBjbGFzcyA9PSBcdTAwMjZmYWlyX3NjaGVkX2NsYXNzKVxuLS1cbmtlcm5lbC9zY2hlZC90b3BvbG9neS5jPTQ3ND12b2lkIHJxX2F0dGFjaF9yb290KHN0cnVjdCBycSAqcnEsIHN0cnVjdCByb290X2RvbWFpbiAqcmQpXG4tLVxua2VybmVsL3NjaGVkL3RvcG9sb2d5LmMtNTEyLVxua2VybmVsL3NjaGVkL3RvcG9sb2d5LmM6NTEzOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXG5rZXJuZWwvc2NoZWQvdG9wb2xvZ3kuYy01MTQtXHRpZiAocnEtXHUwMDNlZXh0X3NlcnZlci5kbF9zZXJ2ZXIpXG4tLVxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmM9MjQ9c3RhdGljIGludCBfX2luaXQgcmVnaXN0ZXJfZGVhZGxpbmUodm9pZClcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5jLTI1LXtcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5jOjI2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1NDSEVEX0NMQVNTX0VYVCkpIHtcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5jLTI3LVx0XHRydl9leHRfc2NoZWRfY2xhc3MgPSAodm9pZCAqKWthbGxzeW1zX2xvb2t1cF9uYW1lKFwmIzM0O2V4dF9zY2hlZF9jbGFzc1wmIzM0Oyk7XG4tLVxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmg9Nzc9c3RhdGljIGlubGluZSBib29sIHRhc2tfaXNfc2N4X2VuYWJsZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaC03OC17XG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaDo3OTpcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19TQ0hFRF9DTEFTU19FWFQpIFx1MDAyNlx1MDAyNlxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmgtODAtXHQgICAgICAgdHNrLVx1MDAzZXNjaGVkX2NsYXNzID09IHJ2X2V4dF9zY2hlZF9jbGFzcztcbi0tXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaD0xNTc9c3RhdGljIGlubGluZSBpbnQgaW5pdF9zdG9yYWdlKGJvb2wgc2tpcF90YXNrcylcbi0tXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaC0xNjQtXHRcdFx0Z290byBmYWlsO1xua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmg6MTY1Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0NIRURfQ0xBU1NfRVhUKSBcdTAwMjZcdTAwMjZcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5oLTE2Ni1cdFx0ICAgICFkYV9jcmVhdGVfZW1wdHlfc3RvcmFnZShleHRfc2VydmVyX2lkKGNwdSkpKVxuLS1cbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9ub21pc3Mvbm9taXNzLmM9MTU3PXN0YXRpYyB2b2lkIGhhbmRsZV9zY2hlZF9zd2l0Y2godm9pZCAqZGF0YSwgYm9vbCBwcmVlbXB0LFxuLS1cbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9ub21pc3Mvbm9taXNzLmMtMTgwLVx0XHRoYW5kbGVfc2VydmVyX3N3aXRjaChuZXh0LCBjcHUsIERMX1NFUlZFUl9GQUlSKTtcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9ub21pc3Mvbm9taXNzLmM6MTgxOlx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0NIRURfQ0xBU1NfRVhUKSlcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9ub21pc3Mvbm9taXNzLmMtMTgyLVx0XHRcdGhhbmRsZV9zZXJ2ZXJfc3dpdGNoKG5leHQsIGNwdSwgRExfU0VSVkVSX0VYVCk7XG4tLVxudG9vbHMvc2NoZWRfZXh0L0tjb25maWc9OD1DT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnOjk6Q09ORklHX1NDSEVEX0NMQVNTX0VYVD15XG50b29scy9zY2hlZF9leHQvS2NvbmZpZy0xMC1cbi0tXG50b29scy9zY2hlZF9leHQvUkVBRE1FLm1kPTU2PUNPTkZJR19CUEY9eVxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZDo1NzpDT05GSUdfU0NIRURfQ0xBU1NfRVhUPXlcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQtNTgtQ09ORklHX0JQRl9TWVNDQUxMPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zY2hlZF9leHQvY29uZmlnOjE6Q09ORklHX1NDSEVEX0NMQVNTX0VYVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zY2hlZF9leHQvY29uZmlnLTItQ09ORklHX0NHUk9VUFM9eVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODAzNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTY2hlZHVsZXIgRXh0ZW5zaW9uIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWcgb3B0aW9uIGlzIGBTQ0hFRF9DTEFTU19FWFRgLCBhbmQgdGhlIGZ1bmN0aW9uIHdlJiMzOTtyZSBsb29raW5nIGF0IGlzIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYW55IGludGVyZXN0aW5nIG5ldyBzdXJmYWNlIGFyZWEuIFRoZSBwYXRjaCBhZGRzIGEgY2hlY2ssIHNwZWNpZmljYWxseToKCmBgYGMKCQkvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovCgkJaWYgKHVubGlrZWx5KGRzcS0mZ3Q7aWQgPT0gU0NYX0RTUV9JTlZBTElEKSkKCQkJY29udGludWU7CmBgYAoKUmlnaHQsIHRoaXMgaXMgYSByYWNlIGNvbmRpdGlvbiBmaXggcmVsYXRlZCB0byBgZGVzdHJveV9kc3EoKWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBFc3NlbnRpYWxseSwgaXQgcHJldmVudHMgYSB1c2UtYWZ0ZXItZnJlZSBpc3N1ZS4gVGhpcyBpcyAqZGVmaW5pdGVseSogYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGNvcmUgYHNjaGVkX2V4dGAgKHNjaGVkdWxlciBleHRlbnNpb24pIGltcGxlbWVudGF0aW9uLiBTaW5jZSBpdCYjMzk7cyBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiwgaXTigJlzIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSeKAmW0gdGhpbmtpbmcgYFdvcnRoRnV6emluZz10cnVlYCBpcyB0aGUgcmlnaHQgY2FsbCBoZXJlLgoKTm93LCBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBmaW5kIGl0cyBjYWxsZXJzLiBMZXTigJlzIHNlZeKApiBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxlZCBieSBgcnVuX2RlZmVycmVkYCwgd2hpY2ggaXMgaW4gdHVybiBjYWxsZWQgYnkgYHNjeF9icGZfcnVuX2RlZmVycmVkYCBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIHRha2UgYSBxdWljayBsb29rIGF0IGBydW5fZGVmZXJyZWRgIHRvIGNvbmZpcm0gdGhlIGNhbGwgcGF0aCBhbmQgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydW5fZGVmZXJyZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9MjUzPU1PRFVMRV9QQVJNX0RFU0MoYnlwYXNzX2xiX2ludHZfdXMsIFwmIzM0O2J5cGFzcyBsb2FkIGJhbGFuY2UgaW50ZXJ2YWwgaW4gbWljcm9zZWNvbmRzICgwIChkaXNhYmxlKSB0byAxMHMpXCYjMzQ7KTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI1OS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjYwOnN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjYxLXN0YXRpYyBib29sIHRhc2tfZGVhZF9hbmRfZG9uZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTk1PXN0YXRpYyB2b2lkIGRlZmVycmVkX2JhbF9jYl93b3JrZm4oc3RydWN0IHJxICpycSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTk2LXtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTk3Olx0cnVuX2RlZmVycmVkKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTk4LX1cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMDA9c3RhdGljIHZvaWQgZGVmZXJyZWRfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTAwNC1cdHJhd19zcGluX3JxX2xvY2socnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDA1Olx0cnVuX2RlZmVycmVkKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTAwNi1cdHNjeF9ycV9sb2NrX2Ryb3AocnEpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzM2MD1zdGF0aWMgZW51bSBzY3hfZHNwX3ZlcmRpY3QgZGlzcGF0Y2hfY29yZV9waWNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMzg5LVx0XHRycS1cdTAwM2VzY3guZmxhZ3MgXHUwMDI2PSB+U0NYX1JRX0JBTF9DQl9QRU5ESU5HO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMzkwOlx0XHRydW5fZGVmZXJyZWQocnEpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMzkxLVx0fVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzYyNT1zdGF0aWMgdm9pZCB0YXNrX3dva2VuX3NjeChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM2MjYte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNjI3Olx0cnVuX2RlZmVycmVkKHJxKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzYyOC19XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NjExPXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NDgtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ2NDk6c3RhdGljIHZvaWQgcnVuX2RlZmVycmVkKHN0cnVjdCBycSAqcnEpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTI2MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYHJ1bl9kZWZlcnJlZGAgRnVuY3Rpb24gQ2FsbGVycyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBydW5fZGVmZXJyZWRgIGlzIHRyaWdnZXJlZCBieSBhIGhhbmRmdWwgb2YgZnVuY3Rpb25zOiBgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbmAsIGBkZWZlcnJlZF9pcnFfd29ya2ZuYCwgYGRpc3BhdGNoX2NvcmVfcGlja2AsIGFuZCBgdGFza193b2tlbl9zY3hgLiBJbnRlcmVzdGluZy4gQW5kLCBpZiBJJiMzOTttIHJlYWRpbmcgdGhpcyByaWdodCwgYHRhc2tfd29rZW5fc2N4YCBpcyBhIGNhbGxiYWNrIHRpZWQgdG8gdGhlIHNjaGVkdWxlciBjbGFzcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGludmVzdGlnYXRpb24uIExldCYjMzk7cyBkaWcgaW50byBgdGFza193b2tlbl9zY3hgIGFuZCBhbHNvIHRoYXQgYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gIGZ1bmN0aW9uLCB0aGV5IHNlZW0gbGlrZSB0aGUgbW9zdCByZWxldmFudCByaWdodCBub3cuCgpJJiMzOTttIHRoaW5raW5nIGB0YXNrX3dva2VuX3NjeGAgaXMgYSBwcm9taXNpbmcgdGFyZ2V0IGZvciBub3cuCgpXYWl0LCB3aGF0IGFib3V0IGBkZXN0cm95X2RzcWA/IFRoYXQgY29tbWVudCBpcyBtYWtpbmcgbWUgcmFpc2UgYW4gZXllYnJvdzsgaXQgbWVudGlvbnMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gYW5kIGludmFsaWRhdGlvbiBvZiBgQGRzcWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBkZXN0cm95X2RzcWAgaXMgc29tZSBraW5kIG9mIGVCUEYga2Z1bmMgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRoYXQgY291bGQgYmUgc2lnbmlmaWNhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rlc3Ryb3lfZHNxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ2MTE9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDYzOS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDY0MDpcdFx0LyogZGVzdHJveV9kc3EoKSBtYXkgaGF2ZSByYWNlZCBhbmQgaW52YWxpZGF0ZWQgQGRzcSwgbm90aGluZyB0byByZWVucSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NjQxLVx0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01MTI3PXN0YXRpYyBERUZJTkVfSVJRX1dPUksoZnJlZV9kc3FfaXJxX3dvcmssIGZyZWVfZHNxX2lycV93b3JrZm4pO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MTI4LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1MTI5OnN0YXRpYyB2b2lkIGRlc3Ryb3lfZHNxKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgdTY0IGRzcV9pZClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTEzMC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01MzM4PXN0YXRpYyB2b2lkIHNjeF9zY2hlZF9mcmVlX3JjdV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU0MDMtXHRcdHdoaWxlICghSVNfRVJSX09SX05VTEwoKGRzcSA9IHJoYXNodGFibGVfd2Fsa19uZXh0KFx1MDAyNnJodF9pdGVyKSkpKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1NDA0Olx0XHRcdGRlc3Ryb3lfZHNxKHNjaCwgZHNxLVx1MDAzZWlkKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTQwNS1cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk2NzE9X19icGZfa2Z1bmMgczMyIHNjeF9icGZfZHNxX25yX3F1ZXVlZCh1NjQgZHNxX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzA4LS8qKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzA5OiAqIHNjeF9icGZfZGVzdHJveV9kc3EgLSBEZXN0cm95IGEgY3VzdG9tIERTUVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzEwLSAqIEBkc3FfaWQ6IERTUSB0byBkZXN0cm95XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzE3LSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzE4Ol9fYnBmX2tmdW5jIHZvaWQgc2N4X2JwZl9kZXN0cm95X2RzcSh1NjQgZHNxX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3MTkte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyNC1cdGlmIChzY2gpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk3MjU6XHRcdGRlc3Ryb3lfZHNxKHNjaCwgZHNxX2lkKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyNi19XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDcxOD1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbnJfcXVldWVkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDcxOTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kZXN0cm95X2RzcSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA3MjAtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3BlZWssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1VfUFJPVEVDVEVEIHwgS0ZfUkVUX05VTEwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTA2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBLZXJuZWwgRnVuY3Rpb24gUmFjZSBDb25kaXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYC4gSSBrbm93IHRoaXMgaXMgYSBCUEYga2Z1bmMsIHNvIHRoYXQgaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLiBUaGUgY3JpdGljYWwgcmFjZSBoZXJlIGlzIGJldHdlZW4gYHNjeF9icGZfZGVzdHJveV9kc3FgIGFuZCBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgaXMgdHJpZ2dlcmVkLiBSaWdodCwgaXQmIzM5O3MgY2FsbGVkIGJ5IGBydW5fZGVmZXJyZWRgLiBBbmQgYHJ1bl9kZWZlcnJlZGAgaGFzIG11bHRpcGxlIHBvdGVudGlhbCBlbnRyeSBwb2ludHM6IGB0YXNrX3dva2VuX3NjeGAsIGBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuYCwgYGRlZmVycmVkX2lycV93b3JrZm5gLCBhbmQgYGRpc3BhdGNoX2NvcmVfcGlja2AuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIHNldCB0byBjaGVjay4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGRpc3BhdGNoX2NvcmVfcGlja2AgZ2V0cyBpbnZva2VkLiBJcyB0aGF0IGNhbGxlZCBieSBgcGlja19uZXh0X3Rhc2tfZXh0YCBvciBzb21ldGhpbmcgYW5hbG9nb3VzPyBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgY2FsbCBncmFwaCBmb3IgdGhhdCBmdW5jdGlvbiB0byBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyBhY2N1cmF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGlzcGF0Y2hfY29yZV9waWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTMzMjM9c3RhdGljIGVudW0gc2N4X2RzcF92ZXJkaWN0IGRpc3BhdGNoX3BpY2soc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZixcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMzNTktICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjMzNjA6c3RhdGljIGVudW0gc2N4X2RzcF92ZXJkaWN0IGRpc3BhdGNoX2NvcmVfcGljayhzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgcnFfZmxhZ3MgKnJmLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMzYxLVx0XHRcdFx0XHQgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQwOC0jZWxzZVx0LyogQ09ORklHX1NDSEVEX0NPUkUgKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzQwOTpzdGF0aWMgZW51bSBzY3hfZHNwX3ZlcmRpY3QgZGlzcGF0Y2hfY29yZV9waWNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0MTAtXHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNDE3PWRvX3BpY2tfdGFza19zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZiwgYm9vbCBmb3JjZV9zY3gpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDI4LVx0aWYgKHNjaGVkX2NvcmVfZW5hYmxlZChycSkpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0Mjk6XHRcdHZlcmRpY3QgPSBkaXNwYXRjaF9jb3JlX3BpY2socnEsIHJmLCBwcmV2KTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQzMC1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyNTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBJbnF1aXJ5OiBEZWVwIERpdmUgaW50byBgc2NoZWRfZXh0YCoqCgpPa2F5LCBzbyBgZG9fcGlja190YXNrX3NjeGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB0aGUgbmV4dCB0YXNrIGZvciBgc2NoZWRfZXh0YC4gVGhhdCBtZWFucyBwb3RlbnRpYWwgZm9jdXMgYXJlYXMgYXJlIGVpdGhlciBgc2N4X2JwZl9kZXN0cm95X2RzcWAsIGBkb19waWNrX3Rhc2tfc2N4YCBpdHNlbGYsIG9yIHBlcmhhcHMgYHRhc2tfd29rZW5fc2N4YC4gSGFuZyBvbi4uLiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgYSBCUEYga2Z1bmMsIGlzbiYjMzk7dCBpdD8gTWVhbmluZyBpdCYjMzk7cyBjYWxsZWQgKmZyb20qIEJQRiBwcm9ncmFtcy4gSW50ZXJlc3RpbmcuIE5vdyBJIHJlbWVtYmVyIOKAkyBmdXp6aW5nIHRoZXNlIGtmdW5jcywgdGhhdCYjMzk7cyBzeXprYWxsZXImIzM5O3MgZG9tYWluLiBIbW0uLi4gTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHJlYWNoYWJpbGl0eSBmb3IgYHNjeF9icGZfZGVzdHJveV9kc3FgLiBZZXAsIGNvbmZpcm1lZC4gSXQmIzM5O3MgaW5kZWVkIGEga2Z1bmMuIEFscmlnaHQsIGxldCYjMzk7cyBhbHNvIG1ha2Ugc3VyZSBgc2N4X2JwZl9jcmVhdGVfZHNxYCBpcyBpbiBwbGFjZSwganVzdCBmb3IgZ29vZCBtZWFzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3hfYnBmX2NyZWF0ZV9kc3EmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTM3Nz1fX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05Mzc5LS8qKlxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MzgwOiAqIHNjeF9icGZfY3JlYXRlX2RzcSAtIENyZWF0ZSBhIGN1c3RvbSBEU1Fcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTM4MS0gKiBAZHNxX2lkOiBEU1EgdG8gY3JlYXRlXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05Mzg3LSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5Mzg4Ol9fYnBmX2tmdW5jIHMzMiBzY3hfYnBmX2NyZWF0ZV9kc3EodTY0IGRzcV9pZCwgczMyIG5vZGUsIGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTM4OS17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NDM2PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTQzNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcmVhdGVfZHNxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU0xFRVBBQkxFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NDM4LS8qIGFsc28gaW4gc2N4X2tmdW5jX2lkc19kaXNwYXRjaDogYWxzbyBjYWxsYWJsZSBmcm9tIG9wcy5kaXNwYXRjaCgpICovXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NjcxPV9fYnBmX2tmdW5jIHMzMiBzY3hfYnBmX2RzcV9ucl9xdWV1ZWQodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcxMy0gKiBEZXN0cm95IHRoZSBjdXN0b20gRFNRIGlkZW50aWZpZWQgYnkgQGRzcV9pZC4gT25seSBEU1FzIGNyZWF0ZWQgd2l0aFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzE0OiAqIHNjeF9icGZfY3JlYXRlX2RzcSgpIGNhbiBiZSBkZXN0cm95ZWQuIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUgRFNRIGlzXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3MTUtICogZW1wdHkgYW5kIG5vIGZ1cnRoZXIgdGFza3MgYXJlIGRpc3BhdGNoZWQgdG8gaXQuIElnbm9yZWQgaWYgY2FsbGVkIG9uIGEgRFNRXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTc2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUga2Z1bmMgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZXNlIGtmdW5jcywgYHNjeF9icGZfY3JlYXRlX2RzcWAgYW5kIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYC4gUmlnaHQsIHRob3NlIGFyZSBkZWZpbml0ZWx5IGtmdW5jcywgbm8gZG91YnQgYWJvdXQgaXQuIFRoZSBmaXggSSYjMzk7bSBjaGFzaW5nIGlzIGFwcGFyZW50bHkgbHVya2luZyBpbiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBOb3csIHRoZSByZWxldmFudCBjb25maWdzIGFyZSBgU0NIRURfQ0xBU1NfRVhUYC4gQWgsIGJ1dCB3YWl0IGEgbWludXRlLCBgU0NIRURfQ0xBU1NfRVhUYCBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIGNvcnJlY3RseSBlbmFibGVkIGZvciB3aGF0IEkmIzM5O20gZG9pbmcuIFJpZ2h0LCByaWdodC4uLiBJIHNob3VsZCBjaGVjayBga2VybmVsL0tjb25maWcucHJlZW1wdGAgdG8gY29uZmlybSB0aGUgZnVsbCBkZXBlbmRlbmNpZXMgZm9yIGBTQ0hFRF9DTEFTU19FWFRgLCBlbnN1cmluZyBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcml0aWNhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNDSEVEX0NMQVNTX0VYVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9LY29uZmlnLnByZWVtcHQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL0tjb25maWcucHJlZW1wdD0xNTU9Y29uZmlnIFNDSEVEX0NPUkVcbi0tXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3Mi1cbmtlcm5lbC9LY29uZmlnLnByZWVtcHQ6MTczOmNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTc0LVx0Ym9vbCBcJiMzNDtFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI2MDUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIFByZWVtcHRpb24gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgYWJvdXQgcHJlZW1wdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTczLiBUaGF0IGFyZWEgdXN1YWxseSBob2xkcyB0aGUgY29yZSBkZWZpbml0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGUgcHJlZW1wdGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBsaWVzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgZnVuZGFtZW50YWwgY2hvaWNlcyB0aGVyZSB0aGF0IGRyaXZlIHRoZSBiZWhhdmlvcjogd2hldGhlciBpdCYjMzk7cyBmdWxsIHByZWVtcHRpb24sIHZvbHVudGFyeSBwcmVlbXB0aW9uLCBvciBtYXliZSBzb21lIG1vcmUgbnVhbmNlZCBjb25maWd1cmF0aW9ucy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0IHRoZSBhdXRob3JzIGNvbnNpZGVyZWQgY3JpdGljYWwgaW4gbWFraW5nIHRoZWlyIGRlY2lzaW9ucy4gSXQmIzM5O3MgcHJvYmFibHkgdGhlIGJhc2lzIHRvIHNlZSB0aGUgaW50ZXItcmVsYXRlZCBpbXBhY3RzIGluIG90aGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCB0b28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL0tjb25maWcucHJlZW1wdCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XHQgIHdoaWNoIGlzIHRoZSBsaWtlbHkgdXNhZ2UgYnkgTGludXggZGlzdHJpYnV0aW9ucywgdGhlcmUgc2hvdWxkXG4gMTcxOlx0XHQgIGJlIG5vIG1lYXN1cmFibGUgaW1wYWN0IG9uIHBlcmZvcm1hbmNlLlxuIDE3MjpcdFxuIDE3MzpcdGNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcbiAxNzQ6XHRcdGJvb2wgXCYjMzQ7RXh0ZW5zaWJsZSBTY2hlZHVsaW5nIENsYXNzXCYjMzQ7XG4gMTc1Olx0XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFx1MDAyNlx1MDAyNiBCUEZfSklUIFx1MDAyNlx1MDAyNiBERUJVR19JTkZPX0JURlxuIDE3NjpcdFx0c2VsZWN0IFNUQUNLVFJBQ0UgaWYgU1RBQ0tUUkFDRV9TVVBQT1JUXG4gMTc3Olx0XHRoZWxwXG4gMTc4Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgYSBuZXcgc2NoZWR1bGVyIGNsYXNzIHNjaGVkX2V4dCAoU0NYKSwgd2hpY2hcbiAxNzk6XHRcdCAgYWxsb3dzIHNjaGVkdWxpbmcgcG9saWNpZXMgdG8gYmUgaW1wbGVtZW50ZWQgYXMgQlBGIHByb2dyYW1zIHRvXG4gMTgwOlx0XHQgIGFjaGlldmUgdGhlIGZvbGxvd2luZzpcbiAxODE6XHRcbiAxODI6XHRcdCAgLSBFYXNlIG9mIGV4cGVyaW1lbnRhdGlvbiBhbmQgZXhwbG9yYXRpb246IEVuYWJsaW5nIHJhcGlkXG4gMTgzOlx0XHQgICAgaXRlcmF0aW9uIG9mIG5ldyBzY2hlZHVsaW5nIHBvbGljaWVzLlxuIDE4NDpcdFx0ICAtIEN1c3RvbWl6YXRpb246IEJ1aWxkaW5nIGFwcGxpY2F0aW9uLXNwZWNpZmljIHNjaGVkdWxlcnMgd2hpY2hcbiAxODU6XHRcdCAgICBpbXBsZW1lbnQgcG9saWNpZXMgdGhhdCBhcmUgbm90IGFwcGxpY2FibGUgdG8gZ2VuZXJhbC1wdXJwb3NlXG4gMTg2Olx0XHQgICAgc2NoZWR1bGVycy5cbiAxODc6XHRcdCAgLSBSYXBpZCBzY2hlZHVsZXIgZGVwbG95bWVudHM6IE5vbi1kaXNydXB0aXZlIHN3YXAgb3V0cyBvZlxuIDE4ODpcdFx0ICAgIHNjaGVkdWxpbmcgcG9saWNpZXMgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMuXG4gMTg5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTQ1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uCgoqKk15IEFuYWx5c2lzIG9mIFNDSEVEX0NMQVNTX0VYVCBDb25maWd1cmF0aW9uIGFuZCBBc3NvY2lhdGVkIEZ1bmN0aW9ucyoqCgpSaWdodCwgc28gYFNDSEVEX0NMQVNTX0VYVGAgaXMgdGhlIGNvbmZpZ3VyYXRpb24ga2V5IEkmIzM5O20gd29ya2luZyB3aXRoIGhlcmUuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBOb3csIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgY3J1Y2lhbCBzeW1ib2xzIHJlbGF0ZWQgdG8gaXQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCBhbmQgYHNjeF9icGZfY3JlYXRlX2RzcWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uIOKAkyB0aGV5IHNlZW0gZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhlIGV4dGVuZGVkIHNjaGVkdWxlciBjbGFzcyYjMzk7cyBCUEYgaW50ZXJhY3Rpb25zLiBIb2xkIG9uLCB0aG91Z2guIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gU2luY2UgaXQmIzM5O3Mgc3RhdGljLCB0aGF0IG1lYW5zIGl0JiMzOTtzIGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0IGFuZCBub3QgdmlzaWJsZSBhcyBhIGZvY3VzIHN5bWJvbCBmcm9tIG91dHNpZGUuIEdvdHRhIGRpc2NvdW50IHRoYXQgb25lLiBBbHJpZ2h0LCBsZXQgbWUgZG91YmxlIGNoZWNrIHRoZSB2aXNpYmlsaXR5IG9mIGBkb19waWNrX3Rhc2tfc2N4YC4uLiBpdCYjMzk7cyB3b3J0aCBhIGxvb2sgdG8gY29uZmlybSBpZiBpdCYjMzk7cyBzdGF0aWMgb3Igbm90LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19waWNrX3Rhc2tfc2N4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTMxNzg9c3RhdGljIHZvaWQgcHV0X3ByZXZfdGFza19zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzI1My1cdFx0ICogbG9jYWxseSBydW5uYWJsZSBhbmQgY2FuIGxlZ2l0aW1hdGVseSBnbyBpZGxlIHdpdGggQHAgc3RpbGxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzI1NDpcdFx0ICogcnVubmFibGUgKHNlZSBkb19waWNrX3Rhc2tfc2N4KCkpLlxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMjU1LVx0XHQgKi9cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM0MTY9c3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0MTc6ZG9fcGlja190YXNrX3NjeChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgcnFfZmxhZ3MgKnJmLCBib29sIGZvcmNlX3NjeClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQxOC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNDc5PXN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpY2tfdGFza19zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZilcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQ4MC17XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0ODE6XHRyZXR1cm4gZG9fcGlja190YXNrX3NjeChycSwgcmYsIGZhbHNlKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQ4Mi19XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDg2LSAqXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0ODc6ICogVXNlIGRvX3BpY2tfdGFza19zY3goKSBkaXJlY3RseSB3aXRoIEBmb3JjZV9zY3ggZW5hYmxlZCwgc2luY2UgdGhlXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0ODgtICogZGxfc2VydmVyIG11c3QgYWx3YXlzIHNlbGVjdCBhIHNjaGVkX2V4dCB0YXNrLlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzQ5MT1leHRfc2VydmVyX3BpY2tfdGFzayhzdHJ1Y3Qgc2NoZWRfZGxfZW50aXR5ICpkbF9zZSwgc3RydWN0IHJxX2ZsYWdzICpyZilcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0OTUtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0OTY6XHRyZXR1cm4gZG9fcGlja190YXNrX3NjeChkbF9zZS1cdTAwM2VycSwgcmYsIHRydWUpO1xua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDk3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwMDcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBJbnF1aXJ5OiBTdGF0aWMgdnMuIE5vbi1TdGF0aWMgRnVuY3Rpb25zIGluIFNDWCBhbmQgQlBGIEludGVncmF0aW9uKioKCk9rYXksIHNvIGBkb19waWNrX3Rhc2tfc2N4YCBpcyBkZWZpbml0ZWx5IGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gTm93LCBJJiMzOTttIHR1cm5pbmcgbXkgYXR0ZW50aW9uIHRvIHRoZSBgc2N4X2JwZl9gIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBCUEYgc2lkZSBvZiB0aGluZ3MuIEhtbSwgYHNjeF9icGZfZGVzdHJveV9kc3FgIGxvb2tzIHByb21pc2luZy4gSXQmIzM5O3MgYSBgX19icGZfa2Z1bmNgIGFuZCAqbm90KiBzdGF0aWMsIHNvIHRoYXQgbWFrZXMgaXQgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIE1ha2VzIHNlbnNlIC0gZGVzdHJ1Y3Rpb24gbGlrZWx5IG5lZWRzIGV4dGVybmFsIGFjY2Vzcy4KCk5vdywgd2hhdCBhYm91dCBgc2N4X2JwZl9jcmVhdGVfZHNxYD8gWWVwLCBzYW1lIHN0b3J5LiBBbHNvIGEgbm9uLXN0YXRpYyBrZnVuYywgYW5vdGhlciBrZXkgY2FuZGlkYXRlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zIGFuZCB3aGF0IHRoZXkgZXhwb3NlLgoKSSYjMzk7bSBnZXR0aW5nIHRoZSBmZWVsaW5nIEkgbWlnaHQgYmUgbWlzc2luZyBzb21lIHJlbGF0ZWQgZnVuY3Rpb25zLCBvciBwZXJoYXBzIEkgbmVlZCBhIGJyb2FkZXIgdmlldyBvZiB0aGlzIG1vZHVsZS4gVGltZSB0byBicm9hZGVuIHRoZSBzZWFyY2guIExldCYjMzk7cyBzZWUuLi5JJiMzOTtsbCBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9leHQuY2Agc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nIG5vbi1zdGF0aWMgaW4gdGhhdCBhcmVhLiBUaGlzIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBTQ1gtQlBGIGludGVncmF0aW9uIGxpdmVzLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O152b2lkIFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTYzNj11MzIgc2N4X2dldF90YXNrX3N0YXRlKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTY0MC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NjQxOnZvaWQgc2N4X3NldF90YXNrX3N0YXRlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTMyIHN0YXRlKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02NDIte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzA4LSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3MDk6dm9pZCBzY3hfdGFza19pdGVyX3N0YXJ0KHN0cnVjdCBzY3hfdGFza19pdGVyICppdGVyLCBzdHJ1Y3QgY2dyb3VwICpjZ3JwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03MTAte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NzMwPXN0YXRpYyB2b2lkIF9fc2N4X3Rhc2tfaXRlcl9ycV91bmxvY2soc3RydWN0IHNjeF90YXNrX2l0ZXIgKml0ZXIpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03NDctICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjc0ODp2b2lkIHNjeF90YXNrX2l0ZXJfdW5sb2NrKHN0cnVjdCBzY3hfdGFza19pdGVyICppdGVyKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03NDkte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NzczPXN0YXRpYyB2b2lkIHNjeF90YXNrX2l0ZXJfcmVsb2NrKHN0cnVjdCBzY3hfdGFza19pdGVyICppdGVyLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkwLSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3OTE6dm9pZCBzY3hfdGFza19pdGVyX3N0b3Aoc3RydWN0IHNjeF90YXNrX2l0ZXIgKml0ZXIpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc5Mi17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDQyPXN0YXRpYyB2b2lkIHNjaGVkdWxlX2RlZmVycmVkX2xvY2tlZChzdHJ1Y3QgcnEgKnJxKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA4Mjp2b2lkIHNjaGVkdWxlX2RzcV9yZWVucShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDgzLVx0XHRcdHU2NCByZWVucV9mbGFncywgc3RydWN0IHJxICpsb2NrZWRfcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMzI4PWJvb2wgc2N4X3NldF90YXNrX3NsaWNlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IHNsaWNlKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTM0OS0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTM1MDp2b2lkIHNjeF90YXNrX3NsaWNlX2VuZGVkKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTM1MS17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xNjM5PXN0YXRpYyB2b2lkIHNjeF9kaXNwYXRjaF9lbnF1ZXVlKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHJxICpycSxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE3ODEtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE3ODI6dm9pZCBzY3hfdGFza191bmxpbmtfZnJvbV9kc3Eoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTc4My17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xODAyLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxODAzOnZvaWQgc2N4X2Rpc3BhdGNoX2RlcXVldWUoc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xODA0LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTIwMTU9Ym9vbCBzY3hfcnFfb25saW5lKHN0cnVjdCBycSAqcnEpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yMDI2LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoyMDI3OnZvaWQgc2N4X2RvX2VucXVldWVfdGFzayhzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBlbnFfZmxhZ3MsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwMjgtXHRcdFx0IGludCBzdGlja3lfY3B1KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MjQxMz1zdGF0aWMgdm9pZCB3YWtldXBfcHJlZW1wdF9zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgd2FrZV9mbGFncylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI0MzYtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjI0Mzc6dm9pZCBzY3hfbW92ZV9sb2NhbF90YXNrX3RvX2xvY2FsX2RzcShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjQzOC1cdFx0XHRcdCAgICAgIHU2NCBlbnFfZmxhZ3MsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqc3JjX2RzcSxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTI4ODM9c3RhdGljIHZvaWQgZmluaXNoX2Rpc3BhdGNoKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjk1MC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mjk1MTp2b2lkIHNjeF9mbHVzaF9kaXNwYXRjaF9idWYoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgcnEgKnJxKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yOTUyLXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM0OTE9ZXh0X3NlcnZlcl9waWNrX3Rhc2soc3RydWN0IHNjaGVkX2RsX2VudGl0eSAqZGxfc2UsIHN0cnVjdCBycV9mbGFncyAqcmYpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNTAxLSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNTAyOnZvaWQgZXh0X3NlcnZlcl9pbml0KHN0cnVjdCBycSAqcnEpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MDMte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzY1Mj1zdGF0aWMgdm9pZCBoYW5kbGVfaG90cGx1ZyhzdHJ1Y3QgcnEgKnJxLCBib29sIG9ubGluZSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM3MDItXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM3MDM6dm9pZCBzY3hfcnFfYWN0aXZhdGUoc3RydWN0IHJxICpycSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzcwNC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNzA3LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNzA4OnZvaWQgc2N4X3JxX2RlYWN0aXZhdGUoc3RydWN0IHJxICpycSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzcwOS17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNzY4PXN0YXRpYyB2b2lkIHNjeF93YXRjaGRvZ193b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzc4Ni1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mzc4Nzp2b2lkIHNjeF90aWNrKHN0cnVjdCBycSAqcnEpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM3ODgte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzkyMj1zdGF0aWMgdm9pZCBfX3NjeF9lbmFibGVfdGFzayhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NTMtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM5NTQ6dm9pZCBzY3hfZW5hYmxlX3Rhc2soc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NTUte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9Mzk2MD1zdGF0aWMgdm9pZCBzY3hfZGlzYWJsZV90YXNrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk4OS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mzk5MDp2b2lkIF9fc2N4X2Rpc2FibGVfYW5kX2V4aXRfdGFzayhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk5MS17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MDIzLSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0MDI0OnZvaWQgc2N4X3N1Yl9pbml0X2NhbmNlbF90YXNrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MDI1LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQwMzUtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQwMzY6dm9pZCBzY3hfZGlzYWJsZV9hbmRfZXhpdF90YXNrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MDM3LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQwNTYtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQwNTc6dm9pZCBpbml0X3NjeF9lbnRpdHkoc3RydWN0IHNjaGVkX2V4dF9lbnRpdHkgKnNjeClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDA1OC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00MDg2PXN0YXRpYyB2b2lkIHNjeF90aWRfaGFzaF9pbnNlcnQoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDA5Ny1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDA5ODp2b2lkIHNjeF9wcmVfZm9yayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQwOTkte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDEwOT1pbnQgc2N4X2Zvcmsoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3Qga2VybmVsX2Nsb25lX2FyZ3MgKmthcmdzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDEzNS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDEzNjp2b2lkIHNjeF9wb3N0X2Zvcmsoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MTM3LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQxNjQtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQxNjU6dm9pZCBzY3hfY2FuY2VsX2Zvcmsoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MTY2LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQxOTQ9c3RhdGljIGJvb2wgdGFza19kZWFkX2FuZF9kb25lKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQyMDgtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQyMDk6dm9pZCBzY2hlZF9leHRfZGVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQyMTAte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDcwMT1ERUZJTkVfU1RBVElDX1BFUkNQVV9SV1NFTShzY3hfY2dyb3VwX29wc19yd3NlbSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ3MDItXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ3MDM6dm9pZCBzY3hfdGdfaW5pdChzdHJ1Y3QgdGFza19ncm91cCAqdGcpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ3MDQte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDc2NT1pbnQgc2N4X3RnX29ubGluZShzdHJ1Y3QgdGFza19ncm91cCAqdGcpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODA3LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0ODA4OnZvaWQgc2N4X3RnX29mZmxpbmUoc3RydWN0IHRhc2tfZ3JvdXAgKnRnKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODA5LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ4MzI9aW50IHNjeF9jZ3JvdXBfY2FuX2F0dGFjaChzdHJ1Y3QgY2dyb3VwX3Rhc2tzZXQgKnRzZXQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODkyLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0ODkzOnZvaWQgc2N4X2Nncm91cF9tb3ZlX3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICpwKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODk0LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5MTMtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5MTQ6dm9pZCBzY3hfY2dyb3VwX2NhbmNlbF9hdHRhY2goc3RydWN0IGNncm91cF90YXNrc2V0ICp0c2V0KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTE1LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5MzItXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5MzM6dm9pZCBzY3hfZ3JvdXBfc2V0X3dlaWdodChzdHJ1Y3QgdGFza19ncm91cCAqdGcsIHVuc2lnbmVkIGxvbmcgd2VpZ2h0KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTM0LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5NDgtXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5NDk6dm9pZCBzY3hfZ3JvdXBfc2V0X2lkbGUoc3RydWN0IHRhc2tfZ3JvdXAgKnRnLCBib29sIGlkbGUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5NTAte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDk2NC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDk2NTp2b2lkIHNjeF9ncm91cF9zZXRfYmFuZHdpZHRoKHN0cnVjdCB0YXNrX2dyb3VwICp0Zyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDk2Ni1cdFx0XHQgICAgIHU2NCBwZXJpb2RfdXMsIHU2NCBxdW90YV91cywgdTY0IGJ1cnN0X3VzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDk4OT1zdGF0aWMgc3RydWN0IGNncm91cCAqcm9vdF9jZ3JvdXAodm9pZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5OTgtICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5OTk6dm9pZCBzY3hfY2dyb3VwX2xvY2sodm9pZClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAwMC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01MDA2LVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1MDA3OnZvaWQgc2N4X2Nncm91cF91bmxvY2sodm9pZClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAwOC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01NjQxPWJvb2wgc2N4X3JjdV9jcHVfc3RhbGwoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnN0YWxsZWRfbWFzaylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU2OTItICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjU2OTM6dm9pZCBzY3hfc29mdGxvY2t1cCh1MzIgZHVyX3MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU2OTQte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTk2MT1zdGF0aWMgdm9pZCBlbmFibGVfYnlwYXNzX2RzcChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MDA3LS8qIG1heSBiZSBjYWxsZWQgd2l0aG91dCBob2xkaW5nIHNjeF9ieXBhc3NfbG9jayAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2MDA4OnZvaWQgc2N4X2Rpc2FibGVfYnlwYXNzX2RzcChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYwMDkte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NjA0Mz1zdGF0aWMgdm9pZCB1bmJ5cGFzc19yZW5vdGlmeV9pZGxlKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBzY3hfc2NoZWQgKnBvcyxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYwODctICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjYwODg6dm9pZCBzY3hfYnlwYXNzKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgYm9vbCBieXBhc3MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYwODkte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NjMwMD1zMzIgc2N4X2xpbmtfc2NoZWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM1NC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NjM1NTp2b2lkIHNjeF91bmxpbmtfc2NoZWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MzU2LXtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYzNzYtICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjYzNzc6dm9pZCBzY3hfZGlzYWJsZV9kdW1wKHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM3OC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MzgyLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2MzgzOnZvaWQgc2N4X2xvZ19zY2hlZF9kaXNhYmxlKHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM4NC17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz02NjY3PXN0YXRpYyB2b2lkIHNjeF9kaXNhYmxlKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgZW51bSBzY3hfZXhpdF9raW5kIGtpbmQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02NjgxLSAqL1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2NjgyOnZvaWQgc2N4X2ZsdXNoX2Rpc2FibGVfd29yayhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTY2ODMte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODU1NT1zdGF0aWMgdm9pZCBraWNrX2NwdXNfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODYxNS0gKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODYxNjp2b2lkIHByaW50X3NjeF9pbmZvKGNvbnN0IGNoYXIgKmxvZ19sdmwsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODYxNy17XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NTI5PV9fYnBmX2tmdW5jIGJvb2wgc2N4X2JwZl90YXNrX3NldF9kc3FfdnRpbWUoc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1NjQgdnRpbWUsXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTQyLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NTQzOnZvaWQgc2N4X2tpY2tfY3B1KHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgczMyIGNwdSwgdTY0IGZsYWdzKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTQ0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1ODMKCQkJCQkJCW91dHB1dDogMTQyCgkJCQkJCQl0aG91Z2h0czogMTMyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgc2NoZWRfZXh0IFJhY2UgQ29uZGl0aW9uIGFuZCBSZWxldmFudCBDb25maWd1cmF0aW9ucyoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgY2VudGVyZWQgYXJvdW5kIGlkZW50aWZ5aW5nIGtleSBzeW1ib2xzIGZvciB0aGlzIHBhdGNoLiBJIHF1aWNrbHkgaG9uZWQgaW4gb24gYHNjeF9icGZfY3JlYXRlX2RzcWAgYW5kIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCBhcyBwb3RlbnRpYWwgZm9jdXMgcG9pbnRzLiBUaGVuIEkgcmVhbGl6ZWQgdGhhdCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgaW52YWxpZGF0ZXMgdGhlIGRzcSwgd2hpY2ggbWFkZSBpdCBhIHByaW1hcnkgdGFyZ2V0LiBUaGUgcmFjZSBjb25kaXRpb24gc2VlbXMgdG8gYmUgYmV0d2VlbiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCwgdGhlIGxhdHRlciBiZWluZyBjYWxsZWQgYnkgYHJ1bl9kZWZlcnJlZGAgd2hlbiBhIHRhc2sgaXMgd29rZW4gb3IgZGlzcGF0Y2hlZC4gVGhpcyBzb2xpZGlmaWVzIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCBhbmQgYHNjeF9icGZfY3JlYXRlX2RzcWAgYXMgdGhlIGNlbnRyYWwgc3ltYm9scyB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2UuCgpUbyBjb25maXJtIHRoaXMsIEkgY2hlY2tlZCBpZiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgdGhlICpvbmx5KiB3YXkgdG8gZGVzdHJveSBhIGRzcS4gSXQgY2FsbHMgYGRlc3Ryb3lfZHNxYCwgYW5kIHRoZSBvbmx5IG90aGVyIHBsYWNlIGlzIGBzY3hfc2NoZWRfZnJlZV9yY3Vfd29ya2AsIHdoaWNoIGRlc3Ryb3lzICphbGwqIGRzcXMgd2hlbiB0aGUgc2NoZWR1bGVyIGlzIHVubG9hZGVkLiBTbywgYHNjeF9icGZfZGVzdHJveV9kc3FgIGlzIGRlZmluaXRlbHkgYSByZWxldmFudCBzeW1ib2wsIGFzIGlzIGBzY3hfYnBmX2NyZWF0ZV9kc3FgLgoKSSBxdWlja2x5IHZlcmlmaWVkIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbiBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgYHNjeF9icGZfZGVzdHJveV9kc3FgIGFuZCBgc2N4X2JwZl9jcmVhdGVfZHNxYCB3YXMgY29ycmVjdCwgYW5kIHRoYXQgYHNjeF9icGZfZHNxX25yX3F1ZXVlZGAgd2FzIGFsc28gYSBrZnVuYy4gVGhpcyBjZW1lbnRlZCB0aGUgZm9jdXMgb24gdGhlc2UgdHdvIGZ1bmN0aW9ucy4KCk5leHQsIEkgbmVlZGVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgd2FzIGBTQ0hFRF9DTEFTU19FWFRgLCBidXQgSSBpbW1lZGlhdGVseSByZWFsaXplZCBpdCBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAsIGFuZCBJIGhhZCB0byByZW1lbWJlciB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzLiAgSSBkb3VibGUtY2hlY2tlZCB0byBzZWUgaWYgdGhlcmUgd2VyZSBhbnkgb3RoZXIgY29uZmlncyBJIHNob3VsZCBhZGQgdG8gdGhlIGxpc3QgYW5kIGZvdW5kIGBDT05GSUdfQlBGX1NZU0NBTExgLCBgQ09ORklHX0JQRl9KSVRgLiAgVGhlbiwgSSBjb25zdWx0ZWQgYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTQ0hFRF9DTEFTU19FWFRgLiBUaGlzIGxlZCBtZSB0byBhbHNvIGluY2x1ZGUgYERFQlVHX0lORk9fQlRGYCBhbmQgdGhlIGRlcGVuZGVuY2llcywgYnV0IHNpbmNlIHRoZSBwcm9tcHQgYXNrZWQgbWUgdG8gb25seSBsaXN0IHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIEkgc2VsZWN0ZWQgYFNDSEVEX0NMQVNTX0VYVGAsIGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYERFQlVHX0lORk9fQlRGYC4KCkZpbmFsbHksIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmIHJlaW5mb3JjZWQgdGhlIGNvcmUgb2YgdGhlIGlzc3VlLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBiZXR3ZWVuIGBkZXN0cm95X2RzcWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gIGBkZXN0cm95X2RzcWAgc2V0cyBgZHNxLSZndDtpZGAgdG8gYFNDWF9EU1FfSU5WQUxJRGAuICBUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgRFNRIGhhcyBiZWVuIGludmFsaWRhdGVkLiBUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBzY2hlZHVsZXImIzM5O3MgYmVoYXZpb3IsIGFuZCB0aGUgZm9jdXMgc3ltYm9scyBhbmQgY29uZmlndXJhdGlvbnMgYWNjdXJhdGVseSByZWZsZWN0IHRoZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U0NIRURfQ0xBU1NfRVhUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3hfYnBmX2Rlc3Ryb3lfZHNxJiMzNDssCiAgICAmIzM0O3NjeF9icGZfY3JlYXRlX2RzcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBzY2hlZF9leHQgY29yZSBiZXR3ZWVuIGRlc3Ryb3lfZHNxKCkgYW5kIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBieSBjaGVja2luZyBpZiB0aGUgRFNRIGhhcyBiZWVuIGludmFsaWRhdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGVCUEYtYmFzZWQgc2NoZWR1bGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTQ0hFRF9DTEFTU19FWFQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7LAogICAgJiMzNDtERUJVR19JTkZPX0JURiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjeF9icGZfZGVzdHJveV9kc3EmIzM0OywKICAgICYjMzQ7c2N4X2JwZl9jcmVhdGVfZHNxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHNjaGVkX2V4dCBjb3JlIGJldHdlZW4gZGVzdHJveV9kc3EoKSBhbmQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycygpIGJ5IGNoZWNraW5nIGlmIHRoZSBEU1EgaGFzIGJlZW4gaW52YWxpZGF0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZUJQRi1iYXNlZCBzY2hlZHVsZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDI6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWF5IGhhdmUgaW52YWxpZGF0ZWQgYSBkaXNwYXRjaCBxdWV1ZSAoYGRzcWApIGJlZm9yZSBpdCBpcyBwcm9jZXNzZWQgaW4gYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKWAuIFRoZSBmaXggYWRkcyBhIGNoZWNrIGZvciBgZHNxLVx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRGAgdG8gc2tpcCB0aGUgaW52YWxpZGF0ZWQgcXVldWUuIFRoaXMgYWRkcmVzc2VzIGEgbG9naWNhbCByYWNlIGNvbmRpdGlvbiBvciBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUvaW52YWxpZCBzdGF0ZSBidWcsIHdoaWNoIGFyZSB3aXRoaW4gdGhlIHNjb3BlIG9mIHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN1Y2ggYXMgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcyBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UpLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGE0NTVkN2I3NTc0YmQ2ZTA1MDM0MTZlMTFmZjIyM2M5YTA5OThlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDAyOjU2OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMKaW5kZXggMjZkYmJiZmU1YTg3OC4uN2QwOTcyMDllNzc4MCAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jCkBAIC00NjM3LDYgJiM0Mzs0NjM3LDEwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSkKIAkJLyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovCiAJCXNtcF9tYigpOwogCiYjNDM7CQkvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovCiYjNDM7CQlpZiAodW5saWtlbHkoZHNxLSZndDtpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwogCQlCVUdfT04oZHNxLSZndDtpZCAmYW1wOyBTQ1hfRFNRX0ZMQUdfQlVJTFRJTik7CiAJCXJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFNjaGVkdWxlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCwgc3BlY2lmaWNhbGx5IGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBhIGNoZWNrOiBgaWYgKHVubGlrZWx5KGRzcS0mZ3Q7aWQgPT0gU0NYX0RTUV9JTlZBTElEKSkgY29udGludWU7YC4gQWxyaWdodCwgdGhpcyBpcyBhIHJhY2UgY29uZGl0aW9uIGZpeCDigJMgYGRlc3Ryb3lfZHNxKClgIG1pZ2h0IGludmFsaWRhdGUgYGRzcWAgYmVmb3JlIHdlIGdldCB0byBpdC4gTWFrZXMgc2Vuc2UuIElmIGBkc3EtJmd0O2lkYCBpcyBlcXVhbCB0byBgU0NYX0RTUV9JTlZBTElEYCwgaXQgc2tpcHMgdGhlIGByZWVucV91c2VyYCBjYWxsLgoKSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhpcyBtaWdodCBiZSBhYm91dCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSwgYnV0IGl0JiMzOTtzIGNsZWFybHkgYSB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1ZywgcmlnaHQ/IFdhaXQsIGhvbGQgb24uIEV2ZW4gcmVhZGluZyBgZHNxLSZndDtpZGAgKmFmdGVyKiBgZGVzdHJveV9kc3EoKWAgY291bGQgYmUgYSByZWFkIG9mIGZyZWVkIG1lbW9yeSDigJMgdGhhdCYjMzk7cyBhIGNsYXNzaWMgVUFGIHRoYXQgS0FTQU4gKnNob3VsZCogYmUgY2F0Y2hpbmcuIE9yLCBtYXliZSBpdCYjMzk7cyBqdXN0IGEgbG9naWNhbCBidWcgd2hlcmUgYGRzcS0mZ3Q7aWRgIGlzIHNldCB0byBgU0NYX0RTUV9JTlZBTElEYCwgYnV0IHRoZSBtZW1vcnkgaXMgc3RpbGwgdGVjaG5pY2FsbHkgdmFsaWQsIHBlcmhhcHMgUkNVIHByb3RlY3RlZCBvciBzb21ldGhpbmcgYWxvbmcgdGhvc2UgbGluZXMuIEluIGVpdGhlciBjYXNlLCBpdCYjMzk7cyBub3QgYWN0dWFsbHkgYW4gKnVuaW5pdGlhbGl6ZWQgbWVtb3J5KiBwcm9ibGVtLiBJdCYjMzk7cyBqdXN0IGNoZWNraW5nIGBkc3EtJmd0O2lkYC4KClNvLCBubywgdGhlcmUmIzM5O3Mgbm8gaW5oZXJlbnQgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzayBoZXJlLiBXZSYjMzk7cmUganVzdCBjaGVja2luZyB0aGUgdmFsdWUgb2YgdGhlIGBpZGAgZmllbGQuIEkmIzM5O20gY29uZmlkZW50IGVub3VnaCB0byBtYXJrIGBOZWVkc0tNU0FOYCBhcyBmYWxzZSBmb3IgdGhpcyBjaGFuZ2UuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBhZ2FpbiB0byBjb25maXJtIHRoYXQgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLi4uICpjaGVja3MgY29kZSouLi4gWWVwLCBsb29rcyBnb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3NjaGVkL2V4dC9leHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwODI9dm9pZCBzY2hlZHVsZV9kc3FfcmVlbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSxcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMzMtXHRcdC8qXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjExMzQ6XHRcdCAqIFBhaXJzIHdpdGggc21wX21iKCkgaW4gcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycygpIGFuZFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMTM1LVx0XHQgKiBndWFyYW50ZWVzIHRoYXQgdGhlcmUgaXMgYSByZWVucV91c2VyKCkgYWZ0ZXJ3YXJkcy5cbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1MzU9c3RhdGljIHZvaWQgcmVlbnFfdXNlcihzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSwgdTY0IHJlZW5xX2ZsYWdzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDYxMC1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDYxMTpzdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2MTIte1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDY0OT1zdGF0aWMgdm9pZCBydW5fZGVmZXJyZWQoc3RydWN0IHJxICpycSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NTYtXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2cnEtXHUwMDNlc2N4LmRlZmVycmVkX3JlZW5xX3VzZXJzKSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDY1NzpcdFx0cHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhycSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTQKCQkJCQkJCW91dHB1dDogMTYzCgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwcmV0dHkgc3BlY2lmaWMgaXNzdWUuIEl0IGxvb2tzIGxpa2UgdGhlIGBkZXN0cm95X2RzcSgpYCBmdW5jdGlvbiBoYXMgYSBzaWRlIGVmZmVjdDogaXQgaW52YWxpZGF0ZXMgdGhlIGBkc3FgIG9iamVjdC4gVGhlIGFkZGVkIGNoZWNrLCBgaWYgKHVubGlrZWx5KGRzcS0mZ3Q7aWQgPT0gU0NYX0RTUV9JTlZBTElEKSlgLCBzdWdnZXN0cyB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gcHJldmVudCBhIFVzZS1BZnRlci1JbnZhbGlkYXRlIChVQUkpIHNjZW5hcmlvLCBub3QgYSBVc2UtQWZ0ZXItRnJlZSAoVUFGKSBpc3N1ZS4gTXkgaW5pdGlhbCByZWFkIGlzIHRoYXQgdGhpcyBpcyBhIGxvZ2ljYWwgZXJyb3Igb3IsIG1vcmUgbGlrZWx5LCBhIHJhY2UgY29uZGl0aW9uLCByYXRoZXIgdGhhbiBhIHN0cmFpZ2h0Zm9yd2FyZCB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtLgoKR2l2ZW4gdGhhdCBLQVNBTiBvciBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzICpzaG91bGQqIGhhdmUgZmxhZ2dlZCBhIFVBRiBpZiB0aGUgbWVtb3J5IHdhcyBhY3R1YWxseSBmcmVlZCwgYnV0IHRoZXkgZGlkbiYjMzk7dCwgaXQgcmVhbGx5IHBvaW50cyB0byB0aGUgb2JqZWN0IGp1c3QgYmVpbmcgbWFya2VkIGFzIGludmFsaWQgYWZ0ZXIgdGhlIGBkZXN0cm95X2RzcSgpYCBjYWxsLiBBbmQgc2luY2UgdGhlIGZpeCBpcyBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgZm9yIHRoZSBpbnZhbGlkIHN0YXRlIGFuZCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gcmVhZCBvciBjb3B5IHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU5gIHRvIGZhbHNlLiBUaGlzIGlzIGEgdGFyZ2V0ZWQgZml4IHRvIGVuc3VyZSB0aGUgcHJvZ3JhbSBjb3JyZWN0bHkgaGFuZGxlcyB0aGUgaW52YWxpZGF0ZWQgc3RhdGUsIHJhdGhlciB0aGFuIGEgYnJvYWQgaW5pdGlhbGl6YXRpb24gaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1heSBoYXZlIGludmFsaWRhdGVkIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKSBiZWZvcmUgaXQgaXMgcHJvY2Vzc2VkIGluIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBUaGUgZml4IGFkZHMgYSBjaGVjayBmb3IgYGRzcS1cdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSURgIHRvIHNraXAgdGhlIGludmFsaWRhdGVkIHF1ZXVlLiBUaGlzIGFkZHJlc3NlcyBhIGxvZ2ljYWwgcmFjZSBjb25kaXRpb24gb3IgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlL2ludmFsaWQgc3RhdGUgYnVnLCB3aGljaCBhcmUgd2l0aGluIHRoZSBzY29wZSBvZiBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdWNoIGFzIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlKSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGBkZXN0cm95X2RzcSgpYCBtYXkgaGF2ZSBpbnZhbGlkYXRlZCBhIGRpc3BhdGNoIHF1ZXVlIChgZHNxYCkgYmVmb3JlIGl0IGlzIHByb2Nlc3NlZCBpbiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycygpYC4gVGhlIGZpeCBhZGRzIGEgY2hlY2sgZm9yIGBkc3EtXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEYCB0byBza2lwIHRoZSBpbnZhbGlkYXRlZCBxdWV1ZS4gVGhpcyBhZGRyZXNzZXMgYSBsb2dpY2FsIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9pbnZhbGlkIHN0YXRlIGJ1Zywgd2hpY2ggYXJlIHdpdGhpbiB0aGUgc2NvcGUgb2Ygc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3VjaCBhcyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSksIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjoxNC4zNTUxODI1MTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTY3Mzc3MzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTQ0hFRF9DTEFTU19FWFRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJERUJVR19JTkZPX0JURlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjeF9icGZfZGVzdHJveV9kc3FcIixcbiAgICBcInNjeF9icGZfY3JlYXRlX2RzcVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgZGVzdHJveV9kc3EoKWAgbWF5IGhhdmUgaW52YWxpZGF0ZWQgYSBkaXNwYXRjaCBxdWV1ZSAoYGRzcWApIGJlZm9yZSBpdCBpcyBwcm9jZXNzZWQgaW4gYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKWAuIFRoZSBmaXggYWRkcyBhIGNoZWNrIGZvciBgZHNxLVxcdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSURgIHRvIHNraXAgdGhlIGludmFsaWRhdGVkIHF1ZXVlLiBUaGlzIGFkZHJlc3NlcyBhIGxvZ2ljYWwgcmFjZSBjb25kaXRpb24gb3IgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlL2ludmFsaWQgc3RhdGUgYnVnLCB3aGljaCBhcmUgd2l0aGluIHRoZSBzY29wZSBvZiBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdWNoIGFzIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlKSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgc2NoZWRfZXh0IGNvcmUgYmV0d2VlbiBkZXN0cm95X2RzcSgpIGFuZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKCkgYnkgY2hlY2tpbmcgaWYgdGhlIERTUSBoYXMgYmVlbiBpbnZhbGlkYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBlQlBGLWJhc2VkIHNjaGVkdWxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MTQuMzU1MjAyODE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDYxOTgxNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0YTQ1NWQ3Yjc1NzRiZDZlMDUwMzQxNmUxMWZmMjIzYzlhMDk5OGU3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDE1IDAyOjU2OjEzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXFxuaW5kZXggMjZkYmJiZmU1YTg3OC4uN2QwOTcyMDllNzc4MCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXFxuKysrIGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xcbkBAIC00NjM3LDYgKzQ2MzcsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycyhzdHJ1Y3QgcnEgKnJxKVxcbiBcXHRcXHQvKiBzZWUgc2NoZWR1bGVfZHNxX3JlZW5xKCkgKi9cXG4gXFx0XFx0c21wX21iKCk7XFxuIFxcbitcXHRcXHQvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovXFxuK1xcdFxcdGlmICh1bmxpa2VseShkc3EtXFx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4gXFx0XFx0QlVHX09OKGRzcS1cXHUwMDNlaWQgXFx1MDAyNiBTQ1hfRFNRX0ZMQUdfQlVJTFRJTik7XFxuIFxcdFxcdHJlZW5xX3VzZXIocnEsIGRzcSwgcmVlbnFfZmxhZ3MpO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjE0LjgwMjI4Njg1NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg1NzU5ODA0NjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNDSEVEX0NMQVNTX0VYVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N4X2JwZl9kZXN0cm95X2RzcVwiLFxuICAgIFwic2N4X2JwZl9jcmVhdGVfZHNxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgc2NoZWRfZXh0IGNvcmUgYmV0d2VlbiBkZXN0cm95X2RzcSgpIGFuZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKCkgYnkgY2hlY2tpbmcgaWYgdGhlIERTUSBoYXMgYmVlbiBpbnZhbGlkYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBlQlBGLWJhc2VkIHNjaGVkdWxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGE0NTVkN2I3NTc0YmQ2ZTA1MDM0MTZlMTFmZjIyM2M5YTA5OThlN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDAyOjU2OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2V4dC9leHQuYyBiL2tlcm5lbC9zY2hlZC9leHQvZXh0LmNcbmluZGV4IDI2ZGJiYmZlNWE4NzguLjdkMDk3MjA5ZTc3ODAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG4rKysgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG5AQCAtNDYzNyw2ICs0NjM3LDEwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcbiBcdFx0Lyogc2VlIHNjaGVkdWxlX2RzcV9yZWVucSgpICovXG4gXHRcdHNtcF9tYigpO1xuIFxuK1x0XHQvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovXG4rXHRcdGlmICh1bmxpa2VseShkc3EtXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEKSlcbitcdFx0XHRjb250aW51ZTtcbitcbiBcdFx0QlVHX09OKGRzcS1cdTAwM2VpZCBcdTAwMjYgU0NYX0RTUV9GTEFHX0JVSUxUSU4pO1xuIFx0XHRyZWVucV91c2VyKHJxLCBkc3EsIHJlZW5xX2ZsYWdzKTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjE0LjgwMjI5NDE0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjk4OTUwNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU2NoZWR1bGVyIEV4dGVuc2lvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYC4gU2VlbXMgbGlrZSB3ZSBoYXZlIGEgY3JpdGljYWwgZml4IGhlcmUsIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIGBzY2hlZF9leHRgIChlQlBGLWJhc2VkIHNjaGVkdWxlcikgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgdGhleSd2ZSBhZGRlZCBhIGNoZWNrIGluIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgOiBgaWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKSBjb250aW51ZTtgLiBTbWFydCBtb3ZlLiBUaGlzIHN1Z2dlc3RzIGBkZXN0cm95X2RzcSgpYCBjb3VsZCBiZSByYWNpbmcgd2l0aCB0aGUgcmUtZW5xdWV1aW5nIGxvZ2ljLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gaWYgdGhlIGBkc3FgIChkZWZlcnJlZCBzY2hlZHVsaW5nIHF1ZXVlKSBnZXRzIGludmFsaWRhdGVkLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGEgYml0IGJldHRlci4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMsIEknbGwgbmVlZCB0byBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZmlndXJlIG91dCBob3cgYHNjaGVkX2V4dGAgaXMgZW5hYmxlZC4gVGltZSB0byBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciBib3RoIHRoZSBmdW5jdGlvbiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AgaXRzZWxmIHRvIHNlZSB3aGVyZSBpdCdzIHVzZWQgYW5kIGFsc28gbG9vayBmb3IgYW55IGNvbmZpZyBzeW1ib2xzIHJlbGF0ZWQgdG8gYFNDSEVEX0NMQVNTX0VYVGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBzZWUgaG93IHRoZSB3aG9sZSBzY2hlZHVsZXIgZXh0ZW5zaW9uIGdldHMgY29uZmlndXJlZCBhbmQgYnVpbHQuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgd2lsbCByZWFsbHkgaGVscCB0byBmaWd1cmUgb3V0IHRoZSB1c2UgY2FzZSBmb3IgdGhpcyBwYXRjaCBhbmQgaG93IGxpa2VseSB0aGlzIHJhY2UgY29uZGl0aW9uIGlzIHRvIG9jY3VyIGluIHJlYWwtd29ybGQgc2NlbmFyaW9zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDIzLCJPdXRwdXRUb2tlbnMiOjcwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MTkuMTcyMTkxODU5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMzgyMTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwODI9dm9pZCBzY2hlZHVsZV9kc3FfcmVlbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTEzMy1cXHRcXHQvKlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTEzNDpcXHRcXHQgKiBQYWlycyB3aXRoIHNtcF9tYigpIGluIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBhbmRcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMzUtXFx0XFx0ICogZ3VhcmFudGVlcyB0aGF0IHRoZXJlIGlzIGEgcmVlbnFfdXNlcigpIGFmdGVyd2FyZHMuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ1MzU9c3RhdGljIHZvaWQgcmVlbnFfdXNlcihzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSwgdTY0IHJlZW5xX2ZsYWdzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NjEwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDYxMTpzdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NjEyLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDY0OT1zdGF0aWMgdm9pZCBydW5fZGVmZXJyZWQoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY1Ni1cXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNnJxLVxcdTAwM2VzY3guZGVmZXJyZWRfcmVlbnFfdXNlcnMpKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDY1NzpcXHRcXHRwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHJxKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjE5LjIyMjU3ODE0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE5MDQyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MTkuMjY5Nzc3NTI2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0MTcwNzUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkxvY2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIHJlbGV2YW50IHRvIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYC4gVGhpcyBpc24ndCBhIGNvZGluZyBwcm9ibGVtICpwZXIgc2UqLCBtb3JlIG9mIGEgY29uZmlndXJhdGlvbiBhbmQgYnVpbGQgc3lzdGVtIGlzc3VlLiBXaGVyZSBkbyBJIHN0YXJ0PyBXZWxsLCBgZXh0LmNgIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgcGFydCBvZiB0aGUgXCJleHRcIiAob3IgXCJleHRlbmRlZFwiKSBzY2hlZHVsZXIsIGxpa2VseSBhIENQVSBzY2hlZHVsZXIgZXh0ZW5zaW9uLCBzbyBJJ20gYWxyZWFkeSB1c2luZyBteSBkb21haW4ga25vd2xlZGdlIHRvIHN0YXJ0IG1ha2luZyBzb21lIGVkdWNhdGVkIGd1ZXNzZXMuXG5cbkZpcnN0IGluc3RpbmN0OiBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQncyAqYWx3YXlzKiB0aGUgcGxhY2UgdG8gYmVnaW4gd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb24uIEnigJlsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGxvb2sgaW4uIEl0J3MgcHJvYmFibHkgc29tZXdoZXJlIHVuZGVyIGBrZXJuZWwvc2NoZWQvYCwgYnV0IHBvdGVudGlhbGx5IGEgZGVlcGVyIGxldmVsIGluIHRoZSBkaXJlY3RvcnkgdHJlZSBpZiBpdCBpcyByZWFsbHkgJ2V4dGVuZGVkJy4gSSB3b3VsZCBiZSBsb29raW5nIGZvciBzb21ldGhpbmcgdGhhdCBpcyBuYW1lZCBgS2NvbmZpZ2Agb3IgYENvbmZpZ2AuIFxuXG5OZXh0IHN0ZXAsIEknZCBwcm9iYWJseSB1c2UgYGZpbmRgIG9yIGBncmVwYCB0byBxdWlja2x5IHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGZvciBhIGBLY29uZmlnYCBmaWxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBgZXh0LmNgIG9yIHBhcnRzIG9mIGl0LCBsaWtlIGBleHRgIG9yIGBzY2hlZGAuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIGEgdmVyeSBicm9hZCBzZWFyY2ggYW5kIHRoZW4gbmFycm93IGRvd24gbXkgcmVzdWx0cy4gSeKAmWQgYmUgdGhpbmtpbmcgYWJvdXQgY29tbWFuZC1saW5lIHRvb2xzIHN1Y2ggYXMgYGZpbmRgLCBgZ3JlcGAgYW5kIHBvc3NpYmx5IGBhd2tgIHRvIG5hcnJvdyBkb3duIHRoZSBzZWFyY2guIEhvcGVmdWxseSwgdGhlIGZpbGUgd2lsbCBiZSB3ZWxsLWNvbW1lbnRlZC5cblxuT25jZSBJJ3ZlIGZvdW5kIGEgbGlrZWx5IGBLY29uZmlnYCBmaWxlLCBJJ2xsIGV4YW1pbmUgaXQgY2FyZWZ1bGx5LiBJJ20gbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLCB1c3VhbGx5IGRlZmluZWQgdXNpbmcgYGNvbmZpZyBcdTAwM2NzeW1ib2xcdTAwM2VgIGRpcmVjdGl2ZXMsIHdpdGggYXNzb2NpYXRlZCBkZXNjcmlwdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVGhlIGRlcGVuZGVuY2llcyBhcmUga2V5OyB0aGV5J2xsIHRlbGwgbWUgd2hlbiB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgdGhlIHNjaGVkdWxlciBpcyBldmVuIGluY2x1ZGVkLCBvciBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbi4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbHMgYW5kIHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIHRoaXMgY29kZS4gSSBtYXkgbmVlZCB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIHRvIG90aGVyIGBLY29uZmlnYCBmaWxlcyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgbGF5ZXJzIG9mIGFic3RyYWN0aW9uLlxuXG5GaW5hbGx5LCBJ4oCZbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIG9mIHRoZXNlIHN5bWJvbHMgYW5kIHRoZSBidWlsZCBwcm9jZXNzLiBJJ2xsIGxpa2VseSBuZWVkIHRvIGNvbnN1bHQgdGhlIGJ1aWxkIHN5c3RlbSBkb2N1bWVudGF0aW9uLCBzdWNoIGFzIHRoZSBgTWFrZWZpbGVgIGluIHRoYXQgZGlyZWN0b3J5LiBJIGNhbiBwcm9iYWJseSBmaWd1cmUgdGhpcyBvdXQgYnkgbG9va2luZyBhdCBob3cgdGhlIGJ1aWxkIHN5c3RlbSBpbmNsdWRlcyBhbmQgZXhjbHVkZXMgc3BlY2lmaWMgZmlsZXMgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9scy4gVGhpcyBtaWdodCBpbnZvbHZlIGxvb2tpbmcgYXQgdGhpbmdzIGxpa2UgYCNpZmRlZmAgc3RhdGVtZW50cyB3aXRoaW4gdGhlIGNvZGUsIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgYXJlIG1hcHBlZCB0byBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJZiB0aGlzIGlzIGEgZHJpdmVyLCB0aGUgbW9kdWxlIG1pZ2h0IG5lZWQgdGhlIGBtb2R1bGVgIG9wdGlvbiB0byBiZSBzZXQuIFRoaXMgaXMgYSBiaXQgb2YgYSBicmVhZGNydW1iIGh1bnQsIHJlYWxseSwgYnV0IHRoZSAqS2NvbmZpZyogZmlsZXMgYXJlIHRoZSBtYXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MjMuODExNDg2ODc1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTY1Nzc5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjIzLjg1OTQ2MDkzNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1MzM2NjExNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGlyZWN0aW5nIE15IEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgYWJvdXQgdGhlIHNjaGVkdWxlciBidWlsZCBwcm9jZXNzLiBJbnN0ZWFkIG9mIHdhZGluZyB0aHJvdWdoIHBvdGVudGlhbGx5IHVucmVsYXRlZCBkb2N1bWVudGF0aW9uIG9yIGJsaW5kbHkgc2VhcmNoaW5nLCBJJ20gZ29pbmcgdG8gZ28gcmlnaHQgdG8gdGhlIHNvdXJjZS4gVGhlIGBrZXJuZWwvc2NoZWQvYCBkaXJlY3RvcnkgaXMgd2hlcmUgdGhlIHNjaGVkdWxlciBjb2RlIGxpdmVzLCBhbmQgdGhlIGBNYWtlZmlsZWAgaW4gdGhhdCBkaXJlY3RvcnkgaXMgdGhlIGJ1aWxkIGluc3RydWN0aW9ucy4gU2VlbXMgbG9naWNhbCB0byBjaGVjayBga2VybmVsL3NjaGVkL01ha2VmaWxlYCBkaXJlY3RseS4gVGhhdCdzIHdoZXJlIHRoZSBjcml0aWNhbCBpbmZvcm1hdGlvbiBvbiBob3cgdGhvc2Ugc2NoZWR1bGVyIGNvbXBvbmVudHMgYXJlIGNvbXBpbGVkIGFuZCBsaW5rZWQgc2hvdWxkIHJlc2lkZS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS4gSSdtIGhvcGluZyBJIGNhbiBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIHF1aWNrbHkgdGhpcyB3YXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjoyNi4zOTMxMjQ3NjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvc2NoZWQvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0XFxuICAgMzpcXHRDT05URVhUX0FOQUxZU0lTX2NvcmUubyA6PSB5XFxuICAgNDpcXHRDT05URVhUX0FOQUxZU0lTX2ZhaXIubyA6PSB5XFxuICAgNTpcXHRcXG4gICA2OlxcdCMgVGhlIGNvbXBpbGVycyBhcmUgY29tcGxhaW5pbmcgYWJvdXQgdW51c2VkIHZhcmlhYmxlcyBpbnNpZGUgYW4gaWYoMCkgc2NvcGVcXG4gICA3OlxcdCMgYmxvY2suIFRoaXMgaXMgZGFmdCwgc2h1dCB0aGVtIHVwLlxcbiAgIDg6XFx0Y2NmbGFncy15ICs9ICQoY2FsbCBjYy1kaXNhYmxlLXdhcm5pbmcsIHVudXNlZC1idXQtc2V0LXZhcmlhYmxlKVxcbiAgIDk6XFx0XFxuICAxMDpcXHQjIFRoZXNlIGZpbGVzIGFyZSBkaXNhYmxlZCBiZWNhdXNlIHRoZXkgcHJvZHVjZSBub24taW50ZXJlc3RpbmcgZmxha3kgY292ZXJhZ2VcXG4gIDExOlxcdCMgdGhhdCBpcyBub3QgYSBmdW5jdGlvbiBvZiBzeXNjYWxsIGlucHV0cy4gRS5nLiBpbnZvbHVudGFyeSBjb250ZXh0IHN3aXRjaGVzLlxcbiAgMTI6XFx0S0NPVl9JTlNUUlVNRU5UIDo9IG5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0IyBEaXNhYmxlIEtDU0FOIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBub2lzZSBhbmQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24uIFRvIGF2b2lkXFxuICAxNTpcXHQjIGZhbHNlIHBvc2l0aXZlcyBlbnN1cmUgYmFycmllcnMgaW1wbGllZCBieSBzY2hlZCBmdW5jdGlvbnMgYXJlIGluc3RydW1lbnRlZC5cXG4gIDE2OlxcdEtDU0FOX1NBTklUSVpFIDo9IG5cXG4gIDE3OlxcdEtDU0FOX0lOU1RSVU1FTlRfQkFSUklFUlMgOj0geVxcbiAgMTg6XFx0XFxuICAxOTpcXHRpZm5lcSAoJChDT05GSUdfU0NIRURfT01JVF9GUkFNRV9QT0lOVEVSKSx5KVxcbiAgMjA6XFx0IyBBY2NvcmRpbmcgdG8gQWxhbiBNb2RyYSBcXHUwMDNjYWxhbkBsaW51eGNhcmUuY29tLmF1XFx1MDAzZSwgdGhlIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIGlzXFxuICAyMTpcXHQjIG5lZWRlZCBmb3IgeDg2IG9ubHkuICBXaHkgdGhpcyB1c2VkIHRvIGJlIGVuYWJsZWQgZm9yIGFsbCBhcmNoaXRlY3R1cmVzIGlzIGJleW9uZFxcbiAgMjI6XFx0IyBtZS4gIEkgc3VzcGVjdCBtb3N0IHBsYXRmb3JtcyBkb24ndCBuZWVkIHRoaXMsIGJ1dCB1bnRpbCB3ZSBrbm93IHRoYXQgZm9yIHN1cmVcXG4gIDIzOlxcdCMgSSB0dXJuIHRoaXMgb2ZmIGZvciBJQS02NCBvbmx5LiAgQW5kcmVhcyBTY2h3YWIgc2F5cyBpdCdzIGFsc28gbmVlZGVkIG9uIG02OGtcXG4gIDI0OlxcdCMgdG8gZ2V0IGEgY29ycmVjdCB2YWx1ZSBmb3IgdGhlIHdhaXQtY2hhbm5lbCAoV0NIQU4gaW4gcHMpLiAtLWRhdmlkbVxcbiAgMjU6XFx0Q0ZMQUdTX2NvcmUubyA6PSAkKFBST0ZJTElORykgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcXG4gIDI2OlxcdGVuZGlmXFxuICAyNzpcXHRcXG4gIDI4OlxcdCMgQnJhbmNoIHByb2ZpbGluZyBpc24ndCBub2luc3RyLXNhZmVcXG4gIDI5OlxcdGlmZGVmIENPTkZJR19UUkFDRV9CUkFOQ0hfUFJPRklMSU5HXFxuICAzMDpcXHRDRkxBR1NfYnVpbGRfcG9saWN5Lm8gKz0gLURESVNBQkxFX0JSQU5DSF9QUk9GSUxJTkdcXG4gIDMxOlxcdENGTEFHU19idWlsZF91dGlsaXR5Lm8gKz0gLURESVNBQkxFX0JSQU5DSF9QUk9GSUxJTkdcXG4gIDMyOlxcdGVuZGlmXFxuICAzMzpcXHQjXFxuICAzNDpcXHQjIEJ1aWxkIGVmZmljaWVuY3k6XFxuICAzNTpcXHQjXFxuICAzNjpcXHQjIFRoZXNlIGNvbXBpbGF0aW9uIHVuaXRzIGhhdmUgcm91Z2hseSB0aGUgc2FtZSBzaXplIGFuZCBjb21wbGV4aXR5IC0gc28gdGhlaXJcXG4gIDM3OlxcdCMgYnVpbGQgcGFyYWxsZWxpemVzIHdlbGwgYW5kIGZpbmlzaGVzIHJvdWdobHkgYXQgb25jZTpcXG4gIDM4OlxcdCNcXG4gIDM5OlxcdG9iai15ICs9IGNvcmUub1xcbiAgNDA6XFx0b2JqLXkgKz0gZmFpci5vXFxuICA0MTpcXHRvYmoteSArPSBidWlsZF9wb2xpY3kub1xcbiAgNDI6XFx0b2JqLXkgKz0gYnVpbGRfdXRpbGl0eS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjI2LjM5MzE5NTI1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIwNzA5MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFNjaGVkdWxlcidzIExhYnlyaW50aCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIHRocm91Z2ggdGhlIGtlcm5lbCBzY2hlZHVsZXIgY29kZSBhZ2FpbiwgYW5kIEknbSBsb29raW5nIGZvciB0aGUgYGV4dC5jYCBmaWxlLiBXYWl0IGEgbWludXRlLi4uIHRoYXQgYGV4dC5jYCBmaWxlICpzaG91bGRuJ3QqIGJlIGRpcmVjdGx5IGluIGBrZXJuZWwvc2NoZWQvYCwgYmVjYXVzZSBpdCdzIGEgc3ViLWNvbXBvbmVudC4gSSd2ZSBnb3QgdG8gYmFja3RyYWNrIGFuZCBjaGVjayB0aGUgcmVsZXZhbnQgTWFrZWZpbGVzLiBJIGJldCBpdCdzIGFjdHVhbGx5IGRlZmluZWQgZWl0aGVyIGluIGBrZXJuZWwvc2NoZWQvZXh0L01ha2VmaWxlYCBvciBtYXliZSBldmVuIGhpZ2hlciB1cCBpbiBga2VybmVsL3NjaGVkL01ha2VmaWxlYC4gTGV0IG1lIGp1bXAgb3ZlciB0aGVyZSBhbmQgc2VlIHdoYXQncyBpbmNsdWRlZC4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZWJhc2U7IEkgc2hvdWxkIGhhdmUgdGhvdWdodCBvZiBjaGVja2luZyB0aGUgTWFrZWZpbGVzIGZpcnN0LCBiZWZvcmUgZGl2aW5nIGRvd24gYSBwb3RlbnRpYWxseSBmcnVpdGxlc3Mgc2VhcmNoLiBUaW1lIHRvIHRyYWNlIHRoZSBpbmNsdWRlcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDU5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjoyOS4zMTM5MDc3OTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL3NjaGVkL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHRvYmoteSArPSBmYWlyLm9cXG4gIDQxOlxcdG9iai15ICs9IGJ1aWxkX3BvbGljeS5vXFxuICA0MjpcXHRvYmoteSArPSBidWlsZF91dGlsaXR5Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MjkuMzEzOTY5NzAzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjUwMjgwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYGV4dC5vYCBpbiB0aGUgU2NoZWR1bGVyIENvZGViYXNlKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCBgZXh0Lm9gLCBsaWtlbHkgYSBjb21waWxlZCBvYmplY3QgZmlsZSByZWxhdGVkIHRvIHNjaGVkdWxpbmcuIEdpdmVuIG15IGtub3dsZWRnZSBvZiB0aGUga2VybmVsJ3Mgc3RydWN0dXJlLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBzb3VyY2UgZGlyZWN0b3JpZXMuIFRoZSBuYW1lIHN1Z2dlc3RzIGl0J3MgYW4gZXh0ZW5zaW9uLCBwb3NzaWJseSBhIG1vZHVsZSBvciBwYXJ0IG9mIGEgbW9yZSBzcGVjaWFsaXplZCBzY2hlZHVsZXIuIFRoZXJlZm9yZSwgbXkgaW5pdGlhbCBzZWFyY2ggd2lsbCBiZSBmb2N1c2VkIGFyb3VuZCBga2VybmVsL3NjaGVkL2AgYW5kIGl0cyBwb3RlbnRpYWwgc3ViZGlyZWN0b3JpZXMsIHBhcnRpY3VsYXJseSBga2VybmVsL3NjaGVkL2V4dC9gLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIGFueSBzY2hlZHVsaW5nIGV4dGVuc2lvbnMgaW1wbGVtZW50ZWQuXG5cblRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUsIGl0J3Mgbm90IGVub3VnaCB0byBsb29rIGp1c3QgZm9yIHRoZSBzb3VyY2U7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYnVpbGQgc3lzdGVtIGludGVncmF0ZXMgdGhpcyBvYmplY3QuIFRoZXJlZm9yZSwgYSBxdWljayBncmVwIHRocm91Z2ggdGhlIGBNYWtlZmlsZWAgaW4gdGhlIHNjaGVkdWxpbmcgZGlyZWN0b3JpZXMgaXMgYSBtdXN0LiBLbm93aW5nIHRoZSBidWlsZCBydWxlcyB3aWxsIGNsYXJpZnkgaG93IGBleHQub2AgaXMgY29tcGlsZWQsIGxpbmtlZCwgYW5kIGluY29ycG9yYXRlZCBpbnRvIHRoZSBvdmVyYWxsIGtlcm5lbCBpbWFnZS4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCB0byBjb250ZXh0dWFsaXplIHRoZSBvYmplY3QgYW5kIGl0cyBwdXJwb3NlLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0YXJnZXQgcnVsZXMuIEhvcGVmdWxseSwgdGhpcyBzaG91bGQgbGVhZCBtZSB0byB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIGFuZCBwcm92aWRlIGEgY2xlYXIgaWRlYSBvZiB3aGF0IGBleHQub2AgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc2NywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MzIuNDc5MDAwOTE0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJrZXJuZWwvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImF1dG9ncm91cC5jXCIsXG4gICAgXCJhdXRvZ3JvdXAuaFwiLFxuICAgIFwiYnVpbGRfcG9saWN5LmNcIixcbiAgICBcImJ1aWxkX3V0aWxpdHkuY1wiLFxuICAgIFwiY2xvY2suY1wiLFxuICAgIFwiY29tcGxldGlvbi5jXCIsXG4gICAgXCJjb3JlLmNcIixcbiAgICBcImNvcmVfc2NoZWQuY1wiLFxuICAgIFwiY3B1YWNjdC5jXCIsXG4gICAgXCJjcHVkZWFkbGluZS5jXCIsXG4gICAgXCJjcHVkZWFkbGluZS5oXCIsXG4gICAgXCJjcHVmcmVxLmNcIixcbiAgICBcImNwdWZyZXFfc2NoZWR1dGlsLmNcIixcbiAgICBcImNwdXByaS5jXCIsXG4gICAgXCJjcHVwcmkuaFwiLFxuICAgIFwiY3B1dGltZS5jXCIsXG4gICAgXCJkZWFkbGluZS5jXCIsXG4gICAgXCJkZWJ1Zy5jXCIsXG4gICAgXCJmYWlyLmNcIixcbiAgICBcImZlYXR1cmVzLmhcIixcbiAgICBcImlkbGUuY1wiLFxuICAgIFwiaXNvbGF0aW9uLmNcIixcbiAgICBcImxvYWRhdmcuY1wiLFxuICAgIFwibWVtYmFycmllci5jXCIsXG4gICAgXCJwZWx0LmNcIixcbiAgICBcInBlbHQuaFwiLFxuICAgIFwicHNpLmNcIixcbiAgICBcInJxLW9mZnNldHMuY1wiLFxuICAgIFwicnQuY1wiLFxuICAgIFwic2NoZWQtcGVsdC5oXCIsXG4gICAgXCJzY2hlZC5oXCIsXG4gICAgXCJzbXAuaFwiLFxuICAgIFwic3RhdHMuY1wiLFxuICAgIFwic3RhdHMuaFwiLFxuICAgIFwic3RvcF90YXNrLmNcIixcbiAgICBcInN3YWl0LmNcIixcbiAgICBcInN5c2NhbGxzLmNcIixcbiAgICBcInRvcG9sb2d5LmNcIixcbiAgICBcIndhaXQuY1wiLFxuICAgIFwid2FpdF9iaXQuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJleHRcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjozMi40NzkwOTExMTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1NTI1MDEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlNlYXJjaGluZyBmb3IgYGV4dC5vYCBpbiB0aGUgU2NoZWR1bGVyIEV4dGVuc2lvbiBCdWlsZCBTeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSBgZXh0Lm9gIGlzIGJlaW5nIGJ1aWx0LiBTaW5jZSBJJ20gd29ya2luZyB3aXRoIHRoZSBrZXJuZWwncyBzY2hlZHVsZXIgZXh0ZW5zaW9uLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYnVpbGQgc3lzdGVtIGZpbGVzIHNwZWNpZmljIHRvIHRoYXQgbW9kdWxlLiBMZXQncyBzZWUuLi4gYGtlcm5lbC9zY2hlZC9leHQvTWFrZWZpbGVgIGlzIHRoZSBvYnZpb3VzIGZpcnN0IHN0b3AuIFRoYXQgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgcnVsZXMgZm9yIGJ1aWxkaW5nIHRoZSBgLm9gIGZpbGVzLCBzbyBpZiBpdCdzIHRoZXJlLCBncmVhdC4gSWYgbm90LCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIG9iamVjdCBpcyBvbmx5IGNvbmRpdGlvbmFsbHkgYnVpbHQsIGJhc2VkIG9uIGEgS2NvbmZpZyBvcHRpb24uIEluIHRoYXQgY2FzZSwgSSBzaG91bGQgdGhlbiBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9LY29uZmlnYC4gVGhhdCBjb25maWd1cmF0aW9uIGZpbGUgaXMgdGhlIHVzdWFsIGxvY2F0aW9uIGZvciBkZWZpbmluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoZSBzY2hlZHVsZXIgZXh0ZW5zaW9ucy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgaXQgaXMgZGVmaW5lZCB0aGVyZSBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYGV4dC5vYCB3b3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gQmFzaWNhbGx5LCBJIGFtIHRoaW5raW5nIHRocm91Z2ggdGhlIGxpa2VseSBwbGFjZXMgdGhlIGluZm9ybWF0aW9uIHRoYXQgSSBuZWVkIHdvdWxkIGJlIGxvY2F0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MDcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MzUuNTM0MzQ0MjE4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJrZXJuZWwvc2NoZWQvZXh0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFyZW5hLmNcIixcbiAgICBcImFyZW5hLmhcIixcbiAgICBcImNpZC5jXCIsXG4gICAgXCJjaWQuaFwiLFxuICAgIFwiZXh0LmNcIixcbiAgICBcImV4dC5oXCIsXG4gICAgXCJpZGxlLmNcIixcbiAgICBcImlkbGUuaFwiLFxuICAgIFwiaW5saW5lcy5oXCIsXG4gICAgXCJpbnRlcm5hbC5oXCIsXG4gICAgXCJzdWIuY1wiLFxuICAgIFwic3ViLmhcIixcbiAgICBcInR5cGVzLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6MzUuNTM0NDE2NTU4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTY0NjkwMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEJ1aWxkIExvY2F0aW9uIGZvciBhIEMgRXh0ZW5zaW9uKipcblxuUmlnaHQsIHNvbWV0aGluZyBqdXN0IHRyaWdnZXJlZCBhIG1lbW9yeSAtIHdoZXJlIHRoZSBoZWNrIGlzIHRoYXQgYGV4dC5jYCBmaWxlIGNvbXBpbGVkPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hlcmUgaW4gdGhlIGJ1aWxkIHByb2Nlc3MgdGhhdCBwYXJ0aWN1bGFyIGV4dGVuc2lvbiBpcyBoYW5kbGVkLiBJdOKAmXMgcHJldHR5IGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jeSBpc3N1ZXMgb3IgZGVidWdnaW5nIGNvbXBpbGF0aW9uIHByb2JsZW1zIGxhdGVyIG9uLiBTbywgZmlyc3QgdGhvdWdodCAtIGxldCdzIGNoZWNrIHRoZSBjb3JlIHNjaGVkdWxpbmcgY29kZSwgdGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIGJ1aWxkIHBvbGljeSBhbmQgdXRpbGl0aWVzIGFyZSBkZWZpbmVkLiBNeSBndXQgc2F5cyBpdCB3aWxsIGJlIGluIHRoZSBga2VybmVsL3NjaGVkYCBkaXJlY3RvcnkuIEknbSBsZWFuaW5nIHRvd2FyZHMgbG9va2luZyBhdCBlaXRoZXIgYGJ1aWxkX3BvbGljeS5jYCBvciBwZXJoYXBzIGBidWlsZF91dGlsaXR5LmNgLiBUaGF0IHNlZW1zIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gZmluZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHRoYXQgZXh0ZW5zaW9uLiBMZXQgbWUgZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc3OCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjozOC41MzA4ODg3OTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNTMyMDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dC5jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jLTY1LSMgaW5jbHVkZSBcXFwiZXh0L2ludGVybmFsLmhcXFwiXFxua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jOjY2OiMgaW5jbHVkZSBcXFwiZXh0L2NpZC5oXFxcIlxcbmtlcm5lbC9zY2hlZC9idWlsZF9wb2xpY3kuYy02Ny0jIGluY2x1ZGUgXFxcImV4dC9hcmVuYS5oXFxcIlxcbi0tXFxua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jLTcwLSMgaW5jbHVkZSBcXFwiZXh0L2lubGluZXMuaFxcXCJcXG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmM6NzE6IyBpbmNsdWRlIFxcXCJleHQvZXh0LmNcXFwiXFxua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jOjcyOiMgaW5jbHVkZSBcXFwiZXh0L2NpZC5jXFxcIlxcbmtlcm5lbC9zY2hlZC9idWlsZF9wb2xpY3kuYy03My0jIGluY2x1ZGUgXFxcImV4dC9hcmVuYS5jXFxcIlxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz0yMjk0PXZvaWQgd2FrZXVwX3ByZWVtcHQoc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTIyOTctXFxua2VybmVsL3NjaGVkL2NvcmUuYzoyMjk4OlxcdGlmIChwLVxcdTAwM2VzY2hlZF9jbGFzcyA9PSBycS1cXHUwMDNlbmV4dF9jbGFzcykge1xcbmtlcm5lbC9zY2hlZC9jb3JlLmM6MjI5OTpcXHRcXHRycS1cXHUwMDNlbmV4dF9jbGFzcy1cXHUwMDNld2FrZXVwX3ByZWVtcHQocnEsIHAsIGZsYWdzKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTIzMDAtXFxua2VybmVsL3NjaGVkL2NvcmUuYzoyMzAxOlxcdH0gZWxzZSBpZiAoc2NoZWRfY2xhc3NfYWJvdmUocC1cXHUwMDNlc2NoZWRfY2xhc3MsIHJxLVxcdTAwM2VuZXh0X2NsYXNzKSkge1xcbmtlcm5lbC9zY2hlZC9jb3JlLmM6MjMwMjpcXHRcXHRycS1cXHUwMDNlbmV4dF9jbGFzcy1cXHUwMDNld2FrZXVwX3ByZWVtcHQocnEsIHAsIGZsYWdzKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTIzMDMtXFx0XFx0cmVzY2hlZF9jdXJyKHJxKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjIzMDQ6XFx0XFx0cnEtXFx1MDAzZW5leHRfY2xhc3MgPSBwLVxcdTAwM2VzY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTIzMDUtXFx0fVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz02NzgyPXN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICpwcm94eV9yZXNjaGVkX2lkbGUoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNjc4NC1cXHRwdXRfcHJldl9zZXRfbmV4dF90YXNrKHJxLCBycS1cXHUwMDNlZG9ub3IsIHJxLVxcdTAwM2VpZGxlKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjY3ODU6XFx0cnEtXFx1MDAzZW5leHRfY2xhc3MgPSBcXHUwMDI2aWRsZV9zY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTY3ODYtXFx0cnFfc2V0X2Rvbm9yKHJxLCBycS1cXHUwMDNlaWRsZSk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jPTcwOTg9c3RhdGljIHZvaWQgX19zY2hlZCBub3RyYWNlIF9fc2NoZWR1bGUoaW50IHNjaGVkX21vZGUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTcxNjktXFx0XFx0XFx0bmV4dCA9IHByZXY7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo3MTcwOlxcdFxcdFxcdHJxLVxcdTAwM2VuZXh0X2NsYXNzID0gXFx1MDAyNmlkbGVfc2NoZWRfY2xhc3M7XFxua2VybmVsL3NjaGVkL2NvcmUuYy03MTcxLVxcdFxcdFxcdGdvdG8gcGlja2VkO1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYy03MTg3LVxcdG5leHQgPSBwaWNrX25leHRfdGFzayhycSwgXFx1MDAyNnJmKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjcxODg6XFx0cnEtXFx1MDAzZW5leHRfY2xhc3MgPSBuZXh0LVxcdTAwM2VzY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTcxODktXFx0aWYgKHNjaGVkX3Byb3h5X2V4ZWMoKSkge1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz03NjY1PXZvaWQgcnRfbXV0ZXhfc2V0cHJpbyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcGlfdGFzaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzY2OC1cXHRcXHRERVFVRVVFX1NBVkUgfCBERVFVRVVFX01PVkUgfCBERVFVRVVFX05PQ0xPQ0s7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo3NjY5OlxcdGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqcHJldl9jbGFzcywgKm5leHRfY2xhc3M7XFxua2VybmVsL3NjaGVkL2NvcmUuYy03NjcwLVxcdHN0cnVjdCBycV9mbGFncyByZjtcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzcyNi1cXHRwcmV2X2NsYXNzID0gcC1cXHUwMDNlc2NoZWRfY2xhc3M7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo3NzI3OlxcdG5leHRfY2xhc3MgPSBfX3NldHNjaGVkdWxlcl9jbGFzcyhwLVxcdTAwM2Vwb2xpY3ksIHByaW8pO1xcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNzcyOC1cXG5rZXJuZWwvc2NoZWQvY29yZS5jOjc3Mjk6XFx0aWYgKHByZXZfY2xhc3MgIT0gbmV4dF9jbGFzcylcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTc3MzAtXFx0XFx0cXVldWVfZmxhZyB8PSBERVFVRVVFX0NMQVNTO1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYy03NzYyLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM6Nzc2MzpcXHRcXHRwLVxcdTAwM2VzY2hlZF9jbGFzcyA9IG5leHRfY2xhc3M7XFxua2VybmVsL3NjaGVkL2NvcmUuYy03NzY0LVxcdFxcdHAtXFx1MDAzZXByaW8gPSBwcmlvO1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz04OTUzPXZvaWQgX19pbml0IHNjaGVkX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtOTA1MC0jZW5kaWZcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjkwNTE6XFx0XFx0cnEtXFx1MDAzZW5leHRfY2xhc3MgPSBcXHUwMDI2aWRsZV9zY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTkwNTItXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTkxMzctXFx0aW5pdF9zY2hlZF9mYWlyX2NsYXNzKCk7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo5MTM4OlxcdGluaXRfc2NoZWRfZXh0X2NsYXNzKCk7XFxua2VybmVsL3NjaGVkL2NvcmUuYy05MTM5LVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz0xMTI3OD12b2lkIHNjaGVkX2NoYW5nZV9lbmQoc3RydWN0IHNjaGVkX2NoYW5nZV9jdHggKmN0eClcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtMTEzMDktXFx0XFx0XFx0aWYgKHNjaGVkX2NsYXNzX2Fib3ZlKHAtXFx1MDAzZXNjaGVkX2NsYXNzLCBjdHgtXFx1MDAzZWNsYXNzKSkge1xcbmtlcm5lbC9zY2hlZC9jb3JlLmM6MTEzMTA6XFx0XFx0XFx0XFx0cnEtXFx1MDAzZW5leHRfY2xhc3MtXFx1MDAzZXdha2V1cF9wcmVlbXB0KHJxLCBwLCAwKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjExMzExOlxcdFxcdFxcdFxcdHJxLVxcdTAwM2VuZXh0X2NsYXNzID0gcC1cXHUwMDNlc2NoZWRfY2xhc3M7XFxua2VybmVsL3NjaGVkL2NvcmUuYy0xMTMxMi1cXHRcXHRcXHR9XFxuLS1cXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0xMTQxPXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBkbF9zZXJ2ZXJfdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyLCBzdHJ1Y3Qgc2NoZWRfZGxfZW50aXR5ICpkbF9zZSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTEyMDgtICogdXBkYXRpbmcgKGFuZCB0aGUgcXVldWVpbmcgYmFjayB0byBkbF9ycSkgd2lsbCBiZSBkb25lIGJ5IHRoZVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jOjEyMDk6ICogbmV4dCBjYWxsIHRvIGVucXVldWVfdGFza19kbCgpLlxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTEyMTAtICovXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jPTE4MD1zMzIgc2N4X2NpZF9pbml0KHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMTg4LVxcdHN0cnVjdCBzY3hfY2lkX3RhYmxlcyAqdGJscztcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjE4OTpcXHR1MzIgbmV4dF9jaWQgPSAwO1xcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MTkwOlxcdHMzMiBuZXh0X25vZGVfaWR4ID0gMCwgbmV4dF9sbGNfaWR4ID0gMCwgbmV4dF9jb3JlX2lkeCA9IDA7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0xOTEtXFx0czMyIG5leHRfc2hhcmRfaWR4ID0gMDtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjI5LVxcdHdoaWxlICghY3B1bWFza19lbXB0eSh0b193YWxrKSkge1xcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MjMwOlxcdFxcdHMzMiBuZXh0X2NwdSA9IGNwdW1hc2tfZmlyc3QodG9fd2Fsayk7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyMzE6XFx0XFx0czMyIG5pZCA9IGNwdV90b19ub2RlKG5leHRfY3B1KTtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjIzMjpcXHRcXHRzMzIgbm9kZV9jaWQgPSBuZXh0X2NpZDtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTIzMy1cXHRcXHRzMzIgbm9kZV9pZHg7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTIzOS1cXHRcXHRpZiAobmlkIFxcdTAwM2MgMCkge1xcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MjQwOlxcdFxcdFxcdGNwdW1hc2tfY2xlYXJfY3B1KG5leHRfY3B1LCB0b193YWxrKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI0MS1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjQ3LVxcdFxcdGNwdW1hc2tfYW5kKG5vZGVfc2NyYXRjaCwgdG9fd2FsaywgY3B1bWFza19vZl9ub2RlKG5pZCkpO1xcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MjQ4OlxcdFxcdGlmIChXQVJOX09OX09OQ0UoIWNwdW1hc2tfdGVzdF9jcHUobmV4dF9jcHUsIG5vZGVfc2NyYXRjaCkpKVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjQ5LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yNTMtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IGNwdW1hc2sgKmxsY19tYXNrID0gY3B1X2xsY19tYXNrKG5jcHUsIGxsY19mYWxsYmFjayk7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNTQ6XFx0XFx0XFx0czMyIGxsY19jaWQgPSBuZXh0X2NpZDtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTI1NS1cXHRcXHRcXHRzMzIgbGxjX2lkeCA9IG5leHRfbGxjX2lkeCsrO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yNjUtXFx0XFx0XFx0Y2FsY19zaGFyZF9sYXlvdXQobGxjX3NjcmF0Y2gsIHNoYXJkX3NpemUsIFxcdTAwMjZjb3Jlc19wZXJfc2hhcmQsIFxcdTAwMjZucl9sYXJnZSk7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNjY6XFx0XFx0XFx0c2hhcmRfY2lkID0gbmV4dF9jaWQ7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yNjctXFx0XFx0XFx0c2hhcmRfaWR4ID0gbmV4dF9zaGFyZF9pZHgrKztcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjcyLVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzaWIgPSB0b3BvbG9neV9zaWJsaW5nX2NwdW1hc2sobGNwdSk7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNzM6XFx0XFx0XFx0XFx0czMyIGNvcmVfY2lkID0gbmV4dF9jaWQ7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyNzQ6XFx0XFx0XFx0XFx0czMyIGNvcmVfaWR4ID0gbmV4dF9jb3JlX2lkeCsrO1xcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMjc1LVxcdFxcdFxcdFxcdHMzMiBjY3B1O1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yOTYtXFx0XFx0XFx0XFx0XFx0Y2lkc19pbl9zaGFyZCA9IDA7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzoyOTc6XFx0XFx0XFx0XFx0XFx0c2hhcmRfY2lkID0gbmV4dF9jaWQ7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0yOTgtXFx0XFx0XFx0XFx0XFx0c2hhcmRfaWR4ID0gbmV4dF9zaGFyZF9pZHgrKztcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzA0LVxcdFxcdFxcdFxcdGZvcl9lYWNoX2NwdShjY3B1LCBjb3JlX3NjcmF0Y2gpIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjMwNTpcXHRcXHRcXHRcXHRcXHRzMzIgY2lkID0gbmV4dF9jaWQrKztcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTMwNi1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmMtMzQ2LVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6MzQ3OlxcdFxcdGNpZCA9IG5leHRfY2lkKys7XFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0zNDgtXFx0XFx0dGJscy1cXHUwMDNlY2lkX3RvX2NwdVtjaWRdID0gY3B1O1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy0zNzUtXFx0ICovXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzozNzY6XFx0Zm9yIChjaWQgPSAwOyBjaWQgXFx1MDAzYyBuZXh0X2NpZDsgY2lkKyspIHtcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTM3Ny1cXHRcXHRzMzIgc2lkeCA9IHRibHMtXFx1MDAzZWNpZF90b19zaGFyZFtjaWRdO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNTQ9c3RhdGljIGJvb2wgcnFfaXNfb3BlbihzdHJ1Y3QgcnEgKnJxLCB1NjQgZW5xX2ZsYWdzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNjEtXFx0ICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNjI6XFx0aWYgKHNjaGVkX2NsYXNzX2Fib3ZlKHJxLVxcdTAwM2VuZXh0X2NsYXNzLCBcXHUwMDI2ZXh0X3NjaGVkX2NsYXNzKSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM2My1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM2OC1cXHQgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM2OTpcXHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUoXFx1MDAyNmV4dF9zY2hlZF9jbGFzcywgcnEtXFx1MDAzZW5leHRfY2xhc3MpKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzcwLVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xNTY4PXN0YXRpYyB2b2lkIHJxX293bmVkX3Bvc3RfZW5xKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHJxICpycSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTYwOS1cXHQgKiBwdXJwb3NlLCBidXQgZm9yIGl0IHRvIGJlIGludm9rZWQsIHdlIG11c3QgZW5zdXJlIHRoYXQgd2UgYnVtcFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYxMDpcXHQgKiBAcnEtXFx1MDAzZW5leHRfY2xhc3MgdG8gXFx1MDAyNmV4dF9zY2hlZF9jbGFzcyBpZiBpdCdzIGN1cnJlbnRseSBpZGxlLlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTYxMS1cXHQgKlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTYxMi1cXHQgKiB3YWtldXBfcHJlZW1wdCgpIGRvZXMgdGhlIGJ1bXBpbmcsIGFuZCBzaW5jZSB3ZSBvbmx5IGludm9rZSBpdCBpZlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYxMzpcXHQgKiBAcnEtXFx1MDAzZW5leHRfY2xhc3MgaXMgYmVsb3cgXFx1MDAyNmV4dF9zY2hlZF9jbGFzcywgaXQgd2lsbCBhbHNvXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjE0LVxcdCAqIHJlc2NoZWRfY3VycihycSkuXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjE1LVxcdCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYxNjpcXHRpZiAoc2NoZWRfY2xhc3NfYWJvdmUocC1cXHUwMDNlc2NoZWRfY2xhc3MsIHJxLVxcdTAwM2VuZXh0X2NsYXNzKSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE2MTctXFx0XFx0d2FrZXVwX3ByZWVtcHQocnEsIHAsIDApO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNjIzLVxcdCAqIE5vdGUgdGhhdCB0aGUgd2FrZXVwX3ByZWVtcHQoKSBhYm92ZSBtYXkgaGF2ZSBhbHJlYWR5IHRyaWdnZXJlZFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTYyNDpcXHQgKiBhIHJlc2NoZWQgaWYgQHJxLVxcdTAwM2VuZXh0X2NsYXNzIHdhcyBpZGxlLiBJdCdzIGhhcm1sZXNzLCBzaW5jZVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTYyNS1cXHQgKiBuZWVkX3Jlc2NoZWQgaXMgY2xlYXJlZCBpbW1lZGlhdGVseSBhZnRlciB0YXNrIHBpY2suXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTMxMzk9c3RhdGljIHZvaWQgc3dpdGNoX2NsYXNzKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE0MS1cXHRzdHJ1Y3Qgc2N4X3NjaGVkICpzY2ggPSBzY3hfcm9vdF9wcm90ZWN0ZWRfbGl2ZSgpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzE0MjpcXHRjb25zdCBzdHJ1Y3Qgc2NoZWRfY2xhc3MgKm5leHRfY2xhc3MgPSBuZXh0LVxcdTAwM2VzY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMxNDMtXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMxNDktXFx0ICogbG9uZ2VyIHVuZGVyIHRoZSBjb250cm9sIG9mIFNDWC4gVGhlcmVmb3JlLCBkb24ndCBpbnZva2UgdGhlIGNhbGxiYWNrXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMTUwOlxcdCAqIGlmIHRoZSBuZXh0IGNsYXNzIGlzIGJlbG93IFNDWCAoaW4gd2hpY2ggY2FzZSB0aGUgQlBGIHNjaGVkdWxlciBoYXNcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMxNTEtXFx0ICogYWN0aXZlbHkgZGVjaWRlZCBub3QgdG8gc2NoZWR1bGUgYW55IHRhc2tzIG9uIHRoZSBDUFUpLlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE1Mi1cXHQgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjMxNTM6XFx0aWYgKHNjaGVkX2NsYXNzX2Fib3ZlKFxcdTAwMjZleHRfc2NoZWRfY2xhc3MsIG5leHRfY2xhc3MpKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE1NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMxNjctXFx0XFx0XFx0c3RydWN0IHNjeF9jcHVfcmVsZWFzZV9hcmdzIGFyZ3MgPSB7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMTY4OlxcdFxcdFxcdFxcdC5yZWFzb24gPSBwcmVlbXB0X3JlYXNvbl9mcm9tX2NsYXNzKG5leHRfY2xhc3MpLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzE2OS1cXHRcXHRcXHRcXHQudGFzayA9IG5leHQsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTU1NzI9Ym9vbCBzY3hfYWxsb3dfdHR3dV9xdWV1ZShjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU1OTItLyoqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1NTkzOiAqIGhhbmRsZV9sb2NrdXAgLSBzY2hlZF9leHQgY29tbW9uIGxvY2t1cCBoYW5kbGVyXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01NTk0LSAqIEBleGl0X2NwdTogQ1BVIHRvIHJlY29yZCBpbiBleGl0X2luZm8uIFBhc3MgdGhlIHN0YWxsZWQvaHVuZyBDUFUsIG5vdCBjdXJyZW50Llxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz04Njg2PXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgc2N4X3BtX25vdGlmaWVyID0ge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04Njg5LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODY5MDp2b2lkIF9faW5pdCBpbml0X3NjaGVkX2V4dF9jbGFzcyh2b2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODY5MS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwOTQzPXN0YXRpYyBpbnQgX19pbml0IHNjeF9pbml0KHZvaWQpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMDIwLVxcdC8qXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMTAyMTpcXHQgKiBrZnVuYyByZWdpc3RyYXRpb24gY2FuJ3QgYmUgZG9uZSBmcm9tIGluaXRfc2NoZWRfZXh0X2NsYXNzKCkgYXNcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTExMDIyLVxcdCAqIHJlZ2lzdGVyX2J0Zl9rZnVuY19pZF9zZXQoKSBuZWVkcyBtb3N0IG9mIHRoZSBzeXN0ZW0gdG8gYmUgdXAuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oPTIyPWJvb2wgc2N4X2FsbG93X3R0d3VfcXVldWUoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oOjIzOnZvaWQgaW5pdF9zY2hlZF9leHRfY2xhc3Modm9pZCk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuaC0yNC1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg9NTY9c3RhdGljIGlubGluZSBib29sIHNjeF9hbGxvd190dHd1X3F1ZXVlKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyByZXR1cm4gdHJ1ZTsgfVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg6NTc6c3RhdGljIGlubGluZSB2b2lkIGluaXRfc2NoZWRfZXh0X2NsYXNzKHZvaWQpIHt9XFxua2VybmVsL3NjaGVkL2V4dC9leHQuaC01OC1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTkxMz1zdGF0aWMgYm9vbCBjaGVja19idWlsdGluX2lkbGVfZW5hYmxlZChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy05MjYtICogV2UgY2FuJ3Qgc2ltcGx5IGNoZWNrIHdoZXRoZXIgQHAtXFx1MDAzZW1pZ3JhdGlvbl9kaXNhYmxlZCBpcyBzZXQgaW4gYVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjkyNzogKiBzY2hlZF9leHQgY2FsbGJhY2ssIGJlY2F1c2UgdGhlIEJQRiBwcm9sb2cgKF9fYnBmX3Byb2dfZW50ZXIpIG1heSBkaXNhYmxlXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtOTI4LSAqIG1pZ3JhdGlvbiBmb3IgdGhlIGN1cnJlbnQgdGFzayB3aGlsZSBydW5uaW5nIEJQRiBjb2RlLlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM9MTUyNT1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl9rZnVuY19pZF9zZXQgc2N4X2tmdW5jX3NldF9pZGxlID0ge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTUzNy0gKlxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE1Mzg6ICogVGhlc2Uga2Z1bmNzIGFyZSBhbHNvIG1lbWJlcnMgb2Ygc2N4X2tmdW5jX2lkc191bmxvY2tlZCAoc2VlIGV4dC5jKSBiZWNhdXNlXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTUzOS0gKiB0aGV5J3JlIGNhbGxhYmxlIGZyb20gdW5sb2NrZWQgY29udGV4dHMgaW4gYWRkaXRpb24gdG8gb3BzLnNlbGVjdF9jcHUoKSBhbmRcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaD0xMzI9ZW51bSBzY3hfb3BzX2ZsYWdzIHtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xMzgtXFx0LypcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTM5OlxcdCAqIEJ5IGRlZmF1bHQsIGlmIHRoZXJlIGFyZSBubyBvdGhlciB0YXNrIHRvIHJ1biBvbiB0aGUgQ1BVLCBleHQgY29yZVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNDAtXFx0ICoga2VlcHMgcnVubmluZyB0aGUgY3VycmVudCB0YXNrIGV2ZW4gYWZ0ZXIgaXRzIHNsaWNlIGV4cGlyZXMuIElmIHRoaXNcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaD0zMTk9c3RydWN0IHNjaGVkX2V4dF9vcHMge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTM2OS1cXHQgKlxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDozNzA6XFx0ICogVGhlIGV4dCBjb3JlIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgdGhlIEJQRiBzaWRlIG93bnMgYSBnaXZlbiB0YXNrIG9yXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTM3MS1cXHQgKiBub3QgYW5kIGNhbiBncmFjZWZ1bGx5IGlnbm9yZSBzcHVyaW91cyBkaXNwYXRjaGVzIGZyb20gQlBGIHNpZGUsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTQyMj1lbnVtIHNjeF9jYXBfZmxhZ3Mge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE0NzMtICogZGVsaXZlcnkgaXMgaW4gZmxpZ2h0IHBlciBzaGFyZC4gRnVydGhlciBjaGFuZ2VzIGZvbGQgaW50byB0aGUgc2FtZSBidWZmZXJcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg6MTQ3NDogKiBhbmQgc2hpcCBhcyB0aGUgbmV4dCBjYWxsYmFjaywgc28gYSBzaGFyZCdzIGNhbGxiYWNrcyBmaXJlIGluIG9yZGVyLlxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xNDc1LSAqXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTY2Mz1lbnVtIHNjeF9lbnFfZmxhZ3Mge1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE3MTYtXFx0ICogVGhlIHRhc2sgYmVpbmcgZW5xdWV1ZWQgaXMgdGhlIG9ubHkgdGFzayBhdmFpbGFibGUgZm9yIHRoZSBjcHUuIEJ5XFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE3MTc6XFx0ICogZGVmYXVsdCwgZXh0IGNvcmUga2VlcHMgZXhlY3V0aW5nIHN1Y2ggdGFza3MgYnV0IHdoZW5cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTcxOC1cXHQgKiAlU0NYX09QU19FTlFfTEFTVCBpcyBzcGVjaWZpZWQsIHRoZXkncmUgb3BzLmVucXVldWUoKSdkIHdpdGggdGhlXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmg9MTgyMD1zdGF0aWMgY29uc3QgY2hhciAqc2N4X2VuYWJsZV9zdGF0ZV9zdHJbXSA9IHtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaC0xODI5LSAqXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oOjE4MzA6ICogVGhlIHNjaGVkX2V4dCBjb3JlIHVzZXMgdGhpcyBzdGF0ZSBtYWNoaW5lIHRvIHRyYWNrIHRhc2sgb3duZXJzaGlwXFxua2VybmVsL3NjaGVkL2V4dC9pbnRlcm5hbC5oLTE4MzEtICogYmV0d2VlbiB0aGUgU0NYIGNvcmUgYW5kIHRoZSBCUEYgc2NoZWR1bGVyLiBUaGlzIGFsbG93cyB0aGUgQlBGXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTkwMi0gKlxcbmtlcm5lbC9zY2hlZC9leHQvaW50ZXJuYWwuaDoxOTAzOiAqIFRoZSBzY2hlZF9leHQgY29yZSB1c2VzIGEgXFxcImxvY2sgZGFuY2luZ1xcXCIgcHJvdG9jb2wgY29vcmRpbmF0ZWQgYnlcXG5rZXJuZWwvc2NoZWQvZXh0L2ludGVybmFsLmgtMTkwNC0gKiBwLVxcdTAwM2VzY3guaG9sZGluZ19jcHUuIFdoZW4gbW92aW5nIGEgdGFzayB0byBhIGRpZmZlcmVudCBycTpcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTAtICogc3ViLXNjaGVkdWxlciBlbmFibGUvZGlzYWJsZSBwYXRocy4gVGhlIGNvcmUgZGlzcGF0Y2gvZW5xdWV1ZSBtYWNoaW5lcnkgaXRcXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjExOiAqIGJ1aWxkcyBvbiBsaXZlcyBpbiBleHQuYy5cXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTEyLSAqXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jPTEyMjg9dm9pZCBkcmFpbl9kZXNjZW5kYW50cyhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jLTEyNDUtICogc3RhdGUgdG8gJVNDWF9UQVNLX1JFQURZIHRvIGFjY291bnQgZm9yIHRoZSBhbHJlYWR5IGNvbXBsZXRlZCBpbml0LiBBIHRhc2tcXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jOjEyNDY6ICogb24gYSBub24tZXh0IGNsYXNzLCBwb3NzaWJsZSB1bmRlciBhbiAlU0NYX09QU19TV0lUQ0hfUEFSVElBTCByb290LCBzdGF5c1xcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTI0Ny0gKiAlUkVBRFkgYW5kIGlzIGVuYWJsZWQgYnkgc3dpdGNoaW5nX3RvX3NjeCgpIGlmIGl0IHN3aXRjaGVzIG92ZXIuXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L3N1Yi5jPTE3MDU9dm9pZCBzY3hfc3ViX2VuYWJsZV93b3JrZm4oc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTk1MC1cXHRcXHRcXHQgKiBpcyB3aGF0IHdlIHdhbnQuIEFzc2lnbiBpdCB0byBAc2NoIGFuZCwgaWYgaXQncyBvblxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmM6MTk1MTpcXHRcXHRcXHQgKiB0aGUgZXh0IGNsYXNzLCBlbmFibGUuIEEgbm9uLWV4dCB0YXNrLCBwb3NzaWJsZSB1bmRlclxcbmtlcm5lbC9zY2hlZC9leHQvc3ViLmMtMTk1Mi1cXHRcXHRcXHQgKiBhbiAlU0NYX09QU19TV0lUQ0hfUEFSVElBTCByb290LCBzdGF5cyBSRUFEWSBhbmQgaXNcXG4tLVxcbmtlcm5lbC9zY2hlZC9mYWlyLmM9Njk3Mz1zdGF0aWMgYm9vbCB0aHJvdHRsZV9jZnNfcnEoc3RydWN0IGNmc19ycSAqY2ZzX3JxKVxcbi0tXFxua2VybmVsL3NjaGVkL2ZhaXIuYy03MDI3LVxcdCAqIGN1cnJlbnQgZG9ub3IuIEluIGNhc2Ugb2YgcHJveHktZXhlY3V0aW9uLCB0aGUgZXhlY3V0aW9uXFxua2VybmVsL3NjaGVkL2ZhaXIuYzo3MDI4OlxcdCAqIGNvbnRleHQgY2Fubm90IGV4aXQgdG8gdGhlIHVzZXJzcGFjZSB3aGlsZSBob2xkaW5nIGEgbXV0ZXhcXG5rZXJuZWwvc2NoZWQvZmFpci5jLTcwMjktXFx0ICogYW5kIHRoZSBydWxlIG9mIHRocm90dGxlIGRlZmVycmFsIHRvIG9ubHkgdGhyb3R0bGUgdGhlXFxuLS1cXG5rZXJuZWwvc2NoZWQvZmFpci5jPTE1NDM2PWludCBzY2hlZF9ncm91cF9zZXRfaWRsZShzdHJ1Y3QgdGFza19ncm91cCAqdGcsIGxvbmcgaWRsZSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9mYWlyLmMtMTU0NjYtXFx0XFx0aWYgKFdBUk5fT05fT05DRSh3YXNfaWRsZSA9PSBjZnNfcnFfaXNfaWRsZShncnBfY2ZzX3JxKSkpXFxua2VybmVsL3NjaGVkL2ZhaXIuYzoxNTQ2NzpcXHRcXHRcXHRnb3RvIG5leHRfY3B1O1xcbmtlcm5lbC9zY2hlZC9mYWlyLmMtMTU0NjgtXFxuLS1cXG5rZXJuZWwvc2NoZWQvZmFpci5jLTE1NDg2LVxcbmtlcm5lbC9zY2hlZC9mYWlyLmM6MTU0ODc6bmV4dF9jcHU6XFxua2VybmVsL3NjaGVkL2ZhaXIuYy0xNTQ4OC1cXHRcXHRycV91bmxvY2tfaXJxcmVzdG9yZShycSwgXFx1MDAyNnJmKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9ydC5jPTIwNzg9c3RhdGljIHZvaWQgcHVzaF9ydF90YXNrcyhzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL3J0LmMtMjEyNy0gKi9cXG5rZXJuZWwvc2NoZWQvcnQuYzoyMTI4OnN0YXRpYyBpbnQgcnRvX25leHRfY3B1KHN0cnVjdCByb290X2RvbWFpbiAqcmQpXFxua2VybmVsL3NjaGVkL3J0LmMtMjEyOS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvcnQuYy0yMTM1LVxcdCAqIFdoZW4gc3RhcnRpbmcgdGhlIElQSSBSVCBwdXNoaW5nLCB0aGUgcnRvX2NwdSBpcyBzZXQgdG8gLTEsXFxua2VybmVsL3NjaGVkL3J0LmM6MjEzNjpcXHQgKiBydF9uZXh0X2NwdSgpIHdpbGwgc2ltcGx5IHJldHVybiB0aGUgZmlyc3QgQ1BVIGZvdW5kIGluXFxua2VybmVsL3NjaGVkL3J0LmMtMjEzNy1cXHQgKiB0aGUgcnRvX21hc2suXFxua2VybmVsL3NjaGVkL3J0LmMtMjEzOC1cXHQgKlxcbmtlcm5lbC9zY2hlZC9ydC5jOjIxMzk6XFx0ICogSWYgcnRvX25leHRfY3B1KCkgaXMgY2FsbGVkIHdpdGggcnRvX2NwdSBpcyBhIHZhbGlkIENQVSwgaXRcXG5rZXJuZWwvc2NoZWQvcnQuYy0yMTQwLVxcdCAqIHdpbGwgcmV0dXJuIHRoZSBuZXh0IENQVSBmb3VuZCBpbiB0aGUgcnRvX21hc2suXFxuLS1cXG5rZXJuZWwvc2NoZWQvcnQuYz0yMTkwPXN0YXRpYyB2b2lkIHRlbGxfY3B1X3RvX3B1c2goc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9ydC5jLTIyMDktXFx0aWYgKHJxLVxcdTAwM2VyZC1cXHUwMDNlcnRvX2NwdSBcXHUwMDNjIDApXFxua2VybmVsL3NjaGVkL3J0LmM6MjIxMDpcXHRcXHRjcHUgPSBydG9fbmV4dF9jcHUocnEtXFx1MDAzZXJkKTtcXG5rZXJuZWwvc2NoZWQvcnQuYy0yMjExLVxcbi0tXFxua2VybmVsL3NjaGVkL3J0LmM9MjIyND12b2lkIHJ0b19wdXNoX2lycV93b3JrX2Z1bmMoc3RydWN0IGlycV93b3JrICp3b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL3J0LmMtMjI0Ni1cXHQvKiBQYXNzIHRoZSBJUEkgdG8gdGhlIG5leHQgcnQgb3ZlcmxvYWRlZCBxdWV1ZSAqL1xcbmtlcm5lbC9zY2hlZC9ydC5jOjIyNDc6XFx0Y3B1ID0gcnRvX25leHRfY3B1KHJkKTtcXG5rZXJuZWwvc2NoZWQvcnQuYy0yMjQ4LVxcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTE1OT1zdHJ1Y3QgcnEge1xcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTE4Ny1cXHQvKlxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjExODg6XFx0ICogVGhlIG5leHQgY2FjaGVsaW5lIGhvbGRzIHRoZSAoaG90KSBydW5xdWV1ZSBsb2NrLCBhcyB3ZWxsIGFzXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTE4OS1cXHQgKiBzb21lIG90aGVyIGxlc3MgcGVyZm9ybWFuY2UtY3JpdGljYWwgZmllbGRzLlxcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTI1MS1cXHRzdHJ1Y3QgdGFza19zdHJ1Y3RcXHQqc3RvcDtcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoxMjUyOlxcdGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqbmV4dF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xMjUzLVxcdHVuc2lnbmVkIGxvbmdcXHRcXHRuZXh0X2JhbGFuY2U7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD0yODY3PXN0YXRpYyBpbmxpbmUgdm9pZCBycV9tb2RpZmllZF9iZWdpbihzdHJ1Y3QgcnEgKnJxLCBjb25zdCBzdHJ1Y3Qgc2NoZWRfY2xhc3MgKmNsYXNzKVxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTI4Njgte1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjI4Njk6XFx0aWYgKHNjaGVkX2NsYXNzX2Fib3ZlKHJxLVxcdTAwM2VuZXh0X2NsYXNzLCBjbGFzcykpXFxua2VybmVsL3NjaGVkL3NjaGVkLmg6Mjg3MDpcXHRcXHRycS1cXHUwMDNlbmV4dF9jbGFzcyA9IGNsYXNzO1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTI4NzEtfVxcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmg9Mjg3Mz1zdGF0aWMgaW5saW5lIGJvb2wgcnFfbW9kaWZpZWRfYWJvdmUoc3RydWN0IHJxICpycSwgY29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpjbGFzcylcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0yODc0LXtcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoyODc1OlxcdHJldHVybiBzY2hlZF9jbGFzc19hYm92ZShycS1cXHUwMDNlbmV4dF9jbGFzcywgY2xhc3MpO1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTI4NzYtfVxcbi0tXFxua2VybmVsL3NjaGVkL3N5c2NhbGxzLmM9NDkzPWludCBfX3NjaGVkX3NldHNjaGVkdWxlcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsXFxuLS1cXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy00OTgtXFx0aW50IHJldHZhbCwgb2xkcHJpbywgbmV3cHJpbztcXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYzo0OTk6XFx0Y29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpwcmV2X2NsYXNzLCAqbmV4dF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy01MDAtXFx0c3RydWN0IGJhbGFuY2VfY2FsbGJhY2sgKmhlYWQ7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy02NzUtXFx0cHJldl9jbGFzcyA9IHAtXFx1MDAzZXNjaGVkX2NsYXNzO1xcbmtlcm5lbC9zY2hlZC9zeXNjYWxscy5jOjY3NjpcXHRuZXh0X2NsYXNzID0gX19zZXRzY2hlZHVsZXJfY2xhc3MocG9saWN5LCBuZXdwcmlvKTtcXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy02NzctXFxua2VybmVsL3NjaGVkL3N5c2NhbGxzLmM6Njc4OlxcdGlmIChwcmV2X2NsYXNzICE9IG5leHRfY2xhc3MpXFxua2VybmVsL3NjaGVkL3N5c2NhbGxzLmMtNjc5LVxcdFxcdHF1ZXVlX2ZsYWdzIHw9IERFUVVFVUVfQ0xBU1M7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc3lzY2FsbHMuYy02ODQtXFx0XFx0XFx0X19zZXRzY2hlZHVsZXJfcGFyYW1zKHAsIGF0dHIpO1xcbmtlcm5lbC9zY2hlZC9zeXNjYWxscy5jOjY4NTpcXHRcXHRcXHRwLVxcdTAwM2VzY2hlZF9jbGFzcyA9IG5leHRfY2xhc3M7XFxua2VybmVsL3NjaGVkL3N5c2NhbGxzLmMtNjg2LVxcdFxcdFxcdHAtXFx1MDAzZXByaW8gPSBuZXdwcmlvO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NjozOC41ODM0MjY3ODNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0Njc5MDQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGtlcm5lbCBjb25maWcgc2V0dGluZzpcblxuKipEZWx2aW5nIGludG8gdGhlIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gd2UncmUgZGVhbGluZyB3aXRoIGlzIGBTQ0hFRF9DTEFTU19FWFRgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBmb3IgdGhlIGRlZmluaXRpb24gYW5kIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmbGFnIGVuYWJsZXMgb3IgZGlzYWJsZXMsIGFuZCB3aGVyZSBpdCBmaXRzIHdpdGhpbiB0aGUgbGFyZ2VyIHNjaGVkdWxpbmcgZnJhbWV3b3JrLiBBIHF1aWNrIHNjYW4gb2YgYGtlcm5lbC9zY2hlZC9LY29uZmlnYCBpcyBkZWZpbml0ZWx5IHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCBmaWxlIGlzIHRoZSBjZW50cmFsIHJlcG9zaXRvcnkgZm9yIHNjaGVkdWxlci1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQnkgY2hlY2tpbmcgdGhlcmUsIEkgY2FuIGdldCBhIGhhbmRsZSBvbjpcblxuKiAgICoqSXRzIFB1cnBvc2U6KiogV2hhdCBmdW5jdGlvbmFsaXR5IGRvZXMgYFNDSEVEX0NMQVNTX0VYVGAgY29udHJvbD8gSXMgaXQgZW5hYmxpbmcgYSBzcGVjaWZpYyBzY2hlZHVsZXIgY2xhc3MsIGV4dGVuZGluZyBhbiBleGlzdGluZyBvbmUsIG9yIHNvbWUgb3RoZXIgYXNwZWN0IG9mIHRoZSBzY2hlZHVsaW5nIHN5c3RlbT9cbiogICAqKkRlcGVuZGVuY2llczoqKiBEb2VzIHRoaXMgb3B0aW9uIHJlbHkgb24gYW55IG90aGVyIGNvbmZpZ3M/IEFyZSB0aGVyZSBwcmVyZXF1aXNpdGVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj9cbiogICAqKkNvbnRleHQ6KiogV2hlcmUgZG9lcyBgU0NIRURfQ0xBU1NfRVhUYCBzaXQgaW4gdGhlIEtjb25maWcgaGllcmFyY2h5PyBLbm93aW5nIGl0cyBwYXJlbnQgbWVudSBvciBzZWN0aW9uIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGl0cyBvdmVyYWxsIHNjb3BlIGFuZCByZWxldmFuY2Ugd2l0aGluIHRoZSBzY2hlZHVsaW5nIGxhbmRzY2FwZS5cbiogICAqKkRvY3VtZW50YXRpb246KiogSG9wZWZ1bGx5LCB0aGUgS2NvbmZpZyBlbnRyeSB3aWxsIGluY2x1ZGUgYSBoZWxwZnVsIGNvbW1lbnQuIEV2ZW4gYSBicmllZiBkZXNjcmlwdGlvbiB3b3VsZCBnaXZlIG1lIGEgc3RhcnRpbmcgcG9pbnQuXG5cbkFybWVkIHdpdGggdGhpcyBpbmZvcm1hdGlvbiwgSSBjYW4gbWFrZSBhIG1vcmUgaW5mb3JtZWQgYXNzZXNzbWVudCBvZiB0aGUgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb24uIEknbGwgYmUgYWJsZSB0byB0ZWxsIGhvdyB0aGlzIGZsYWcgaW1wYWN0cyB0aGUgc3lzdGVtJ3Mgc2NoZWR1bGluZyBiZWhhdmlvciBhbmQgcG9zc2libHkgaG93IHRvIHR1bmUgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODA4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6NDIuNjMwMjIwODcxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTMwMDU4OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU0NIRURfQ0xBU1NfRVhUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Njo0Mi42Nzk1MzUyMDlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNjA2ODQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB3aGVyZSB3b3VsZCB0aGlzIHByZWVtcHRpb24gY29uZmlndXJhdGlvbiBvcHRpb24gYmUgbHVya2luZz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgLiBUaGF0J3MgdGhlIG1vc3QgbGlrZWx5IHNwb3QsIGdpdmVuIHRoZSBuYW1lLiBCdXQgeW91IGtub3cgaG93IHRoZXNlIHRoaW5ncyBnbywgc29tZXRpbWVzIHRoaW5ncyBlbmQgdXAgaW4gdW5leHBlY3RlZCBwbGFjZXMuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgYWxzbyBnbGFuY2UgYXQgYGluaXQvS2NvbmZpZ2AuIFRoYXQncyBhIHBvc3NpYmlsaXR5LCBlc3BlY2lhbGx5IGlmIGl0J3MgcmVsYXRlZCB0byBlYXJseSBib290IG9yIHN5c3RlbSBpbml0aWFsaXphdGlvbi4gQW5kLCBvZiBjb3Vyc2UsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBtYWluIGBrZXJuZWwvS2NvbmZpZ2AgZmlsZSBpdHNlbGYuIEl0J3MgdGhlIGNhdGNoLWFsbCBmb3Iga2VybmVsIG9wdGlvbnMsIGFuZCBzb21ldGltZXMgdGhpbmdzIGdldCBwbGFjZWQgdGhlcmUgaWYgdGhleSBkb24ndCBmaXQgbmVhdGx5IGVsc2V3aGVyZS4gTGV0J3Mgc2VlIHdoYXQgdGhlc2UgS2NvbmZpZyBmaWxlcyByZXZlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMTkxLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTY6NDYuMDA1NjA3MDI3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzM5NDk4MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdD0zMD1Td2l0Y2hpbmcgdG8gYW5kIGZyb20gc2NoZWRfZXh0XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTMyLVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6MzM6YGBDT05GSUdfU0NIRURfQ0xBU1NfRVhUYGAgaXMgdGhlIGNvbmZpZyBvcHRpb24gdG8gZW5hYmxlIHNjaGVkX2V4dCBhbmRcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTM0LWBgdG9vbHMvc2NoZWRfZXh0YGAgY29udGFpbnMgdGhlIGV4YW1wbGUgc2NoZWR1bGVycy4gVGhlIGZvbGxvd2luZyBjb25maWdcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0PTM1PW9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgdG8gdXNlIHNjaGVkX2V4dDpcXG4tLVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtMzktICAgIENPTkZJR19CUEY9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6NDA6ICAgIENPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDEtICAgIENPTkZJR19CUEZfU1lTQ0FMTD15XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODM1PXN0cnVjdCB0YXNrX3N0cnVjdCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtODkyLVxcdHN0cnVjdCBzY2hlZF9kbF9lbnRpdHlcXHRcXHQqZGxfc2VydmVyO1xcbmluY2x1ZGUvbGludXgvc2NoZWQuaDo4OTM6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtODk0LVxcdHN0cnVjdCBzY2hlZF9leHRfZW50aXR5XFx0XFx0c2N4O1xcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC0xMS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oOjEyOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC0xMy1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0Lmg9Mjk1PWJvb2wgc2N4X3JjdV9jcHVfc3RhbGwoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnN0YWxsZWRfbWFzayk7XFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC0yOTYtXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaDoyOTc6I2Vsc2VcXHQvKiAhQ09ORklHX1NDSEVEX0NMQVNTX0VYVCAqL1xcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0LmgtMjk4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaD0zMDM9c3RhdGljIGlubGluZSBib29sIHNjeF9yY3VfY3B1X3N0YWxsKGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzdGFsbGVkX21hc2spIHsgcmV0dXJuIGZhbHNlOyB9XFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaC0zMDQtXFxuaW5jbHVkZS9saW51eC9zY2hlZC9leHQuaDozMDU6I2VuZGlmXFx0LyogQ09ORklHX1NDSEVEX0NMQVNTX0VYVCAqL1xcbmluY2x1ZGUvbGludXgvc2NoZWQvZXh0LmgtMzA2LVxcbi0tXFxuaW5pdC9LY29uZmlnPTkzNz1jb25maWcgU0NIRURfUFJPWFlfRVhFQ1xcbi0tXFxuaW5pdC9LY29uZmlnLTk0MS1cXHQjIE5lZWQgdG8gaW52ZXN0aWdhdGUgaG93IHRvIGluZm9ybSBzY2hlZF9leHQgb2Ygc3BsaXQgY29udGV4dHNcXG5pbml0L0tjb25maWc6OTQyOlxcdGRlcGVuZHMgb24gIVNDSEVEX0NMQVNTX0VYVFxcbmluaXQvS2NvbmZpZy05NDMtXFx0IyBOb3QgcGFydGljdWxhcmx5IHVzZWZ1bCB1bnRpbCB3ZSBnZXQgdG8gbXVsdGktcnEgcHJveHlpbmdcXG4tLVxcbmluaXQvS2NvbmZpZz0xMjAwPWNvbmZpZyBFWFRfR1JPVVBfU0NIRURcXG5pbml0L0tjb25maWctMTIwMS1cXHRib29sXFxuaW5pdC9LY29uZmlnOjEyMDI6XFx0ZGVwZW5kcyBvbiBTQ0hFRF9DTEFTU19FWFQgXFx1MDAyNlxcdTAwMjYgQ0dST1VQX1NDSEVEXFxuaW5pdC9LY29uZmlnLTEyMDMtXFx0c2VsZWN0IEdST1VQX1NDSEVEX1dFSUdIVFxcbi0tXFxuaW5pdC9LY29uZmlnPTEyMDk9Y29uZmlnIEVYVF9TVUJfU0NIRURcXG5pbml0L0tjb25maWctMTIxMC0gICAgICAgIGRlZl9ib29sIHlcXG5pbml0L0tjb25maWc6MTIxMTogICAgICAgIGRlcGVuZHMgb24gU0NIRURfQ0xBU1NfRVhUIFxcdTAwMjZcXHUwMDI2IENHUk9VUFNcXG5pbml0L0tjb25maWctMTIxMi1cXG4tLVxcbmluaXQvaW5pdF90YXNrLmM9MTA1PXN0cnVjdCB0YXNrX3N0cnVjdCBpbml0X3Rhc2sgX19hbGlnbmVkKEwxX0NBQ0hFX0JZVEVTKSA9IHtcXG4tLVxcbmluaXQvaW5pdF90YXNrLmMtMTQyLSNlbmRpZlxcbmluaXQvaW5pdF90YXNrLmM6MTQzOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxuaW5pdC9pbml0X3Rhc2suYy0xNDQtXFx0LnNjeFxcdFxcdD0ge1xcbi0tXFxua2VybmVsL0tjb25maWcucHJlZW1wdD0xNTU9Y29uZmlnIFNDSEVEX0NPUkVcXG4tLVxcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQtMTcyLVxcbmtlcm5lbC9LY29uZmlnLnByZWVtcHQ6MTczOmNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3NC1cXHRib29sIFxcXCJFeHRlbnNpYmxlIFNjaGVkdWxpbmcgQ2xhc3NcXFwiXFxuLS1cXG5rZXJuZWwvc2NoZWQvYnVpbGRfcG9saWN5LmMtNTktXFxua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jOjYwOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL2J1aWxkX3BvbGljeS5jLTYxLSMgaW5jbHVkZSBcXHUwMDNjbGludXgvYnRmX2lkcy5oXFx1MDAzZVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz0yMjg9c3RhdGljIGlubGluZSBib29sIHByaW9fbGVzcyhjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmEsXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTI2MS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jOjI2MjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtMjYzLVxcdGlmIChwYSA9PSBNQVhfUlRfUFJJTyArIE1BWF9OSUNFICsgMSlcXHQvKiBleHQgKi9cXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDU3ND1zdGF0aWMgdm9pZCBfX3NjaGVkX2ZvcmsodTY0IGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTQ2MTEtXFxua2VybmVsL3NjaGVkL2NvcmUuYzo0NjEyOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL2NvcmUuYy00NjEzLVxcdGluaXRfc2N4X2VudGl0eShcXHUwMDI2cC1cXHUwMDNlc2N4KTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDgxND1pbnQgc2NoZWRfZm9yayh1NjQgY2xvbmVfZmxhZ3MsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNDg2MS1cXHRcXHRwLVxcdTAwM2VzY2hlZF9jbGFzcyA9IFxcdTAwMjZydF9zY2hlZF9jbGFzcztcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjQ4NjI6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTQ4NjMtXFx0fSBlbHNlIGlmICh0YXNrX3Nob3VsZF9zY3gocC1cXHUwMDNlcG9saWN5KSkge1xcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYz03NjEwPWNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqX19zZXRzY2hlZHVsZXJfY2xhc3MoaW50IHBvbGljeSwgaW50IHByaW8pXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTc2MTctXFxua2VybmVsL3NjaGVkL2NvcmUuYzo3NjE4OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL2NvcmUuYy03NjE5LVxcdGlmICh0YXNrX3Nob3VsZF9zY3gocG9saWN5KSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM9ODg3MD1pbnQgc2NoZWRfY3B1X2R5aW5nKHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTg4ODQtXFx0ZGxfc2VydmVyX3N0b3AoXFx1MDAyNnJxLVxcdTAwM2VmYWlyX3NlcnZlcik7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo4ODg1OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL2NvcmUuYy04ODg2LVxcdGRsX3NlcnZlcl9zdG9wKFxcdTAwMjZycS1cXHUwMDNlZXh0X3NlcnZlcik7XFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jPTg5NTM9dm9pZCBfX2luaXQgc2NoZWRfaW5pdCh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYy04OTYyLVxcdEJVR19PTighc2NoZWRfY2xhc3NfYWJvdmUoXFx1MDAyNmZhaXJfc2NoZWRfY2xhc3MsIFxcdTAwMjZpZGxlX3NjaGVkX2NsYXNzKSk7XFxua2VybmVsL3NjaGVkL2NvcmUuYzo4OTYzOiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL2NvcmUuYy04OTY0LVxcdEJVR19PTighc2NoZWRfY2xhc3NfYWJvdmUoXFx1MDAyNmZhaXJfc2NoZWRfY2xhc3MsIFxcdTAwMjZleHRfc2NoZWRfY2xhc3MpKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtOTA4MC1cXHRcXHRmYWlyX3NlcnZlcl9pbml0KHJxKTtcXG5rZXJuZWwvc2NoZWQvY29yZS5jOjkwODE6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvY29yZS5jLTkwODItXFx0XFx0ZXh0X3NlcnZlcl9pbml0KHJxKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jPTEwOD1zdGF0aWMgaW5saW5lIHU4IGRsX2dldF90eXBlKHN0cnVjdCBzY2hlZF9kbF9lbnRpdHkgKmRsX3NlLCBzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmMtMTEzLVxcdFxcdHJldHVybiBETF9TRVJWRVJfRkFJUjtcXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYzoxMTQ6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYy0xMTUtXFx0aWYgKGRsX3NlID09IFxcdTAwMjZycS1cXHUwMDNlZXh0X3NlcnZlcilcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jPTE4NDI9dm9pZCBzY2hlZF9pbml0X2RsX3NlcnZlcnModm9pZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTE4NjYtXFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MTg2NzojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTE4NjgtXFx0XFx0ZGxfc2UgPSBcXHUwMDI2cnEtXFx1MDAzZWV4dF9zZXJ2ZXI7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0zNDUxPXN0YXRpYyB2b2lkIGRsX3NlcnZlcl9hZGRfYncoc3RydWN0IHJvb3RfZG9tYWluICpyZCwgaW50IGNwdSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTM0NTgtXFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MzQ1OTojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTM0NjAtXFx0ZGxfc2UgPSBcXHUwMDI2Y3B1X3JxKGNwdSktXFx1MDAzZWV4dF9zZXJ2ZXI7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZGVhZGxpbmUuYz0zNDY2PXN0YXRpYyB1NjQgZGxfc2VydmVyX3JlYWRfYncoaW50IGNwdSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTM0NzMtXFxua2VybmVsL3NjaGVkL2RlYWRsaW5lLmM6MzQ3NDojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9kZWFkbGluZS5jLTM0NzUtXFx0aWYgKGNwdV9ycShjcHUpLVxcdTAwM2VleHRfc2VydmVyLmRsX3NlcnZlciBcXHUwMDI2XFx1MDAyNlxcbi0tXFxua2VybmVsL3NjaGVkL2RlYnVnLmM9NDk0PXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3NjaGVkO1xcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTQ5NS1cXG5rZXJuZWwvc2NoZWQvZGVidWcuYzo0OTY6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvZGVidWcuYy00OTctc3RhdGljIHNzaXplX3RcXG4tLVxcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jPTU2MT1zdGF0aWMgdm9pZCBkZWJ1Z2ZzX2V4dF9zZXJ2ZXJfaW5pdCh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2RlYnVnLmMtNTgwLX1cXG5rZXJuZWwvc2NoZWQvZGVidWcuYzo1ODE6I2VuZGlmIC8qIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgKi9cXG5rZXJuZWwvc2NoZWQvZGVidWcuYy01ODItXFxuLS1cXG5rZXJuZWwvc2NoZWQvZGVidWcuYz03MTI9c3RhdGljIF9faW5pdCBpbnQgc2NoZWRfaW5pdF9kZWJ1Zyh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2RlYnVnLmMtNzY5LVxcdGRlYnVnZnNfZmFpcl9zZXJ2ZXJfaW5pdCgpO1xcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jOjc3MDojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTc3MS1cXHRkZWJ1Z2ZzX2V4dF9zZXJ2ZXJfaW5pdCgpO1xcbi0tXFxua2VybmVsL3NjaGVkL2RlYnVnLmM9MTQwNj12b2lkIHByb2Nfc2NoZWRfc2hvd190YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxcbi0tXFxua2VybmVsL3NjaGVkL2RlYnVnLmMtMTUwNS1cXHR9XFxua2VybmVsL3NjaGVkL2RlYnVnLmM6MTUwNjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9kZWJ1Zy5jLTE1MDctXFx0X19QUyhcXFwiZXh0LmVuYWJsZWRcXFwiLCB0YXNrX29uX3NjeChwKSk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTY0MT12b2lkIHNjeF9zZXRfdGFza19zdGF0ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHUzMiBzdGF0ZSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjk3LSAqIHNjeF90YXNrcyBjYW4gYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiBhbHdheXMgdXNpbmcgY2dyb3VwIGl0ZXJhdGlvbiBpZlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Njk4OiAqIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgZGVwZW5kcyBvbiBDT05GSUdfQ0dST1VQUy5cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTY5OS0gKlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuaC04LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg6OTojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtMTAtXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oPTM5PWJvb2wgc2N4X3ByaW9fbGVzcyhjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmEsIGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqYixcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtNDItXFxua2VybmVsL3NjaGVkL2V4dC9leHQuaDo0MzojZWxzZVxcdC8qIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTQ0LVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuaD01Nz1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9zY2hlZF9leHRfY2xhc3Modm9pZCkge31cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5oLTU4LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0Lmg6NTk6I2VuZGlmXFx0LyogQ09ORklHX1NDSEVEX0NMQVNTX0VYVCAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtNjAtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuaDo2MTojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmgtNjItdm9pZCBfX3NjeF91cGRhdGVfaWRsZShzdHJ1Y3QgcnEgKnJxLCBib29sIGlkbGUsIGJvb2wgZG9fbm90aWZ5KTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9pZGxlLmM9NTU3PXN0YXRpYyB2b2lkIHVwZGF0ZV9jdXJyX2lkbGUoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9pZGxlLmMtNTY5LVxcdGRsX3NlcnZlcl91cGRhdGVfaWRsZShcXHUwMDI2cnEtXFx1MDAzZWZhaXJfc2VydmVyLCBkZWx0YV9leGVjKTtcXG5rZXJuZWwvc2NoZWQvaWRsZS5jOjU3MDojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9pZGxlLmMtNTcxLVxcdGRsX3NlcnZlcl91cGRhdGVfaWRsZShcXHUwMDI2cnEtXFx1MDAzZWV4dF9zZXJ2ZXIsIGRlbHRhX2V4ZWMpO1xcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTk0PXN0YXRpYyBpbmxpbmUgaW50IG5vcm1hbF9wb2xpY3koaW50IHBvbGljeSlcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xOTUte1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjE5NjojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTE5Ny1cXHRpZiAocG9saWN5ID09IFNDSEVEX0VYVClcXG4tLVxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oPTY4MT1zdHJ1Y3QgY2ZzX3JxIHtcXG4tLVxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTc3OS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDo3ODA6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC03ODEtLyogc2N4X3JxLVxcdTAwM2VmbGFncywgcHJvdGVjdGVkIGJ5IHRoZSBycSBsb2NrICovXFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD04MTE9c3RydWN0IHNjeF9ycSB7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC04NTAtfTtcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDo4NTE6I2VuZGlmIC8qIENPTkZJR19TQ0hFRF9DTEFTU19FWFQgKi9cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC04NTItXFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD0xMTU5PXN0cnVjdCBycSB7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xMjEzLVxcdHN0cnVjdCBkbF9ycVxcdFxcdGRsO1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjEyMTQ6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xMjE1LVxcdHN0cnVjdCBzY3hfcnFcXHRcXHRzY3g7XFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD0xODg1PWV4dGVybiBzdHJ1Y3QgYmFsYW5jZV9jYWxsYmFjayBiYWxhbmNlX3B1c2hfY2FsbGJhY2s7XFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTg4Ni1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoxODg3OiNpZmRlZiBDT05GSUdfU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTg4OC1leHRlcm4gY29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzIGV4dF9zY2hlZF9jbGFzcztcXG4tLVxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oPTE5MDQ9c3RhdGljIGlubGluZSB2b2lkIHNjeF9ycV9jbG9ja19pbnZhbGlkYXRlKHN0cnVjdCBycSAqcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0xOTEwLVxcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjE5MTE6I2Vsc2UgLyogIUNPTkZJR19TQ0hFRF9DTEFTU19FWFQ6ICovXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMTkxMi0jZGVmaW5lIHNjeF9lbmFibGVkKClcXHRcXHRmYWxzZVxcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmg9MTkxNj1zdGF0aWMgaW5saW5lIHZvaWQgc2N4X3JxX2Nsb2NrX2ludmFsaWRhdGUoc3RydWN0IHJxICpycSkge31cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaDoxOTE3OiNlbmRpZiAvKiAhQ09ORklHX1NDSEVEX0NMQVNTX0VYVCAqL1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oLTE5MTgtXFxuLS1cXG5rZXJuZWwvc2NoZWQvc2NoZWQuaD0yODQxPXN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpuZXh0X2FjdGl2ZV9jbGFzcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfY2xhc3MgKmNsYXNzKVxcbi0tXFxua2VybmVsL3NjaGVkL3NjaGVkLmgtMjg0My1cXHRjbGFzcysrO1xcbmtlcm5lbC9zY2hlZC9zY2hlZC5oOjI4NDQ6I2lmZGVmIENPTkZJR19TQ0hFRF9DTEFTU19FWFRcXG5rZXJuZWwvc2NoZWQvc2NoZWQuaC0yODQ1LVxcdGlmIChzY3hfc3dpdGNoZWRfYWxsKCkgXFx1MDAyNlxcdTAwMjYgY2xhc3MgPT0gXFx1MDAyNmZhaXJfc2NoZWRfY2xhc3MpXFxuLS1cXG5rZXJuZWwvc2NoZWQvdG9wb2xvZ3kuYz00NzQ9dm9pZCBycV9hdHRhY2hfcm9vdChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3Qgcm9vdF9kb21haW4gKnJkKVxcbi0tXFxua2VybmVsL3NjaGVkL3RvcG9sb2d5LmMtNTEyLVxcbmtlcm5lbC9zY2hlZC90b3BvbG9neS5jOjUxMzojaWZkZWYgQ09ORklHX1NDSEVEX0NMQVNTX0VYVFxcbmtlcm5lbC9zY2hlZC90b3BvbG9neS5jLTUxNC1cXHRpZiAocnEtXFx1MDAzZWV4dF9zZXJ2ZXIuZGxfc2VydmVyKVxcbi0tXFxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmM9MjQ9c3RhdGljIGludCBfX2luaXQgcmVnaXN0ZXJfZGVhZGxpbmUodm9pZClcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuYy0yNS17XFxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmM6MjY6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1NDSEVEX0NMQVNTX0VYVCkpIHtcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuYy0yNy1cXHRcXHRydl9leHRfc2NoZWRfY2xhc3MgPSAodm9pZCAqKWthbGxzeW1zX2xvb2t1cF9uYW1lKFxcXCJleHRfc2NoZWRfY2xhc3NcXFwiKTtcXG4tLVxcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5oPTc3PXN0YXRpYyBpbmxpbmUgYm9vbCB0YXNrX2lzX3NjeF9lbmFibGVkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5oLTc4LXtcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaDo3OTpcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfU0NIRURfQ0xBU1NfRVhUKSBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5oLTgwLVxcdCAgICAgICB0c2stXFx1MDAzZXNjaGVkX2NsYXNzID09IHJ2X2V4dF9zY2hlZF9jbGFzcztcXG4tLVxcbmtlcm5lbC90cmFjZS9ydi9tb25pdG9ycy9kZWFkbGluZS9kZWFkbGluZS5oPTE1Nz1zdGF0aWMgaW5saW5lIGludCBpbml0X3N0b3JhZ2UoYm9vbCBza2lwX3Rhc2tzKVxcbi0tXFxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL2RlYWRsaW5lL2RlYWRsaW5lLmgtMTY0LVxcdFxcdFxcdGdvdG8gZmFpbDtcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaDoxNjU6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1NDSEVEX0NMQVNTX0VYVCkgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvZGVhZGxpbmUvZGVhZGxpbmUuaC0xNjYtXFx0XFx0ICAgICFkYV9jcmVhdGVfZW1wdHlfc3RvcmFnZShleHRfc2VydmVyX2lkKGNwdSkpKVxcbi0tXFxua2VybmVsL3RyYWNlL3J2L21vbml0b3JzL25vbWlzcy9ub21pc3MuYz0xNTc9c3RhdGljIHZvaWQgaGFuZGxlX3NjaGVkX3N3aXRjaCh2b2lkICpkYXRhLCBib29sIHByZWVtcHQsXFxuLS1cXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvbm9taXNzL25vbWlzcy5jLTE4MC1cXHRcXHRoYW5kbGVfc2VydmVyX3N3aXRjaChuZXh0LCBjcHUsIERMX1NFUlZFUl9GQUlSKTtcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvbm9taXNzL25vbWlzcy5jOjE4MTpcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0NIRURfQ0xBU1NfRVhUKSlcXG5rZXJuZWwvdHJhY2UvcnYvbW9uaXRvcnMvbm9taXNzL25vbWlzcy5jLTE4Mi1cXHRcXHRcXHRoYW5kbGVfc2VydmVyX3N3aXRjaChuZXh0LCBjcHUsIERMX1NFUlZFUl9FWFQpO1xcbi0tXFxudG9vbHMvc2NoZWRfZXh0L0tjb25maWc9OD1DT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcXG50b29scy9zY2hlZF9leHQvS2NvbmZpZzo5OkNPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnLTEwLVxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZD01Nj1DT05GSUdfQlBGPXlcXG50b29scy9zY2hlZF9leHQvUkVBRE1FLm1kOjU3OkNPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQtNTgtQ09ORklHX0JQRl9TWVNDQUxMPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3NjaGVkX2V4dC9jb25maWc6MTpDT05GSUdfU0NIRURfQ0xBU1NfRVhUPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zY2hlZF9leHQvY29uZmlnLTItQ09ORklHX0NHUk9VUFM9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Njo0Ny43NDUxMTQ5NjlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzNDk2NzM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTY2hlZHVsZXIgRXh0ZW5zaW9uIFBhdGNoKipcblxuT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gaXMgYFNDSEVEX0NMQVNTX0VYVGAsIGFuZCB0aGUgZnVuY3Rpb24gd2UncmUgbG9va2luZyBhdCBpcyBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgd29ydGggZnV6emluZywgYW5kIGlmIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFueSBpbnRlcmVzdGluZyBuZXcgc3VyZmFjZSBhcmVhLiBUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrLCBzcGVjaWZpY2FsbHk6XG5cbmBgYGNcblx0XHQvKiBkZXN0cm95X2RzcSgpIG1heSBoYXZlIHJhY2VkIGFuZCBpbnZhbGlkYXRlZCBAZHNxLCBub3RoaW5nIHRvIHJlZW5xICovXG5cdFx0aWYgKHVubGlrZWx5KGRzcS1cdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKVxuXHRcdFx0Y29udGludWU7XG5gYGBcblxuUmlnaHQsIHRoaXMgaXMgYSByYWNlIGNvbmRpdGlvbiBmaXggcmVsYXRlZCB0byBgZGVzdHJveV9kc3EoKWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBFc3NlbnRpYWxseSwgaXQgcHJldmVudHMgYSB1c2UtYWZ0ZXItZnJlZSBpc3N1ZS4gVGhpcyBpcyAqZGVmaW5pdGVseSogYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGNvcmUgYHNjaGVkX2V4dGAgKHNjaGVkdWxlciBleHRlbnNpb24pIGltcGxlbWVudGF0aW9uLiBTaW5jZSBpdCdzIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uLCBpdOKAmXMgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJ4oCZbSB0aGlua2luZyBgV29ydGhGdXp6aW5nPXRydWVgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuXG5cbk5vdywgbGV0J3MgZGlnIGEgYml0IGRlZXBlci4gYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBmaW5kIGl0cyBjYWxsZXJzLiBMZXTigJlzIHNlZeKApiBpdCBsb29rcyBsaWtlIGl0J3MgY2FsbGVkIGJ5IGBydW5fZGVmZXJyZWRgLCB3aGljaCBpcyBpbiB0dXJuIGNhbGxlZCBieSBgc2N4X2JwZl9ydW5fZGVmZXJyZWRgIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gdGFrZSBhIHF1aWNrIGxvb2sgYXQgYHJ1bl9kZWZlcnJlZGAgdG8gY29uZmlybSB0aGUgY2FsbCBwYXRoIGFuZCB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDM0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjUzLjA4MDA4NjM1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTIyMzYzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydW5fZGVmZXJyZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTI1Mz1NT0RVTEVfUEFSTV9ERVNDKGJ5cGFzc19sYl9pbnR2X3VzLCBcXFwiYnlwYXNzIGxvYWQgYmFsYW5jZSBpbnRlcnZhbCBpbiBtaWNyb3NlY29uZHMgKDAgKGRpc2FibGUpIHRvIDEwcylcXFwiKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjU5LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjYwOnN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTI2MS1zdGF0aWMgYm9vbCB0YXNrX2RlYWRfYW5kX2RvbmUoc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTk1PXN0YXRpYyB2b2lkIGRlZmVycmVkX2JhbF9jYl93b3JrZm4oc3RydWN0IHJxICpycSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk5Ni17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5OTc6XFx0cnVuX2RlZmVycmVkKHJxKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk5OC19XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMDA9c3RhdGljIHZvaWQgZGVmZXJyZWRfaXJxX3dvcmtmbihzdHJ1Y3QgaXJxX3dvcmsgKmlycV93b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDA0LVxcdHJhd19zcGluX3JxX2xvY2socnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAwNTpcXHRydW5fZGVmZXJyZWQocnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTAwNi1cXHRzY3hfcnFfbG9ja19kcm9wKHJxKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzM2MD1zdGF0aWMgZW51bSBzY3hfZHNwX3ZlcmRpY3QgZGlzcGF0Y2hfY29yZV9waWNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMzODktXFx0XFx0cnEtXFx1MDAzZXNjeC5mbGFncyBcXHUwMDI2PSB+U0NYX1JRX0JBTF9DQl9QRU5ESU5HO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzM5MDpcXHRcXHRydW5fZGVmZXJyZWQocnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzM5MS1cXHR9XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM2MjU9c3RhdGljIHZvaWQgdGFza193b2tlbl9zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzYyNi17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNjI3OlxcdHJ1bl9kZWZlcnJlZChycSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNjI4LX1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDYxMT1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2NDgtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NjQ5OnN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY1MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU2OjUzLjEyOTMxNjY4OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTI2OTU1NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgcnVuX2RlZmVycmVkYCBGdW5jdGlvbiBDYWxsZXJzKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgcnVuX2RlZmVycmVkYCBpcyB0cmlnZ2VyZWQgYnkgYSBoYW5kZnVsIG9mIGZ1bmN0aW9uczogYGRlZmVycmVkX2JhbF9jYl93b3JrZm5gLCBgZGVmZXJyZWRfaXJxX3dvcmtmbmAsIGBkaXNwYXRjaF9jb3JlX3BpY2tgLCBhbmQgYHRhc2tfd29rZW5fc2N4YC4gSW50ZXJlc3RpbmcuIEFuZCwgaWYgSSdtIHJlYWRpbmcgdGhpcyByaWdodCwgYHRhc2tfd29rZW5fc2N4YCBpcyBhIGNhbGxiYWNrIHRpZWQgdG8gdGhlIHNjaGVkdWxlciBjbGFzcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgaW52ZXN0aWdhdGlvbi4gTGV0J3MgZGlnIGludG8gYHRhc2tfd29rZW5fc2N4YCBhbmQgYWxzbyB0aGF0IGBkZWZlcnJlZF9iYWxfY2Jfd29ya2ZuYCBmdW5jdGlvbiwgdGhleSBzZWVtIGxpa2UgdGhlIG1vc3QgcmVsZXZhbnQgcmlnaHQgbm93LlxuXG5JJ20gdGhpbmtpbmcgYHRhc2tfd29rZW5fc2N4YCBpcyBhIHByb21pc2luZyB0YXJnZXQgZm9yIG5vdy5cblxuV2FpdCwgd2hhdCBhYm91dCBgZGVzdHJveV9kc3FgPyBUaGF0IGNvbW1lbnQgaXMgbWFraW5nIG1lIHJhaXNlIGFuIGV5ZWJyb3c7IGl0IG1lbnRpb25zIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGFuZCBpbnZhbGlkYXRpb24gb2YgYEBkc3FgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgZGVzdHJveV9kc3FgIGlzIHNvbWUga2luZCBvZiBlQlBGIGtmdW5jIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBUaGF0IGNvdWxkIGJlIHNpZ25pZmljYW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI2MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Njo1Ny42NTYyNzU2MDNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzYxNjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlc3Ryb3lfZHNxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz00NjExPXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDYzOS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ2NDA6XFx0XFx0LyogZGVzdHJveV9kc3EoKSBtYXkgaGF2ZSByYWNlZCBhbmQgaW52YWxpZGF0ZWQgQGRzcSwgbm90aGluZyB0byByZWVucSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY0MS1cXHRcXHRpZiAodW5saWtlbHkoZHNxLVxcdTAwM2VpZCA9PSBTQ1hfRFNRX0lOVkFMSUQpKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01MTI3PXN0YXRpYyBERUZJTkVfSVJRX1dPUksoZnJlZV9kc3FfaXJxX3dvcmssIGZyZWVfZHNxX2lycV93b3JrZm4pO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTEyOC1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjUxMjk6c3RhdGljIHZvaWQgZGVzdHJveV9kc3Eoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCB1NjQgZHNxX2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTEzMC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTUzMzg9c3RhdGljIHZvaWQgc2N4X3NjaGVkX2ZyZWVfcmN1X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01NDAzLVxcdFxcdHdoaWxlICghSVNfRVJSX09SX05VTEwoKGRzcSA9IHJoYXNodGFibGVfd2Fsa19uZXh0KFxcdTAwMjZyaHRfaXRlcikpKSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjU0MDQ6XFx0XFx0XFx0ZGVzdHJveV9kc3Eoc2NoLCBkc3EtXFx1MDAzZWlkKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTU0MDUtXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk2NzE9X19icGZfa2Z1bmMgczMyIHNjeF9icGZfZHNxX25yX3F1ZXVlZCh1NjQgZHNxX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3MDgtLyoqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzA5OiAqIHNjeF9icGZfZGVzdHJveV9kc3EgLSBEZXN0cm95IGEgY3VzdG9tIERTUVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcxMC0gKiBAZHNxX2lkOiBEU1EgdG8gZGVzdHJveVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzE3LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTcxODpfX2JwZl9rZnVuYyB2b2lkIHNjeF9icGZfZGVzdHJveV9kc3EodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcxOS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTk3MjQtXFx0aWYgKHNjaClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk3MjU6XFx0XFx0ZGVzdHJveV9kc3Eoc2NoLCBkc3FfaWQpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTcyNi19XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNzE4PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9ucl9xdWV1ZWQsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDcxOTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kZXN0cm95X2RzcSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNzIwLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9wZWVrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVX1BST1RFQ1RFRCB8IEtGX1JFVF9OVUxMKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Njo1Ny43MDcwNDM3MTJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyNTI5NjcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgS2VybmVsIEZ1bmN0aW9uIFJhY2UgQ29uZGl0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHNjeF9icGZfZGVzdHJveV9kc3FgLiBJIGtub3cgdGhpcyBpcyBhIEJQRiBrZnVuYywgc28gdGhhdCBpbW1lZGlhdGVseSBuYXJyb3dzIGRvd24gdGhlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIFRoZSBjcml0aWNhbCByYWNlIGhlcmUgaXMgYmV0d2VlbiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYCBpcyB0cmlnZ2VyZWQuIFJpZ2h0LCBpdCdzIGNhbGxlZCBieSBgcnVuX2RlZmVycmVkYC4gQW5kIGBydW5fZGVmZXJyZWRgIGhhcyBtdWx0aXBsZSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzOiBgdGFza193b2tlbl9zY3hgLCBgZGVmZXJyZWRfYmFsX2NiX3dvcmtmbmAsIGBkZWZlcnJlZF9pcnFfd29ya2ZuYCwgYW5kIGBkaXNwYXRjaF9jb3JlX3BpY2tgLiBUaGF0J3MgYSByZWFzb25hYmxlIHNldCB0byBjaGVjay4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGRpc3BhdGNoX2NvcmVfcGlja2AgZ2V0cyBpbnZva2VkLiBJcyB0aGF0IGNhbGxlZCBieSBgcGlja19uZXh0X3Rhc2tfZXh0YCBvciBzb21ldGhpbmcgYW5hbG9nb3VzPyBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBjYWxsIGdyYXBoIGZvciB0aGF0IGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGFjY3VyYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDUwNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzowMi4wMzIzNDkzN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2MzUxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGlzcGF0Y2hfY29yZV9waWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuYz0zMzIzPXN0YXRpYyBlbnVtIHNjeF9kc3BfdmVyZGljdCBkaXNwYXRjaF9waWNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMzNTktICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMzYwOnN0YXRpYyBlbnVtIHNjeF9kc3BfdmVyZGljdCBkaXNwYXRjaF9jb3JlX3BpY2soc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZixcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMzNjEtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldilcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQwOC0jZWxzZVxcdC8qIENPTkZJR19TQ0hFRF9DT1JFICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNDA5OnN0YXRpYyBlbnVtIHNjeF9kc3BfdmVyZGljdCBkaXNwYXRjaF9jb3JlX3BpY2soc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZixcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0MTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldilcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzQxNz1kb19waWNrX3Rhc2tfc2N4KHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYsIGJvb2wgZm9yY2Vfc2N4KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDI4LVxcdGlmIChzY2hlZF9jb3JlX2VuYWJsZWQocnEpKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzQyOTpcXHRcXHR2ZXJkaWN0ID0gZGlzcGF0Y2hfY29yZV9waWNrKHJxLCByZiwgcHJldik7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDMwLVxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MDIuMDc4OTkwMDQ4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzIwOTI0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBJbnF1aXJ5OiBEZWVwIERpdmUgaW50byBgc2NoZWRfZXh0YCoqXG5cbk9rYXksIHNvIGBkb19waWNrX3Rhc2tfc2N4YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHRoZSBuZXh0IHRhc2sgZm9yIGBzY2hlZF9leHRgLiBUaGF0IG1lYW5zIHBvdGVudGlhbCBmb2N1cyBhcmVhcyBhcmUgZWl0aGVyIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCwgYGRvX3BpY2tfdGFza19zY3hgIGl0c2VsZiwgb3IgcGVyaGFwcyBgdGFza193b2tlbl9zY3hgLiBIYW5nIG9uLi4uIGBzY3hfYnBmX2Rlc3Ryb3lfZHNxYCBpcyBhIEJQRiBrZnVuYywgaXNuJ3QgaXQ/IE1lYW5pbmcgaXQncyBjYWxsZWQgKmZyb20qIEJQRiBwcm9ncmFtcy4gSW50ZXJlc3RpbmcuIE5vdyBJIHJlbWVtYmVyIOKAkyBmdXp6aW5nIHRoZXNlIGtmdW5jcywgdGhhdCdzIHN5emthbGxlcidzIGRvbWFpbi4gSG1tLi4uIExldCdzIHF1aWNrbHkgdmVyaWZ5IHJlYWNoYWJpbGl0eSBmb3IgYHNjeF9icGZfZGVzdHJveV9kc3FgLiBZZXAsIGNvbmZpcm1lZC4gSXQncyBpbmRlZWQgYSBrZnVuYy4gQWxyaWdodCwgbGV0J3MgYWxzbyBtYWtlIHN1cmUgYHNjeF9icGZfY3JlYXRlX2RzcWAgaXMgaW4gcGxhY2UsIGp1c3QgZm9yIGdvb2QgbWVhc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyNTcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MDYuMjUxMDg1NjIyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDI5NTMzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3hfYnBmX2NyZWF0ZV9kc3FcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTkzNzc9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05Mzc5LS8qKlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTM4MDogKiBzY3hfYnBmX2NyZWF0ZV9kc3EgLSBDcmVhdGUgYSBjdXN0b20gRFNRXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MzgxLSAqIEBkc3FfaWQ6IERTUSB0byBjcmVhdGVcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTM4Ny0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkzODg6X19icGZfa2Z1bmMgczMyIHNjeF9icGZfY3JlYXRlX2RzcSh1NjQgZHNxX2lkLCBzMzIgbm9kZSwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTM4OS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk0MzY9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX3VubG9ja2VkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTQzNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcmVhdGVfZHNxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU0xFRVBBQkxFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTQzOC0vKiBhbHNvIGluIHNjeF9rZnVuY19pZHNfZGlzcGF0Y2g6IGFsc28gY2FsbGFibGUgZnJvbSBvcHMuZGlzcGF0Y2goKSAqL1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05NjcxPV9fYnBmX2tmdW5jIHMzMiBzY3hfYnBmX2RzcV9ucl9xdWV1ZWQodTY0IGRzcV9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzEzLSAqIERlc3Ryb3kgdGhlIGN1c3RvbSBEU1EgaWRlbnRpZmllZCBieSBAZHNxX2lkLiBPbmx5IERTUXMgY3JlYXRlZCB3aXRoXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5NzE0OiAqIHNjeF9icGZfY3JlYXRlX2RzcSgpIGNhbiBiZSBkZXN0cm95ZWQuIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUgRFNRIGlzXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NzE1LSAqIGVtcHR5IGFuZCBubyBmdXJ0aGVyIHRhc2tzIGFyZSBkaXNwYXRjaGVkIHRvIGl0LiBJZ25vcmVkIGlmIGNhbGxlZCBvbiBhIERTUVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzowNi4zMDEzODY1MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU3MDM0MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUga2Z1bmMgQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGVzZSBrZnVuY3MsIGBzY3hfYnBmX2NyZWF0ZV9kc3FgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAuIFJpZ2h0LCB0aG9zZSBhcmUgZGVmaW5pdGVseSBrZnVuY3MsIG5vIGRvdWJ0IGFib3V0IGl0LiBUaGUgZml4IEknbSBjaGFzaW5nIGlzIGFwcGFyZW50bHkgbHVya2luZyBpbiBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBOb3csIHRoZSByZWxldmFudCBjb25maWdzIGFyZSBgU0NIRURfQ0xBU1NfRVhUYC4gQWgsIGJ1dCB3YWl0IGEgbWludXRlLCBgU0NIRURfQ0xBU1NfRVhUYCBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYC4gVGhhdCdzIGltcG9ydGFudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgY29ycmVjdGx5IGVuYWJsZWQgZm9yIHdoYXQgSSdtIGRvaW5nLiBSaWdodCwgcmlnaHQuLi4gSSBzaG91bGQgY2hlY2sgYGtlcm5lbC9LY29uZmlnLnByZWVtcHRgIHRvIGNvbmZpcm0gdGhlIGZ1bGwgZGVwZW5kZW5jaWVzIGZvciBgU0NIRURfQ0xBU1NfRVhUYCwgZW5zdXJpbmcgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcml0aWNhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNzYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MTEuNTU4NDI1NDgyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDM4NzA5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNDSEVEX0NMQVNTX0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvS2NvbmZpZy5wcmVlbXB0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9LY29uZmlnLnByZWVtcHQ9MTU1PWNvbmZpZyBTQ0hFRF9DT1JFXFxuLS1cXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0LTE3Mi1cXG5rZXJuZWwvS2NvbmZpZy5wcmVlbXB0OjE3Mzpjb25maWcgU0NIRURfQ0xBU1NfRVhUXFxua2VybmVsL0tjb25maWcucHJlZW1wdC0xNzQtXFx0Ym9vbCBcXFwiRXh0ZW5zaWJsZSBTY2hlZHVsaW5nIENsYXNzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzoxMS45NjIzMDEyMTFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5OTkxMjk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBQcmVlbXB0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgYWJvdXQgcHJlZW1wdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc3RhcnQgd2l0aCBga2VybmVsL0tjb25maWcucHJlZW1wdGAsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxNzMuIFRoYXQgYXJlYSB1c3VhbGx5IGhvbGRzIHRoZSBjb3JlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBwcmVlbXB0aW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdtIGd1ZXNzaW5nIHRoYXQncyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBsaWVzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBmdW5kYW1lbnRhbCBjaG9pY2VzIHRoZXJlIHRoYXQgZHJpdmUgdGhlIGJlaGF2aW9yOiB3aGV0aGVyIGl0J3MgZnVsbCBwcmVlbXB0aW9uLCB2b2x1bnRhcnkgcHJlZW1wdGlvbiwgb3IgbWF5YmUgc29tZSBtb3JlIG51YW5jZWQgY29uZmlndXJhdGlvbnMuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0aGUgYXV0aG9ycyBjb25zaWRlcmVkIGNyaXRpY2FsIGluIG1ha2luZyB0aGVpciBkZWNpc2lvbnMuIEl0J3MgcHJvYmFibHkgdGhlIGJhc2lzIHRvIHNlZSB0aGUgaW50ZXItcmVsYXRlZCBpbXBhY3RzIGluIG90aGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCB0b28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNjA1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MTUuNzYyMjE4NzI3WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9LY29uZmlnLnByZWVtcHRcIixcbiAgXCJGaXJzdExpbmVcIjogMTcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTcwOlxcdFxcdCAgd2hpY2ggaXMgdGhlIGxpa2VseSB1c2FnZSBieSBMaW51eCBkaXN0cmlidXRpb25zLCB0aGVyZSBzaG91bGRcXG4gMTcxOlxcdFxcdCAgYmUgbm8gbWVhc3VyYWJsZSBpbXBhY3Qgb24gcGVyZm9ybWFuY2UuXFxuIDE3MjpcXHRcXG4gMTczOlxcdGNvbmZpZyBTQ0hFRF9DTEFTU19FWFRcXG4gMTc0OlxcdFxcdGJvb2wgXFxcIkV4dGVuc2libGUgU2NoZWR1bGluZyBDbGFzc1xcXCJcXG4gMTc1OlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBERUJVR19JTkZPX0JURlxcbiAxNzY6XFx0XFx0c2VsZWN0IFNUQUNLVFJBQ0UgaWYgU1RBQ0tUUkFDRV9TVVBQT1JUXFxuIDE3NzpcXHRcXHRoZWxwXFxuIDE3ODpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgYSBuZXcgc2NoZWR1bGVyIGNsYXNzIHNjaGVkX2V4dCAoU0NYKSwgd2hpY2hcXG4gMTc5OlxcdFxcdCAgYWxsb3dzIHNjaGVkdWxpbmcgcG9saWNpZXMgdG8gYmUgaW1wbGVtZW50ZWQgYXMgQlBGIHByb2dyYW1zIHRvXFxuIDE4MDpcXHRcXHQgIGFjaGlldmUgdGhlIGZvbGxvd2luZzpcXG4gMTgxOlxcdFxcbiAxODI6XFx0XFx0ICAtIEVhc2Ugb2YgZXhwZXJpbWVudGF0aW9uIGFuZCBleHBsb3JhdGlvbjogRW5hYmxpbmcgcmFwaWRcXG4gMTgzOlxcdFxcdCAgICBpdGVyYXRpb24gb2YgbmV3IHNjaGVkdWxpbmcgcG9saWNpZXMuXFxuIDE4NDpcXHRcXHQgIC0gQ3VzdG9taXphdGlvbjogQnVpbGRpbmcgYXBwbGljYXRpb24tc3BlY2lmaWMgc2NoZWR1bGVycyB3aGljaFxcbiAxODU6XFx0XFx0ICAgIGltcGxlbWVudCBwb2xpY2llcyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZSB0byBnZW5lcmFsLXB1cnBvc2VcXG4gMTg2OlxcdFxcdCAgICBzY2hlZHVsZXJzLlxcbiAxODc6XFx0XFx0ICAtIFJhcGlkIHNjaGVkdWxlciBkZXBsb3ltZW50czogTm9uLWRpc3J1cHRpdmUgc3dhcCBvdXRzIG9mXFxuIDE4ODpcXHRcXHQgICAgc2NoZWR1bGluZyBwb2xpY2llcyBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cy5cXG4gMTg5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzoxNS43NjIzMDE3MDdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwMzU3MTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi5cblxuKipNeSBBbmFseXNpcyBvZiBTQ0hFRF9DTEFTU19FWFQgQ29uZmlndXJhdGlvbiBhbmQgQXNzb2NpYXRlZCBGdW5jdGlvbnMqKlxuXG5SaWdodCwgc28gYFNDSEVEX0NMQVNTX0VYVGAgaXMgdGhlIGNvbmZpZ3VyYXRpb24ga2V5IEknbSB3b3JraW5nIHdpdGggaGVyZS4gVGhhdCdzIHRoZSBiYXNlbGluZS4gTm93LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNydWNpYWwgc3ltYm9scyByZWxhdGVkIHRvIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYW5kIGBzY3hfYnBmX2NyZWF0ZV9kc3FgIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJIHNob3VsZCBiZSBmb2N1c2luZyBvbiDigJMgdGhleSBzZWVtIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBleHRlbmRlZCBzY2hlZHVsZXIgY2xhc3MncyBCUEYgaW50ZXJhY3Rpb25zLiBIb2xkIG9uLCB0aG91Z2guIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gU2luY2UgaXQncyBzdGF0aWMsIHRoYXQgbWVhbnMgaXQncyBpbnRlcm5hbCB0byBpdHMgY29tcGlsYXRpb24gdW5pdCBhbmQgbm90IHZpc2libGUgYXMgYSBmb2N1cyBzeW1ib2wgZnJvbSBvdXRzaWRlLiBHb3R0YSBkaXNjb3VudCB0aGF0IG9uZS4gQWxyaWdodCwgbGV0IG1lIGRvdWJsZSBjaGVjayB0aGUgdmlzaWJpbGl0eSBvZiBgZG9fcGlja190YXNrX3NjeGAuLi4gaXQncyB3b3J0aCBhIGxvb2sgdG8gY29uZmlybSBpZiBpdCdzIHN0YXRpYyBvciBub3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTQ1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzoyMC4wNjU4NzU2MjdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTg1NDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX3BpY2tfdGFza19zY3hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTMxNzg9c3RhdGljIHZvaWQgcHV0X3ByZXZfdGFza19zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zMjUzLVxcdFxcdCAqIGxvY2FsbHkgcnVubmFibGUgYW5kIGNhbiBsZWdpdGltYXRlbHkgZ28gaWRsZSB3aXRoIEBwIHN0aWxsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozMjU0OlxcdFxcdCAqIHJ1bm5hYmxlIChzZWUgZG9fcGlja190YXNrX3NjeCgpKS5cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTMyNTUtXFx0XFx0ICovXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM0MTY9c3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNDE3OmRvX3BpY2tfdGFza19zY3goc3RydWN0IHJxICpycSwgc3RydWN0IHJxX2ZsYWdzICpyZiwgYm9vbCBmb3JjZV9zY3gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDE4LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzQ3OT1zdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICpwaWNrX3Rhc2tfc2N4KHN0cnVjdCBycSAqcnEsIHN0cnVjdCBycV9mbGFncyAqcmYpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDgwLXtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM0ODE6XFx0cmV0dXJuIGRvX3BpY2tfdGFza19zY3gocnEsIHJmLCBmYWxzZSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDgyLX1cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzQ4Ni0gKlxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzQ4NzogKiBVc2UgZG9fcGlja190YXNrX3NjeCgpIGRpcmVjdGx5IHdpdGggQGZvcmNlX3NjeCBlbmFibGVkLCBzaW5jZSB0aGVcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0ODgtICogZGxfc2VydmVyIG11c3QgYWx3YXlzIHNlbGVjdCBhIHNjaGVkX2V4dCB0YXNrLlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0zNDkxPWV4dF9zZXJ2ZXJfcGlja190YXNrKHN0cnVjdCBzY2hlZF9kbF9lbnRpdHkgKmRsX3NlLCBzdHJ1Y3QgcnFfZmxhZ3MgKnJmKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNDk1LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzQ5NjpcXHRyZXR1cm4gZG9fcGlja190YXNrX3NjeChkbF9zZS1cXHUwMDNlcnEsIHJmLCB0cnVlKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM0OTctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1NzoyMC4xMjQ4NzEzOTZaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE1MzQ2ODU4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBMaW5lIG9mIElucXVpcnk6IFN0YXRpYyB2cy4gTm9uLVN0YXRpYyBGdW5jdGlvbnMgaW4gU0NYIGFuZCBCUEYgSW50ZWdyYXRpb24qKlxuXG5Pa2F5LCBzbyBgZG9fcGlja190YXNrX3NjeGAgaXMgZGVmaW5pdGVseSBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQuIE5vdywgSSdtIHR1cm5pbmcgbXkgYXR0ZW50aW9uIHRvIHRoZSBgc2N4X2JwZl9gIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBCUEYgc2lkZSBvZiB0aGluZ3MuIEhtbSwgYHNjeF9icGZfZGVzdHJveV9kc3FgIGxvb2tzIHByb21pc2luZy4gSXQncyBhIGBfX2JwZl9rZnVuY2AgYW5kICpub3QqIHN0YXRpYywgc28gdGhhdCBtYWtlcyBpdCBhIHBvdGVudGlhbCBmb2N1cyBzeW1ib2wgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gTWFrZXMgc2Vuc2UgLSBkZXN0cnVjdGlvbiBsaWtlbHkgbmVlZHMgZXh0ZXJuYWwgYWNjZXNzLlxuXG5Ob3csIHdoYXQgYWJvdXQgYHNjeF9icGZfY3JlYXRlX2RzcWA/IFllcCwgc2FtZSBzdG9yeS4gQWxzbyBhIG5vbi1zdGF0aWMga2Z1bmMsIGFub3RoZXIga2V5IGNhbmRpZGF0ZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVycGxheSBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBhbmQgd2hhdCB0aGV5IGV4cG9zZS5cblxuSSdtIGdldHRpbmcgdGhlIGZlZWxpbmcgSSBtaWdodCBiZSBtaXNzaW5nIHNvbWUgcmVsYXRlZCBmdW5jdGlvbnMsIG9yIHBlcmhhcHMgSSBuZWVkIGEgYnJvYWRlciB2aWV3IG9mIHRoaXMgbW9kdWxlLiBUaW1lIHRvIGJyb2FkZW4gdGhlIHNlYXJjaC4gTGV0J3Mgc2VlLi4uSSdsbCBjaGVjayBga2VybmVsL3NjaGVkL2V4dC9leHQuY2Agc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgYW55dGhpbmcgbm9uLXN0YXRpYyBpbiB0aGF0IGFyZWEuIFRoaXMgc2VlbXMgdG8gYmUgd2hlcmUgdGhlIFNDWC1CUEYgaW50ZWdyYXRpb24gbGl2ZXMuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwMDcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MjYuMjc4MzQzNDUzWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTQyMTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJedm9pZCBbYS16QS1aMC05X10rXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3NjaGVkL2V4dC9leHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTYzNj11MzIgc2N4X2dldF90YXNrX3N0YXRlKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjQwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NjQxOnZvaWQgc2N4X3NldF90YXNrX3N0YXRlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTMyIHN0YXRlKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjQyLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzA4LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzA5OnZvaWQgc2N4X3Rhc2tfaXRlcl9zdGFydChzdHJ1Y3Qgc2N4X3Rhc2tfaXRlciAqaXRlciwgc3RydWN0IGNncm91cCAqY2dycClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTcxMC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTczMD1zdGF0aWMgdm9pZCBfX3NjeF90YXNrX2l0ZXJfcnFfdW5sb2NrKHN0cnVjdCBzY3hfdGFza19pdGVyICppdGVyKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy03NDctICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo3NDg6dm9pZCBzY3hfdGFza19pdGVyX3VubG9jayhzdHJ1Y3Qgc2N4X3Rhc2tfaXRlciAqaXRlcilcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTc0OS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTc3Mz1zdGF0aWMgdm9pZCBzY3hfdGFza19pdGVyX3JlbG9jayhzdHJ1Y3Qgc2N4X3Rhc2tfaXRlciAqaXRlcixcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkwLSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NzkxOnZvaWQgc2N4X3Rhc2tfaXRlcl9zdG9wKHN0cnVjdCBzY3hfdGFza19pdGVyICppdGVyKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNzkyLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0Mj1zdGF0aWMgdm9pZCBzY2hlZHVsZV9kZWZlcnJlZF9sb2NrZWQoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA4MS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwODI6dm9pZCBzY2hlZHVsZV9kc3FfcmVlbnEoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKmRzcSxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwODMtXFx0XFx0XFx0dTY0IHJlZW5xX2ZsYWdzLCBzdHJ1Y3QgcnEgKmxvY2tlZF9ycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTMyOD1ib29sIHNjeF9zZXRfdGFza19zbGljZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCBzbGljZSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTM0OS0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEzNTA6dm9pZCBzY3hfdGFza19zbGljZV9lbmRlZChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMzUxLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTYzOT1zdGF0aWMgdm9pZCBzY3hfZGlzcGF0Y2hfZW5xdWV1ZShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBycSAqcnEsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTE3ODEtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxNzgyOnZvaWQgc2N4X3Rhc2tfdW5saW5rX2Zyb21fZHNxKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHNjeF9kaXNwYXRjaF9xICpkc3EpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xNzgzLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTgwMi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjE4MDM6dm9pZCBzY3hfZGlzcGF0Y2hfZGVxdWV1ZShzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xODA0LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MjAxNT1ib29sIHNjeF9ycV9vbmxpbmUoc3RydWN0IHJxICpycSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjAyNi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjIwMjc6dm9pZCBzY3hfZG9fZW5xdWV1ZV90YXNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGVucV9mbGFncyxcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTIwMjgtXFx0XFx0XFx0IGludCBzdGlja3lfY3B1KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0yNDEzPXN0YXRpYyB2b2lkIHdha2V1cF9wcmVlbXB0X3NjeChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCB3YWtlX2ZsYWdzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yNDM2LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MjQzNzp2b2lkIHNjeF9tb3ZlX2xvY2FsX3Rhc2tfdG9fbG9jYWxfZHNxKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjQzOC1cXHRcXHRcXHRcXHQgICAgICB1NjQgZW5xX2ZsYWdzLCBzdHJ1Y3Qgc2N4X2Rpc3BhdGNoX3EgKnNyY19kc3EsXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTI4ODM9c3RhdGljIHZvaWQgZmluaXNoX2Rpc3BhdGNoKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0yOTUwLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6Mjk1MTp2b2lkIHNjeF9mbHVzaF9kaXNwYXRjaF9idWYoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgcnEgKnJxKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMjk1Mi17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM0OTE9ZXh0X3NlcnZlcl9waWNrX3Rhc2soc3RydWN0IHNjaGVkX2RsX2VudGl0eSAqZGxfc2UsIHN0cnVjdCBycV9mbGFncyAqcmYpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM1MDEtICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozNTAyOnZvaWQgZXh0X3NlcnZlcl9pbml0KHN0cnVjdCBycSAqcnEpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNTAzLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MzY1Mj1zdGF0aWMgdm9pZCBoYW5kbGVfaG90cGx1ZyhzdHJ1Y3QgcnEgKnJxLCBib29sIG9ubGluZSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzcwMi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM3MDM6dm9pZCBzY3hfcnFfYWN0aXZhdGUoc3RydWN0IHJxICpycSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM3MDQte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNzA3LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MzcwODp2b2lkIHNjeF9ycV9kZWFjdGl2YXRlKHN0cnVjdCBycSAqcnEpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zNzA5LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9Mzc2OD1zdGF0aWMgdm9pZCBzY3hfd2F0Y2hkb2dfd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzc4Ni1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM3ODc6dm9pZCBzY3hfdGljayhzdHJ1Y3QgcnEgKnJxKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzc4OC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM5MjI9c3RhdGljIHZvaWQgX19zY3hfZW5hYmxlX3Rhc2soc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTM5NTMtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzozOTU0OnZvaWQgc2N4X2VuYWJsZV90YXNrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk1NS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTM5NjA9c3RhdGljIHZvaWQgc2N4X2Rpc2FibGVfdGFzayhzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMzk4OS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjM5OTA6dm9pZCBfX3NjeF9kaXNhYmxlX2FuZF9leGl0X3Rhc2soc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0zOTkxLXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDAyMy0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQwMjQ6dm9pZCBzY3hfc3ViX2luaXRfY2FuY2VsX3Rhc2soc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MDI1LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDAzNS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQwMzY6dm9pZCBzY3hfZGlzYWJsZV9hbmRfZXhpdF90YXNrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDAzNy17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQwNTYtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0MDU3OnZvaWQgaW5pdF9zY3hfZW50aXR5KHN0cnVjdCBzY2hlZF9leHRfZW50aXR5ICpzY3gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MDU4LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDA4Nj1zdGF0aWMgdm9pZCBzY3hfdGlkX2hhc2hfaW5zZXJ0KHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDA5Ny1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQwOTg6dm9pZCBzY3hfcHJlX2Zvcmsoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDA5OS17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQxMDk9aW50IHNjeF9mb3JrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IGtlcm5lbF9jbG9uZV9hcmdzICprYXJncylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDEzNS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQxMzY6dm9pZCBzY3hfcG9zdF9mb3JrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQxMzcte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MTY0LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDE2NTp2b2lkIHNjeF9jYW5jZWxfZm9yayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MTY2LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDE5ND1zdGF0aWMgYm9vbCB0YXNrX2RlYWRfYW5kX2RvbmUoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00MjA4LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDIwOTp2b2lkIHNjaGVkX2V4dF9kZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQyMTAte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NzAxPURFRklORV9TVEFUSUNfUEVSQ1BVX1JXU0VNKHNjeF9jZ3JvdXBfb3BzX3J3c2VtKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ3MDItXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NzAzOnZvaWQgc2N4X3RnX2luaXQoc3RydWN0IHRhc2tfZ3JvdXAgKnRnKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDcwNC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ3NjU9aW50IHNjeF90Z19vbmxpbmUoc3RydWN0IHRhc2tfZ3JvdXAgKnRnKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODA3LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDgwODp2b2lkIHNjeF90Z19vZmZsaW5lKHN0cnVjdCB0YXNrX2dyb3VwICp0ZylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ4MDkte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00ODMyPWludCBzY3hfY2dyb3VwX2Nhbl9hdHRhY2goc3RydWN0IGNncm91cF90YXNrc2V0ICp0c2V0KVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00ODkyLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDg5Mzp2b2lkIHNjeF9jZ3JvdXBfbW92ZV90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ4OTQte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTEzLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDkxNDp2b2lkIHNjeF9jZ3JvdXBfY2FuY2VsX2F0dGFjaChzdHJ1Y3QgY2dyb3VwX3Rhc2tzZXQgKnRzZXQpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTE1LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkzMi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5MzM6dm9pZCBzY3hfZ3JvdXBfc2V0X3dlaWdodChzdHJ1Y3QgdGFza19ncm91cCAqdGcsIHVuc2lnbmVkIGxvbmcgd2VpZ2h0KVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkzNC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5NDgtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0OTQ5OnZvaWQgc2N4X2dyb3VwX3NldF9pZGxlKHN0cnVjdCB0YXNrX2dyb3VwICp0ZywgYm9vbCBpZGxlKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDk1MC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5NjQtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0OTY1OnZvaWQgc2N4X2dyb3VwX3NldF9iYW5kd2lkdGgoc3RydWN0IHRhc2tfZ3JvdXAgKnRnLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDk2Ni1cXHRcXHRcXHQgICAgIHU2NCBwZXJpb2RfdXMsIHU2NCBxdW90YV91cywgdTY0IGJ1cnN0X3VzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00OTg5PXN0YXRpYyBzdHJ1Y3QgY2dyb3VwICpyb290X2Nncm91cCh2b2lkKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTk4LSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NDk5OTp2b2lkIHNjeF9jZ3JvdXBfbG9jayh2b2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTAwMC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUwMDYtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo1MDA3OnZvaWQgc2N4X2Nncm91cF91bmxvY2sodm9pZClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTUwMDgte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz01NjQxPWJvb2wgc2N4X3JjdV9jcHVfc3RhbGwoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnN0YWxsZWRfbWFzaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNTY5Mi0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjU2OTM6dm9pZCBzY3hfc29mdGxvY2t1cCh1MzIgZHVyX3MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy01Njk0LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NTk2MT1zdGF0aWMgdm9pZCBlbmFibGVfYnlwYXNzX2RzcChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYwMDctLyogbWF5IGJlIGNhbGxlZCB3aXRob3V0IGhvbGRpbmcgc2N4X2J5cGFzc19sb2NrICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2MDA4OnZvaWQgc2N4X2Rpc2FibGVfYnlwYXNzX2RzcChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MDA5LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NjA0Mz1zdGF0aWMgdm9pZCB1bmJ5cGFzc19yZW5vdGlmeV9pZGxlKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBzY3hfc2NoZWQgKnBvcyxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjA4Ny0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjYwODg6dm9pZCBzY3hfYnlwYXNzKHN0cnVjdCBzY3hfc2NoZWQgKnNjaCwgYm9vbCBieXBhc3MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MDg5LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NjMwMD1zMzIgc2N4X2xpbmtfc2NoZWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02MzU0LVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6NjM1NTp2b2lkIHNjeF91bmxpbmtfc2NoZWQoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM1Ni17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTYzNzYtICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2Mzc3OnZvaWQgc2N4X2Rpc2FibGVfZHVtcChzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02Mzc4LXtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM4Mi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjYzODM6dm9pZCBzY3hfbG9nX3NjaGVkX2Rpc2FibGUoc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjM4NC17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTY2Njc9c3RhdGljIHZvaWQgc2N4X2Rpc2FibGUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBlbnVtIHNjeF9leGl0X2tpbmQga2luZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjY4MS0gKi9cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjY2ODI6dm9pZCBzY3hfZmx1c2hfZGlzYWJsZV93b3JrKHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTY2ODMte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz04NTU1PXN0YXRpYyB2b2lkIGtpY2tfY3B1c19pcnFfd29ya2ZuKHN0cnVjdCBpcnFfd29yayAqaXJxX3dvcmspXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTg2MTUtICovXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NjE2OnZvaWQgcHJpbnRfc2N4X2luZm8oY29uc3QgY2hhciAqbG9nX2x2bCwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODYxNy17XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTk1Mjk9X19icGZfa2Z1bmMgYm9vbCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHU2NCB2dGltZSxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTU0Mi1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjk1NDM6dm9pZCBzY3hfa2lja19jcHUoc3RydWN0IHNjeF9zY2hlZCAqc2NoLCBzMzIgY3B1LCB1NjQgZmxhZ3MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05NTQ0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6MjYuMzI3Nzc4ODUyWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MTU1MzA5NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBzY2hlZF9leHQgUmFjZSBDb25kaXRpb24gYW5kIFJlbGV2YW50IENvbmZpZ3VyYXRpb25zKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGNlbnRlcmVkIGFyb3VuZCBpZGVudGlmeWluZyBrZXkgc3ltYm9scyBmb3IgdGhpcyBwYXRjaC4gSSBxdWlja2x5IGhvbmVkIGluIG9uIGBzY3hfYnBmX2NyZWF0ZV9kc3FgIGFuZCBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYXMgcG90ZW50aWFsIGZvY3VzIHBvaW50cy4gVGhlbiBJIHJlYWxpemVkIHRoYXQgYHNjeF9icGZfZGVzdHJveV9kc3FgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IGludmFsaWRhdGVzIHRoZSBkc3EsIHdoaWNoIG1hZGUgaXQgYSBwcmltYXJ5IHRhcmdldC4gVGhlIHJhY2UgY29uZGl0aW9uIHNlZW1zIHRvIGJlIGJldHdlZW4gYHNjeF9icGZfZGVzdHJveV9kc3FgIGFuZCBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AsIHRoZSBsYXR0ZXIgYmVpbmcgY2FsbGVkIGJ5IGBydW5fZGVmZXJyZWRgIHdoZW4gYSB0YXNrIGlzIHdva2VuIG9yIGRpc3BhdGNoZWQuIFRoaXMgc29saWRpZmllcyBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYW5kIGBzY3hfYnBmX2NyZWF0ZV9kc3FgIGFzIHRoZSBjZW50cmFsIHN5bWJvbHMgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlLlxuXG5UbyBjb25maXJtIHRoaXMsIEkgY2hlY2tlZCBpZiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgaXMgdGhlICpvbmx5KiB3YXkgdG8gZGVzdHJveSBhIGRzcS4gSXQgY2FsbHMgYGRlc3Ryb3lfZHNxYCwgYW5kIHRoZSBvbmx5IG90aGVyIHBsYWNlIGlzIGBzY3hfc2NoZWRfZnJlZV9yY3Vfd29ya2AsIHdoaWNoIGRlc3Ryb3lzICphbGwqIGRzcXMgd2hlbiB0aGUgc2NoZWR1bGVyIGlzIHVubG9hZGVkLiBTbywgYHNjeF9icGZfZGVzdHJveV9kc3FgIGlzIGRlZmluaXRlbHkgYSByZWxldmFudCBzeW1ib2wsIGFzIGlzIGBzY3hfYnBmX2NyZWF0ZV9kc3FgLlxuXG5JIHF1aWNrbHkgdmVyaWZpZWQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25zIGluIGBrZXJuZWwvc2NoZWQvZXh0L2V4dC5jYCB0byBlbnN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiBgc2N4X2JwZl9kZXN0cm95X2RzcWAgYW5kIGBzY3hfYnBmX2NyZWF0ZV9kc3FgIHdhcyBjb3JyZWN0LCBhbmQgdGhhdCBgc2N4X2JwZl9kc3FfbnJfcXVldWVkYCB3YXMgYWxzbyBhIGtmdW5jLiBUaGlzIGNlbWVudGVkIHRoZSBmb2N1cyBvbiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuXG5OZXh0LCBJIG5lZWRlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IHdhcyBgU0NIRURfQ0xBU1NfRVhUYCwgYnV0IEkgaW1tZWRpYXRlbHkgcmVhbGl6ZWQgaXQgZGVwZW5kcyBvbiBgQlBGX1NZU0NBTExgLCBhbmQgSSBoYWQgdG8gcmVtZW1iZXIgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncy4gIEkgZG91YmxlLWNoZWNrZWQgdG8gc2VlIGlmIHRoZXJlIHdlcmUgYW55IG90aGVyIGNvbmZpZ3MgSSBzaG91bGQgYWRkIHRvIHRoZSBsaXN0IGFuZCBmb3VuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19CUEZfSklUYC4gIFRoZW4sIEkgY29uc3VsdGVkIGBrZXJuZWwvS2NvbmZpZy5wcmVlbXB0YCB0byBzZWUgdGhlIGRlcGVuZGVuY2llcyBvZiBgU0NIRURfQ0xBU1NfRVhUYC4gVGhpcyBsZWQgbWUgdG8gYWxzbyBpbmNsdWRlIGBERUJVR19JTkZPX0JURmAgYW5kIHRoZSBkZXBlbmRlbmNpZXMsIGJ1dCBzaW5jZSB0aGUgcHJvbXB0IGFza2VkIG1lIHRvIG9ubHkgbGlzdCB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBJIHNlbGVjdGVkIGBTQ0hFRF9DTEFTU19FWFRgLCBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGBERUJVR19JTkZPX0JURmAuXG5cbkZpbmFsbHksIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmIHJlaW5mb3JjZWQgdGhlIGNvcmUgb2YgdGhlIGlzc3VlLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBiZXR3ZWVuIGBkZXN0cm95X2RzcWAgYW5kIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzYC4gIGBkZXN0cm95X2RzcWAgc2V0cyBgZHNxLVx1MDAzZWlkYCB0byBgU0NYX0RTUV9JTlZBTElEYC4gIFRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBEU1EgaGFzIGJlZW4gaW52YWxpZGF0ZWQuIFRoaXMgaXMgYSBjbGVhciwgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHNjaGVkdWxlcidzIGJlaGF2aW9yLCBhbmQgdGhlIGZvY3VzIHN5bWJvbHMgYW5kIGNvbmZpZ3VyYXRpb25zIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGUgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1ODMsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Nzo0MC40ODMwOTE5NjlaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODk5NTI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0NIRURfQ0xBU1NfRVhUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3hfYnBmX2Rlc3Ryb3lfZHNxXCIsXG4gICAgXCJzY3hfYnBmX2NyZWF0ZV9kc3FcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBzY2hlZF9leHQgY29yZSBiZXR3ZWVuIGRlc3Ryb3lfZHNxKCkgYW5kIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoKSBieSBjaGVja2luZyBpZiB0aGUgRFNRIGhhcyBiZWVuIGludmFsaWRhdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGVCUEYtYmFzZWQgc2NoZWR1bGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNDSEVEX0NMQVNTX0VYVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N4X2JwZl9kZXN0cm95X2RzcVwiLFxuICAgIFwic2N4X2JwZl9jcmVhdGVfZHNxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgc2NoZWRfZXh0IGNvcmUgYmV0d2VlbiBkZXN0cm95X2RzcSgpIGFuZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKCkgYnkgY2hlY2tpbmcgaWYgdGhlIERTUSBoYXMgYmVlbiBpbnZhbGlkYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBlQlBGLWJhc2VkIHNjaGVkdWxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6NDAuNTYyMDk1Nzk3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDY2ODQ4NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6NDAuNTYyNjA3MDE3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk0NjYzMzQwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1heSBoYXZlIGludmFsaWRhdGVkIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKSBiZWZvcmUgaXQgaXMgcHJvY2Vzc2VkIGluIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBUaGUgZml4IGFkZHMgYSBjaGVjayBmb3IgYGRzcS1cXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEYCB0byBza2lwIHRoZSBpbnZhbGlkYXRlZCBxdWV1ZS4gVGhpcyBhZGRyZXNzZXMgYSBsb2dpY2FsIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9pbnZhbGlkIHN0YXRlIGJ1Zywgd2hpY2ggYXJlIHdpdGhpbiB0aGUgc2NvcGUgb2Ygc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3VjaCBhcyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSksIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRhNDU1ZDdiNzU3NGJkNmUwNTAzNDE2ZTExZmYyMjNjOWEwOTk4ZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAwMjo1NjoxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9leHQvZXh0LmMgYi9rZXJuZWwvc2NoZWQvZXh0L2V4dC5jXG5pbmRleCAyNmRiYmJmZTVhODc4Li43ZDA5NzIwOWU3NzgwIDEwMDY0NFxuLS0tIGEva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuKysrIGIva2VybmVsL3NjaGVkL2V4dC9leHQuY1xuQEAgLTQ2MzcsNiArNDYzNywxMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKHN0cnVjdCBycSAqcnEpXG4gXHRcdC8qIHNlZSBzY2hlZHVsZV9kc3FfcmVlbnEoKSAqL1xuIFx0XHRzbXBfbWIoKTtcbiBcbitcdFx0LyogZGVzdHJveV9kc3EoKSBtYXkgaGF2ZSByYWNlZCBhbmQgaW52YWxpZGF0ZWQgQGRzcSwgbm90aGluZyB0byByZWVucSAqL1xuK1x0XHRpZiAodW5saWtlbHkoZHNxLVx1MDAzZWlkID09IFNDWF9EU1FfSU5WQUxJRCkpXG4rXHRcdFx0Y29udGludWU7XG4rXG4gXHRcdEJVR19PTihkc3EtXHUwMDNlaWQgXHUwMDI2IFNDWF9EU1FfRkxBR19CVUlMVElOKTtcbiBcdFx0cmVlbnFfdXNlcihycSwgZHNxLCByZWVucV9mbGFncyk7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Nzo0MC41NjI2MDc5ODdaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1OTQ5OTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgU2NoZWR1bGVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBga2VybmVsL3NjaGVkL2V4dC9leHQuY2AsIHNwZWNpZmljYWxseSBgcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc2AuIFRoZSBjb3JlIGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgYSBjaGVjazogYGlmICh1bmxpa2VseShkc3EtXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEKSkgY29udGludWU7YC4gQWxyaWdodCwgdGhpcyBpcyBhIHJhY2UgY29uZGl0aW9uIGZpeCDigJMgYGRlc3Ryb3lfZHNxKClgIG1pZ2h0IGludmFsaWRhdGUgYGRzcWAgYmVmb3JlIHdlIGdldCB0byBpdC4gTWFrZXMgc2Vuc2UuIElmIGBkc3EtXHUwMDNlaWRgIGlzIGVxdWFsIHRvIGBTQ1hfRFNRX0lOVkFMSURgLCBpdCBza2lwcyB0aGUgYHJlZW5xX3VzZXJgIGNhbGwuXG5cbkluaXRpYWxseSwgSSB0aG91Z2h0IHRoaXMgbWlnaHQgYmUgYWJvdXQgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUsIGJ1dCBpdCdzIGNsZWFybHkgYSB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1ZywgcmlnaHQ/IFdhaXQsIGhvbGQgb24uIEV2ZW4gcmVhZGluZyBgZHNxLVx1MDAzZWlkYCAqYWZ0ZXIqIGBkZXN0cm95X2RzcSgpYCBjb3VsZCBiZSBhIHJlYWQgb2YgZnJlZWQgbWVtb3J5IOKAkyB0aGF0J3MgYSBjbGFzc2ljIFVBRiB0aGF0IEtBU0FOICpzaG91bGQqIGJlIGNhdGNoaW5nLiBPciwgbWF5YmUgaXQncyBqdXN0IGEgbG9naWNhbCBidWcgd2hlcmUgYGRzcS1cdTAwM2VpZGAgaXMgc2V0IHRvIGBTQ1hfRFNRX0lOVkFMSURgLCBidXQgdGhlIG1lbW9yeSBpcyBzdGlsbCB0ZWNobmljYWxseSB2YWxpZCwgcGVyaGFwcyBSQ1UgcHJvdGVjdGVkIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcy4gSW4gZWl0aGVyIGNhc2UsIGl0J3Mgbm90IGFjdHVhbGx5IGFuICp1bmluaXRpYWxpemVkIG1lbW9yeSogcHJvYmxlbS4gSXQncyBqdXN0IGNoZWNraW5nIGBkc3EtXHUwMDNlaWRgLlxuXG5Tbywgbm8sIHRoZXJlJ3Mgbm8gaW5oZXJlbnQgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzayBoZXJlLiBXZSdyZSBqdXN0IGNoZWNraW5nIHRoZSB2YWx1ZSBvZiB0aGUgYGlkYCBmaWVsZC4gSSdtIGNvbmZpZGVudCBlbm91Z2ggdG8gbWFyayBgTmVlZHNLTVNBTmAgYXMgZmFsc2UgZm9yIHRoaXMgY2hhbmdlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnNgIGFnYWluIHRvIGNvbmZpcm0gdGhhdCBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy4uLiAqY2hlY2tzIGNvZGUqLi4uIFllcCwgbG9va3MgZ29vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAyOjU3OjQ1LjYyMjEwOTUzN1oiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwNzY0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2Vyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvc2NoZWQvZXh0L2V4dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA4Mj12b2lkIHNjaGVkdWxlX2RzcV9yZWVucShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLFxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMTMzLVxcdFxcdC8qXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMTM0OlxcdFxcdCAqIFBhaXJzIHdpdGggc21wX21iKCkgaW4gcHJvY2Vzc19kZWZlcnJlZF9yZWVucV91c2VycygpIGFuZFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTEzNS1cXHRcXHQgKiBndWFyYW50ZWVzIHRoYXQgdGhlcmUgaXMgYSByZWVucV91c2VyKCkgYWZ0ZXJ3YXJkcy5cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDUzNT1zdGF0aWMgdm9pZCByZWVucV91c2VyKHN0cnVjdCBycSAqcnEsIHN0cnVjdCBzY3hfZGlzcGF0Y2hfcSAqZHNxLCB1NjQgcmVlbnFfZmxhZ3MpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2MTAtXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NjExOnN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMoc3RydWN0IHJxICpycSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ2MTIte1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00NjQ5PXN0YXRpYyB2b2lkIHJ1bl9kZWZlcnJlZChzdHJ1Y3QgcnEgKnJxKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00NjU2LVxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2cnEtXFx1MDAzZXNjeC5kZWZlcnJlZF9yZWVucV91c2VycykpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0NjU3OlxcdFxcdHByb2Nlc3NfZGVmZXJyZWRfcmVlbnFfdXNlcnMocnEpO1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDY1OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDI6NTc6NDUuNjcxMTkxMDY1WiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTc3Mjk3OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IHNwZWNpZmljIGlzc3VlLiBJdCBsb29rcyBsaWtlIHRoZSBgZGVzdHJveV9kc3EoKWAgZnVuY3Rpb24gaGFzIGEgc2lkZSBlZmZlY3Q6IGl0IGludmFsaWRhdGVzIHRoZSBgZHNxYCBvYmplY3QuIFRoZSBhZGRlZCBjaGVjaywgYGlmICh1bmxpa2VseShkc3EtXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEKSlgLCBzdWdnZXN0cyB0aGV5J3JlIHRyeWluZyB0byBwcmV2ZW50IGEgVXNlLUFmdGVyLUludmFsaWRhdGUgKFVBSSkgc2NlbmFyaW8sIG5vdCBhIFVzZS1BZnRlci1GcmVlIChVQUYpIGlzc3VlLiBNeSBpbml0aWFsIHJlYWQgaXMgdGhhdCB0aGlzIGlzIGEgbG9naWNhbCBlcnJvciBvciwgbW9yZSBsaWtlbHksIGEgcmFjZSBjb25kaXRpb24sIHJhdGhlciB0aGFuIGEgc3RyYWlnaHRmb3J3YXJkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHByb2JsZW0uXG5cbkdpdmVuIHRoYXQgS0FTQU4gb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyAqc2hvdWxkKiBoYXZlIGZsYWdnZWQgYSBVQUYgaWYgdGhlIG1lbW9yeSB3YXMgYWN0dWFsbHkgZnJlZWQsIGJ1dCB0aGV5IGRpZG4ndCwgaXQgcmVhbGx5IHBvaW50cyB0byB0aGUgb2JqZWN0IGp1c3QgYmVpbmcgbWFya2VkIGFzIGludmFsaWQgYWZ0ZXIgdGhlIGBkZXN0cm95X2RzcSgpYCBjYWxsLiBBbmQgc2luY2UgdGhlIGZpeCBpcyBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgZm9yIHRoZSBpbnZhbGlkIHN0YXRlIGFuZCBkb2Vzbid0IGFwcGVhciB0byByZWFkIG9yIGNvcHkgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOYCB0byBmYWxzZS4gVGhpcyBpcyBhIHRhcmdldGVkIGZpeCB0byBlbnN1cmUgdGhlIHByb2dyYW0gY29ycmVjdGx5IGhhbmRsZXMgdGhlIGludmFsaWRhdGVkIHN0YXRlLCByYXRoZXIgdGhhbiBhIGJyb2FkIGluaXRpYWxpemF0aW9uIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE0LCJPdXRwdXRUb2tlbnMiOjE2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMjo1Nzo1MC4wMjg5MjMxNDVaIiwiU2VxIjo0NSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1heSBoYXZlIGludmFsaWRhdGVkIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKSBiZWZvcmUgaXQgaXMgcHJvY2Vzc2VkIGluIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBUaGUgZml4IGFkZHMgYSBjaGVjayBmb3IgYGRzcS1cXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEYCB0byBza2lwIHRoZSBpbnZhbGlkYXRlZCBxdWV1ZS4gVGhpcyBhZGRyZXNzZXMgYSBsb2dpY2FsIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9pbnZhbGlkIHN0YXRlIGJ1Zywgd2hpY2ggYXJlIHdpdGhpbiB0aGUgc2NvcGUgb2Ygc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3VjaCBhcyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSksIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYGRlc3Ryb3lfZHNxKClgIG1heSBoYXZlIGludmFsaWRhdGVkIGEgZGlzcGF0Y2ggcXVldWUgKGBkc3FgKSBiZWZvcmUgaXQgaXMgcHJvY2Vzc2VkIGluIGBwcm9jZXNzX2RlZmVycmVkX3JlZW5xX3VzZXJzKClgLiBUaGUgZml4IGFkZHMgYSBjaGVjayBmb3IgYGRzcS1cXHUwMDNlaWQgPT0gU0NYX0RTUV9JTlZBTElEYCB0byBza2lwIHRoZSBpbnZhbGlkYXRlZCBxdWV1ZS4gVGhpcyBhZGRyZXNzZXMgYSBsb2dpY2FsIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9pbnZhbGlkIHN0YXRlIGJ1Zywgd2hpY2ggYXJlIHdpdGhpbiB0aGUgc2NvcGUgb2Ygc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3VjaCBhcyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSksIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workfloww9bzx[1] Phase: Succeeded StartedAt: 2026-08-15 02:58:01 +0000 UTC FinishedAt: 2026-08-15 02:58:01 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-15 02:58:01 +0000 UTC FinishedAt: 2026-08-15 02:58:01 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2] Phase: Succeeded StartedAt: 2026-08-15 02:58:01 +0000 UTC FinishedAt: 2026-08-15 06:39:53 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 02:58:01 +0000 UTC FinishedAt: 2026-08-15 06:39:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 02:58:01 +0000 UTC FinishedAt: 2026-08-15 02:58:11 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 02:58:01 +0000 UTC FinishedAt: 2026-08-15 02:58:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-workfloww9bzx/series-workfloww9bzx-convert-artifact-4242115239/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 02:58:11 +0000 UTC FinishedAt: 2026-08-15 03:16:11 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 02:58:11 +0000 UTC FinishedAt: 2026-08-15 03:16:11 +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:*8bfaad6d-fa47-48d3-acfa-23ff769211b9,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-workfloww9bzx/series-workfloww9bzx-convert-artifact-4242115239/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": "8e1c9c04-48e8-48b3-a4f4-5baf657802c8", "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-workfloww9bzx/series-workfloww9bzx-build-action-3419527741/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 02:58:11 +0000 UTC FinishedAt: 2026-08-15 03:16:01 +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:*8bfaad6d-fa47-48d3-acfa-23ff769211b9,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-workfloww9bzx/series-workfloww9bzx-convert-artifact-4242115239/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": "8e1c9c04-48e8-48b3-a4f4-5baf657802c8", "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-workfloww9bzx/series-workfloww9bzx-build-action-3419527741/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:16:11 +0000 UTC FinishedAt: 2026-08-15 03:16:11 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:16:11 +0000 UTC FinishedAt: 2026-08-15 03:16:11 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:16:11 +0000 UTC FinishedAt: 2026-08-15 03:16:22 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:16:11 +0000 UTC FinishedAt: 2026-08-15 03:16:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-workfloww9bzx/series-workfloww9bzx-convert-artifact-3132301654/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:16:22 +0000 UTC FinishedAt: 2026-08-15 03:18:21 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:16:22 +0000 UTC FinishedAt: 2026-08-15 03:18:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8e1c9c04-48e8-48b3-a4f4-5baf657802c8,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-workfloww9bzx/series-workfloww9bzx-build-action-3419527741/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-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:18:21 +0000 UTC FinishedAt: 2026-08-15 03:18:21 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:18:21 +0000 UTC FinishedAt: 2026-08-15 03:18:21 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:18:21 +0000 UTC FinishedAt: 2026-08-15 03:36:16 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:18:21 +0000 UTC FinishedAt: 2026-08-15 03:36:16 +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:*8bfaad6d-fa47-48d3-acfa-23ff769211b9,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-workfloww9bzx/series-workfloww9bzx-convert-artifact-3132301654/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": "556de934-f9aa-42e6-a4fc-e38c181baf2d", "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-workfloww9bzx/series-workfloww9bzx-build-action-3949447002/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:18:21 +0000 UTC FinishedAt: 2026-08-15 03:36: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:*8bfaad6d-fa47-48d3-acfa-23ff769211b9,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-workfloww9bzx/series-workfloww9bzx-convert-artifact-3132301654/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": "556de934-f9aa-42e6-a4fc-e38c181baf2d", "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-workfloww9bzx/series-workfloww9bzx-build-action-3949447002/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:36:16 +0000 UTC FinishedAt: 2026-08-15 03:36:16 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:36:16 +0000 UTC FinishedAt: 2026-08-15 03:36:16 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:36:16 +0000 UTC FinishedAt: 2026-08-15 03:38:13 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:36:16 +0000 UTC FinishedAt: 2026-08-15 03:38:03 +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:*556de934-f9aa-42e6-a4fc-e38c181baf2d,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-workfloww9bzx/series-workfloww9bzx-build-action-3949447002/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-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:38:13 +0000 UTC FinishedAt: 2026-08-15 06:39:53 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:38:13 +0000 UTC FinishedAt: 2026-08-15 06:39:53 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"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:*8e1c9c04-48e8-48b3-a4f4-5baf657802c8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*556de934-f9aa-42e6-a4fc-e38c181baf2d,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-workfloww9bzx/series-workfloww9bzx-build-action-3419527741/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-workfloww9bzx/series-workfloww9bzx-build-action-3949447002/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:38:13 +0000 UTC FinishedAt: 2026-08-15 03:38:23 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:38:13 +0000 UTC FinishedAt: 2026-08-15 03:38:18 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"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-workfloww9bzx/series-workfloww9bzx-convert-artifact-2863329787/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:38:13 +0000 UTC FinishedAt: 2026-08-15 03:38:13 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:38:13 +0000 UTC FinishedAt: 2026-08-15 03:38:13 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:38:13 +0000 UTC FinishedAt: 2026-08-15 03:38:13 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:38:23 +0000 UTC FinishedAt: 2026-08-15 06:39:53 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww9bzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scx_bpf_destroy_dsq","scx_bpf_create_dsq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["SCHED_CLASS_EXT","BPF_SYSCALL","BPF_JIT","DEBUG_INFO_BTF"],"series_id":"b2244fe5-c02f-4b4e-ab89-4f16d218e685","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-08-15 03:38:23 +0000 UTC FinishedAt: 2026-08-15 06:39:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8e1c9c04-48e8-48b3-a4f4-5baf657802c8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*556de934-f9aa-42e6-a4fc-e38c181baf2d,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-workfloww9bzx/series-workfloww9bzx-build-action-3419527741/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-workfloww9bzx/series-workfloww9bzx-build-action-3949447002/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-workfloww9bzx/series-workfloww9bzx-convert-artifact-2863329787/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,}