Name: series-workflowbs782 Phase: Succeeded StartedAt: 2026-09-02 09:44:57 +0000 UTC FinishedAt: 2026-09-02 13:47:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[0] Phase: Succeeded StartedAt: 2026-09-02 09:44:57 +0000 UTC FinishedAt: 2026-09-02 10:07:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 09:44:57 +0000 UTC FinishedAt: 2026-09-02 10:07:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "70f3995830d3f1e79faa14eb0605914f778feca9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_DRR", "NET_SCH_DUALPI2", "NET_SCH_ETS", "NET_SCH_FQ", "NET_SCH_FQ_PIE", "NET_SCH_HHF", "NET_SCH_PIE", "NET_SCH_SFQ" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "70f3995830d3f1e79faa14eb0605914f778feca9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_DRR", "NET_SCH_DUALPI2", "NET_SCH_ETS", "NET_SCH_FQ", "NET_SCH_FQ_PIE", "NET_SCH_HHF", "NET_SCH_PIE", "NET_SCH_SFQ" ], "series_id": "147fc5e1-50e1-448a-98c7-ef525337ee71" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pie_drop_early", "drr_change_class", "dualpi2_change", "dualpi2_init", "ets_qdisc_change", "fq_change", "fq_init", "fq_pie_change", "hhf_change", "hhf_init", "pie_change", "sfq_change" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RSUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RVQUxQSTImIzM0OywKICAgICYjMzQ7TkVUX1NDSF9FVFMmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GUSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0hIRiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1NGUSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDssCiAgICAmIzM0O2Rycl9jaGFuZ2VfY2xhc3MmIzM0OywKICAgICYjMzQ7ZHVhbHBpMl9jaGFuZ2UmIzM0OywKICAgICYjMzQ7ZHVhbHBpMl9pbml0JiMzNDssCiAgICAmIzM0O2V0c19xZGlzY19jaGFuZ2UmIzM0OywKICAgICYjMzQ7ZnFfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2luaXQmIzM0OywKICAgICYjMzQ7ZnFfcGllX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfY2hhbmdlJiMzNDssCiAgICAmIzM0O2hoZl9pbml0JiMzNDssCiAgICAmIzM0O3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7c2ZxX2NoYW5nZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkanVzdHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYXJpdGhtZXRpYyBib3VuZHMgb24gcXVhbnR1bSBhbmQgTVRVIHBhcmFtZXRlcnMgYWNyb3NzIHZhcmlvdXMgbmV0d29yayBzY2hlZHVsZXJzIChEUlIsIER1YWxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgdXNpbmcgY2xhbXBpbmcgZnVuY3Rpb25zIChjbGFtcF90LCBtYXgpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIG1vZGlmeSwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSwgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgc3RydWN0dXJlIHBhZGRpbmcsIG9yIGRhdGEgdHJhbnNmZXJzIHRvIHVzZXJzcGFjZSB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkLCBhbmQgc3RhbmRhcmQgS0FTQU4vc2FuaXRpemVyIGJ1aWxkcyBhcmUgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1YW50dW0gYW5kIE1UVSBoYW5kbGluZyAvIGJvdW5kaW5nIGxvZ2ljIGFjcm9zcyBtdWx0aXBsZSBuZXR3b3JrIHF1ZXVlaW5nIGRpc2NpcGxpbmVzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgaW4gbmV0L3NjaGVkLy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcWRpc2MgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyYXRpb24gdmlhIG5ldGxpbmsgKHJ0bmV0bGluay90YyksIGFuZCBwYWNrZXQgZHJvcC9zY2hlZHVsaW5nIGRlY2lzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFmMzYzMmQ1YTU3NzNhNDUwYzk0ODU5MzQ4NWYwMjMyZTNiYTU2MDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDEwOjA0OjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHJyLmMgYi9uZXQvc2NoZWQvc2NoX2Ryci5jXG5pbmRleCA5MWIxZWY4MjRhZmFmLi44NjIxZDA1N2VkZDlmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kcnIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xuQEAgLTgyLDggJiM0Mzs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O1NwZWNpZmllZCBEUlIgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wmIzM0Oyk7XG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdH1cbiYjNDM7XHRcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9IGVsc2Vcbi1cdFx0cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuJiM0MztcdFx0cXVhbnR1bSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbiBcdGlmIChjbCAhPSBOVUxMKSB7XG4gXHRcdGlmICh0Y2FbVENBX1JBVEVdKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xuaW5kZXggNGY2NzhkNGZmMTBlYy4uNDk0N2RlZjdjNDllZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xuQEAgLTIwOCw5ICYjNDM7MjA4LDExIEBAIHN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXG4gc3RhdGljIHZvaWQgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLCB1MzIgd2MpXG4ge1xuJiM0MztcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiYjNDM7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93YyA9IHdjO1xuIFx0cS1cdTAwM2VjX3Byb3RlY3Rpb25fd2wgPSBNQVhfV0MgLSB3Yztcbi1cdHEtXHUwMDNlY19wcm90ZWN0aW9uX2luaXQgPSAoczMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpICpcbiYjNDM7XHRxLVx1MDAzZWNfcHJvdGVjdGlvbl9pbml0ID0gKHMzMiltdHUgKlxuIFx0XHQoKGludClxLVx1MDAzZWNfcHJvdGVjdGlvbl93YyAtIChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2wpO1xuIFx0ZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24ocSk7XG4gfVxuQEAgLTI4NSw4ICYjNDM7Mjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuIFx0dTY0IGxvY2FsX2xfcHJvYjtcbiBcdGJvb2wgb3ZlcmxvYWQ7XG4gXHR1MzIgcHJvYjtcbiYjNDM7XHR1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXG4tXHRpZiAoc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nIFx1MDAzYyAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpXG4mIzQzO1x0aWYgKHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyBcdTAwM2MgMiAqIG10dSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0cHJvYiA9IFJFQURfT05DRShxLVx1MDAzZXBpMl9wcm9iKTtcbkBAIC03MTIsNyAmIzQzOzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxuIFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXG4gXHQgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuXG4gXHQgKi9cbi1cdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcbiYjNDM7XHR1NjQgbWVtbGltID0gbXVsX3UzMl91MzIobGltaXQsIDIgKiBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgMSwgMSBcdTAwM2NcdTAwM2MgMjApKTtcbiBcbiBcdGlmICh1cHBlcl8zMl9iaXRzKG1lbWxpbSkpXG4gXHRcdHJldHVybiBVMzJfTUFYO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZXRzLmMgYi9uZXQvc2NoZWQvc2NoX2V0cy5jXG5pbmRleCAyNWZjZjQwNzlmZWNlLi42Y2M5MDJhMDM4Mzg3IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9ldHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xuQEAgLTgzLDExICYjNDM7ODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxuIFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XG4tXHRpZiAoISpxdWFudHVtKSB7XG4tXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7RVRTIHF1YW50dW0gY2Fubm90IGJlIHplcm9cJiMzNDspO1xuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdH1cbiYjNDM7XHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjMyLDExICYjNDM7NjI4LDEzIEBAIHN0YXRpYyBpbnQgZXRzX3FkaXNjX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXHQvKiBJZiB0aGVyZSBhcmUgbW9yZSBiYW5kcyB0aGFuIHN0cmljdCAmIzQzOyBxdWFudGEgcHJvdmlkZWQsIHRoZSByZW1haW5pbmdcbi1cdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgTVRVLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nIHZhbHVlcyBoZXJlLlxuJiM0MztcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZ1xuJiM0MztcdCAqIHZhbHVlcyBoZXJlLlxuIFx0ICovXG4gXHRmb3IgKGkgPSBuc3RyaWN0OyBpIFx1MDAzYyBuYmFuZHM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGlmICghcXVhbnRhW2ldKVxuLVx0XHRcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuJiM0MztcdFx0XHRxdWFudGFbaV0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbiYjNDM7XHRcdFx0XHRcdCAgICAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdH1cbiBcbiBcdC8qIEJlZm9yZSBjb21taXQsIG1ha2Ugc3VyZSB3ZSBjYW4gYWxsb2NhdGUgYWxsIG5ldyBxZGlzY3MgKi9cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxLmMgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcbmluZGV4IDYxNDRiNTY4NmYxM2YuLjM1Zjk0MGIyMjA1ZGYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2ZxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZnEuY1xuQEAgLTk4MCw3ICYjNDM7OTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0ge1xuLVx0Lm1heCA9IElOVF9NQVgsXG4mIzQzO1x0Lm1heCA9IDEgXHUwMDNjXHUwMDNjIDIwLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGZxX3BvbGljeVtUQ0FfRlFfTUFYICYjNDM7IDFdID0ge1xuQEAgLTExMDYsMTQgJiM0MzsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xuLVx0XHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XG4mIzQzO1x0XHR1MzIgcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pLFxuJiM0MztcdFx0XHRcdCAgICAgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXG4tXHRcdGlmIChxdWFudHVtIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBxdWFudHVtIFx1MDAzYz0gKDEgXHUwMDNjXHUwMDNjIDIwKSkge1xuLVx0XHRcdFdSSVRFX09OQ0UocS1cdTAwM2VxdWFudHVtLCBxdWFudHVtKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtpbnZhbGlkIHF1YW50dW1cJiMzNDspO1xuLVx0XHRcdGVyciA9IC1FSU5WQUw7XG4tXHRcdH1cbiYjNDM7XHRcdFdSSVRFX09OQ0UocS1cdTAwM2VxdWFudHVtLCBxdWFudHVtKTtcbiBcdH1cbiBcbiBcdGlmICh0YltUQ0FfRlFfSU5JVElBTF9RVUFOVFVNXSlcbkBAIC0xMjMyLDcgJiM0MzsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzY2gtXHUwMDNlbGltaXRcdFx0PSAxMDAwMDtcbiBcdHEtXHUwMDNlZmxvd19wbGltaXRcdFx0PSAxMDA7XG4gXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbi1cdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuJiM0MztcdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IGNsYW1wX3QodTMyLCAyICogbXR1LCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdHEtXHUwMDNlaW5pdGlhbF9xdWFudHVtXHQ9IG1pbl90KHUzMiwgMTAgKiBtdHUsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdHEtXHUwMDNlZmxvd19yZWZpbGxfZGVsYXlcdD0gbXNlY3NfdG9famlmZmllcyg0MCk7XG4gXHRxLVx1MDAzZWZsb3dfbWF4X3JhdGVcdD0gfjBVTDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuaW5kZXggYjI3ZDk1NDE4NzA3YS4uNTk4Mjg0N2RmOGY4NSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZnFfcGllLmNcbkBAIC0zNDEsNyAmIzQzOzM0MSw4IEBAIHN0YXRpYyBpbnQgZnFfcGllX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRcdCAgIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfQkVUQV0pKTtcbiBcbiBcdGlmICh0YltUQ0FfRlFfUElFX1FVQU5UVU1dKVxuLVx0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkpO1xuJiM0MztcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sXG4mIzQzO1x0XHRcdCAgIG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9QSUVfTUVNT1JZX0xJTUlUXSlcbiBcdFx0V1JJVEVfT05DRShxLVx1MDAzZW1lbW9yeV9saW1pdCxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2hoZi5jIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuaW5kZXggOTZhY2FiNmE4ZGEwMy4uZmM3MmY4MjVmYmQ5MiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfaGhmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfaGhmLmNcbkBAIC01NTEsNyAmIzQzOzU1MSw3IEBAIHN0YXRpYyBpbnQgaGhmX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuIFx0aWYgKHRiW1RDQV9ISEZfUVVBTlRVTV0pXG4tXHRcdG5ld19xdWFudHVtID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9RVUFOVFVNXSk7XG4mIzQzO1x0XHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcbiBcdFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XG5AQCAtNjEzLDcgJiM0Mzs2MTMsNyBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRpbnQgaTtcbiBcbiBcdHNjaC1cdTAwM2VsaW1pdCA9IDEwMDA7XG4tXHRxLVx1MDAzZXF1YW50dW0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTtcbiYjNDM7XHRxLVx1MDAzZXF1YW50dW0gPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0Z2V0X3JhbmRvbV9ieXRlcyhcdTAwMjZxLVx1MDAzZXBlcnR1cmJhdGlvbiwgc2l6ZW9mKHEtXHUwMDNlcGVydHVyYmF0aW9uKSk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxLVx1MDAzZW5ld19idWNrZXRzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnEtXHUwMDNlb2xkX2J1Y2tldHMpO1xuQEAgLTYyNCwxMCAmIzQzOzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHEtXHUwMDNlaGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi9cbiBcdHEtXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgPSAyO1xuIFxuLVx0aWYgKChpbnQpcS1cdTAwM2VxdWFudHVtIFx1MDAzYz0gMCB8fFxuLVx0ICAgICh1NjQpcS1cdTAwM2VxdWFudHVtICogcS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCBcdTAwM2UgSU5UX01BWClcbi1cdFx0cS1cdTAwM2VxdWFudHVtID0gMjU2O1xuLVxuIFx0aWYgKG9wdCkge1xuIFx0XHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfcGllLmNcbkBAIC0zNSw3ICYjNDM7MzUsNyBAQCBib29sIHBpZV9kcm9wX2Vhcmx5KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcGllX3BhcmFtcyAqcGFyYW1zLFxuIHtcbiBcdHU2NCBybmQ7XG4gXHR1NjQgbG9jYWxfcHJvYiA9IHZhcnMtXHUwMDNlcHJvYjtcbi1cdHUzMiBtdHUgPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTtcbiYjNDM7XHR1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXG4gXHQvKiBJZiB0aGVyZSBpcyBzdGlsbCBidXJzdCBhbGxvd2FuY2UgbGVmdCBza2lwIHJhbmRvbSBlYXJseSBkcm9wICovXG4gXHRpZiAodmFycy1cdTAwM2VidXJzdF90aW1lIFx1MDAzZSAwKVxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfc2ZxLmMgYi9uZXQvc2NoZWQvc2NoX3NmcS5jXG5pbmRleCAxODdkM2VkNTc4ZjI2Li44YmJjZmM5ZTg1ZDk0IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9zZnEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xuQEAgLTY2MCw2ICYjNDM7NjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbiYjNDM7XHRpZiAoY3RsLVx1MDAzZXF1YW50dW0gXHUwMDNlIDEgXHUwMDNjXHUwMDNjIDIwKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtxdWFudHVtIHRvbyBsYXJnZVwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKGN0bC1cdTAwM2VwZXJ0dXJiX3BlcmlvZCBcdTAwM2MgMCB8fFxuIFx0ICAgIGN0bC1cdTAwM2VwZXJ0dXJiX3BlcmlvZCBcdTAwM2UgSU5UX01BWCAvIEhaKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O2ludmFsaWQgcGVydHVyYiBwZXJpb2RcJiMzNDspO1xuQEAgLTY4OCw3ICYjNDM7NjkzLDcgQEAgc3RhdGljIGludCBzZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXG4gXHQvKiB1cGRhdGUgYW5kIHZhbGlkYXRlIGNvbmZpZ3VyYXRpb24gKi9cbiBcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSlcbi1cdFx0cXVhbnR1bSA9IGN0bC1cdTAwM2VxdWFudHVtO1xuJiM0MztcdFx0cXVhbnR1bSA9IG1heCgyNTZVLCBjdGwtXHUwMDNlcXVhbnR1bSk7XG4gXHRpZiAoY3RsLVx1MDAzZWZsb3dzKVxuIFx0XHRtYXhmbG93cyA9IG1pbl90KHUzMiwgY3RsLVx1MDAzZWZsb3dzLCBTRlFfTUFYX0ZMT1dTKTtcbiBcdGlmIChjdGwtXHUwMDNlZGl2aXNvcikge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZXRzLmpzb25cbmluZGV4IGVlMDllNmQ2ZmRmM2MuLmQyZWFiNjFjMDk5YTggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvblxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZXRzLmpzb25cbkBAIC05ODcsNyAmIzQzOzk4Nyw3IEBAXG4gICAgIH0sXG4gICAgIHtcbiAgICAgICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDs0MWY1XCYjMzQ7LFxuLSAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7RVRTIG9mZmxvYWQgd2hlcmUgdGhlIHN1bSBvZiBxdWFudGEgd3JhcHMgdTMyXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0VUUyBvZmZsb2FkIHdpdGggb3V0LW9mLXJhbmdlIHF1YW50YSBjbGFtcGVkXCYjMzQ7LFxuICAgICAgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiAgICAgICAgICAgICBcJiMzNDtxZGlzY1wmIzM0OyxcbiAgICAgICAgICAgICBcJiMzNDtldHNcJiMzNDtcbkBAIC0xMDAyLDcgJiM0MzsxMDAyLDcgQEBcbiAgICAgICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGV0cyBxdWFudGEgNDI5NDk2NzI5NCAxIDFcJiMzNDssXG4gICAgICAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiAgICAgICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIHFkaXNjIHNob3cgZGV2ICRFVEhcJiMzNDssXG4tICAgICAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O3FkaXNjIGV0cyAuKmJhbmRzIDMgcXVhbnRhIDQyOTQ5NjcyOTQgMSAxXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7cWRpc2MgZXRzIC4qYmFuZHMgMyBxdWFudGEgMTA0ODU3NiAyNTYgMjU2XCYjMzQ7LFxuICAgICAgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiAgICAgICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4gICAgICAgICAgICAgXCYjMzQ7ZWNobyBcXFwmIzM0OzFcXFwmIzM0OyBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9EUlImIzM0OywKICAgICYjMzQ7TkVUX1NDSF9EVUFMUEkyJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRVRTJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRlEmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GUV9QSUUmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9ISEYmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9QSUUmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9TRlEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaWVfZHJvcF9lYXJseSYjMzQ7LAogICAgJiMzNDtkcnJfY2hhbmdlX2NsYXNzJiMzNDssCiAgICAmIzM0O2R1YWxwaTJfY2hhbmdlJiMzNDssCiAgICAmIzM0O2R1YWxwaTJfaW5pdCYjMzQ7LAogICAgJiMzNDtldHNfcWRpc2NfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9pbml0JiMzNDssCiAgICAmIzM0O2ZxX3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfaW5pdCYjMzQ7LAogICAgJiMzNDtwaWVfY2hhbmdlJiMzNDssCiAgICAmIzM0O3NmcV9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1YW50dW0gYW5kIE1UVSBoYW5kbGluZyAvIGJvdW5kaW5nIGxvZ2ljIGFjcm9zcyBtdWx0aXBsZSBuZXR3b3JrIHF1ZXVlaW5nIGRpc2NpcGxpbmVzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgaW4gbmV0L3NjaGVkLy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcWRpc2MgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyYXRpb24gdmlhIG5ldGxpbmsgKHJ0bmV0bGluay90YyksIGFuZCBwYWNrZXQgZHJvcC9zY2hlZHVsaW5nIGRlY2lzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFmMzYzMmQ1YTU3NzNhNDUwYzk0ODU5MzQ4NWYwMjMyZTNiYTU2MDgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDEwOjA0OjM5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kcnIuYyBiL25ldC9zY2hlZC9zY2hfZHJyLmMKaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9kcnIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2Ryci5jCkBAIC04Miw4ICYjNDM7ODIsOSBAQCBzdGF0aWMgaW50IGRycl9jaGFuZ2VfY2xhc3Moc3RydWN0IFFkaXNjICpzY2gsIHUzMiBjbGFzc2lkLCB1MzIgcGFyZW50aWQsCiAJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7U3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvJiMzNDspOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KJiM0MzsJCXF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAl9IGVsc2UKLQkJcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOwomIzQzOwkJcXVhbnR1bSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCiAJaWYgKGNsICE9IE5VTEwpIHsKIAkJaWYgKHRjYVtUQ0FfUkFURV0pIHsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMKaW5kZXggNGY2NzhkNGZmMTBlYy4uNDk0N2RlZjdjNDllZiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMKQEAgLTIwOCw5ICYjNDM7MjA4LDExIEBAIHN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpCiBzdGF0aWMgdm9pZCBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc3RydWN0IFFkaXNjICpzY2gsCiAJCQkJCSAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHUzMiB3YykKIHsKJiM0MzsJdTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSAmbHQ7Jmx0OyAyMCk7CiYjNDM7CiAJcS0mZ3Q7Y19wcm90ZWN0aW9uX3djID0gd2M7CiAJcS0mZ3Q7Y19wcm90ZWN0aW9uX3dsID0gTUFYX1dDIC0gd2M7Ci0JcS0mZ3Q7Y19wcm90ZWN0aW9uX2luaXQgPSAoczMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpICoKJiM0MzsJcS0mZ3Q7Y19wcm90ZWN0aW9uX2luaXQgPSAoczMyKW10dSAqCiAJCSgoaW50KXEtJmd0O2NfcHJvdGVjdGlvbl93YyAtIChpbnQpcS0mZ3Q7Y19wcm90ZWN0aW9uX3dsKTsKIAlkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihxKTsKIH0KQEAgLTI4NSw4ICYjNDM7Mjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLAogCXU2NCBsb2NhbF9sX3Byb2I7CiAJYm9vbCBvdmVybG9hZDsKIAl1MzIgcHJvYjsKJiM0MzsJdTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSAmbHQ7Jmx0OyAyMCk7CiAKLQlpZiAoc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmbHQ7IDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSkKJiM0MzsJaWYgKHNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJmx0OyAyICogbXR1KQogCQlyZXR1cm4gZmFsc2U7CiAKIAlwcm9iID0gUkVBRF9PTkNFKHEtJmd0O3BpMl9wcm9iKTsKQEAgLTcxMiw3ICYjNDM7NzE1LDggQEAgc3RhdGljIHUzMiBnZXRfbWVtb3J5X2xpbWl0KHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgbGltaXQpCiAJLyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsCiAJICogdG8gZnVydGhlciBpbmNsdWRlIHBlciBwYWNrZXQgb3ZlcmhlYWQgaW4gbWVtb3J5X2xpbWl0LgogCSAqLwotCXU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTsKJiM0MzsJdTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLAomIzQzOwkJCQkJCSAgICAgMSwgMSAmbHQ7Jmx0OyAyMCkpOwogCiAJaWYgKHVwcGVyXzMyX2JpdHMobWVtbGltKSkKIAkJcmV0dXJuIFUzMl9NQVg7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuYwppbmRleCAyNWZjZjQwNzlmZWNlLi42Y2M5MDJhMDM4Mzg3IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2V0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZXRzLmMKQEAgLTgzLDExICYjNDM7ODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogCQkJICAgICB1bnNpZ25lZCBpbnQgKnF1YW50dW0sCiAJCQkgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKIHsKLQkqcXVhbnR1bSA9IG5sYV9nZXRfdTMyKGF0dHIpOwotCWlmICghKnF1YW50dW0pIHsKLQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O0VUUyBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvJiMzNDspOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9CiYjNDM7CSpxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKGF0dHIpLCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCXJldHVybiAwOwogfQogCkBAIC02MzIsMTEgJiM0Mzs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCQlyZXR1cm4gZXJyOwogCX0KIAkvKiBJZiB0aGVyZSBhcmUgbW9yZSBiYW5kcyB0aGFuIHN0cmljdCAmIzQzOyBxdWFudGEgcHJvdmlkZWQsIHRoZSByZW1haW5pbmcKLQkgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS4KJiM0MzsJICogb25lcyBhcmUgRVRTIHdpdGggcXVhbnR1bSBvZiBtYXgoTVRVLCAyNTYpLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nCiYjNDM7CSAqIHZhbHVlcyBoZXJlLgogCSAqLwogCWZvciAoaSA9IG5zdHJpY3Q7IGkgJmx0OyBuYmFuZHM7IGkmIzQzOyYjNDM7KSB7CiAJCWlmICghcXVhbnRhW2ldKQotCQkJcXVhbnRhW2ldID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CQkJcXVhbnRhW2ldID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksCiYjNDM7CQkJCQkgICAgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAl9CiAKIAkvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxLmMgYi9uZXQvc2NoZWQvc2NoX2ZxLmMKaW5kZXggNjE0NGI1Njg2ZjEzZi4uMzVmOTQwYjIyMDVkZiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZnEuYwpAQCAtOTgwLDcgJiM0Mzs5ODAsNyBAQCBzdGF0aWMgaW50IGZxX3Jlc2l6ZShzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxvZykKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRsaW5rX3JhbmdlX3ZhbGlkYXRpb24gaXFfcmFuZ2UgPSB7Ci0JLm1heCA9IElOVF9NQVgsCiYjNDM7CS5tYXggPSAxICZsdDsmbHQ7IDIwLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGZxX3BvbGljeVtUQ0FfRlFfTUFYICYjNDM7IDFdID0gewpAQCAtMTEwNiwxNCAmIzQzOzExMDYsMTAgQEAgc3RhdGljIGludCBmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCSAgIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9GTE9XX1BMSU1JVF0pKTsKIAogCWlmICh0YltUQ0FfRlFfUVVBTlRVTV0pIHsKLQkJdTMyIHF1YW50dW0gPSBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pOwomIzQzOwkJdTMyIHF1YW50dW0gPSBjbGFtcF90KHUzMiwgbmxhX2dldF91MzIodGJbVENBX0ZRX1FVQU5UVU1dKSwKJiM0MzsJCQkJICAgICAyNTYsIDEgJmx0OyZsdDsgMjApOwogCi0JCWlmIChxdWFudHVtICZndDsgMCAmYW1wOyZhbXA7IHF1YW50dW0gJmx0Oz0gKDEgJmx0OyZsdDsgMjApKSB7Ci0JCQlXUklURV9PTkNFKHEtJmd0O3F1YW50dW0sIHF1YW50dW0pOwotCQl9IGVsc2UgewotCQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtpbnZhbGlkIHF1YW50dW0mIzM0Oyk7Ci0JCQllcnIgPSAtRUlOVkFMOwotCQl9CiYjNDM7CQlXUklURV9PTkNFKHEtJmd0O3F1YW50dW0sIHF1YW50dW0pOwogCX0KIAogCWlmICh0YltUQ0FfRlFfSU5JVElBTF9RVUFOVFVNXSkKQEAgLTEyMzIsNyAmIzQzOzEyMjgsNyBAQCBzdGF0aWMgaW50IGZxX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAlzY2gtJmd0O2xpbWl0CQk9IDEwMDAwOwogCXEtJmd0O2Zsb3dfcGxpbWl0CQk9IDEwMDsKIAltdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgJmx0OyZsdDsgMjApOwotCXEtJmd0O3F1YW50dW0JCT0gbWluX3QodTMyLCAyICogbXR1LCAxICZsdDsmbHQ7IDIwKTsKJiM0MzsJcS0mZ3Q7cXVhbnR1bQkJPSBjbGFtcF90KHUzMiwgMiAqIG10dSwgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAlxLSZndDtpbml0aWFsX3F1YW50dW0JPSBtaW5fdCh1MzIsIDEwICogbXR1LCAxICZsdDsmbHQ7IDIwKTsKIAlxLSZndDtmbG93X3JlZmlsbF9kZWxheQk9IG1zZWNzX3RvX2ppZmZpZXMoNDApOwogCXEtJmd0O2Zsb3dfbWF4X3JhdGUJPSB+MFVMOwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuYyBiL25ldC9zY2hlZC9zY2hfZnFfcGllLmMKaW5kZXggYjI3ZDk1NDE4NzA3YS4uNTk4Mjg0N2RmOGY4NSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jCkBAIC0zNDEsNyAmIzQzOzM0MSw4IEBAIHN0YXRpYyBpbnQgZnFfcGllX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQkJICAgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9CRVRBXSkpOwogCiAJaWYgKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pCi0JCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkpOwomIzQzOwkJV1JJVEVfT05DRShxLSZndDtxdWFudHVtLAomIzQzOwkJCSAgIG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSkpOwogCiAJaWYgKHRiW1RDQV9GUV9QSUVfTUVNT1JZX0xJTUlUXSkKIAkJV1JJVEVfT05DRShxLSZndDttZW1vcnlfbGltaXQsCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2hoZi5jIGIvbmV0L3NjaGVkL3NjaF9oaGYuYwppbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2hoZi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfaGhmLmMKQEAgLTU1MSw3ICYjNDM7NTUxLDcgQEAgc3RhdGljIGludCBoaGZfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCXJldHVybiBlcnI7CiAKIAlpZiAodGJbVENBX0hIRl9RVUFOVFVNXSkKLQkJbmV3X3F1YW50dW0gPSBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKTsKJiM0MzsJCW5ld19xdWFudHVtID0gbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pKTsKIAogCWlmICh0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKQogCQluZXdfaGhmX25vbl9oaF93ZWlnaHQgPSBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKTsKQEAgLTYxMyw3ICYjNDM7NjEzLDcgQEAgc3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCWludCBpOwogCiAJc2NoLSZndDtsaW1pdCA9IDEwMDA7Ci0JcS0mZ3Q7cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOwomIzQzOwlxLSZndDtxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCWdldF9yYW5kb21fYnl0ZXMoJmFtcDtxLSZndDtwZXJ0dXJiYXRpb24sIHNpemVvZihxLSZndDtwZXJ0dXJiYXRpb24pKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3EtJmd0O25ld19idWNrZXRzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3EtJmd0O29sZF9idWNrZXRzKTsKQEAgLTYyNCwxMCAmIzQzOzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAlxLSZndDtoaGZfZXZpY3RfdGltZW91dCA9IEhaOyAgICAgIC8qIDEgIHNlYyAqLwogCXEtJmd0O2hoZl9ub25faGhfd2VpZ2h0ID0gMjsKIAotCWlmICgoaW50KXEtJmd0O3F1YW50dW0gJmx0Oz0gMCB8fAotCSAgICAodTY0KXEtJmd0O3F1YW50dW0gKiBxLSZndDtoaGZfbm9uX2hoX3dlaWdodCAmZ3Q7IElOVF9NQVgpCi0JCXEtJmd0O3F1YW50dW0gPSAyNTY7Ci0KIAlpZiAob3B0KSB7CiAJCWludCBlcnIgPSBoaGZfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spOwogCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuYwppbmRleCBiNDFmMmRlZjJlMmNjLi4zYjc4NjNmZmQyODRjIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX3BpZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfcGllLmMKQEAgLTM1LDcgJiM0MzszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsCiB7CiAJdTY0IHJuZDsKIAl1NjQgbG9jYWxfcHJvYiA9IHZhcnMtJmd0O3Byb2I7Ci0JdTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOwomIzQzOwl1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKIAogCS8qIElmIHRoZXJlIGlzIHN0aWxsIGJ1cnN0IGFsbG93YW5jZSBsZWZ0IHNraXAgcmFuZG9tIGVhcmx5IGRyb3AgKi8KIAlpZiAodmFycy0mZ3Q7YnVyc3RfdGltZSAmZ3Q7IDApCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuYwppbmRleCAxODdkM2VkNTc4ZjI2Li44YmJjZmM5ZTg1ZDk0IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX3NmcS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfc2ZxLmMKQEAgLTY2MCw2ICYjNDM7NjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKJiM0MzsJaWYgKGN0bC0mZ3Q7cXVhbnR1bSAmZ3Q7IDEgJmx0OyZsdDsgMjApIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7cXVhbnR1bSB0b28gbGFyZ2UmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCWlmIChjdGwtJmd0O3BlcnR1cmJfcGVyaW9kICZsdDsgMCB8fAogCSAgICBjdGwtJmd0O3BlcnR1cmJfcGVyaW9kICZndDsgSU5UX01BWCAvIEhaKSB7CiAJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7aW52YWxpZCBwZXJ0dXJiIHBlcmlvZCYjMzQ7KTsKQEAgLTY4OCw3ICYjNDM7NjkzLDcgQEAgc3RhdGljIGludCBzZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAKIAkvKiB1cGRhdGUgYW5kIHZhbGlkYXRlIGNvbmZpZ3VyYXRpb24gKi8KIAlpZiAoY3RsLSZndDtxdWFudHVtKQotCQlxdWFudHVtID0gY3RsLSZndDtxdWFudHVtOwomIzQzOwkJcXVhbnR1bSA9IG1heCgyNTZVLCBjdGwtJmd0O3F1YW50dW0pOwogCWlmIChjdGwtJmd0O2Zsb3dzKQogCQltYXhmbG93cyA9IG1pbl90KHUzMiwgY3RsLSZndDtmbG93cywgU0ZRX01BWF9GTE9XUyk7CiAJaWYgKGN0bC0mZ3Q7ZGl2aXNvcikgewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZXRzLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbgppbmRleCBlZTA5ZTZkNmZkZjNjLi5kMmVhYjYxYzA5OWE4IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbgomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbgpAQCAtOTg3LDcgJiM0Mzs5ODcsNyBAQAogICAgIH0sCiAgICAgewogICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7NDFmNSYjMzQ7LAotICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtFVFMgb2ZmbG9hZCB3aGVyZSB0aGUgc3VtIG9mIHF1YW50YSB3cmFwcyB1MzImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0VUUyBvZmZsb2FkIHdpdGggb3V0LW9mLXJhbmdlIHF1YW50YSBjbGFtcGVkJiMzNDssCiAgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwogICAgICAgICAgICAgJiMzNDtxZGlzYyYjMzQ7LAogICAgICAgICAgICAgJiMzNDtldHMmIzM0OwpAQCAtMTAwMiw3ICYjNDM7MTAwMiw3IEBACiAgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGV0cyBxdWFudGEgNDI5NDk2NzI5NCAxIDEmIzM0OywKICAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKICAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSCYjMzQ7LAotICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O3FkaXNjIGV0cyAuKmJhbmRzIDMgcXVhbnRhIDQyOTQ5NjcyOTQgMSAxJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O3FkaXNjIGV0cyAuKmJhbmRzIDMgcXVhbnRhIDEwNDg1NzYgMjU2IDI1NiYjMzQ7LAogICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiAgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwogICAgICAgICAgICAgJiMzNDtlY2hvIFwmIzM0OzFcJiMzNDsgJmd0OyAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZSYjMzQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NTMKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyAtIEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYSBidW5jaCBvZiBwYWNrZXQgc2NoZWR1bGVyIHFkaXNjcyBpbiBgbmV0L3NjaGVkL2AuIExldCBtZSBsaXN0IHRoZW06IGBzY2hfZHJyLmNgLCBgc2NoX2R1YWxwaTIuY2AsIGBzY2hfZXRzLmNgLCBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYCwgYHNjaF9oaGYuY2AsIGBzY2hfcGllLmNgLCBhbmQgYHNjaF9zZnEuY2AuIFBsdXMsIHRoZXJlIGFyZSBzb21lIHNlbGZ0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLi4uYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgZXZlbiB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWJvdXQgaW5wdXQgdmFsaWRhdGlvbiBvciBjbGFtcGluZyBwYXJhbWV0ZXJzIHJlbGF0ZWQgdG8gcXVhbnR1bSBhbmQgTVRVIGluIHRoZSBtZW50aW9uZWQgcWRpc2NzLiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgb3IganVzdCBzb21lIGNvbnN0YW50L3ZhbGlkYXRpb24gdHdlYWtzPwoKTGV0JiMzOTtzIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIHJ1bGVzLiBJdCBzYXlzICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgaXQmIzM5O3MganVzdCBkb2NzLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBvciB0d2Vha3MgdG8gbnVtZXJpYyBjb25zdGFudHMvbWFjcm9zIHRoYXQgKmRvbiYjMzk7dCogYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIEl0IGFsc28gc2F5cyB0byBleGNsdWRlIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6YXRpb24sIG9yIHN0dWZmIHNwZWNpZmljIHRvIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkLiBJdCBhbHNvIGV4Y2x1ZGVzIGRyaXZlciByZW1vdmUgY2FsbGJhY2tzIGFuZCB0aGUgbGlrZS4KCldhaXQsIHRoaXMgKmRvZXMqIG1vZGlmeSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljISBJdCYjMzk7cyB0b3VjaGluZyB0aGUgcWRpc2MgY29uZmlndXJhdGlvbiBhbmQgcGFja2V0IGhhbmRsaW5nL3NjaGVkdWxpbmcgcGFydHMgb2YgdGhlIGNvZGUuIFdlIGFyZSBsb29raW5nIGF0IGZ1bmN0aW9ucyBsaWtlIGBkcnJfY2hhbmdlX2NsYXNzYCwgYGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbmAsIGBtdXN0X2Ryb3BgLCBgZ2V0X21lbW9yeV9saW1pdGAsIGBldHNfcXVhbnR1bV9wYXJzZWAsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBwaWVfZHJvcF9lYXJseWAsIGBzZnFfY2hhbmdlYC4gVGhhdCYjMzk7cyBub3QganVzdCBhIGNvbnN0YW50IGNoYW5nZTsgaXQmIzM5O3MgbGlrZWx5IGFsdGVyaW5nIGhvdyB0aGVzZSBxZGlzY3MgYmVoYXZlLgoKQW5kIHRoZXNlIGFyZSAqYWJzb2x1dGVseSogcmVhY2hhYmxlIGluIFFFTVUgYW5kIEdDRSBlbnZpcm9ubWVudHMuIFlvdSBjYW4gZWFzaWx5IGludGVyYWN0IHdpdGggdGhlbSB0aHJvdWdoIG5ldGxpbmssIGBydG5ldGxpbmtgLCBhbmQgYHRjYCBjb21tYW5kcy4KClNvLCB5ZWFoLCB0aGlzIGxvb2tzIHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciB0aGVzZSBzY2hlZHVsZXJzIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NDY9Y29tbWVudCBcJiMzNDtRdWV1ZWluZy9TY2hlZHVsaW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZy00Ny1cbm5ldC9zY2hlZC9LY29uZmlnOjQ4OmNvbmZpZyBORVRfU0NIX0hUQlxubmV0L3NjaGVkL0tjb25maWctNDktXHR0cmlzdGF0ZSBcJiMzNDtIaWVyYXJjaGljYWwgVG9rZW4gQnVja2V0IChIVEIpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNjEtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Mjpjb25maWcgTkVUX1NDSF9IRlNDXG5uZXQvc2NoZWQvS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O0hpZXJhcmNoaWNhbCBGYWlyIFNlcnZpY2UgQ3VydmUgKEhGU0MpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNzAtXG5uZXQvc2NoZWQvS2NvbmZpZzo3MTpjb25maWcgTkVUX1NDSF9QUklPXG5uZXQvc2NoZWQvS2NvbmZpZy03Mi1cdHRyaXN0YXRlIFwmIzM0O011bHRpIEJhbmQgUHJpb3JpdHkgUXVldWVpbmcgKFBSSU8pXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNzktXG5uZXQvc2NoZWQvS2NvbmZpZzo4MDpjb25maWcgTkVUX1NDSF9NVUxUSVFcbm5ldC9zY2hlZC9LY29uZmlnLTgxLVx0dHJpc3RhdGUgXCYjMzQ7SGFyZHdhcmUgTXVsdGlxdWV1ZS1hd2FyZSBNdWx0aSBCYW5kIFF1ZXVpbmcgKE1VTFRJUSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy04OC1cbm5ldC9zY2hlZC9LY29uZmlnOjg5OmNvbmZpZyBORVRfU0NIX1JFRFxubmV0L3NjaGVkL0tjb25maWctOTAtXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChSRUQpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctOTktXG5uZXQvc2NoZWQvS2NvbmZpZzoxMDA6Y29uZmlnIE5FVF9TQ0hfU0ZCXG5uZXQvc2NoZWQvS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtTdG9jaGFzdGljIEZhaXIgQmx1ZSAoU0ZCKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTExMC1cbm5ldC9zY2hlZC9LY29uZmlnOjExMTpjb25maWcgTkVUX1NDSF9TRlFcbm5ldC9zY2hlZC9LY29uZmlnLTExMi1cdHRyaXN0YXRlIFwmIzM0O1N0b2NoYXN0aWMgRmFpcm5lc3MgUXVldWVpbmcgKFNGUSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xMjEtXG5uZXQvc2NoZWQvS2NvbmZpZzoxMjI6Y29uZmlnIE5FVF9TQ0hfVEVRTFxubmV0L3NjaGVkL0tjb25maWctMTIzLVx0dHJpc3RhdGUgXCYjMzQ7VHJ1ZSBMaW5rIEVxdWFsaXplciAoVEVRTClcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xMzMtXG5uZXQvc2NoZWQvS2NvbmZpZzoxMzQ6Y29uZmlnIE5FVF9TQ0hfVEJGXG5uZXQvc2NoZWQvS2NvbmZpZy0xMzUtXHR0cmlzdGF0ZSBcJiMzNDtUb2tlbiBCdWNrZXQgRmlsdGVyIChUQkYpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMTQ0LVxubmV0L3NjaGVkL0tjb25maWc6MTQ1OmNvbmZpZyBORVRfU0NIX0NCU1xubmV0L3NjaGVkL0tjb25maWctMTQ2LVx0dHJpc3RhdGUgXCYjMzQ7Q3JlZGl0IEJhc2VkIFNoYXBlciAoQ0JTKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE1NS1cbm5ldC9zY2hlZC9LY29uZmlnOjE1Njpjb25maWcgTkVUX1NDSF9FVEZcbm5ldC9zY2hlZC9LY29uZmlnLTE1Ny1cdHRyaXN0YXRlIFwmIzM0O0VhcmxpZXN0IFR4VGltZSBGaXJzdCAoRVRGKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE2Ni1cbm5ldC9zY2hlZC9LY29uZmlnOjE2Nzpjb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG5uZXQvc2NoZWQvS2NvbmZpZy0xNjgtXHR0cmlzdGF0ZVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cbm5ldC9zY2hlZC9LY29uZmlnOjE3Mjpjb25maWcgTkVUX1NDSF9UQVBSSU9cbm5ldC9zY2hlZC9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMTgzLVxubmV0L3NjaGVkL0tjb25maWc6MTg0OmNvbmZpZyBORVRfU0NIX0dSRURcbm5ldC9zY2hlZC9LY29uZmlnLTE4NS1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xOTQtXG5uZXQvc2NoZWQvS2NvbmZpZzoxOTU6Y29uZmlnIE5FVF9TQ0hfTkVURU1cbm5ldC9zY2hlZC9LY29uZmlnLTE5Ni1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgZW11bGF0b3IgKE5FVEVNKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTIwNi1cbm5ldC9zY2hlZC9LY29uZmlnOjIwNzpjb25maWcgTkVUX1NDSF9EUlJcbm5ldC9zY2hlZC9LY29uZmlnLTIwOC1cdHRyaXN0YXRlIFwmIzM0O0RlZmljaXQgUm91bmQgUm9iaW4gc2NoZWR1bGVyIChEUlIpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjE3LVxubmV0L3NjaGVkL0tjb25maWc6MjE4OmNvbmZpZyBORVRfU0NIX01RUFJJT1xubmV0L3NjaGVkL0tjb25maWctMjE5LVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGktcXVldWUgcHJpb3JpdHkgc2NoZWR1bGVyIChNUVBSSU8pXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjMwLVxubmV0L3NjaGVkL0tjb25maWc6MjMxOmNvbmZpZyBORVRfU0NIX1NLQlBSSU9cbm5ldC9zY2hlZC9LY29uZmlnLTIzMi1cdHRyaXN0YXRlIFwmIzM0O1NLQiBwcmlvcml0eSBxdWV1ZSBzY2hlZHVsZXIgKFNLQlBSSU8pXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjQzLVxubmV0L3NjaGVkL0tjb25maWc6MjQ0OmNvbmZpZyBORVRfU0NIX0NIT0tFXG5uZXQvc2NoZWQvS2NvbmZpZy0yNDUtXHR0cmlzdGF0ZSBcJiMzNDtDSE9vc2UgYW5kIEtlZXAgcmVzcG9uc2l2ZSBmbG93IHNjaGVkdWxlciAoQ0hPS0UpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjU0LVxubmV0L3NjaGVkL0tjb25maWc6MjU1OmNvbmZpZyBORVRfU0NIX1FGUVxubmV0L3NjaGVkL0tjb25maWctMjU2LVx0dHJpc3RhdGUgXCYjMzQ7UXVpY2sgRmFpciBRdWV1ZWluZyBzY2hlZHVsZXIgKFFGUSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yNjUtXG5uZXQvc2NoZWQvS2NvbmZpZzoyNjY6Y29uZmlnIE5FVF9TQ0hfQ09ERUxcbm5ldC9zY2hlZC9LY29uZmlnLTI2Ny1cdHRyaXN0YXRlIFwmIzM0O0NvbnRyb2xsZWQgRGVsYXkgQVFNIChDT0RFTClcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yNzYtXG5uZXQvc2NoZWQvS2NvbmZpZzoyNzc6Y29uZmlnIE5FVF9TQ0hfRlFfQ09ERUxcbm5ldC9zY2hlZC9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O0ZhaXIgUXVldWUgQ29udHJvbGxlZCBEZWxheSBBUU0gKEZRX0NPREVMKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTI4Ny1cbm5ldC9zY2hlZC9LY29uZmlnOjI4ODpjb25maWcgTkVUX1NDSF9DQUtFXG5uZXQvc2NoZWQvS2NvbmZpZy0yODktXHR0cmlzdGF0ZSBcJiMzNDtDb21tb24gQXBwbGljYXRpb25zIEtlcHQgRW5oYW5jZWQgKENBS0UpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjk4LVxubmV0L3NjaGVkL0tjb25maWc6Mjk5OmNvbmZpZyBORVRfU0NIX0ZRXG5uZXQvc2NoZWQvS2NvbmZpZy0zMDAtXHR0cmlzdGF0ZSBcJiMzNDtGYWlyIFF1ZXVlXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzEyLVxubmV0L3NjaGVkL0tjb25maWc6MzEzOmNvbmZpZyBORVRfU0NIX0hIRlxubmV0L3NjaGVkL0tjb25maWctMzE0LVx0dHJpc3RhdGUgXCYjMzQ7SGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTMyMS1cbm5ldC9zY2hlZC9LY29uZmlnOjMyMjpjb25maWcgTkVUX1NDSF9QSUVcbm5ldC9zY2hlZC9LY29uZmlnLTMyMy1cdHRyaXN0YXRlIFwmIzM0O1Byb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChQSUUpIHNjaGVkdWxlclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTMzMy1cbm5ldC9zY2hlZC9LY29uZmlnOjMzNDpjb25maWcgTkVUX1NDSF9GUV9QSUVcbm5ldC9zY2hlZC9LY29uZmlnLTMzNS1cdGRlcGVuZHMgb24gTkVUX1NDSF9QSUVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDYtXG5uZXQvc2NoZWQvS2NvbmZpZzozNDc6Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xubmV0L3NjaGVkL0tjb25maWctMzQ4LVx0dHJpc3RhdGUgXCYjMzQ7SW5ncmVzcy9jbGFzc2lmaWVyLWFjdGlvbiBRZGlzY1wmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTM2Mi1cbm5ldC9zY2hlZC9LY29uZmlnOjM2Mzpjb25maWcgTkVUX1NDSF9QTFVHXG5uZXQvc2NoZWQvS2NvbmZpZy0zNjQtXHR0cmlzdGF0ZSBcJiMzNDtQbHVnIG5ldHdvcmsgdHJhZmZpYyB1bnRpbCByZWxlYXNlIChQTFVHKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTM4OC1cbm5ldC9zY2hlZC9LY29uZmlnOjM4OTpjb25maWcgTkVUX1NDSF9FVFNcbm5ldC9zY2hlZC9LY29uZmlnLTM5MC1cdHRyaXN0YXRlIFwmIzM0O0VuaGFuY2VkIHRyYW5zbWlzc2lvbiBzZWxlY3Rpb24gc2NoZWR1bGVyIChFVFMpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNDA1LVxubmV0L3NjaGVkL0tjb25maWc6NDA2OmNvbmZpZyBORVRfU0NIX0JQRlxubmV0L3NjaGVkL0tjb25maWctNDA3LVx0Ym9vbCBcJiMzNDtCUEYtYmFzZWQgUWRpc2NcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00MTctXG5uZXQvc2NoZWQvS2NvbmZpZzo0MTg6Y29uZmlnIE5FVF9TQ0hfRFVBTFBJMlxubmV0L3NjaGVkL0tjb25maWctNDE5LVx0dHJpc3RhdGUgXCYjMzQ7RHVhbCBRdWV1ZSBQSSBTcXVhcmUgKERVQUxQSTIpIHNjaGVkdWxlclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQyOS1cbm5ldC9zY2hlZC9LY29uZmlnOjQzMDptZW51Y29uZmlnIE5FVF9TQ0hfREVGQVVMVFxubmV0L3NjaGVkL0tjb25maWctNDMxLVx0Ym9vbCBcJiMzNDtBbGxvdyBvdmVycmlkZSBkZWZhdWx0IHF1ZXVlIGRpc2NpcGxpbmVcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05NjY9ZW5kaWYgIyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTk2Ny1cbm5ldC9zY2hlZC9LY29uZmlnOjk2ODpjb25maWcgTkVUX1NDSF9GSUZPXG5uZXQvc2NoZWQvS2NvbmZpZy05NjktXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTExMwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBuZXR3b3JrIHNjaGVkdWxpbmcgYW5kIHNvbWUgYnVpbGQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmaWxlcyBhcmUgYWN0dWFsbHkgYmVpbmcgY29tcGlsZWQgYW5kIGxpbmtlZC4gR2l2ZW4gdGhhdCB3ZSYjMzk7cmUgdGFsa2luZyBgbmV0L3NjaGVkYCwgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBNYWtlZmlsZWAgd2l0aGluIHRoYXQgZGlyZWN0b3J5LiBJJiMzOTttIGdvaW5nIHRvIGNyYWNrIG9wZW4gYG5ldC9zY2hlZC9NYWtlZmlsZWAgYW5kIHNlZSBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgb3JjaGVzdHJhdGVkLiBJdCYjMzk7cyB0aGUgTWFrZWZpbGUgdGhhdCBob2xkcyB0aGUga2V5IHRvIHRoZSBkZXBlbmRlbmNpZXMsIGNvbXBpbGVyIGZsYWdzLCBhbmQgdGhlIG92ZXJhbGwgcmVjaXBlIGZvciBhc3NlbWJsaW5nIHRoZSByZWxldmFudCBtb2R1bGVzLiBUaGlzIHNob3VsZCB0ZWxsIG1lIGV4YWN0bHkgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBpbmZsdWVuY2luZyB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgd2hhdCBzcGVjaWZpY2FsbHkgaXMgYmVpbmcgaW5jbHVkZWQgb3IgZXhjbHVkZWQgYmFzZWQgb24gdGhlIGNvbmZpZ3MgaW4gcGxheS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjaF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlLTUtXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjpvYmoteVx0Oj0gc2NoX2dlbmVyaWMubyBzY2hfbXEub1xubmV0L3NjaGVkL01ha2VmaWxlLTctXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfSU5FVClcdFx0JiM0Mzs9IHNjaF9mcmFnLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfU0NIRUQpXHRcdCYjNDM7PSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX05FVF9DTFMpXHRcdCYjNDM7PSBjbHNfYXBpLm9cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9MzM9b2JqLSQoQ09ORklHX05FVF9BQ1RfR0FURSlcdCYjNDM7PSBhY3RfZ2F0ZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcdCYjNDM7PSBzY2hfZmlmby5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX05FVF9TQ0hfSFRCKVx0JiM0Mzs9IHNjaF9odGIub1xubmV0L3NjaGVkL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19ORVRfU0NIX0hGU0MpXHQmIzQzOz0gc2NoX2hmc2Mub1xubmV0L3NjaGVkL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19ORVRfU0NIX1JFRClcdCYjNDM7PSBzY2hfcmVkLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTozODpvYmotJChDT05GSUdfTkVUX1NDSF9HUkVEKVx0JiM0Mzs9IHNjaF9ncmVkLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfTkVUX1NDSF9JTkdSRVNTKVx0JiM0Mzs9IHNjaF9pbmdyZXNzLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfTkVUX1NDSF9TRkIpXHQmIzQzOz0gc2NoX3NmYi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDE6b2JqLSQoQ09ORklHX05FVF9TQ0hfU0ZRKVx0JiM0Mzs9IHNjaF9zZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19ORVRfU0NIX1RCRilcdCYjNDM7PSBzY2hfdGJmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfTkVUX1NDSF9URVFMKVx0JiM0Mzs9IHNjaF90ZXFsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfTkVUX1NDSF9QUklPKVx0JiM0Mzs9IHNjaF9wcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfTkVUX1NDSF9NVUxUSVEpXHQmIzQzOz0gc2NoX211bHRpcS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX05FVF9TQ0hfTkVURU0pXHQmIzQzOz0gc2NoX25ldGVtLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXHQmIzQzOz0gc2NoX2Ryci5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDg6b2JqLSQoQ09ORklHX05FVF9TQ0hfUExVRylcdCYjNDM7PSBzY2hfcGx1Zy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRTKVx0JiM0Mzs9IHNjaF9ldHMub1xubmV0L3NjaGVkL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19ORVRfU0NIX01RUFJJTylcdCYjNDM7PSBzY2hfbXFwcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfTkVUX1NDSF9NUVBSSU9fTElCKSAmIzQzOz0gc2NoX21xcHJpb19saWIub1xubmV0L3NjaGVkL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19ORVRfU0NIX1NLQlBSSU8pXHQmIzQzOz0gc2NoX3NrYnByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19ORVRfU0NIX0NIT0tFKVx0JiM0Mzs9IHNjaF9jaG9rZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfUUZRKVx0JiM0Mzs9IHNjaF9xZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19ORVRfU0NIX0NPREVMKVx0JiM0Mzs9IHNjaF9jb2RlbC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfQ09ERUwpXHQmIzQzOz0gc2NoX2ZxX2NvZGVsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1NzpvYmotJChDT05GSUdfTkVUX1NDSF9DQUtFKVx0JiM0Mzs9IHNjaF9jYWtlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfTkVUX1NDSF9GUSlcdCYjNDM7PSBzY2hfZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19ORVRfU0NIX0hIRilcdCYjNDM7PSBzY2hfaGhmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfTkVUX1NDSF9QSUUpXHQmIzQzOz0gc2NoX3BpZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfUElFKVx0JiM0Mzs9IHNjaF9mcV9waWUub1xubmV0L3NjaGVkL01ha2VmaWxlOjYyOm9iai0kKENPTkZJR19ORVRfU0NIX0NCUylcdCYjNDM7PSBzY2hfY2JzLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXHQmIzQzOz0gc2NoX2V0Zi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEFQUklPKVx0JiM0Mzs9IHNjaF90YXByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlLTY1LW9iai0kKENPTkZJR19ORVRfU0NIX0JQRilcdCYjNDM7PSBicGZfcWRpc2Mub1xubmV0L3NjaGVkL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19ORVRfU0NIX0RVQUxQSTIpXHQmIzQzOz0gc2NoX2R1YWxwaTIub1xubmV0L3NjaGVkL01ha2VmaWxlLTY3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTA1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uIEZpbGVzKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgY2hhbmdlLCBzbyBJJiMzOTtsbCBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IHRoZSBhZmZlY3RlZCBmaWxlcy4gSSBzZWUgYSBsaXN0IG9mIHNjaGVkdWxlciBpbXBsZW1lbnRhdGlvbnMgdGhhdCBoYXZlIGJlZW4gZmxhZ2dlZDogYG5ldC9zY2hlZC9zY2hfZHJyLmNgLCBgbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNgLCBgbmV0L3NjaGVkL3NjaF9ldHMuY2AsIGBuZXQvc2NoZWQvc2NoX2ZxLmNgLCBgbmV0L3NjaGVkL3NjaF9mcV9waWUuY2AsIGBuZXQvc2NoZWQvc2NoX2hoZi5jYCwgYG5ldC9zY2hlZC9zY2hfcGllLmNgLCBhbmQgYG5ldC9zY2hlZC9zY2hfc2ZxLmNgLiBFYWNoIG9uZSBvZiB0aGVzZSBpcyBhc3NvY2lhdGVkIHdpdGggYSBjb3JyZXNwb25kaW5nIEtjb25maWcgc3ltYm9sOyB0aGUgYENPTkZJR19ORVRfU0NIX0RSUmAgZXRjLiBjb25maWd1cmF0aW9ucy4KCk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IGFuZCBhbnkgZGVwZW5kZW5jaWVzIHRoZXNlIHNjaGVkdWxlcnMgbWlnaHQgaGF2ZSwgSSBuZWVkIHRvIG9wZW4gdXAgYG5ldC9zY2hlZC9LY29uZmlnYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsYXRpb25zaGlwcyBvdXRsaW5lZCB0aGVyZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIG9uLCBzYXksIGBORVRfU0NIRURgIG9yIG90aGVyIHJlbGF0ZWQgdmFyaWFibGVzIHRoYXQgbWF5IGJlIGFmZmVjdGVkLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNvbXByZWhlbnNpdmUgcGljdHVyZSBvZiB3aGF0IGVsc2UgbWF5IGJlIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBUcmFmZmljIGNvbnRyb2wgY29uZmlndXJhdGlvbi5cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBORVRfU0NIRURcbiAgIDc6XHRcdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgTkVUX1NDSF9GSUZPXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFdoZW4gdGhlIGtlcm5lbCBoYXMgc2V2ZXJhbCBwYWNrZXRzIHRvIHNlbmQgb3V0IG92ZXIgYSBuZXR3b3JrXG4gIDExOlx0XHQgIGRldmljZSwgaXQgaGFzIHRvIGRlY2lkZSB3aGljaCBvbmVzIHRvIHNlbmQgZmlyc3QsIHdoaWNoIG9uZXMgdG9cbiAgMTI6XHRcdCAgZGVsYXksIGFuZCB3aGljaCBvbmVzIHRvIGRyb3AuIFRoaXMgaXMgdGhlIGpvYiBvZiB0aGUgcXVldWVpbmdcbiAgMTM6XHRcdCAgZGlzY2lwbGluZXMsIHNldmVyYWwgZGlmZmVyZW50IGFsZ29yaXRobXMgZm9yIGhvdyB0byBkbyB0aGlzXG4gIDE0Olx0XHQgIFwmIzM0O2ZhaXJseVwmIzM0OyBoYXZlIGJlZW4gcHJvcG9zZWQuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIElmIHlvdSBzYXkgTiBoZXJlLCB5b3Ugd2lsbCBnZXQgdGhlIHN0YW5kYXJkIHBhY2tldCBzY2hlZHVsZXIsIHdoaWNoXG4gIDE3Olx0XHQgIGlzIGEgRklGTyAoZmlyc3QgY29tZSwgZmlyc3Qgc2VydmVkKS4gSWYgeW91IHNheSBZIGhlcmUsIHlvdSB3aWxsIGJlXG4gIDE4Olx0XHQgIGFibGUgdG8gY2hvb3NlIGZyb20gYW1vbmcgc2V2ZXJhbCBhbHRlcm5hdGl2ZSBhbGdvcml0aG1zIHdoaWNoIGNhblxuICAxOTpcdFx0ICB0aGVuIGJlIGF0dGFjaGVkIHRvIGRpZmZlcmVudCBuZXR3b3JrIGRldmljZXMuIFRoaXMgaXMgdXNlZnVsIGZvclxuICAyMDpcdFx0ICBleGFtcGxlIGlmIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXMgYXJlIHJlYWwgdGltZSBkZXZpY2VzIHRoYXRcbiAgMjE6XHRcdCAgbmVlZCBhIGNlcnRhaW4gbWluaW11bSBkYXRhIGZsb3cgcmF0ZSwgb3IgaWYgeW91IG5lZWQgdG8gbGltaXQgdGhlXG4gIDIyOlx0XHQgIG1heGltdW0gZGF0YSBmbG93IHJhdGUgZm9yIHRyYWZmaWMgd2hpY2ggbWF0Y2hlcyBzcGVjaWZpZWQgY3JpdGVyaWEuXG4gIDIzOlx0XHQgIFRoaXMgY29kZSBpcyBjb25zaWRlcmVkIHRvIGJlIGV4cGVyaW1lbnRhbC5cbiAgMjQ6XHRcbiAgMjU6XHRcdCAgVG8gYWRtaW5pc3RlciB0aGVzZSBzY2hlZHVsZXJzLCB5b3UmIzM5O2xsIG5lZWQgdGhlIHVzZXItbGV2ZWwgdXRpbGl0aWVzXG4gIDI2Olx0XHQgIGZyb20gdGhlIHBhY2thZ2UgaXByb3V0ZTImIzQzO3RjIGF0XG4gIDI3Olx0XHQgIFx1MDAzY2h0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL25ldC9pcHJvdXRlMi9cdTAwM2UuICBUaGF0IHBhY2thZ2VcbiAgMjg6XHRcdCAgYWxzbyBjb250YWlucyBzb21lIGRvY3VtZW50YXRpb247IGZvciBtb3JlLCBjaGVjayBvdXRcbiAgMjk6XHRcdCAgXHUwMDNjaHR0cDovL3d3dy5saW51eGZvdW5kYXRpb24ub3JnL2NvbGxhYm9yYXRlL3dvcmtncm91cHMvbmV0d29ya2luZy9pcHJvdXRlMlx1MDAzZS5cbiAgMzA6XHRcbiAgMzE6XHRcdCAgVGhpcyBRdWFsaXR5IG9mIFNlcnZpY2UgKFFvUykgc3VwcG9ydCB3aWxsIGVuYWJsZSB5b3UgdG8gdXNlXG4gIDMyOlx0XHQgIERpZmZlcmVudGlhdGVkIFNlcnZpY2VzIChkaWZmc2VydikgYW5kIFJlc291cmNlIFJlc2VydmF0aW9uIFByb3RvY29sXG4gIDMzOlx0XHQgIChSU1ZQKSBvbiB5b3VyIExpbnV4IHJvdXRlciBpZiB5b3UgYWxzbyBzYXkgWSB0byB0aGUgY29ycmVzcG9uZGluZ1xuICAzNDpcdFx0ICBjbGFzc2lmaWVycyBiZWxvdy4gIERvY3VtZW50YXRpb24gYW5kIHNvZnR3YXJlIGlzIGF0XG4gIDM1Olx0XHQgIFx1MDAzY2h0dHA6Ly9kaWZmc2Vydi5zb3VyY2Vmb3JnZS5uZXQvXHUwMDNlLlxuICAzNjpcdFxuICAzNzpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSBhbmQgdG8gXCYjMzQ7L3Byb2MgZmlsZSBzeXN0ZW1cJiMzNDsgYmVsb3csIHlvdSB3aWxsIGJlIGFibGVcbiAgMzg6XHRcdCAgdG8gcmVhZCBzdGF0dXMgaW5mb3JtYXRpb24gYWJvdXQgcGFja2V0IHNjaGVkdWxlcnMgZnJvbSB0aGUgZmlsZVxuICAzOTpcdFx0ICAvcHJvYy9uZXQvcHNjaGVkLlxuICA0MDpcdFxuICA0MTpcdFx0ICBUaGUgYXZhaWxhYmxlIHNjaGVkdWxlcnMgYXJlIGxpc3RlZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9uczsgeW91XG4gIDQyOlx0XHQgIGNhbiBzYXkgWSB0byBhcyBtYW55IGFzIHlvdSBsaWtlLiBJZiB1bnN1cmUsIHNheSBOIG5vdy5cbiAgNDM6XHRcbiAgNDQ6XHRpZiBORVRfU0NIRURcbiAgNDU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc1MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6CgoqKkV4YW1pbmluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgTmV0d29yayBTY2hlZHVsaW5nIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX1NDSEVEYCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGBuZXQvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgZ28tdG8gbG9jYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyByZWxhdGVkIHRvIG5ldHdvcmtpbmcgZmVhdHVyZXMsIHNvIHRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBmaXJzdCBzdGVwLiBIb3BlZnVsbHksIGBORVRfU0NIRURgIGlzIGRlZmluZWQgaW4gdGhlcmUsIGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBjbGVhcmx5IGxhaWQgb3V0LiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDtuZXQvc2NoZWQvS2NvbmZpZ1wmIzM0OyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MjY5PXNvdXJjZSBcJiMzNDtuZXQvbWFjODAyMTU0L0tjb25maWdcJiMzNDtcbm5ldC9LY29uZmlnOjI3MDpzb3VyY2UgXCYjMzQ7bmV0L3NjaGVkL0tjb25maWdcJiMzNDtcbm5ldC9LY29uZmlnLTI3MS1zb3VyY2UgXCYjMzQ7bmV0L2RjYi9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDA2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyb3VibGVzaG9vdGluZyBzb21ldGhpbmcsIGFuZCBteSBndXQgZmVlbGluZyBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSByZWxhdGVkIHRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBJbnN0ZWFkIG9mIGJsaW5kbHkgZ3JlcHBpbmcsIGxldCYjMzk7cyB0YWtlIGEgdGFyZ2V0ZWQgYXBwcm9hY2guIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGBuZXQvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMjcwLiBUaGF0IGFyZWEgdXN1YWxseSBkZWFscyB3aXRoLi4uIHdlbGwsIGJhc2VkIG9uIHByaW9yIGV4cGVyaWVuY2UgYW5kIGdlbmVyYWwga25vd2xlZGdlIG9mIHRoZSBwcm9qZWN0JiMzOTtzIHN0cnVjdHVyZS4uLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIG9wdGlvbnMgdGhhdCByZWxhdGUgdG8gbmV0d29yayBmdW5jdGlvbmFsaXR5IG9yIHNvbWUgYXNwZWN0IG9mIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb24uIEl0IGNvdWxkIGJlIGFueXRoaW5nIGZyb20gYSBzcGVjaWZpYyBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiB0byBhIGRyaXZlciYjMzk7cyBlbmFibGVtZW50LiBUaW1lIHRvIGdvIGh1bnRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI2NTpcdHNvdXJjZSBcJiMzNDtuZXQvbGFwYi9LY29uZmlnXCYjMzQ7XG4gMjY2Olx0c291cmNlIFwmIzM0O25ldC9waG9uZXQvS2NvbmZpZ1wmIzM0O1xuIDI2NzpcdHNvdXJjZSBcJiMzNDtuZXQvNmxvd3Bhbi9LY29uZmlnXCYjMzQ7XG4gMjY4Olx0c291cmNlIFwmIzM0O25ldC9pZWVlODAyMTU0L0tjb25maWdcJiMzNDtcbiAyNjk6XHRzb3VyY2UgXCYjMzQ7bmV0L21hYzgwMjE1NC9LY29uZmlnXCYjMzQ7XG4gMjcwOlx0c291cmNlIFwmIzM0O25ldC9zY2hlZC9LY29uZmlnXCYjMzQ7XG4gMjcxOlx0c291cmNlIFwmIzM0O25ldC9kY2IvS2NvbmZpZ1wmIzM0O1xuIDI3MjpcdHNvdXJjZSBcJiMzNDtuZXQvZG5zX3Jlc29sdmVyL0tjb25maWdcJiMzNDtcbiAyNzM6XHRzb3VyY2UgXCYjMzQ7bmV0L2JhdG1hbi1hZHYvS2NvbmZpZ1wmIzM0O1xuIDI3NDpcdHNvdXJjZSBcJiMzNDtuZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZ1wmIzM0O1xuIDI3NTpcdHNvdXJjZSBcJiMzNDtuZXQvdm13X3Zzb2NrL0tjb25maWdcJiMzNDtcbiAyNzY6XHRzb3VyY2UgXCYjMzQ7bmV0L25ldGxpbmsvS2NvbmZpZ1wmIzM0O1xuIDI3NzpcdHNvdXJjZSBcJiMzNDtuZXQvbXBscy9LY29uZmlnXCYjMzQ7XG4gMjc4Olx0c291cmNlIFwmIzM0O25ldC9uc2gvS2NvbmZpZ1wmIzM0O1xuIDI3OTpcdHNvdXJjZSBcJiMzNDtuZXQvaHNyL0tjb25maWdcJiMzNDtcbiAyODA6XHRzb3VyY2UgXCYjMzQ7bmV0L3N3aXRjaGRldi9LY29uZmlnXCYjMzQ7XG4gMjgxOlx0c291cmNlIFwmIzM0O25ldC9sM21kZXYvS2NvbmZpZ1wmIzM0O1xuIDI4MjpcdHNvdXJjZSBcJiMzNDtuZXQvcXJ0ci9LY29uZmlnXCYjMzQ7XG4gMjgzOlx0c291cmNlIFwmIzM0O25ldC9uY3NpL0tjb25maWdcJiMzNDtcbiAyODQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1NzkKCQkJCQkJCW91dHB1dDogNjEKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRnVuY3Rpb24gU3ltYm9scyBpbiBgc2NoX2Ryci5jYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gRmlyc3QsIEkgbmVlZCB0byBzZWUgZXhhY3RseSB3aGljaCBmdW5jdGlvbiBzeW1ib2xzIGhhdmUgYmVlbiB0b3VjaGVkIHdpdGhpbiBlYWNoIGZpbGUuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIHJlY2VudCBtb2RpZmljYXRpb25zLCB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzIG1hZGUgdG8gdGhlIERSUiBzY2hlZHVsZXIuIEFscmlnaHQsIHN0YXJ0aW5nIHdpdGggYG5ldC9zY2hlZC9zY2hfZHJyLmNgLCBpdCBsb29rcyBsaWtlIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBhbHRlcmVkIGlzIGBkcnJfY2hhbmdlX2NsYXNzYC4gR29vZCwgdGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgc28gaXQmIzM5O3MgbGlrZWx5IGludGVybmFsIHRvIHRoYXQgc3BlY2lmaWMgZmlsZS4gTm93LCBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGNvbXBsZXRlIGBzY2hfZHJyLmNgIGZpbGUgaXRzZWxmIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIG1vZGlmaWNhdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBpbXBsZW1lbnRhdGlvbi4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyhkcnJfaW5pdHxkcnJfZW5xdWV1ZXxkcnJfZGVxdWV1ZXxkcnJfY2hhbmdlX2NsYXNzfGRycl9xZGlzY19vcHMpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9kcnIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2Ryci5jPTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkcnJfcG9saWN5W1RDQV9EUlJfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfZHJyLmMtNTctXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjU4OnN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNTktXHRcdFx0ICAgIHN0cnVjdCBubGF0dHIgKip0Y2EsIHVuc2lnbmVkIGxvbmcgKmFyZyxcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jPTI5OT1zdGF0aWMgc3RydWN0IGRycl9jbGFzcyAqZHJyX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuLS1cbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzM2LVxubmV0L3NjaGVkL3NjaF9kcnIuYzozMzc6c3RhdGljIGludCBkcnJfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzM4LVx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxuLS1cbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzcxLVxubmV0L3NjaGVkL3NjaF9kcnIuYzozNzI6c3RhdGljIHN0cnVjdCBza19idWZmICpkcnJfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzczLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQxMS1cbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDEyOnN0YXRpYyBpbnQgZHJyX2luaXRfcWRpc2Moc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDEzLVx0XHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfZHJyLmM9NDYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGRycl9jbGFzc19vcHMgPSB7XG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ2MTpcdC5jaGFuZ2VcdFx0PSBkcnJfY2hhbmdlX2NsYXNzLFxubmV0L3NjaGVkL3NjaF9kcnIuYy00NjItXHQuZGVsZXRlXHRcdD0gZHJyX2RlbGV0ZV9jbGFzcyxcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ3NC1cbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDc1OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGRycl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDc2LVx0LmNsX29wc1x0XHQ9IFx1MDAyNmRycl9jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9kcnIuYy00NzgtXHQucHJpdl9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgZHJyX3NjaGVkKSxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDc5Olx0LmVucXVldWVcdD0gZHJyX2VucXVldWUsXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ4MDpcdC5kZXF1ZXVlXHQ9IGRycl9kZXF1ZXVlLFxubmV0L3NjaGVkL3NjaF9kcnIuYy00ODEtXHQucGVla1x0XHQ9IHFkaXNjX3BlZWtfZGVxdWV1ZWQsXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ4MjpcdC5pbml0XHRcdD0gZHJyX2luaXRfcWRpc2MsXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ4My1cdC5yZXNldFx0XHQ9IGRycl9yZXNldF9xZGlzYyxcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jPTQ4Nz1NT0RVTEVfQUxJQVNfTkVUX1NDSChcJiMzNDtkcnJcJiMzNDspO1xubmV0L3NjaGVkL3NjaF9kcnIuYy00ODgtXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ4OTpzdGF0aWMgaW50IF9faW5pdCBkcnJfaW5pdCh2b2lkKVxubmV0L3NjaGVkL3NjaF9kcnIuYy00OTAte1xubmV0L3NjaGVkL3NjaF9kcnIuYzo0OTE6XHRyZXR1cm4gcmVnaXN0ZXJfcWRpc2MoXHUwMDI2ZHJyX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ5Mi19XG4tLVxubmV0L3NjaGVkL3NjaF9kcnIuYz00OTQ9c3RhdGljIHZvaWQgX19leGl0IGRycl9leGl0KHZvaWQpXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ5NS17XG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ5NjpcdHVucmVnaXN0ZXJfcWRpc2MoXHUwMDI2ZHJyX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ5Ny19XG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ5OC1cbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDk5Om1vZHVsZV9pbml0KGRycl9pbml0KTtcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNTAwLW1vZHVsZV9leGl0KGRycl9leGl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM5MTcKCQkJCQkJCW91dHB1dDogNzMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBzY2hfZHVhbHBpMi5jYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBzY2hfZHVhbHBpMi5jYC4gSSBoYXZlIGEgZmVlbGluZyBzb21ldGhpbmcgaXNuJiMzOTt0IHF1aXRlIHJpZ2h0IHdpdGggdGhlIHNjaGVkdWxpbmcgaW4gdGhhdCBhcmVhLCBhbmQgdGhpcyBpcyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBvZiB0aGUgdXN1YWwgc3VzcGVjdHMg4oCTIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGluZWZmaWNpZW50IGxvY2tpbmcsIG9yIG1heWJlIGV2ZW4gYSBzdWJ0bGUgb3ZlcmZsb3cgYnVnIGNyZWVwaW5nIGluIHdpdGggaG93IHRoZSBkdWFsLVBJIGNvbnRyb2xsZXIgaGFuZGxlcyBpdHMgc2NoZWR1bGluZy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRlYWRsaW5lcyBhcmUgYmVpbmcgbWFuYWdlZCwgaG93IHRoZSBwcmlvcml0aWVzIGFyZSBzZXQsIGFuZCB3aGV0aGVyIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgaXMgYmVoYXZpbmcgYXMgSSYjMzk7ZCBleHBlY3QuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBwaW5wb2ludCBhbnkgb2J2aW91cyBhcmVhcyB0aGF0IG1pZ2h0IGJlIGNvbnRyaWJ1dGluZyB0byB0aGUgb2JzZXJ2ZWQgcGVyZm9ybWFuY2UgaXNzdWVzIEkmIzM5O3ZlIGJlZW4gc2VlaW5nIG9yIHBvdGVudGlhbCBnbGl0Y2hlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBpbXBhY3QgZGV0ZXJtaW5pc20gaW4gdGhpcyBjcml0aWNhbCBzZWN0aW9uLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsoZHVhbHBpMl9pbml0fGR1YWxwaTJfY2hhbmdlfGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbnxtdXN0X2Ryb3B8Z2V0X21lbW9yeV9saW1pdHxkdWFscGkyX3FkaXNjX29wcykmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xOTk9c3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSlcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMDctICovXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyMDg6c3RhdGljIHZvaWQgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjA5LVx0XHRcdFx0XHQgICBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLCB1MzIgd2MpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MjU1PXN0YXRpYyBib29sIGR1YWxwaTJfc2NhbGFibGVfbWFya2luZyhzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI4My0gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI4NDpzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yODUtXHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9Mzg4PXN0YXRpYyBpbnQgZHVhbHBpMl9lbnF1ZXVlX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00MDEtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0MDI6XHRpZiAocS1cdTAwM2Vkcm9wX2Vhcmx5IFx1MDAyNlx1MDAyNiBtdXN0X2Ryb3Aoc2NoLCBxLCBza2IpKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00MDMtXHRcdHFkaXNjX2Ryb3BfcmVhc29uKHNrYiwgc2NoLCB0b19mcmVlLCBRRElTQ19EUk9QX0NPTkdFU1RFRCk7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NTgzPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqX19kdWFscGkyX3FkaXNjX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTkyLVx0d2hpbGUgKChza2IgPSBkZXF1ZXVlX3BhY2tldChzY2gsIHEsIFx1MDAyNmNyZWRpdF9jaGFuZ2UsIG5vdykpKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1OTM6XHRcdGlmICghcS1cdTAwM2Vkcm9wX2Vhcmx5IFx1MDAyNlx1MDAyNiBtdXN0X2Ryb3Aoc2NoLCBxLCBza2IpKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01OTQtXHRcdFx0ZHJvcF9hbmRfcmV0cnkocSwgc2tiLCBzY2gsIFFESVNDX0RST1BfQ09OR0VTVEVEKTtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz02NzU9c3RhdGljIHUzMiBjYWxjdWxhdGVfcHJvYmFiaWxpdHkoc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzEyLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzEzOnN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzE0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz03Njk9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGR1YWxwaTJfcG9saWN5W1RDQV9EVUFMUEkyX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03OTQtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3OTU6c3RhdGljIGludCBkdWFscGkyX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzk2LVx0XHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTgyMy1cdFx0V1JJVEVfT05DRShzY2gtXHUwMDNlbGltaXQsIGxpbWl0KTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjgyNDpcdFx0V1JJVEVfT05DRShxLVx1MDAzZW1lbW9yeV9saW1pdCwgZ2V0X21lbW9yeV9saW1pdChzY2gsIGxpbWl0KSk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04MjUtXHR9XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtODkxLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6ODkyOlx0XHRkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc2NoLCBxLCB3Yyk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04OTMtXHR9XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9OTQ5PXN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfZGVmYXVsdChzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NTMtXHRxLVx1MDAzZXNjaC1cdTAwM2VsaW1pdCA9IDEwMDAwO1x0XHRcdFx0LyogTWF4IDEyNW1zIGF0IDFHYnBzICovXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5NTQ6XHRxLVx1MDAzZW1lbW9yeV9saW1pdCA9IGdldF9tZW1vcnlfbGltaXQoc2NoLCBxLVx1MDAzZXNjaC1cdTAwM2VsaW1pdCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NTUtXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTYzLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTY0Olx0ZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHEtXHUwMDNlc2NoLCBxLCAxMCk7XHQvKiB3Yz0xMCUsIHdsPTkwJSAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTY1LVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk3My1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk3NDpzdGF0aWMgaW50IGR1YWxwaTJfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTc1LVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05OTYtXHRpZiAob3B0IFx1MDAyNlx1MDAyNiBubGFfbGVuKG9wdCkpIHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk5NzpcdFx0ZXJyID0gZHVhbHBpMl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05OTgtXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTE5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBkdWFscGkyX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjAxLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwMjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBkdWFscGkyX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIwMy1cdC5pZFx0XHQ9IFwmIzM0O2R1YWxwaTJcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIwOC1cdC5wZWVrXHRcdD0gZHVhbHBpMl9wZWVrLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwOTpcdC5pbml0XHRcdD0gZHVhbHBpMl9pbml0LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIxMC1cdC5kZXN0cm95XHQ9IGR1YWxwaTJfZGVzdHJveSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTEtXHQucmVzZXRcdFx0PSBkdWFscGkyX3Jlc2V0LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxMjpcdC5jaGFuZ2VcdFx0PSBkdWFscGkyX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTMtXHQuZHVtcFx0XHQ9IGR1YWxwaTJfZHVtcCxcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xMjE5PXN0YXRpYyBpbnQgX19pbml0IGR1YWxwaTJfbW9kdWxlX2luaXQodm9pZClcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjAte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyMTpcdHJldHVybiByZWdpc3Rlcl9xZGlzYyhcdTAwMjZkdWFscGkyX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjIyLX1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xMjI0PXN0YXRpYyB2b2lkIF9fZXhpdCBkdWFscGkyX21vZHVsZV9leGl0KHZvaWQpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjI1LXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjY6XHR1bnJlZ2lzdGVyX3FkaXNjKFx1MDAyNmR1YWxwaTJfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA4NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIEludGVyYWN0aW9uIEJldHdlZW4gYHNjaF9waWVgIGFuZCBgcGllX2Ryb3BfZWFybHlgKioKCkhtbSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYHNjaF9waWUuY2AgYWdhaW4uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyByZWxhdGVkIHRvIGBwaWVfZHJvcF9lYXJseWAgYW5kIGl0cyB1c2FnZSwgYmVjYXVzZSBJIGtub3cgdGhhdCBmdW5jdGlvbiBpcyBlaXRoZXIgZXhwb3J0ZWQgb3IgdXNlZCBpbiBlaXRoZXIgYHNjaF9waWVgIG9yIGBzY2hfZnFfcGllYC4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIHNvbWUgc2NoZWR1bGluZyBsb2dpYyB3aXRoaW4gdGhvc2UgbW9kdWxlcy4gVG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgYm90aCB0aGUgYC5jYCBmaWxlIGl0c2VsZiwgYW5kIGFueSBjb3JyZXNwb25kaW5nIGAuaGAgaGVhZGVyIGZpbGUgaWYgaXQgZXhpc3RzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgY2FsbCBzaXRlcy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTEzMD1zdGF0aWMgaW50IGZxX3BpZV9xZGlzY19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMTY2LVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzoxNjc6XHRpZiAoIXBpZV9kcm9wX2Vhcmx5KHNjaCwgXHUwMDI2cS1cdTAwM2VwX3BhcmFtcywgXHUwMDI2c2VsX2Zsb3ctXHUwMDNldmFycyxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMTY4LVx0XHRcdCAgICBzZWxfZmxvdy1cdTAwM2ViYWNrbG9nLCBza2ItXHUwMDNlbGVuKSkge1xuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmM9MjU9c3RydWN0IHBpZV9zY2hlZF9kYXRhIHtcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTMyLVxubmV0L3NjaGVkL3NjaF9waWUuYzozMzpib29sIHBpZV9kcm9wX2Vhcmx5KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcGllX3BhcmFtcyAqcGFyYW1zLFxubmV0L3NjaGVkL3NjaF9waWUuYy0zNC1cdFx0ICAgIHN0cnVjdCBwaWVfdmFycyAqdmFycywgdTMyIGJhY2tsb2csIHUzMiBwYWNrZXRfc2l6ZSlcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTUwLVxubmV0L3NjaGVkL3NjaF9waWUuYzo1MTpcdC8qIElmIHdlIGhhdmUgZmV3ZXIgdGhhbiAyIG10dS1zaXplZCBwYWNrZXRzLCBkaXNhYmxlIHBpZV9kcm9wX2Vhcmx5LFxubmV0L3NjaGVkL3NjaF9waWUuYy01Mi1cdCAqIHNpbWlsYXIgdG8gbWluX3RoIGluIFJFRFxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtODItfVxubmV0L3NjaGVkL3NjaF9waWUuYzo4MzpFWFBPUlRfU1lNQk9MX0dQTChwaWVfZHJvcF9lYXJseSk7XG5uZXQvc2NoZWQvc2NoX3BpZS5jLTg0LVxubmV0L3NjaGVkL3NjaF9waWUuYz04NT1zdGF0aWMgaW50IHBpZV9xZGlzY19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtOTgtXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjk5Olx0aWYgKCFwaWVfZHJvcF9lYXJseShzY2gsIFx1MDAyNnEtXHUwMDNlcGFyYW1zLCBcdTAwMjZxLVx1MDAzZXZhcnMsIHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyxcbm5ldC9zY2hlZC9zY2hfcGllLmMtMTAwLVx0XHRcdCAgICBza2ItXHUwMDNlbGVuKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjg0NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6CgoqKkFuYWx5emluZyB0aGUgUElFIFNjaGVkdWxlciBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIGBwaWVfZHJvcF9lYXJseWAgaXMgYSBwcmV0dHkgaW1wb3J0YW50IGZ1bmN0aW9uIGluIHRoZSBQSUUgc2NoZWR1bGVyLCBhbmQgaXQmIzM5O3MgZXhwb3J0ZWQgd2l0aCB0aGUgR1BMIHN5bWJvbC4gVGhhdCBzaWduYWxzIGl0JiMzOTtzIG1lYW50IHRvIGJlIHVzZWQgZXh0ZXJuYWxseSwgcGVyaGFwcyBieSBvdGhlciBrZXJuZWwgbW9kdWxlcy4gR2l2ZW4gaXRzIG5hbWUsIEkmIzM5O20gZ3Vlc3NpbmcgaXQmIzM5O3MgcmVsYXRlZCB0byBkcm9wcGluZyBwYWNrZXRzLCBidXQgbGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBQSUUgYXJjaGl0ZWN0dXJlLgoKVGltZSB0byBkaXZlIGludG8gYHNjaF9waWUuY2AuIEkgbmVlZCB0byByZXZpZXcgcmVsYXRlZCBmdW5jdGlvbnMuIEZpcnN0LCBJJiMzOTtsbCBiZSBsb29raW5nIGF0IGhvdyBwYWNrZXRzIGFyZSBlbnF1ZXVlZC9kZXF1ZXVlZCBieSBjaGVja2luZyBmdW5jdGlvbnMgbGlrZSBgcGllX3Byb2Nlc3NfZGVxdWV1ZWAgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gVGhlbiwgYHBpZV9pbml0YCBpcyBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIHRoZSBzY2hlZHVsaW5nIGRpc2NpcGxpbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2NoZWR1bGVyIGlzIGluaXRpYWxpemVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IGBwaWVfZHJvcF9lYXJseWAgbWlnaHQgYmUgY2FsbGVkLiBJJiMzOTttIGhvcGluZyBJIGNhbiBwaWVjZSB0b2dldGhlciB0aGUgbG9naWMgYW5kIGlkZW50aWZ5IHRoZSBzaXR1YXRpb25zIGluIHdoaWNoIGEgcGFja2V0IGlzIGRyb3BwZWQgZWFybHkgYW5kIHRoZSBjb250ZXh0IGFyb3VuZCB3aHkgdGhpcyBpcyBoYXBwZW5pbmcuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsocGllX2luaXR8cGllX2NoYW5nZXxwaWVfcWRpc2Nfb3BzKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfcGllLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9waWUuYz0xMzA9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHBpZV9wb2xpY3lbVENBX1BJRV9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYy0xNDAtXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjE0MTpzdGF0aWMgaW50IHBpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfcGllLmMtMTQyLVx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYz00MjU9c3RhdGljIHZvaWQgcGllX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtNDQyLVxubmV0L3NjaGVkL3NjaF9waWUuYzo0NDM6c3RhdGljIGludCBwaWVfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9waWUuYy00NDQtXHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYy00NTUtXHRpZiAob3B0KSB7XG5uZXQvc2NoZWQvc2NoX3BpZS5jOjQ1NjpcdFx0aW50IGVyciA9IHBpZV9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XG5uZXQvc2NoZWQvc2NoX3BpZS5jLTQ1Ny1cbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTU0Mz1zdGF0aWMgdm9pZCBwaWVfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU1MC1cbm5ldC9zY2hlZC9zY2hfcGllLmM6NTUxOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHBpZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTUyLVx0LmlkXHRcdD0gXCYjMzQ7cGllXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtNTU2LVx0LnBlZWtcdFx0PSBxZGlzY19wZWVrX2RlcXVldWVkLFxubmV0L3NjaGVkL3NjaF9waWUuYzo1NTc6XHQuaW5pdFx0XHQ9IHBpZV9pbml0LFxubmV0L3NjaGVkL3NjaF9waWUuYy01NTgtXHQuZGVzdHJveVx0PSBwaWVfZGVzdHJveSxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTU5LVx0LnJlc2V0XHRcdD0gcGllX3Jlc2V0LFxubmV0L3NjaGVkL3NjaF9waWUuYzo1NjA6XHQuY2hhbmdlXHRcdD0gcGllX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTYxLVx0LmR1bXBcdFx0PSBwaWVfZHVtcCxcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTU2Nz1zdGF0aWMgaW50IF9faW5pdCBwaWVfbW9kdWxlX2luaXQodm9pZClcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTY4LXtcbm5ldC9zY2hlZC9zY2hfcGllLmM6NTY5Olx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFx1MDAyNnBpZV9xZGlzY19vcHMpO1xubmV0L3NjaGVkL3NjaF9waWUuYy01NzAtfVxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmM9NTcyPXN0YXRpYyB2b2lkIF9fZXhpdCBwaWVfbW9kdWxlX2V4aXQodm9pZClcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTczLXtcbm5ldC9zY2hlZC9zY2hfcGllLmM6NTc0Olx0dW5yZWdpc3Rlcl9xZGlzYyhcdTAwMjZwaWVfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTc1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5MjgKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIHByb3ZpZGVkIHByb21wdDoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBDb2RlYmFzZSoqCgpPa2F5LCBzbyB0aGUgcHJvbXB0IGRpcmVjdHMgbWUgdG8gZXhhbWluZSBhIHNwZWNpZmljIGZpbGUsIGBzY2hfZXRzLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjb25zaWRlciB0aGUgY29udGV4dCBvZiB0aGlzIGZpbGUuIEJhc2VkIG9uIHRoZSBuYW1lLCBpdCYjMzk7cyBoaWdobHkgcHJvYmFibGUgdGhpcyBmaWxlIGlzIHJlbGF0ZWQgdG8gc2NoZWR1bGluZyBhbmQgbGlrZWx5IGludm9sdmVzIGFuIGVtYmVkZGVkIHN5c3RlbSBvciByZWFsLXRpbWUgb3BlcmF0aW5nIHN5c3RlbSAoUlRPUykuICYjMzQ7c2NoJiMzNDsgdHlwaWNhbGx5IGluZGljYXRlcyAmIzM0O3NjaGVkdWxlciYjMzQ7IGFuZCAmIzM0O2V0cyYjMzQ7IHByb2JhYmx5IHNpZ25pZmllcyAmIzM0O0VhcmxpZXN0IERlYWRsaW5lIEZpcnN0JiMzNDsgb3Igc29tZXRoaW5nIHNpbWlsYXIgcmVsYXRlZCB0byB0aW1pbmcgY29uc3RyYWludHMuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24gcXVpY2tseSBhcyBJIGRpdmUgaW4uIE15IGZvY3VzIHdpbGwgYmUgb24gdW5kZXJzdGFuZGluZyB0aGUgY29yZSBzY2hlZHVsaW5nIGFsZ29yaXRobXMgYW5kIGRhdGEgc3RydWN0dXJlcyBpbXBsZW1lbnRlZCB3aXRoaW4uIEkgZXhwZWN0IHRvIGZpbmQgZnVuY3Rpb25zIGZvciB0YXNrIG1hbmFnZW1lbnQsIHByaW9yaXR5IGhhbmRsaW5nLCBhbmQgdGltZSBtYW5hZ2VtZW50LiBNeSBpbml0aWFsIGFwcHJvYWNoIHdpbGwgYmUgYSBxdWljayBzY2FuIG9mIHRoZSBjb2RlLCBsb29raW5nIGZvciBrZXkgZnVuY3Rpb24gbmFtZXMgYW5kIGRhdGEgc3RydWN0dXJlIGRlZmluaXRpb25zIHRvIGVzdGFibGlzaCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYmVmb3JlIGRlbHZpbmcgaW50byB0aGUgZGV0YWlscy4gSSB3aWxsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbW1lbnRzIG9yIGRvY3VtZW50YXRpb24gd2l0aGluIHRoZSBmaWxlLCBhcyB0aGlzIGlzIG9mdGVuIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRldmVsb3BlciYjMzk7cyBpbnRlbnQgYW5kIGhvdyB0aGUgc2NoZWR1bGluZyBwcm9jZXNzIGlzIGRlc2lnbmVkIHRvIHdvcmsuIEl0JiMzOTtzIGxpa2VseSBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIHBvaW50cyBvciBhcmVhcyB3aGVyZSBjb25jdXJyZW5jeSBpc3N1ZXMgY291bGQgYXJpc2UsIGdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCBzdWNoIHN5c3RlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyhldHNfaW5pdHxldHNfY2hhbmdlfGV0c19xdWFudHVtX3BhcnNlfGV0c19xZGlzY19vcHMpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9ldHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2V0cy5jPTc3PXN0YXRpYyBib29sIGNsX2lzX2FjdGl2ZShzdHJ1Y3QgZXRzX2NsYXNzICpjbClcbi0tXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgxLVxubmV0L3NjaGVkL3NjaF9ldHMuYzo4MjpzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxubmV0L3NjaGVkL3NjaF9ldHMuYy04My1cdFx0XHQgICAgIHVuc2lnbmVkIGludCAqcXVhbnR1bSxcbi0tXG5uZXQvc2NoZWQvc2NoX2V0cy5jPTIwND1zdGF0aWMgaW50IGV0c19jbGFzc19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBjbGFzc2lkLCB1MzIgcGFyZW50aWQsXG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYy0yNDAtXG5uZXQvc2NoZWQvc2NoX2V0cy5jOjI0MTpcdGVyciA9IGV0c19xdWFudHVtX3BhcnNlKHNjaCwgdGJbVENBX0VUU19RVUFOVEFfQkFORF0sIFx1MDAyNnF1YW50dW0sXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTI0Mi1cdFx0XHRcdGV4dGFjayk7XG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYz01NDI9c3RhdGljIGludCBldHNfcWRpc2NfcXVhbnRhX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpxdWFudGFfYXR0cixcbi0tXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTU2NC1cdFx0XHR9XG5uZXQvc2NoZWQvc2NoX2V0cy5jOjU2NTpcdFx0XHRlcnIgPSBldHNfcXVhbnR1bV9wYXJzZShzY2gsIGF0dHIsIFx1MDAyNnF1YW50YVtiYW5kJiM0MzsmIzQzO10sXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTU2Ni1cdFx0XHRcdFx0XHRleHRhY2spO1xuLS1cbm5ldC9zY2hlZC9zY2hfZXRzLmM9ODAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGV0c19jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYy04MTMtXG5uZXQvc2NoZWQvc2NoX2V0cy5jOjgxNDpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBldHNfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgxNS1cdC5jbF9vcHNcdFx0PSBcdTAwMjZldHNfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfZXRzLmM9ODI4PU1PRFVMRV9BTElBU19ORVRfU0NIKFwmIzM0O2V0c1wmIzM0Oyk7XG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgyOS1cbm5ldC9zY2hlZC9zY2hfZXRzLmM6ODMwOnN0YXRpYyBpbnQgX19pbml0IGV0c19pbml0KHZvaWQpXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgzMS17XG5uZXQvc2NoZWQvc2NoX2V0cy5jOjgzMjpcdHJldHVybiByZWdpc3Rlcl9xZGlzYyhcdTAwMjZldHNfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZXRzLmMtODMzLX1cbi0tXG5uZXQvc2NoZWQvc2NoX2V0cy5jPTgzNT1zdGF0aWMgdm9pZCBfX2V4aXQgZXRzX2V4aXQodm9pZClcbm5ldC9zY2hlZC9zY2hfZXRzLmMtODM2LXtcbm5ldC9zY2hlZC9zY2hfZXRzLmM6ODM3Olx0dW5yZWdpc3Rlcl9xZGlzYyhcdTAwMjZldHNfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZXRzLmMtODM4LX1cbm5ldC9zY2hlZC9zY2hfZXRzLmMtODM5LVxubmV0L3NjaGVkL3NjaF9ldHMuYzo4NDA6bW9kdWxlX2luaXQoZXRzX2luaXQpO1xubmV0L3NjaGVkL3NjaF9ldHMuYy04NDEtbW9kdWxlX2V4aXQoZXRzX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODk5OQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU2NoZWR1bGVyIEZyZXF1ZW5jeSBDb2RlKioKCk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIGBzY2hfZnEuY2AuIFRoaXMgZmlsZSBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgZnJlcXVlbmN5IHNjYWxpbmcgbG9naWMgZm9yIHRoZSBzY2hlZHVsZXIgcmVzaWRlcy4gR2l2ZW4gbXkgZXhwZXJ0aXNlIGluIGtlcm5lbCBpbnRlcm5hbHMsIEkmIzM5O20gYW50aWNpcGF0aW5nIHRvIHNlZSB0aGUgY29udHJvbCBsb29wcywgdGhlIGRlY2lzaW9uLW1ha2luZyBwcm9jZXNzZXMgZm9yIHNlbGVjdGluZyBmcmVxdWVuY2llcywgYW5kIGhvdyB0aGVzZSBkZWNpc2lvbnMgYXJlIHRoZW4gY29tbXVuaWNhdGVkIHRvIHRoZSBoYXJkd2FyZS4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHRoZSBnb3Zlcm5vciBpbXBsZW1lbnRhdGlvbnMgKGlmIHRoZXkmIzM5O3JlIHByZXNlbnQpLCB0aGUgYWxnb3JpdGhtcyB1c2VkIGZvciB3b3JrbG9hZCBjaGFyYWN0ZXJpemF0aW9uLCBhbmQgdGhlIGludGVyYWN0aW9ucyB3aXRoIHRoZSBwb3dlciBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2NoZWR1bGVyIGFjY291bnRzIGZvciBib3RoIHBlcmZvcm1hbmNlIGFuZCBwb3dlciBjb25zdW1wdGlvbiBpbiBpdHMgZnJlcXVlbmN5IGNob2ljZXMuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyhmcV9pbml0fGZxX2NoYW5nZXxmcV9xZGlzY19vcHMpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9mcS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZnEuYz0xMDUyPXN0YXRpYyBpbnQgZnFfbG9hZF9wcmlvbWFwKHN0cnVjdCBmcV9zY2hlZF9kYXRhICpxLFxuLS1cbm5ldC9zY2hlZC9zY2hfZnEuYy0xMDczLVxubmV0L3NjaGVkL3NjaF9mcS5jOjEwNzQ6c3RhdGljIGludCBmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfZnEuYy0xMDc1LVx0XHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxLmM9MTIxMj1zdGF0aWMgdm9pZCBmcV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfZnEuYy0xMjIwLVxubmV0L3NjaGVkL3NjaF9mcS5jOjEyMjE6c3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTIyMi1cdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfZnEuYy0xMjYxLVx0aWYgKG9wdClcbm5ldC9zY2hlZC9zY2hfZnEuYzoxMjYyOlx0XHRlcnIgPSBmcV9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTI2My1cdGVsc2Vcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxLmM9MTM0Mj1zdGF0aWMgaW50IGZxX2R1bXBfc3RhdHMoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBnbmV0X2R1bXAgKmQpXG4tLVxubmV0L3NjaGVkL3NjaF9mcS5jLTEzNzgtXG5uZXQvc2NoZWQvc2NoX2ZxLmM6MTM3OTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBmcV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfZnEuYy0xMzgwLVx0LmlkXHRcdD1cdFwmIzM0O2ZxXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfZnEuYy0xMzg1LVx0LnBlZWtcdFx0PVx0cWRpc2NfcGVla19kZXF1ZXVlZCxcbm5ldC9zY2hlZC9zY2hfZnEuYzoxMzg2Olx0LmluaXRcdFx0PVx0ZnFfaW5pdCxcbm5ldC9zY2hlZC9zY2hfZnEuYy0xMzg3LVx0LnJlc2V0XHRcdD1cdGZxX3Jlc2V0LFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzODgtXHQuZGVzdHJveVx0PVx0ZnFfZGVzdHJveSxcbm5ldC9zY2hlZC9zY2hfZnEuYzoxMzg5Olx0LmNoYW5nZVx0XHQ9XHRmcV9jaGFuZ2UsXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTM5MC1cdC5kdW1wXHRcdD1cdGZxX2R1bXAsXG4tLVxubmV0L3NjaGVkL3NjaF9mcS5jPTEzOTY9c3RhdGljIGludCBfX2luaXQgZnFfbW9kdWxlX2luaXQodm9pZClcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTQwNS1cbm5ldC9zY2hlZC9zY2hfZnEuYzoxNDA2Olx0cmV0ID0gcmVnaXN0ZXJfcWRpc2MoXHUwMDI2ZnFfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZnEuYy0xNDA3LVx0aWYgKHJldClcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxLmM9MTQxMj1zdGF0aWMgdm9pZCBfX2V4aXQgZnFfbW9kdWxlX2V4aXQodm9pZClcbm5ldC9zY2hlZC9zY2hfZnEuYy0xNDEzLXtcbm5ldC9zY2hlZC9zY2hfZnEuYzoxNDE0Olx0dW5yZWdpc3Rlcl9xZGlzYyhcdTAwMjZmcV9xZGlzY19vcHMpO1xubmV0L3NjaGVkL3NjaF9mcS5jLTE0MTUtXHRrbWVtX2NhY2hlX2Rlc3Ryb3koZnFfZmxvd19jYWNoZXApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAyOQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYHNjaF9mcV9waWUuY2AqKgoKQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIGBzY2hfZnFfcGllLmNgLiBJJiMzOTttIHN0YXJ0aW5nIGhlcmUgYmVjYXVzZSBJIG5lZWQgYSBkZWVwZXIgZGl2ZSBpbnRvIGhvdyB0aGlzIHNjaGVkdWxlciBoYW5kbGVzIHRoZSB2YXJpb3VzIHF1ZXVlcywgZXNwZWNpYWxseSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBmYWlyIHF1ZXVpbmcgYW5kIHBhY2tldCBkZWxheSBlc3RpbWF0aW9uLiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nIGlzIGFtaXNzIGluIGhvdyB0aGV5JiMzOTtyZSBjb21iaW5lZCwgb3IgcGVyaGFwcyBhIHN1YnRsZSBidWcgaXMgbHVya2luZyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHJlbGF0ZWQgdG8gdGhlIFBJRSBjb21wb25lbnQuIEkgd2FudCB0byBjaGVjayB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMsIHNwZWNpZmljYWxseSB0aGUgcGVyLXF1ZXVlIHN0YXRlLiBJJiMzOTtsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgYG5ldGVtYCBjb21wb25lbnQgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBMZXQgbWUgZXhhbWluZSBob3cgdGhlIGZhaXIgcXVldWluZyBpcyBpbXBsZW1lbnRlZCwgY29uZmlybSBpZiB0aGUgcm91bmQgcm9iaW4gYXBwcm9hY2ggaXMgaW1wbGVtZW50ZWQgYW5kIGhvdyBpdCBpcyBpbXBsZW1lbnRlZC4gSSBzaG91bGQgbG9vayBzcGVjaWZpY2FsbHkgYXQgaG93IFBJRSYjMzk7cyBhY3RpdmUgcXVldWUgbWFuYWdlbWVudCBpcyB0cmlnZ2VyZWQgYW5kIHdoZXRoZXIgdGhlcmUmIzM5O3MgYW55IHVubmVjZXNzYXJ5IGJsb2NraW5nIG9yIGNvbnRlbnRpb24gdGhhdCBjb3VsZCBiZSBjYXVzaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCB1bmRlciBoaWdoIGxvYWQuIEkgbmVlZCB0byBsb29rIGF0IGhvdyBkaWZmZXJlbnQgdHJhZmZpYyBjbGFzc2VzIGFyZSB3ZWlnaHRlZCBvciBwcmlvcml0aXplZCB3aXRoaW4gdGhlIFBJRSBwYXJhbWV0ZXJzLiBJIHNob3VsZCBsb29rIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHJlbGF0ZWQgdG8gdGhlIGVucXVldWUgYW5kIGRlcXVldWUgb3BlcmF0aW9ucywgYXMgd2VsbCBhcyBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgc3RhdGlzdGljcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7KGZxX3BpZV9pbml0fGZxX3BpZV9jaGFuZ2V8ZnFfcGllX3FkaXNjX29wcykmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2ZxX3BpZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZnFfcGllLmM9MjM4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZnFfcGllX3FkaXNjX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy0yODYtXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjI4NzpzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMjg4LVx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYz0zODg9c3RhdGljIHZvaWQgZnFfcGllX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNDIwLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo0MjE6c3RhdGljIGludCBmcV9waWVfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy00MjItXHRcdCAgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy00NDItXHRpZiAob3B0KSB7XG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjQ0MzpcdFx0ZXJyID0gZnFfcGllX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNDQ0LVxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM9NTU2PXN0YXRpYyB2b2lkIGZxX3BpZV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTY1LVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1NjY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZnFfcGllX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NjctXHQuaWRcdFx0PSBcJiMzNDtmcV9waWVcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NzEtXHQucGVla1x0XHQ9IHFkaXNjX3BlZWtfZGVxdWV1ZWQsXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjU3MjpcdC5pbml0XHRcdD0gZnFfcGllX2luaXQsXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU3My1cdC5kZXN0cm95XHQ9IGZxX3BpZV9kZXN0cm95LFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NzQtXHQucmVzZXRcdFx0PSBmcV9waWVfcmVzZXQsXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjU3NTpcdC5jaGFuZ2VcdFx0PSBmcV9waWVfY2hhbmdlLFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NzYtXHQuZHVtcFx0XHQ9IGZxX3BpZV9kdW1wLFxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM9NTgyPXN0YXRpYyBpbnQgX19pbml0IGZxX3BpZV9tb2R1bGVfaW5pdCh2b2lkKVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01ODMte1xubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1ODQ6XHRyZXR1cm4gcmVnaXN0ZXJfcWRpc2MoXHUwMDI2ZnFfcGllX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU4NS19XG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYz01ODc9c3RhdGljIHZvaWQgX19leGl0IGZxX3BpZV9tb2R1bGVfZXhpdCh2b2lkKVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01ODgte1xubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1ODk6XHR1bnJlZ2lzdGVyX3FkaXNjKFx1MDAyNmZxX3BpZV9xZGlzY19vcHMpO1xubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01OTAtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE4MgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYHNjaF9oaGYuY2AqKgoKT2theSwgdGltZSB0byBkaWcgaW50byBgc2NoX2hoZi5jYC4gR2l2ZW4gdGhlIGNvbnRleHQgb2Ygd2hhdCB3ZSYjMzk7cmUgd29ya2luZyBvbiwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgaG93IHRoaXMgc3BlY2lmaWMgZmlsZSBjb250cmlidXRlcyB0byB0aGUgb3ZlcmFsbCBzY2hlZHVsaW5nIGFuZCBwb3RlbnRpYWxseSB0aGUgaGFuZGxpbmcgb2YgaGlnaC1mcmVxdWVuY3kgZXZlbnRzLiBJJiMzOTttIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMg4oCTIGxpa2VseSByZWxhdGVkIHRvIHRhc2sgcXVldWVzLCBydW5xdWV1ZXMsIG9yIGV2ZW50IHRpbWVycyDigJMgYW5kIGhvdyB0aG9zZSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllci4gSSBleHBlY3QgdG8gZmluZCBzb21lIGNyaXRpY2FsIHNlY3Rpb25zIGhlYXZpbHkgZ3VhcmRlZCB3aXRoIHNwaW5sb2NrcyBvciBtdXRleGVzLCBhbmQgSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsb2NrIGhpZXJhcmNoaWVzIHRvIHByZXZlbnQgYW55IHBvdGVudGlhbCBkZWFkbG9ja3MuCgpJJiMzOTtsbCBiZSB6ZXJvaW5nIGluIG9uIGFueSBhcmVhcyB0aGF0IGRlYWwgd2l0aCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGNvbnRleHQgc3dpdGNoaW5nLCBhbmQgcHJlZW1wdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgSEhGIGNvbXBvbmVudCAod2hhdGV2ZXIgJiMzNDtISEYmIzM0OyBhY3R1YWxseSAqaXMqIGluIHRoaXMgcHJvamVjdCDigJMgaGlnaC1mcmVxdWVuY3kgaGFuZGxpbmcsIHBlcmhhcHM/KSBpcyBpbnRlZ3JhdGVkIHdpdGggdGhlIHN0YW5kYXJkIHNjaGVkdWxlci4gRG9lcyBpdCBtb2RpZnkgdGhlIHJ1bnF1ZXVlIHByaW9yaXRpZXM/IERvZXMgaXQgaGF2ZSBpdHMgb3duIGRlZGljYXRlZCB0aHJlYWQgb3Igd29ya2VyIHBvb2w/IEFyZSB0aGVyZSBhbnkgc3BlY2lhbGl6ZWQgc3lzdGVtIGNhbGxzIG9yIGtlcm5lbCBBUElzIGV4cG9zZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eT8KCkkmIzM5O20gYWxzbyBrZWVuIHRvIHNwb3QgYW55IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMuIEFyZSB0aGV5IHVzaW5nIHRlY2huaXF1ZXMgbGlrZSBwZXItQ1BVIGRhdGEgc3RydWN0dXJlcywgbG9ja2xlc3MgYWxnb3JpdGhtcywgb3IgYmF0Y2ggcHJvY2Vzc2luZyB0byBtaW5pbWl6ZSBvdmVyaGVhZD8gQW55IHVzZSBvZiBoYXJkd2FyZSBwZXJmb3JtYW5jZSBjb3VudGVycyB3aWxsIGJlIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QuIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgcm9sZSBhbmQgaW1wYWN0IG9mIGBzY2hfaGhmLmNgIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGhlIHNvb25lciBJIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSwgdGhlIHNvb25lciBJIGNhbiBkaWFnbm9zZSB0aGUgY3VycmVudCBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7KGhoZl9pbml0fGhoZl9jaGFuZ2V8aGhmX3FkaXNjX29wcykmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2hoZi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfaGhmLmM9NTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBoaGZfcG9saWN5W1RDQV9ISEZfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfaGhmLmMtNTM2LVxubmV0L3NjaGVkL3NjaF9oaGYuYzo1Mzc6c3RhdGljIGludCBoaGZfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTUzOC1cdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfaGhmLmMtNjA4LVxubmV0L3NjaGVkL3NjaF9oaGYuYzo2MDk6c3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9oaGYuYy02MTAtXHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9oaGYuYy02MjctXHRpZiAob3B0KSB7XG5uZXQvc2NoZWQvc2NoX2hoZi5jOjYyODpcdFx0aW50IGVyciA9IGhoZl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XG5uZXQvc2NoZWQvc2NoX2hoZi5jLTYyOS1cbi0tXG5uZXQvc2NoZWQvc2NoX2hoZi5jPTcxND1zdGF0aWMgaW50IGhoZl9kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxuLS1cbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzI2LVxubmV0L3NjaGVkL3NjaF9oaGYuYzo3Mjc6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgaGhmX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9oaGYuYy03MjgtXHQuaWRcdFx0PVx0XCYjMzQ7aGhmXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzMzLVx0LnBlZWtcdFx0PVx0cWRpc2NfcGVla19kZXF1ZXVlZCxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzM0Olx0LmluaXRcdFx0PVx0aGhmX2luaXQsXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTczNS1cdC5yZXNldFx0XHQ9XHRoaGZfcmVzZXQsXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTczNi1cdC5kZXN0cm95XHQ9XHRoaGZfZGVzdHJveSxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzM3Olx0LmNoYW5nZVx0XHQ9XHRoaGZfY2hhbmdlLFxubmV0L3NjaGVkL3NjaF9oaGYuYy03MzgtXHQuZHVtcFx0XHQ9XHRoaGZfZHVtcCxcbi0tXG5uZXQvc2NoZWQvc2NoX2hoZi5jPTc0ND1zdGF0aWMgaW50IF9faW5pdCBoaGZfbW9kdWxlX2luaXQodm9pZClcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzQ1LXtcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzQ2Olx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFx1MDAyNmhoZl9xZGlzY19vcHMpO1xubmV0L3NjaGVkL3NjaF9oaGYuYy03NDctfVxuLS1cbm5ldC9zY2hlZC9zY2hfaGhmLmM9NzQ5PXN0YXRpYyB2b2lkIF9fZXhpdCBoaGZfbW9kdWxlX2V4aXQodm9pZClcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzUwLXtcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzUxOlx0dW5yZWdpc3Rlcl9xZGlzYyhcdTAwMjZoaGZfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzUyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNDQKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBzY2hfc2ZxLmNgKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gYHNjaF9zZnEuY2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpIGltcGxlbWVudGF0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGN1cnJlbnQgY29kZSBsb29rcyBsaWtlLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgY29yZSBhbGdvcml0aG1zIOKAkyBob3cgaXQmIzM5O3MgaGFzaGluZywgaG93IHRoZSBxdWV1ZXMgYXJlIG1hbmFnZWQsIGFuZCwgb2YgY291cnNlLCB0aGUgZGVxdWV1ZSBwcm9jZXNzLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHdoZXJlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBtaWdodCBiZSBwb3NzaWJsZS4gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgbGluZ2VyaW5nPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIHJlZmluZW1lbnQ/IFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCBwYXJzaW5nIHRoZSBsb2dpYy4gTGV0JiMzOTtzIHNlZSBpZiBhbnkgcmVjZW50IGNvbW1pdHMgd2FycmFudCBhIHNlY29uZCBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsoc2ZxX2luaXR8c2ZxX2NoYW5nZXxzZnFfcWRpc2Nfb3BzKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfc2ZxLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9zZnEuYz02MDQ9c3RhdGljIHZvaWQgc2ZxX3BlcnR1cmJhdGlvbihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTYyMS1cdC8qIHEtXHUwMDNlcGVydHVyYl9wZXJpb2QgY2FuIGNoYW5nZSB1bmRlciB1cyBmcm9tXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjYyMjpcdCAqIHNmcV9jaGFuZ2UoKSBhbmQgc2ZxX2Rlc3Ryb3koKS5cbm5ldC9zY2hlZC9zY2hfc2ZxLmMtNjIzLVx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYy02MjktXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjYzMDpzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtNjMxLVx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYz03NzA9c3RhdGljIHZvaWQgc2ZxX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYy03ODEtXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjc4MjpzdGF0aWMgaW50IHNmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTc4My1cdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTgxMi1cdGlmIChvcHQpIHtcbm5ldC9zY2hlZC9zY2hfc2ZxLmM6ODEzOlx0XHRpbnQgZXJyID0gc2ZxX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtODE0LVx0XHRpZiAoZXJyKVxuLS1cbm5ldC9zY2hlZC9zY2hfc2ZxLmM9OTUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHNmcV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYy05NjEtXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjk2MjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBzZnFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk2My1cdC5jbF9vcHNcdFx0PVx0XHUwMDI2c2ZxX2NsYXNzX29wcyxcbi0tXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk2OC1cdC5wZWVrXHRcdD1cdHFkaXNjX3BlZWtfZGVxdWV1ZWQsXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjk2OTpcdC5pbml0XHRcdD1cdHNmcV9pbml0LFxubmV0L3NjaGVkL3NjaF9zZnEuYy05NzAtXHQucmVzZXRcdFx0PVx0c2ZxX3Jlc2V0LFxuLS1cbm5ldC9zY2hlZC9zY2hfc2ZxLmM9OTc4PXN0YXRpYyBpbnQgX19pbml0IHNmcV9tb2R1bGVfaW5pdCh2b2lkKVxubmV0L3NjaGVkL3NjaF9zZnEuYy05Nzkte1xubmV0L3NjaGVkL3NjaF9zZnEuYzo5ODA6XHRyZXR1cm4gcmVnaXN0ZXJfcWRpc2MoXHUwMDI2c2ZxX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk4MS19XG5uZXQvc2NoZWQvc2NoX3NmcS5jPTk4Mj1zdGF0aWMgdm9pZCBfX2V4aXQgc2ZxX21vZHVsZV9leGl0KHZvaWQpXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk4My17XG5uZXQvc2NoZWQvc2NoX3NmcS5jOjk4NDpcdHVucmVnaXN0ZXJfcWRpc2MoXHUwMDI2c2ZxX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk4NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMzU1CgkJCQkJCQlvdXRwdXQ6IDU4CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbmZpZ3VyYXRpb24gQ2hlY2tsaXN0KioKCk9rYXksIHRpbWUgdG8gbWFrZSBzdXJlIHRoaXMgc2V0dXAgaXMgY29tcGxldGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBydW4gdGhyb3VnaCB0aGUgZXNzZW50aWFsIHNjaGVkdWxpbmcgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVzZSBvcHRpb25zIGFyZSBlbmFibGVkIGluIGBtZW51Y29uZmlnYDogYE5FVF9TQ0hFRGAsIGBORVRfU0NIX0RSUmAsIGBORVRfU0NIX0RVQUxQSTJgLCBgTkVUX1NDSF9FVFNgLCBgTkVUX1NDSF9GUWAsIGBORVRfU0NIX0ZRX1BJRWAsIGBORVRfU0NIX0hIRmAsIGBORVRfU0NIX1BJRWAsIGFuZCBgTkVUX1NDSF9TRlFgLiBJJiMzOTtsbCBjcm9zcy1yZWZlcmVuY2UgdGhlc2UgYWdhaW5zdCB3aGF0IEkmIzM5O3ZlIHByZXZpb3VzbHkgd29ya2VkIG9uLgoKQWZ0ZXIgdGhhdCwgSSYjMzk7bGwgZGl2ZSBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AgdG8gbG9vayBmb3IgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGNydWNpYWwgbm90IHRvIG1pc3MgYW55IGltcGxpZWQgcmVxdWlyZW1lbnRzIG9yIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBjb25maWd1cmF0aW9uczsgbWlzc2luZyBvbmUgY2FuIGNhdXNlIG1ham9yIGhlYWRhY2hlcyBkb3duIHRoZSByb2FkLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hfKERSUnxEVUFMUEkyfEVUU3xGUXxGUV9QSUV8SEhGfFBJRXxTRlEpXFxiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MTAwPWNvbmZpZyBORVRfU0NIX1NGQlxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTExMC1cbm5ldC9zY2hlZC9LY29uZmlnOjExMTpjb25maWcgTkVUX1NDSF9TRlFcbm5ldC9zY2hlZC9LY29uZmlnLTExMi1cdHRyaXN0YXRlIFwmIzM0O1N0b2NoYXN0aWMgRmFpcm5lc3MgUXVldWVpbmcgKFNGUSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz0xOTU9Y29uZmlnIE5FVF9TQ0hfTkVURU1cbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yMDYtXG5uZXQvc2NoZWQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9TQ0hfRFJSXG5uZXQvc2NoZWQvS2NvbmZpZy0yMDgtXHR0cmlzdGF0ZSBcJiMzNDtEZWZpY2l0IFJvdW5kIFJvYmluIHNjaGVkdWxlciAoRFJSKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTI4OD1jb25maWcgTkVUX1NDSF9DQUtFXG4tLVxubmV0L3NjaGVkL0tjb25maWctMjk4LVxubmV0L3NjaGVkL0tjb25maWc6Mjk5OmNvbmZpZyBORVRfU0NIX0ZRXG5uZXQvc2NoZWQvS2NvbmZpZy0zMDAtXHR0cmlzdGF0ZSBcJiMzNDtGYWlyIFF1ZXVlXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzEyLVxubmV0L3NjaGVkL0tjb25maWc6MzEzOmNvbmZpZyBORVRfU0NIX0hIRlxubmV0L3NjaGVkL0tjb25maWctMzE0LVx0dHJpc3RhdGUgXCYjMzQ7SGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTMyMS1cbm5ldC9zY2hlZC9LY29uZmlnOjMyMjpjb25maWcgTkVUX1NDSF9QSUVcbm5ldC9zY2hlZC9LY29uZmlnLTMyMy1cdHRyaXN0YXRlIFwmIzM0O1Byb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChQSUUpIHNjaGVkdWxlclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTMzMy1cbm5ldC9zY2hlZC9LY29uZmlnOjMzNDpjb25maWcgTkVUX1NDSF9GUV9QSUVcbm5ldC9zY2hlZC9LY29uZmlnLTMzNS1cdGRlcGVuZHMgb24gTkVUX1NDSF9QSUVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz0zNjM9Y29uZmlnIE5FVF9TQ0hfUExVR1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTM4OC1cbm5ldC9zY2hlZC9LY29uZmlnOjM4OTpjb25maWcgTkVUX1NDSF9FVFNcbm5ldC9zY2hlZC9LY29uZmlnLTM5MC1cdHRyaXN0YXRlIFwmIzM0O0VuaGFuY2VkIHRyYW5zbWlzc2lvbiBzZWxlY3Rpb24gc2NoZWR1bGVyIChFVFMpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NDA2PWNvbmZpZyBORVRfU0NIX0JQRlxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQxNy1cbm5ldC9zY2hlZC9LY29uZmlnOjQxODpjb25maWcgTkVUX1NDSF9EVUFMUEkyXG5uZXQvc2NoZWQvS2NvbmZpZy00MTktXHR0cmlzdGF0ZSBcJiMzNDtEdWFsIFF1ZXVlIFBJIFNxdWFyZSAoRFVBTFBJMikgc2NoZWR1bGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MjgxCgkJCQkJCQlvdXRwdXQ6IDI3NgoJCQkJCQkJdGhvdWdodHM6IDc4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIGZ1enppbmcuIEZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX1NDSF9GUV9QSUVgOyBJIHNlZSB0aGF0IGl0IGRlcGVuZHMgb24gYE5FVF9TQ0hfUElFYC4gIE5leHQsIHdoYXQgYWJvdXQgdGhlIHRvcC1sZXZlbCBgTkVUX1NDSEVEYD8gRG9lcyBpdCBoYXZlIGFueSBkZXBlbmRlbmNpZXMgaXRzZWxmPyBMZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGZpcnN0IGZldyBsaW5lcyBvZiBgbmV0L3NjaGVkL0tjb25maWdgIHRvIGNvbmZpcm0sIGFuZCBjb25maXJtIHRoYXQgYE5FVF9TQ0hFRGAgaXMgYSBzdGFuZGFyZCBzdWJzeXN0ZW0gY29uZmlnLgoKQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMsIEkgY2FuIHNlZSB0aGF0IHRoZXNlIGFyZTogYGRycl9jaGFuZ2VfY2xhc3NgLCBgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uYCwgYG11c3RfZHJvcGAsIGBnZXRfbWVtb3J5X2xpbWl0YCwgYGV0c19xdWFudHVtX3BhcnNlYCwgYGV0c19xZGlzY19jaGFuZ2VgLCBgZnFfY2hhbmdlYCwgYGZxX2luaXRgLCBgZnFfcGllX2NoYW5nZWAsIGBoaGZfY2hhbmdlYCwgYGhoZl9pbml0YCwgYHBpZV9kcm9wX2Vhcmx5YCwgYW5kIGBzZnFfY2hhbmdlYC4gTm93LCBmb2N1c2luZyBpbiwgSSBzZWUgYHBpZV9kcm9wX2Vhcmx5YCBpcyBub24tc3RhdGljLCBtZWFuaW5nIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCBhIGdvb2QgdGFyZ2V0LiBUaGUgb3RoZXIgZnVuY3Rpb25zIGFyZSBzdGF0aWMgY2FsbGJhY2sgZnVuY3Rpb25zIGluIHFkaXNjIG9wZXJhdGlvbnMsIHNvIHRoZXkgYXJlIGxpa2VseSBlbnRyeXBvaW50cyB3aXRoaW4gdGhhdCBjb250ZXh0LgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgdmlzaWJsZSBzeW1ib2xzIGFuZCBlbnRyeXBvaW50cyByZWxhdGVkIHRvIHFkaXNjIG9wZXJhdGlvbnMuIEZyb20gdGhlIGBxZGlzYyBvcHNgIHN0cnVjdHMsIEkgY2FuIHNlZSB0aGVzZSBrZXkgZnVuY3Rpb25zIGFyZSByZWdpc3RlcmVkOiBgZHJyX2NoYW5nZV9jbGFzc2AsIGBkdWFscGkyX2NoYW5nZWAsIGBkdWFscGkyX2luaXRgLCBgZXRzX2NsYXNzX2NoYW5nZWAsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBwaWVfY2hhbmdlYCwgYHBpZV9pbml0YCwgYHBpZV9kcm9wX2Vhcmx5YCwgYHNmcV9jaGFuZ2VgLCBhbmQgYHNmcV9pbml0YC4KClRpbWUgdG8gc2VsZWN0IHRoZSBrZXkgc3ltYm9scyBmb3IgdGhlIGZ1enppbmcgY2FtcGFpZ24sIGZvY3VzaW5nIG9uIHRoZSBjcml0aWNhbCBub24taG90cGF0aCBmdW5jdGlvbnMuIFRoYXQgbWVhbnM6IGBwaWVfZHJvcF9lYXJseWAsIGBkcnJfY2hhbmdlX2NsYXNzYCwgYGR1YWxwaTJfY2hhbmdlYCwgYGR1YWxwaTJfaW5pdGAsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBwaWVfY2hhbmdlYCwgYW5kIGBzZnFfY2hhbmdlYC4KCk5vdywgdGhlIGZpbmFsIHN0YWdlIGlzIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyBhbmQgYXNzZXNzICYjMzQ7V29ydGhGdXp6aW5nLiYjMzQ7IEdpdmVuIHRoYXQgdGhpcyBpbnZvbHZlcyBjaGFuZ2VzIHRvIHF1YW50dW0gY2FsY3VsYXRpb24sIGJvdW5kcyBjaGVja2luZyBhY3Jvc3MgZWlnaHQgZGlmZmVyZW50IG5ldHdvcmsgcGFja2V0IHNjaGVkdWxlcnMsIGFuZCBhbHRlcmF0aW9ucyB0byBxdWV1aW5nL2Ryb3AgYmVoYXZpb3IgYWxvbmcgd2l0aCBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIG91ciB0aW1lLgoKQmFzZWQgb24gdGhhdCwgSSYjMzk7bGwgaWRlbnRpZnkgYW5kIGVuYWJsZSBhbGwgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZzogYE5FVF9TQ0hFRGAsIGBORVRfU0NIX0RSUmAsIGBORVRfU0NIX0RVQUxQSTJgLCBgTkVUX1NDSF9FVFNgLCBgTkVUX1NDSF9GUWAsIGBORVRfU0NIX0ZRX1BJRWAsIGBORVRfU0NIX0hIRmAsIGBORVRfU0NIX1BJRWAsIGFuZCBgTkVUX1NDSF9TRlFgLiBGaW5hbGx5LCBpdCYjMzk7cyB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RSUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RVQUxQSTImIzM0OywKICAgICYjMzQ7TkVUX1NDSF9FVFMmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GUSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0hIRiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1NGUSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDssCiAgICAmIzM0O2Rycl9jaGFuZ2VfY2xhc3MmIzM0OywKICAgICYjMzQ7ZHVhbHBpMl9jaGFuZ2UmIzM0OywKICAgICYjMzQ7ZHVhbHBpMl9pbml0JiMzNDssCiAgICAmIzM0O2V0c19xZGlzY19jaGFuZ2UmIzM0OywKICAgICYjMzQ7ZnFfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2luaXQmIzM0OywKICAgICYjMzQ7ZnFfcGllX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfY2hhbmdlJiMzNDssCiAgICAmIzM0O2hoZl9pbml0JiMzNDssCiAgICAmIzM0O3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7c2ZxX2NoYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVhbnR1bSBhbmQgTVRVIGhhbmRsaW5nIC8gYm91bmRpbmcgbG9naWMgYWNyb3NzIG11bHRpcGxlIG5ldHdvcmsgcXVldWVpbmcgZGlzY2lwbGluZXMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSBpbiBuZXQvc2NoZWQvLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBxZGlzYyBpbml0aWFsaXphdGlvbiwgY29uZmlndXJhdGlvbiB2aWEgbmV0bGluayAocnRuZXRsaW5rL3RjKSwgYW5kIHBhY2tldCBkcm9wL3NjaGVkdWxpbmcgZGVjaXNpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9EUlImIzM0OywKICAgICYjMzQ7TkVUX1NDSF9EVUFMUEkyJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRVRTJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRlEmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GUV9QSUUmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9ISEYmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9QSUUmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9TRlEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaWVfZHJvcF9lYXJseSYjMzQ7LAogICAgJiMzNDtkcnJfY2hhbmdlX2NsYXNzJiMzNDssCiAgICAmIzM0O2R1YWxwaTJfY2hhbmdlJiMzNDssCiAgICAmIzM0O2R1YWxwaTJfaW5pdCYjMzQ7LAogICAgJiMzNDtldHNfcWRpc2NfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9pbml0JiMzNDssCiAgICAmIzM0O2ZxX3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfaW5pdCYjMzQ7LAogICAgJiMzNDtwaWVfY2hhbmdlJiMzNDssCiAgICAmIzM0O3NmcV9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1YW50dW0gYW5kIE1UVSBoYW5kbGluZyAvIGJvdW5kaW5nIGxvZ2ljIGFjcm9zcyBtdWx0aXBsZSBuZXR3b3JrIHF1ZXVlaW5nIGRpc2NpcGxpbmVzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgaW4gbmV0L3NjaGVkLy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcWRpc2MgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyYXRpb24gdmlhIG5ldGxpbmsgKHJ0bmV0bGluay90YyksIGFuZCBwYWNrZXQgZHJvcC9zY2hlZHVsaW5nIGRlY2lzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkanVzdHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYXJpdGhtZXRpYyBib3VuZHMgb24gcXVhbnR1bSBhbmQgTVRVIHBhcmFtZXRlcnMgYWNyb3NzIHZhcmlvdXMgbmV0d29yayBzY2hlZHVsZXJzIChEUlIsIER1YWxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgdXNpbmcgY2xhbXBpbmcgZnVuY3Rpb25zIChjbGFtcF90LCBtYXgpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIG1vZGlmeSwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSwgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgc3RydWN0dXJlIHBhZGRpbmcsIG9yIGRhdGEgdHJhbnNmZXJzIHRvIHVzZXJzcGFjZSB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkLCBhbmQgc3RhbmRhcmQgS0FTQU4vc2FuaXRpemVyIGJ1aWxkcyBhcmUgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWYzNjMyZDVhNTc3M2E0NTBjOTQ4NTkzNDg1ZjAyMzJlM2JhNTYwOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTA6MDQ6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuYwppbmRleCA5MWIxZWY4MjRhZmFmLi44NjIxZDA1N2VkZDlmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2Ryci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZHJyLmMKQEAgLTgyLDggJiM0Mzs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCwKIAkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtTcGVjaWZpZWQgRFJSIHF1YW50dW0gY2Fubm90IGJlIHplcm8mIzM0Oyk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQomIzQzOwkJcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBxdWFudHVtLCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCX0gZWxzZQotCQlxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CQlxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAKIAlpZiAoY2wgIT0gTlVMTCkgewogCQlpZiAodGNhW1RDQV9SQVRFXSkgewpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwppbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwpAQCAtMjA4LDkgJiM0MzsyMDgsMTEgQEAgc3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSkKIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCwKIAkJCQkJICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKQogewomIzQzOwl1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKJiM0MzsKIAlxLSZndDtjX3Byb3RlY3Rpb25fd2MgPSB3YzsKIAlxLSZndDtjX3Byb3RlY3Rpb25fd2wgPSBNQVhfV0MgLSB3YzsKLQlxLSZndDtjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKgomIzQzOwlxLSZndDtjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICoKIAkJKChpbnQpcS0mZ3Q7Y19wcm90ZWN0aW9uX3djIC0gKGludClxLSZndDtjX3Byb3RlY3Rpb25fd2wpOwogCWR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpOwogfQpAQCAtMjg1LDggJiM0MzsyODcsOSBAQCBzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsCiAJdTY0IGxvY2FsX2xfcHJvYjsKIAlib29sIG92ZXJsb2FkOwogCXUzMiBwcm9iOwomIzQzOwl1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKIAotCWlmIChzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICZsdDsgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKQomIzQzOwlpZiAoc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmbHQ7IDIgKiBtdHUpCiAJCXJldHVybiBmYWxzZTsKIAogCXByb2IgPSBSRUFEX09OQ0UocS0mZ3Q7cGkyX3Byb2IpOwpAQCAtNzEyLDcgJiM0Mzs3MTUsOCBAQCBzdGF0aWMgdTMyIGdldF9tZW1vcnlfbGltaXQoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsaW1pdCkKIAkvKiBBcHBseSBydWxlIG9mIHRodW1iLCBpLmUuLCBkb3VibGluZyB0aGUgcGFja2V0IGxlbmd0aCwKIAkgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuCiAJICovCi0JdTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpOwomIzQzOwl1NjQgbWVtbGltID0gbXVsX3UzMl91MzIobGltaXQsIDIgKiBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksCiYjNDM7CQkJCQkJICAgICAxLCAxICZsdDsmbHQ7IDIwKSk7CiAKIAlpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKQogCQlyZXR1cm4gVTMyX01BWDsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZXRzLmMgYi9uZXQvc2NoZWQvc2NoX2V0cy5jCmluZGV4IDI1ZmNmNDA3OWZlY2UuLjZjYzkwMmEwMzgzODcgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9ldHMuYwpAQCAtODMsMTEgJiM0Mzs4Myw3IEBAIHN0YXRpYyBpbnQgZXRzX3F1YW50dW1fcGFyc2Uoc3RydWN0IFFkaXNjICpzY2gsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJCQkgICAgIHVuc2lnbmVkIGludCAqcXVhbnR1bSwKIAkJCSAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewotCSpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7Ci0JaWYgKCEqcXVhbnR1bSkgewotCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7RVRTIHF1YW50dW0gY2Fubm90IGJlIHplcm8mIzM0Oyk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KJiM0MzsJKnF1YW50dW0gPSBjbGFtcF90KHUzMiwgbmxhX2dldF91MzIoYXR0ciksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTYzMiwxMSAmIzQzOzYyOCwxMyBAQCBzdGF0aWMgaW50IGV0c19xZGlzY19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCXJldHVybiBlcnI7CiAJfQogCS8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICYjNDM7IHF1YW50YSBwcm92aWRlZCwgdGhlIHJlbWFpbmluZwotCSAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgTVRVLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nIHZhbHVlcyBoZXJlLgomIzQzOwkgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIG1heChNVFUsIDI1NikuIEluaXRpYWxpemUgdGhlIG1pc3NpbmcKJiM0MzsJICogdmFsdWVzIGhlcmUuCiAJICovCiAJZm9yIChpID0gbnN0cmljdDsgaSAmbHQ7IG5iYW5kczsgaSYjNDM7JiM0MzspIHsKIAkJaWYgKCFxdWFudGFbaV0pCi0JCQlxdWFudGFbaV0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsKJiM0MzsJCQlxdWFudGFbaV0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwKJiM0MzsJCQkJCSAgICAyNTYsIDEgJmx0OyZsdDsgMjApOwogCX0KIAogCS8qIEJlZm9yZSBjb21taXQsIG1ha2Ugc3VyZSB3ZSBjYW4gYWxsb2NhdGUgYWxsIG5ldyBxZGlzY3MgKi8KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnEuYyBiL25ldC9zY2hlZC9zY2hfZnEuYwppbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2ZxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9mcS5jCkBAIC05ODAsNyAmIzQzOzk4MCw3IEBAIHN0YXRpYyBpbnQgZnFfcmVzaXplKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgbG9nKQogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbiBpcV9yYW5nZSA9IHsKLQkubWF4ID0gSU5UX01BWCwKJiM0MzsJLm1heCA9IDEgJmx0OyZsdDsgMjAsCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggJiM0MzsgMV0gPSB7CkBAIC0xMTA2LDE0ICYjNDM7MTEwNiwxMCBAQCBzdGF0aWMgaW50IGZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQkJICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpOwogCiAJaWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkgewotCQl1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7CiYjNDM7CQl1MzIgcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pLAomIzQzOwkJCQkgICAgIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAKLQkJaWYgKHF1YW50dW0gJmd0OyAwICZhbXA7JmFtcDsgcXVhbnR1bSAmbHQ7PSAoMSAmbHQ7Jmx0OyAyMCkpIHsKLQkJCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwgcXVhbnR1bSk7Ci0JCX0gZWxzZSB7Ci0JCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O2ludmFsaWQgcXVhbnR1bSYjMzQ7KTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCX0KJiM0MzsJCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwgcXVhbnR1bSk7CiAJfQogCiAJaWYgKHRiW1RDQV9GUV9JTklUSUFMX1FVQU5UVU1dKQpAQCAtMTIzMiw3ICYjNDM7MTIyOCw3IEBAIHN0YXRpYyBpbnQgZnFfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCXNjaC0mZ3Q7bGltaXQJCT0gMTAwMDA7CiAJcS0mZ3Q7Zmxvd19wbGltaXQJCT0gMTAwOwogCW10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSAmbHQ7Jmx0OyAyMCk7Ci0JcS0mZ3Q7cXVhbnR1bQkJPSBtaW5fdCh1MzIsIDIgKiBtdHUsIDEgJmx0OyZsdDsgMjApOwomIzQzOwlxLSZndDtxdWFudHVtCQk9IGNsYW1wX3QodTMyLCAyICogbXR1LCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCXEtJmd0O2luaXRpYWxfcXVhbnR1bQk9IG1pbl90KHUzMiwgMTAgKiBtdHUsIDEgJmx0OyZsdDsgMjApOwogCXEtJmd0O2Zsb3dfcmVmaWxsX2RlbGF5CT0gbXNlY3NfdG9famlmZmllcyg0MCk7CiAJcS0mZ3Q7Zmxvd19tYXhfcmF0ZQk9IH4wVUw7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuYwppbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZnFfcGllLmMKQEAgLTM0MSw3ICYjNDM7MzQxLDggQEAgc3RhdGljIGludCBmcV9waWVfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCQkgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7CiAKIAlpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkKLQkJV1JJVEVfT05DRShxLSZndDtxdWFudHVtLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSk7CiYjNDM7CQlXUklURV9PTkNFKHEtJmd0O3F1YW50dW0sCiYjNDM7CQkJICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7CiAKIAlpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKQogCQlXUklURV9PTkNFKHEtJmd0O21lbW9yeV9saW1pdCwKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jCmluZGV4IDk2YWNhYjZhOGRhMDMuLmZjNzJmODI1ZmJkOTIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfaGhmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9oaGYuYwpAQCAtNTUxLDcgJiM0Mzs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJcmV0dXJuIGVycjsKIAogCWlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKQotCQluZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pOwomIzQzOwkJbmV3X3F1YW50dW0gPSBtYXgoMjU2VSwgbmxhX2dldF91MzIodGJbVENBX0hIRl9RVUFOVFVNXSkpOwogCiAJaWYgKHRiW1RDQV9ISEZfTk9OX0hIX1dFSUdIVF0pCiAJCW5ld19oaGZfbm9uX2hoX3dlaWdodCA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfTk9OX0hIX1dFSUdIVF0pOwpAQCAtNjEzLDcgJiM0Mzs2MTMsNyBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJaW50IGk7CiAKIAlzY2gtJmd0O2xpbWl0ID0gMTAwMDsKLQlxLSZndDtxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CXEtJmd0O3F1YW50dW0gPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJZ2V0X3JhbmRvbV9ieXRlcygmYW1wO3EtJmd0O3BlcnR1cmJhdGlvbiwgc2l6ZW9mKHEtJmd0O3BlcnR1cmJhdGlvbikpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7cS0mZ3Q7bmV3X2J1Y2tldHMpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7cS0mZ3Q7b2xkX2J1Y2tldHMpOwpAQCAtNjI0LDEwICYjNDM7NjI0LDYgQEAgc3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCXEtJmd0O2hoZl9ldmljdF90aW1lb3V0ID0gSFo7ICAgICAgLyogMSAgc2VjICovCiAJcS0mZ3Q7aGhmX25vbl9oaF93ZWlnaHQgPSAyOwogCi0JaWYgKChpbnQpcS0mZ3Q7cXVhbnR1bSAmbHQ7PSAwIHx8Ci0JICAgICh1NjQpcS0mZ3Q7cXVhbnR1bSAqIHEtJmd0O2hoZl9ub25faGhfd2VpZ2h0ICZndDsgSU5UX01BWCkKLQkJcS0mZ3Q7cXVhbnR1bSA9IDI1NjsKLQogCWlmIChvcHQpIHsKIAkJaW50IGVyciA9IGhoZl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7CiAKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGllLmMgYi9uZXQvc2NoZWQvc2NoX3BpZS5jCmluZGV4IGI0MWYyZGVmMmUyY2MuLjNiNzg2M2ZmZDI4NGMgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9waWUuYwpAQCAtMzUsNyAmIzQzOzM1LDcgQEAgYm9vbCBwaWVfZHJvcF9lYXJseShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHBpZV9wYXJhbXMgKnBhcmFtcywKIHsKIAl1NjQgcm5kOwogCXU2NCBsb2NhbF9wcm9iID0gdmFycy0mZ3Q7cHJvYjsKLQl1MzIgbXR1ID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CXUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgJmx0OyZsdDsgMjApOwogCiAJLyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqLwogCWlmICh2YXJzLSZndDtidXJzdF90aW1lICZndDsgMCkKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfc2ZxLmMgYi9uZXQvc2NoZWQvc2NoX3NmcS5jCmluZGV4IDE4N2QzZWQ1NzhmMjYuLjhiYmNmYzllODVkOTQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9zZnEuYwpAQCAtNjYwLDYgJiM0Mzs2NjAsMTEgQEAgc3RhdGljIGludCBzZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAomIzQzOwlpZiAoY3RsLSZndDtxdWFudHVtICZndDsgMSAmbHQ7Jmx0OyAyMCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtxdWFudHVtIHRvbyBsYXJnZSYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJaWYgKGN0bC0mZ3Q7cGVydHVyYl9wZXJpb2QgJmx0OyAwIHx8CiAJICAgIGN0bC0mZ3Q7cGVydHVyYl9wZXJpb2QgJmd0OyBJTlRfTUFYIC8gSFopIHsKIAkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtpbnZhbGlkIHBlcnR1cmIgcGVyaW9kJiMzNDspOwpAQCAtNjg4LDcgJiM0Mzs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAogCS8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqLwogCWlmIChjdGwtJmd0O3F1YW50dW0pCi0JCXF1YW50dW0gPSBjdGwtJmd0O3F1YW50dW07CiYjNDM7CQlxdWFudHVtID0gbWF4KDI1NlUsIGN0bC0mZ3Q7cXVhbnR1bSk7CiAJaWYgKGN0bC0mZ3Q7Zmxvd3MpCiAJCW1heGZsb3dzID0gbWluX3QodTMyLCBjdGwtJmd0O2Zsb3dzLCBTRlFfTUFYX0ZMT1dTKTsKIAlpZiAoY3RsLSZndDtkaXZpc29yKSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uCmluZGV4IGVlMDllNmQ2ZmRmM2MuLmQyZWFiNjFjMDk5YTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uCkBAIC05ODcsNyAmIzQzOzk4Nyw3IEBACiAgICAgfSwKICAgICB7CiAgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDs0MWY1JiMzNDssCi0gICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0VUUyBvZmZsb2FkIHdoZXJlIHRoZSBzdW0gb2YgcXVhbnRhIHdyYXBzIHUzMiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7RVRTIG9mZmxvYWQgd2l0aCBvdXQtb2YtcmFuZ2UgcXVhbnRhIGNsYW1wZWQmIzM0OywKICAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiAgICAgICAgICAgICAmIzM0O3FkaXNjJiMzNDssCiAgICAgICAgICAgICAmIzM0O2V0cyYjMzQ7CkBAIC0xMDAyLDcgJiM0MzsxMDAyLDcgQEAKICAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgZXRzIHF1YW50YSA0Mjk0OTY3Mjk0IDEgMSYjMzQ7LAogICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAogICAgICAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyBxZGlzYyBzaG93IGRldiAkRVRIJiMzNDssCi0gICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7cWRpc2MgZXRzIC4qYmFuZHMgMyBxdWFudGEgNDI5NDk2NzI5NCAxIDEmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7cWRpc2MgZXRzIC4qYmFuZHMgMyBxdWFudGEgMTA0ODU3NiAyNTYgMjU2JiMzNDssCiAgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKICAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiAgICAgICAgICAgICAmIzM0O2VjaG8gXCYjMzQ7MVwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlJiMzNDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NTAKCQkJCQkJCW91dHB1dDogMTQyCgkJCQkJCQl0aG91Z2h0czogMTIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBBc3Nlc3NtZW50OiBUaGlzIFBhdGNoIGlzIENsZWFuKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IEtNU0FOIGlzbiYjMzk7dCBuZWVkZWQgaGVyZSwgYnV0IGxldCYjMzk7cyB3YWxrIHRocm91Z2ggdGhlIGRldGFpbHMuIFRoaXMgcGF0Y2ggdG91Y2hlcyBzZXZlcmFsIG5ldC9zY2hlZCBxZGlzY3Mg4oCTIHNjaF9kcnIuYywgc2NoX2R1YWxwaTIuYywgc2NoX2V0cy5jLCBzY2hfZnEuYywgc2NoX2ZxX3BpZS5jLCBzY2hfaGhmLmMsIHNjaF9waWUuYywgYW5kIHNjaF9zZnEuYy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgY2xhbXBpbmcgb3Igc2FuaXRpemluZyB0aGUgYHF1YW50dW1gIGFuZCBgbXR1YCB2YWx1ZXMgdXNlZCB3aXRoaW4gdGhlc2Ugc2NoZWR1bGVycy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgaW5wdXQgdmFsaWRhdGlvbiBtb3JlIHRoYW4gYW55dGhpbmcgZWxzZS4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZToKCiogICBXZSYjMzk7cmUgZW5mb3JjaW5nIHNlbnNpYmxlIHJhbmdlcyBmb3IgYHF1YW50dW1gIGFuZCBgbXR1YCB1c2luZyBgY2xhbXBfdGAgYW5kIGBtYXhgIG1hY3Jvcy4gRm9yIGV4YW1wbGUsIGVuc3VyaW5nIGBxdWFudHVtYCBpcyBiZXR3ZWVuIDI1NiBhbmQgMSAmbHQ7Jmx0OyAyMCAodGhhdCBpcywgMSBNQikuIFRoZXNlIHZhbHVlcyBhcmUgYmVpbmcgYXBwbGllZCBpbiBtdWx0aXBsZSBmaWxlcyBhbmQgZnVuY3Rpb25zIGxpa2UgYGRycl9jaGFuZ2VfY2xhc3NgLCBgZXRzX3F1YW50dW1fcGFyc2VgLCBgZnFfaW5pdGAgYW5kIGBoaGZfY2hhbmdlYC4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBpcyB0aGVyZSBhbnkgY2hhbmNlIHRoaXMgaW50cm9kdWNlcyBvciBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcz8gSSBuZWVkIHRvIGFuYWx5emUgZm9yIHRob3NlIHJpc2tzLgoKMS4gICoqS2VybmVsIHN0cnVjdHMgdG8gdXNlcnNwYWNlPyoqIE5vcGUsIHRoaXMgZG9lc24mIzM5O3QgYWRkIG9yIG1vZGlmeSBhbnkgc3RydWN0cyBzZW50IHRvIHVzZXJzcGFjZSwgbm9yIGRvZXMgaXQgbGVhdmUgZmllbGRzIHVuaW5pdGlhbGl6ZWQgdGhhdCBhcmUgcmV0dXJuZWQuCgoyLiAgKipDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8qKiBObywgdGhlIGxvZ2ljIGxvb2tzIHNvdW5kLCBhbmQgdGhlcmUmIzM5O3Mgbm8gZXZpZGVuY2Ugb2YgZGVjaXNpb25zIGJlaW5nIG1hZGUgYmFzZWQgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YWx1ZXMuCgozLiAgKipDb21wbGV4IGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uPyoqIE5vdGhpbmcgbmV3IGlzIGJlaW5nIGFsbG9jYXRlZCwgc28gdGhhdCYjMzk7cyBub3QgYSBjb25jZXJuLgoKNC4gICoqQm91bmRzIGNoZWNrcyBvciBsZW5ndGggbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhPyoqIFRoaXMgaXMgc3RyaWN0bHkgcGFyYW1ldGVyIGNsYW1waW5nLCB3aGljaCBpcyB0aGUgb3Bwb3NpdGUgb2YgdGhlIGlzc3VlLgoKVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGZvY3VzZWQgb24gYXJpdGhtZXRpYyBjbGFtcGluZyBvZiBwYXJhbWV0ZXJzIHBhc3NlZCB2aWEgbmV0bGluaywgd2hpY2ggYXJlIHJlYWQgZnJvbSB0aGUgZGV2aWNlIE1UVS4gVGhpcyBpcyBhYm91dCBwcmV2ZW50aW5nIGludGVnZXIgb3ZlcmZsb3dzLCBkaXZpc2lvbiBieSB6ZXJvLCBvciBzaW1wbHkgZXhjZXNzaXZlbHkgbGFyZ2Uvc21hbGwgYHF1YW50dW1gIHZhbHVlcyB0aGF0IGNvdWxkIGxlYWQgdG8gc2NoZWR1bGluZyBpc3N1ZXMgKGxpa2UgaGFuZ3Mgb3Igb3ZlcmZsb3dzLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkpLgoKVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCBzb21lIGtleSBmdW5jdGlvbnMgKGBkcnJfY2hhbmdlX2NsYXNzYCwgYGV0c19xdWFudHVtX3BhcnNlYCwgYGZxX2luaXRgLCBhbmQgYGhoZl9jaGFuZ2VgKS4gSW4gZWFjaCBjYXNlLCBpdCYjMzk7cyBjbGVhciB0aGF0IHRoZSB2YXJpYWJsZXMgKGxpa2UgYHF1YW50dW1gKSBhcmUgKmFsd2F5cyogaW5pdGlhbGl6ZWQsIGVpdGhlciBkaXJlY3RseSBvciB0aHJvdWdoIHRoZSBjbGFtcGluZyBtZWNoYW5pc20uIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHNpbXBsZSBzY2FsYXIgdmFsdWVzLCBub3QgY29tcGxleCBhbGxvY2F0aW9ucyBvciBtZW1vcnkgbWFuYWdlbWVudC4KClNvLCBhZnRlciB0aGlzIGRlZXBlciBkaXZlLCBJJiMzOTttIGNvbmZpZGVudC4gTmVlZHNLTVNBTiA9IGZhbHNlLiBJJiMzOTttIHJlYWR5IHRvIGNhbGwgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRqdXN0cyBpbnB1dCB2YWxpZGF0aW9uIGFuZCBhcml0aG1ldGljIGJvdW5kcyBvbiBxdWFudHVtIGFuZCBNVFUgcGFyYW1ldGVycyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIHNjaGVkdWxlcnMgKERSUiwgRHVhbFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSB1c2luZyBjbGFtcGluZyBmdW5jdGlvbnMgKGNsYW1wX3QsIG1heCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgZGF0YSB0cmFuc2ZlcnMgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQsIGFuZCBzdGFuZGFyZCBLQVNBTi9zYW5pdGl6ZXIgYnVpbGRzIGFyZSBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRqdXN0cyBpbnB1dCB2YWxpZGF0aW9uIGFuZCBhcml0aG1ldGljIGJvdW5kcyBvbiBxdWFudHVtIGFuZCBNVFUgcGFyYW1ldGVycyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIHNjaGVkdWxlcnMgKERSUiwgRHVhbFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSB1c2luZyBjbGFtcGluZyBmdW5jdGlvbnMgKGNsYW1wX3QsIG1heCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgZGF0YSB0cmFuc2ZlcnMgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQsIGFuZCBzdGFuZGFyZCBLQVNBTi9zYW5pdGl6ZXIgYnVpbGRzIGFyZSBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNDozOS45OTcxNjQ2MDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODY4NjY0NDQ1MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX0RSUlwiLFxuICAgIFwiTkVUX1NDSF9EVUFMUEkyXCIsXG4gICAgXCJORVRfU0NIX0VUU1wiLFxuICAgIFwiTkVUX1NDSF9GUVwiLFxuICAgIFwiTkVUX1NDSF9GUV9QSUVcIixcbiAgICBcIk5FVF9TQ0hfSEhGXCIsXG4gICAgXCJORVRfU0NIX1BJRVwiLFxuICAgIFwiTkVUX1NDSF9TRlFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaWVfZHJvcF9lYXJseVwiLFxuICAgIFwiZHJyX2NoYW5nZV9jbGFzc1wiLFxuICAgIFwiZHVhbHBpMl9jaGFuZ2VcIixcbiAgICBcImR1YWxwaTJfaW5pdFwiLFxuICAgIFwiZXRzX3FkaXNjX2NoYW5nZVwiLFxuICAgIFwiZnFfY2hhbmdlXCIsXG4gICAgXCJmcV9pbml0XCIsXG4gICAgXCJmcV9waWVfY2hhbmdlXCIsXG4gICAgXCJoaGZfY2hhbmdlXCIsXG4gICAgXCJoaGZfaW5pdFwiLFxuICAgIFwicGllX2NoYW5nZVwiLFxuICAgIFwic2ZxX2NoYW5nZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRqdXN0cyBpbnB1dCB2YWxpZGF0aW9uIGFuZCBhcml0aG1ldGljIGJvdW5kcyBvbiBxdWFudHVtIGFuZCBNVFUgcGFyYW1ldGVycyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIHNjaGVkdWxlcnMgKERSUiwgRHVhbFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSB1c2luZyBjbGFtcGluZyBmdW5jdGlvbnMgKGNsYW1wX3QsIG1heCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgZGF0YSB0cmFuc2ZlcnMgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQsIGFuZCBzdGFuZGFyZCBLQVNBTi9zYW5pdGl6ZXIgYnVpbGRzIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxdWFudHVtIGFuZCBNVFUgaGFuZGxpbmcgLyBib3VuZGluZyBsb2dpYyBhY3Jvc3MgbXVsdGlwbGUgbmV0d29yayBxdWV1ZWluZyBkaXNjaXBsaW5lcyAoRFJSLCBEVUFMUEkyLCBFVFMsIEZRLCBGUS1QSUUsIEhIRiwgUElFLCBTRlEpIGluIG5ldC9zY2hlZC8uIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHFkaXNjIGluaXRpYWxpemF0aW9uLCBjb25maWd1cmF0aW9uIHZpYSBuZXRsaW5rIChydG5ldGxpbmsvdGMpLCBhbmQgcGFja2V0IGRyb3Avc2NoZWR1bGluZyBkZWNpc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA0OjM5Ljk5NzE3MDE0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE5Mjk1MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMWYzNjMyZDVhNTc3M2E0NTBjOTQ4NTkzNDg1ZjAyMzJlM2JhNTYwOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDEwOjA0OjM5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHJyLmMgYi9uZXQvc2NoZWQvc2NoX2Ryci5jXFxuaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2Ryci5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xcbkBAIC04Miw4ICs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcXG4gXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiU3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXFxcIik7XFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHR9XFxuK1xcdFxcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFx0fSBlbHNlXFxuLVxcdFxcdHF1YW50dW0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTtcXG4rXFx0XFx0cXVhbnR1bSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXG4gXFx0aWYgKGNsICE9IE5VTEwpIHtcXG4gXFx0XFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xcbmluZGV4IDRmNjc4ZDRmZjEwZWMuLjQ5NDdkZWY3YzQ5ZWYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xcbkBAIC0yMDgsOSArMjA4LDExIEBAIHN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXFxuIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxcbiB7XFxuK1xcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbitcXG4gXFx0cS1cXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XFxuIFxcdHEtXFx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xcbi1cXHRxLVxcdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxcbitcXHRxLVxcdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICpcXG4gXFx0XFx0KChpbnQpcS1cXHUwMDNlY19wcm90ZWN0aW9uX3djIC0gKGludClxLVxcdTAwM2VjX3Byb3RlY3Rpb25fd2wpO1xcbiBcXHRkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihxKTtcXG4gfVxcbkBAIC0yODUsOCArMjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxcbiBcXHR1NjQgbG9jYWxfbF9wcm9iO1xcbiBcXHRib29sIG92ZXJsb2FkO1xcbiBcXHR1MzIgcHJvYjtcXG4rXFx0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuIFxcbi1cXHRpZiAoc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyBcXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcXG4rXFx0aWYgKHNjaC1cXHUwMDNlcXN0YXRzLmJhY2tsb2cgXFx1MDAzYyAyICogbXR1KVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbiBcXHRwcm9iID0gUkVBRF9PTkNFKHEtXFx1MDAzZXBpMl9wcm9iKTtcXG5AQCAtNzEyLDcgKzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxcbiBcXHQvKiBBcHBseSBydWxlIG9mIHRodW1iLCBpLmUuLCBkb3VibGluZyB0aGUgcGFja2V0IGxlbmd0aCxcXG4gXFx0ICogdG8gZnVydGhlciBpbmNsdWRlIHBlciBwYWNrZXQgb3ZlcmhlYWQgaW4gbWVtb3J5X2xpbWl0LlxcbiBcXHQgKi9cXG4tXFx0dTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpO1xcbitcXHR1NjQgbWVtbGltID0gbXVsX3UzMl91MzIobGltaXQsIDIgKiBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgMSwgMSBcXHUwMDNjXFx1MDAzYyAyMCkpO1xcbiBcXG4gXFx0aWYgKHVwcGVyXzMyX2JpdHMobWVtbGltKSlcXG4gXFx0XFx0cmV0dXJuIFUzMl9NQVg7XFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZXRzLmMgYi9uZXQvc2NoZWQvc2NoX2V0cy5jXFxuaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2V0cy5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xcbkBAIC04MywxMSArODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbiBcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCAqcXVhbnR1bSxcXG4gXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG4tXFx0KnF1YW50dW0gPSBubGFfZ2V0X3UzMihhdHRyKTtcXG4tXFx0aWYgKCEqcXVhbnR1bSkge1xcbi1cXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1xcXCIpO1xcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFx0fVxcbitcXHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTYzMiwxMSArNjI4LDEzIEBAIHN0YXRpYyBpbnQgZXRzX3FkaXNjX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHR9XFxuIFxcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nXFxuLVxcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgTVRVLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nIHZhbHVlcyBoZXJlLlxcbitcXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIG1heChNVFUsIDI1NikuIEluaXRpYWxpemUgdGhlIG1pc3NpbmdcXG4rXFx0ICogdmFsdWVzIGhlcmUuXFxuIFxcdCAqL1xcbiBcXHRmb3IgKGkgPSBuc3RyaWN0OyBpIFxcdTAwM2MgbmJhbmRzOyBpKyspIHtcXG4gXFx0XFx0aWYgKCFxdWFudGFbaV0pXFxuLVxcdFxcdFxcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xcbitcXHRcXHRcXHRxdWFudGFbaV0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIDI1NiwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuIFxcdH1cXG4gXFxuIFxcdC8qIEJlZm9yZSBjb21taXQsIG1ha2Ugc3VyZSB3ZSBjYW4gYWxsb2NhdGUgYWxsIG5ldyBxZGlzY3MgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jXFxuaW5kZXggNjE0NGI1Njg2ZjEzZi4uMzVmOTQwYjIyMDVkZiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2ZxLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcXG5AQCAtOTgwLDcgKzk4MCw3IEBAIHN0YXRpYyBpbnQgZnFfcmVzaXplKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgbG9nKVxcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbiBpcV9yYW5nZSA9IHtcXG4tXFx0Lm1heCA9IElOVF9NQVgsXFxuK1xcdC5tYXggPSAxIFxcdTAwM2NcXHUwMDNjIDIwLFxcbiB9O1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGZxX3BvbGljeVtUQ0FfRlFfTUFYICsgMV0gPSB7XFxuQEAgLTExMDYsMTQgKzExMDYsMTAgQEAgc3RhdGljIGludCBmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0XFx0XFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xcbiBcXG4gXFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xcbi1cXHRcXHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XFxuK1xcdFxcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXFxuK1xcdFxcdFxcdFxcdCAgICAgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFxuLVxcdFxcdGlmIChxdWFudHVtIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBxdWFudHVtIFxcdTAwM2M9ICgxIFxcdTAwM2NcXHUwMDNjIDIwKSkge1xcbi1cXHRcXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZXF1YW50dW0sIHF1YW50dW0pO1xcbi1cXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiaW52YWxpZCBxdWFudHVtXFxcIik7XFxuLVxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuLVxcdFxcdH1cXG4rXFx0XFx0V1JJVEVfT05DRShxLVxcdTAwM2VxdWFudHVtLCBxdWFudHVtKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKHRiW1RDQV9GUV9JTklUSUFMX1FVQU5UVU1dKVxcbkBAIC0xMjMyLDcgKzEyMjgsNyBAQCBzdGF0aWMgaW50IGZxX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0c2NoLVxcdTAwM2VsaW1pdFxcdFxcdD0gMTAwMDA7XFxuIFxcdHEtXFx1MDAzZWZsb3dfcGxpbWl0XFx0XFx0PSAxMDA7XFxuIFxcdG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuLVxcdHEtXFx1MDAzZXF1YW50dW1cXHRcXHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuK1xcdHEtXFx1MDAzZXF1YW50dW1cXHRcXHQ9IGNsYW1wX3QodTMyLCAyICogbXR1LCAyNTYsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXHRxLVxcdTAwM2Vpbml0aWFsX3F1YW50dW1cXHQ9IG1pbl90KHUzMiwgMTAgKiBtdHUsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXHRxLVxcdTAwM2VmbG93X3JlZmlsbF9kZWxheVxcdD0gbXNlY3NfdG9famlmZmllcyg0MCk7XFxuIFxcdHEtXFx1MDAzZWZsb3dfbWF4X3JhdGVcXHQ9IH4wVUw7XFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXFxuaW5kZXggYjI3ZDk1NDE4NzA3YS4uNTk4Mjg0N2RmOGY4NSAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xcbkBAIC0zNDEsNyArMzQxLDggQEAgc3RhdGljIGludCBmcV9waWVfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdFxcdFxcdCAgIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfQkVUQV0pKTtcXG4gXFxuIFxcdGlmICh0YltUQ0FfRlFfUElFX1FVQU5UVU1dKVxcbi1cXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZXF1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTtcXG4rXFx0XFx0V1JJVEVfT05DRShxLVxcdTAwM2VxdWFudHVtLFxcbitcXHRcXHRcXHQgICBtYXgoMjU2VSwgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkpKTtcXG4gXFxuIFxcdGlmICh0YltUQ0FfRlFfUElFX01FTU9SWV9MSU1JVF0pXFxuIFxcdFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlbWVtb3J5X2xpbWl0LFxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2hoZi5jIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xcbmluZGV4IDk2YWNhYjZhOGRhMDMuLmZjNzJmODI1ZmJkOTIgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfaGhmLmNcXG5AQCAtNTUxLDcgKzU1MSw3IEBAIHN0YXRpYyBpbnQgaGhmX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4gXFx0aWYgKHRiW1RDQV9ISEZfUVVBTlRVTV0pXFxuLVxcdFxcdG5ld19xdWFudHVtID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9RVUFOVFVNXSk7XFxuK1xcdFxcdG5ld19xdWFudHVtID0gbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pKTtcXG4gXFxuIFxcdGlmICh0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKVxcbiBcXHRcXHRuZXdfaGhmX25vbl9oaF93ZWlnaHQgPSBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKTtcXG5AQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0aW50IGk7XFxuIFxcbiBcXHRzY2gtXFx1MDAzZWxpbWl0ID0gMTAwMDtcXG4tXFx0cS1cXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xcbitcXHRxLVxcdTAwM2VxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXHRnZXRfcmFuZG9tX2J5dGVzKFxcdTAwMjZxLVxcdTAwM2VwZXJ0dXJiYXRpb24sIHNpemVvZihxLVxcdTAwM2VwZXJ0dXJiYXRpb24pKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnEtXFx1MDAzZW5ld19idWNrZXRzKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnEtXFx1MDAzZW9sZF9idWNrZXRzKTtcXG5AQCAtNjI0LDEwICs2MjQsNiBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdHEtXFx1MDAzZWhoZl9ldmljdF90aW1lb3V0ID0gSFo7ICAgICAgLyogMSAgc2VjICovXFxuIFxcdHEtXFx1MDAzZWhoZl9ub25faGhfd2VpZ2h0ID0gMjtcXG4gXFxuLVxcdGlmICgoaW50KXEtXFx1MDAzZXF1YW50dW0gXFx1MDAzYz0gMCB8fFxcbi1cXHQgICAgKHU2NClxLVxcdTAwM2VxdWFudHVtICogcS1cXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgXFx1MDAzZSBJTlRfTUFYKVxcbi1cXHRcXHRxLVxcdTAwM2VxdWFudHVtID0gMjU2O1xcbi1cXG4gXFx0aWYgKG9wdCkge1xcbiBcXHRcXHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGllLmMgYi9uZXQvc2NoZWQvc2NoX3BpZS5jXFxuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX3BpZS5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xcbkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXFxuIHtcXG4gXFx0dTY0IHJuZDtcXG4gXFx0dTY0IGxvY2FsX3Byb2IgPSB2YXJzLVxcdTAwM2Vwcm9iO1xcbi1cXHR1MzIgbXR1ID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7XFxuK1xcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXG4gXFx0LyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqL1xcbiBcXHRpZiAodmFycy1cXHUwMDNlYnVyc3RfdGltZSBcXHUwMDNlIDApXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfc2ZxLmMgYi9uZXQvc2NoZWQvc2NoX3NmcS5jXFxuaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX3NmcS5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xcbkBAIC02NjAsNiArNjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKGN0bC1cXHUwMDNlcXVhbnR1bSBcXHUwMDNlIDEgXFx1MDAzY1xcdTAwM2MgMjApIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcInF1YW50dW0gdG9vIGxhcmdlXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoY3RsLVxcdTAwM2VwZXJ0dXJiX3BlcmlvZCBcXHUwMDNjIDAgfHxcXG4gXFx0ICAgIGN0bC1cXHUwMDNlcGVydHVyYl9wZXJpb2QgXFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcImludmFsaWQgcGVydHVyYiBwZXJpb2RcXFwiKTtcXG5AQCAtNjg4LDcgKzY5Myw3IEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXG4gXFx0LyogdXBkYXRlIGFuZCB2YWxpZGF0ZSBjb25maWd1cmF0aW9uICovXFxuIFxcdGlmIChjdGwtXFx1MDAzZXF1YW50dW0pXFxuLVxcdFxcdHF1YW50dW0gPSBjdGwtXFx1MDAzZXF1YW50dW07XFxuK1xcdFxcdHF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLVxcdTAwM2VxdWFudHVtKTtcXG4gXFx0aWYgKGN0bC1cXHUwMDNlZmxvd3MpXFxuIFxcdFxcdG1heGZsb3dzID0gbWluX3QodTMyLCBjdGwtXFx1MDAzZWZsb3dzLCBTRlFfTUFYX0ZMT1dTKTtcXG4gXFx0aWYgKGN0bC1cXHUwMDNlZGl2aXNvcikge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXFxuaW5kZXggZWUwOWU2ZDZmZGYzYy4uZDJlYWI2MWMwOTlhOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvblxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXFxuQEAgLTk4Nyw3ICs5ODcsNyBAQFxcbiAgICAgfSxcXG4gICAgIHtcXG4gICAgICAgICBcXFwiaWRcXFwiOiBcXFwiNDFmNVxcXCIsXFxuLSAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwiRVRTIG9mZmxvYWQgd2hlcmUgdGhlIHN1bSBvZiBxdWFudGEgd3JhcHMgdTMyXFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJFVFMgb2ZmbG9hZCB3aXRoIG91dC1vZi1yYW5nZSBxdWFudGEgY2xhbXBlZFxcXCIsXFxuICAgICAgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbiAgICAgICAgICAgICBcXFwicWRpc2NcXFwiLFxcbiAgICAgICAgICAgICBcXFwiZXRzXFxcIlxcbkBAIC0xMDAyLDcgKzEwMDIsNyBAQFxcbiAgICAgICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGV0cyBxdWFudGEgNDI5NDk2NzI5NCAxIDFcXFwiLFxcbiAgICAgICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4gICAgICAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBxZGlzYyBzaG93IGRldiAkRVRIXFxcIixcXG4tICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcInFkaXNjIGV0cyAuKmJhbmRzIDMgcXVhbnRhIDQyOTQ5NjcyOTQgMSAxXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcInFkaXNjIGV0cyAuKmJhbmRzIDMgcXVhbnRhIDEwNDg1NzYgMjU2IDI1NlxcXCIsXFxuICAgICAgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuICAgICAgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbiAgICAgICAgICAgICBcXFwiZWNobyBcXFxcXFxcIjFcXFxcXFxcIiBcXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNDo0MC41MTc0MzczMTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE3ODQyNTI1ODgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfRFJSXCIsXG4gICAgXCJORVRfU0NIX0RVQUxQSTJcIixcbiAgICBcIk5FVF9TQ0hfRVRTXCIsXG4gICAgXCJORVRfU0NIX0ZRXCIsXG4gICAgXCJORVRfU0NIX0ZRX1BJRVwiLFxuICAgIFwiTkVUX1NDSF9ISEZcIixcbiAgICBcIk5FVF9TQ0hfUElFXCIsXG4gICAgXCJORVRfU0NIX1NGUVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBpZV9kcm9wX2Vhcmx5XCIsXG4gICAgXCJkcnJfY2hhbmdlX2NsYXNzXCIsXG4gICAgXCJkdWFscGkyX2NoYW5nZVwiLFxuICAgIFwiZHVhbHBpMl9pbml0XCIsXG4gICAgXCJldHNfcWRpc2NfY2hhbmdlXCIsXG4gICAgXCJmcV9jaGFuZ2VcIixcbiAgICBcImZxX2luaXRcIixcbiAgICBcImZxX3BpZV9jaGFuZ2VcIixcbiAgICBcImhoZl9jaGFuZ2VcIixcbiAgICBcImhoZl9pbml0XCIsXG4gICAgXCJwaWVfY2hhbmdlXCIsXG4gICAgXCJzZnFfY2hhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1YW50dW0gYW5kIE1UVSBoYW5kbGluZyAvIGJvdW5kaW5nIGxvZ2ljIGFjcm9zcyBtdWx0aXBsZSBuZXR3b3JrIHF1ZXVlaW5nIGRpc2NpcGxpbmVzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgaW4gbmV0L3NjaGVkLy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcWRpc2MgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyYXRpb24gdmlhIG5ldGxpbmsgKHJ0bmV0bGluay90YyksIGFuZCBwYWNrZXQgZHJvcC9zY2hlZHVsaW5nIGRlY2lzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWYzNjMyZDVhNTc3M2E0NTBjOTQ4NTkzNDg1ZjAyMzJlM2JhNTYwOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTA6MDQ6MzkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xuaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHJyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcbkBAIC04Miw4ICs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiU3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXCIpO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4rXHRcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9IGVsc2Vcbi1cdFx0cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0aWYgKGNsICE9IE5VTEwpIHtcbiBcdFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5AQCAtMjA4LDkgKzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKVxuIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxuIHtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbitcbiBcdHEtXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xuLVx0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxuK1x0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICpcbiBcdFx0KChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2MgLSAoaW50KXEtXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcbiBcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xuIH1cbkBAIC0yODUsOCArMjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuIFx0dTY0IGxvY2FsX2xfcHJvYjtcbiBcdGJvb2wgb3ZlcmxvYWQ7XG4gXHR1MzIgcHJvYjtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcbitcdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBtdHUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByb2IgPSBSRUFEX09OQ0UocS1cdTAwM2VwaTJfcHJvYik7XG5AQCAtNzEyLDcgKzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxuIFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXG4gXHQgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuXG4gXHQgKi9cbi1cdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcbitcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbitcdFx0XHRcdFx0XHQgICAgIDEsIDEgXHUwMDNjXHUwMDNjIDIwKSk7XG4gXG4gXHRpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKVxuIFx0XHRyZXR1cm4gVTMyX01BWDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xuaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcbkBAIC04MywxMSArODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxuIFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XG4tXHRpZiAoISpxdWFudHVtKSB7XG4tXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR9XG4rXHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjMyLDExICs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nXG4tXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS5cbitcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZ1xuK1x0ICogdmFsdWVzIGhlcmUuXG4gXHQgKi9cbiBcdGZvciAoaSA9IG5zdHJpY3Q7IGkgXHUwMDNjIG5iYW5kczsgaSsrKSB7XG4gXHRcdGlmICghcXVhbnRhW2ldKVxuLVx0XHRcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRcdHF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxuK1x0XHRcdFx0XHQgICAgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9XG4gXG4gXHQvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jXG5pbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcbkBAIC05ODAsNyArOTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0ge1xuLVx0Lm1heCA9IElOVF9NQVgsXG4rXHQubWF4ID0gMSBcdTAwM2NcdTAwM2MgMjAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggKyAxXSA9IHtcbkBAIC0xMTA2LDE0ICsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xuLVx0XHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XG4rXHRcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXG4rXHRcdFx0XHQgICAgIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuLVx0XHRpZiAocXVhbnR1bSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgcXVhbnR1bSBcdTAwM2M9ICgxIFx1MDAzY1x1MDAzYyAyMCkpIHtcbi1cdFx0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHF1YW50dW1cIik7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0fVxuK1x0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4gXHR9XG4gXG4gXHRpZiAodGJbVENBX0ZRX0lOSVRJQUxfUVVBTlRVTV0pXG5AQCAtMTIzMiw3ICsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzY2gtXHUwMDNlbGltaXRcdFx0PSAxMDAwMDtcbiBcdHEtXHUwMDNlZmxvd19wbGltaXRcdFx0PSAxMDA7XG4gXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbi1cdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuK1x0cS1cdTAwM2VxdWFudHVtXHRcdD0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2Vpbml0aWFsX3F1YW50dW1cdD0gbWluX3QodTMyLCAxMCAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2VmbG93X3JlZmlsbF9kZWxheVx0PSBtc2Vjc190b19qaWZmaWVzKDQwKTtcbiBcdHEtXHUwMDNlZmxvd19tYXhfcmF0ZVx0PSB+MFVMO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXG5pbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuQEAgLTM0MSw3ICszNDEsOCBAQCBzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSlcbi1cdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTtcbitcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sXG4rXHRcdFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxuIFx0XHRXUklURV9PTkNFKHEtXHUwMDNlbWVtb3J5X2xpbWl0LFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKVxuLVx0XHRuZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pO1xuK1x0XHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcbiBcdFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XG5AQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdGludCBpO1xuIFxuIFx0c2NoLVx1MDAzZWxpbWl0ID0gMTAwMDtcbi1cdHEtXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0cS1cdTAwM2VxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdGdldF9yYW5kb21fYnl0ZXMoXHUwMDI2cS1cdTAwM2VwZXJ0dXJiYXRpb24sIHNpemVvZihxLVx1MDAzZXBlcnR1cmJhdGlvbikpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cS1cdTAwM2VuZXdfYnVja2V0cyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxLVx1MDAzZW9sZF9idWNrZXRzKTtcbkBAIC02MjQsMTAgKzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHEtXHUwMDNlaGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi9cbiBcdHEtXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgPSAyO1xuIFxuLVx0aWYgKChpbnQpcS1cdTAwM2VxdWFudHVtIFx1MDAzYz0gMCB8fFxuLVx0ICAgICh1NjQpcS1cdTAwM2VxdWFudHVtICogcS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCBcdTAwM2UgSU5UX01BWClcbi1cdFx0cS1cdTAwM2VxdWFudHVtID0gMjU2O1xuLVxuIFx0aWYgKG9wdCkge1xuIFx0XHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfcGllLmNcbkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG4ge1xuIFx0dTY0IHJuZDtcbiBcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cdTAwM2Vwcm9iO1xuLVx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0LyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqL1xuIFx0aWYgKHZhcnMtXHUwMDNlYnVyc3RfdGltZSBcdTAwM2UgMClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xuaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcbkBAIC02NjAsNiArNjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSBcdTAwM2UgMSBcdTAwM2NcdTAwM2MgMjApIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJxdWFudHVtIHRvbyBsYXJnZVwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpZiAoY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzYyAwIHx8XG4gXHQgICAgY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHBlcnR1cmIgcGVyaW9kXCIpO1xuQEAgLTY4OCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xuIFx0aWYgKGN0bC1cdTAwM2VxdWFudHVtKVxuLVx0XHRxdWFudHVtID0gY3RsLVx1MDAzZXF1YW50dW07XG4rXHRcdHF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLVx1MDAzZXF1YW50dW0pO1xuIFx0aWYgKGN0bC1cdTAwM2VmbG93cylcbiBcdFx0bWF4Zmxvd3MgPSBtaW5fdCh1MzIsIGN0bC1cdTAwM2VmbG93cywgU0ZRX01BWF9GTE9XUyk7XG4gXHRpZiAoY3RsLVx1MDAzZWRpdmlzb3IpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXG5pbmRleCBlZTA5ZTZkNmZkZjNjLi5kMmVhYjYxYzA5OWE4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZXRzLmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXG5AQCAtOTg3LDcgKzk4Nyw3IEBAXG4gICAgIH0sXG4gICAgIHtcbiAgICAgICAgIFwiaWRcIjogXCI0MWY1XCIsXG4tICAgICAgICBcIm5hbWVcIjogXCJFVFMgb2ZmbG9hZCB3aGVyZSB0aGUgc3VtIG9mIHF1YW50YSB3cmFwcyB1MzJcIixcbisgICAgICAgIFwibmFtZVwiOiBcIkVUUyBvZmZsb2FkIHdpdGggb3V0LW9mLXJhbmdlIHF1YW50YSBjbGFtcGVkXCIsXG4gICAgICAgICBcImNhdGVnb3J5XCI6IFtcbiAgICAgICAgICAgICBcInFkaXNjXCIsXG4gICAgICAgICAgICAgXCJldHNcIlxuQEAgLTEwMDIsNyArMTAwMiw3IEBAXG4gICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBxZGlzYyBhZGQgZGV2ICRFVEggcm9vdCBldHMgcXVhbnRhIDQyOTQ5NjcyOTQgMSAxXCIsXG4gICAgICAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuICAgICAgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSFwiLFxuLSAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBldHMgLipiYW5kcyAzIHF1YW50YSA0Mjk0OTY3Mjk0IDEgMVwiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBldHMgLipiYW5kcyAzIHF1YW50YSAxMDQ4NTc2IDI1NiAyNTZcIixcbiAgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiZWNobyBcXFwiMVxcXCIgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXCJcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA0OjQwLjUxNzQzOTA2NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MzM0NjUyMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoIEZ1enppbmcgLSBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYSBidW5jaCBvZiBwYWNrZXQgc2NoZWR1bGVyIHFkaXNjcyBpbiBgbmV0L3NjaGVkL2AuIExldCBtZSBsaXN0IHRoZW06IGBzY2hfZHJyLmNgLCBgc2NoX2R1YWxwaTIuY2AsIGBzY2hfZXRzLmNgLCBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYCwgYHNjaF9oaGYuY2AsIGBzY2hfcGllLmNgLCBhbmQgYHNjaF9zZnEuY2AuIFBsdXMsIHRoZXJlIGFyZSBzb21lIHNlbGZ0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLi4uYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBldmVuIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCBpbnB1dCB2YWxpZGF0aW9uIG9yIGNsYW1waW5nIHBhcmFtZXRlcnMgcmVsYXRlZCB0byBxdWFudHVtIGFuZCBNVFUgaW4gdGhlIG1lbnRpb25lZCBxZGlzY3MuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBvciBqdXN0IHNvbWUgY29uc3RhbnQvdmFsaWRhdGlvbiB0d2Vha3M/XG5cbkxldCdzIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIHJ1bGVzLiBJdCBzYXlzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgaXQncyBqdXN0IGRvY3MsIEtjb25maWcsIGNvbW1lbnRzLCBsb2dnaW5nLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG9yIHR3ZWFrcyB0byBudW1lcmljIGNvbnN0YW50cy9tYWNyb3MgdGhhdCAqZG9uJ3QqIGFsdGVyIGV4ZWN1dGlvbiBmbG93LiBJdCBhbHNvIHNheXMgdG8gZXhjbHVkZSB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemF0aW9uLCBvciBzdHVmZiBzcGVjaWZpYyB0byBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkLiBJdCBhbHNvIGV4Y2x1ZGVzIGRyaXZlciByZW1vdmUgY2FsbGJhY2tzIGFuZCB0aGUgbGlrZS5cblxuV2FpdCwgdGhpcyAqZG9lcyogbW9kaWZ5IGNvcmUga2VybmVsIG5ldHdvcmtpbmcgbG9naWMhIEl0J3MgdG91Y2hpbmcgdGhlIHFkaXNjIGNvbmZpZ3VyYXRpb24gYW5kIHBhY2tldCBoYW5kbGluZy9zY2hlZHVsaW5nIHBhcnRzIG9mIHRoZSBjb2RlLiBXZSBhcmUgbG9va2luZyBhdCBmdW5jdGlvbnMgbGlrZSBgZHJyX2NoYW5nZV9jbGFzc2AsIGBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb25gLCBgbXVzdF9kcm9wYCwgYGdldF9tZW1vcnlfbGltaXRgLCBgZXRzX3F1YW50dW1fcGFyc2VgLCBgZXRzX3FkaXNjX2NoYW5nZWAsIGBmcV9jaGFuZ2VgLCBgZnFfaW5pdGAsIGBmcV9waWVfY2hhbmdlYCwgYGhoZl9jaGFuZ2VgLCBgaGhmX2luaXRgLCBgcGllX2Ryb3BfZWFybHlgLCBgc2ZxX2NoYW5nZWAuIFRoYXQncyBub3QganVzdCBhIGNvbnN0YW50IGNoYW5nZTsgaXQncyBsaWtlbHkgYWx0ZXJpbmcgaG93IHRoZXNlIHFkaXNjcyBiZWhhdmUuXG5cbkFuZCB0aGVzZSBhcmUgKmFic29sdXRlbHkqIHJlYWNoYWJsZSBpbiBRRU1VIGFuZCBHQ0UgZW52aXJvbm1lbnRzLiBZb3UgY2FuIGVhc2lseSBpbnRlcmFjdCB3aXRoIHRoZW0gdGhyb3VnaCBuZXRsaW5rLCBgcnRuZXRsaW5rYCwgYW5kIGB0Y2AgY29tbWFuZHMuXG5cblNvLCB5ZWFoLCB0aGlzIGxvb2tzIHdvcnRoIGZ1enppbmcuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIHNjaGVkdWxlcnMgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk1MywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjA1Ljg1MjA5NDIxOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzMyOTk4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NDY9Y29tbWVudCBcXFwiUXVldWVpbmcvU2NoZWR1bGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZy00Ny1cXG5uZXQvc2NoZWQvS2NvbmZpZzo0ODpjb25maWcgTkVUX1NDSF9IVEJcXG5uZXQvc2NoZWQvS2NvbmZpZy00OS1cXHR0cmlzdGF0ZSBcXFwiSGllcmFyY2hpY2FsIFRva2VuIEJ1Y2tldCAoSFRCKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTYxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjYyOmNvbmZpZyBORVRfU0NIX0hGU0NcXG5uZXQvc2NoZWQvS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiSGllcmFyY2hpY2FsIEZhaXIgU2VydmljZSBDdXJ2ZSAoSEZTQylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03MC1cXG5uZXQvc2NoZWQvS2NvbmZpZzo3MTpjb25maWcgTkVUX1NDSF9QUklPXFxubmV0L3NjaGVkL0tjb25maWctNzItXFx0dHJpc3RhdGUgXFxcIk11bHRpIEJhbmQgUHJpb3JpdHkgUXVldWVpbmcgKFBSSU8pXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzktXFxubmV0L3NjaGVkL0tjb25maWc6ODA6Y29uZmlnIE5FVF9TQ0hfTVVMVElRXFxubmV0L3NjaGVkL0tjb25maWctODEtXFx0dHJpc3RhdGUgXFxcIkhhcmR3YXJlIE11bHRpcXVldWUtYXdhcmUgTXVsdGkgQmFuZCBRdWV1aW5nIChNVUxUSVEpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctODgtXFxubmV0L3NjaGVkL0tjb25maWc6ODk6Y29uZmlnIE5FVF9TQ0hfUkVEXFxubmV0L3NjaGVkL0tjb25maWctOTAtXFx0dHJpc3RhdGUgXFxcIlJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKFJFRClcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy05OS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxMDA6Y29uZmlnIE5FVF9TQ0hfU0ZCXFxubmV0L3NjaGVkL0tjb25maWctMTAxLVxcdHRyaXN0YXRlIFxcXCJTdG9jaGFzdGljIEZhaXIgQmx1ZSAoU0ZCKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTExMC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxMTE6Y29uZmlnIE5FVF9TQ0hfU0ZRXFxubmV0L3NjaGVkL0tjb25maWctMTEyLVxcdHRyaXN0YXRlIFxcXCJTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTIxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjEyMjpjb25maWcgTkVUX1NDSF9URVFMXFxubmV0L3NjaGVkL0tjb25maWctMTIzLVxcdHRyaXN0YXRlIFxcXCJUcnVlIExpbmsgRXF1YWxpemVyIChURVFMKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTEzMy1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxMzQ6Y29uZmlnIE5FVF9TQ0hfVEJGXFxubmV0L3NjaGVkL0tjb25maWctMTM1LVxcdHRyaXN0YXRlIFxcXCJUb2tlbiBCdWNrZXQgRmlsdGVyIChUQkYpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTQ0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE0NTpjb25maWcgTkVUX1NDSF9DQlNcXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDYtXFx0dHJpc3RhdGUgXFxcIkNyZWRpdCBCYXNlZCBTaGFwZXIgKENCUylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNTUtXFxubmV0L3NjaGVkL0tjb25maWc6MTU2OmNvbmZpZyBORVRfU0NIX0VURlxcbm5ldC9zY2hlZC9LY29uZmlnLTE1Ny1cXHR0cmlzdGF0ZSBcXFwiRWFybGllc3QgVHhUaW1lIEZpcnN0IChFVEYpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTY2LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE2Nzpjb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXFxubmV0L3NjaGVkL0tjb25maWctMTY4LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXFxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXFxubmV0L3NjaGVkL0tjb25maWc6MTg0OmNvbmZpZyBORVRfU0NIX0dSRURcXG5uZXQvc2NoZWQvS2NvbmZpZy0xODUtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xOTQtXFxubmV0L3NjaGVkL0tjb25maWc6MTk1OmNvbmZpZyBORVRfU0NIX05FVEVNXFxubmV0L3NjaGVkL0tjb25maWctMTk2LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIGVtdWxhdG9yIChORVRFTSlcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0yMDYtXFxubmV0L3NjaGVkL0tjb25maWc6MjA3OmNvbmZpZyBORVRfU0NIX0RSUlxcbm5ldC9zY2hlZC9LY29uZmlnLTIwOC1cXHR0cmlzdGF0ZSBcXFwiRGVmaWNpdCBSb3VuZCBSb2JpbiBzY2hlZHVsZXIgKERSUilcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0yMTctXFxubmV0L3NjaGVkL0tjb25maWc6MjE4OmNvbmZpZyBORVRfU0NIX01RUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTIxOS1cXHR0cmlzdGF0ZSBcXFwiTXVsdGktcXVldWUgcHJpb3JpdHkgc2NoZWR1bGVyIChNUVBSSU8pXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjMwLVxcbm5ldC9zY2hlZC9LY29uZmlnOjIzMTpjb25maWcgTkVUX1NDSF9TS0JQUklPXFxubmV0L3NjaGVkL0tjb25maWctMjMyLVxcdHRyaXN0YXRlIFxcXCJTS0IgcHJpb3JpdHkgcXVldWUgc2NoZWR1bGVyIChTS0JQUklPKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTI0My1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyNDQ6Y29uZmlnIE5FVF9TQ0hfQ0hPS0VcXG5uZXQvc2NoZWQvS2NvbmZpZy0yNDUtXFx0dHJpc3RhdGUgXFxcIkNIT29zZSBhbmQgS2VlcCByZXNwb25zaXZlIGZsb3cgc2NoZWR1bGVyIChDSE9LRSlcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0yNTQtXFxubmV0L3NjaGVkL0tjb25maWc6MjU1OmNvbmZpZyBORVRfU0NIX1FGUVxcbm5ldC9zY2hlZC9LY29uZmlnLTI1Ni1cXHR0cmlzdGF0ZSBcXFwiUXVpY2sgRmFpciBRdWV1ZWluZyBzY2hlZHVsZXIgKFFGUSlcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0yNjUtXFxubmV0L3NjaGVkL0tjb25maWc6MjY2OmNvbmZpZyBORVRfU0NIX0NPREVMXFxubmV0L3NjaGVkL0tjb25maWctMjY3LVxcdHRyaXN0YXRlIFxcXCJDb250cm9sbGVkIERlbGF5IEFRTSAoQ09ERUwpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjc2LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI3Nzpjb25maWcgTkVUX1NDSF9GUV9DT0RFTFxcbm5ldC9zY2hlZC9LY29uZmlnLTI3OC1cXHR0cmlzdGF0ZSBcXFwiRmFpciBRdWV1ZSBDb250cm9sbGVkIERlbGF5IEFRTSAoRlFfQ09ERUwpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjg3LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI4ODpjb25maWcgTkVUX1NDSF9DQUtFXFxubmV0L3NjaGVkL0tjb25maWctMjg5LVxcdHRyaXN0YXRlIFxcXCJDb21tb24gQXBwbGljYXRpb25zIEtlcHQgRW5oYW5jZWQgKENBS0UpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjk4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI5OTpjb25maWcgTkVUX1NDSF9GUVxcbm5ldC9zY2hlZC9LY29uZmlnLTMwMC1cXHR0cmlzdGF0ZSBcXFwiRmFpciBRdWV1ZVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTMxMi1cXG5uZXQvc2NoZWQvS2NvbmZpZzozMTM6Y29uZmlnIE5FVF9TQ0hfSEhGXFxubmV0L3NjaGVkL0tjb25maWctMzE0LVxcdHRyaXN0YXRlIFxcXCJIZWF2eS1IaXR0ZXIgRmlsdGVyIChISEYpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMzIxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjMyMjpjb25maWcgTkVUX1NDSF9QSUVcXG5uZXQvc2NoZWQvS2NvbmZpZy0zMjMtXFx0dHJpc3RhdGUgXFxcIlByb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChQSUUpIHNjaGVkdWxlclxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTMzMy1cXG5uZXQvc2NoZWQvS2NvbmZpZzozMzQ6Y29uZmlnIE5FVF9TQ0hfRlFfUElFXFxubmV0L3NjaGVkL0tjb25maWctMzM1LVxcdGRlcGVuZHMgb24gTkVUX1NDSF9QSUVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTM0Ni1cXG5uZXQvc2NoZWQvS2NvbmZpZzozNDc6Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xcbm5ldC9zY2hlZC9LY29uZmlnLTM0OC1cXHR0cmlzdGF0ZSBcXFwiSW5ncmVzcy9jbGFzc2lmaWVyLWFjdGlvbiBRZGlzY1xcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTM2Mi1cXG5uZXQvc2NoZWQvS2NvbmZpZzozNjM6Y29uZmlnIE5FVF9TQ0hfUExVR1xcbm5ldC9zY2hlZC9LY29uZmlnLTM2NC1cXHR0cmlzdGF0ZSBcXFwiUGx1ZyBuZXR3b3JrIHRyYWZmaWMgdW50aWwgcmVsZWFzZSAoUExVRylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zODgtXFxubmV0L3NjaGVkL0tjb25maWc6Mzg5OmNvbmZpZyBORVRfU0NIX0VUU1xcbm5ldC9zY2hlZC9LY29uZmlnLTM5MC1cXHR0cmlzdGF0ZSBcXFwiRW5oYW5jZWQgdHJhbnNtaXNzaW9uIHNlbGVjdGlvbiBzY2hlZHVsZXIgKEVUUylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy00MDUtXFxubmV0L3NjaGVkL0tjb25maWc6NDA2OmNvbmZpZyBORVRfU0NIX0JQRlxcbm5ldC9zY2hlZC9LY29uZmlnLTQwNy1cXHRib29sIFxcXCJCUEYtYmFzZWQgUWRpc2NcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy00MTctXFxubmV0L3NjaGVkL0tjb25maWc6NDE4OmNvbmZpZyBORVRfU0NIX0RVQUxQSTJcXG5uZXQvc2NoZWQvS2NvbmZpZy00MTktXFx0dHJpc3RhdGUgXFxcIkR1YWwgUXVldWUgUEkgU3F1YXJlIChEVUFMUEkyKSBzY2hlZHVsZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy00MjktXFxubmV0L3NjaGVkL0tjb25maWc6NDMwOm1lbnVjb25maWcgTkVUX1NDSF9ERUZBVUxUXFxubmV0L3NjaGVkL0tjb25maWctNDMxLVxcdGJvb2wgXFxcIkFsbG93IG92ZXJyaWRlIGRlZmF1bHQgcXVldWUgZGlzY2lwbGluZVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTk2Nj1lbmRpZiAjIE5FVF9TQ0hFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTk2Ny1cXG5uZXQvc2NoZWQvS2NvbmZpZzo5Njg6Y29uZmlnIE5FVF9TQ0hfRklGT1xcbm5ldC9zY2hlZC9LY29uZmlnLTk2OS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjA1LjkzNTQzMDQ4MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3Njg0Mzk1MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCdWlsZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgZGVhbGluZyB3aXRoIG5ldHdvcmsgc2NoZWR1bGluZyBhbmQgc29tZSBidWlsZCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZpbGVzIGFyZSBhY3R1YWxseSBiZWluZyBjb21waWxlZCBhbmQgbGlua2VkLiBHaXZlbiB0aGF0IHdlJ3JlIHRhbGtpbmcgYG5ldC9zY2hlZGAsIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgTWFrZWZpbGVgIHdpdGhpbiB0aGF0IGRpcmVjdG9yeS4gSSdtIGdvaW5nIHRvIGNyYWNrIG9wZW4gYG5ldC9zY2hlZC9NYWtlZmlsZWAgYW5kIHNlZSBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgb3JjaGVzdHJhdGVkLiBJdCdzIHRoZSBNYWtlZmlsZSB0aGF0IGhvbGRzIHRoZSBrZXkgdG8gdGhlIGRlcGVuZGVuY2llcywgY29tcGlsZXIgZmxhZ3MsIGFuZCB0aGUgb3ZlcmFsbCByZWNpcGUgZm9yIGFzc2VtYmxpbmcgdGhlIHJlbGV2YW50IG1vZHVsZXMuIFRoaXMgc2hvdWxkIHRlbGwgbWUgZXhhY3RseSBob3cgdGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIGluZmx1ZW5jaW5nIHRoZSBidWlsZCBwcm9jZXNzIGFuZCB3aGF0IHNwZWNpZmljYWxseSBpcyBiZWluZyBpbmNsdWRlZCBvciBleGNsdWRlZCBiYXNlZCBvbiB0aGUgY29uZmlncyBpbiBwbGF5LiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTExMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjIzLjYxOTgyOTQxM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDM5NzYzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGUtNS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjpvYmoteVxcdDo9IHNjaF9nZW5lcmljLm8gc2NoX21xLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNy1cXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfSU5FVClcXHRcXHQrPSBzY2hfZnJhZy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcXHRcXHQrPSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19ORVRfQ0xTKVxcdFxcdCs9IGNsc19hcGkub1xcbi0tXFxubmV0L3NjaGVkL01ha2VmaWxlPTMzPW9iai0kKENPTkZJR19ORVRfQUNUX0dBVEUpXFx0Kz0gYWN0X2dhdGUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfTkVUX1NDSF9GSUZPKVxcdCs9IHNjaF9maWZvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX05FVF9TQ0hfSFRCKVxcdCs9IHNjaF9odGIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfTkVUX1NDSF9IRlNDKVxcdCs9IHNjaF9oZnNjLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX05FVF9TQ0hfUkVEKVxcdCs9IHNjaF9yZWQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozODpvYmotJChDT05GSUdfTkVUX1NDSF9HUkVEKVxcdCs9IHNjaF9ncmVkLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6Mzk6b2JqLSQoQ09ORklHX05FVF9TQ0hfSU5HUkVTUylcXHQrPSBzY2hfaW5ncmVzcy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19ORVRfU0NIX1NGQilcXHQrPSBzY2hfc2ZiLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDE6b2JqLSQoQ09ORklHX05FVF9TQ0hfU0ZRKVxcdCs9IHNjaF9zZnEub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfTkVUX1NDSF9UQkYpXFx0Kz0gc2NoX3RiZi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19ORVRfU0NIX1RFUUwpXFx0Kz0gc2NoX3RlcWwub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfTkVUX1NDSF9QUklPKVxcdCs9IHNjaF9wcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX05FVF9TQ0hfTVVMVElRKVxcdCs9IHNjaF9tdWx0aXEub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfTkVUX1NDSF9ORVRFTSlcXHQrPSBzY2hfbmV0ZW0ub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXFx0Kz0gc2NoX2Ryci5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19ORVRfU0NIX1BMVUcpXFx0Kz0gc2NoX3BsdWcub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfTkVUX1NDSF9FVFMpXFx0Kz0gc2NoX2V0cy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19ORVRfU0NIX01RUFJJTylcXHQrPSBzY2hfbXFwcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX05FVF9TQ0hfTVFQUklPX0xJQikgKz0gc2NoX21xcHJpb19saWIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfTkVUX1NDSF9TS0JQUklPKVxcdCs9IHNjaF9za2JwcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX05FVF9TQ0hfQ0hPS0UpXFx0Kz0gc2NoX2Nob2tlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfUUZRKVxcdCs9IHNjaF9xZnEub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1NTpvYmotJChDT05GSUdfTkVUX1NDSF9DT0RFTClcXHQrPSBzY2hfY29kZWwub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1NjpvYmotJChDT05GSUdfTkVUX1NDSF9GUV9DT0RFTClcXHQrPSBzY2hfZnFfY29kZWwub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1NzpvYmotJChDT05GSUdfTkVUX1NDSF9DQUtFKVxcdCs9IHNjaF9jYWtlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlEpXFx0Kz0gc2NoX2ZxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX05FVF9TQ0hfSEhGKVxcdCs9IHNjaF9oaGYub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfTkVUX1NDSF9QSUUpXFx0Kz0gc2NoX3BpZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19ORVRfU0NIX0ZRX1BJRSlcXHQrPSBzY2hfZnFfcGllLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjI6b2JqLSQoQ09ORklHX05FVF9TQ0hfQ0JTKVxcdCs9IHNjaF9jYnMub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXFx0Kz0gc2NoX2V0Zi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19ORVRfU0NIX1RBUFJJTylcXHQrPSBzY2hfdGFwcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVxcdCs9IGJwZl9xZGlzYy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19ORVRfU0NIX0RVQUxQSTIpXFx0Kz0gc2NoX2R1YWxwaTIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS02Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDU6MjMuNzAwMjM1Njk3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODYwMDQwODcxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbiBGaWxlcyoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UsIHNvIEknbGwgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCB0aGUgYWZmZWN0ZWQgZmlsZXMuIEkgc2VlIGEgbGlzdCBvZiBzY2hlZHVsZXIgaW1wbGVtZW50YXRpb25zIHRoYXQgaGF2ZSBiZWVuIGZsYWdnZWQ6IGBuZXQvc2NoZWQvc2NoX2Ryci5jYCwgYG5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jYCwgYG5ldC9zY2hlZC9zY2hfZXRzLmNgLCBgbmV0L3NjaGVkL3NjaF9mcS5jYCwgYG5ldC9zY2hlZC9zY2hfZnFfcGllLmNgLCBgbmV0L3NjaGVkL3NjaF9oaGYuY2AsIGBuZXQvc2NoZWQvc2NoX3BpZS5jYCwgYW5kIGBuZXQvc2NoZWQvc2NoX3NmcS5jYC4gRWFjaCBvbmUgb2YgdGhlc2UgaXMgYXNzb2NpYXRlZCB3aXRoIGEgY29ycmVzcG9uZGluZyBLY29uZmlnIHN5bWJvbDsgdGhlIGBDT05GSUdfTkVUX1NDSF9EUlJgIGV0Yy4gY29uZmlndXJhdGlvbnMuXG5cbk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IGFuZCBhbnkgZGVwZW5kZW5jaWVzIHRoZXNlIHNjaGVkdWxlcnMgbWlnaHQgaGF2ZSwgSSBuZWVkIHRvIG9wZW4gdXAgYG5ldC9zY2hlZC9LY29uZmlnYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsYXRpb25zaGlwcyBvdXRsaW5lZCB0aGVyZS4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBkZXBlbmRlbmNpZXMgb24sIHNheSwgYE5FVF9TQ0hFRGAgb3Igb3RoZXIgcmVsYXRlZCB2YXJpYWJsZXMgdGhhdCBtYXkgYmUgYWZmZWN0ZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY29tcHJlaGVuc2l2ZSBwaWN0dXJlIG9mIHdoYXQgZWxzZSBtYXkgYmUgaW52b2x2ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTA1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjMyLjMwMDY0NzEyOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFRyYWZmaWMgY29udHJvbCBjb25maWd1cmF0aW9uLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIE5FVF9TQ0hFRFxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xcbiAgMTE6XFx0XFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXFxuICAxMjpcXHRcXHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXFxuICAxMzpcXHRcXHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xcbiAgMTQ6XFx0XFx0ICBcXFwiZmFpcmx5XFxcIiBoYXZlIGJlZW4gcHJvcG9zZWQuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgSWYgeW91IHNheSBOIGhlcmUsIHlvdSB3aWxsIGdldCB0aGUgc3RhbmRhcmQgcGFja2V0IHNjaGVkdWxlciwgd2hpY2hcXG4gIDE3OlxcdFxcdCAgaXMgYSBGSUZPIChmaXJzdCBjb21lLCBmaXJzdCBzZXJ2ZWQpLiBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmVcXG4gIDE4OlxcdFxcdCAgYWJsZSB0byBjaG9vc2UgZnJvbSBhbW9uZyBzZXZlcmFsIGFsdGVybmF0aXZlIGFsZ29yaXRobXMgd2hpY2ggY2FuXFxuICAxOTpcXHRcXHQgIHRoZW4gYmUgYXR0YWNoZWQgdG8gZGlmZmVyZW50IG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBpcyB1c2VmdWwgZm9yXFxuICAyMDpcXHRcXHQgIGV4YW1wbGUgaWYgc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlcyBhcmUgcmVhbCB0aW1lIGRldmljZXMgdGhhdFxcbiAgMjE6XFx0XFx0ICBuZWVkIGEgY2VydGFpbiBtaW5pbXVtIGRhdGEgZmxvdyByYXRlLCBvciBpZiB5b3UgbmVlZCB0byBsaW1pdCB0aGVcXG4gIDIyOlxcdFxcdCAgbWF4aW11bSBkYXRhIGZsb3cgcmF0ZSBmb3IgdHJhZmZpYyB3aGljaCBtYXRjaGVzIHNwZWNpZmllZCBjcml0ZXJpYS5cXG4gIDIzOlxcdFxcdCAgVGhpcyBjb2RlIGlzIGNvbnNpZGVyZWQgdG8gYmUgZXhwZXJpbWVudGFsLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHQgIFRvIGFkbWluaXN0ZXIgdGhlc2Ugc2NoZWR1bGVycywgeW91J2xsIG5lZWQgdGhlIHVzZXItbGV2ZWwgdXRpbGl0aWVzXFxuICAyNjpcXHRcXHQgIGZyb20gdGhlIHBhY2thZ2UgaXByb3V0ZTIrdGMgYXRcXG4gIDI3OlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL25ldC9pcHJvdXRlMi9cXHUwMDNlLiAgVGhhdCBwYWNrYWdlXFxuICAyODpcXHRcXHQgIGFsc28gY29udGFpbnMgc29tZSBkb2N1bWVudGF0aW9uOyBmb3IgbW9yZSwgY2hlY2sgb3V0XFxuICAyOTpcXHRcXHQgIFxcdTAwM2NodHRwOi8vd3d3LmxpbnV4Zm91bmRhdGlvbi5vcmcvY29sbGFib3JhdGUvd29ya2dyb3Vwcy9uZXR3b3JraW5nL2lwcm91dGUyXFx1MDAzZS5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0XFx0ICBUaGlzIFF1YWxpdHkgb2YgU2VydmljZSAoUW9TKSBzdXBwb3J0IHdpbGwgZW5hYmxlIHlvdSB0byB1c2VcXG4gIDMyOlxcdFxcdCAgRGlmZmVyZW50aWF0ZWQgU2VydmljZXMgKGRpZmZzZXJ2KSBhbmQgUmVzb3VyY2UgUmVzZXJ2YXRpb24gUHJvdG9jb2xcXG4gIDMzOlxcdFxcdCAgKFJTVlApIG9uIHlvdXIgTGludXggcm91dGVyIGlmIHlvdSBhbHNvIHNheSBZIHRvIHRoZSBjb3JyZXNwb25kaW5nXFxuICAzNDpcXHRcXHQgIGNsYXNzaWZpZXJzIGJlbG93LiAgRG9jdW1lbnRhdGlvbiBhbmQgc29mdHdhcmUgaXMgYXRcXG4gIDM1OlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9kaWZmc2Vydi5zb3VyY2Vmb3JnZS5uZXQvXFx1MDAzZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSBhbmQgdG8gXFxcIi9wcm9jIGZpbGUgc3lzdGVtXFxcIiBiZWxvdywgeW91IHdpbGwgYmUgYWJsZVxcbiAgMzg6XFx0XFx0ICB0byByZWFkIHN0YXR1cyBpbmZvcm1hdGlvbiBhYm91dCBwYWNrZXQgc2NoZWR1bGVycyBmcm9tIHRoZSBmaWxlXFxuICAzOTpcXHRcXHQgIC9wcm9jL25ldC9wc2NoZWQuXFxuICA0MDpcXHRcXG4gIDQxOlxcdFxcdCAgVGhlIGF2YWlsYWJsZSBzY2hlZHVsZXJzIGFyZSBsaXN0ZWQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnM7IHlvdVxcbiAgNDI6XFx0XFx0ICBjYW4gc2F5IFkgdG8gYXMgbWFueSBhcyB5b3UgbGlrZS4gSWYgdW5zdXJlLCBzYXkgTiBub3cuXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGlmIE5FVF9TQ0hFRFxcbiAgNDU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjMyLjMwMDc0NzY2OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1OTc4OTA3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGlzOlxuXG4qKkV4YW1pbmluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgTmV0d29yayBTY2hlZHVsaW5nIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVF9TQ0hFRGAgd2l0aGluIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGBuZXQvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBnby10byBsb2NhdGlvbiBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHJlbGF0ZWQgdG8gbmV0d29ya2luZyBmZWF0dXJlcywgc28gdGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAuIEhvcGVmdWxseSwgYE5FVF9TQ0hFRGAgaXMgZGVmaW5lZCBpbiB0aGVyZSwgYW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFybHkgbGFpZCBvdXQuIEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3NTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjM4Ljg5ODY0Mjk2NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMyOTQ1NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZSBcXFwibmV0L3NjaGVkL0tjb25maWdcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MjY5PXNvdXJjZSBcXFwibmV0L21hYzgwMjE1NC9LY29uZmlnXFxcIlxcbm5ldC9LY29uZmlnOjI3MDpzb3VyY2UgXFxcIm5ldC9zY2hlZC9LY29uZmlnXFxcIlxcbm5ldC9LY29uZmlnLTI3MS1zb3VyY2UgXFxcIm5ldC9kY2IvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDU6MzkuNDMxNTk1ODI1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMTU5MjAyNDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlnKipcblxuT2theSwgc28gSSdtIHRyb3VibGVzaG9vdGluZyBzb21ldGhpbmcsIGFuZCBteSBndXQgZmVlbGluZyBpcyB0aGF0IGl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuIEluc3RlYWQgb2YgYmxpbmRseSBncmVwcGluZywgbGV0J3MgdGFrZSBhIHRhcmdldGVkIGFwcHJvYWNoLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBgbmV0L0tjb25maWdgIGFyb3VuZCBsaW5lIDI3MC4gVGhhdCBhcmVhIHVzdWFsbHkgZGVhbHMgd2l0aC4uLiB3ZWxsLCBiYXNlZCBvbiBwcmlvciBleHBlcmllbmNlIGFuZCBnZW5lcmFsIGtub3dsZWRnZSBvZiB0aGUgcHJvamVjdCdzIHN0cnVjdHVyZS4uLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgb3B0aW9ucyB0aGF0IHJlbGF0ZSB0byBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgb3Igc29tZSBhc3BlY3Qgb2YgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbi4gSXQgY291bGQgYmUgYW55dGhpbmcgZnJvbSBhIHNwZWNpZmljIHByb3RvY29sIGltcGxlbWVudGF0aW9uIHRvIGEgZHJpdmVyJ3MgZW5hYmxlbWVudC4gVGltZSB0byBnbyBodW50aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjAwNiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA2OjAxLjU5MDgwMzUxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjY1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjY1OlxcdHNvdXJjZSBcXFwibmV0L2xhcGIvS2NvbmZpZ1xcXCJcXG4gMjY2OlxcdHNvdXJjZSBcXFwibmV0L3Bob25ldC9LY29uZmlnXFxcIlxcbiAyNjc6XFx0c291cmNlIFxcXCJuZXQvNmxvd3Bhbi9LY29uZmlnXFxcIlxcbiAyNjg6XFx0c291cmNlIFxcXCJuZXQvaWVlZTgwMjE1NC9LY29uZmlnXFxcIlxcbiAyNjk6XFx0c291cmNlIFxcXCJuZXQvbWFjODAyMTU0L0tjb25maWdcXFwiXFxuIDI3MDpcXHRzb3VyY2UgXFxcIm5ldC9zY2hlZC9LY29uZmlnXFxcIlxcbiAyNzE6XFx0c291cmNlIFxcXCJuZXQvZGNiL0tjb25maWdcXFwiXFxuIDI3MjpcXHRzb3VyY2UgXFxcIm5ldC9kbnNfcmVzb2x2ZXIvS2NvbmZpZ1xcXCJcXG4gMjczOlxcdHNvdXJjZSBcXFwibmV0L2JhdG1hbi1hZHYvS2NvbmZpZ1xcXCJcXG4gMjc0OlxcdHNvdXJjZSBcXFwibmV0L29wZW52c3dpdGNoL0tjb25maWdcXFwiXFxuIDI3NTpcXHRzb3VyY2UgXFxcIm5ldC92bXdfdnNvY2svS2NvbmZpZ1xcXCJcXG4gMjc2OlxcdHNvdXJjZSBcXFwibmV0L25ldGxpbmsvS2NvbmZpZ1xcXCJcXG4gMjc3OlxcdHNvdXJjZSBcXFwibmV0L21wbHMvS2NvbmZpZ1xcXCJcXG4gMjc4OlxcdHNvdXJjZSBcXFwibmV0L25zaC9LY29uZmlnXFxcIlxcbiAyNzk6XFx0c291cmNlIFxcXCJuZXQvaHNyL0tjb25maWdcXFwiXFxuIDI4MDpcXHRzb3VyY2UgXFxcIm5ldC9zd2l0Y2hkZXYvS2NvbmZpZ1xcXCJcXG4gMjgxOlxcdHNvdXJjZSBcXFwibmV0L2wzbWRldi9LY29uZmlnXFxcIlxcbiAyODI6XFx0c291cmNlIFxcXCJuZXQvcXJ0ci9LY29uZmlnXFxcIlxcbiAyODM6XFx0c291cmNlIFxcXCJuZXQvbmNzaS9LY29uZmlnXFxcIlxcbiAyODQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA2OjAxLjU5MTA1Nzk2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjQ0ODY3MzcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRnVuY3Rpb24gU3ltYm9scyBpbiBgc2NoX2Ryci5jYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hpY2ggZnVuY3Rpb24gc3ltYm9scyBoYXZlIGJlZW4gdG91Y2hlZCB3aXRoaW4gZWFjaCBmaWxlLiBJJ20gZm9jdXNpbmcgb24gdGhlIHJlY2VudCBtb2RpZmljYXRpb25zLCB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzIG1hZGUgdG8gdGhlIERSUiBzY2hlZHVsZXIuIEFscmlnaHQsIHN0YXJ0aW5nIHdpdGggYG5ldC9zY2hlZC9zY2hfZHJyLmNgLCBpdCBsb29rcyBsaWtlIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQncyBiZWVuIGFsdGVyZWQgaXMgYGRycl9jaGFuZ2VfY2xhc3NgLiBHb29kLCB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHNvIGl0J3MgbGlrZWx5IGludGVybmFsIHRvIHRoYXQgc3BlY2lmaWMgZmlsZS4gTm93LCBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGNvbXBsZXRlIGBzY2hfZHJyLmNgIGZpbGUgaXRzZWxmIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIG1vZGlmaWNhdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBpbXBsZW1lbnRhdGlvbi4gVGhhdCdzIHRoZSBsb2dpY2FsIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1NzksIk91dHB1dFRva2VucyI6NjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA2OjE0LjAzOTczNTUwMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1ODQ1MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiKGRycl9pbml0fGRycl9lbnF1ZXVlfGRycl9kZXF1ZXVlfGRycl9jaGFuZ2VfY2xhc3N8ZHJyX3FkaXNjX29wcylcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9kcnIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2Ryci5jPTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkcnJfcG9saWN5W1RDQV9EUlJfTUFYICsgMV0gPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTU3LVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NTg6c3RhdGljIGludCBkcnJfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCwgdTMyIHBhcmVudGlkLFxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNTktXFx0XFx0XFx0ICAgIHN0cnVjdCBubGF0dHIgKip0Y2EsIHVuc2lnbmVkIGxvbmcgKmFyZyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM9Mjk5PXN0YXRpYyBzdHJ1Y3QgZHJyX2NsYXNzICpkcnJfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTMzNi1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjMzNzpzdGF0aWMgaW50IGRycl9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzM4LVxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTM3MS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjM3MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRycl9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzczLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDExLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDEyOnN0YXRpYyBpbnQgZHJyX2luaXRfcWRpc2Moc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQxMy1cXHRcXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM9NDYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGRycl9jbGFzc19vcHMgPSB7XFxubmV0L3NjaGVkL3NjaF9kcnIuYzo0NjE6XFx0LmNoYW5nZVxcdFxcdD0gZHJyX2NoYW5nZV9jbGFzcyxcXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ2Mi1cXHQuZGVsZXRlXFx0XFx0PSBkcnJfZGVsZXRlX2NsYXNzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kcnIuYy00NzQtXFxubmV0L3NjaGVkL3NjaF9kcnIuYzo0NzU6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZHJyX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDc2LVxcdC5jbF9vcHNcXHRcXHQ9IFxcdTAwMjZkcnJfY2xhc3Nfb3BzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kcnIuYy00NzgtXFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBkcnJfc2NoZWQpLFxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDc5OlxcdC5lbnF1ZXVlXFx0PSBkcnJfZW5xdWV1ZSxcXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ4MDpcXHQuZGVxdWV1ZVxcdD0gZHJyX2RlcXVldWUsXFxubmV0L3NjaGVkL3NjaF9kcnIuYy00ODEtXFx0LnBlZWtcXHRcXHQ9IHFkaXNjX3BlZWtfZGVxdWV1ZWQsXFxubmV0L3NjaGVkL3NjaF9kcnIuYzo0ODI6XFx0LmluaXRcXHRcXHQ9IGRycl9pbml0X3FkaXNjLFxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDgzLVxcdC5yZXNldFxcdFxcdD0gZHJyX3Jlc2V0X3FkaXNjLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kcnIuYz00ODc9TU9EVUxFX0FMSUFTX05FVF9TQ0goXFxcImRyclxcXCIpO1xcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDg4LVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDg5OnN0YXRpYyBpbnQgX19pbml0IGRycl9pbml0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9kcnIuYy00OTAte1xcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDkxOlxcdHJldHVybiByZWdpc3Rlcl9xZGlzYyhcXHUwMDI2ZHJyX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9kcnIuYy00OTItfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kcnIuYz00OTQ9c3RhdGljIHZvaWQgX19leGl0IGRycl9leGl0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9kcnIuYy00OTUte1xcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDk2OlxcdHVucmVnaXN0ZXJfcWRpc2MoXFx1MDAyNmRycl9xZGlzY19vcHMpO1xcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDk3LX1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ5OC1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ5OTptb2R1bGVfaW5pdChkcnJfaW5pdCk7XFxubmV0L3NjaGVkL3NjaF9kcnIuYy01MDAtbW9kdWxlX2V4aXQoZHJyX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjoxNC4xMDEzMjkyOTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc1MjU5ODI2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYHNjaF9kdWFscGkyLmNgKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCBgc2NoX2R1YWxwaTIuY2AuIEkgaGF2ZSBhIGZlZWxpbmcgc29tZXRoaW5nIGlzbid0IHF1aXRlIHJpZ2h0IHdpdGggdGhlIHNjaGVkdWxpbmcgaW4gdGhhdCBhcmVhLCBhbmQgdGhpcyBpcyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIG9mIHRoZSB1c3VhbCBzdXNwZWN0cyDigJMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgaW5lZmZpY2llbnQgbG9ja2luZywgb3IgbWF5YmUgZXZlbiBhIHN1YnRsZSBvdmVyZmxvdyBidWcgY3JlZXBpbmcgaW4gd2l0aCBob3cgdGhlIGR1YWwtUEkgY29udHJvbGxlciBoYW5kbGVzIGl0cyBzY2hlZHVsaW5nLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZGVhZGxpbmVzIGFyZSBiZWluZyBtYW5hZ2VkLCBob3cgdGhlIHByaW9yaXRpZXMgYXJlIHNldCwgYW5kIHdoZXRoZXIgdGhlIGludGVycnVwdCBoYW5kbGluZyBpcyBiZWhhdmluZyBhcyBJJ2QgZXhwZWN0LiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgcGlucG9pbnQgYW55IG9idmlvdXMgYXJlYXMgdGhhdCBtaWdodCBiZSBjb250cmlidXRpbmcgdG8gdGhlIG9ic2VydmVkIHBlcmZvcm1hbmNlIGlzc3VlcyBJJ3ZlIGJlZW4gc2VlaW5nIG9yIHBvdGVudGlhbCBnbGl0Y2hlcy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCBkZXRlcm1pbmlzbSBpbiB0aGlzIGNyaXRpY2FsIHNlY3Rpb24uIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5MTcsIk91dHB1dFRva2VucyI6NzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo0MS42MjczMTQyNDVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMDY4MTUwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoZHVhbHBpMl9pbml0fGR1YWxwaTJfY2hhbmdlfGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbnxtdXN0X2Ryb3B8Z2V0X21lbW9yeV9saW1pdHxkdWFscGkyX3FkaXNjX29wcylcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTk5PXN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMDctICovXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjA4OnN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMDktXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MjU1PXN0YXRpYyBib29sIGR1YWxwaTJfc2NhbGFibGVfbWFya2luZyhzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjgzLSAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI4NDpzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjg1LVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0zODg9c3RhdGljIGludCBkdWFscGkyX2VucXVldWVfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDAxLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQwMjpcXHRpZiAocS1cXHUwMDNlZHJvcF9lYXJseSBcXHUwMDI2XFx1MDAyNiBtdXN0X2Ryb3Aoc2NoLCBxLCBza2IpKSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDAzLVxcdFxcdHFkaXNjX2Ryb3BfcmVhc29uKHNrYiwgc2NoLCB0b19mcmVlLCBRRElTQ19EUk9QX0NPTkdFU1RFRCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz01ODM9c3RhdGljIHN0cnVjdCBza19idWZmICpfX2R1YWxwaTJfcWRpc2NfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU5Mi1cXHR3aGlsZSAoKHNrYiA9IGRlcXVldWVfcGFja2V0KHNjaCwgcSwgXFx1MDAyNmNyZWRpdF9jaGFuZ2UsIG5vdykpKSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTkzOlxcdFxcdGlmICghcS1cXHUwMDNlZHJvcF9lYXJseSBcXHUwMDI2XFx1MDAyNiBtdXN0X2Ryb3Aoc2NoLCBxLCBza2IpKSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTk0LVxcdFxcdFxcdGRyb3BfYW5kX3JldHJ5KHEsIHNrYiwgc2NoLCBRRElTQ19EUk9QX0NPTkdFU1RFRCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz02NzU9c3RhdGljIHUzMiBjYWxjdWxhdGVfcHJvYmFiaWxpdHkoc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03MTItXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzEzOnN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTcxNC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz03Njk9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGR1YWxwaTJfcG9saWN5W1RDQV9EVUFMUEkyX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzk0LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc5NTpzdGF0aWMgaW50IGR1YWxwaTJfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzk2LVxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtODIzLVxcdFxcdFdSSVRFX09OQ0Uoc2NoLVxcdTAwM2VsaW1pdCwgbGltaXQpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjgyNDpcXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZW1lbW9yeV9saW1pdCwgZ2V0X21lbW9yeV9saW1pdChzY2gsIGxpbWl0KSk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtODI1LVxcdH1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg5MS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo4OTI6XFx0XFx0ZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHNjaCwgcSwgd2MpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg5My1cXHR9XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz05NDk9c3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9kZWZhdWx0KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTUzLVxcdHEtXFx1MDAzZXNjaC1cXHUwMDNlbGltaXQgPSAxMDAwMDtcXHRcXHRcXHRcXHQvKiBNYXggMTI1bXMgYXQgMUdicHMgKi9cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5NTQ6XFx0cS1cXHUwMDNlbWVtb3J5X2xpbWl0ID0gZ2V0X21lbW9yeV9saW1pdChzY2gsIHEtXFx1MDAzZXNjaC1cXHUwMDNlbGltaXQpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk1NS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk2My1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5NjQ6XFx0ZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHEtXFx1MDAzZXNjaCwgcSwgMTApO1xcdC8qIHdjPTEwJSwgd2w9OTAlICovXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTY1LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTczLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk3NDpzdGF0aWMgaW50IGR1YWxwaTJfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk3NS1cXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05OTYtXFx0aWYgKG9wdCBcXHUwMDI2XFx1MDAyNiBubGFfbGVuKG9wdCkpIHtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5OTc6XFx0XFx0ZXJyID0gZHVhbHBpMl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTk4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTE5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBkdWFscGkyX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMDEtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwMjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBkdWFscGkyX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMDMtXFx0LmlkXFx0XFx0PSBcXFwiZHVhbHBpMlxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjA4LVxcdC5wZWVrXFx0XFx0PSBkdWFscGkyX3BlZWssXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwOTpcXHQuaW5pdFxcdFxcdD0gZHVhbHBpMl9pbml0LFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTAtXFx0LmRlc3Ryb3lcXHQ9IGR1YWxwaTJfZGVzdHJveSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjExLVxcdC5yZXNldFxcdFxcdD0gZHVhbHBpMl9yZXNldCxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjEyOlxcdC5jaGFuZ2VcXHRcXHQ9IGR1YWxwaTJfY2hhbmdlLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTMtXFx0LmR1bXBcXHRcXHQ9IGR1YWxwaTJfZHVtcCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTEyMTk9c3RhdGljIGludCBfX2luaXQgZHVhbHBpMl9tb2R1bGVfaW5pdCh2b2lkKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjAte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjE6XFx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZkdWFscGkyX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIyMi19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xMjI0PXN0YXRpYyB2b2lkIF9fZXhpdCBkdWFscGkyX21vZHVsZV9leGl0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIyNS17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyNjpcXHR1bnJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZkdWFscGkyX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIyNy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA2OjQyLjAzODAwMjY3NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzk5NjI4OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlcmFjdGlvbiBCZXR3ZWVuIGBzY2hfcGllYCBhbmQgYHBpZV9kcm9wX2Vhcmx5YCoqXG5cbkhtbSwgc28gd2UncmUgbG9va2luZyBhdCBgc2NoX3BpZS5jYCBhZ2Fpbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgcmVsYXRlZCB0byBgcGllX2Ryb3BfZWFybHlgIGFuZCBpdHMgdXNhZ2UsIGJlY2F1c2UgSSBrbm93IHRoYXQgZnVuY3Rpb24gaXMgZWl0aGVyIGV4cG9ydGVkIG9yIHVzZWQgaW4gZWl0aGVyIGBzY2hfcGllYCBvciBgc2NoX2ZxX3BpZWAuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIHNvbWUgc2NoZWR1bGluZyBsb2dpYyB3aXRoaW4gdGhvc2UgbW9kdWxlcy4gVG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IHJldmlldyBib3RoIHRoZSBgLmNgIGZpbGUgaXRzZWxmLCBhbmQgYW55IGNvcnJlc3BvbmRpbmcgYC5oYCBoZWFkZXIgZmlsZSBpZiBpdCBleGlzdHMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBjYWxsIHNpdGVzLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwODYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo0NC40Mzc2MzQyMTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzA2NDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBpZV9kcm9wX2Vhcmx5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9mcV9waWUuYz0xMzA9c3RhdGljIGludCBmcV9waWVfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMTY2LVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6MTY3OlxcdGlmICghcGllX2Ryb3BfZWFybHkoc2NoLCBcXHUwMDI2cS1cXHUwMDNlcF9wYXJhbXMsIFxcdTAwMjZzZWxfZmxvdy1cXHUwMDNldmFycyxcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTE2OC1cXHRcXHRcXHQgICAgc2VsX2Zsb3ctXFx1MDAzZWJhY2tsb2csIHNrYi1cXHUwMDNlbGVuKSkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYz0yNT1zdHJ1Y3QgcGllX3NjaGVkX2RhdGEge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYy0zMi1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjMzOmJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXFxubmV0L3NjaGVkL3NjaF9waWUuYy0zNC1cXHRcXHQgICAgc3RydWN0IHBpZV92YXJzICp2YXJzLCB1MzIgYmFja2xvZywgdTMyIHBhY2tldF9zaXplKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYy01MC1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjUxOlxcdC8qIElmIHdlIGhhdmUgZmV3ZXIgdGhhbiAyIG10dS1zaXplZCBwYWNrZXRzLCBkaXNhYmxlIHBpZV9kcm9wX2Vhcmx5LFxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTItXFx0ICogc2ltaWxhciB0byBtaW5fdGggaW4gUkVEXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTgyLX1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjgzOkVYUE9SVF9TWU1CT0xfR1BMKHBpZV9kcm9wX2Vhcmx5KTtcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTg0LVxcbm5ldC9zY2hlZC9zY2hfcGllLmM9ODU9c3RhdGljIGludCBwaWVfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmMtOTgtXFxubmV0L3NjaGVkL3NjaF9waWUuYzo5OTpcXHRpZiAoIXBpZV9kcm9wX2Vhcmx5KHNjaCwgXFx1MDAyNnEtXFx1MDAzZXBhcmFtcywgXFx1MDAyNnEtXFx1MDAzZXZhcnMsIHNjaC1cXHUwMDNlcXN0YXRzLmJhY2tsb2csXFxubmV0L3NjaGVkL3NjaF9waWUuYy0xMDAtXFx0XFx0XFx0ICAgIHNrYi1cXHUwMDNlbGVuKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo0NC40ODU5NDc1NTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQ2OTg2MTQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6XG5cbioqQW5hbHl6aW5nIHRoZSBQSUUgU2NoZWR1bGVyIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBgcGllX2Ryb3BfZWFybHlgIGlzIGEgcHJldHR5IGltcG9ydGFudCBmdW5jdGlvbiBpbiB0aGUgUElFIHNjaGVkdWxlciwgYW5kIGl0J3MgZXhwb3J0ZWQgd2l0aCB0aGUgR1BMIHN5bWJvbC4gVGhhdCBzaWduYWxzIGl0J3MgbWVhbnQgdG8gYmUgdXNlZCBleHRlcm5hbGx5LCBwZXJoYXBzIGJ5IG90aGVyIGtlcm5lbCBtb2R1bGVzLiBHaXZlbiBpdHMgbmFtZSwgSSdtIGd1ZXNzaW5nIGl0J3MgcmVsYXRlZCB0byBkcm9wcGluZyBwYWNrZXRzLCBidXQgbGV0J3Mgbm90IGp1bXAgdG8gY29uY2x1c2lvbnMuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQgZml0cyBpbnRvIHRoZSBvdmVyYWxsIFBJRSBhcmNoaXRlY3R1cmUuXG5cblRpbWUgdG8gZGl2ZSBpbnRvIGBzY2hfcGllLmNgLiBJIG5lZWQgdG8gcmV2aWV3IHJlbGF0ZWQgZnVuY3Rpb25zLiBGaXJzdCwgSSdsbCBiZSBsb29raW5nIGF0IGhvdyBwYWNrZXRzIGFyZSBlbnF1ZXVlZC9kZXF1ZXVlZCBieSBjaGVja2luZyBmdW5jdGlvbnMgbGlrZSBgcGllX3Byb2Nlc3NfZGVxdWV1ZWAgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gVGhlbiwgYHBpZV9pbml0YCBpcyBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIHRoZSBzY2hlZHVsaW5nIGRpc2NpcGxpbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2NoZWR1bGVyIGlzIGluaXRpYWxpemVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IGBwaWVfZHJvcF9lYXJseWAgbWlnaHQgYmUgY2FsbGVkLiBJJ20gaG9waW5nIEkgY2FuIHBpZWNlIHRvZ2V0aGVyIHRoZSBsb2dpYyBhbmQgaWRlbnRpZnkgdGhlIHNpdHVhdGlvbnMgaW4gd2hpY2ggYSBwYWNrZXQgaXMgZHJvcHBlZCBlYXJseSBhbmQgdGhlIGNvbnRleHQgYXJvdW5kIHdoeSB0aGlzIGlzIGhhcHBlbmluZy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4NDcsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo0Ny45NTU4MTIxMjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDA2NDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihwaWVfaW5pdHxwaWVfY2hhbmdlfHBpZV9xZGlzY19vcHMpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfcGllLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9waWUuYz0xMzA9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHBpZV9wb2xpY3lbVENBX1BJRV9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmMtMTQwLVxcbm5ldC9zY2hlZC9zY2hfcGllLmM6MTQxOnN0YXRpYyBpbnQgcGllX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfcGllLmMtMTQyLVxcdFxcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmM9NDI1PXN0YXRpYyB2b2lkIHBpZV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNDQyLVxcbm5ldC9zY2hlZC9zY2hfcGllLmM6NDQzOnN0YXRpYyBpbnQgcGllX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTQ0NC1cXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYy00NTUtXFx0aWYgKG9wdCkge1xcbm5ldC9zY2hlZC9zY2hfcGllLmM6NDU2OlxcdFxcdGludCBlcnIgPSBwaWVfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfcGllLmMtNDU3LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYz01NDM9c3RhdGljIHZvaWQgcGllX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU1MC1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjU1MTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBwaWVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9waWUuYy01NTItXFx0LmlkXFx0XFx0PSBcXFwicGllXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTU2LVxcdC5wZWVrXFx0XFx0PSBxZGlzY19wZWVrX2RlcXVldWVkLFxcbm5ldC9zY2hlZC9zY2hfcGllLmM6NTU3OlxcdC5pbml0XFx0XFx0PSBwaWVfaW5pdCxcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU1OC1cXHQuZGVzdHJveVxcdD0gcGllX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9waWUuYy01NTktXFx0LnJlc2V0XFx0XFx0PSBwaWVfcmVzZXQsXFxubmV0L3NjaGVkL3NjaF9waWUuYzo1NjA6XFx0LmNoYW5nZVxcdFxcdD0gcGllX2NoYW5nZSxcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU2MS1cXHQuZHVtcFxcdFxcdD0gcGllX2R1bXAsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTU2Nz1zdGF0aWMgaW50IF9faW5pdCBwaWVfbW9kdWxlX2luaXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU2OC17XFxubmV0L3NjaGVkL3NjaF9waWUuYzo1Njk6XFx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZwaWVfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU3MC19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTU3Mj1zdGF0aWMgdm9pZCBfX2V4aXQgcGllX21vZHVsZV9leGl0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9waWUuYy01NzMte1xcbm5ldC9zY2hlZC9zY2hfcGllLmM6NTc0OlxcdHVucmVnaXN0ZXJfcWRpc2MoXFx1MDAyNnBpZV9xZGlzY19vcHMpO1xcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTc1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDY6NDguMDA1MjI1MzU5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyOTUzOTcxOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIHByb3ZpZGVkIHByb21wdDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuT2theSwgc28gdGhlIHByb21wdCBkaXJlY3RzIG1lIHRvIGV4YW1pbmUgYSBzcGVjaWZpYyBmaWxlLCBgc2NoX2V0cy5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY29uc2lkZXIgdGhlIGNvbnRleHQgb2YgdGhpcyBmaWxlLiBCYXNlZCBvbiB0aGUgbmFtZSwgaXQncyBoaWdobHkgcHJvYmFibGUgdGhpcyBmaWxlIGlzIHJlbGF0ZWQgdG8gc2NoZWR1bGluZyBhbmQgbGlrZWx5IGludm9sdmVzIGFuIGVtYmVkZGVkIHN5c3RlbSBvciByZWFsLXRpbWUgb3BlcmF0aW5nIHN5c3RlbSAoUlRPUykuIFwic2NoXCIgdHlwaWNhbGx5IGluZGljYXRlcyBcInNjaGVkdWxlclwiIGFuZCBcImV0c1wiIHByb2JhYmx5IHNpZ25pZmllcyBcIkVhcmxpZXN0IERlYWRsaW5lIEZpcnN0XCIgb3Igc29tZXRoaW5nIHNpbWlsYXIgcmVsYXRlZCB0byB0aW1pbmcgY29uc3RyYWludHMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbiBxdWlja2x5IGFzIEkgZGl2ZSBpbi4gTXkgZm9jdXMgd2lsbCBiZSBvbiB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGltcGxlbWVudGVkIHdpdGhpbi4gSSBleHBlY3QgdG8gZmluZCBmdW5jdGlvbnMgZm9yIHRhc2sgbWFuYWdlbWVudCwgcHJpb3JpdHkgaGFuZGxpbmcsIGFuZCB0aW1lIG1hbmFnZW1lbnQuIE15IGluaXRpYWwgYXBwcm9hY2ggd2lsbCBiZSBhIHF1aWNrIHNjYW4gb2YgdGhlIGNvZGUsIGxvb2tpbmcgZm9yIGtleSBmdW5jdGlvbiBuYW1lcyBhbmQgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgdG8gZXN0YWJsaXNoIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBiZWZvcmUgZGVsdmluZyBpbnRvIHRoZSBkZXRhaWxzLiBJIHdpbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29tbWVudHMgb3IgZG9jdW1lbnRhdGlvbiB3aXRoaW4gdGhlIGZpbGUsIGFzIHRoaXMgaXMgb2Z0ZW4gY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZGV2ZWxvcGVyJ3MgaW50ZW50IGFuZCBob3cgdGhlIHNjaGVkdWxpbmcgcHJvY2VzcyBpcyBkZXNpZ25lZCB0byB3b3JrLiBJdCdzIGxpa2VseSBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gcG9pbnRzIG9yIGFyZWFzIHdoZXJlIGNvbmN1cnJlbmN5IGlzc3VlcyBjb3VsZCBhcmlzZSwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHN1Y2ggc3lzdGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5MjgsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo1Mi4zMDA2MjUwMTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTI0MTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihldHNfaW5pdHxldHNfY2hhbmdlfGV0c19xdWFudHVtX3BhcnNlfGV0c19xZGlzY19vcHMpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9ldHMuYz03Nz1zdGF0aWMgYm9vbCBjbF9pc19hY3RpdmUoc3RydWN0IGV0c19jbGFzcyAqY2wpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgxLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM6ODI6c3RhdGljIGludCBldHNfcXVhbnR1bV9wYXJzZShzdHJ1Y3QgUWRpc2MgKnNjaCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgzLVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9ldHMuYz0yMDQ9c3RhdGljIGludCBldHNfY2xhc3NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCwgdTMyIHBhcmVudGlkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9ldHMuYy0yNDAtXFxubmV0L3NjaGVkL3NjaF9ldHMuYzoyNDE6XFx0ZXJyID0gZXRzX3F1YW50dW1fcGFyc2Uoc2NoLCB0YltUQ0FfRVRTX1FVQU5UQV9CQU5EXSwgXFx1MDAyNnF1YW50dW0sXFxubmV0L3NjaGVkL3NjaF9ldHMuYy0yNDItXFx0XFx0XFx0XFx0ZXh0YWNrKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM9NTQyPXN0YXRpYyBpbnQgZXRzX3FkaXNjX3F1YW50YV9wYXJzZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqcXVhbnRhX2F0dHIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTU2NC1cXHRcXHRcXHR9XFxubmV0L3NjaGVkL3NjaF9ldHMuYzo1NjU6XFx0XFx0XFx0ZXJyID0gZXRzX3F1YW50dW1fcGFyc2Uoc2NoLCBhdHRyLCBcXHUwMDI2cXVhbnRhW2JhbmQrK10sXFxubmV0L3NjaGVkL3NjaF9ldHMuYy01NjYtXFx0XFx0XFx0XFx0XFx0XFx0ZXh0YWNrKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM9ODAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGV0c19jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgxMy1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jOjgxNDpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBldHNfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9ldHMuYy04MTUtXFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNmV0c19jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jPTgyOD1NT0RVTEVfQUxJQVNfTkVUX1NDSChcXFwiZXRzXFxcIik7XFxubmV0L3NjaGVkL3NjaF9ldHMuYy04MjktXFxubmV0L3NjaGVkL3NjaF9ldHMuYzo4MzA6c3RhdGljIGludCBfX2luaXQgZXRzX2luaXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgzMS17XFxubmV0L3NjaGVkL3NjaF9ldHMuYzo4MzI6XFx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZldHNfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgzMy19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jPTgzNT1zdGF0aWMgdm9pZCBfX2V4aXQgZXRzX2V4aXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgzNi17XFxubmV0L3NjaGVkL3NjaF9ldHMuYzo4Mzc6XFx0dW5yZWdpc3Rlcl9xZGlzYyhcXHUwMDI2ZXRzX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9ldHMuYy04MzgtfVxcbm5ldC9zY2hlZC9zY2hfZXRzLmMtODM5LVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM6ODQwOm1vZHVsZV9pbml0KGV0c19pbml0KTtcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTg0MS1tb2R1bGVfZXhpdChldHNfZXhpdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA2OjUyLjM0OTU1Njg1OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDMwNTgzNTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNjaGVkdWxlciBGcmVxdWVuY3kgQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIGBzY2hfZnEuY2AuIFRoaXMgZmlsZSBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgZnJlcXVlbmN5IHNjYWxpbmcgbG9naWMgZm9yIHRoZSBzY2hlZHVsZXIgcmVzaWRlcy4gR2l2ZW4gbXkgZXhwZXJ0aXNlIGluIGtlcm5lbCBpbnRlcm5hbHMsIEknbSBhbnRpY2lwYXRpbmcgdG8gc2VlIHRoZSBjb250cm9sIGxvb3BzLCB0aGUgZGVjaXNpb24tbWFraW5nIHByb2Nlc3NlcyBmb3Igc2VsZWN0aW5nIGZyZXF1ZW5jaWVzLCBhbmQgaG93IHRoZXNlIGRlY2lzaW9ucyBhcmUgdGhlbiBjb21tdW5pY2F0ZWQgdG8gdGhlIGhhcmR3YXJlLiBJ4oCZbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgdGhlIGdvdmVybm9yIGltcGxlbWVudGF0aW9ucyAoaWYgdGhleSdyZSBwcmVzZW50KSwgdGhlIGFsZ29yaXRobXMgdXNlZCBmb3Igd29ya2xvYWQgY2hhcmFjdGVyaXphdGlvbiwgYW5kIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgcG93ZXIgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2NoZWR1bGVyIGFjY291bnRzIGZvciBib3RoIHBlcmZvcm1hbmNlIGFuZCBwb3dlciBjb25zdW1wdGlvbiBpbiBpdHMgZnJlcXVlbmN5IGNob2ljZXMuIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5OTksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo1NS43ODAxNDM0NDhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTMzMzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihmcV9pbml0fGZxX2NoYW5nZXxmcV9xZGlzY19vcHMpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZnEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2ZxLmM9MTA1Mj1zdGF0aWMgaW50IGZxX2xvYWRfcHJpb21hcChzdHJ1Y3QgZnFfc2NoZWRfZGF0YSAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnEuYy0xMDczLVxcbm5ldC9zY2hlZC9zY2hfZnEuYzoxMDc0OnN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEwNzUtXFx0XFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxLmM9MTIxMj1zdGF0aWMgdm9pZCBmcV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEyMjAtXFxubmV0L3NjaGVkL3NjaF9mcS5jOjEyMjE6c3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEyMjItXFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEyNjEtXFx0aWYgKG9wdClcXG5uZXQvc2NoZWQvc2NoX2ZxLmM6MTI2MjpcXHRcXHRlcnIgPSBmcV9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF9mcS5jLTEyNjMtXFx0ZWxzZVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jPTEzNDI9c3RhdGljIGludCBmcV9kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzNzgtXFxubmV0L3NjaGVkL3NjaF9mcS5jOjEzNzk6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZnFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzODAtXFx0LmlkXFx0XFx0PVxcdFxcXCJmcVxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTM4NS1cXHQucGVla1xcdFxcdD1cXHRxZGlzY19wZWVrX2RlcXVldWVkLFxcbm5ldC9zY2hlZC9zY2hfZnEuYzoxMzg2OlxcdC5pbml0XFx0XFx0PVxcdGZxX2luaXQsXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzODctXFx0LnJlc2V0XFx0XFx0PVxcdGZxX3Jlc2V0LFxcbm5ldC9zY2hlZC9zY2hfZnEuYy0xMzg4LVxcdC5kZXN0cm95XFx0PVxcdGZxX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9mcS5jOjEzODk6XFx0LmNoYW5nZVxcdFxcdD1cXHRmcV9jaGFuZ2UsXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzOTAtXFx0LmR1bXBcXHRcXHQ9XFx0ZnFfZHVtcCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnEuYz0xMzk2PXN0YXRpYyBpbnQgX19pbml0IGZxX21vZHVsZV9pbml0KHZvaWQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTQwNS1cXG5uZXQvc2NoZWQvc2NoX2ZxLmM6MTQwNjpcXHRyZXQgPSByZWdpc3Rlcl9xZGlzYyhcXHUwMDI2ZnFfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTQwNy1cXHRpZiAocmV0KVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jPTE0MTI9c3RhdGljIHZvaWQgX19leGl0IGZxX21vZHVsZV9leGl0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9mcS5jLTE0MTMte1xcbm5ldC9zY2hlZC9zY2hfZnEuYzoxNDE0OlxcdHVucmVnaXN0ZXJfcWRpc2MoXFx1MDAyNmZxX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9mcS5jLTE0MTUtXFx0a21lbV9jYWNoZV9kZXN0cm95KGZxX2Zsb3dfY2FjaGVwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDY6NTUuODI5NjgzMDg0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MTQ5ODQ5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYHNjaF9mcV9waWUuY2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gYHNjaF9mcV9waWUuY2AuIEknbSBzdGFydGluZyBoZXJlIGJlY2F1c2UgSSBuZWVkIGEgZGVlcGVyIGRpdmUgaW50byBob3cgdGhpcyBzY2hlZHVsZXIgaGFuZGxlcyB0aGUgdmFyaW91cyBxdWV1ZXMsIGVzcGVjaWFsbHkgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gZmFpciBxdWV1aW5nIGFuZCBwYWNrZXQgZGVsYXkgZXN0aW1hdGlvbi4gTXkgZ3V0IHRlbGxzIG1lIHNvbWV0aGluZyBpcyBhbWlzcyBpbiBob3cgdGhleSdyZSBjb21iaW5lZCwgb3IgcGVyaGFwcyBhIHN1YnRsZSBidWcgaXMgbHVya2luZyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHJlbGF0ZWQgdG8gdGhlIFBJRSBjb21wb25lbnQuIEkgd2FudCB0byBjaGVjayB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMsIHNwZWNpZmljYWxseSB0aGUgcGVyLXF1ZXVlIHN0YXRlLiBJJ2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyB3aXRoIHRoZSBgbmV0ZW1gIGNvbXBvbmVudCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIExldCBtZSBleGFtaW5lIGhvdyB0aGUgZmFpciBxdWV1aW5nIGlzIGltcGxlbWVudGVkLCBjb25maXJtIGlmIHRoZSByb3VuZCByb2JpbiBhcHByb2FjaCBpcyBpbXBsZW1lbnRlZCBhbmQgaG93IGl0IGlzIGltcGxlbWVudGVkLiBJIHNob3VsZCBsb29rIHNwZWNpZmljYWxseSBhdCBob3cgUElFJ3MgYWN0aXZlIHF1ZXVlIG1hbmFnZW1lbnQgaXMgdHJpZ2dlcmVkIGFuZCB3aGV0aGVyIHRoZXJlJ3MgYW55IHVubmVjZXNzYXJ5IGJsb2NraW5nIG9yIGNvbnRlbnRpb24gdGhhdCBjb3VsZCBiZSBjYXVzaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCB1bmRlciBoaWdoIGxvYWQuIEkgbmVlZCB0byBsb29rIGF0IGhvdyBkaWZmZXJlbnQgdHJhZmZpYyBjbGFzc2VzIGFyZSB3ZWlnaHRlZCBvciBwcmlvcml0aXplZCB3aXRoaW4gdGhlIFBJRSBwYXJhbWV0ZXJzLiBJIHNob3VsZCBsb29rIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHJlbGF0ZWQgdG8gdGhlIGVucXVldWUgYW5kIGRlcXVldWUgb3BlcmF0aW9ucywgYXMgd2VsbCBhcyBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgc3RhdGlzdGljcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwMjksIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo1OS40NDQ2NzExMDlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxOTkzNjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihmcV9waWVfaW5pdHxmcV9waWVfY2hhbmdlfGZxX3BpZV9xZGlzY19vcHMpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZnFfcGllLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9mcV9waWUuYz0yMzg9c3RhdGljIHN0cnVjdCBza19idWZmICpmcV9waWVfcWRpc2NfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMjg2LVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6Mjg3OnN0YXRpYyBpbnQgZnFfcGllX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMjg4LVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTM4OD1zdGF0aWMgdm9pZCBmcV9waWVfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTQyMC1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjQyMTpzdGF0aWMgaW50IGZxX3BpZV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy00MjItXFx0XFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNDQyLVxcdGlmIChvcHQpIHtcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjQ0MzpcXHRcXHRlcnIgPSBmcV9waWVfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNDQ0LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYz01NTY9c3RhdGljIHZvaWQgZnFfcGllX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU2NS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjU2NjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBmcV9waWVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NjctXFx0LmlkXFx0XFx0PSBcXFwiZnFfcGllXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTcxLVxcdC5wZWVrXFx0XFx0PSBxZGlzY19wZWVrX2RlcXVldWVkLFxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6NTcyOlxcdC5pbml0XFx0XFx0PSBmcV9waWVfaW5pdCxcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU3My1cXHQuZGVzdHJveVxcdD0gZnFfcGllX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NzQtXFx0LnJlc2V0XFx0XFx0PSBmcV9waWVfcmVzZXQsXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1NzU6XFx0LmNoYW5nZVxcdFxcdD0gZnFfcGllX2NoYW5nZSxcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU3Ni1cXHQuZHVtcFxcdFxcdD0gZnFfcGllX2R1bXAsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTU4Mj1zdGF0aWMgaW50IF9faW5pdCBmcV9waWVfbW9kdWxlX2luaXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU4My17XFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1ODQ6XFx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZmcV9waWVfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU4NS19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTU4Nz1zdGF0aWMgdm9pZCBfX2V4aXQgZnFfcGllX21vZHVsZV9leGl0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01ODgte1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6NTg5OlxcdHVucmVnaXN0ZXJfcWRpc2MoXFx1MDAyNmZxX3BpZV9xZGlzY19vcHMpO1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTkwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDY6NTkuNDk2Njc1MTU1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc2MDYyODcxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYHNjaF9oaGYuY2AqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIGBzY2hfaGhmLmNgLiBHaXZlbiB0aGUgY29udGV4dCBvZiB3aGF0IHdlJ3JlIHdvcmtpbmcgb24sIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gYXNzZXNzIGhvdyB0aGlzIHNwZWNpZmljIGZpbGUgY29udHJpYnV0ZXMgdG8gdGhlIG92ZXJhbGwgc2NoZWR1bGluZyBhbmQgcG90ZW50aWFsbHkgdGhlIGhhbmRsaW5nIG9mIGhpZ2gtZnJlcXVlbmN5IGV2ZW50cy4gSSdtIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMg4oCTIGxpa2VseSByZWxhdGVkIHRvIHRhc2sgcXVldWVzLCBydW5xdWV1ZXMsIG9yIGV2ZW50IHRpbWVycyDigJMgYW5kIGhvdyB0aG9zZSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllci4gSSBleHBlY3QgdG8gZmluZCBzb21lIGNyaXRpY2FsIHNlY3Rpb25zIGhlYXZpbHkgZ3VhcmRlZCB3aXRoIHNwaW5sb2NrcyBvciBtdXRleGVzLCBhbmQgSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGxvY2sgaGllcmFyY2hpZXMgdG8gcHJldmVudCBhbnkgcG90ZW50aWFsIGRlYWRsb2Nrcy5cblxuSSdsbCBiZSB6ZXJvaW5nIGluIG9uIGFueSBhcmVhcyB0aGF0IGRlYWwgd2l0aCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGNvbnRleHQgc3dpdGNoaW5nLCBhbmQgcHJlZW1wdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgSEhGIGNvbXBvbmVudCAod2hhdGV2ZXIgXCJISEZcIiBhY3R1YWxseSAqaXMqIGluIHRoaXMgcHJvamVjdCDigJMgaGlnaC1mcmVxdWVuY3kgaGFuZGxpbmcsIHBlcmhhcHM/KSBpcyBpbnRlZ3JhdGVkIHdpdGggdGhlIHN0YW5kYXJkIHNjaGVkdWxlci4gRG9lcyBpdCBtb2RpZnkgdGhlIHJ1bnF1ZXVlIHByaW9yaXRpZXM/IERvZXMgaXQgaGF2ZSBpdHMgb3duIGRlZGljYXRlZCB0aHJlYWQgb3Igd29ya2VyIHBvb2w/IEFyZSB0aGVyZSBhbnkgc3BlY2lhbGl6ZWQgc3lzdGVtIGNhbGxzIG9yIGtlcm5lbCBBUElzIGV4cG9zZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eT9cblxuSSdtIGFsc28ga2VlbiB0byBzcG90IGFueSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zLiBBcmUgdGhleSB1c2luZyB0ZWNobmlxdWVzIGxpa2UgcGVyLUNQVSBkYXRhIHN0cnVjdHVyZXMsIGxvY2tsZXNzIGFsZ29yaXRobXMsIG9yIGJhdGNoIHByb2Nlc3NpbmcgdG8gbWluaW1pemUgb3ZlcmhlYWQ/IEFueSB1c2Ugb2YgaGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMgd2lsbCBiZSBvZiBwYXJ0aWN1bGFyIGludGVyZXN0LiBFc3NlbnRpYWxseSwgSSdtIHRyeWluZyB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgcm9sZSBhbmQgaW1wYWN0IG9mIGBzY2hfaGhmLmNgIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGhlIHNvb25lciBJIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSwgdGhlIHNvb25lciBJIGNhbiBkaWFnbm9zZSB0aGUgY3VycmVudCBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExODIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNzowNy4xMDI5NjYzMzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDQyMTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihoaGZfaW5pdHxoaGZfY2hhbmdlfGhoZl9xZGlzY19vcHMpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfaGhmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9oaGYuYz01Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGhoZl9wb2xpY3lbVENBX0hIRl9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNTM2LVxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NTM3OnN0YXRpYyBpbnQgaGhmX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNTM4LVxcdFxcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNjA4LVxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NjA5OnN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTYxMC1cXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9oaGYuYy02MjctXFx0aWYgKG9wdCkge1xcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NjI4OlxcdFxcdGludCBlcnIgPSBoaGZfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNjI5LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9oaGYuYz03MTQ9c3RhdGljIGludCBoaGZfZHVtcF9zdGF0cyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGduZXRfZHVtcCAqZClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzI2LVxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzI3OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGhoZl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTcyOC1cXHQuaWRcXHRcXHQ9XFx0XFxcImhoZlxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTczMy1cXHQucGVla1xcdFxcdD1cXHRxZGlzY19wZWVrX2RlcXVldWVkLFxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzM0OlxcdC5pbml0XFx0XFx0PVxcdGhoZl9pbml0LFxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzM1LVxcdC5yZXNldFxcdFxcdD1cXHRoaGZfcmVzZXQsXFxubmV0L3NjaGVkL3NjaF9oaGYuYy03MzYtXFx0LmRlc3Ryb3lcXHQ9XFx0aGhmX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9oaGYuYzo3Mzc6XFx0LmNoYW5nZVxcdFxcdD1cXHRoaGZfY2hhbmdlLFxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzM4LVxcdC5kdW1wXFx0XFx0PVxcdGhoZl9kdW1wLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9oaGYuYz03NDQ9c3RhdGljIGludCBfX2luaXQgaGhmX21vZHVsZV9pbml0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9oaGYuYy03NDUte1xcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzQ2OlxcdHJldHVybiByZWdpc3Rlcl9xZGlzYyhcXHUwMDI2aGhmX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9oaGYuYy03NDctfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9oaGYuYz03NDk9c3RhdGljIHZvaWQgX19leGl0IGhoZl9tb2R1bGVfZXhpdCh2b2lkKVxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzUwLXtcXG5uZXQvc2NoZWQvc2NoX2hoZi5jOjc1MTpcXHR1bnJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZoaGZfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTc1Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA3OjA3LjE1MjQxNzQ0M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzQzOTE4NjE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgc2NoX3NmcS5jYCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gYHNjaF9zZnEuY2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpIGltcGxlbWVudGF0aW9uLiBMZXQncyBzZWUgd2hhdCB0aGUgY3VycmVudCBjb2RlIGxvb2tzIGxpa2UuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGNvcmUgYWxnb3JpdGhtcyDigJMgaG93IGl0J3MgaGFzaGluZywgaG93IHRoZSBxdWV1ZXMgYXJlIG1hbmFnZWQsIGFuZCwgb2YgY291cnNlLCB0aGUgZGVxdWV1ZSBwcm9jZXNzLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHdoZXJlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBtaWdodCBiZSBwb3NzaWJsZS4gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgbGluZ2VyaW5nPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIHJlZmluZW1lbnQ/IFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCBwYXJzaW5nIHRoZSBsb2dpYy4gTGV0J3Mgc2VlIGlmIGFueSByZWNlbnQgY29tbWl0cyB3YXJyYW50IGEgc2Vjb25kIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzQ0LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDc6MjAuNTkxNjA2OTgzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTMzMzYxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoc2ZxX2luaXR8c2ZxX2NoYW5nZXxzZnFfcWRpc2Nfb3BzKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3NmcS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfc2ZxLmM9NjA0PXN0YXRpYyB2b2lkIHNmcV9wZXJ0dXJiYXRpb24oc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTYyMS1cXHQvKiBxLVxcdTAwM2VwZXJ0dXJiX3BlcmlvZCBjYW4gY2hhbmdlIHVuZGVyIHVzIGZyb21cXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjYyMjpcXHQgKiBzZnFfY2hhbmdlKCkgYW5kIHNmcV9kZXN0cm95KCkuXFxubmV0L3NjaGVkL3NjaF9zZnEuYy02MjMtXFx0ICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTYyOS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjYzMDpzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTYzMS1cXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jPTc3MD1zdGF0aWMgdm9pZCBzZnFfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtNzgxLVxcbm5ldC9zY2hlZC9zY2hfc2ZxLmM6NzgyOnN0YXRpYyBpbnQgc2ZxX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTc4My1cXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9zZnEuYy04MTItXFx0aWYgKG9wdCkge1xcbm5ldC9zY2hlZC9zY2hfc2ZxLmM6ODEzOlxcdFxcdGludCBlcnIgPSBzZnFfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtODE0LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jPTk1MT1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBzZnFfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9zZnEuYy05NjEtXFxubmV0L3NjaGVkL3NjaF9zZnEuYzo5NjI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgc2ZxX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtOTYzLVxcdC5jbF9vcHNcXHRcXHQ9XFx0XFx1MDAyNnNmcV9jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk2OC1cXHQucGVla1xcdFxcdD1cXHRxZGlzY19wZWVrX2RlcXVldWVkLFxcbm5ldC9zY2hlZC9zY2hfc2ZxLmM6OTY5OlxcdC5pbml0XFx0XFx0PVxcdHNmcV9pbml0LFxcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtOTcwLVxcdC5yZXNldFxcdFxcdD1cXHRzZnFfcmVzZXQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jPTk3OD1zdGF0aWMgaW50IF9faW5pdCBzZnFfbW9kdWxlX2luaXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk3OS17XFxubmV0L3NjaGVkL3NjaF9zZnEuYzo5ODA6XFx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZzZnFfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk4MS19XFxubmV0L3NjaGVkL3NjaF9zZnEuYz05ODI9c3RhdGljIHZvaWQgX19leGl0IHNmcV9tb2R1bGVfZXhpdCh2b2lkKVxcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtOTgzLXtcXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjk4NDpcXHR1bnJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZzZnFfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk4NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA3OjIwLjY1MDk0NzM2OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NTAzOTE4NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gQ2hlY2tsaXN0KipcblxuT2theSwgdGltZSB0byBtYWtlIHN1cmUgdGhpcyBzZXR1cCBpcyBjb21wbGV0ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHJ1biB0aHJvdWdoIHRoZSBlc3NlbnRpYWwgc2NoZWR1bGluZyBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXNlIG9wdGlvbnMgYXJlIGVuYWJsZWQgaW4gYG1lbnVjb25maWdgOiBgTkVUX1NDSEVEYCwgYE5FVF9TQ0hfRFJSYCwgYE5FVF9TQ0hfRFVBTFBJMmAsIGBORVRfU0NIX0VUU2AsIGBORVRfU0NIX0ZRYCwgYE5FVF9TQ0hfRlFfUElFYCwgYE5FVF9TQ0hfSEhGYCwgYE5FVF9TQ0hfUElFYCwgYW5kIGBORVRfU0NIX1NGUWAuIEknbGwgY3Jvc3MtcmVmZXJlbmNlIHRoZXNlIGFnYWluc3Qgd2hhdCBJJ3ZlIHByZXZpb3VzbHkgd29ya2VkIG9uLlxuXG5BZnRlciB0aGF0LCBJJ2xsIGRpdmUgaW50byBgbmV0L3NjaGVkL0tjb25maWdgIHRvIGxvb2sgZm9yIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBJdCdzIGNydWNpYWwgbm90IHRvIG1pc3MgYW55IGltcGxpZWQgcmVxdWlyZW1lbnRzIG9yIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBjb25maWd1cmF0aW9uczsgbWlzc2luZyBvbmUgY2FuIGNhdXNlIG1ham9yIGhlYWRhY2hlcyBkb3duIHRoZSByb2FkLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzNTUsIk91dHB1dFRva2VucyI6NTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDc6MjUuMTU0ODY5NDE2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTY3NDUyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF8oRFJSfERVQUxQSTJ8RVRTfEZRfEZRX1BJRXxISEZ8UElFfFNGUSlcXFxcYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0xMDA9Y29uZmlnIE5FVF9TQ0hfU0ZCXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMTAtXFxubmV0L3NjaGVkL0tjb25maWc6MTExOmNvbmZpZyBORVRfU0NIX1NGUVxcbm5ldC9zY2hlZC9LY29uZmlnLTExMi1cXHR0cmlzdGF0ZSBcXFwiU3RvY2hhc3RpYyBGYWlybmVzcyBRdWV1ZWluZyAoU0ZRKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTE5NT1jb25maWcgTkVUX1NDSF9ORVRFTVxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjA2LVxcbm5ldC9zY2hlZC9LY29uZmlnOjIwNzpjb25maWcgTkVUX1NDSF9EUlJcXG5uZXQvc2NoZWQvS2NvbmZpZy0yMDgtXFx0dHJpc3RhdGUgXFxcIkRlZmljaXQgUm91bmQgUm9iaW4gc2NoZWR1bGVyIChEUlIpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Mjg4PWNvbmZpZyBORVRfU0NIX0NBS0VcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTI5OC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyOTk6Y29uZmlnIE5FVF9TQ0hfRlFcXG5uZXQvc2NoZWQvS2NvbmZpZy0zMDAtXFx0dHJpc3RhdGUgXFxcIkZhaXIgUXVldWVcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zMTItXFxubmV0L3NjaGVkL0tjb25maWc6MzEzOmNvbmZpZyBORVRfU0NIX0hIRlxcbm5ldC9zY2hlZC9LY29uZmlnLTMxNC1cXHR0cmlzdGF0ZSBcXFwiSGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTMyMS1cXG5uZXQvc2NoZWQvS2NvbmZpZzozMjI6Y29uZmlnIE5FVF9TQ0hfUElFXFxubmV0L3NjaGVkL0tjb25maWctMzIzLVxcdHRyaXN0YXRlIFxcXCJQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoUElFKSBzY2hlZHVsZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zMzMtXFxubmV0L3NjaGVkL0tjb25maWc6MzM0OmNvbmZpZyBORVRfU0NIX0ZRX1BJRVxcbm5ldC9zY2hlZC9LY29uZmlnLTMzNS1cXHRkZXBlbmRzIG9uIE5FVF9TQ0hfUElFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz0zNjM9Y29uZmlnIE5FVF9TQ0hfUExVR1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMzg4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjM4OTpjb25maWcgTkVUX1NDSF9FVFNcXG5uZXQvc2NoZWQvS2NvbmZpZy0zOTAtXFx0dHJpc3RhdGUgXFxcIkVuaGFuY2VkIHRyYW5zbWlzc2lvbiBzZWxlY3Rpb24gc2NoZWR1bGVyIChFVFMpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NDA2PWNvbmZpZyBORVRfU0NIX0JQRlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDE3LVxcbm5ldC9zY2hlZC9LY29uZmlnOjQxODpjb25maWcgTkVUX1NDSF9EVUFMUEkyXFxubmV0L3NjaGVkL0tjb25maWctNDE5LVxcdHRyaXN0YXRlIFxcXCJEdWFsIFF1ZXVlIFBJIFNxdWFyZSAoRFVBTFBJMikgc2NoZWR1bGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNzoyNS4yMTA1NTAyNTJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTM2NDg3ODgzNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZy4gRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORVRfU0NIX0ZRX1BJRWA7IEkgc2VlIHRoYXQgaXQgZGVwZW5kcyBvbiBgTkVUX1NDSF9QSUVgLiAgTmV4dCwgd2hhdCBhYm91dCB0aGUgdG9wLWxldmVsIGBORVRfU0NIRURgPyBEb2VzIGl0IGhhdmUgYW55IGRlcGVuZGVuY2llcyBpdHNlbGY/IExldCBtZSBxdWlja2x5IHJldmlldyB0aGUgZmlyc3QgZmV3IGxpbmVzIG9mIGBuZXQvc2NoZWQvS2NvbmZpZ2AgdG8gY29uZmlybSwgYW5kIGNvbmZpcm0gdGhhdCBgTkVUX1NDSEVEYCBpcyBhIHN0YW5kYXJkIHN1YnN5c3RlbSBjb25maWcuXG5cbkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLCBJIGNhbiBzZWUgdGhhdCB0aGVzZSBhcmU6IGBkcnJfY2hhbmdlX2NsYXNzYCwgYGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbmAsIGBtdXN0X2Ryb3BgLCBgZ2V0X21lbW9yeV9saW1pdGAsIGBldHNfcXVhbnR1bV9wYXJzZWAsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBwaWVfZHJvcF9lYXJseWAsIGFuZCBgc2ZxX2NoYW5nZWAuIE5vdywgZm9jdXNpbmcgaW4sIEkgc2VlIGBwaWVfZHJvcF9lYXJseWAgaXMgbm9uLXN0YXRpYywgbWVhbmluZyBpdCdzIGV4cG9ydGVkIGFuZCBhIGdvb2QgdGFyZ2V0LiBUaGUgb3RoZXIgZnVuY3Rpb25zIGFyZSBzdGF0aWMgY2FsbGJhY2sgZnVuY3Rpb25zIGluIHFkaXNjIG9wZXJhdGlvbnMsIHNvIHRoZXkgYXJlIGxpa2VseSBlbnRyeXBvaW50cyB3aXRoaW4gdGhhdCBjb250ZXh0LlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhlIHZpc2libGUgc3ltYm9scyBhbmQgZW50cnlwb2ludHMgcmVsYXRlZCB0byBxZGlzYyBvcGVyYXRpb25zLiBGcm9tIHRoZSBgcWRpc2Mgb3BzYCBzdHJ1Y3RzLCBJIGNhbiBzZWUgdGhlc2Uga2V5IGZ1bmN0aW9ucyBhcmUgcmVnaXN0ZXJlZDogYGRycl9jaGFuZ2VfY2xhc3NgLCBgZHVhbHBpMl9jaGFuZ2VgLCBgZHVhbHBpMl9pbml0YCwgYGV0c19jbGFzc19jaGFuZ2VgLCBgZXRzX3FkaXNjX2NoYW5nZWAsIGBmcV9jaGFuZ2VgLCBgZnFfaW5pdGAsIGBmcV9waWVfY2hhbmdlYCwgYGhoZl9jaGFuZ2VgLCBgaGhmX2luaXRgLCBgcGllX2NoYW5nZWAsIGBwaWVfaW5pdGAsIGBwaWVfZHJvcF9lYXJseWAsIGBzZnFfY2hhbmdlYCwgYW5kIGBzZnFfaW5pdGAuXG5cblRpbWUgdG8gc2VsZWN0IHRoZSBrZXkgc3ltYm9scyBmb3IgdGhlIGZ1enppbmcgY2FtcGFpZ24sIGZvY3VzaW5nIG9uIHRoZSBjcml0aWNhbCBub24taG90cGF0aCBmdW5jdGlvbnMuIFRoYXQgbWVhbnM6IGBwaWVfZHJvcF9lYXJseWAsIGBkcnJfY2hhbmdlX2NsYXNzYCwgYGR1YWxwaTJfY2hhbmdlYCwgYGR1YWxwaTJfaW5pdGAsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBwaWVfY2hhbmdlYCwgYW5kIGBzZnFfY2hhbmdlYC5cblxuTm93LCB0aGUgZmluYWwgc3RhZ2UgaXMgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zIGFuZCBhc3Nlc3MgXCJXb3J0aEZ1enppbmcuXCIgR2l2ZW4gdGhhdCB0aGlzIGludm9sdmVzIGNoYW5nZXMgdG8gcXVhbnR1bSBjYWxjdWxhdGlvbiwgYm91bmRzIGNoZWNraW5nIGFjcm9zcyBlaWdodCBkaWZmZXJlbnQgbmV0d29yayBwYWNrZXQgc2NoZWR1bGVycywgYW5kIGFsdGVyYXRpb25zIHRvIHF1ZXVpbmcvZHJvcCBiZWhhdmlvciBhbG9uZyB3aXRoIG5ldGxpbmsgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggb3VyIHRpbWUuXG5cbkJhc2VkIG9uIHRoYXQsIEknbGwgaWRlbnRpZnkgYW5kIGVuYWJsZSBhbGwgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZzogYE5FVF9TQ0hFRGAsIGBORVRfU0NIX0RSUmAsIGBORVRfU0NIX0RVQUxQSTJgLCBgTkVUX1NDSF9FVFNgLCBgTkVUX1NDSF9GUWAsIGBORVRfU0NIX0ZRX1BJRWAsIGBORVRfU0NIX0hIRmAsIGBORVRfU0NIX1BJRWAsIGFuZCBgTkVUX1NDSF9TRlFgLiBGaW5hbGx5LCBpdCdzIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI4MSwiT3V0cHV0VG9rZW5zIjoyNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDc6MzguODU5MzQyMTgxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMzNDY4NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9EUlJcIixcbiAgICBcIk5FVF9TQ0hfRFVBTFBJMlwiLFxuICAgIFwiTkVUX1NDSF9FVFNcIixcbiAgICBcIk5FVF9TQ0hfRlFcIixcbiAgICBcIk5FVF9TQ0hfRlFfUElFXCIsXG4gICAgXCJORVRfU0NIX0hIRlwiLFxuICAgIFwiTkVUX1NDSF9QSUVcIixcbiAgICBcIk5FVF9TQ0hfU0ZRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGllX2Ryb3BfZWFybHlcIixcbiAgICBcImRycl9jaGFuZ2VfY2xhc3NcIixcbiAgICBcImR1YWxwaTJfY2hhbmdlXCIsXG4gICAgXCJkdWFscGkyX2luaXRcIixcbiAgICBcImV0c19xZGlzY19jaGFuZ2VcIixcbiAgICBcImZxX2NoYW5nZVwiLFxuICAgIFwiZnFfaW5pdFwiLFxuICAgIFwiZnFfcGllX2NoYW5nZVwiLFxuICAgIFwiaGhmX2NoYW5nZVwiLFxuICAgIFwiaGhmX2luaXRcIixcbiAgICBcInBpZV9jaGFuZ2VcIixcbiAgICBcInNmcV9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVhbnR1bSBhbmQgTVRVIGhhbmRsaW5nIC8gYm91bmRpbmcgbG9naWMgYWNyb3NzIG11bHRpcGxlIG5ldHdvcmsgcXVldWVpbmcgZGlzY2lwbGluZXMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSBpbiBuZXQvc2NoZWQvLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBxZGlzYyBpbml0aWFsaXphdGlvbiwgY29uZmlndXJhdGlvbiB2aWEgbmV0bGluayAocnRuZXRsaW5rL3RjKSwgYW5kIHBhY2tldCBkcm9wL3NjaGVkdWxpbmcgZGVjaXNpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9EUlJcIixcbiAgICBcIk5FVF9TQ0hfRFVBTFBJMlwiLFxuICAgIFwiTkVUX1NDSF9FVFNcIixcbiAgICBcIk5FVF9TQ0hfRlFcIixcbiAgICBcIk5FVF9TQ0hfRlFfUElFXCIsXG4gICAgXCJORVRfU0NIX0hIRlwiLFxuICAgIFwiTkVUX1NDSF9QSUVcIixcbiAgICBcIk5FVF9TQ0hfU0ZRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGllX2Ryb3BfZWFybHlcIixcbiAgICBcImRycl9jaGFuZ2VfY2xhc3NcIixcbiAgICBcImR1YWxwaTJfY2hhbmdlXCIsXG4gICAgXCJkdWFscGkyX2luaXRcIixcbiAgICBcImV0c19xZGlzY19jaGFuZ2VcIixcbiAgICBcImZxX2NoYW5nZVwiLFxuICAgIFwiZnFfaW5pdFwiLFxuICAgIFwiZnFfcGllX2NoYW5nZVwiLFxuICAgIFwiaGhmX2NoYW5nZVwiLFxuICAgIFwiaGhmX2luaXRcIixcbiAgICBcInBpZV9jaGFuZ2VcIixcbiAgICBcInNmcV9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVhbnR1bSBhbmQgTVRVIGhhbmRsaW5nIC8gYm91bmRpbmcgbG9naWMgYWNyb3NzIG11bHRpcGxlIG5ldHdvcmsgcXVldWVpbmcgZGlzY2lwbGluZXMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSBpbiBuZXQvc2NoZWQvLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBxZGlzYyBpbml0aWFsaXphdGlvbiwgY29uZmlndXJhdGlvbiB2aWEgbmV0bGluayAocnRuZXRsaW5rL3RjKSwgYW5kIHBhY2tldCBkcm9wL3NjaGVkdWxpbmcgZGVjaXNpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNzozOC45NDI3MDA3NjVaIiwiU2VxIjozNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MjA4OTY1MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNzozOC45NDMzMjYzNjVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3OTIwMjY1ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGp1c3RzIGlucHV0IHZhbGlkYXRpb24gYW5kIGFyaXRobWV0aWMgYm91bmRzIG9uIHF1YW50dW0gYW5kIE1UVSBwYXJhbWV0ZXJzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgc2NoZWR1bGVycyAoRFJSLCBEdWFsUEkyLCBFVFMsIEZRLCBGUS1QSUUsIEhIRiwgUElFLCBTRlEpIHVzaW5nIGNsYW1waW5nIGZ1bmN0aW9ucyAoY2xhbXBfdCwgbWF4KS4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBtb2RpZnksIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnksIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCBvciBkYXRhIHRyYW5zZmVycyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZCwgYW5kIHN0YW5kYXJkIEtBU0FOL3Nhbml0aXplciBidWlsZHMgYXJlIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWYzNjMyZDVhNTc3M2E0NTBjOTQ4NTkzNDg1ZjAyMzJlM2JhNTYwOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTA6MDQ6MzkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xuaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHJyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcbkBAIC04Miw4ICs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiU3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXCIpO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4rXHRcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9IGVsc2Vcbi1cdFx0cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0aWYgKGNsICE9IE5VTEwpIHtcbiBcdFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5AQCAtMjA4LDkgKzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKVxuIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxuIHtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbitcbiBcdHEtXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xuLVx0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxuK1x0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICpcbiBcdFx0KChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2MgLSAoaW50KXEtXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcbiBcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xuIH1cbkBAIC0yODUsOCArMjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuIFx0dTY0IGxvY2FsX2xfcHJvYjtcbiBcdGJvb2wgb3ZlcmxvYWQ7XG4gXHR1MzIgcHJvYjtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcbitcdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBtdHUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByb2IgPSBSRUFEX09OQ0UocS1cdTAwM2VwaTJfcHJvYik7XG5AQCAtNzEyLDcgKzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxuIFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXG4gXHQgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuXG4gXHQgKi9cbi1cdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcbitcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbitcdFx0XHRcdFx0XHQgICAgIDEsIDEgXHUwMDNjXHUwMDNjIDIwKSk7XG4gXG4gXHRpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKVxuIFx0XHRyZXR1cm4gVTMyX01BWDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xuaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcbkBAIC04MywxMSArODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxuIFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XG4tXHRpZiAoISpxdWFudHVtKSB7XG4tXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR9XG4rXHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjMyLDExICs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nXG4tXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS5cbitcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZ1xuK1x0ICogdmFsdWVzIGhlcmUuXG4gXHQgKi9cbiBcdGZvciAoaSA9IG5zdHJpY3Q7IGkgXHUwMDNjIG5iYW5kczsgaSsrKSB7XG4gXHRcdGlmICghcXVhbnRhW2ldKVxuLVx0XHRcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRcdHF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxuK1x0XHRcdFx0XHQgICAgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9XG4gXG4gXHQvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jXG5pbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcbkBAIC05ODAsNyArOTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0ge1xuLVx0Lm1heCA9IElOVF9NQVgsXG4rXHQubWF4ID0gMSBcdTAwM2NcdTAwM2MgMjAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggKyAxXSA9IHtcbkBAIC0xMTA2LDE0ICsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xuLVx0XHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XG4rXHRcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXG4rXHRcdFx0XHQgICAgIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuLVx0XHRpZiAocXVhbnR1bSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgcXVhbnR1bSBcdTAwM2M9ICgxIFx1MDAzY1x1MDAzYyAyMCkpIHtcbi1cdFx0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHF1YW50dW1cIik7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0fVxuK1x0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4gXHR9XG4gXG4gXHRpZiAodGJbVENBX0ZRX0lOSVRJQUxfUVVBTlRVTV0pXG5AQCAtMTIzMiw3ICsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzY2gtXHUwMDNlbGltaXRcdFx0PSAxMDAwMDtcbiBcdHEtXHUwMDNlZmxvd19wbGltaXRcdFx0PSAxMDA7XG4gXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbi1cdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuK1x0cS1cdTAwM2VxdWFudHVtXHRcdD0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2Vpbml0aWFsX3F1YW50dW1cdD0gbWluX3QodTMyLCAxMCAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2VmbG93X3JlZmlsbF9kZWxheVx0PSBtc2Vjc190b19qaWZmaWVzKDQwKTtcbiBcdHEtXHUwMDNlZmxvd19tYXhfcmF0ZVx0PSB+MFVMO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXG5pbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuQEAgLTM0MSw3ICszNDEsOCBAQCBzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSlcbi1cdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTtcbitcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sXG4rXHRcdFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxuIFx0XHRXUklURV9PTkNFKHEtXHUwMDNlbWVtb3J5X2xpbWl0LFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKVxuLVx0XHRuZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pO1xuK1x0XHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcbiBcdFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XG5AQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdGludCBpO1xuIFxuIFx0c2NoLVx1MDAzZWxpbWl0ID0gMTAwMDtcbi1cdHEtXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0cS1cdTAwM2VxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdGdldF9yYW5kb21fYnl0ZXMoXHUwMDI2cS1cdTAwM2VwZXJ0dXJiYXRpb24sIHNpemVvZihxLVx1MDAzZXBlcnR1cmJhdGlvbikpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cS1cdTAwM2VuZXdfYnVja2V0cyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxLVx1MDAzZW9sZF9idWNrZXRzKTtcbkBAIC02MjQsMTAgKzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHEtXHUwMDNlaGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi9cbiBcdHEtXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgPSAyO1xuIFxuLVx0aWYgKChpbnQpcS1cdTAwM2VxdWFudHVtIFx1MDAzYz0gMCB8fFxuLVx0ICAgICh1NjQpcS1cdTAwM2VxdWFudHVtICogcS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCBcdTAwM2UgSU5UX01BWClcbi1cdFx0cS1cdTAwM2VxdWFudHVtID0gMjU2O1xuLVxuIFx0aWYgKG9wdCkge1xuIFx0XHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfcGllLmNcbkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG4ge1xuIFx0dTY0IHJuZDtcbiBcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cdTAwM2Vwcm9iO1xuLVx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0LyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqL1xuIFx0aWYgKHZhcnMtXHUwMDNlYnVyc3RfdGltZSBcdTAwM2UgMClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xuaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcbkBAIC02NjAsNiArNjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSBcdTAwM2UgMSBcdTAwM2NcdTAwM2MgMjApIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJxdWFudHVtIHRvbyBsYXJnZVwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpZiAoY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzYyAwIHx8XG4gXHQgICAgY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHBlcnR1cmIgcGVyaW9kXCIpO1xuQEAgLTY4OCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xuIFx0aWYgKGN0bC1cdTAwM2VxdWFudHVtKVxuLVx0XHRxdWFudHVtID0gY3RsLVx1MDAzZXF1YW50dW07XG4rXHRcdHF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLVx1MDAzZXF1YW50dW0pO1xuIFx0aWYgKGN0bC1cdTAwM2VmbG93cylcbiBcdFx0bWF4Zmxvd3MgPSBtaW5fdCh1MzIsIGN0bC1cdTAwM2VmbG93cywgU0ZRX01BWF9GTE9XUyk7XG4gXHRpZiAoY3RsLVx1MDAzZWRpdmlzb3IpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXG5pbmRleCBlZTA5ZTZkNmZkZjNjLi5kMmVhYjYxYzA5OWE4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZXRzLmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXG5AQCAtOTg3LDcgKzk4Nyw3IEBAXG4gICAgIH0sXG4gICAgIHtcbiAgICAgICAgIFwiaWRcIjogXCI0MWY1XCIsXG4tICAgICAgICBcIm5hbWVcIjogXCJFVFMgb2ZmbG9hZCB3aGVyZSB0aGUgc3VtIG9mIHF1YW50YSB3cmFwcyB1MzJcIixcbisgICAgICAgIFwibmFtZVwiOiBcIkVUUyBvZmZsb2FkIHdpdGggb3V0LW9mLXJhbmdlIHF1YW50YSBjbGFtcGVkXCIsXG4gICAgICAgICBcImNhdGVnb3J5XCI6IFtcbiAgICAgICAgICAgICBcInFkaXNjXCIsXG4gICAgICAgICAgICAgXCJldHNcIlxuQEAgLTEwMDIsNyArMTAwMiw3IEBAXG4gICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBxZGlzYyBhZGQgZGV2ICRFVEggcm9vdCBldHMgcXVhbnRhIDQyOTQ5NjcyOTQgMSAxXCIsXG4gICAgICAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuICAgICAgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSFwiLFxuLSAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBldHMgLipiYW5kcyAzIHF1YW50YSA0Mjk0OTY3Mjk0IDEgMVwiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBldHMgLipiYW5kcyAzIHF1YW50YSAxMDQ4NTc2IDI1NiAyNTZcIixcbiAgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiZWNobyBcXFwiMVxcXCIgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXCJcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA3OjM4Ljk0MzMyNzcwNVoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3OTIwMjQyNjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFzc2Vzc21lbnQ6IFRoaXMgUGF0Y2ggaXMgQ2xlYW4qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IEtNU0FOIGlzbid0IG5lZWRlZCBoZXJlLCBidXQgbGV0J3Mgd2FsayB0aHJvdWdoIHRoZSBkZXRhaWxzLiBUaGlzIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2NzIOKAkyBzY2hfZHJyLmMsIHNjaF9kdWFscGkyLmMsIHNjaF9ldHMuYywgc2NoX2ZxLmMsIHNjaF9mcV9waWUuYywgc2NoX2hoZi5jLCBzY2hfcGllLmMsIGFuZCBzY2hfc2ZxLmMuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIHJldm9sdmUgYXJvdW5kIGNsYW1waW5nIG9yIHNhbml0aXppbmcgdGhlIGBxdWFudHVtYCBhbmQgYG10dWAgdmFsdWVzIHVzZWQgd2l0aGluIHRoZXNlIHNjaGVkdWxlcnMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgaW5wdXQgdmFsaWRhdGlvbiBtb3JlIHRoYW4gYW55dGhpbmcgZWxzZS5cblxuU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlOlxuXG4qICAgV2UncmUgZW5mb3JjaW5nIHNlbnNpYmxlIHJhbmdlcyBmb3IgYHF1YW50dW1gIGFuZCBgbXR1YCB1c2luZyBgY2xhbXBfdGAgYW5kIGBtYXhgIG1hY3Jvcy4gRm9yIGV4YW1wbGUsIGVuc3VyaW5nIGBxdWFudHVtYCBpcyBiZXR3ZWVuIDI1NiBhbmQgMSBcdTAwM2NcdTAwM2MgMjAgKHRoYXQgaXMsIDEgTUIpLiBUaGVzZSB2YWx1ZXMgYXJlIGJlaW5nIGFwcGxpZWQgaW4gbXVsdGlwbGUgZmlsZXMgYW5kIGZ1bmN0aW9ucyBsaWtlIGBkcnJfY2hhbmdlX2NsYXNzYCwgYGV0c19xdWFudHVtX3BhcnNlYCwgYGZxX2luaXRgIGFuZCBgaGhmX2NoYW5nZWAuXG5cbk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBpcyB0aGVyZSBhbnkgY2hhbmNlIHRoaXMgaW50cm9kdWNlcyBvciBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcz8gSSBuZWVkIHRvIGFuYWx5emUgZm9yIHRob3NlIHJpc2tzLlxuXG4xLiAgKipLZXJuZWwgc3RydWN0cyB0byB1c2Vyc3BhY2U/KiogTm9wZSwgdGhpcyBkb2Vzbid0IGFkZCBvciBtb2RpZnkgYW55IHN0cnVjdHMgc2VudCB0byB1c2Vyc3BhY2UsIG5vciBkb2VzIGl0IGxlYXZlIGZpZWxkcyB1bmluaXRpYWxpemVkIHRoYXQgYXJlIHJldHVybmVkLlxuXG4yLiAgKipDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8qKiBObywgdGhlIGxvZ2ljIGxvb2tzIHNvdW5kLCBhbmQgdGhlcmUncyBubyBldmlkZW5jZSBvZiBkZWNpc2lvbnMgYmVpbmcgbWFkZSBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhbHVlcy5cblxuMy4gICoqQ29tcGxleCBkYXRhIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbj8qKiBOb3RoaW5nIG5ldyBpcyBiZWluZyBhbGxvY2F0ZWQsIHNvIHRoYXQncyBub3QgYSBjb25jZXJuLlxuXG40LiAgKipCb3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGE/KiogVGhpcyBpcyBzdHJpY3RseSBwYXJhbWV0ZXIgY2xhbXBpbmcsIHdoaWNoIGlzIHRoZSBvcHBvc2l0ZSBvZiB0aGUgaXNzdWUuXG5cblRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSBmb2N1c2VkIG9uIGFyaXRobWV0aWMgY2xhbXBpbmcgb2YgcGFyYW1ldGVycyBwYXNzZWQgdmlhIG5ldGxpbmssIHdoaWNoIGFyZSByZWFkIGZyb20gdGhlIGRldmljZSBNVFUuIFRoaXMgaXMgYWJvdXQgcHJldmVudGluZyBpbnRlZ2VyIG92ZXJmbG93cywgZGl2aXNpb24gYnkgemVybywgb3Igc2ltcGx5IGV4Y2Vzc2l2ZWx5IGxhcmdlL3NtYWxsIGBxdWFudHVtYCB2YWx1ZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHNjaGVkdWxpbmcgaXNzdWVzIChsaWtlIGhhbmdzIG9yIG92ZXJmbG93cywgbm90IHVuaW5pdGlhbGl6ZWQgbWVtb3J5KS5cblxuVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ3ZlIGRvdWJsZS1jaGVja2VkIHNvbWUga2V5IGZ1bmN0aW9ucyAoYGRycl9jaGFuZ2VfY2xhc3NgLCBgZXRzX3F1YW50dW1fcGFyc2VgLCBgZnFfaW5pdGAsIGFuZCBgaGhmX2NoYW5nZWApLiBJbiBlYWNoIGNhc2UsIGl0J3MgY2xlYXIgdGhhdCB0aGUgdmFyaWFibGVzIChsaWtlIGBxdWFudHVtYCkgYXJlICphbHdheXMqIGluaXRpYWxpemVkLCBlaXRoZXIgZGlyZWN0bHkgb3IgdGhyb3VnaCB0aGUgY2xhbXBpbmcgbWVjaGFuaXNtLiBXZSdyZSB0YWxraW5nIGFib3V0IHNpbXBsZSBzY2FsYXIgdmFsdWVzLCBub3QgY29tcGxleCBhbGxvY2F0aW9ucyBvciBtZW1vcnkgbWFuYWdlbWVudC5cblxuU28sIGFmdGVyIHRoaXMgZGVlcGVyIGRpdmUsIEknbSBjb25maWRlbnQuIE5lZWRzS01TQU4gPSBmYWxzZS4gSSdtIHJlYWR5IHRvIGNhbGwgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBhbmQgbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk1MCwiT3V0cHV0VG9rZW5zIjoxNDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDc6NDYuODYzNTczMTI5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGp1c3RzIGlucHV0IHZhbGlkYXRpb24gYW5kIGFyaXRobWV0aWMgYm91bmRzIG9uIHF1YW50dW0gYW5kIE1UVSBwYXJhbWV0ZXJzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgc2NoZWR1bGVycyAoRFJSLCBEdWFsUEkyLCBFVFMsIEZRLCBGUS1QSUUsIEhIRiwgUElFLCBTRlEpIHVzaW5nIGNsYW1waW5nIGZ1bmN0aW9ucyAoY2xhbXBfdCwgbWF4KS4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBtb2RpZnksIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnksIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCBvciBkYXRhIHRyYW5zZmVycyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZCwgYW5kIHN0YW5kYXJkIEtBU0FOL3Nhbml0aXplciBidWlsZHMgYXJlIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRqdXN0cyBpbnB1dCB2YWxpZGF0aW9uIGFuZCBhcml0aG1ldGljIGJvdW5kcyBvbiBxdWFudHVtIGFuZCBNVFUgcGFyYW1ldGVycyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIHNjaGVkdWxlcnMgKERSUiwgRHVhbFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSB1c2luZyBjbGFtcGluZyBmdW5jdGlvbnMgKGNsYW1wX3QsIG1heCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgZGF0YSB0cmFuc2ZlcnMgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQsIGFuZCBzdGFuZGFyZCBLQVNBTi9zYW5pdGl6ZXIgYnVpbGRzIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbs782[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 09:44:57 +0000 UTC FinishedAt: 2026-09-02 10:07:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "70f3995830d3f1e79faa14eb0605914f778feca9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_DRR", "NET_SCH_DUALPI2", "NET_SCH_ETS", "NET_SCH_FQ", "NET_SCH_FQ_PIE", "NET_SCH_HHF", "NET_SCH_PIE", "NET_SCH_SFQ" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "70f3995830d3f1e79faa14eb0605914f778feca9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_DRR", "NET_SCH_DUALPI2", "NET_SCH_ETS", "NET_SCH_FQ", "NET_SCH_FQ_PIE", "NET_SCH_HHF", "NET_SCH_PIE", "NET_SCH_SFQ" ], "series_id": "147fc5e1-50e1-448a-98c7-ef525337ee71" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pie_drop_early", "drr_change_class", "dualpi2_change", "dualpi2_init", "ets_qdisc_change", "fq_change", "fq_init", "fq_pie_change", "hhf_change", "hhf_init", "pie_change", "sfq_change" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RSUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RVQUxQSTImIzM0OywKICAgICYjMzQ7TkVUX1NDSF9FVFMmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GUSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0hIRiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1NGUSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDssCiAgICAmIzM0O2Rycl9jaGFuZ2VfY2xhc3MmIzM0OywKICAgICYjMzQ7ZHVhbHBpMl9jaGFuZ2UmIzM0OywKICAgICYjMzQ7ZHVhbHBpMl9pbml0JiMzNDssCiAgICAmIzM0O2V0c19xZGlzY19jaGFuZ2UmIzM0OywKICAgICYjMzQ7ZnFfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2luaXQmIzM0OywKICAgICYjMzQ7ZnFfcGllX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfY2hhbmdlJiMzNDssCiAgICAmIzM0O2hoZl9pbml0JiMzNDssCiAgICAmIzM0O3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7c2ZxX2NoYW5nZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkanVzdHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYXJpdGhtZXRpYyBib3VuZHMgb24gcXVhbnR1bSBhbmQgTVRVIHBhcmFtZXRlcnMgYWNyb3NzIHZhcmlvdXMgbmV0d29yayBzY2hlZHVsZXJzIChEUlIsIER1YWxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgdXNpbmcgY2xhbXBpbmcgZnVuY3Rpb25zIChjbGFtcF90LCBtYXgpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIG1vZGlmeSwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSwgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgc3RydWN0dXJlIHBhZGRpbmcsIG9yIGRhdGEgdHJhbnNmZXJzIHRvIHVzZXJzcGFjZSB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkLCBhbmQgc3RhbmRhcmQgS0FTQU4vc2FuaXRpemVyIGJ1aWxkcyBhcmUgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1YW50dW0gYW5kIE1UVSBoYW5kbGluZyAvIGJvdW5kaW5nIGxvZ2ljIGFjcm9zcyBtdWx0aXBsZSBuZXR3b3JrIHF1ZXVlaW5nIGRpc2NpcGxpbmVzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgaW4gbmV0L3NjaGVkLy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcWRpc2MgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyYXRpb24gdmlhIG5ldGxpbmsgKHJ0bmV0bGluay90YyksIGFuZCBwYWNrZXQgZHJvcC9zY2hlZHVsaW5nIGRlY2lzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFmMzYzMmQ1YTU3NzNhNDUwYzk0ODU5MzQ4NWYwMjMyZTNiYTU2MDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDEwOjA0OjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHJyLmMgYi9uZXQvc2NoZWQvc2NoX2Ryci5jXG5pbmRleCA5MWIxZWY4MjRhZmFmLi44NjIxZDA1N2VkZDlmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kcnIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xuQEAgLTgyLDggJiM0Mzs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O1NwZWNpZmllZCBEUlIgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wmIzM0Oyk7XG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdH1cbiYjNDM7XHRcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9IGVsc2Vcbi1cdFx0cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuJiM0MztcdFx0cXVhbnR1bSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbiBcdGlmIChjbCAhPSBOVUxMKSB7XG4gXHRcdGlmICh0Y2FbVENBX1JBVEVdKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xuaW5kZXggNGY2NzhkNGZmMTBlYy4uNDk0N2RlZjdjNDllZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xuQEAgLTIwOCw5ICYjNDM7MjA4LDExIEBAIHN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXG4gc3RhdGljIHZvaWQgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLCB1MzIgd2MpXG4ge1xuJiM0MztcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiYjNDM7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93YyA9IHdjO1xuIFx0cS1cdTAwM2VjX3Byb3RlY3Rpb25fd2wgPSBNQVhfV0MgLSB3Yztcbi1cdHEtXHUwMDNlY19wcm90ZWN0aW9uX2luaXQgPSAoczMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpICpcbiYjNDM7XHRxLVx1MDAzZWNfcHJvdGVjdGlvbl9pbml0ID0gKHMzMiltdHUgKlxuIFx0XHQoKGludClxLVx1MDAzZWNfcHJvdGVjdGlvbl93YyAtIChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2wpO1xuIFx0ZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24ocSk7XG4gfVxuQEAgLTI4NSw4ICYjNDM7Mjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuIFx0dTY0IGxvY2FsX2xfcHJvYjtcbiBcdGJvb2wgb3ZlcmxvYWQ7XG4gXHR1MzIgcHJvYjtcbiYjNDM7XHR1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXG4tXHRpZiAoc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nIFx1MDAzYyAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpXG4mIzQzO1x0aWYgKHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyBcdTAwM2MgMiAqIG10dSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0cHJvYiA9IFJFQURfT05DRShxLVx1MDAzZXBpMl9wcm9iKTtcbkBAIC03MTIsNyAmIzQzOzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxuIFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXG4gXHQgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuXG4gXHQgKi9cbi1cdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcbiYjNDM7XHR1NjQgbWVtbGltID0gbXVsX3UzMl91MzIobGltaXQsIDIgKiBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgMSwgMSBcdTAwM2NcdTAwM2MgMjApKTtcbiBcbiBcdGlmICh1cHBlcl8zMl9iaXRzKG1lbWxpbSkpXG4gXHRcdHJldHVybiBVMzJfTUFYO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZXRzLmMgYi9uZXQvc2NoZWQvc2NoX2V0cy5jXG5pbmRleCAyNWZjZjQwNzlmZWNlLi42Y2M5MDJhMDM4Mzg3IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9ldHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xuQEAgLTgzLDExICYjNDM7ODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxuIFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XG4tXHRpZiAoISpxdWFudHVtKSB7XG4tXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7RVRTIHF1YW50dW0gY2Fubm90IGJlIHplcm9cJiMzNDspO1xuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdH1cbiYjNDM7XHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjMyLDExICYjNDM7NjI4LDEzIEBAIHN0YXRpYyBpbnQgZXRzX3FkaXNjX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXHQvKiBJZiB0aGVyZSBhcmUgbW9yZSBiYW5kcyB0aGFuIHN0cmljdCAmIzQzOyBxdWFudGEgcHJvdmlkZWQsIHRoZSByZW1haW5pbmdcbi1cdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgTVRVLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nIHZhbHVlcyBoZXJlLlxuJiM0MztcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZ1xuJiM0MztcdCAqIHZhbHVlcyBoZXJlLlxuIFx0ICovXG4gXHRmb3IgKGkgPSBuc3RyaWN0OyBpIFx1MDAzYyBuYmFuZHM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGlmICghcXVhbnRhW2ldKVxuLVx0XHRcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuJiM0MztcdFx0XHRxdWFudGFbaV0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbiYjNDM7XHRcdFx0XHRcdCAgICAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdH1cbiBcbiBcdC8qIEJlZm9yZSBjb21taXQsIG1ha2Ugc3VyZSB3ZSBjYW4gYWxsb2NhdGUgYWxsIG5ldyBxZGlzY3MgKi9cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxLmMgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcbmluZGV4IDYxNDRiNTY4NmYxM2YuLjM1Zjk0MGIyMjA1ZGYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2ZxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZnEuY1xuQEAgLTk4MCw3ICYjNDM7OTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0ge1xuLVx0Lm1heCA9IElOVF9NQVgsXG4mIzQzO1x0Lm1heCA9IDEgXHUwMDNjXHUwMDNjIDIwLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGZxX3BvbGljeVtUQ0FfRlFfTUFYICYjNDM7IDFdID0ge1xuQEAgLTExMDYsMTQgJiM0MzsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xuLVx0XHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XG4mIzQzO1x0XHR1MzIgcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pLFxuJiM0MztcdFx0XHRcdCAgICAgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXG4tXHRcdGlmIChxdWFudHVtIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBxdWFudHVtIFx1MDAzYz0gKDEgXHUwMDNjXHUwMDNjIDIwKSkge1xuLVx0XHRcdFdSSVRFX09OQ0UocS1cdTAwM2VxdWFudHVtLCBxdWFudHVtKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtpbnZhbGlkIHF1YW50dW1cJiMzNDspO1xuLVx0XHRcdGVyciA9IC1FSU5WQUw7XG4tXHRcdH1cbiYjNDM7XHRcdFdSSVRFX09OQ0UocS1cdTAwM2VxdWFudHVtLCBxdWFudHVtKTtcbiBcdH1cbiBcbiBcdGlmICh0YltUQ0FfRlFfSU5JVElBTF9RVUFOVFVNXSlcbkBAIC0xMjMyLDcgJiM0MzsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzY2gtXHUwMDNlbGltaXRcdFx0PSAxMDAwMDtcbiBcdHEtXHUwMDNlZmxvd19wbGltaXRcdFx0PSAxMDA7XG4gXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbi1cdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuJiM0MztcdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IGNsYW1wX3QodTMyLCAyICogbXR1LCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdHEtXHUwMDNlaW5pdGlhbF9xdWFudHVtXHQ9IG1pbl90KHUzMiwgMTAgKiBtdHUsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdHEtXHUwMDNlZmxvd19yZWZpbGxfZGVsYXlcdD0gbXNlY3NfdG9famlmZmllcyg0MCk7XG4gXHRxLVx1MDAzZWZsb3dfbWF4X3JhdGVcdD0gfjBVTDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuaW5kZXggYjI3ZDk1NDE4NzA3YS4uNTk4Mjg0N2RmOGY4NSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZnFfcGllLmNcbkBAIC0zNDEsNyAmIzQzOzM0MSw4IEBAIHN0YXRpYyBpbnQgZnFfcGllX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRcdCAgIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfQkVUQV0pKTtcbiBcbiBcdGlmICh0YltUQ0FfRlFfUElFX1FVQU5UVU1dKVxuLVx0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkpO1xuJiM0MztcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sXG4mIzQzO1x0XHRcdCAgIG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9QSUVfTUVNT1JZX0xJTUlUXSlcbiBcdFx0V1JJVEVfT05DRShxLVx1MDAzZW1lbW9yeV9saW1pdCxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2hoZi5jIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuaW5kZXggOTZhY2FiNmE4ZGEwMy4uZmM3MmY4MjVmYmQ5MiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfaGhmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfaGhmLmNcbkBAIC01NTEsNyAmIzQzOzU1MSw3IEBAIHN0YXRpYyBpbnQgaGhmX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuIFx0aWYgKHRiW1RDQV9ISEZfUVVBTlRVTV0pXG4tXHRcdG5ld19xdWFudHVtID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9RVUFOVFVNXSk7XG4mIzQzO1x0XHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcbiBcdFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XG5AQCAtNjEzLDcgJiM0Mzs2MTMsNyBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRpbnQgaTtcbiBcbiBcdHNjaC1cdTAwM2VsaW1pdCA9IDEwMDA7XG4tXHRxLVx1MDAzZXF1YW50dW0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTtcbiYjNDM7XHRxLVx1MDAzZXF1YW50dW0gPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0Z2V0X3JhbmRvbV9ieXRlcyhcdTAwMjZxLVx1MDAzZXBlcnR1cmJhdGlvbiwgc2l6ZW9mKHEtXHUwMDNlcGVydHVyYmF0aW9uKSk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxLVx1MDAzZW5ld19idWNrZXRzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnEtXHUwMDNlb2xkX2J1Y2tldHMpO1xuQEAgLTYyNCwxMCAmIzQzOzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHEtXHUwMDNlaGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi9cbiBcdHEtXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgPSAyO1xuIFxuLVx0aWYgKChpbnQpcS1cdTAwM2VxdWFudHVtIFx1MDAzYz0gMCB8fFxuLVx0ICAgICh1NjQpcS1cdTAwM2VxdWFudHVtICogcS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCBcdTAwM2UgSU5UX01BWClcbi1cdFx0cS1cdTAwM2VxdWFudHVtID0gMjU2O1xuLVxuIFx0aWYgKG9wdCkge1xuIFx0XHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfcGllLmNcbkBAIC0zNSw3ICYjNDM7MzUsNyBAQCBib29sIHBpZV9kcm9wX2Vhcmx5KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcGllX3BhcmFtcyAqcGFyYW1zLFxuIHtcbiBcdHU2NCBybmQ7XG4gXHR1NjQgbG9jYWxfcHJvYiA9IHZhcnMtXHUwMDNlcHJvYjtcbi1cdHUzMiBtdHUgPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTtcbiYjNDM7XHR1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXG4gXHQvKiBJZiB0aGVyZSBpcyBzdGlsbCBidXJzdCBhbGxvd2FuY2UgbGVmdCBza2lwIHJhbmRvbSBlYXJseSBkcm9wICovXG4gXHRpZiAodmFycy1cdTAwM2VidXJzdF90aW1lIFx1MDAzZSAwKVxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfc2ZxLmMgYi9uZXQvc2NoZWQvc2NoX3NmcS5jXG5pbmRleCAxODdkM2VkNTc4ZjI2Li44YmJjZmM5ZTg1ZDk0IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9zZnEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xuQEAgLTY2MCw2ICYjNDM7NjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbiYjNDM7XHRpZiAoY3RsLVx1MDAzZXF1YW50dW0gXHUwMDNlIDEgXHUwMDNjXHUwMDNjIDIwKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtxdWFudHVtIHRvbyBsYXJnZVwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKGN0bC1cdTAwM2VwZXJ0dXJiX3BlcmlvZCBcdTAwM2MgMCB8fFxuIFx0ICAgIGN0bC1cdTAwM2VwZXJ0dXJiX3BlcmlvZCBcdTAwM2UgSU5UX01BWCAvIEhaKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O2ludmFsaWQgcGVydHVyYiBwZXJpb2RcJiMzNDspO1xuQEAgLTY4OCw3ICYjNDM7NjkzLDcgQEAgc3RhdGljIGludCBzZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXG4gXHQvKiB1cGRhdGUgYW5kIHZhbGlkYXRlIGNvbmZpZ3VyYXRpb24gKi9cbiBcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSlcbi1cdFx0cXVhbnR1bSA9IGN0bC1cdTAwM2VxdWFudHVtO1xuJiM0MztcdFx0cXVhbnR1bSA9IG1heCgyNTZVLCBjdGwtXHUwMDNlcXVhbnR1bSk7XG4gXHRpZiAoY3RsLVx1MDAzZWZsb3dzKVxuIFx0XHRtYXhmbG93cyA9IG1pbl90KHUzMiwgY3RsLVx1MDAzZWZsb3dzLCBTRlFfTUFYX0ZMT1dTKTtcbiBcdGlmIChjdGwtXHUwMDNlZGl2aXNvcikge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZXRzLmpzb25cbmluZGV4IGVlMDllNmQ2ZmRmM2MuLmQyZWFiNjFjMDk5YTggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvblxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZXRzLmpzb25cbkBAIC05ODcsNyAmIzQzOzk4Nyw3IEBAXG4gICAgIH0sXG4gICAgIHtcbiAgICAgICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDs0MWY1XCYjMzQ7LFxuLSAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7RVRTIG9mZmxvYWQgd2hlcmUgdGhlIHN1bSBvZiBxdWFudGEgd3JhcHMgdTMyXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0VUUyBvZmZsb2FkIHdpdGggb3V0LW9mLXJhbmdlIHF1YW50YSBjbGFtcGVkXCYjMzQ7LFxuICAgICAgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiAgICAgICAgICAgICBcJiMzNDtxZGlzY1wmIzM0OyxcbiAgICAgICAgICAgICBcJiMzNDtldHNcJiMzNDtcbkBAIC0xMDAyLDcgJiM0MzsxMDAyLDcgQEBcbiAgICAgICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGV0cyBxdWFudGEgNDI5NDk2NzI5NCAxIDFcJiMzNDssXG4gICAgICAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiAgICAgICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIHFkaXNjIHNob3cgZGV2ICRFVEhcJiMzNDssXG4tICAgICAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O3FkaXNjIGV0cyAuKmJhbmRzIDMgcXVhbnRhIDQyOTQ5NjcyOTQgMSAxXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7cWRpc2MgZXRzIC4qYmFuZHMgMyBxdWFudGEgMTA0ODU3NiAyNTYgMjU2XCYjMzQ7LFxuICAgICAgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiAgICAgICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4gICAgICAgICAgICAgXCYjMzQ7ZWNobyBcXFwmIzM0OzFcXFwmIzM0OyBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9EUlImIzM0OywKICAgICYjMzQ7TkVUX1NDSF9EVUFMUEkyJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRVRTJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRlEmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GUV9QSUUmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9ISEYmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9QSUUmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9TRlEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaWVfZHJvcF9lYXJseSYjMzQ7LAogICAgJiMzNDtkcnJfY2hhbmdlX2NsYXNzJiMzNDssCiAgICAmIzM0O2R1YWxwaTJfY2hhbmdlJiMzNDssCiAgICAmIzM0O2R1YWxwaTJfaW5pdCYjMzQ7LAogICAgJiMzNDtldHNfcWRpc2NfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9pbml0JiMzNDssCiAgICAmIzM0O2ZxX3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfaW5pdCYjMzQ7LAogICAgJiMzNDtwaWVfY2hhbmdlJiMzNDssCiAgICAmIzM0O3NmcV9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1YW50dW0gYW5kIE1UVSBoYW5kbGluZyAvIGJvdW5kaW5nIGxvZ2ljIGFjcm9zcyBtdWx0aXBsZSBuZXR3b3JrIHF1ZXVlaW5nIGRpc2NpcGxpbmVzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgaW4gbmV0L3NjaGVkLy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcWRpc2MgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyYXRpb24gdmlhIG5ldGxpbmsgKHJ0bmV0bGluay90YyksIGFuZCBwYWNrZXQgZHJvcC9zY2hlZHVsaW5nIGRlY2lzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFmMzYzMmQ1YTU3NzNhNDUwYzk0ODU5MzQ4NWYwMjMyZTNiYTU2MDgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDEwOjA0OjM5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kcnIuYyBiL25ldC9zY2hlZC9zY2hfZHJyLmMKaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9kcnIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2Ryci5jCkBAIC04Miw4ICYjNDM7ODIsOSBAQCBzdGF0aWMgaW50IGRycl9jaGFuZ2VfY2xhc3Moc3RydWN0IFFkaXNjICpzY2gsIHUzMiBjbGFzc2lkLCB1MzIgcGFyZW50aWQsCiAJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7U3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvJiMzNDspOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KJiM0MzsJCXF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAl9IGVsc2UKLQkJcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOwomIzQzOwkJcXVhbnR1bSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCiAJaWYgKGNsICE9IE5VTEwpIHsKIAkJaWYgKHRjYVtUQ0FfUkFURV0pIHsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMKaW5kZXggNGY2NzhkNGZmMTBlYy4uNDk0N2RlZjdjNDllZiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMKQEAgLTIwOCw5ICYjNDM7MjA4LDExIEBAIHN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpCiBzdGF0aWMgdm9pZCBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc3RydWN0IFFkaXNjICpzY2gsCiAJCQkJCSAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHUzMiB3YykKIHsKJiM0MzsJdTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSAmbHQ7Jmx0OyAyMCk7CiYjNDM7CiAJcS0mZ3Q7Y19wcm90ZWN0aW9uX3djID0gd2M7CiAJcS0mZ3Q7Y19wcm90ZWN0aW9uX3dsID0gTUFYX1dDIC0gd2M7Ci0JcS0mZ3Q7Y19wcm90ZWN0aW9uX2luaXQgPSAoczMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpICoKJiM0MzsJcS0mZ3Q7Y19wcm90ZWN0aW9uX2luaXQgPSAoczMyKW10dSAqCiAJCSgoaW50KXEtJmd0O2NfcHJvdGVjdGlvbl93YyAtIChpbnQpcS0mZ3Q7Y19wcm90ZWN0aW9uX3dsKTsKIAlkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihxKTsKIH0KQEAgLTI4NSw4ICYjNDM7Mjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLAogCXU2NCBsb2NhbF9sX3Byb2I7CiAJYm9vbCBvdmVybG9hZDsKIAl1MzIgcHJvYjsKJiM0MzsJdTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSAmbHQ7Jmx0OyAyMCk7CiAKLQlpZiAoc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmbHQ7IDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSkKJiM0MzsJaWYgKHNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJmx0OyAyICogbXR1KQogCQlyZXR1cm4gZmFsc2U7CiAKIAlwcm9iID0gUkVBRF9PTkNFKHEtJmd0O3BpMl9wcm9iKTsKQEAgLTcxMiw3ICYjNDM7NzE1LDggQEAgc3RhdGljIHUzMiBnZXRfbWVtb3J5X2xpbWl0KHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgbGltaXQpCiAJLyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsCiAJICogdG8gZnVydGhlciBpbmNsdWRlIHBlciBwYWNrZXQgb3ZlcmhlYWQgaW4gbWVtb3J5X2xpbWl0LgogCSAqLwotCXU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTsKJiM0MzsJdTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLAomIzQzOwkJCQkJCSAgICAgMSwgMSAmbHQ7Jmx0OyAyMCkpOwogCiAJaWYgKHVwcGVyXzMyX2JpdHMobWVtbGltKSkKIAkJcmV0dXJuIFUzMl9NQVg7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuYwppbmRleCAyNWZjZjQwNzlmZWNlLi42Y2M5MDJhMDM4Mzg3IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2V0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZXRzLmMKQEAgLTgzLDExICYjNDM7ODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogCQkJICAgICB1bnNpZ25lZCBpbnQgKnF1YW50dW0sCiAJCQkgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKIHsKLQkqcXVhbnR1bSA9IG5sYV9nZXRfdTMyKGF0dHIpOwotCWlmICghKnF1YW50dW0pIHsKLQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O0VUUyBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvJiMzNDspOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9CiYjNDM7CSpxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKGF0dHIpLCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCXJldHVybiAwOwogfQogCkBAIC02MzIsMTEgJiM0Mzs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCQlyZXR1cm4gZXJyOwogCX0KIAkvKiBJZiB0aGVyZSBhcmUgbW9yZSBiYW5kcyB0aGFuIHN0cmljdCAmIzQzOyBxdWFudGEgcHJvdmlkZWQsIHRoZSByZW1haW5pbmcKLQkgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS4KJiM0MzsJICogb25lcyBhcmUgRVRTIHdpdGggcXVhbnR1bSBvZiBtYXgoTVRVLCAyNTYpLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nCiYjNDM7CSAqIHZhbHVlcyBoZXJlLgogCSAqLwogCWZvciAoaSA9IG5zdHJpY3Q7IGkgJmx0OyBuYmFuZHM7IGkmIzQzOyYjNDM7KSB7CiAJCWlmICghcXVhbnRhW2ldKQotCQkJcXVhbnRhW2ldID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CQkJcXVhbnRhW2ldID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksCiYjNDM7CQkJCQkgICAgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAl9CiAKIAkvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxLmMgYi9uZXQvc2NoZWQvc2NoX2ZxLmMKaW5kZXggNjE0NGI1Njg2ZjEzZi4uMzVmOTQwYjIyMDVkZiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZnEuYwpAQCAtOTgwLDcgJiM0Mzs5ODAsNyBAQCBzdGF0aWMgaW50IGZxX3Jlc2l6ZShzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxvZykKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRsaW5rX3JhbmdlX3ZhbGlkYXRpb24gaXFfcmFuZ2UgPSB7Ci0JLm1heCA9IElOVF9NQVgsCiYjNDM7CS5tYXggPSAxICZsdDsmbHQ7IDIwLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGZxX3BvbGljeVtUQ0FfRlFfTUFYICYjNDM7IDFdID0gewpAQCAtMTEwNiwxNCAmIzQzOzExMDYsMTAgQEAgc3RhdGljIGludCBmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCSAgIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9GTE9XX1BMSU1JVF0pKTsKIAogCWlmICh0YltUQ0FfRlFfUVVBTlRVTV0pIHsKLQkJdTMyIHF1YW50dW0gPSBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pOwomIzQzOwkJdTMyIHF1YW50dW0gPSBjbGFtcF90KHUzMiwgbmxhX2dldF91MzIodGJbVENBX0ZRX1FVQU5UVU1dKSwKJiM0MzsJCQkJICAgICAyNTYsIDEgJmx0OyZsdDsgMjApOwogCi0JCWlmIChxdWFudHVtICZndDsgMCAmYW1wOyZhbXA7IHF1YW50dW0gJmx0Oz0gKDEgJmx0OyZsdDsgMjApKSB7Ci0JCQlXUklURV9PTkNFKHEtJmd0O3F1YW50dW0sIHF1YW50dW0pOwotCQl9IGVsc2UgewotCQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtpbnZhbGlkIHF1YW50dW0mIzM0Oyk7Ci0JCQllcnIgPSAtRUlOVkFMOwotCQl9CiYjNDM7CQlXUklURV9PTkNFKHEtJmd0O3F1YW50dW0sIHF1YW50dW0pOwogCX0KIAogCWlmICh0YltUQ0FfRlFfSU5JVElBTF9RVUFOVFVNXSkKQEAgLTEyMzIsNyAmIzQzOzEyMjgsNyBAQCBzdGF0aWMgaW50IGZxX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAlzY2gtJmd0O2xpbWl0CQk9IDEwMDAwOwogCXEtJmd0O2Zsb3dfcGxpbWl0CQk9IDEwMDsKIAltdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgJmx0OyZsdDsgMjApOwotCXEtJmd0O3F1YW50dW0JCT0gbWluX3QodTMyLCAyICogbXR1LCAxICZsdDsmbHQ7IDIwKTsKJiM0MzsJcS0mZ3Q7cXVhbnR1bQkJPSBjbGFtcF90KHUzMiwgMiAqIG10dSwgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAlxLSZndDtpbml0aWFsX3F1YW50dW0JPSBtaW5fdCh1MzIsIDEwICogbXR1LCAxICZsdDsmbHQ7IDIwKTsKIAlxLSZndDtmbG93X3JlZmlsbF9kZWxheQk9IG1zZWNzX3RvX2ppZmZpZXMoNDApOwogCXEtJmd0O2Zsb3dfbWF4X3JhdGUJPSB+MFVMOwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuYyBiL25ldC9zY2hlZC9zY2hfZnFfcGllLmMKaW5kZXggYjI3ZDk1NDE4NzA3YS4uNTk4Mjg0N2RmOGY4NSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jCkBAIC0zNDEsNyAmIzQzOzM0MSw4IEBAIHN0YXRpYyBpbnQgZnFfcGllX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQkJICAgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9CRVRBXSkpOwogCiAJaWYgKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pCi0JCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkpOwomIzQzOwkJV1JJVEVfT05DRShxLSZndDtxdWFudHVtLAomIzQzOwkJCSAgIG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSkpOwogCiAJaWYgKHRiW1RDQV9GUV9QSUVfTUVNT1JZX0xJTUlUXSkKIAkJV1JJVEVfT05DRShxLSZndDttZW1vcnlfbGltaXQsCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2hoZi5jIGIvbmV0L3NjaGVkL3NjaF9oaGYuYwppbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2hoZi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfaGhmLmMKQEAgLTU1MSw3ICYjNDM7NTUxLDcgQEAgc3RhdGljIGludCBoaGZfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCXJldHVybiBlcnI7CiAKIAlpZiAodGJbVENBX0hIRl9RVUFOVFVNXSkKLQkJbmV3X3F1YW50dW0gPSBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKTsKJiM0MzsJCW5ld19xdWFudHVtID0gbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pKTsKIAogCWlmICh0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKQogCQluZXdfaGhmX25vbl9oaF93ZWlnaHQgPSBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKTsKQEAgLTYxMyw3ICYjNDM7NjEzLDcgQEAgc3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCWludCBpOwogCiAJc2NoLSZndDtsaW1pdCA9IDEwMDA7Ci0JcS0mZ3Q7cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOwomIzQzOwlxLSZndDtxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCWdldF9yYW5kb21fYnl0ZXMoJmFtcDtxLSZndDtwZXJ0dXJiYXRpb24sIHNpemVvZihxLSZndDtwZXJ0dXJiYXRpb24pKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3EtJmd0O25ld19idWNrZXRzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3EtJmd0O29sZF9idWNrZXRzKTsKQEAgLTYyNCwxMCAmIzQzOzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAlxLSZndDtoaGZfZXZpY3RfdGltZW91dCA9IEhaOyAgICAgIC8qIDEgIHNlYyAqLwogCXEtJmd0O2hoZl9ub25faGhfd2VpZ2h0ID0gMjsKIAotCWlmICgoaW50KXEtJmd0O3F1YW50dW0gJmx0Oz0gMCB8fAotCSAgICAodTY0KXEtJmd0O3F1YW50dW0gKiBxLSZndDtoaGZfbm9uX2hoX3dlaWdodCAmZ3Q7IElOVF9NQVgpCi0JCXEtJmd0O3F1YW50dW0gPSAyNTY7Ci0KIAlpZiAob3B0KSB7CiAJCWludCBlcnIgPSBoaGZfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spOwogCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuYwppbmRleCBiNDFmMmRlZjJlMmNjLi4zYjc4NjNmZmQyODRjIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX3BpZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfcGllLmMKQEAgLTM1LDcgJiM0MzszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsCiB7CiAJdTY0IHJuZDsKIAl1NjQgbG9jYWxfcHJvYiA9IHZhcnMtJmd0O3Byb2I7Ci0JdTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOwomIzQzOwl1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKIAogCS8qIElmIHRoZXJlIGlzIHN0aWxsIGJ1cnN0IGFsbG93YW5jZSBsZWZ0IHNraXAgcmFuZG9tIGVhcmx5IGRyb3AgKi8KIAlpZiAodmFycy0mZ3Q7YnVyc3RfdGltZSAmZ3Q7IDApCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuYwppbmRleCAxODdkM2VkNTc4ZjI2Li44YmJjZmM5ZTg1ZDk0IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX3NmcS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfc2ZxLmMKQEAgLTY2MCw2ICYjNDM7NjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKJiM0MzsJaWYgKGN0bC0mZ3Q7cXVhbnR1bSAmZ3Q7IDEgJmx0OyZsdDsgMjApIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7cXVhbnR1bSB0b28gbGFyZ2UmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCWlmIChjdGwtJmd0O3BlcnR1cmJfcGVyaW9kICZsdDsgMCB8fAogCSAgICBjdGwtJmd0O3BlcnR1cmJfcGVyaW9kICZndDsgSU5UX01BWCAvIEhaKSB7CiAJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7aW52YWxpZCBwZXJ0dXJiIHBlcmlvZCYjMzQ7KTsKQEAgLTY4OCw3ICYjNDM7NjkzLDcgQEAgc3RhdGljIGludCBzZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAKIAkvKiB1cGRhdGUgYW5kIHZhbGlkYXRlIGNvbmZpZ3VyYXRpb24gKi8KIAlpZiAoY3RsLSZndDtxdWFudHVtKQotCQlxdWFudHVtID0gY3RsLSZndDtxdWFudHVtOwomIzQzOwkJcXVhbnR1bSA9IG1heCgyNTZVLCBjdGwtJmd0O3F1YW50dW0pOwogCWlmIChjdGwtJmd0O2Zsb3dzKQogCQltYXhmbG93cyA9IG1pbl90KHUzMiwgY3RsLSZndDtmbG93cywgU0ZRX01BWF9GTE9XUyk7CiAJaWYgKGN0bC0mZ3Q7ZGl2aXNvcikgewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZXRzLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbgppbmRleCBlZTA5ZTZkNmZkZjNjLi5kMmVhYjYxYzA5OWE4IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbgomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbgpAQCAtOTg3LDcgJiM0Mzs5ODcsNyBAQAogICAgIH0sCiAgICAgewogICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7NDFmNSYjMzQ7LAotICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtFVFMgb2ZmbG9hZCB3aGVyZSB0aGUgc3VtIG9mIHF1YW50YSB3cmFwcyB1MzImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0VUUyBvZmZsb2FkIHdpdGggb3V0LW9mLXJhbmdlIHF1YW50YSBjbGFtcGVkJiMzNDssCiAgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwogICAgICAgICAgICAgJiMzNDtxZGlzYyYjMzQ7LAogICAgICAgICAgICAgJiMzNDtldHMmIzM0OwpAQCAtMTAwMiw3ICYjNDM7MTAwMiw3IEBACiAgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGV0cyBxdWFudGEgNDI5NDk2NzI5NCAxIDEmIzM0OywKICAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKICAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSCYjMzQ7LAotICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O3FkaXNjIGV0cyAuKmJhbmRzIDMgcXVhbnRhIDQyOTQ5NjcyOTQgMSAxJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O3FkaXNjIGV0cyAuKmJhbmRzIDMgcXVhbnRhIDEwNDg1NzYgMjU2IDI1NiYjMzQ7LAogICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiAgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwogICAgICAgICAgICAgJiMzNDtlY2hvIFwmIzM0OzFcJiMzNDsgJmd0OyAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZSYjMzQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NTMKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyAtIEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYSBidW5jaCBvZiBwYWNrZXQgc2NoZWR1bGVyIHFkaXNjcyBpbiBgbmV0L3NjaGVkL2AuIExldCBtZSBsaXN0IHRoZW06IGBzY2hfZHJyLmNgLCBgc2NoX2R1YWxwaTIuY2AsIGBzY2hfZXRzLmNgLCBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYCwgYHNjaF9oaGYuY2AsIGBzY2hfcGllLmNgLCBhbmQgYHNjaF9zZnEuY2AuIFBsdXMsIHRoZXJlIGFyZSBzb21lIHNlbGZ0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLi4uYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgZXZlbiB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWJvdXQgaW5wdXQgdmFsaWRhdGlvbiBvciBjbGFtcGluZyBwYXJhbWV0ZXJzIHJlbGF0ZWQgdG8gcXVhbnR1bSBhbmQgTVRVIGluIHRoZSBtZW50aW9uZWQgcWRpc2NzLiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgb3IganVzdCBzb21lIGNvbnN0YW50L3ZhbGlkYXRpb24gdHdlYWtzPwoKTGV0JiMzOTtzIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIHJ1bGVzLiBJdCBzYXlzICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgaXQmIzM5O3MganVzdCBkb2NzLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBvciB0d2Vha3MgdG8gbnVtZXJpYyBjb25zdGFudHMvbWFjcm9zIHRoYXQgKmRvbiYjMzk7dCogYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIEl0IGFsc28gc2F5cyB0byBleGNsdWRlIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6YXRpb24sIG9yIHN0dWZmIHNwZWNpZmljIHRvIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkLiBJdCBhbHNvIGV4Y2x1ZGVzIGRyaXZlciByZW1vdmUgY2FsbGJhY2tzIGFuZCB0aGUgbGlrZS4KCldhaXQsIHRoaXMgKmRvZXMqIG1vZGlmeSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljISBJdCYjMzk7cyB0b3VjaGluZyB0aGUgcWRpc2MgY29uZmlndXJhdGlvbiBhbmQgcGFja2V0IGhhbmRsaW5nL3NjaGVkdWxpbmcgcGFydHMgb2YgdGhlIGNvZGUuIFdlIGFyZSBsb29raW5nIGF0IGZ1bmN0aW9ucyBsaWtlIGBkcnJfY2hhbmdlX2NsYXNzYCwgYGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbmAsIGBtdXN0X2Ryb3BgLCBgZ2V0X21lbW9yeV9saW1pdGAsIGBldHNfcXVhbnR1bV9wYXJzZWAsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBwaWVfZHJvcF9lYXJseWAsIGBzZnFfY2hhbmdlYC4gVGhhdCYjMzk7cyBub3QganVzdCBhIGNvbnN0YW50IGNoYW5nZTsgaXQmIzM5O3MgbGlrZWx5IGFsdGVyaW5nIGhvdyB0aGVzZSBxZGlzY3MgYmVoYXZlLgoKQW5kIHRoZXNlIGFyZSAqYWJzb2x1dGVseSogcmVhY2hhYmxlIGluIFFFTVUgYW5kIEdDRSBlbnZpcm9ubWVudHMuIFlvdSBjYW4gZWFzaWx5IGludGVyYWN0IHdpdGggdGhlbSB0aHJvdWdoIG5ldGxpbmssIGBydG5ldGxpbmtgLCBhbmQgYHRjYCBjb21tYW5kcy4KClNvLCB5ZWFoLCB0aGlzIGxvb2tzIHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciB0aGVzZSBzY2hlZHVsZXJzIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NDY9Y29tbWVudCBcJiMzNDtRdWV1ZWluZy9TY2hlZHVsaW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZy00Ny1cbm5ldC9zY2hlZC9LY29uZmlnOjQ4OmNvbmZpZyBORVRfU0NIX0hUQlxubmV0L3NjaGVkL0tjb25maWctNDktXHR0cmlzdGF0ZSBcJiMzNDtIaWVyYXJjaGljYWwgVG9rZW4gQnVja2V0IChIVEIpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNjEtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Mjpjb25maWcgTkVUX1NDSF9IRlNDXG5uZXQvc2NoZWQvS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O0hpZXJhcmNoaWNhbCBGYWlyIFNlcnZpY2UgQ3VydmUgKEhGU0MpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNzAtXG5uZXQvc2NoZWQvS2NvbmZpZzo3MTpjb25maWcgTkVUX1NDSF9QUklPXG5uZXQvc2NoZWQvS2NvbmZpZy03Mi1cdHRyaXN0YXRlIFwmIzM0O011bHRpIEJhbmQgUHJpb3JpdHkgUXVldWVpbmcgKFBSSU8pXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNzktXG5uZXQvc2NoZWQvS2NvbmZpZzo4MDpjb25maWcgTkVUX1NDSF9NVUxUSVFcbm5ldC9zY2hlZC9LY29uZmlnLTgxLVx0dHJpc3RhdGUgXCYjMzQ7SGFyZHdhcmUgTXVsdGlxdWV1ZS1hd2FyZSBNdWx0aSBCYW5kIFF1ZXVpbmcgKE1VTFRJUSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy04OC1cbm5ldC9zY2hlZC9LY29uZmlnOjg5OmNvbmZpZyBORVRfU0NIX1JFRFxubmV0L3NjaGVkL0tjb25maWctOTAtXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChSRUQpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctOTktXG5uZXQvc2NoZWQvS2NvbmZpZzoxMDA6Y29uZmlnIE5FVF9TQ0hfU0ZCXG5uZXQvc2NoZWQvS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtTdG9jaGFzdGljIEZhaXIgQmx1ZSAoU0ZCKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTExMC1cbm5ldC9zY2hlZC9LY29uZmlnOjExMTpjb25maWcgTkVUX1NDSF9TRlFcbm5ldC9zY2hlZC9LY29uZmlnLTExMi1cdHRyaXN0YXRlIFwmIzM0O1N0b2NoYXN0aWMgRmFpcm5lc3MgUXVldWVpbmcgKFNGUSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xMjEtXG5uZXQvc2NoZWQvS2NvbmZpZzoxMjI6Y29uZmlnIE5FVF9TQ0hfVEVRTFxubmV0L3NjaGVkL0tjb25maWctMTIzLVx0dHJpc3RhdGUgXCYjMzQ7VHJ1ZSBMaW5rIEVxdWFsaXplciAoVEVRTClcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xMzMtXG5uZXQvc2NoZWQvS2NvbmZpZzoxMzQ6Y29uZmlnIE5FVF9TQ0hfVEJGXG5uZXQvc2NoZWQvS2NvbmZpZy0xMzUtXHR0cmlzdGF0ZSBcJiMzNDtUb2tlbiBCdWNrZXQgRmlsdGVyIChUQkYpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMTQ0LVxubmV0L3NjaGVkL0tjb25maWc6MTQ1OmNvbmZpZyBORVRfU0NIX0NCU1xubmV0L3NjaGVkL0tjb25maWctMTQ2LVx0dHJpc3RhdGUgXCYjMzQ7Q3JlZGl0IEJhc2VkIFNoYXBlciAoQ0JTKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE1NS1cbm5ldC9zY2hlZC9LY29uZmlnOjE1Njpjb25maWcgTkVUX1NDSF9FVEZcbm5ldC9zY2hlZC9LY29uZmlnLTE1Ny1cdHRyaXN0YXRlIFwmIzM0O0VhcmxpZXN0IFR4VGltZSBGaXJzdCAoRVRGKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE2Ni1cbm5ldC9zY2hlZC9LY29uZmlnOjE2Nzpjb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG5uZXQvc2NoZWQvS2NvbmZpZy0xNjgtXHR0cmlzdGF0ZVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cbm5ldC9zY2hlZC9LY29uZmlnOjE3Mjpjb25maWcgTkVUX1NDSF9UQVBSSU9cbm5ldC9zY2hlZC9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMTgzLVxubmV0L3NjaGVkL0tjb25maWc6MTg0OmNvbmZpZyBORVRfU0NIX0dSRURcbm5ldC9zY2hlZC9LY29uZmlnLTE4NS1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xOTQtXG5uZXQvc2NoZWQvS2NvbmZpZzoxOTU6Y29uZmlnIE5FVF9TQ0hfTkVURU1cbm5ldC9zY2hlZC9LY29uZmlnLTE5Ni1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgZW11bGF0b3IgKE5FVEVNKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTIwNi1cbm5ldC9zY2hlZC9LY29uZmlnOjIwNzpjb25maWcgTkVUX1NDSF9EUlJcbm5ldC9zY2hlZC9LY29uZmlnLTIwOC1cdHRyaXN0YXRlIFwmIzM0O0RlZmljaXQgUm91bmQgUm9iaW4gc2NoZWR1bGVyIChEUlIpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjE3LVxubmV0L3NjaGVkL0tjb25maWc6MjE4OmNvbmZpZyBORVRfU0NIX01RUFJJT1xubmV0L3NjaGVkL0tjb25maWctMjE5LVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGktcXVldWUgcHJpb3JpdHkgc2NoZWR1bGVyIChNUVBSSU8pXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjMwLVxubmV0L3NjaGVkL0tjb25maWc6MjMxOmNvbmZpZyBORVRfU0NIX1NLQlBSSU9cbm5ldC9zY2hlZC9LY29uZmlnLTIzMi1cdHRyaXN0YXRlIFwmIzM0O1NLQiBwcmlvcml0eSBxdWV1ZSBzY2hlZHVsZXIgKFNLQlBSSU8pXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjQzLVxubmV0L3NjaGVkL0tjb25maWc6MjQ0OmNvbmZpZyBORVRfU0NIX0NIT0tFXG5uZXQvc2NoZWQvS2NvbmZpZy0yNDUtXHR0cmlzdGF0ZSBcJiMzNDtDSE9vc2UgYW5kIEtlZXAgcmVzcG9uc2l2ZSBmbG93IHNjaGVkdWxlciAoQ0hPS0UpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjU0LVxubmV0L3NjaGVkL0tjb25maWc6MjU1OmNvbmZpZyBORVRfU0NIX1FGUVxubmV0L3NjaGVkL0tjb25maWctMjU2LVx0dHJpc3RhdGUgXCYjMzQ7UXVpY2sgRmFpciBRdWV1ZWluZyBzY2hlZHVsZXIgKFFGUSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yNjUtXG5uZXQvc2NoZWQvS2NvbmZpZzoyNjY6Y29uZmlnIE5FVF9TQ0hfQ09ERUxcbm5ldC9zY2hlZC9LY29uZmlnLTI2Ny1cdHRyaXN0YXRlIFwmIzM0O0NvbnRyb2xsZWQgRGVsYXkgQVFNIChDT0RFTClcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yNzYtXG5uZXQvc2NoZWQvS2NvbmZpZzoyNzc6Y29uZmlnIE5FVF9TQ0hfRlFfQ09ERUxcbm5ldC9zY2hlZC9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O0ZhaXIgUXVldWUgQ29udHJvbGxlZCBEZWxheSBBUU0gKEZRX0NPREVMKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTI4Ny1cbm5ldC9zY2hlZC9LY29uZmlnOjI4ODpjb25maWcgTkVUX1NDSF9DQUtFXG5uZXQvc2NoZWQvS2NvbmZpZy0yODktXHR0cmlzdGF0ZSBcJiMzNDtDb21tb24gQXBwbGljYXRpb25zIEtlcHQgRW5oYW5jZWQgKENBS0UpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjk4LVxubmV0L3NjaGVkL0tjb25maWc6Mjk5OmNvbmZpZyBORVRfU0NIX0ZRXG5uZXQvc2NoZWQvS2NvbmZpZy0zMDAtXHR0cmlzdGF0ZSBcJiMzNDtGYWlyIFF1ZXVlXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzEyLVxubmV0L3NjaGVkL0tjb25maWc6MzEzOmNvbmZpZyBORVRfU0NIX0hIRlxubmV0L3NjaGVkL0tjb25maWctMzE0LVx0dHJpc3RhdGUgXCYjMzQ7SGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTMyMS1cbm5ldC9zY2hlZC9LY29uZmlnOjMyMjpjb25maWcgTkVUX1NDSF9QSUVcbm5ldC9zY2hlZC9LY29uZmlnLTMyMy1cdHRyaXN0YXRlIFwmIzM0O1Byb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChQSUUpIHNjaGVkdWxlclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTMzMy1cbm5ldC9zY2hlZC9LY29uZmlnOjMzNDpjb25maWcgTkVUX1NDSF9GUV9QSUVcbm5ldC9zY2hlZC9LY29uZmlnLTMzNS1cdGRlcGVuZHMgb24gTkVUX1NDSF9QSUVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDYtXG5uZXQvc2NoZWQvS2NvbmZpZzozNDc6Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xubmV0L3NjaGVkL0tjb25maWctMzQ4LVx0dHJpc3RhdGUgXCYjMzQ7SW5ncmVzcy9jbGFzc2lmaWVyLWFjdGlvbiBRZGlzY1wmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTM2Mi1cbm5ldC9zY2hlZC9LY29uZmlnOjM2Mzpjb25maWcgTkVUX1NDSF9QTFVHXG5uZXQvc2NoZWQvS2NvbmZpZy0zNjQtXHR0cmlzdGF0ZSBcJiMzNDtQbHVnIG5ldHdvcmsgdHJhZmZpYyB1bnRpbCByZWxlYXNlIChQTFVHKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTM4OC1cbm5ldC9zY2hlZC9LY29uZmlnOjM4OTpjb25maWcgTkVUX1NDSF9FVFNcbm5ldC9zY2hlZC9LY29uZmlnLTM5MC1cdHRyaXN0YXRlIFwmIzM0O0VuaGFuY2VkIHRyYW5zbWlzc2lvbiBzZWxlY3Rpb24gc2NoZWR1bGVyIChFVFMpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNDA1LVxubmV0L3NjaGVkL0tjb25maWc6NDA2OmNvbmZpZyBORVRfU0NIX0JQRlxubmV0L3NjaGVkL0tjb25maWctNDA3LVx0Ym9vbCBcJiMzNDtCUEYtYmFzZWQgUWRpc2NcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00MTctXG5uZXQvc2NoZWQvS2NvbmZpZzo0MTg6Y29uZmlnIE5FVF9TQ0hfRFVBTFBJMlxubmV0L3NjaGVkL0tjb25maWctNDE5LVx0dHJpc3RhdGUgXCYjMzQ7RHVhbCBRdWV1ZSBQSSBTcXVhcmUgKERVQUxQSTIpIHNjaGVkdWxlclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQyOS1cbm5ldC9zY2hlZC9LY29uZmlnOjQzMDptZW51Y29uZmlnIE5FVF9TQ0hfREVGQVVMVFxubmV0L3NjaGVkL0tjb25maWctNDMxLVx0Ym9vbCBcJiMzNDtBbGxvdyBvdmVycmlkZSBkZWZhdWx0IHF1ZXVlIGRpc2NpcGxpbmVcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05NjY9ZW5kaWYgIyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTk2Ny1cbm5ldC9zY2hlZC9LY29uZmlnOjk2ODpjb25maWcgTkVUX1NDSF9GSUZPXG5uZXQvc2NoZWQvS2NvbmZpZy05NjktXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTExMwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBuZXR3b3JrIHNjaGVkdWxpbmcgYW5kIHNvbWUgYnVpbGQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmaWxlcyBhcmUgYWN0dWFsbHkgYmVpbmcgY29tcGlsZWQgYW5kIGxpbmtlZC4gR2l2ZW4gdGhhdCB3ZSYjMzk7cmUgdGFsa2luZyBgbmV0L3NjaGVkYCwgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBNYWtlZmlsZWAgd2l0aGluIHRoYXQgZGlyZWN0b3J5LiBJJiMzOTttIGdvaW5nIHRvIGNyYWNrIG9wZW4gYG5ldC9zY2hlZC9NYWtlZmlsZWAgYW5kIHNlZSBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgb3JjaGVzdHJhdGVkLiBJdCYjMzk7cyB0aGUgTWFrZWZpbGUgdGhhdCBob2xkcyB0aGUga2V5IHRvIHRoZSBkZXBlbmRlbmNpZXMsIGNvbXBpbGVyIGZsYWdzLCBhbmQgdGhlIG92ZXJhbGwgcmVjaXBlIGZvciBhc3NlbWJsaW5nIHRoZSByZWxldmFudCBtb2R1bGVzLiBUaGlzIHNob3VsZCB0ZWxsIG1lIGV4YWN0bHkgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBpbmZsdWVuY2luZyB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgd2hhdCBzcGVjaWZpY2FsbHkgaXMgYmVpbmcgaW5jbHVkZWQgb3IgZXhjbHVkZWQgYmFzZWQgb24gdGhlIGNvbmZpZ3MgaW4gcGxheS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjaF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlLTUtXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjpvYmoteVx0Oj0gc2NoX2dlbmVyaWMubyBzY2hfbXEub1xubmV0L3NjaGVkL01ha2VmaWxlLTctXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfSU5FVClcdFx0JiM0Mzs9IHNjaF9mcmFnLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfU0NIRUQpXHRcdCYjNDM7PSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX05FVF9DTFMpXHRcdCYjNDM7PSBjbHNfYXBpLm9cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9MzM9b2JqLSQoQ09ORklHX05FVF9BQ1RfR0FURSlcdCYjNDM7PSBhY3RfZ2F0ZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcdCYjNDM7PSBzY2hfZmlmby5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX05FVF9TQ0hfSFRCKVx0JiM0Mzs9IHNjaF9odGIub1xubmV0L3NjaGVkL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19ORVRfU0NIX0hGU0MpXHQmIzQzOz0gc2NoX2hmc2Mub1xubmV0L3NjaGVkL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19ORVRfU0NIX1JFRClcdCYjNDM7PSBzY2hfcmVkLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTozODpvYmotJChDT05GSUdfTkVUX1NDSF9HUkVEKVx0JiM0Mzs9IHNjaF9ncmVkLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfTkVUX1NDSF9JTkdSRVNTKVx0JiM0Mzs9IHNjaF9pbmdyZXNzLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfTkVUX1NDSF9TRkIpXHQmIzQzOz0gc2NoX3NmYi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDE6b2JqLSQoQ09ORklHX05FVF9TQ0hfU0ZRKVx0JiM0Mzs9IHNjaF9zZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19ORVRfU0NIX1RCRilcdCYjNDM7PSBzY2hfdGJmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfTkVUX1NDSF9URVFMKVx0JiM0Mzs9IHNjaF90ZXFsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfTkVUX1NDSF9QUklPKVx0JiM0Mzs9IHNjaF9wcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfTkVUX1NDSF9NVUxUSVEpXHQmIzQzOz0gc2NoX211bHRpcS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX05FVF9TQ0hfTkVURU0pXHQmIzQzOz0gc2NoX25ldGVtLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXHQmIzQzOz0gc2NoX2Ryci5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDg6b2JqLSQoQ09ORklHX05FVF9TQ0hfUExVRylcdCYjNDM7PSBzY2hfcGx1Zy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRTKVx0JiM0Mzs9IHNjaF9ldHMub1xubmV0L3NjaGVkL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19ORVRfU0NIX01RUFJJTylcdCYjNDM7PSBzY2hfbXFwcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfTkVUX1NDSF9NUVBSSU9fTElCKSAmIzQzOz0gc2NoX21xcHJpb19saWIub1xubmV0L3NjaGVkL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19ORVRfU0NIX1NLQlBSSU8pXHQmIzQzOz0gc2NoX3NrYnByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19ORVRfU0NIX0NIT0tFKVx0JiM0Mzs9IHNjaF9jaG9rZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfUUZRKVx0JiM0Mzs9IHNjaF9xZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19ORVRfU0NIX0NPREVMKVx0JiM0Mzs9IHNjaF9jb2RlbC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfQ09ERUwpXHQmIzQzOz0gc2NoX2ZxX2NvZGVsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1NzpvYmotJChDT05GSUdfTkVUX1NDSF9DQUtFKVx0JiM0Mzs9IHNjaF9jYWtlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfTkVUX1NDSF9GUSlcdCYjNDM7PSBzY2hfZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19ORVRfU0NIX0hIRilcdCYjNDM7PSBzY2hfaGhmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfTkVUX1NDSF9QSUUpXHQmIzQzOz0gc2NoX3BpZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfUElFKVx0JiM0Mzs9IHNjaF9mcV9waWUub1xubmV0L3NjaGVkL01ha2VmaWxlOjYyOm9iai0kKENPTkZJR19ORVRfU0NIX0NCUylcdCYjNDM7PSBzY2hfY2JzLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXHQmIzQzOz0gc2NoX2V0Zi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEFQUklPKVx0JiM0Mzs9IHNjaF90YXByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlLTY1LW9iai0kKENPTkZJR19ORVRfU0NIX0JQRilcdCYjNDM7PSBicGZfcWRpc2Mub1xubmV0L3NjaGVkL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19ORVRfU0NIX0RVQUxQSTIpXHQmIzQzOz0gc2NoX2R1YWxwaTIub1xubmV0L3NjaGVkL01ha2VmaWxlLTY3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTA1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uIEZpbGVzKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgY2hhbmdlLCBzbyBJJiMzOTtsbCBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IHRoZSBhZmZlY3RlZCBmaWxlcy4gSSBzZWUgYSBsaXN0IG9mIHNjaGVkdWxlciBpbXBsZW1lbnRhdGlvbnMgdGhhdCBoYXZlIGJlZW4gZmxhZ2dlZDogYG5ldC9zY2hlZC9zY2hfZHJyLmNgLCBgbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNgLCBgbmV0L3NjaGVkL3NjaF9ldHMuY2AsIGBuZXQvc2NoZWQvc2NoX2ZxLmNgLCBgbmV0L3NjaGVkL3NjaF9mcV9waWUuY2AsIGBuZXQvc2NoZWQvc2NoX2hoZi5jYCwgYG5ldC9zY2hlZC9zY2hfcGllLmNgLCBhbmQgYG5ldC9zY2hlZC9zY2hfc2ZxLmNgLiBFYWNoIG9uZSBvZiB0aGVzZSBpcyBhc3NvY2lhdGVkIHdpdGggYSBjb3JyZXNwb25kaW5nIEtjb25maWcgc3ltYm9sOyB0aGUgYENPTkZJR19ORVRfU0NIX0RSUmAgZXRjLiBjb25maWd1cmF0aW9ucy4KCk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IGFuZCBhbnkgZGVwZW5kZW5jaWVzIHRoZXNlIHNjaGVkdWxlcnMgbWlnaHQgaGF2ZSwgSSBuZWVkIHRvIG9wZW4gdXAgYG5ldC9zY2hlZC9LY29uZmlnYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsYXRpb25zaGlwcyBvdXRsaW5lZCB0aGVyZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIG9uLCBzYXksIGBORVRfU0NIRURgIG9yIG90aGVyIHJlbGF0ZWQgdmFyaWFibGVzIHRoYXQgbWF5IGJlIGFmZmVjdGVkLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNvbXByZWhlbnNpdmUgcGljdHVyZSBvZiB3aGF0IGVsc2UgbWF5IGJlIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBUcmFmZmljIGNvbnRyb2wgY29uZmlndXJhdGlvbi5cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBORVRfU0NIRURcbiAgIDc6XHRcdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgTkVUX1NDSF9GSUZPXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFdoZW4gdGhlIGtlcm5lbCBoYXMgc2V2ZXJhbCBwYWNrZXRzIHRvIHNlbmQgb3V0IG92ZXIgYSBuZXR3b3JrXG4gIDExOlx0XHQgIGRldmljZSwgaXQgaGFzIHRvIGRlY2lkZSB3aGljaCBvbmVzIHRvIHNlbmQgZmlyc3QsIHdoaWNoIG9uZXMgdG9cbiAgMTI6XHRcdCAgZGVsYXksIGFuZCB3aGljaCBvbmVzIHRvIGRyb3AuIFRoaXMgaXMgdGhlIGpvYiBvZiB0aGUgcXVldWVpbmdcbiAgMTM6XHRcdCAgZGlzY2lwbGluZXMsIHNldmVyYWwgZGlmZmVyZW50IGFsZ29yaXRobXMgZm9yIGhvdyB0byBkbyB0aGlzXG4gIDE0Olx0XHQgIFwmIzM0O2ZhaXJseVwmIzM0OyBoYXZlIGJlZW4gcHJvcG9zZWQuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIElmIHlvdSBzYXkgTiBoZXJlLCB5b3Ugd2lsbCBnZXQgdGhlIHN0YW5kYXJkIHBhY2tldCBzY2hlZHVsZXIsIHdoaWNoXG4gIDE3Olx0XHQgIGlzIGEgRklGTyAoZmlyc3QgY29tZSwgZmlyc3Qgc2VydmVkKS4gSWYgeW91IHNheSBZIGhlcmUsIHlvdSB3aWxsIGJlXG4gIDE4Olx0XHQgIGFibGUgdG8gY2hvb3NlIGZyb20gYW1vbmcgc2V2ZXJhbCBhbHRlcm5hdGl2ZSBhbGdvcml0aG1zIHdoaWNoIGNhblxuICAxOTpcdFx0ICB0aGVuIGJlIGF0dGFjaGVkIHRvIGRpZmZlcmVudCBuZXR3b3JrIGRldmljZXMuIFRoaXMgaXMgdXNlZnVsIGZvclxuICAyMDpcdFx0ICBleGFtcGxlIGlmIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXMgYXJlIHJlYWwgdGltZSBkZXZpY2VzIHRoYXRcbiAgMjE6XHRcdCAgbmVlZCBhIGNlcnRhaW4gbWluaW11bSBkYXRhIGZsb3cgcmF0ZSwgb3IgaWYgeW91IG5lZWQgdG8gbGltaXQgdGhlXG4gIDIyOlx0XHQgIG1heGltdW0gZGF0YSBmbG93IHJhdGUgZm9yIHRyYWZmaWMgd2hpY2ggbWF0Y2hlcyBzcGVjaWZpZWQgY3JpdGVyaWEuXG4gIDIzOlx0XHQgIFRoaXMgY29kZSBpcyBjb25zaWRlcmVkIHRvIGJlIGV4cGVyaW1lbnRhbC5cbiAgMjQ6XHRcbiAgMjU6XHRcdCAgVG8gYWRtaW5pc3RlciB0aGVzZSBzY2hlZHVsZXJzLCB5b3UmIzM5O2xsIG5lZWQgdGhlIHVzZXItbGV2ZWwgdXRpbGl0aWVzXG4gIDI2Olx0XHQgIGZyb20gdGhlIHBhY2thZ2UgaXByb3V0ZTImIzQzO3RjIGF0XG4gIDI3Olx0XHQgIFx1MDAzY2h0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL25ldC9pcHJvdXRlMi9cdTAwM2UuICBUaGF0IHBhY2thZ2VcbiAgMjg6XHRcdCAgYWxzbyBjb250YWlucyBzb21lIGRvY3VtZW50YXRpb247IGZvciBtb3JlLCBjaGVjayBvdXRcbiAgMjk6XHRcdCAgXHUwMDNjaHR0cDovL3d3dy5saW51eGZvdW5kYXRpb24ub3JnL2NvbGxhYm9yYXRlL3dvcmtncm91cHMvbmV0d29ya2luZy9pcHJvdXRlMlx1MDAzZS5cbiAgMzA6XHRcbiAgMzE6XHRcdCAgVGhpcyBRdWFsaXR5IG9mIFNlcnZpY2UgKFFvUykgc3VwcG9ydCB3aWxsIGVuYWJsZSB5b3UgdG8gdXNlXG4gIDMyOlx0XHQgIERpZmZlcmVudGlhdGVkIFNlcnZpY2VzIChkaWZmc2VydikgYW5kIFJlc291cmNlIFJlc2VydmF0aW9uIFByb3RvY29sXG4gIDMzOlx0XHQgIChSU1ZQKSBvbiB5b3VyIExpbnV4IHJvdXRlciBpZiB5b3UgYWxzbyBzYXkgWSB0byB0aGUgY29ycmVzcG9uZGluZ1xuICAzNDpcdFx0ICBjbGFzc2lmaWVycyBiZWxvdy4gIERvY3VtZW50YXRpb24gYW5kIHNvZnR3YXJlIGlzIGF0XG4gIDM1Olx0XHQgIFx1MDAzY2h0dHA6Ly9kaWZmc2Vydi5zb3VyY2Vmb3JnZS5uZXQvXHUwMDNlLlxuICAzNjpcdFxuICAzNzpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSBhbmQgdG8gXCYjMzQ7L3Byb2MgZmlsZSBzeXN0ZW1cJiMzNDsgYmVsb3csIHlvdSB3aWxsIGJlIGFibGVcbiAgMzg6XHRcdCAgdG8gcmVhZCBzdGF0dXMgaW5mb3JtYXRpb24gYWJvdXQgcGFja2V0IHNjaGVkdWxlcnMgZnJvbSB0aGUgZmlsZVxuICAzOTpcdFx0ICAvcHJvYy9uZXQvcHNjaGVkLlxuICA0MDpcdFxuICA0MTpcdFx0ICBUaGUgYXZhaWxhYmxlIHNjaGVkdWxlcnMgYXJlIGxpc3RlZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9uczsgeW91XG4gIDQyOlx0XHQgIGNhbiBzYXkgWSB0byBhcyBtYW55IGFzIHlvdSBsaWtlLiBJZiB1bnN1cmUsIHNheSBOIG5vdy5cbiAgNDM6XHRcbiAgNDQ6XHRpZiBORVRfU0NIRURcbiAgNDU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc1MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6CgoqKkV4YW1pbmluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgTmV0d29yayBTY2hlZHVsaW5nIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX1NDSEVEYCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGBuZXQvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgZ28tdG8gbG9jYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyByZWxhdGVkIHRvIG5ldHdvcmtpbmcgZmVhdHVyZXMsIHNvIHRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBmaXJzdCBzdGVwLiBIb3BlZnVsbHksIGBORVRfU0NIRURgIGlzIGRlZmluZWQgaW4gdGhlcmUsIGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBjbGVhcmx5IGxhaWQgb3V0LiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDtuZXQvc2NoZWQvS2NvbmZpZ1wmIzM0OyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MjY5PXNvdXJjZSBcJiMzNDtuZXQvbWFjODAyMTU0L0tjb25maWdcJiMzNDtcbm5ldC9LY29uZmlnOjI3MDpzb3VyY2UgXCYjMzQ7bmV0L3NjaGVkL0tjb25maWdcJiMzNDtcbm5ldC9LY29uZmlnLTI3MS1zb3VyY2UgXCYjMzQ7bmV0L2RjYi9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDA2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyb3VibGVzaG9vdGluZyBzb21ldGhpbmcsIGFuZCBteSBndXQgZmVlbGluZyBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSByZWxhdGVkIHRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBJbnN0ZWFkIG9mIGJsaW5kbHkgZ3JlcHBpbmcsIGxldCYjMzk7cyB0YWtlIGEgdGFyZ2V0ZWQgYXBwcm9hY2guIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGBuZXQvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMjcwLiBUaGF0IGFyZWEgdXN1YWxseSBkZWFscyB3aXRoLi4uIHdlbGwsIGJhc2VkIG9uIHByaW9yIGV4cGVyaWVuY2UgYW5kIGdlbmVyYWwga25vd2xlZGdlIG9mIHRoZSBwcm9qZWN0JiMzOTtzIHN0cnVjdHVyZS4uLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIG9wdGlvbnMgdGhhdCByZWxhdGUgdG8gbmV0d29yayBmdW5jdGlvbmFsaXR5IG9yIHNvbWUgYXNwZWN0IG9mIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb24uIEl0IGNvdWxkIGJlIGFueXRoaW5nIGZyb20gYSBzcGVjaWZpYyBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiB0byBhIGRyaXZlciYjMzk7cyBlbmFibGVtZW50LiBUaW1lIHRvIGdvIGh1bnRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI2NTpcdHNvdXJjZSBcJiMzNDtuZXQvbGFwYi9LY29uZmlnXCYjMzQ7XG4gMjY2Olx0c291cmNlIFwmIzM0O25ldC9waG9uZXQvS2NvbmZpZ1wmIzM0O1xuIDI2NzpcdHNvdXJjZSBcJiMzNDtuZXQvNmxvd3Bhbi9LY29uZmlnXCYjMzQ7XG4gMjY4Olx0c291cmNlIFwmIzM0O25ldC9pZWVlODAyMTU0L0tjb25maWdcJiMzNDtcbiAyNjk6XHRzb3VyY2UgXCYjMzQ7bmV0L21hYzgwMjE1NC9LY29uZmlnXCYjMzQ7XG4gMjcwOlx0c291cmNlIFwmIzM0O25ldC9zY2hlZC9LY29uZmlnXCYjMzQ7XG4gMjcxOlx0c291cmNlIFwmIzM0O25ldC9kY2IvS2NvbmZpZ1wmIzM0O1xuIDI3MjpcdHNvdXJjZSBcJiMzNDtuZXQvZG5zX3Jlc29sdmVyL0tjb25maWdcJiMzNDtcbiAyNzM6XHRzb3VyY2UgXCYjMzQ7bmV0L2JhdG1hbi1hZHYvS2NvbmZpZ1wmIzM0O1xuIDI3NDpcdHNvdXJjZSBcJiMzNDtuZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZ1wmIzM0O1xuIDI3NTpcdHNvdXJjZSBcJiMzNDtuZXQvdm13X3Zzb2NrL0tjb25maWdcJiMzNDtcbiAyNzY6XHRzb3VyY2UgXCYjMzQ7bmV0L25ldGxpbmsvS2NvbmZpZ1wmIzM0O1xuIDI3NzpcdHNvdXJjZSBcJiMzNDtuZXQvbXBscy9LY29uZmlnXCYjMzQ7XG4gMjc4Olx0c291cmNlIFwmIzM0O25ldC9uc2gvS2NvbmZpZ1wmIzM0O1xuIDI3OTpcdHNvdXJjZSBcJiMzNDtuZXQvaHNyL0tjb25maWdcJiMzNDtcbiAyODA6XHRzb3VyY2UgXCYjMzQ7bmV0L3N3aXRjaGRldi9LY29uZmlnXCYjMzQ7XG4gMjgxOlx0c291cmNlIFwmIzM0O25ldC9sM21kZXYvS2NvbmZpZ1wmIzM0O1xuIDI4MjpcdHNvdXJjZSBcJiMzNDtuZXQvcXJ0ci9LY29uZmlnXCYjMzQ7XG4gMjgzOlx0c291cmNlIFwmIzM0O25ldC9uY3NpL0tjb25maWdcJiMzNDtcbiAyODQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1NzkKCQkJCQkJCW91dHB1dDogNjEKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRnVuY3Rpb24gU3ltYm9scyBpbiBgc2NoX2Ryci5jYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gRmlyc3QsIEkgbmVlZCB0byBzZWUgZXhhY3RseSB3aGljaCBmdW5jdGlvbiBzeW1ib2xzIGhhdmUgYmVlbiB0b3VjaGVkIHdpdGhpbiBlYWNoIGZpbGUuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIHJlY2VudCBtb2RpZmljYXRpb25zLCB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzIG1hZGUgdG8gdGhlIERSUiBzY2hlZHVsZXIuIEFscmlnaHQsIHN0YXJ0aW5nIHdpdGggYG5ldC9zY2hlZC9zY2hfZHJyLmNgLCBpdCBsb29rcyBsaWtlIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBhbHRlcmVkIGlzIGBkcnJfY2hhbmdlX2NsYXNzYC4gR29vZCwgdGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgc28gaXQmIzM5O3MgbGlrZWx5IGludGVybmFsIHRvIHRoYXQgc3BlY2lmaWMgZmlsZS4gTm93LCBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGNvbXBsZXRlIGBzY2hfZHJyLmNgIGZpbGUgaXRzZWxmIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIG1vZGlmaWNhdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBpbXBsZW1lbnRhdGlvbi4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyhkcnJfaW5pdHxkcnJfZW5xdWV1ZXxkcnJfZGVxdWV1ZXxkcnJfY2hhbmdlX2NsYXNzfGRycl9xZGlzY19vcHMpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9kcnIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2Ryci5jPTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkcnJfcG9saWN5W1RDQV9EUlJfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfZHJyLmMtNTctXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjU4OnN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNTktXHRcdFx0ICAgIHN0cnVjdCBubGF0dHIgKip0Y2EsIHVuc2lnbmVkIGxvbmcgKmFyZyxcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jPTI5OT1zdGF0aWMgc3RydWN0IGRycl9jbGFzcyAqZHJyX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuLS1cbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzM2LVxubmV0L3NjaGVkL3NjaF9kcnIuYzozMzc6c3RhdGljIGludCBkcnJfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzM4LVx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxuLS1cbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzcxLVxubmV0L3NjaGVkL3NjaF9kcnIuYzozNzI6c3RhdGljIHN0cnVjdCBza19idWZmICpkcnJfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzczLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQxMS1cbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDEyOnN0YXRpYyBpbnQgZHJyX2luaXRfcWRpc2Moc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDEzLVx0XHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfZHJyLmM9NDYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGRycl9jbGFzc19vcHMgPSB7XG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ2MTpcdC5jaGFuZ2VcdFx0PSBkcnJfY2hhbmdlX2NsYXNzLFxubmV0L3NjaGVkL3NjaF9kcnIuYy00NjItXHQuZGVsZXRlXHRcdD0gZHJyX2RlbGV0ZV9jbGFzcyxcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ3NC1cbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDc1OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGRycl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDc2LVx0LmNsX29wc1x0XHQ9IFx1MDAyNmRycl9jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9kcnIuYy00NzgtXHQucHJpdl9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgZHJyX3NjaGVkKSxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDc5Olx0LmVucXVldWVcdD0gZHJyX2VucXVldWUsXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ4MDpcdC5kZXF1ZXVlXHQ9IGRycl9kZXF1ZXVlLFxubmV0L3NjaGVkL3NjaF9kcnIuYy00ODEtXHQucGVla1x0XHQ9IHFkaXNjX3BlZWtfZGVxdWV1ZWQsXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ4MjpcdC5pbml0XHRcdD0gZHJyX2luaXRfcWRpc2MsXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ4My1cdC5yZXNldFx0XHQ9IGRycl9yZXNldF9xZGlzYyxcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jPTQ4Nz1NT0RVTEVfQUxJQVNfTkVUX1NDSChcJiMzNDtkcnJcJiMzNDspO1xubmV0L3NjaGVkL3NjaF9kcnIuYy00ODgtXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ4OTpzdGF0aWMgaW50IF9faW5pdCBkcnJfaW5pdCh2b2lkKVxubmV0L3NjaGVkL3NjaF9kcnIuYy00OTAte1xubmV0L3NjaGVkL3NjaF9kcnIuYzo0OTE6XHRyZXR1cm4gcmVnaXN0ZXJfcWRpc2MoXHUwMDI2ZHJyX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ5Mi19XG4tLVxubmV0L3NjaGVkL3NjaF9kcnIuYz00OTQ9c3RhdGljIHZvaWQgX19leGl0IGRycl9leGl0KHZvaWQpXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ5NS17XG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ5NjpcdHVucmVnaXN0ZXJfcWRpc2MoXHUwMDI2ZHJyX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ5Ny19XG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ5OC1cbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDk5Om1vZHVsZV9pbml0KGRycl9pbml0KTtcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNTAwLW1vZHVsZV9leGl0KGRycl9leGl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM5MTcKCQkJCQkJCW91dHB1dDogNzMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBzY2hfZHVhbHBpMi5jYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBzY2hfZHVhbHBpMi5jYC4gSSBoYXZlIGEgZmVlbGluZyBzb21ldGhpbmcgaXNuJiMzOTt0IHF1aXRlIHJpZ2h0IHdpdGggdGhlIHNjaGVkdWxpbmcgaW4gdGhhdCBhcmVhLCBhbmQgdGhpcyBpcyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBvZiB0aGUgdXN1YWwgc3VzcGVjdHMg4oCTIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGluZWZmaWNpZW50IGxvY2tpbmcsIG9yIG1heWJlIGV2ZW4gYSBzdWJ0bGUgb3ZlcmZsb3cgYnVnIGNyZWVwaW5nIGluIHdpdGggaG93IHRoZSBkdWFsLVBJIGNvbnRyb2xsZXIgaGFuZGxlcyBpdHMgc2NoZWR1bGluZy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRlYWRsaW5lcyBhcmUgYmVpbmcgbWFuYWdlZCwgaG93IHRoZSBwcmlvcml0aWVzIGFyZSBzZXQsIGFuZCB3aGV0aGVyIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgaXMgYmVoYXZpbmcgYXMgSSYjMzk7ZCBleHBlY3QuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBwaW5wb2ludCBhbnkgb2J2aW91cyBhcmVhcyB0aGF0IG1pZ2h0IGJlIGNvbnRyaWJ1dGluZyB0byB0aGUgb2JzZXJ2ZWQgcGVyZm9ybWFuY2UgaXNzdWVzIEkmIzM5O3ZlIGJlZW4gc2VlaW5nIG9yIHBvdGVudGlhbCBnbGl0Y2hlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBpbXBhY3QgZGV0ZXJtaW5pc20gaW4gdGhpcyBjcml0aWNhbCBzZWN0aW9uLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsoZHVhbHBpMl9pbml0fGR1YWxwaTJfY2hhbmdlfGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbnxtdXN0X2Ryb3B8Z2V0X21lbW9yeV9saW1pdHxkdWFscGkyX3FkaXNjX29wcykmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xOTk9c3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSlcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMDctICovXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyMDg6c3RhdGljIHZvaWQgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjA5LVx0XHRcdFx0XHQgICBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLCB1MzIgd2MpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MjU1PXN0YXRpYyBib29sIGR1YWxwaTJfc2NhbGFibGVfbWFya2luZyhzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI4My0gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI4NDpzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yODUtXHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9Mzg4PXN0YXRpYyBpbnQgZHVhbHBpMl9lbnF1ZXVlX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00MDEtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0MDI6XHRpZiAocS1cdTAwM2Vkcm9wX2Vhcmx5IFx1MDAyNlx1MDAyNiBtdXN0X2Ryb3Aoc2NoLCBxLCBza2IpKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00MDMtXHRcdHFkaXNjX2Ryb3BfcmVhc29uKHNrYiwgc2NoLCB0b19mcmVlLCBRRElTQ19EUk9QX0NPTkdFU1RFRCk7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NTgzPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqX19kdWFscGkyX3FkaXNjX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTkyLVx0d2hpbGUgKChza2IgPSBkZXF1ZXVlX3BhY2tldChzY2gsIHEsIFx1MDAyNmNyZWRpdF9jaGFuZ2UsIG5vdykpKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1OTM6XHRcdGlmICghcS1cdTAwM2Vkcm9wX2Vhcmx5IFx1MDAyNlx1MDAyNiBtdXN0X2Ryb3Aoc2NoLCBxLCBza2IpKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01OTQtXHRcdFx0ZHJvcF9hbmRfcmV0cnkocSwgc2tiLCBzY2gsIFFESVNDX0RST1BfQ09OR0VTVEVEKTtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz02NzU9c3RhdGljIHUzMiBjYWxjdWxhdGVfcHJvYmFiaWxpdHkoc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzEyLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzEzOnN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzE0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz03Njk9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGR1YWxwaTJfcG9saWN5W1RDQV9EVUFMUEkyX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03OTQtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3OTU6c3RhdGljIGludCBkdWFscGkyX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzk2LVx0XHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTgyMy1cdFx0V1JJVEVfT05DRShzY2gtXHUwMDNlbGltaXQsIGxpbWl0KTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjgyNDpcdFx0V1JJVEVfT05DRShxLVx1MDAzZW1lbW9yeV9saW1pdCwgZ2V0X21lbW9yeV9saW1pdChzY2gsIGxpbWl0KSk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04MjUtXHR9XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtODkxLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6ODkyOlx0XHRkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc2NoLCBxLCB3Yyk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04OTMtXHR9XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9OTQ5PXN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfZGVmYXVsdChzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NTMtXHRxLVx1MDAzZXNjaC1cdTAwM2VsaW1pdCA9IDEwMDAwO1x0XHRcdFx0LyogTWF4IDEyNW1zIGF0IDFHYnBzICovXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5NTQ6XHRxLVx1MDAzZW1lbW9yeV9saW1pdCA9IGdldF9tZW1vcnlfbGltaXQoc2NoLCBxLVx1MDAzZXNjaC1cdTAwM2VsaW1pdCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NTUtXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTYzLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTY0Olx0ZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHEtXHUwMDNlc2NoLCBxLCAxMCk7XHQvKiB3Yz0xMCUsIHdsPTkwJSAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTY1LVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk3My1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk3NDpzdGF0aWMgaW50IGR1YWxwaTJfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTc1LVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05OTYtXHRpZiAob3B0IFx1MDAyNlx1MDAyNiBubGFfbGVuKG9wdCkpIHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk5NzpcdFx0ZXJyID0gZHVhbHBpMl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05OTgtXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTE5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBkdWFscGkyX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjAxLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwMjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBkdWFscGkyX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIwMy1cdC5pZFx0XHQ9IFwmIzM0O2R1YWxwaTJcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIwOC1cdC5wZWVrXHRcdD0gZHVhbHBpMl9wZWVrLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwOTpcdC5pbml0XHRcdD0gZHVhbHBpMl9pbml0LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIxMC1cdC5kZXN0cm95XHQ9IGR1YWxwaTJfZGVzdHJveSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTEtXHQucmVzZXRcdFx0PSBkdWFscGkyX3Jlc2V0LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxMjpcdC5jaGFuZ2VcdFx0PSBkdWFscGkyX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTMtXHQuZHVtcFx0XHQ9IGR1YWxwaTJfZHVtcCxcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xMjE5PXN0YXRpYyBpbnQgX19pbml0IGR1YWxwaTJfbW9kdWxlX2luaXQodm9pZClcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjAte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyMTpcdHJldHVybiByZWdpc3Rlcl9xZGlzYyhcdTAwMjZkdWFscGkyX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjIyLX1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xMjI0PXN0YXRpYyB2b2lkIF9fZXhpdCBkdWFscGkyX21vZHVsZV9leGl0KHZvaWQpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjI1LXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjY6XHR1bnJlZ2lzdGVyX3FkaXNjKFx1MDAyNmR1YWxwaTJfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA4NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIEludGVyYWN0aW9uIEJldHdlZW4gYHNjaF9waWVgIGFuZCBgcGllX2Ryb3BfZWFybHlgKioKCkhtbSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYHNjaF9waWUuY2AgYWdhaW4uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyByZWxhdGVkIHRvIGBwaWVfZHJvcF9lYXJseWAgYW5kIGl0cyB1c2FnZSwgYmVjYXVzZSBJIGtub3cgdGhhdCBmdW5jdGlvbiBpcyBlaXRoZXIgZXhwb3J0ZWQgb3IgdXNlZCBpbiBlaXRoZXIgYHNjaF9waWVgIG9yIGBzY2hfZnFfcGllYC4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIHNvbWUgc2NoZWR1bGluZyBsb2dpYyB3aXRoaW4gdGhvc2UgbW9kdWxlcy4gVG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgYm90aCB0aGUgYC5jYCBmaWxlIGl0c2VsZiwgYW5kIGFueSBjb3JyZXNwb25kaW5nIGAuaGAgaGVhZGVyIGZpbGUgaWYgaXQgZXhpc3RzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgY2FsbCBzaXRlcy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTEzMD1zdGF0aWMgaW50IGZxX3BpZV9xZGlzY19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMTY2LVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzoxNjc6XHRpZiAoIXBpZV9kcm9wX2Vhcmx5KHNjaCwgXHUwMDI2cS1cdTAwM2VwX3BhcmFtcywgXHUwMDI2c2VsX2Zsb3ctXHUwMDNldmFycyxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMTY4LVx0XHRcdCAgICBzZWxfZmxvdy1cdTAwM2ViYWNrbG9nLCBza2ItXHUwMDNlbGVuKSkge1xuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmM9MjU9c3RydWN0IHBpZV9zY2hlZF9kYXRhIHtcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTMyLVxubmV0L3NjaGVkL3NjaF9waWUuYzozMzpib29sIHBpZV9kcm9wX2Vhcmx5KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcGllX3BhcmFtcyAqcGFyYW1zLFxubmV0L3NjaGVkL3NjaF9waWUuYy0zNC1cdFx0ICAgIHN0cnVjdCBwaWVfdmFycyAqdmFycywgdTMyIGJhY2tsb2csIHUzMiBwYWNrZXRfc2l6ZSlcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTUwLVxubmV0L3NjaGVkL3NjaF9waWUuYzo1MTpcdC8qIElmIHdlIGhhdmUgZmV3ZXIgdGhhbiAyIG10dS1zaXplZCBwYWNrZXRzLCBkaXNhYmxlIHBpZV9kcm9wX2Vhcmx5LFxubmV0L3NjaGVkL3NjaF9waWUuYy01Mi1cdCAqIHNpbWlsYXIgdG8gbWluX3RoIGluIFJFRFxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtODItfVxubmV0L3NjaGVkL3NjaF9waWUuYzo4MzpFWFBPUlRfU1lNQk9MX0dQTChwaWVfZHJvcF9lYXJseSk7XG5uZXQvc2NoZWQvc2NoX3BpZS5jLTg0LVxubmV0L3NjaGVkL3NjaF9waWUuYz04NT1zdGF0aWMgaW50IHBpZV9xZGlzY19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtOTgtXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjk5Olx0aWYgKCFwaWVfZHJvcF9lYXJseShzY2gsIFx1MDAyNnEtXHUwMDNlcGFyYW1zLCBcdTAwMjZxLVx1MDAzZXZhcnMsIHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyxcbm5ldC9zY2hlZC9zY2hfcGllLmMtMTAwLVx0XHRcdCAgICBza2ItXHUwMDNlbGVuKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjg0NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6CgoqKkFuYWx5emluZyB0aGUgUElFIFNjaGVkdWxlciBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIGBwaWVfZHJvcF9lYXJseWAgaXMgYSBwcmV0dHkgaW1wb3J0YW50IGZ1bmN0aW9uIGluIHRoZSBQSUUgc2NoZWR1bGVyLCBhbmQgaXQmIzM5O3MgZXhwb3J0ZWQgd2l0aCB0aGUgR1BMIHN5bWJvbC4gVGhhdCBzaWduYWxzIGl0JiMzOTtzIG1lYW50IHRvIGJlIHVzZWQgZXh0ZXJuYWxseSwgcGVyaGFwcyBieSBvdGhlciBrZXJuZWwgbW9kdWxlcy4gR2l2ZW4gaXRzIG5hbWUsIEkmIzM5O20gZ3Vlc3NpbmcgaXQmIzM5O3MgcmVsYXRlZCB0byBkcm9wcGluZyBwYWNrZXRzLCBidXQgbGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBQSUUgYXJjaGl0ZWN0dXJlLgoKVGltZSB0byBkaXZlIGludG8gYHNjaF9waWUuY2AuIEkgbmVlZCB0byByZXZpZXcgcmVsYXRlZCBmdW5jdGlvbnMuIEZpcnN0LCBJJiMzOTtsbCBiZSBsb29raW5nIGF0IGhvdyBwYWNrZXRzIGFyZSBlbnF1ZXVlZC9kZXF1ZXVlZCBieSBjaGVja2luZyBmdW5jdGlvbnMgbGlrZSBgcGllX3Byb2Nlc3NfZGVxdWV1ZWAgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gVGhlbiwgYHBpZV9pbml0YCBpcyBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIHRoZSBzY2hlZHVsaW5nIGRpc2NpcGxpbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2NoZWR1bGVyIGlzIGluaXRpYWxpemVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IGBwaWVfZHJvcF9lYXJseWAgbWlnaHQgYmUgY2FsbGVkLiBJJiMzOTttIGhvcGluZyBJIGNhbiBwaWVjZSB0b2dldGhlciB0aGUgbG9naWMgYW5kIGlkZW50aWZ5IHRoZSBzaXR1YXRpb25zIGluIHdoaWNoIGEgcGFja2V0IGlzIGRyb3BwZWQgZWFybHkgYW5kIHRoZSBjb250ZXh0IGFyb3VuZCB3aHkgdGhpcyBpcyBoYXBwZW5pbmcuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsocGllX2luaXR8cGllX2NoYW5nZXxwaWVfcWRpc2Nfb3BzKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfcGllLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9waWUuYz0xMzA9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHBpZV9wb2xpY3lbVENBX1BJRV9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYy0xNDAtXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjE0MTpzdGF0aWMgaW50IHBpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfcGllLmMtMTQyLVx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYz00MjU9c3RhdGljIHZvaWQgcGllX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtNDQyLVxubmV0L3NjaGVkL3NjaF9waWUuYzo0NDM6c3RhdGljIGludCBwaWVfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9waWUuYy00NDQtXHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYy00NTUtXHRpZiAob3B0KSB7XG5uZXQvc2NoZWQvc2NoX3BpZS5jOjQ1NjpcdFx0aW50IGVyciA9IHBpZV9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XG5uZXQvc2NoZWQvc2NoX3BpZS5jLTQ1Ny1cbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTU0Mz1zdGF0aWMgdm9pZCBwaWVfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU1MC1cbm5ldC9zY2hlZC9zY2hfcGllLmM6NTUxOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHBpZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTUyLVx0LmlkXHRcdD0gXCYjMzQ7cGllXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtNTU2LVx0LnBlZWtcdFx0PSBxZGlzY19wZWVrX2RlcXVldWVkLFxubmV0L3NjaGVkL3NjaF9waWUuYzo1NTc6XHQuaW5pdFx0XHQ9IHBpZV9pbml0LFxubmV0L3NjaGVkL3NjaF9waWUuYy01NTgtXHQuZGVzdHJveVx0PSBwaWVfZGVzdHJveSxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTU5LVx0LnJlc2V0XHRcdD0gcGllX3Jlc2V0LFxubmV0L3NjaGVkL3NjaF9waWUuYzo1NjA6XHQuY2hhbmdlXHRcdD0gcGllX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTYxLVx0LmR1bXBcdFx0PSBwaWVfZHVtcCxcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTU2Nz1zdGF0aWMgaW50IF9faW5pdCBwaWVfbW9kdWxlX2luaXQodm9pZClcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTY4LXtcbm5ldC9zY2hlZC9zY2hfcGllLmM6NTY5Olx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFx1MDAyNnBpZV9xZGlzY19vcHMpO1xubmV0L3NjaGVkL3NjaF9waWUuYy01NzAtfVxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmM9NTcyPXN0YXRpYyB2b2lkIF9fZXhpdCBwaWVfbW9kdWxlX2V4aXQodm9pZClcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTczLXtcbm5ldC9zY2hlZC9zY2hfcGllLmM6NTc0Olx0dW5yZWdpc3Rlcl9xZGlzYyhcdTAwMjZwaWVfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTc1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5MjgKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIHByb3ZpZGVkIHByb21wdDoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBDb2RlYmFzZSoqCgpPa2F5LCBzbyB0aGUgcHJvbXB0IGRpcmVjdHMgbWUgdG8gZXhhbWluZSBhIHNwZWNpZmljIGZpbGUsIGBzY2hfZXRzLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjb25zaWRlciB0aGUgY29udGV4dCBvZiB0aGlzIGZpbGUuIEJhc2VkIG9uIHRoZSBuYW1lLCBpdCYjMzk7cyBoaWdobHkgcHJvYmFibGUgdGhpcyBmaWxlIGlzIHJlbGF0ZWQgdG8gc2NoZWR1bGluZyBhbmQgbGlrZWx5IGludm9sdmVzIGFuIGVtYmVkZGVkIHN5c3RlbSBvciByZWFsLXRpbWUgb3BlcmF0aW5nIHN5c3RlbSAoUlRPUykuICYjMzQ7c2NoJiMzNDsgdHlwaWNhbGx5IGluZGljYXRlcyAmIzM0O3NjaGVkdWxlciYjMzQ7IGFuZCAmIzM0O2V0cyYjMzQ7IHByb2JhYmx5IHNpZ25pZmllcyAmIzM0O0VhcmxpZXN0IERlYWRsaW5lIEZpcnN0JiMzNDsgb3Igc29tZXRoaW5nIHNpbWlsYXIgcmVsYXRlZCB0byB0aW1pbmcgY29uc3RyYWludHMuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24gcXVpY2tseSBhcyBJIGRpdmUgaW4uIE15IGZvY3VzIHdpbGwgYmUgb24gdW5kZXJzdGFuZGluZyB0aGUgY29yZSBzY2hlZHVsaW5nIGFsZ29yaXRobXMgYW5kIGRhdGEgc3RydWN0dXJlcyBpbXBsZW1lbnRlZCB3aXRoaW4uIEkgZXhwZWN0IHRvIGZpbmQgZnVuY3Rpb25zIGZvciB0YXNrIG1hbmFnZW1lbnQsIHByaW9yaXR5IGhhbmRsaW5nLCBhbmQgdGltZSBtYW5hZ2VtZW50LiBNeSBpbml0aWFsIGFwcHJvYWNoIHdpbGwgYmUgYSBxdWljayBzY2FuIG9mIHRoZSBjb2RlLCBsb29raW5nIGZvciBrZXkgZnVuY3Rpb24gbmFtZXMgYW5kIGRhdGEgc3RydWN0dXJlIGRlZmluaXRpb25zIHRvIGVzdGFibGlzaCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYmVmb3JlIGRlbHZpbmcgaW50byB0aGUgZGV0YWlscy4gSSB3aWxsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbW1lbnRzIG9yIGRvY3VtZW50YXRpb24gd2l0aGluIHRoZSBmaWxlLCBhcyB0aGlzIGlzIG9mdGVuIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRldmVsb3BlciYjMzk7cyBpbnRlbnQgYW5kIGhvdyB0aGUgc2NoZWR1bGluZyBwcm9jZXNzIGlzIGRlc2lnbmVkIHRvIHdvcmsuIEl0JiMzOTtzIGxpa2VseSBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIHBvaW50cyBvciBhcmVhcyB3aGVyZSBjb25jdXJyZW5jeSBpc3N1ZXMgY291bGQgYXJpc2UsIGdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCBzdWNoIHN5c3RlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyhldHNfaW5pdHxldHNfY2hhbmdlfGV0c19xdWFudHVtX3BhcnNlfGV0c19xZGlzY19vcHMpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9ldHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2V0cy5jPTc3PXN0YXRpYyBib29sIGNsX2lzX2FjdGl2ZShzdHJ1Y3QgZXRzX2NsYXNzICpjbClcbi0tXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgxLVxubmV0L3NjaGVkL3NjaF9ldHMuYzo4MjpzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxubmV0L3NjaGVkL3NjaF9ldHMuYy04My1cdFx0XHQgICAgIHVuc2lnbmVkIGludCAqcXVhbnR1bSxcbi0tXG5uZXQvc2NoZWQvc2NoX2V0cy5jPTIwND1zdGF0aWMgaW50IGV0c19jbGFzc19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBjbGFzc2lkLCB1MzIgcGFyZW50aWQsXG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYy0yNDAtXG5uZXQvc2NoZWQvc2NoX2V0cy5jOjI0MTpcdGVyciA9IGV0c19xdWFudHVtX3BhcnNlKHNjaCwgdGJbVENBX0VUU19RVUFOVEFfQkFORF0sIFx1MDAyNnF1YW50dW0sXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTI0Mi1cdFx0XHRcdGV4dGFjayk7XG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYz01NDI9c3RhdGljIGludCBldHNfcWRpc2NfcXVhbnRhX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpxdWFudGFfYXR0cixcbi0tXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTU2NC1cdFx0XHR9XG5uZXQvc2NoZWQvc2NoX2V0cy5jOjU2NTpcdFx0XHRlcnIgPSBldHNfcXVhbnR1bV9wYXJzZShzY2gsIGF0dHIsIFx1MDAyNnF1YW50YVtiYW5kJiM0MzsmIzQzO10sXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTU2Ni1cdFx0XHRcdFx0XHRleHRhY2spO1xuLS1cbm5ldC9zY2hlZC9zY2hfZXRzLmM9ODAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGV0c19jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYy04MTMtXG5uZXQvc2NoZWQvc2NoX2V0cy5jOjgxNDpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBldHNfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgxNS1cdC5jbF9vcHNcdFx0PSBcdTAwMjZldHNfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfZXRzLmM9ODI4PU1PRFVMRV9BTElBU19ORVRfU0NIKFwmIzM0O2V0c1wmIzM0Oyk7XG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgyOS1cbm5ldC9zY2hlZC9zY2hfZXRzLmM6ODMwOnN0YXRpYyBpbnQgX19pbml0IGV0c19pbml0KHZvaWQpXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgzMS17XG5uZXQvc2NoZWQvc2NoX2V0cy5jOjgzMjpcdHJldHVybiByZWdpc3Rlcl9xZGlzYyhcdTAwMjZldHNfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZXRzLmMtODMzLX1cbi0tXG5uZXQvc2NoZWQvc2NoX2V0cy5jPTgzNT1zdGF0aWMgdm9pZCBfX2V4aXQgZXRzX2V4aXQodm9pZClcbm5ldC9zY2hlZC9zY2hfZXRzLmMtODM2LXtcbm5ldC9zY2hlZC9zY2hfZXRzLmM6ODM3Olx0dW5yZWdpc3Rlcl9xZGlzYyhcdTAwMjZldHNfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZXRzLmMtODM4LX1cbm5ldC9zY2hlZC9zY2hfZXRzLmMtODM5LVxubmV0L3NjaGVkL3NjaF9ldHMuYzo4NDA6bW9kdWxlX2luaXQoZXRzX2luaXQpO1xubmV0L3NjaGVkL3NjaF9ldHMuYy04NDEtbW9kdWxlX2V4aXQoZXRzX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODk5OQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU2NoZWR1bGVyIEZyZXF1ZW5jeSBDb2RlKioKCk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIGBzY2hfZnEuY2AuIFRoaXMgZmlsZSBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgZnJlcXVlbmN5IHNjYWxpbmcgbG9naWMgZm9yIHRoZSBzY2hlZHVsZXIgcmVzaWRlcy4gR2l2ZW4gbXkgZXhwZXJ0aXNlIGluIGtlcm5lbCBpbnRlcm5hbHMsIEkmIzM5O20gYW50aWNpcGF0aW5nIHRvIHNlZSB0aGUgY29udHJvbCBsb29wcywgdGhlIGRlY2lzaW9uLW1ha2luZyBwcm9jZXNzZXMgZm9yIHNlbGVjdGluZyBmcmVxdWVuY2llcywgYW5kIGhvdyB0aGVzZSBkZWNpc2lvbnMgYXJlIHRoZW4gY29tbXVuaWNhdGVkIHRvIHRoZSBoYXJkd2FyZS4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHRoZSBnb3Zlcm5vciBpbXBsZW1lbnRhdGlvbnMgKGlmIHRoZXkmIzM5O3JlIHByZXNlbnQpLCB0aGUgYWxnb3JpdGhtcyB1c2VkIGZvciB3b3JrbG9hZCBjaGFyYWN0ZXJpemF0aW9uLCBhbmQgdGhlIGludGVyYWN0aW9ucyB3aXRoIHRoZSBwb3dlciBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2NoZWR1bGVyIGFjY291bnRzIGZvciBib3RoIHBlcmZvcm1hbmNlIGFuZCBwb3dlciBjb25zdW1wdGlvbiBpbiBpdHMgZnJlcXVlbmN5IGNob2ljZXMuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyhmcV9pbml0fGZxX2NoYW5nZXxmcV9xZGlzY19vcHMpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9mcS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZnEuYz0xMDUyPXN0YXRpYyBpbnQgZnFfbG9hZF9wcmlvbWFwKHN0cnVjdCBmcV9zY2hlZF9kYXRhICpxLFxuLS1cbm5ldC9zY2hlZC9zY2hfZnEuYy0xMDczLVxubmV0L3NjaGVkL3NjaF9mcS5jOjEwNzQ6c3RhdGljIGludCBmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfZnEuYy0xMDc1LVx0XHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxLmM9MTIxMj1zdGF0aWMgdm9pZCBmcV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfZnEuYy0xMjIwLVxubmV0L3NjaGVkL3NjaF9mcS5jOjEyMjE6c3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTIyMi1cdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfZnEuYy0xMjYxLVx0aWYgKG9wdClcbm5ldC9zY2hlZC9zY2hfZnEuYzoxMjYyOlx0XHRlcnIgPSBmcV9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTI2My1cdGVsc2Vcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxLmM9MTM0Mj1zdGF0aWMgaW50IGZxX2R1bXBfc3RhdHMoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBnbmV0X2R1bXAgKmQpXG4tLVxubmV0L3NjaGVkL3NjaF9mcS5jLTEzNzgtXG5uZXQvc2NoZWQvc2NoX2ZxLmM6MTM3OTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBmcV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfZnEuYy0xMzgwLVx0LmlkXHRcdD1cdFwmIzM0O2ZxXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfZnEuYy0xMzg1LVx0LnBlZWtcdFx0PVx0cWRpc2NfcGVla19kZXF1ZXVlZCxcbm5ldC9zY2hlZC9zY2hfZnEuYzoxMzg2Olx0LmluaXRcdFx0PVx0ZnFfaW5pdCxcbm5ldC9zY2hlZC9zY2hfZnEuYy0xMzg3LVx0LnJlc2V0XHRcdD1cdGZxX3Jlc2V0LFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzODgtXHQuZGVzdHJveVx0PVx0ZnFfZGVzdHJveSxcbm5ldC9zY2hlZC9zY2hfZnEuYzoxMzg5Olx0LmNoYW5nZVx0XHQ9XHRmcV9jaGFuZ2UsXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTM5MC1cdC5kdW1wXHRcdD1cdGZxX2R1bXAsXG4tLVxubmV0L3NjaGVkL3NjaF9mcS5jPTEzOTY9c3RhdGljIGludCBfX2luaXQgZnFfbW9kdWxlX2luaXQodm9pZClcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTQwNS1cbm5ldC9zY2hlZC9zY2hfZnEuYzoxNDA2Olx0cmV0ID0gcmVnaXN0ZXJfcWRpc2MoXHUwMDI2ZnFfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZnEuYy0xNDA3LVx0aWYgKHJldClcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxLmM9MTQxMj1zdGF0aWMgdm9pZCBfX2V4aXQgZnFfbW9kdWxlX2V4aXQodm9pZClcbm5ldC9zY2hlZC9zY2hfZnEuYy0xNDEzLXtcbm5ldC9zY2hlZC9zY2hfZnEuYzoxNDE0Olx0dW5yZWdpc3Rlcl9xZGlzYyhcdTAwMjZmcV9xZGlzY19vcHMpO1xubmV0L3NjaGVkL3NjaF9mcS5jLTE0MTUtXHRrbWVtX2NhY2hlX2Rlc3Ryb3koZnFfZmxvd19jYWNoZXApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAyOQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYHNjaF9mcV9waWUuY2AqKgoKQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIGBzY2hfZnFfcGllLmNgLiBJJiMzOTttIHN0YXJ0aW5nIGhlcmUgYmVjYXVzZSBJIG5lZWQgYSBkZWVwZXIgZGl2ZSBpbnRvIGhvdyB0aGlzIHNjaGVkdWxlciBoYW5kbGVzIHRoZSB2YXJpb3VzIHF1ZXVlcywgZXNwZWNpYWxseSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBmYWlyIHF1ZXVpbmcgYW5kIHBhY2tldCBkZWxheSBlc3RpbWF0aW9uLiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nIGlzIGFtaXNzIGluIGhvdyB0aGV5JiMzOTtyZSBjb21iaW5lZCwgb3IgcGVyaGFwcyBhIHN1YnRsZSBidWcgaXMgbHVya2luZyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHJlbGF0ZWQgdG8gdGhlIFBJRSBjb21wb25lbnQuIEkgd2FudCB0byBjaGVjayB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMsIHNwZWNpZmljYWxseSB0aGUgcGVyLXF1ZXVlIHN0YXRlLiBJJiMzOTtsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgYG5ldGVtYCBjb21wb25lbnQgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBMZXQgbWUgZXhhbWluZSBob3cgdGhlIGZhaXIgcXVldWluZyBpcyBpbXBsZW1lbnRlZCwgY29uZmlybSBpZiB0aGUgcm91bmQgcm9iaW4gYXBwcm9hY2ggaXMgaW1wbGVtZW50ZWQgYW5kIGhvdyBpdCBpcyBpbXBsZW1lbnRlZC4gSSBzaG91bGQgbG9vayBzcGVjaWZpY2FsbHkgYXQgaG93IFBJRSYjMzk7cyBhY3RpdmUgcXVldWUgbWFuYWdlbWVudCBpcyB0cmlnZ2VyZWQgYW5kIHdoZXRoZXIgdGhlcmUmIzM5O3MgYW55IHVubmVjZXNzYXJ5IGJsb2NraW5nIG9yIGNvbnRlbnRpb24gdGhhdCBjb3VsZCBiZSBjYXVzaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCB1bmRlciBoaWdoIGxvYWQuIEkgbmVlZCB0byBsb29rIGF0IGhvdyBkaWZmZXJlbnQgdHJhZmZpYyBjbGFzc2VzIGFyZSB3ZWlnaHRlZCBvciBwcmlvcml0aXplZCB3aXRoaW4gdGhlIFBJRSBwYXJhbWV0ZXJzLiBJIHNob3VsZCBsb29rIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHJlbGF0ZWQgdG8gdGhlIGVucXVldWUgYW5kIGRlcXVldWUgb3BlcmF0aW9ucywgYXMgd2VsbCBhcyBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgc3RhdGlzdGljcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7KGZxX3BpZV9pbml0fGZxX3BpZV9jaGFuZ2V8ZnFfcGllX3FkaXNjX29wcykmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2ZxX3BpZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZnFfcGllLmM9MjM4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZnFfcGllX3FkaXNjX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy0yODYtXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjI4NzpzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMjg4LVx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYz0zODg9c3RhdGljIHZvaWQgZnFfcGllX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNDIwLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo0MjE6c3RhdGljIGludCBmcV9waWVfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy00MjItXHRcdCAgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy00NDItXHRpZiAob3B0KSB7XG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjQ0MzpcdFx0ZXJyID0gZnFfcGllX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNDQ0LVxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM9NTU2PXN0YXRpYyB2b2lkIGZxX3BpZV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTY1LVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1NjY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZnFfcGllX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NjctXHQuaWRcdFx0PSBcJiMzNDtmcV9waWVcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NzEtXHQucGVla1x0XHQ9IHFkaXNjX3BlZWtfZGVxdWV1ZWQsXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjU3MjpcdC5pbml0XHRcdD0gZnFfcGllX2luaXQsXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU3My1cdC5kZXN0cm95XHQ9IGZxX3BpZV9kZXN0cm95LFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NzQtXHQucmVzZXRcdFx0PSBmcV9waWVfcmVzZXQsXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjU3NTpcdC5jaGFuZ2VcdFx0PSBmcV9waWVfY2hhbmdlLFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NzYtXHQuZHVtcFx0XHQ9IGZxX3BpZV9kdW1wLFxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM9NTgyPXN0YXRpYyBpbnQgX19pbml0IGZxX3BpZV9tb2R1bGVfaW5pdCh2b2lkKVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01ODMte1xubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1ODQ6XHRyZXR1cm4gcmVnaXN0ZXJfcWRpc2MoXHUwMDI2ZnFfcGllX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU4NS19XG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYz01ODc9c3RhdGljIHZvaWQgX19leGl0IGZxX3BpZV9tb2R1bGVfZXhpdCh2b2lkKVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01ODgte1xubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1ODk6XHR1bnJlZ2lzdGVyX3FkaXNjKFx1MDAyNmZxX3BpZV9xZGlzY19vcHMpO1xubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01OTAtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE4MgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYHNjaF9oaGYuY2AqKgoKT2theSwgdGltZSB0byBkaWcgaW50byBgc2NoX2hoZi5jYC4gR2l2ZW4gdGhlIGNvbnRleHQgb2Ygd2hhdCB3ZSYjMzk7cmUgd29ya2luZyBvbiwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgaG93IHRoaXMgc3BlY2lmaWMgZmlsZSBjb250cmlidXRlcyB0byB0aGUgb3ZlcmFsbCBzY2hlZHVsaW5nIGFuZCBwb3RlbnRpYWxseSB0aGUgaGFuZGxpbmcgb2YgaGlnaC1mcmVxdWVuY3kgZXZlbnRzLiBJJiMzOTttIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMg4oCTIGxpa2VseSByZWxhdGVkIHRvIHRhc2sgcXVldWVzLCBydW5xdWV1ZXMsIG9yIGV2ZW50IHRpbWVycyDigJMgYW5kIGhvdyB0aG9zZSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllci4gSSBleHBlY3QgdG8gZmluZCBzb21lIGNyaXRpY2FsIHNlY3Rpb25zIGhlYXZpbHkgZ3VhcmRlZCB3aXRoIHNwaW5sb2NrcyBvciBtdXRleGVzLCBhbmQgSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsb2NrIGhpZXJhcmNoaWVzIHRvIHByZXZlbnQgYW55IHBvdGVudGlhbCBkZWFkbG9ja3MuCgpJJiMzOTtsbCBiZSB6ZXJvaW5nIGluIG9uIGFueSBhcmVhcyB0aGF0IGRlYWwgd2l0aCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGNvbnRleHQgc3dpdGNoaW5nLCBhbmQgcHJlZW1wdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgSEhGIGNvbXBvbmVudCAod2hhdGV2ZXIgJiMzNDtISEYmIzM0OyBhY3R1YWxseSAqaXMqIGluIHRoaXMgcHJvamVjdCDigJMgaGlnaC1mcmVxdWVuY3kgaGFuZGxpbmcsIHBlcmhhcHM/KSBpcyBpbnRlZ3JhdGVkIHdpdGggdGhlIHN0YW5kYXJkIHNjaGVkdWxlci4gRG9lcyBpdCBtb2RpZnkgdGhlIHJ1bnF1ZXVlIHByaW9yaXRpZXM/IERvZXMgaXQgaGF2ZSBpdHMgb3duIGRlZGljYXRlZCB0aHJlYWQgb3Igd29ya2VyIHBvb2w/IEFyZSB0aGVyZSBhbnkgc3BlY2lhbGl6ZWQgc3lzdGVtIGNhbGxzIG9yIGtlcm5lbCBBUElzIGV4cG9zZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eT8KCkkmIzM5O20gYWxzbyBrZWVuIHRvIHNwb3QgYW55IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMuIEFyZSB0aGV5IHVzaW5nIHRlY2huaXF1ZXMgbGlrZSBwZXItQ1BVIGRhdGEgc3RydWN0dXJlcywgbG9ja2xlc3MgYWxnb3JpdGhtcywgb3IgYmF0Y2ggcHJvY2Vzc2luZyB0byBtaW5pbWl6ZSBvdmVyaGVhZD8gQW55IHVzZSBvZiBoYXJkd2FyZSBwZXJmb3JtYW5jZSBjb3VudGVycyB3aWxsIGJlIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QuIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgcm9sZSBhbmQgaW1wYWN0IG9mIGBzY2hfaGhmLmNgIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGhlIHNvb25lciBJIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSwgdGhlIHNvb25lciBJIGNhbiBkaWFnbm9zZSB0aGUgY3VycmVudCBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7KGhoZl9pbml0fGhoZl9jaGFuZ2V8aGhmX3FkaXNjX29wcykmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2hoZi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfaGhmLmM9NTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBoaGZfcG9saWN5W1RDQV9ISEZfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfaGhmLmMtNTM2LVxubmV0L3NjaGVkL3NjaF9oaGYuYzo1Mzc6c3RhdGljIGludCBoaGZfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTUzOC1cdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfaGhmLmMtNjA4LVxubmV0L3NjaGVkL3NjaF9oaGYuYzo2MDk6c3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9oaGYuYy02MTAtXHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9oaGYuYy02MjctXHRpZiAob3B0KSB7XG5uZXQvc2NoZWQvc2NoX2hoZi5jOjYyODpcdFx0aW50IGVyciA9IGhoZl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XG5uZXQvc2NoZWQvc2NoX2hoZi5jLTYyOS1cbi0tXG5uZXQvc2NoZWQvc2NoX2hoZi5jPTcxND1zdGF0aWMgaW50IGhoZl9kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxuLS1cbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzI2LVxubmV0L3NjaGVkL3NjaF9oaGYuYzo3Mjc6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgaGhmX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9oaGYuYy03MjgtXHQuaWRcdFx0PVx0XCYjMzQ7aGhmXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzMzLVx0LnBlZWtcdFx0PVx0cWRpc2NfcGVla19kZXF1ZXVlZCxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzM0Olx0LmluaXRcdFx0PVx0aGhmX2luaXQsXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTczNS1cdC5yZXNldFx0XHQ9XHRoaGZfcmVzZXQsXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTczNi1cdC5kZXN0cm95XHQ9XHRoaGZfZGVzdHJveSxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzM3Olx0LmNoYW5nZVx0XHQ9XHRoaGZfY2hhbmdlLFxubmV0L3NjaGVkL3NjaF9oaGYuYy03MzgtXHQuZHVtcFx0XHQ9XHRoaGZfZHVtcCxcbi0tXG5uZXQvc2NoZWQvc2NoX2hoZi5jPTc0ND1zdGF0aWMgaW50IF9faW5pdCBoaGZfbW9kdWxlX2luaXQodm9pZClcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzQ1LXtcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzQ2Olx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFx1MDAyNmhoZl9xZGlzY19vcHMpO1xubmV0L3NjaGVkL3NjaF9oaGYuYy03NDctfVxuLS1cbm5ldC9zY2hlZC9zY2hfaGhmLmM9NzQ5PXN0YXRpYyB2b2lkIF9fZXhpdCBoaGZfbW9kdWxlX2V4aXQodm9pZClcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzUwLXtcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzUxOlx0dW5yZWdpc3Rlcl9xZGlzYyhcdTAwMjZoaGZfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzUyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNDQKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBzY2hfc2ZxLmNgKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gYHNjaF9zZnEuY2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpIGltcGxlbWVudGF0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGN1cnJlbnQgY29kZSBsb29rcyBsaWtlLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgY29yZSBhbGdvcml0aG1zIOKAkyBob3cgaXQmIzM5O3MgaGFzaGluZywgaG93IHRoZSBxdWV1ZXMgYXJlIG1hbmFnZWQsIGFuZCwgb2YgY291cnNlLCB0aGUgZGVxdWV1ZSBwcm9jZXNzLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHdoZXJlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBtaWdodCBiZSBwb3NzaWJsZS4gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgbGluZ2VyaW5nPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIHJlZmluZW1lbnQ/IFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCBwYXJzaW5nIHRoZSBsb2dpYy4gTGV0JiMzOTtzIHNlZSBpZiBhbnkgcmVjZW50IGNvbW1pdHMgd2FycmFudCBhIHNlY29uZCBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsoc2ZxX2luaXR8c2ZxX2NoYW5nZXxzZnFfcWRpc2Nfb3BzKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfc2ZxLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9zZnEuYz02MDQ9c3RhdGljIHZvaWQgc2ZxX3BlcnR1cmJhdGlvbihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTYyMS1cdC8qIHEtXHUwMDNlcGVydHVyYl9wZXJpb2QgY2FuIGNoYW5nZSB1bmRlciB1cyBmcm9tXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjYyMjpcdCAqIHNmcV9jaGFuZ2UoKSBhbmQgc2ZxX2Rlc3Ryb3koKS5cbm5ldC9zY2hlZC9zY2hfc2ZxLmMtNjIzLVx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYy02MjktXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjYzMDpzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtNjMxLVx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYz03NzA9c3RhdGljIHZvaWQgc2ZxX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYy03ODEtXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjc4MjpzdGF0aWMgaW50IHNmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTc4My1cdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTgxMi1cdGlmIChvcHQpIHtcbm5ldC9zY2hlZC9zY2hfc2ZxLmM6ODEzOlx0XHRpbnQgZXJyID0gc2ZxX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtODE0LVx0XHRpZiAoZXJyKVxuLS1cbm5ldC9zY2hlZC9zY2hfc2ZxLmM9OTUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHNmcV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYy05NjEtXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjk2MjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBzZnFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk2My1cdC5jbF9vcHNcdFx0PVx0XHUwMDI2c2ZxX2NsYXNzX29wcyxcbi0tXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk2OC1cdC5wZWVrXHRcdD1cdHFkaXNjX3BlZWtfZGVxdWV1ZWQsXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjk2OTpcdC5pbml0XHRcdD1cdHNmcV9pbml0LFxubmV0L3NjaGVkL3NjaF9zZnEuYy05NzAtXHQucmVzZXRcdFx0PVx0c2ZxX3Jlc2V0LFxuLS1cbm5ldC9zY2hlZC9zY2hfc2ZxLmM9OTc4PXN0YXRpYyBpbnQgX19pbml0IHNmcV9tb2R1bGVfaW5pdCh2b2lkKVxubmV0L3NjaGVkL3NjaF9zZnEuYy05Nzkte1xubmV0L3NjaGVkL3NjaF9zZnEuYzo5ODA6XHRyZXR1cm4gcmVnaXN0ZXJfcWRpc2MoXHUwMDI2c2ZxX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk4MS19XG5uZXQvc2NoZWQvc2NoX3NmcS5jPTk4Mj1zdGF0aWMgdm9pZCBfX2V4aXQgc2ZxX21vZHVsZV9leGl0KHZvaWQpXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk4My17XG5uZXQvc2NoZWQvc2NoX3NmcS5jOjk4NDpcdHVucmVnaXN0ZXJfcWRpc2MoXHUwMDI2c2ZxX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk4NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMzU1CgkJCQkJCQlvdXRwdXQ6IDU4CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbmZpZ3VyYXRpb24gQ2hlY2tsaXN0KioKCk9rYXksIHRpbWUgdG8gbWFrZSBzdXJlIHRoaXMgc2V0dXAgaXMgY29tcGxldGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBydW4gdGhyb3VnaCB0aGUgZXNzZW50aWFsIHNjaGVkdWxpbmcgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVzZSBvcHRpb25zIGFyZSBlbmFibGVkIGluIGBtZW51Y29uZmlnYDogYE5FVF9TQ0hFRGAsIGBORVRfU0NIX0RSUmAsIGBORVRfU0NIX0RVQUxQSTJgLCBgTkVUX1NDSF9FVFNgLCBgTkVUX1NDSF9GUWAsIGBORVRfU0NIX0ZRX1BJRWAsIGBORVRfU0NIX0hIRmAsIGBORVRfU0NIX1BJRWAsIGFuZCBgTkVUX1NDSF9TRlFgLiBJJiMzOTtsbCBjcm9zcy1yZWZlcmVuY2UgdGhlc2UgYWdhaW5zdCB3aGF0IEkmIzM5O3ZlIHByZXZpb3VzbHkgd29ya2VkIG9uLgoKQWZ0ZXIgdGhhdCwgSSYjMzk7bGwgZGl2ZSBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AgdG8gbG9vayBmb3IgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGNydWNpYWwgbm90IHRvIG1pc3MgYW55IGltcGxpZWQgcmVxdWlyZW1lbnRzIG9yIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBjb25maWd1cmF0aW9uczsgbWlzc2luZyBvbmUgY2FuIGNhdXNlIG1ham9yIGhlYWRhY2hlcyBkb3duIHRoZSByb2FkLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hfKERSUnxEVUFMUEkyfEVUU3xGUXxGUV9QSUV8SEhGfFBJRXxTRlEpXFxiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MTAwPWNvbmZpZyBORVRfU0NIX1NGQlxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTExMC1cbm5ldC9zY2hlZC9LY29uZmlnOjExMTpjb25maWcgTkVUX1NDSF9TRlFcbm5ldC9zY2hlZC9LY29uZmlnLTExMi1cdHRyaXN0YXRlIFwmIzM0O1N0b2NoYXN0aWMgRmFpcm5lc3MgUXVldWVpbmcgKFNGUSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz0xOTU9Y29uZmlnIE5FVF9TQ0hfTkVURU1cbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yMDYtXG5uZXQvc2NoZWQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9TQ0hfRFJSXG5uZXQvc2NoZWQvS2NvbmZpZy0yMDgtXHR0cmlzdGF0ZSBcJiMzNDtEZWZpY2l0IFJvdW5kIFJvYmluIHNjaGVkdWxlciAoRFJSKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTI4OD1jb25maWcgTkVUX1NDSF9DQUtFXG4tLVxubmV0L3NjaGVkL0tjb25maWctMjk4LVxubmV0L3NjaGVkL0tjb25maWc6Mjk5OmNvbmZpZyBORVRfU0NIX0ZRXG5uZXQvc2NoZWQvS2NvbmZpZy0zMDAtXHR0cmlzdGF0ZSBcJiMzNDtGYWlyIFF1ZXVlXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzEyLVxubmV0L3NjaGVkL0tjb25maWc6MzEzOmNvbmZpZyBORVRfU0NIX0hIRlxubmV0L3NjaGVkL0tjb25maWctMzE0LVx0dHJpc3RhdGUgXCYjMzQ7SGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTMyMS1cbm5ldC9zY2hlZC9LY29uZmlnOjMyMjpjb25maWcgTkVUX1NDSF9QSUVcbm5ldC9zY2hlZC9LY29uZmlnLTMyMy1cdHRyaXN0YXRlIFwmIzM0O1Byb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChQSUUpIHNjaGVkdWxlclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTMzMy1cbm5ldC9zY2hlZC9LY29uZmlnOjMzNDpjb25maWcgTkVUX1NDSF9GUV9QSUVcbm5ldC9zY2hlZC9LY29uZmlnLTMzNS1cdGRlcGVuZHMgb24gTkVUX1NDSF9QSUVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz0zNjM9Y29uZmlnIE5FVF9TQ0hfUExVR1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTM4OC1cbm5ldC9zY2hlZC9LY29uZmlnOjM4OTpjb25maWcgTkVUX1NDSF9FVFNcbm5ldC9zY2hlZC9LY29uZmlnLTM5MC1cdHRyaXN0YXRlIFwmIzM0O0VuaGFuY2VkIHRyYW5zbWlzc2lvbiBzZWxlY3Rpb24gc2NoZWR1bGVyIChFVFMpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NDA2PWNvbmZpZyBORVRfU0NIX0JQRlxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQxNy1cbm5ldC9zY2hlZC9LY29uZmlnOjQxODpjb25maWcgTkVUX1NDSF9EVUFMUEkyXG5uZXQvc2NoZWQvS2NvbmZpZy00MTktXHR0cmlzdGF0ZSBcJiMzNDtEdWFsIFF1ZXVlIFBJIFNxdWFyZSAoRFVBTFBJMikgc2NoZWR1bGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MjgxCgkJCQkJCQlvdXRwdXQ6IDI3NgoJCQkJCQkJdGhvdWdodHM6IDc4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIGZ1enppbmcuIEZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX1NDSF9GUV9QSUVgOyBJIHNlZSB0aGF0IGl0IGRlcGVuZHMgb24gYE5FVF9TQ0hfUElFYC4gIE5leHQsIHdoYXQgYWJvdXQgdGhlIHRvcC1sZXZlbCBgTkVUX1NDSEVEYD8gRG9lcyBpdCBoYXZlIGFueSBkZXBlbmRlbmNpZXMgaXRzZWxmPyBMZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGZpcnN0IGZldyBsaW5lcyBvZiBgbmV0L3NjaGVkL0tjb25maWdgIHRvIGNvbmZpcm0sIGFuZCBjb25maXJtIHRoYXQgYE5FVF9TQ0hFRGAgaXMgYSBzdGFuZGFyZCBzdWJzeXN0ZW0gY29uZmlnLgoKQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMsIEkgY2FuIHNlZSB0aGF0IHRoZXNlIGFyZTogYGRycl9jaGFuZ2VfY2xhc3NgLCBgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uYCwgYG11c3RfZHJvcGAsIGBnZXRfbWVtb3J5X2xpbWl0YCwgYGV0c19xdWFudHVtX3BhcnNlYCwgYGV0c19xZGlzY19jaGFuZ2VgLCBgZnFfY2hhbmdlYCwgYGZxX2luaXRgLCBgZnFfcGllX2NoYW5nZWAsIGBoaGZfY2hhbmdlYCwgYGhoZl9pbml0YCwgYHBpZV9kcm9wX2Vhcmx5YCwgYW5kIGBzZnFfY2hhbmdlYC4gTm93LCBmb2N1c2luZyBpbiwgSSBzZWUgYHBpZV9kcm9wX2Vhcmx5YCBpcyBub24tc3RhdGljLCBtZWFuaW5nIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCBhIGdvb2QgdGFyZ2V0LiBUaGUgb3RoZXIgZnVuY3Rpb25zIGFyZSBzdGF0aWMgY2FsbGJhY2sgZnVuY3Rpb25zIGluIHFkaXNjIG9wZXJhdGlvbnMsIHNvIHRoZXkgYXJlIGxpa2VseSBlbnRyeXBvaW50cyB3aXRoaW4gdGhhdCBjb250ZXh0LgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgdmlzaWJsZSBzeW1ib2xzIGFuZCBlbnRyeXBvaW50cyByZWxhdGVkIHRvIHFkaXNjIG9wZXJhdGlvbnMuIEZyb20gdGhlIGBxZGlzYyBvcHNgIHN0cnVjdHMsIEkgY2FuIHNlZSB0aGVzZSBrZXkgZnVuY3Rpb25zIGFyZSByZWdpc3RlcmVkOiBgZHJyX2NoYW5nZV9jbGFzc2AsIGBkdWFscGkyX2NoYW5nZWAsIGBkdWFscGkyX2luaXRgLCBgZXRzX2NsYXNzX2NoYW5nZWAsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBwaWVfY2hhbmdlYCwgYHBpZV9pbml0YCwgYHBpZV9kcm9wX2Vhcmx5YCwgYHNmcV9jaGFuZ2VgLCBhbmQgYHNmcV9pbml0YC4KClRpbWUgdG8gc2VsZWN0IHRoZSBrZXkgc3ltYm9scyBmb3IgdGhlIGZ1enppbmcgY2FtcGFpZ24sIGZvY3VzaW5nIG9uIHRoZSBjcml0aWNhbCBub24taG90cGF0aCBmdW5jdGlvbnMuIFRoYXQgbWVhbnM6IGBwaWVfZHJvcF9lYXJseWAsIGBkcnJfY2hhbmdlX2NsYXNzYCwgYGR1YWxwaTJfY2hhbmdlYCwgYGR1YWxwaTJfaW5pdGAsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBwaWVfY2hhbmdlYCwgYW5kIGBzZnFfY2hhbmdlYC4KCk5vdywgdGhlIGZpbmFsIHN0YWdlIGlzIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyBhbmQgYXNzZXNzICYjMzQ7V29ydGhGdXp6aW5nLiYjMzQ7IEdpdmVuIHRoYXQgdGhpcyBpbnZvbHZlcyBjaGFuZ2VzIHRvIHF1YW50dW0gY2FsY3VsYXRpb24sIGJvdW5kcyBjaGVja2luZyBhY3Jvc3MgZWlnaHQgZGlmZmVyZW50IG5ldHdvcmsgcGFja2V0IHNjaGVkdWxlcnMsIGFuZCBhbHRlcmF0aW9ucyB0byBxdWV1aW5nL2Ryb3AgYmVoYXZpb3IgYWxvbmcgd2l0aCBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIG91ciB0aW1lLgoKQmFzZWQgb24gdGhhdCwgSSYjMzk7bGwgaWRlbnRpZnkgYW5kIGVuYWJsZSBhbGwgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZzogYE5FVF9TQ0hFRGAsIGBORVRfU0NIX0RSUmAsIGBORVRfU0NIX0RVQUxQSTJgLCBgTkVUX1NDSF9FVFNgLCBgTkVUX1NDSF9GUWAsIGBORVRfU0NIX0ZRX1BJRWAsIGBORVRfU0NIX0hIRmAsIGBORVRfU0NIX1BJRWAsIGFuZCBgTkVUX1NDSF9TRlFgLiBGaW5hbGx5LCBpdCYjMzk7cyB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RSUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RVQUxQSTImIzM0OywKICAgICYjMzQ7TkVUX1NDSF9FVFMmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GUSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0hIRiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1NGUSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDssCiAgICAmIzM0O2Rycl9jaGFuZ2VfY2xhc3MmIzM0OywKICAgICYjMzQ7ZHVhbHBpMl9jaGFuZ2UmIzM0OywKICAgICYjMzQ7ZHVhbHBpMl9pbml0JiMzNDssCiAgICAmIzM0O2V0c19xZGlzY19jaGFuZ2UmIzM0OywKICAgICYjMzQ7ZnFfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2luaXQmIzM0OywKICAgICYjMzQ7ZnFfcGllX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfY2hhbmdlJiMzNDssCiAgICAmIzM0O2hoZl9pbml0JiMzNDssCiAgICAmIzM0O3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7c2ZxX2NoYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVhbnR1bSBhbmQgTVRVIGhhbmRsaW5nIC8gYm91bmRpbmcgbG9naWMgYWNyb3NzIG11bHRpcGxlIG5ldHdvcmsgcXVldWVpbmcgZGlzY2lwbGluZXMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSBpbiBuZXQvc2NoZWQvLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBxZGlzYyBpbml0aWFsaXphdGlvbiwgY29uZmlndXJhdGlvbiB2aWEgbmV0bGluayAocnRuZXRsaW5rL3RjKSwgYW5kIHBhY2tldCBkcm9wL3NjaGVkdWxpbmcgZGVjaXNpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9EUlImIzM0OywKICAgICYjMzQ7TkVUX1NDSF9EVUFMUEkyJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRVRTJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRlEmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GUV9QSUUmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9ISEYmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9QSUUmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9TRlEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaWVfZHJvcF9lYXJseSYjMzQ7LAogICAgJiMzNDtkcnJfY2hhbmdlX2NsYXNzJiMzNDssCiAgICAmIzM0O2R1YWxwaTJfY2hhbmdlJiMzNDssCiAgICAmIzM0O2R1YWxwaTJfaW5pdCYjMzQ7LAogICAgJiMzNDtldHNfcWRpc2NfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9pbml0JiMzNDssCiAgICAmIzM0O2ZxX3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfaW5pdCYjMzQ7LAogICAgJiMzNDtwaWVfY2hhbmdlJiMzNDssCiAgICAmIzM0O3NmcV9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1YW50dW0gYW5kIE1UVSBoYW5kbGluZyAvIGJvdW5kaW5nIGxvZ2ljIGFjcm9zcyBtdWx0aXBsZSBuZXR3b3JrIHF1ZXVlaW5nIGRpc2NpcGxpbmVzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgaW4gbmV0L3NjaGVkLy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcWRpc2MgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyYXRpb24gdmlhIG5ldGxpbmsgKHJ0bmV0bGluay90YyksIGFuZCBwYWNrZXQgZHJvcC9zY2hlZHVsaW5nIGRlY2lzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxMDowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkanVzdHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYXJpdGhtZXRpYyBib3VuZHMgb24gcXVhbnR1bSBhbmQgTVRVIHBhcmFtZXRlcnMgYWNyb3NzIHZhcmlvdXMgbmV0d29yayBzY2hlZHVsZXJzIChEUlIsIER1YWxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgdXNpbmcgY2xhbXBpbmcgZnVuY3Rpb25zIChjbGFtcF90LCBtYXgpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIG1vZGlmeSwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSwgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgc3RydWN0dXJlIHBhZGRpbmcsIG9yIGRhdGEgdHJhbnNmZXJzIHRvIHVzZXJzcGFjZSB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkLCBhbmQgc3RhbmRhcmQgS0FTQU4vc2FuaXRpemVyIGJ1aWxkcyBhcmUgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWYzNjMyZDVhNTc3M2E0NTBjOTQ4NTkzNDg1ZjAyMzJlM2JhNTYwOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTA6MDQ6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuYwppbmRleCA5MWIxZWY4MjRhZmFmLi44NjIxZDA1N2VkZDlmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2Ryci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZHJyLmMKQEAgLTgyLDggJiM0Mzs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCwKIAkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtTcGVjaWZpZWQgRFJSIHF1YW50dW0gY2Fubm90IGJlIHplcm8mIzM0Oyk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQomIzQzOwkJcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBxdWFudHVtLCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCX0gZWxzZQotCQlxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CQlxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAKIAlpZiAoY2wgIT0gTlVMTCkgewogCQlpZiAodGNhW1RDQV9SQVRFXSkgewpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwppbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwpAQCAtMjA4LDkgJiM0MzsyMDgsMTEgQEAgc3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSkKIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCwKIAkJCQkJICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKQogewomIzQzOwl1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKJiM0MzsKIAlxLSZndDtjX3Byb3RlY3Rpb25fd2MgPSB3YzsKIAlxLSZndDtjX3Byb3RlY3Rpb25fd2wgPSBNQVhfV0MgLSB3YzsKLQlxLSZndDtjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKgomIzQzOwlxLSZndDtjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICoKIAkJKChpbnQpcS0mZ3Q7Y19wcm90ZWN0aW9uX3djIC0gKGludClxLSZndDtjX3Byb3RlY3Rpb25fd2wpOwogCWR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpOwogfQpAQCAtMjg1LDggJiM0MzsyODcsOSBAQCBzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsCiAJdTY0IGxvY2FsX2xfcHJvYjsKIAlib29sIG92ZXJsb2FkOwogCXUzMiBwcm9iOwomIzQzOwl1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKIAotCWlmIChzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICZsdDsgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKQomIzQzOwlpZiAoc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmbHQ7IDIgKiBtdHUpCiAJCXJldHVybiBmYWxzZTsKIAogCXByb2IgPSBSRUFEX09OQ0UocS0mZ3Q7cGkyX3Byb2IpOwpAQCAtNzEyLDcgJiM0Mzs3MTUsOCBAQCBzdGF0aWMgdTMyIGdldF9tZW1vcnlfbGltaXQoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsaW1pdCkKIAkvKiBBcHBseSBydWxlIG9mIHRodW1iLCBpLmUuLCBkb3VibGluZyB0aGUgcGFja2V0IGxlbmd0aCwKIAkgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuCiAJICovCi0JdTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpOwomIzQzOwl1NjQgbWVtbGltID0gbXVsX3UzMl91MzIobGltaXQsIDIgKiBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksCiYjNDM7CQkJCQkJICAgICAxLCAxICZsdDsmbHQ7IDIwKSk7CiAKIAlpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKQogCQlyZXR1cm4gVTMyX01BWDsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZXRzLmMgYi9uZXQvc2NoZWQvc2NoX2V0cy5jCmluZGV4IDI1ZmNmNDA3OWZlY2UuLjZjYzkwMmEwMzgzODcgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9ldHMuYwpAQCAtODMsMTEgJiM0Mzs4Myw3IEBAIHN0YXRpYyBpbnQgZXRzX3F1YW50dW1fcGFyc2Uoc3RydWN0IFFkaXNjICpzY2gsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJCQkgICAgIHVuc2lnbmVkIGludCAqcXVhbnR1bSwKIAkJCSAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewotCSpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7Ci0JaWYgKCEqcXVhbnR1bSkgewotCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7RVRTIHF1YW50dW0gY2Fubm90IGJlIHplcm8mIzM0Oyk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KJiM0MzsJKnF1YW50dW0gPSBjbGFtcF90KHUzMiwgbmxhX2dldF91MzIoYXR0ciksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTYzMiwxMSAmIzQzOzYyOCwxMyBAQCBzdGF0aWMgaW50IGV0c19xZGlzY19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCXJldHVybiBlcnI7CiAJfQogCS8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICYjNDM7IHF1YW50YSBwcm92aWRlZCwgdGhlIHJlbWFpbmluZwotCSAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgTVRVLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nIHZhbHVlcyBoZXJlLgomIzQzOwkgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIG1heChNVFUsIDI1NikuIEluaXRpYWxpemUgdGhlIG1pc3NpbmcKJiM0MzsJICogdmFsdWVzIGhlcmUuCiAJICovCiAJZm9yIChpID0gbnN0cmljdDsgaSAmbHQ7IG5iYW5kczsgaSYjNDM7JiM0MzspIHsKIAkJaWYgKCFxdWFudGFbaV0pCi0JCQlxdWFudGFbaV0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsKJiM0MzsJCQlxdWFudGFbaV0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwKJiM0MzsJCQkJCSAgICAyNTYsIDEgJmx0OyZsdDsgMjApOwogCX0KIAogCS8qIEJlZm9yZSBjb21taXQsIG1ha2Ugc3VyZSB3ZSBjYW4gYWxsb2NhdGUgYWxsIG5ldyBxZGlzY3MgKi8KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnEuYyBiL25ldC9zY2hlZC9zY2hfZnEuYwppbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2ZxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9mcS5jCkBAIC05ODAsNyAmIzQzOzk4MCw3IEBAIHN0YXRpYyBpbnQgZnFfcmVzaXplKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgbG9nKQogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbiBpcV9yYW5nZSA9IHsKLQkubWF4ID0gSU5UX01BWCwKJiM0MzsJLm1heCA9IDEgJmx0OyZsdDsgMjAsCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggJiM0MzsgMV0gPSB7CkBAIC0xMTA2LDE0ICYjNDM7MTEwNiwxMCBAQCBzdGF0aWMgaW50IGZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQkJICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpOwogCiAJaWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkgewotCQl1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7CiYjNDM7CQl1MzIgcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pLAomIzQzOwkJCQkgICAgIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAKLQkJaWYgKHF1YW50dW0gJmd0OyAwICZhbXA7JmFtcDsgcXVhbnR1bSAmbHQ7PSAoMSAmbHQ7Jmx0OyAyMCkpIHsKLQkJCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwgcXVhbnR1bSk7Ci0JCX0gZWxzZSB7Ci0JCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O2ludmFsaWQgcXVhbnR1bSYjMzQ7KTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCX0KJiM0MzsJCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwgcXVhbnR1bSk7CiAJfQogCiAJaWYgKHRiW1RDQV9GUV9JTklUSUFMX1FVQU5UVU1dKQpAQCAtMTIzMiw3ICYjNDM7MTIyOCw3IEBAIHN0YXRpYyBpbnQgZnFfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCXNjaC0mZ3Q7bGltaXQJCT0gMTAwMDA7CiAJcS0mZ3Q7Zmxvd19wbGltaXQJCT0gMTAwOwogCW10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSAmbHQ7Jmx0OyAyMCk7Ci0JcS0mZ3Q7cXVhbnR1bQkJPSBtaW5fdCh1MzIsIDIgKiBtdHUsIDEgJmx0OyZsdDsgMjApOwomIzQzOwlxLSZndDtxdWFudHVtCQk9IGNsYW1wX3QodTMyLCAyICogbXR1LCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCXEtJmd0O2luaXRpYWxfcXVhbnR1bQk9IG1pbl90KHUzMiwgMTAgKiBtdHUsIDEgJmx0OyZsdDsgMjApOwogCXEtJmd0O2Zsb3dfcmVmaWxsX2RlbGF5CT0gbXNlY3NfdG9famlmZmllcyg0MCk7CiAJcS0mZ3Q7Zmxvd19tYXhfcmF0ZQk9IH4wVUw7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuYwppbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZnFfcGllLmMKQEAgLTM0MSw3ICYjNDM7MzQxLDggQEAgc3RhdGljIGludCBmcV9waWVfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCQkgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7CiAKIAlpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkKLQkJV1JJVEVfT05DRShxLSZndDtxdWFudHVtLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSk7CiYjNDM7CQlXUklURV9PTkNFKHEtJmd0O3F1YW50dW0sCiYjNDM7CQkJICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7CiAKIAlpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKQogCQlXUklURV9PTkNFKHEtJmd0O21lbW9yeV9saW1pdCwKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jCmluZGV4IDk2YWNhYjZhOGRhMDMuLmZjNzJmODI1ZmJkOTIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfaGhmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9oaGYuYwpAQCAtNTUxLDcgJiM0Mzs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJcmV0dXJuIGVycjsKIAogCWlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKQotCQluZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pOwomIzQzOwkJbmV3X3F1YW50dW0gPSBtYXgoMjU2VSwgbmxhX2dldF91MzIodGJbVENBX0hIRl9RVUFOVFVNXSkpOwogCiAJaWYgKHRiW1RDQV9ISEZfTk9OX0hIX1dFSUdIVF0pCiAJCW5ld19oaGZfbm9uX2hoX3dlaWdodCA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfTk9OX0hIX1dFSUdIVF0pOwpAQCAtNjEzLDcgJiM0Mzs2MTMsNyBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJaW50IGk7CiAKIAlzY2gtJmd0O2xpbWl0ID0gMTAwMDsKLQlxLSZndDtxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CXEtJmd0O3F1YW50dW0gPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJZ2V0X3JhbmRvbV9ieXRlcygmYW1wO3EtJmd0O3BlcnR1cmJhdGlvbiwgc2l6ZW9mKHEtJmd0O3BlcnR1cmJhdGlvbikpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7cS0mZ3Q7bmV3X2J1Y2tldHMpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7cS0mZ3Q7b2xkX2J1Y2tldHMpOwpAQCAtNjI0LDEwICYjNDM7NjI0LDYgQEAgc3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCXEtJmd0O2hoZl9ldmljdF90aW1lb3V0ID0gSFo7ICAgICAgLyogMSAgc2VjICovCiAJcS0mZ3Q7aGhmX25vbl9oaF93ZWlnaHQgPSAyOwogCi0JaWYgKChpbnQpcS0mZ3Q7cXVhbnR1bSAmbHQ7PSAwIHx8Ci0JICAgICh1NjQpcS0mZ3Q7cXVhbnR1bSAqIHEtJmd0O2hoZl9ub25faGhfd2VpZ2h0ICZndDsgSU5UX01BWCkKLQkJcS0mZ3Q7cXVhbnR1bSA9IDI1NjsKLQogCWlmIChvcHQpIHsKIAkJaW50IGVyciA9IGhoZl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7CiAKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGllLmMgYi9uZXQvc2NoZWQvc2NoX3BpZS5jCmluZGV4IGI0MWYyZGVmMmUyY2MuLjNiNzg2M2ZmZDI4NGMgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9waWUuYwpAQCAtMzUsNyAmIzQzOzM1LDcgQEAgYm9vbCBwaWVfZHJvcF9lYXJseShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHBpZV9wYXJhbXMgKnBhcmFtcywKIHsKIAl1NjQgcm5kOwogCXU2NCBsb2NhbF9wcm9iID0gdmFycy0mZ3Q7cHJvYjsKLQl1MzIgbXR1ID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CXUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgJmx0OyZsdDsgMjApOwogCiAJLyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqLwogCWlmICh2YXJzLSZndDtidXJzdF90aW1lICZndDsgMCkKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfc2ZxLmMgYi9uZXQvc2NoZWQvc2NoX3NmcS5jCmluZGV4IDE4N2QzZWQ1NzhmMjYuLjhiYmNmYzllODVkOTQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9zZnEuYwpAQCAtNjYwLDYgJiM0Mzs2NjAsMTEgQEAgc3RhdGljIGludCBzZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAomIzQzOwlpZiAoY3RsLSZndDtxdWFudHVtICZndDsgMSAmbHQ7Jmx0OyAyMCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtxdWFudHVtIHRvbyBsYXJnZSYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJaWYgKGN0bC0mZ3Q7cGVydHVyYl9wZXJpb2QgJmx0OyAwIHx8CiAJICAgIGN0bC0mZ3Q7cGVydHVyYl9wZXJpb2QgJmd0OyBJTlRfTUFYIC8gSFopIHsKIAkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtpbnZhbGlkIHBlcnR1cmIgcGVyaW9kJiMzNDspOwpAQCAtNjg4LDcgJiM0Mzs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAogCS8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqLwogCWlmIChjdGwtJmd0O3F1YW50dW0pCi0JCXF1YW50dW0gPSBjdGwtJmd0O3F1YW50dW07CiYjNDM7CQlxdWFudHVtID0gbWF4KDI1NlUsIGN0bC0mZ3Q7cXVhbnR1bSk7CiAJaWYgKGN0bC0mZ3Q7Zmxvd3MpCiAJCW1heGZsb3dzID0gbWluX3QodTMyLCBjdGwtJmd0O2Zsb3dzLCBTRlFfTUFYX0ZMT1dTKTsKIAlpZiAoY3RsLSZndDtkaXZpc29yKSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uCmluZGV4IGVlMDllNmQ2ZmRmM2MuLmQyZWFiNjFjMDk5YTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uCkBAIC05ODcsNyAmIzQzOzk4Nyw3IEBACiAgICAgfSwKICAgICB7CiAgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDs0MWY1JiMzNDssCi0gICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0VUUyBvZmZsb2FkIHdoZXJlIHRoZSBzdW0gb2YgcXVhbnRhIHdyYXBzIHUzMiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7RVRTIG9mZmxvYWQgd2l0aCBvdXQtb2YtcmFuZ2UgcXVhbnRhIGNsYW1wZWQmIzM0OywKICAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiAgICAgICAgICAgICAmIzM0O3FkaXNjJiMzNDssCiAgICAgICAgICAgICAmIzM0O2V0cyYjMzQ7CkBAIC0xMDAyLDcgJiM0MzsxMDAyLDcgQEAKICAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgZXRzIHF1YW50YSA0Mjk0OTY3Mjk0IDEgMSYjMzQ7LAogICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAogICAgICAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyBxZGlzYyBzaG93IGRldiAkRVRIJiMzNDssCi0gICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7cWRpc2MgZXRzIC4qYmFuZHMgMyBxdWFudGEgNDI5NDk2NzI5NCAxIDEmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7cWRpc2MgZXRzIC4qYmFuZHMgMyBxdWFudGEgMTA0ODU3NiAyNTYgMjU2JiMzNDssCiAgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKICAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiAgICAgICAgICAgICAmIzM0O2VjaG8gXCYjMzQ7MVwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlJiMzNDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDEwOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NTAKCQkJCQkJCW91dHB1dDogMTQyCgkJCQkJCQl0aG91Z2h0czogMTIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBBc3Nlc3NtZW50OiBUaGlzIFBhdGNoIGlzIENsZWFuKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IEtNU0FOIGlzbiYjMzk7dCBuZWVkZWQgaGVyZSwgYnV0IGxldCYjMzk7cyB3YWxrIHRocm91Z2ggdGhlIGRldGFpbHMuIFRoaXMgcGF0Y2ggdG91Y2hlcyBzZXZlcmFsIG5ldC9zY2hlZCBxZGlzY3Mg4oCTIHNjaF9kcnIuYywgc2NoX2R1YWxwaTIuYywgc2NoX2V0cy5jLCBzY2hfZnEuYywgc2NoX2ZxX3BpZS5jLCBzY2hfaGhmLmMsIHNjaF9waWUuYywgYW5kIHNjaF9zZnEuYy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgY2xhbXBpbmcgb3Igc2FuaXRpemluZyB0aGUgYHF1YW50dW1gIGFuZCBgbXR1YCB2YWx1ZXMgdXNlZCB3aXRoaW4gdGhlc2Ugc2NoZWR1bGVycy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgaW5wdXQgdmFsaWRhdGlvbiBtb3JlIHRoYW4gYW55dGhpbmcgZWxzZS4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZToKCiogICBXZSYjMzk7cmUgZW5mb3JjaW5nIHNlbnNpYmxlIHJhbmdlcyBmb3IgYHF1YW50dW1gIGFuZCBgbXR1YCB1c2luZyBgY2xhbXBfdGAgYW5kIGBtYXhgIG1hY3Jvcy4gRm9yIGV4YW1wbGUsIGVuc3VyaW5nIGBxdWFudHVtYCBpcyBiZXR3ZWVuIDI1NiBhbmQgMSAmbHQ7Jmx0OyAyMCAodGhhdCBpcywgMSBNQikuIFRoZXNlIHZhbHVlcyBhcmUgYmVpbmcgYXBwbGllZCBpbiBtdWx0aXBsZSBmaWxlcyBhbmQgZnVuY3Rpb25zIGxpa2UgYGRycl9jaGFuZ2VfY2xhc3NgLCBgZXRzX3F1YW50dW1fcGFyc2VgLCBgZnFfaW5pdGAgYW5kIGBoaGZfY2hhbmdlYC4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBpcyB0aGVyZSBhbnkgY2hhbmNlIHRoaXMgaW50cm9kdWNlcyBvciBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcz8gSSBuZWVkIHRvIGFuYWx5emUgZm9yIHRob3NlIHJpc2tzLgoKMS4gICoqS2VybmVsIHN0cnVjdHMgdG8gdXNlcnNwYWNlPyoqIE5vcGUsIHRoaXMgZG9lc24mIzM5O3QgYWRkIG9yIG1vZGlmeSBhbnkgc3RydWN0cyBzZW50IHRvIHVzZXJzcGFjZSwgbm9yIGRvZXMgaXQgbGVhdmUgZmllbGRzIHVuaW5pdGlhbGl6ZWQgdGhhdCBhcmUgcmV0dXJuZWQuCgoyLiAgKipDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8qKiBObywgdGhlIGxvZ2ljIGxvb2tzIHNvdW5kLCBhbmQgdGhlcmUmIzM5O3Mgbm8gZXZpZGVuY2Ugb2YgZGVjaXNpb25zIGJlaW5nIG1hZGUgYmFzZWQgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YWx1ZXMuCgozLiAgKipDb21wbGV4IGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uPyoqIE5vdGhpbmcgbmV3IGlzIGJlaW5nIGFsbG9jYXRlZCwgc28gdGhhdCYjMzk7cyBub3QgYSBjb25jZXJuLgoKNC4gICoqQm91bmRzIGNoZWNrcyBvciBsZW5ndGggbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhPyoqIFRoaXMgaXMgc3RyaWN0bHkgcGFyYW1ldGVyIGNsYW1waW5nLCB3aGljaCBpcyB0aGUgb3Bwb3NpdGUgb2YgdGhlIGlzc3VlLgoKVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IGZvY3VzZWQgb24gYXJpdGhtZXRpYyBjbGFtcGluZyBvZiBwYXJhbWV0ZXJzIHBhc3NlZCB2aWEgbmV0bGluaywgd2hpY2ggYXJlIHJlYWQgZnJvbSB0aGUgZGV2aWNlIE1UVS4gVGhpcyBpcyBhYm91dCBwcmV2ZW50aW5nIGludGVnZXIgb3ZlcmZsb3dzLCBkaXZpc2lvbiBieSB6ZXJvLCBvciBzaW1wbHkgZXhjZXNzaXZlbHkgbGFyZ2Uvc21hbGwgYHF1YW50dW1gIHZhbHVlcyB0aGF0IGNvdWxkIGxlYWQgdG8gc2NoZWR1bGluZyBpc3N1ZXMgKGxpa2UgaGFuZ3Mgb3Igb3ZlcmZsb3dzLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkpLgoKVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCBzb21lIGtleSBmdW5jdGlvbnMgKGBkcnJfY2hhbmdlX2NsYXNzYCwgYGV0c19xdWFudHVtX3BhcnNlYCwgYGZxX2luaXRgLCBhbmQgYGhoZl9jaGFuZ2VgKS4gSW4gZWFjaCBjYXNlLCBpdCYjMzk7cyBjbGVhciB0aGF0IHRoZSB2YXJpYWJsZXMgKGxpa2UgYHF1YW50dW1gKSBhcmUgKmFsd2F5cyogaW5pdGlhbGl6ZWQsIGVpdGhlciBkaXJlY3RseSBvciB0aHJvdWdoIHRoZSBjbGFtcGluZyBtZWNoYW5pc20uIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHNpbXBsZSBzY2FsYXIgdmFsdWVzLCBub3QgY29tcGxleCBhbGxvY2F0aW9ucyBvciBtZW1vcnkgbWFuYWdlbWVudC4KClNvLCBhZnRlciB0aGlzIGRlZXBlciBkaXZlLCBJJiMzOTttIGNvbmZpZGVudC4gTmVlZHNLTVNBTiA9IGZhbHNlLiBJJiMzOTttIHJlYWR5IHRvIGNhbGwgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTA6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRqdXN0cyBpbnB1dCB2YWxpZGF0aW9uIGFuZCBhcml0aG1ldGljIGJvdW5kcyBvbiBxdWFudHVtIGFuZCBNVFUgcGFyYW1ldGVycyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIHNjaGVkdWxlcnMgKERSUiwgRHVhbFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSB1c2luZyBjbGFtcGluZyBmdW5jdGlvbnMgKGNsYW1wX3QsIG1heCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgZGF0YSB0cmFuc2ZlcnMgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQsIGFuZCBzdGFuZGFyZCBLQVNBTi9zYW5pdGl6ZXIgYnVpbGRzIGFyZSBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRqdXN0cyBpbnB1dCB2YWxpZGF0aW9uIGFuZCBhcml0aG1ldGljIGJvdW5kcyBvbiBxdWFudHVtIGFuZCBNVFUgcGFyYW1ldGVycyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIHNjaGVkdWxlcnMgKERSUiwgRHVhbFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSB1c2luZyBjbGFtcGluZyBmdW5jdGlvbnMgKGNsYW1wX3QsIG1heCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgZGF0YSB0cmFuc2ZlcnMgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQsIGFuZCBzdGFuZGFyZCBLQVNBTi9zYW5pdGl6ZXIgYnVpbGRzIGFyZSBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNDozOS45OTcxNjQ2MDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODY4NjY0NDQ1MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX0RSUlwiLFxuICAgIFwiTkVUX1NDSF9EVUFMUEkyXCIsXG4gICAgXCJORVRfU0NIX0VUU1wiLFxuICAgIFwiTkVUX1NDSF9GUVwiLFxuICAgIFwiTkVUX1NDSF9GUV9QSUVcIixcbiAgICBcIk5FVF9TQ0hfSEhGXCIsXG4gICAgXCJORVRfU0NIX1BJRVwiLFxuICAgIFwiTkVUX1NDSF9TRlFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaWVfZHJvcF9lYXJseVwiLFxuICAgIFwiZHJyX2NoYW5nZV9jbGFzc1wiLFxuICAgIFwiZHVhbHBpMl9jaGFuZ2VcIixcbiAgICBcImR1YWxwaTJfaW5pdFwiLFxuICAgIFwiZXRzX3FkaXNjX2NoYW5nZVwiLFxuICAgIFwiZnFfY2hhbmdlXCIsXG4gICAgXCJmcV9pbml0XCIsXG4gICAgXCJmcV9waWVfY2hhbmdlXCIsXG4gICAgXCJoaGZfY2hhbmdlXCIsXG4gICAgXCJoaGZfaW5pdFwiLFxuICAgIFwicGllX2NoYW5nZVwiLFxuICAgIFwic2ZxX2NoYW5nZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRqdXN0cyBpbnB1dCB2YWxpZGF0aW9uIGFuZCBhcml0aG1ldGljIGJvdW5kcyBvbiBxdWFudHVtIGFuZCBNVFUgcGFyYW1ldGVycyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIHNjaGVkdWxlcnMgKERSUiwgRHVhbFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSB1c2luZyBjbGFtcGluZyBmdW5jdGlvbnMgKGNsYW1wX3QsIG1heCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgZGF0YSB0cmFuc2ZlcnMgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQsIGFuZCBzdGFuZGFyZCBLQVNBTi9zYW5pdGl6ZXIgYnVpbGRzIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxdWFudHVtIGFuZCBNVFUgaGFuZGxpbmcgLyBib3VuZGluZyBsb2dpYyBhY3Jvc3MgbXVsdGlwbGUgbmV0d29yayBxdWV1ZWluZyBkaXNjaXBsaW5lcyAoRFJSLCBEVUFMUEkyLCBFVFMsIEZRLCBGUS1QSUUsIEhIRiwgUElFLCBTRlEpIGluIG5ldC9zY2hlZC8uIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHFkaXNjIGluaXRpYWxpemF0aW9uLCBjb25maWd1cmF0aW9uIHZpYSBuZXRsaW5rIChydG5ldGxpbmsvdGMpLCBhbmQgcGFja2V0IGRyb3Avc2NoZWR1bGluZyBkZWNpc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA0OjM5Ljk5NzE3MDE0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE5Mjk1MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMWYzNjMyZDVhNTc3M2E0NTBjOTQ4NTkzNDg1ZjAyMzJlM2JhNTYwOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDEwOjA0OjM5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHJyLmMgYi9uZXQvc2NoZWQvc2NoX2Ryci5jXFxuaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2Ryci5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xcbkBAIC04Miw4ICs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcXG4gXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiU3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXFxcIik7XFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHR9XFxuK1xcdFxcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFx0fSBlbHNlXFxuLVxcdFxcdHF1YW50dW0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTtcXG4rXFx0XFx0cXVhbnR1bSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXG4gXFx0aWYgKGNsICE9IE5VTEwpIHtcXG4gXFx0XFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xcbmluZGV4IDRmNjc4ZDRmZjEwZWMuLjQ5NDdkZWY3YzQ5ZWYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xcbkBAIC0yMDgsOSArMjA4LDExIEBAIHN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXFxuIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxcbiB7XFxuK1xcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbitcXG4gXFx0cS1cXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XFxuIFxcdHEtXFx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xcbi1cXHRxLVxcdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxcbitcXHRxLVxcdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICpcXG4gXFx0XFx0KChpbnQpcS1cXHUwMDNlY19wcm90ZWN0aW9uX3djIC0gKGludClxLVxcdTAwM2VjX3Byb3RlY3Rpb25fd2wpO1xcbiBcXHRkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihxKTtcXG4gfVxcbkBAIC0yODUsOCArMjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxcbiBcXHR1NjQgbG9jYWxfbF9wcm9iO1xcbiBcXHRib29sIG92ZXJsb2FkO1xcbiBcXHR1MzIgcHJvYjtcXG4rXFx0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuIFxcbi1cXHRpZiAoc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyBcXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcXG4rXFx0aWYgKHNjaC1cXHUwMDNlcXN0YXRzLmJhY2tsb2cgXFx1MDAzYyAyICogbXR1KVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbiBcXHRwcm9iID0gUkVBRF9PTkNFKHEtXFx1MDAzZXBpMl9wcm9iKTtcXG5AQCAtNzEyLDcgKzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxcbiBcXHQvKiBBcHBseSBydWxlIG9mIHRodW1iLCBpLmUuLCBkb3VibGluZyB0aGUgcGFja2V0IGxlbmd0aCxcXG4gXFx0ICogdG8gZnVydGhlciBpbmNsdWRlIHBlciBwYWNrZXQgb3ZlcmhlYWQgaW4gbWVtb3J5X2xpbWl0LlxcbiBcXHQgKi9cXG4tXFx0dTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpO1xcbitcXHR1NjQgbWVtbGltID0gbXVsX3UzMl91MzIobGltaXQsIDIgKiBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgMSwgMSBcXHUwMDNjXFx1MDAzYyAyMCkpO1xcbiBcXG4gXFx0aWYgKHVwcGVyXzMyX2JpdHMobWVtbGltKSlcXG4gXFx0XFx0cmV0dXJuIFUzMl9NQVg7XFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZXRzLmMgYi9uZXQvc2NoZWQvc2NoX2V0cy5jXFxuaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2V0cy5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xcbkBAIC04MywxMSArODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbiBcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCAqcXVhbnR1bSxcXG4gXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG4tXFx0KnF1YW50dW0gPSBubGFfZ2V0X3UzMihhdHRyKTtcXG4tXFx0aWYgKCEqcXVhbnR1bSkge1xcbi1cXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1xcXCIpO1xcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFx0fVxcbitcXHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTYzMiwxMSArNjI4LDEzIEBAIHN0YXRpYyBpbnQgZXRzX3FkaXNjX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHR9XFxuIFxcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nXFxuLVxcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgTVRVLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nIHZhbHVlcyBoZXJlLlxcbitcXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIG1heChNVFUsIDI1NikuIEluaXRpYWxpemUgdGhlIG1pc3NpbmdcXG4rXFx0ICogdmFsdWVzIGhlcmUuXFxuIFxcdCAqL1xcbiBcXHRmb3IgKGkgPSBuc3RyaWN0OyBpIFxcdTAwM2MgbmJhbmRzOyBpKyspIHtcXG4gXFx0XFx0aWYgKCFxdWFudGFbaV0pXFxuLVxcdFxcdFxcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xcbitcXHRcXHRcXHRxdWFudGFbaV0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIDI1NiwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuIFxcdH1cXG4gXFxuIFxcdC8qIEJlZm9yZSBjb21taXQsIG1ha2Ugc3VyZSB3ZSBjYW4gYWxsb2NhdGUgYWxsIG5ldyBxZGlzY3MgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jXFxuaW5kZXggNjE0NGI1Njg2ZjEzZi4uMzVmOTQwYjIyMDVkZiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2ZxLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcXG5AQCAtOTgwLDcgKzk4MCw3IEBAIHN0YXRpYyBpbnQgZnFfcmVzaXplKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgbG9nKVxcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbiBpcV9yYW5nZSA9IHtcXG4tXFx0Lm1heCA9IElOVF9NQVgsXFxuK1xcdC5tYXggPSAxIFxcdTAwM2NcXHUwMDNjIDIwLFxcbiB9O1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGZxX3BvbGljeVtUQ0FfRlFfTUFYICsgMV0gPSB7XFxuQEAgLTExMDYsMTQgKzExMDYsMTAgQEAgc3RhdGljIGludCBmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0XFx0XFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xcbiBcXG4gXFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xcbi1cXHRcXHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XFxuK1xcdFxcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXFxuK1xcdFxcdFxcdFxcdCAgICAgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFxuLVxcdFxcdGlmIChxdWFudHVtIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBxdWFudHVtIFxcdTAwM2M9ICgxIFxcdTAwM2NcXHUwMDNjIDIwKSkge1xcbi1cXHRcXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZXF1YW50dW0sIHF1YW50dW0pO1xcbi1cXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiaW52YWxpZCBxdWFudHVtXFxcIik7XFxuLVxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuLVxcdFxcdH1cXG4rXFx0XFx0V1JJVEVfT05DRShxLVxcdTAwM2VxdWFudHVtLCBxdWFudHVtKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKHRiW1RDQV9GUV9JTklUSUFMX1FVQU5UVU1dKVxcbkBAIC0xMjMyLDcgKzEyMjgsNyBAQCBzdGF0aWMgaW50IGZxX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0c2NoLVxcdTAwM2VsaW1pdFxcdFxcdD0gMTAwMDA7XFxuIFxcdHEtXFx1MDAzZWZsb3dfcGxpbWl0XFx0XFx0PSAxMDA7XFxuIFxcdG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuLVxcdHEtXFx1MDAzZXF1YW50dW1cXHRcXHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuK1xcdHEtXFx1MDAzZXF1YW50dW1cXHRcXHQ9IGNsYW1wX3QodTMyLCAyICogbXR1LCAyNTYsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXHRxLVxcdTAwM2Vpbml0aWFsX3F1YW50dW1cXHQ9IG1pbl90KHUzMiwgMTAgKiBtdHUsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXHRxLVxcdTAwM2VmbG93X3JlZmlsbF9kZWxheVxcdD0gbXNlY3NfdG9famlmZmllcyg0MCk7XFxuIFxcdHEtXFx1MDAzZWZsb3dfbWF4X3JhdGVcXHQ9IH4wVUw7XFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXFxuaW5kZXggYjI3ZDk1NDE4NzA3YS4uNTk4Mjg0N2RmOGY4NSAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xcbkBAIC0zNDEsNyArMzQxLDggQEAgc3RhdGljIGludCBmcV9waWVfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdFxcdFxcdCAgIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfQkVUQV0pKTtcXG4gXFxuIFxcdGlmICh0YltUQ0FfRlFfUElFX1FVQU5UVU1dKVxcbi1cXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZXF1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTtcXG4rXFx0XFx0V1JJVEVfT05DRShxLVxcdTAwM2VxdWFudHVtLFxcbitcXHRcXHRcXHQgICBtYXgoMjU2VSwgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkpKTtcXG4gXFxuIFxcdGlmICh0YltUQ0FfRlFfUElFX01FTU9SWV9MSU1JVF0pXFxuIFxcdFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlbWVtb3J5X2xpbWl0LFxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2hoZi5jIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xcbmluZGV4IDk2YWNhYjZhOGRhMDMuLmZjNzJmODI1ZmJkOTIgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfaGhmLmNcXG5AQCAtNTUxLDcgKzU1MSw3IEBAIHN0YXRpYyBpbnQgaGhmX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4gXFx0aWYgKHRiW1RDQV9ISEZfUVVBTlRVTV0pXFxuLVxcdFxcdG5ld19xdWFudHVtID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9RVUFOVFVNXSk7XFxuK1xcdFxcdG5ld19xdWFudHVtID0gbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pKTtcXG4gXFxuIFxcdGlmICh0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKVxcbiBcXHRcXHRuZXdfaGhmX25vbl9oaF93ZWlnaHQgPSBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKTtcXG5AQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0aW50IGk7XFxuIFxcbiBcXHRzY2gtXFx1MDAzZWxpbWl0ID0gMTAwMDtcXG4tXFx0cS1cXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xcbitcXHRxLVxcdTAwM2VxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXHRnZXRfcmFuZG9tX2J5dGVzKFxcdTAwMjZxLVxcdTAwM2VwZXJ0dXJiYXRpb24sIHNpemVvZihxLVxcdTAwM2VwZXJ0dXJiYXRpb24pKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnEtXFx1MDAzZW5ld19idWNrZXRzKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnEtXFx1MDAzZW9sZF9idWNrZXRzKTtcXG5AQCAtNjI0LDEwICs2MjQsNiBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdHEtXFx1MDAzZWhoZl9ldmljdF90aW1lb3V0ID0gSFo7ICAgICAgLyogMSAgc2VjICovXFxuIFxcdHEtXFx1MDAzZWhoZl9ub25faGhfd2VpZ2h0ID0gMjtcXG4gXFxuLVxcdGlmICgoaW50KXEtXFx1MDAzZXF1YW50dW0gXFx1MDAzYz0gMCB8fFxcbi1cXHQgICAgKHU2NClxLVxcdTAwM2VxdWFudHVtICogcS1cXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgXFx1MDAzZSBJTlRfTUFYKVxcbi1cXHRcXHRxLVxcdTAwM2VxdWFudHVtID0gMjU2O1xcbi1cXG4gXFx0aWYgKG9wdCkge1xcbiBcXHRcXHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGllLmMgYi9uZXQvc2NoZWQvc2NoX3BpZS5jXFxuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX3BpZS5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xcbkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXFxuIHtcXG4gXFx0dTY0IHJuZDtcXG4gXFx0dTY0IGxvY2FsX3Byb2IgPSB2YXJzLVxcdTAwM2Vwcm9iO1xcbi1cXHR1MzIgbXR1ID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7XFxuK1xcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXG4gXFx0LyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqL1xcbiBcXHRpZiAodmFycy1cXHUwMDNlYnVyc3RfdGltZSBcXHUwMDNlIDApXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfc2ZxLmMgYi9uZXQvc2NoZWQvc2NoX3NmcS5jXFxuaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX3NmcS5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xcbkBAIC02NjAsNiArNjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKGN0bC1cXHUwMDNlcXVhbnR1bSBcXHUwMDNlIDEgXFx1MDAzY1xcdTAwM2MgMjApIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcInF1YW50dW0gdG9vIGxhcmdlXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoY3RsLVxcdTAwM2VwZXJ0dXJiX3BlcmlvZCBcXHUwMDNjIDAgfHxcXG4gXFx0ICAgIGN0bC1cXHUwMDNlcGVydHVyYl9wZXJpb2QgXFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcImludmFsaWQgcGVydHVyYiBwZXJpb2RcXFwiKTtcXG5AQCAtNjg4LDcgKzY5Myw3IEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXG4gXFx0LyogdXBkYXRlIGFuZCB2YWxpZGF0ZSBjb25maWd1cmF0aW9uICovXFxuIFxcdGlmIChjdGwtXFx1MDAzZXF1YW50dW0pXFxuLVxcdFxcdHF1YW50dW0gPSBjdGwtXFx1MDAzZXF1YW50dW07XFxuK1xcdFxcdHF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLVxcdTAwM2VxdWFudHVtKTtcXG4gXFx0aWYgKGN0bC1cXHUwMDNlZmxvd3MpXFxuIFxcdFxcdG1heGZsb3dzID0gbWluX3QodTMyLCBjdGwtXFx1MDAzZWZsb3dzLCBTRlFfTUFYX0ZMT1dTKTtcXG4gXFx0aWYgKGN0bC1cXHUwMDNlZGl2aXNvcikge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXFxuaW5kZXggZWUwOWU2ZDZmZGYzYy4uZDJlYWI2MWMwOTlhOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvblxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXFxuQEAgLTk4Nyw3ICs5ODcsNyBAQFxcbiAgICAgfSxcXG4gICAgIHtcXG4gICAgICAgICBcXFwiaWRcXFwiOiBcXFwiNDFmNVxcXCIsXFxuLSAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwiRVRTIG9mZmxvYWQgd2hlcmUgdGhlIHN1bSBvZiBxdWFudGEgd3JhcHMgdTMyXFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJFVFMgb2ZmbG9hZCB3aXRoIG91dC1vZi1yYW5nZSBxdWFudGEgY2xhbXBlZFxcXCIsXFxuICAgICAgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbiAgICAgICAgICAgICBcXFwicWRpc2NcXFwiLFxcbiAgICAgICAgICAgICBcXFwiZXRzXFxcIlxcbkBAIC0xMDAyLDcgKzEwMDIsNyBAQFxcbiAgICAgICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGV0cyBxdWFudGEgNDI5NDk2NzI5NCAxIDFcXFwiLFxcbiAgICAgICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4gICAgICAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBxZGlzYyBzaG93IGRldiAkRVRIXFxcIixcXG4tICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcInFkaXNjIGV0cyAuKmJhbmRzIDMgcXVhbnRhIDQyOTQ5NjcyOTQgMSAxXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcInFkaXNjIGV0cyAuKmJhbmRzIDMgcXVhbnRhIDEwNDg1NzYgMjU2IDI1NlxcXCIsXFxuICAgICAgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuICAgICAgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbiAgICAgICAgICAgICBcXFwiZWNobyBcXFxcXFxcIjFcXFxcXFxcIiBcXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNDo0MC41MTc0MzczMTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE3ODQyNTI1ODgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfRFJSXCIsXG4gICAgXCJORVRfU0NIX0RVQUxQSTJcIixcbiAgICBcIk5FVF9TQ0hfRVRTXCIsXG4gICAgXCJORVRfU0NIX0ZRXCIsXG4gICAgXCJORVRfU0NIX0ZRX1BJRVwiLFxuICAgIFwiTkVUX1NDSF9ISEZcIixcbiAgICBcIk5FVF9TQ0hfUElFXCIsXG4gICAgXCJORVRfU0NIX1NGUVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBpZV9kcm9wX2Vhcmx5XCIsXG4gICAgXCJkcnJfY2hhbmdlX2NsYXNzXCIsXG4gICAgXCJkdWFscGkyX2NoYW5nZVwiLFxuICAgIFwiZHVhbHBpMl9pbml0XCIsXG4gICAgXCJldHNfcWRpc2NfY2hhbmdlXCIsXG4gICAgXCJmcV9jaGFuZ2VcIixcbiAgICBcImZxX2luaXRcIixcbiAgICBcImZxX3BpZV9jaGFuZ2VcIixcbiAgICBcImhoZl9jaGFuZ2VcIixcbiAgICBcImhoZl9pbml0XCIsXG4gICAgXCJwaWVfY2hhbmdlXCIsXG4gICAgXCJzZnFfY2hhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1YW50dW0gYW5kIE1UVSBoYW5kbGluZyAvIGJvdW5kaW5nIGxvZ2ljIGFjcm9zcyBtdWx0aXBsZSBuZXR3b3JrIHF1ZXVlaW5nIGRpc2NpcGxpbmVzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIFNGUSkgaW4gbmV0L3NjaGVkLy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcWRpc2MgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyYXRpb24gdmlhIG5ldGxpbmsgKHJ0bmV0bGluay90YyksIGFuZCBwYWNrZXQgZHJvcC9zY2hlZHVsaW5nIGRlY2lzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWYzNjMyZDVhNTc3M2E0NTBjOTQ4NTkzNDg1ZjAyMzJlM2JhNTYwOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTA6MDQ6MzkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xuaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHJyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcbkBAIC04Miw4ICs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiU3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXCIpO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4rXHRcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9IGVsc2Vcbi1cdFx0cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0aWYgKGNsICE9IE5VTEwpIHtcbiBcdFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5AQCAtMjA4LDkgKzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKVxuIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxuIHtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbitcbiBcdHEtXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xuLVx0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxuK1x0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICpcbiBcdFx0KChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2MgLSAoaW50KXEtXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcbiBcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xuIH1cbkBAIC0yODUsOCArMjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuIFx0dTY0IGxvY2FsX2xfcHJvYjtcbiBcdGJvb2wgb3ZlcmxvYWQ7XG4gXHR1MzIgcHJvYjtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcbitcdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBtdHUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByb2IgPSBSRUFEX09OQ0UocS1cdTAwM2VwaTJfcHJvYik7XG5AQCAtNzEyLDcgKzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxuIFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXG4gXHQgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuXG4gXHQgKi9cbi1cdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcbitcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbitcdFx0XHRcdFx0XHQgICAgIDEsIDEgXHUwMDNjXHUwMDNjIDIwKSk7XG4gXG4gXHRpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKVxuIFx0XHRyZXR1cm4gVTMyX01BWDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xuaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcbkBAIC04MywxMSArODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxuIFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XG4tXHRpZiAoISpxdWFudHVtKSB7XG4tXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR9XG4rXHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjMyLDExICs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nXG4tXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS5cbitcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZ1xuK1x0ICogdmFsdWVzIGhlcmUuXG4gXHQgKi9cbiBcdGZvciAoaSA9IG5zdHJpY3Q7IGkgXHUwMDNjIG5iYW5kczsgaSsrKSB7XG4gXHRcdGlmICghcXVhbnRhW2ldKVxuLVx0XHRcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRcdHF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxuK1x0XHRcdFx0XHQgICAgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9XG4gXG4gXHQvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jXG5pbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcbkBAIC05ODAsNyArOTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0ge1xuLVx0Lm1heCA9IElOVF9NQVgsXG4rXHQubWF4ID0gMSBcdTAwM2NcdTAwM2MgMjAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggKyAxXSA9IHtcbkBAIC0xMTA2LDE0ICsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xuLVx0XHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XG4rXHRcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXG4rXHRcdFx0XHQgICAgIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuLVx0XHRpZiAocXVhbnR1bSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgcXVhbnR1bSBcdTAwM2M9ICgxIFx1MDAzY1x1MDAzYyAyMCkpIHtcbi1cdFx0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHF1YW50dW1cIik7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0fVxuK1x0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4gXHR9XG4gXG4gXHRpZiAodGJbVENBX0ZRX0lOSVRJQUxfUVVBTlRVTV0pXG5AQCAtMTIzMiw3ICsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzY2gtXHUwMDNlbGltaXRcdFx0PSAxMDAwMDtcbiBcdHEtXHUwMDNlZmxvd19wbGltaXRcdFx0PSAxMDA7XG4gXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbi1cdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuK1x0cS1cdTAwM2VxdWFudHVtXHRcdD0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2Vpbml0aWFsX3F1YW50dW1cdD0gbWluX3QodTMyLCAxMCAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2VmbG93X3JlZmlsbF9kZWxheVx0PSBtc2Vjc190b19qaWZmaWVzKDQwKTtcbiBcdHEtXHUwMDNlZmxvd19tYXhfcmF0ZVx0PSB+MFVMO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXG5pbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuQEAgLTM0MSw3ICszNDEsOCBAQCBzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSlcbi1cdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTtcbitcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sXG4rXHRcdFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxuIFx0XHRXUklURV9PTkNFKHEtXHUwMDNlbWVtb3J5X2xpbWl0LFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKVxuLVx0XHRuZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pO1xuK1x0XHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcbiBcdFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XG5AQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdGludCBpO1xuIFxuIFx0c2NoLVx1MDAzZWxpbWl0ID0gMTAwMDtcbi1cdHEtXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0cS1cdTAwM2VxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdGdldF9yYW5kb21fYnl0ZXMoXHUwMDI2cS1cdTAwM2VwZXJ0dXJiYXRpb24sIHNpemVvZihxLVx1MDAzZXBlcnR1cmJhdGlvbikpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cS1cdTAwM2VuZXdfYnVja2V0cyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxLVx1MDAzZW9sZF9idWNrZXRzKTtcbkBAIC02MjQsMTAgKzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHEtXHUwMDNlaGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi9cbiBcdHEtXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgPSAyO1xuIFxuLVx0aWYgKChpbnQpcS1cdTAwM2VxdWFudHVtIFx1MDAzYz0gMCB8fFxuLVx0ICAgICh1NjQpcS1cdTAwM2VxdWFudHVtICogcS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCBcdTAwM2UgSU5UX01BWClcbi1cdFx0cS1cdTAwM2VxdWFudHVtID0gMjU2O1xuLVxuIFx0aWYgKG9wdCkge1xuIFx0XHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfcGllLmNcbkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG4ge1xuIFx0dTY0IHJuZDtcbiBcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cdTAwM2Vwcm9iO1xuLVx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0LyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqL1xuIFx0aWYgKHZhcnMtXHUwMDNlYnVyc3RfdGltZSBcdTAwM2UgMClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xuaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcbkBAIC02NjAsNiArNjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSBcdTAwM2UgMSBcdTAwM2NcdTAwM2MgMjApIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJxdWFudHVtIHRvbyBsYXJnZVwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpZiAoY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzYyAwIHx8XG4gXHQgICAgY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHBlcnR1cmIgcGVyaW9kXCIpO1xuQEAgLTY4OCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xuIFx0aWYgKGN0bC1cdTAwM2VxdWFudHVtKVxuLVx0XHRxdWFudHVtID0gY3RsLVx1MDAzZXF1YW50dW07XG4rXHRcdHF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLVx1MDAzZXF1YW50dW0pO1xuIFx0aWYgKGN0bC1cdTAwM2VmbG93cylcbiBcdFx0bWF4Zmxvd3MgPSBtaW5fdCh1MzIsIGN0bC1cdTAwM2VmbG93cywgU0ZRX01BWF9GTE9XUyk7XG4gXHRpZiAoY3RsLVx1MDAzZWRpdmlzb3IpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXG5pbmRleCBlZTA5ZTZkNmZkZjNjLi5kMmVhYjYxYzA5OWE4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZXRzLmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXG5AQCAtOTg3LDcgKzk4Nyw3IEBAXG4gICAgIH0sXG4gICAgIHtcbiAgICAgICAgIFwiaWRcIjogXCI0MWY1XCIsXG4tICAgICAgICBcIm5hbWVcIjogXCJFVFMgb2ZmbG9hZCB3aGVyZSB0aGUgc3VtIG9mIHF1YW50YSB3cmFwcyB1MzJcIixcbisgICAgICAgIFwibmFtZVwiOiBcIkVUUyBvZmZsb2FkIHdpdGggb3V0LW9mLXJhbmdlIHF1YW50YSBjbGFtcGVkXCIsXG4gICAgICAgICBcImNhdGVnb3J5XCI6IFtcbiAgICAgICAgICAgICBcInFkaXNjXCIsXG4gICAgICAgICAgICAgXCJldHNcIlxuQEAgLTEwMDIsNyArMTAwMiw3IEBAXG4gICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBxZGlzYyBhZGQgZGV2ICRFVEggcm9vdCBldHMgcXVhbnRhIDQyOTQ5NjcyOTQgMSAxXCIsXG4gICAgICAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuICAgICAgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSFwiLFxuLSAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBldHMgLipiYW5kcyAzIHF1YW50YSA0Mjk0OTY3Mjk0IDEgMVwiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBldHMgLipiYW5kcyAzIHF1YW50YSAxMDQ4NTc2IDI1NiAyNTZcIixcbiAgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiZWNobyBcXFwiMVxcXCIgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXCJcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA0OjQwLjUxNzQzOTA2NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MzM0NjUyMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoIEZ1enppbmcgLSBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYSBidW5jaCBvZiBwYWNrZXQgc2NoZWR1bGVyIHFkaXNjcyBpbiBgbmV0L3NjaGVkL2AuIExldCBtZSBsaXN0IHRoZW06IGBzY2hfZHJyLmNgLCBgc2NoX2R1YWxwaTIuY2AsIGBzY2hfZXRzLmNgLCBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYCwgYHNjaF9oaGYuY2AsIGBzY2hfcGllLmNgLCBhbmQgYHNjaF9zZnEuY2AuIFBsdXMsIHRoZXJlIGFyZSBzb21lIHNlbGZ0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLi4uYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBldmVuIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCBpbnB1dCB2YWxpZGF0aW9uIG9yIGNsYW1waW5nIHBhcmFtZXRlcnMgcmVsYXRlZCB0byBxdWFudHVtIGFuZCBNVFUgaW4gdGhlIG1lbnRpb25lZCBxZGlzY3MuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBvciBqdXN0IHNvbWUgY29uc3RhbnQvdmFsaWRhdGlvbiB0d2Vha3M/XG5cbkxldCdzIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIHJ1bGVzLiBJdCBzYXlzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgaXQncyBqdXN0IGRvY3MsIEtjb25maWcsIGNvbW1lbnRzLCBsb2dnaW5nLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG9yIHR3ZWFrcyB0byBudW1lcmljIGNvbnN0YW50cy9tYWNyb3MgdGhhdCAqZG9uJ3QqIGFsdGVyIGV4ZWN1dGlvbiBmbG93LiBJdCBhbHNvIHNheXMgdG8gZXhjbHVkZSB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemF0aW9uLCBvciBzdHVmZiBzcGVjaWZpYyB0byBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkLiBJdCBhbHNvIGV4Y2x1ZGVzIGRyaXZlciByZW1vdmUgY2FsbGJhY2tzIGFuZCB0aGUgbGlrZS5cblxuV2FpdCwgdGhpcyAqZG9lcyogbW9kaWZ5IGNvcmUga2VybmVsIG5ldHdvcmtpbmcgbG9naWMhIEl0J3MgdG91Y2hpbmcgdGhlIHFkaXNjIGNvbmZpZ3VyYXRpb24gYW5kIHBhY2tldCBoYW5kbGluZy9zY2hlZHVsaW5nIHBhcnRzIG9mIHRoZSBjb2RlLiBXZSBhcmUgbG9va2luZyBhdCBmdW5jdGlvbnMgbGlrZSBgZHJyX2NoYW5nZV9jbGFzc2AsIGBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb25gLCBgbXVzdF9kcm9wYCwgYGdldF9tZW1vcnlfbGltaXRgLCBgZXRzX3F1YW50dW1fcGFyc2VgLCBgZXRzX3FkaXNjX2NoYW5nZWAsIGBmcV9jaGFuZ2VgLCBgZnFfaW5pdGAsIGBmcV9waWVfY2hhbmdlYCwgYGhoZl9jaGFuZ2VgLCBgaGhmX2luaXRgLCBgcGllX2Ryb3BfZWFybHlgLCBgc2ZxX2NoYW5nZWAuIFRoYXQncyBub3QganVzdCBhIGNvbnN0YW50IGNoYW5nZTsgaXQncyBsaWtlbHkgYWx0ZXJpbmcgaG93IHRoZXNlIHFkaXNjcyBiZWhhdmUuXG5cbkFuZCB0aGVzZSBhcmUgKmFic29sdXRlbHkqIHJlYWNoYWJsZSBpbiBRRU1VIGFuZCBHQ0UgZW52aXJvbm1lbnRzLiBZb3UgY2FuIGVhc2lseSBpbnRlcmFjdCB3aXRoIHRoZW0gdGhyb3VnaCBuZXRsaW5rLCBgcnRuZXRsaW5rYCwgYW5kIGB0Y2AgY29tbWFuZHMuXG5cblNvLCB5ZWFoLCB0aGlzIGxvb2tzIHdvcnRoIGZ1enppbmcuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIHNjaGVkdWxlcnMgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk1MywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjA1Ljg1MjA5NDIxOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzMyOTk4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NDY9Y29tbWVudCBcXFwiUXVldWVpbmcvU2NoZWR1bGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZy00Ny1cXG5uZXQvc2NoZWQvS2NvbmZpZzo0ODpjb25maWcgTkVUX1NDSF9IVEJcXG5uZXQvc2NoZWQvS2NvbmZpZy00OS1cXHR0cmlzdGF0ZSBcXFwiSGllcmFyY2hpY2FsIFRva2VuIEJ1Y2tldCAoSFRCKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTYxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjYyOmNvbmZpZyBORVRfU0NIX0hGU0NcXG5uZXQvc2NoZWQvS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiSGllcmFyY2hpY2FsIEZhaXIgU2VydmljZSBDdXJ2ZSAoSEZTQylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03MC1cXG5uZXQvc2NoZWQvS2NvbmZpZzo3MTpjb25maWcgTkVUX1NDSF9QUklPXFxubmV0L3NjaGVkL0tjb25maWctNzItXFx0dHJpc3RhdGUgXFxcIk11bHRpIEJhbmQgUHJpb3JpdHkgUXVldWVpbmcgKFBSSU8pXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzktXFxubmV0L3NjaGVkL0tjb25maWc6ODA6Y29uZmlnIE5FVF9TQ0hfTVVMVElRXFxubmV0L3NjaGVkL0tjb25maWctODEtXFx0dHJpc3RhdGUgXFxcIkhhcmR3YXJlIE11bHRpcXVldWUtYXdhcmUgTXVsdGkgQmFuZCBRdWV1aW5nIChNVUxUSVEpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctODgtXFxubmV0L3NjaGVkL0tjb25maWc6ODk6Y29uZmlnIE5FVF9TQ0hfUkVEXFxubmV0L3NjaGVkL0tjb25maWctOTAtXFx0dHJpc3RhdGUgXFxcIlJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKFJFRClcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy05OS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxMDA6Y29uZmlnIE5FVF9TQ0hfU0ZCXFxubmV0L3NjaGVkL0tjb25maWctMTAxLVxcdHRyaXN0YXRlIFxcXCJTdG9jaGFzdGljIEZhaXIgQmx1ZSAoU0ZCKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTExMC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxMTE6Y29uZmlnIE5FVF9TQ0hfU0ZRXFxubmV0L3NjaGVkL0tjb25maWctMTEyLVxcdHRyaXN0YXRlIFxcXCJTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTIxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjEyMjpjb25maWcgTkVUX1NDSF9URVFMXFxubmV0L3NjaGVkL0tjb25maWctMTIzLVxcdHRyaXN0YXRlIFxcXCJUcnVlIExpbmsgRXF1YWxpemVyIChURVFMKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTEzMy1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxMzQ6Y29uZmlnIE5FVF9TQ0hfVEJGXFxubmV0L3NjaGVkL0tjb25maWctMTM1LVxcdHRyaXN0YXRlIFxcXCJUb2tlbiBCdWNrZXQgRmlsdGVyIChUQkYpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTQ0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE0NTpjb25maWcgTkVUX1NDSF9DQlNcXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDYtXFx0dHJpc3RhdGUgXFxcIkNyZWRpdCBCYXNlZCBTaGFwZXIgKENCUylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNTUtXFxubmV0L3NjaGVkL0tjb25maWc6MTU2OmNvbmZpZyBORVRfU0NIX0VURlxcbm5ldC9zY2hlZC9LY29uZmlnLTE1Ny1cXHR0cmlzdGF0ZSBcXFwiRWFybGllc3QgVHhUaW1lIEZpcnN0IChFVEYpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTY2LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE2Nzpjb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXFxubmV0L3NjaGVkL0tjb25maWctMTY4LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXFxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXFxubmV0L3NjaGVkL0tjb25maWc6MTg0OmNvbmZpZyBORVRfU0NIX0dSRURcXG5uZXQvc2NoZWQvS2NvbmZpZy0xODUtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xOTQtXFxubmV0L3NjaGVkL0tjb25maWc6MTk1OmNvbmZpZyBORVRfU0NIX05FVEVNXFxubmV0L3NjaGVkL0tjb25maWctMTk2LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIGVtdWxhdG9yIChORVRFTSlcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0yMDYtXFxubmV0L3NjaGVkL0tjb25maWc6MjA3OmNvbmZpZyBORVRfU0NIX0RSUlxcbm5ldC9zY2hlZC9LY29uZmlnLTIwOC1cXHR0cmlzdGF0ZSBcXFwiRGVmaWNpdCBSb3VuZCBSb2JpbiBzY2hlZHVsZXIgKERSUilcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0yMTctXFxubmV0L3NjaGVkL0tjb25maWc6MjE4OmNvbmZpZyBORVRfU0NIX01RUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTIxOS1cXHR0cmlzdGF0ZSBcXFwiTXVsdGktcXVldWUgcHJpb3JpdHkgc2NoZWR1bGVyIChNUVBSSU8pXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjMwLVxcbm5ldC9zY2hlZC9LY29uZmlnOjIzMTpjb25maWcgTkVUX1NDSF9TS0JQUklPXFxubmV0L3NjaGVkL0tjb25maWctMjMyLVxcdHRyaXN0YXRlIFxcXCJTS0IgcHJpb3JpdHkgcXVldWUgc2NoZWR1bGVyIChTS0JQUklPKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTI0My1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyNDQ6Y29uZmlnIE5FVF9TQ0hfQ0hPS0VcXG5uZXQvc2NoZWQvS2NvbmZpZy0yNDUtXFx0dHJpc3RhdGUgXFxcIkNIT29zZSBhbmQgS2VlcCByZXNwb25zaXZlIGZsb3cgc2NoZWR1bGVyIChDSE9LRSlcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0yNTQtXFxubmV0L3NjaGVkL0tjb25maWc6MjU1OmNvbmZpZyBORVRfU0NIX1FGUVxcbm5ldC9zY2hlZC9LY29uZmlnLTI1Ni1cXHR0cmlzdGF0ZSBcXFwiUXVpY2sgRmFpciBRdWV1ZWluZyBzY2hlZHVsZXIgKFFGUSlcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0yNjUtXFxubmV0L3NjaGVkL0tjb25maWc6MjY2OmNvbmZpZyBORVRfU0NIX0NPREVMXFxubmV0L3NjaGVkL0tjb25maWctMjY3LVxcdHRyaXN0YXRlIFxcXCJDb250cm9sbGVkIERlbGF5IEFRTSAoQ09ERUwpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjc2LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI3Nzpjb25maWcgTkVUX1NDSF9GUV9DT0RFTFxcbm5ldC9zY2hlZC9LY29uZmlnLTI3OC1cXHR0cmlzdGF0ZSBcXFwiRmFpciBRdWV1ZSBDb250cm9sbGVkIERlbGF5IEFRTSAoRlFfQ09ERUwpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjg3LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI4ODpjb25maWcgTkVUX1NDSF9DQUtFXFxubmV0L3NjaGVkL0tjb25maWctMjg5LVxcdHRyaXN0YXRlIFxcXCJDb21tb24gQXBwbGljYXRpb25zIEtlcHQgRW5oYW5jZWQgKENBS0UpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjk4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI5OTpjb25maWcgTkVUX1NDSF9GUVxcbm5ldC9zY2hlZC9LY29uZmlnLTMwMC1cXHR0cmlzdGF0ZSBcXFwiRmFpciBRdWV1ZVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTMxMi1cXG5uZXQvc2NoZWQvS2NvbmZpZzozMTM6Y29uZmlnIE5FVF9TQ0hfSEhGXFxubmV0L3NjaGVkL0tjb25maWctMzE0LVxcdHRyaXN0YXRlIFxcXCJIZWF2eS1IaXR0ZXIgRmlsdGVyIChISEYpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMzIxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjMyMjpjb25maWcgTkVUX1NDSF9QSUVcXG5uZXQvc2NoZWQvS2NvbmZpZy0zMjMtXFx0dHJpc3RhdGUgXFxcIlByb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChQSUUpIHNjaGVkdWxlclxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTMzMy1cXG5uZXQvc2NoZWQvS2NvbmZpZzozMzQ6Y29uZmlnIE5FVF9TQ0hfRlFfUElFXFxubmV0L3NjaGVkL0tjb25maWctMzM1LVxcdGRlcGVuZHMgb24gTkVUX1NDSF9QSUVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTM0Ni1cXG5uZXQvc2NoZWQvS2NvbmZpZzozNDc6Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xcbm5ldC9zY2hlZC9LY29uZmlnLTM0OC1cXHR0cmlzdGF0ZSBcXFwiSW5ncmVzcy9jbGFzc2lmaWVyLWFjdGlvbiBRZGlzY1xcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTM2Mi1cXG5uZXQvc2NoZWQvS2NvbmZpZzozNjM6Y29uZmlnIE5FVF9TQ0hfUExVR1xcbm5ldC9zY2hlZC9LY29uZmlnLTM2NC1cXHR0cmlzdGF0ZSBcXFwiUGx1ZyBuZXR3b3JrIHRyYWZmaWMgdW50aWwgcmVsZWFzZSAoUExVRylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zODgtXFxubmV0L3NjaGVkL0tjb25maWc6Mzg5OmNvbmZpZyBORVRfU0NIX0VUU1xcbm5ldC9zY2hlZC9LY29uZmlnLTM5MC1cXHR0cmlzdGF0ZSBcXFwiRW5oYW5jZWQgdHJhbnNtaXNzaW9uIHNlbGVjdGlvbiBzY2hlZHVsZXIgKEVUUylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy00MDUtXFxubmV0L3NjaGVkL0tjb25maWc6NDA2OmNvbmZpZyBORVRfU0NIX0JQRlxcbm5ldC9zY2hlZC9LY29uZmlnLTQwNy1cXHRib29sIFxcXCJCUEYtYmFzZWQgUWRpc2NcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy00MTctXFxubmV0L3NjaGVkL0tjb25maWc6NDE4OmNvbmZpZyBORVRfU0NIX0RVQUxQSTJcXG5uZXQvc2NoZWQvS2NvbmZpZy00MTktXFx0dHJpc3RhdGUgXFxcIkR1YWwgUXVldWUgUEkgU3F1YXJlIChEVUFMUEkyKSBzY2hlZHVsZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy00MjktXFxubmV0L3NjaGVkL0tjb25maWc6NDMwOm1lbnVjb25maWcgTkVUX1NDSF9ERUZBVUxUXFxubmV0L3NjaGVkL0tjb25maWctNDMxLVxcdGJvb2wgXFxcIkFsbG93IG92ZXJyaWRlIGRlZmF1bHQgcXVldWUgZGlzY2lwbGluZVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTk2Nj1lbmRpZiAjIE5FVF9TQ0hFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTk2Ny1cXG5uZXQvc2NoZWQvS2NvbmZpZzo5Njg6Y29uZmlnIE5FVF9TQ0hfRklGT1xcbm5ldC9zY2hlZC9LY29uZmlnLTk2OS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjA1LjkzNTQzMDQ4MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3Njg0Mzk1MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCdWlsZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgZGVhbGluZyB3aXRoIG5ldHdvcmsgc2NoZWR1bGluZyBhbmQgc29tZSBidWlsZCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZpbGVzIGFyZSBhY3R1YWxseSBiZWluZyBjb21waWxlZCBhbmQgbGlua2VkLiBHaXZlbiB0aGF0IHdlJ3JlIHRhbGtpbmcgYG5ldC9zY2hlZGAsIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgTWFrZWZpbGVgIHdpdGhpbiB0aGF0IGRpcmVjdG9yeS4gSSdtIGdvaW5nIHRvIGNyYWNrIG9wZW4gYG5ldC9zY2hlZC9NYWtlZmlsZWAgYW5kIHNlZSBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgb3JjaGVzdHJhdGVkLiBJdCdzIHRoZSBNYWtlZmlsZSB0aGF0IGhvbGRzIHRoZSBrZXkgdG8gdGhlIGRlcGVuZGVuY2llcywgY29tcGlsZXIgZmxhZ3MsIGFuZCB0aGUgb3ZlcmFsbCByZWNpcGUgZm9yIGFzc2VtYmxpbmcgdGhlIHJlbGV2YW50IG1vZHVsZXMuIFRoaXMgc2hvdWxkIHRlbGwgbWUgZXhhY3RseSBob3cgdGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIGluZmx1ZW5jaW5nIHRoZSBidWlsZCBwcm9jZXNzIGFuZCB3aGF0IHNwZWNpZmljYWxseSBpcyBiZWluZyBpbmNsdWRlZCBvciBleGNsdWRlZCBiYXNlZCBvbiB0aGUgY29uZmlncyBpbiBwbGF5LiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTExMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjIzLjYxOTgyOTQxM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDM5NzYzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGUtNS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjpvYmoteVxcdDo9IHNjaF9nZW5lcmljLm8gc2NoX21xLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNy1cXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfSU5FVClcXHRcXHQrPSBzY2hfZnJhZy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcXHRcXHQrPSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19ORVRfQ0xTKVxcdFxcdCs9IGNsc19hcGkub1xcbi0tXFxubmV0L3NjaGVkL01ha2VmaWxlPTMzPW9iai0kKENPTkZJR19ORVRfQUNUX0dBVEUpXFx0Kz0gYWN0X2dhdGUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfTkVUX1NDSF9GSUZPKVxcdCs9IHNjaF9maWZvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX05FVF9TQ0hfSFRCKVxcdCs9IHNjaF9odGIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfTkVUX1NDSF9IRlNDKVxcdCs9IHNjaF9oZnNjLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX05FVF9TQ0hfUkVEKVxcdCs9IHNjaF9yZWQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozODpvYmotJChDT05GSUdfTkVUX1NDSF9HUkVEKVxcdCs9IHNjaF9ncmVkLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6Mzk6b2JqLSQoQ09ORklHX05FVF9TQ0hfSU5HUkVTUylcXHQrPSBzY2hfaW5ncmVzcy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19ORVRfU0NIX1NGQilcXHQrPSBzY2hfc2ZiLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDE6b2JqLSQoQ09ORklHX05FVF9TQ0hfU0ZRKVxcdCs9IHNjaF9zZnEub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfTkVUX1NDSF9UQkYpXFx0Kz0gc2NoX3RiZi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19ORVRfU0NIX1RFUUwpXFx0Kz0gc2NoX3RlcWwub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfTkVUX1NDSF9QUklPKVxcdCs9IHNjaF9wcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX05FVF9TQ0hfTVVMVElRKVxcdCs9IHNjaF9tdWx0aXEub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfTkVUX1NDSF9ORVRFTSlcXHQrPSBzY2hfbmV0ZW0ub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXFx0Kz0gc2NoX2Ryci5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19ORVRfU0NIX1BMVUcpXFx0Kz0gc2NoX3BsdWcub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfTkVUX1NDSF9FVFMpXFx0Kz0gc2NoX2V0cy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19ORVRfU0NIX01RUFJJTylcXHQrPSBzY2hfbXFwcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX05FVF9TQ0hfTVFQUklPX0xJQikgKz0gc2NoX21xcHJpb19saWIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfTkVUX1NDSF9TS0JQUklPKVxcdCs9IHNjaF9za2JwcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX05FVF9TQ0hfQ0hPS0UpXFx0Kz0gc2NoX2Nob2tlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfUUZRKVxcdCs9IHNjaF9xZnEub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1NTpvYmotJChDT05GSUdfTkVUX1NDSF9DT0RFTClcXHQrPSBzY2hfY29kZWwub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1NjpvYmotJChDT05GSUdfTkVUX1NDSF9GUV9DT0RFTClcXHQrPSBzY2hfZnFfY29kZWwub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1NzpvYmotJChDT05GSUdfTkVUX1NDSF9DQUtFKVxcdCs9IHNjaF9jYWtlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlEpXFx0Kz0gc2NoX2ZxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX05FVF9TQ0hfSEhGKVxcdCs9IHNjaF9oaGYub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfTkVUX1NDSF9QSUUpXFx0Kz0gc2NoX3BpZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19ORVRfU0NIX0ZRX1BJRSlcXHQrPSBzY2hfZnFfcGllLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjI6b2JqLSQoQ09ORklHX05FVF9TQ0hfQ0JTKVxcdCs9IHNjaF9jYnMub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXFx0Kz0gc2NoX2V0Zi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19ORVRfU0NIX1RBUFJJTylcXHQrPSBzY2hfdGFwcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVxcdCs9IGJwZl9xZGlzYy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19ORVRfU0NIX0RVQUxQSTIpXFx0Kz0gc2NoX2R1YWxwaTIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS02Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDU6MjMuNzAwMjM1Njk3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODYwMDQwODcxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbiBGaWxlcyoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UsIHNvIEknbGwgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCB0aGUgYWZmZWN0ZWQgZmlsZXMuIEkgc2VlIGEgbGlzdCBvZiBzY2hlZHVsZXIgaW1wbGVtZW50YXRpb25zIHRoYXQgaGF2ZSBiZWVuIGZsYWdnZWQ6IGBuZXQvc2NoZWQvc2NoX2Ryci5jYCwgYG5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jYCwgYG5ldC9zY2hlZC9zY2hfZXRzLmNgLCBgbmV0L3NjaGVkL3NjaF9mcS5jYCwgYG5ldC9zY2hlZC9zY2hfZnFfcGllLmNgLCBgbmV0L3NjaGVkL3NjaF9oaGYuY2AsIGBuZXQvc2NoZWQvc2NoX3BpZS5jYCwgYW5kIGBuZXQvc2NoZWQvc2NoX3NmcS5jYC4gRWFjaCBvbmUgb2YgdGhlc2UgaXMgYXNzb2NpYXRlZCB3aXRoIGEgY29ycmVzcG9uZGluZyBLY29uZmlnIHN5bWJvbDsgdGhlIGBDT05GSUdfTkVUX1NDSF9EUlJgIGV0Yy4gY29uZmlndXJhdGlvbnMuXG5cbk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IGFuZCBhbnkgZGVwZW5kZW5jaWVzIHRoZXNlIHNjaGVkdWxlcnMgbWlnaHQgaGF2ZSwgSSBuZWVkIHRvIG9wZW4gdXAgYG5ldC9zY2hlZC9LY29uZmlnYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsYXRpb25zaGlwcyBvdXRsaW5lZCB0aGVyZS4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBkZXBlbmRlbmNpZXMgb24sIHNheSwgYE5FVF9TQ0hFRGAgb3Igb3RoZXIgcmVsYXRlZCB2YXJpYWJsZXMgdGhhdCBtYXkgYmUgYWZmZWN0ZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY29tcHJlaGVuc2l2ZSBwaWN0dXJlIG9mIHdoYXQgZWxzZSBtYXkgYmUgaW52b2x2ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTA1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjMyLjMwMDY0NzEyOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFRyYWZmaWMgY29udHJvbCBjb25maWd1cmF0aW9uLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIE5FVF9TQ0hFRFxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xcbiAgMTE6XFx0XFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXFxuICAxMjpcXHRcXHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXFxuICAxMzpcXHRcXHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xcbiAgMTQ6XFx0XFx0ICBcXFwiZmFpcmx5XFxcIiBoYXZlIGJlZW4gcHJvcG9zZWQuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgSWYgeW91IHNheSBOIGhlcmUsIHlvdSB3aWxsIGdldCB0aGUgc3RhbmRhcmQgcGFja2V0IHNjaGVkdWxlciwgd2hpY2hcXG4gIDE3OlxcdFxcdCAgaXMgYSBGSUZPIChmaXJzdCBjb21lLCBmaXJzdCBzZXJ2ZWQpLiBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmVcXG4gIDE4OlxcdFxcdCAgYWJsZSB0byBjaG9vc2UgZnJvbSBhbW9uZyBzZXZlcmFsIGFsdGVybmF0aXZlIGFsZ29yaXRobXMgd2hpY2ggY2FuXFxuICAxOTpcXHRcXHQgIHRoZW4gYmUgYXR0YWNoZWQgdG8gZGlmZmVyZW50IG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBpcyB1c2VmdWwgZm9yXFxuICAyMDpcXHRcXHQgIGV4YW1wbGUgaWYgc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlcyBhcmUgcmVhbCB0aW1lIGRldmljZXMgdGhhdFxcbiAgMjE6XFx0XFx0ICBuZWVkIGEgY2VydGFpbiBtaW5pbXVtIGRhdGEgZmxvdyByYXRlLCBvciBpZiB5b3UgbmVlZCB0byBsaW1pdCB0aGVcXG4gIDIyOlxcdFxcdCAgbWF4aW11bSBkYXRhIGZsb3cgcmF0ZSBmb3IgdHJhZmZpYyB3aGljaCBtYXRjaGVzIHNwZWNpZmllZCBjcml0ZXJpYS5cXG4gIDIzOlxcdFxcdCAgVGhpcyBjb2RlIGlzIGNvbnNpZGVyZWQgdG8gYmUgZXhwZXJpbWVudGFsLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHQgIFRvIGFkbWluaXN0ZXIgdGhlc2Ugc2NoZWR1bGVycywgeW91J2xsIG5lZWQgdGhlIHVzZXItbGV2ZWwgdXRpbGl0aWVzXFxuICAyNjpcXHRcXHQgIGZyb20gdGhlIHBhY2thZ2UgaXByb3V0ZTIrdGMgYXRcXG4gIDI3OlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL25ldC9pcHJvdXRlMi9cXHUwMDNlLiAgVGhhdCBwYWNrYWdlXFxuICAyODpcXHRcXHQgIGFsc28gY29udGFpbnMgc29tZSBkb2N1bWVudGF0aW9uOyBmb3IgbW9yZSwgY2hlY2sgb3V0XFxuICAyOTpcXHRcXHQgIFxcdTAwM2NodHRwOi8vd3d3LmxpbnV4Zm91bmRhdGlvbi5vcmcvY29sbGFib3JhdGUvd29ya2dyb3Vwcy9uZXR3b3JraW5nL2lwcm91dGUyXFx1MDAzZS5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0XFx0ICBUaGlzIFF1YWxpdHkgb2YgU2VydmljZSAoUW9TKSBzdXBwb3J0IHdpbGwgZW5hYmxlIHlvdSB0byB1c2VcXG4gIDMyOlxcdFxcdCAgRGlmZmVyZW50aWF0ZWQgU2VydmljZXMgKGRpZmZzZXJ2KSBhbmQgUmVzb3VyY2UgUmVzZXJ2YXRpb24gUHJvdG9jb2xcXG4gIDMzOlxcdFxcdCAgKFJTVlApIG9uIHlvdXIgTGludXggcm91dGVyIGlmIHlvdSBhbHNvIHNheSBZIHRvIHRoZSBjb3JyZXNwb25kaW5nXFxuICAzNDpcXHRcXHQgIGNsYXNzaWZpZXJzIGJlbG93LiAgRG9jdW1lbnRhdGlvbiBhbmQgc29mdHdhcmUgaXMgYXRcXG4gIDM1OlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9kaWZmc2Vydi5zb3VyY2Vmb3JnZS5uZXQvXFx1MDAzZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSBhbmQgdG8gXFxcIi9wcm9jIGZpbGUgc3lzdGVtXFxcIiBiZWxvdywgeW91IHdpbGwgYmUgYWJsZVxcbiAgMzg6XFx0XFx0ICB0byByZWFkIHN0YXR1cyBpbmZvcm1hdGlvbiBhYm91dCBwYWNrZXQgc2NoZWR1bGVycyBmcm9tIHRoZSBmaWxlXFxuICAzOTpcXHRcXHQgIC9wcm9jL25ldC9wc2NoZWQuXFxuICA0MDpcXHRcXG4gIDQxOlxcdFxcdCAgVGhlIGF2YWlsYWJsZSBzY2hlZHVsZXJzIGFyZSBsaXN0ZWQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnM7IHlvdVxcbiAgNDI6XFx0XFx0ICBjYW4gc2F5IFkgdG8gYXMgbWFueSBhcyB5b3UgbGlrZS4gSWYgdW5zdXJlLCBzYXkgTiBub3cuXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGlmIE5FVF9TQ0hFRFxcbiAgNDU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjMyLjMwMDc0NzY2OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1OTc4OTA3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGlzOlxuXG4qKkV4YW1pbmluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgTmV0d29yayBTY2hlZHVsaW5nIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVF9TQ0hFRGAgd2l0aGluIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGBuZXQvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBnby10byBsb2NhdGlvbiBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHJlbGF0ZWQgdG8gbmV0d29ya2luZyBmZWF0dXJlcywgc28gdGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAuIEhvcGVmdWxseSwgYE5FVF9TQ0hFRGAgaXMgZGVmaW5lZCBpbiB0aGVyZSwgYW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFybHkgbGFpZCBvdXQuIEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3NTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA1OjM4Ljg5ODY0Mjk2NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMyOTQ1NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZSBcXFwibmV0L3NjaGVkL0tjb25maWdcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MjY5PXNvdXJjZSBcXFwibmV0L21hYzgwMjE1NC9LY29uZmlnXFxcIlxcbm5ldC9LY29uZmlnOjI3MDpzb3VyY2UgXFxcIm5ldC9zY2hlZC9LY29uZmlnXFxcIlxcbm5ldC9LY29uZmlnLTI3MS1zb3VyY2UgXFxcIm5ldC9kY2IvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDU6MzkuNDMxNTk1ODI1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMTU5MjAyNDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlnKipcblxuT2theSwgc28gSSdtIHRyb3VibGVzaG9vdGluZyBzb21ldGhpbmcsIGFuZCBteSBndXQgZmVlbGluZyBpcyB0aGF0IGl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuIEluc3RlYWQgb2YgYmxpbmRseSBncmVwcGluZywgbGV0J3MgdGFrZSBhIHRhcmdldGVkIGFwcHJvYWNoLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBgbmV0L0tjb25maWdgIGFyb3VuZCBsaW5lIDI3MC4gVGhhdCBhcmVhIHVzdWFsbHkgZGVhbHMgd2l0aC4uLiB3ZWxsLCBiYXNlZCBvbiBwcmlvciBleHBlcmllbmNlIGFuZCBnZW5lcmFsIGtub3dsZWRnZSBvZiB0aGUgcHJvamVjdCdzIHN0cnVjdHVyZS4uLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgb3B0aW9ucyB0aGF0IHJlbGF0ZSB0byBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgb3Igc29tZSBhc3BlY3Qgb2YgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbi4gSXQgY291bGQgYmUgYW55dGhpbmcgZnJvbSBhIHNwZWNpZmljIHByb3RvY29sIGltcGxlbWVudGF0aW9uIHRvIGEgZHJpdmVyJ3MgZW5hYmxlbWVudC4gVGltZSB0byBnbyBodW50aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjAwNiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA2OjAxLjU5MDgwMzUxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjY1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjY1OlxcdHNvdXJjZSBcXFwibmV0L2xhcGIvS2NvbmZpZ1xcXCJcXG4gMjY2OlxcdHNvdXJjZSBcXFwibmV0L3Bob25ldC9LY29uZmlnXFxcIlxcbiAyNjc6XFx0c291cmNlIFxcXCJuZXQvNmxvd3Bhbi9LY29uZmlnXFxcIlxcbiAyNjg6XFx0c291cmNlIFxcXCJuZXQvaWVlZTgwMjE1NC9LY29uZmlnXFxcIlxcbiAyNjk6XFx0c291cmNlIFxcXCJuZXQvbWFjODAyMTU0L0tjb25maWdcXFwiXFxuIDI3MDpcXHRzb3VyY2UgXFxcIm5ldC9zY2hlZC9LY29uZmlnXFxcIlxcbiAyNzE6XFx0c291cmNlIFxcXCJuZXQvZGNiL0tjb25maWdcXFwiXFxuIDI3MjpcXHRzb3VyY2UgXFxcIm5ldC9kbnNfcmVzb2x2ZXIvS2NvbmZpZ1xcXCJcXG4gMjczOlxcdHNvdXJjZSBcXFwibmV0L2JhdG1hbi1hZHYvS2NvbmZpZ1xcXCJcXG4gMjc0OlxcdHNvdXJjZSBcXFwibmV0L29wZW52c3dpdGNoL0tjb25maWdcXFwiXFxuIDI3NTpcXHRzb3VyY2UgXFxcIm5ldC92bXdfdnNvY2svS2NvbmZpZ1xcXCJcXG4gMjc2OlxcdHNvdXJjZSBcXFwibmV0L25ldGxpbmsvS2NvbmZpZ1xcXCJcXG4gMjc3OlxcdHNvdXJjZSBcXFwibmV0L21wbHMvS2NvbmZpZ1xcXCJcXG4gMjc4OlxcdHNvdXJjZSBcXFwibmV0L25zaC9LY29uZmlnXFxcIlxcbiAyNzk6XFx0c291cmNlIFxcXCJuZXQvaHNyL0tjb25maWdcXFwiXFxuIDI4MDpcXHRzb3VyY2UgXFxcIm5ldC9zd2l0Y2hkZXYvS2NvbmZpZ1xcXCJcXG4gMjgxOlxcdHNvdXJjZSBcXFwibmV0L2wzbWRldi9LY29uZmlnXFxcIlxcbiAyODI6XFx0c291cmNlIFxcXCJuZXQvcXJ0ci9LY29uZmlnXFxcIlxcbiAyODM6XFx0c291cmNlIFxcXCJuZXQvbmNzaS9LY29uZmlnXFxcIlxcbiAyODQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA2OjAxLjU5MTA1Nzk2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjQ0ODY3MzcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRnVuY3Rpb24gU3ltYm9scyBpbiBgc2NoX2Ryci5jYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hpY2ggZnVuY3Rpb24gc3ltYm9scyBoYXZlIGJlZW4gdG91Y2hlZCB3aXRoaW4gZWFjaCBmaWxlLiBJJ20gZm9jdXNpbmcgb24gdGhlIHJlY2VudCBtb2RpZmljYXRpb25zLCB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzIG1hZGUgdG8gdGhlIERSUiBzY2hlZHVsZXIuIEFscmlnaHQsIHN0YXJ0aW5nIHdpdGggYG5ldC9zY2hlZC9zY2hfZHJyLmNgLCBpdCBsb29rcyBsaWtlIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQncyBiZWVuIGFsdGVyZWQgaXMgYGRycl9jaGFuZ2VfY2xhc3NgLiBHb29kLCB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHNvIGl0J3MgbGlrZWx5IGludGVybmFsIHRvIHRoYXQgc3BlY2lmaWMgZmlsZS4gTm93LCBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGNvbXBsZXRlIGBzY2hfZHJyLmNgIGZpbGUgaXRzZWxmIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIG1vZGlmaWNhdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBpbXBsZW1lbnRhdGlvbi4gVGhhdCdzIHRoZSBsb2dpY2FsIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1NzksIk91dHB1dFRva2VucyI6NjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA2OjE0LjAzOTczNTUwMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1ODQ1MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiKGRycl9pbml0fGRycl9lbnF1ZXVlfGRycl9kZXF1ZXVlfGRycl9jaGFuZ2VfY2xhc3N8ZHJyX3FkaXNjX29wcylcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9kcnIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2Ryci5jPTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkcnJfcG9saWN5W1RDQV9EUlJfTUFYICsgMV0gPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTU3LVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NTg6c3RhdGljIGludCBkcnJfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCwgdTMyIHBhcmVudGlkLFxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNTktXFx0XFx0XFx0ICAgIHN0cnVjdCBubGF0dHIgKip0Y2EsIHVuc2lnbmVkIGxvbmcgKmFyZyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM9Mjk5PXN0YXRpYyBzdHJ1Y3QgZHJyX2NsYXNzICpkcnJfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTMzNi1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjMzNzpzdGF0aWMgaW50IGRycl9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzM4LVxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTM3MS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjM3MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRycl9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzczLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDExLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDEyOnN0YXRpYyBpbnQgZHJyX2luaXRfcWRpc2Moc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQxMy1cXHRcXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM9NDYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGRycl9jbGFzc19vcHMgPSB7XFxubmV0L3NjaGVkL3NjaF9kcnIuYzo0NjE6XFx0LmNoYW5nZVxcdFxcdD0gZHJyX2NoYW5nZV9jbGFzcyxcXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ2Mi1cXHQuZGVsZXRlXFx0XFx0PSBkcnJfZGVsZXRlX2NsYXNzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kcnIuYy00NzQtXFxubmV0L3NjaGVkL3NjaF9kcnIuYzo0NzU6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZHJyX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDc2LVxcdC5jbF9vcHNcXHRcXHQ9IFxcdTAwMjZkcnJfY2xhc3Nfb3BzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kcnIuYy00NzgtXFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBkcnJfc2NoZWQpLFxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDc5OlxcdC5lbnF1ZXVlXFx0PSBkcnJfZW5xdWV1ZSxcXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ4MDpcXHQuZGVxdWV1ZVxcdD0gZHJyX2RlcXVldWUsXFxubmV0L3NjaGVkL3NjaF9kcnIuYy00ODEtXFx0LnBlZWtcXHRcXHQ9IHFkaXNjX3BlZWtfZGVxdWV1ZWQsXFxubmV0L3NjaGVkL3NjaF9kcnIuYzo0ODI6XFx0LmluaXRcXHRcXHQ9IGRycl9pbml0X3FkaXNjLFxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDgzLVxcdC5yZXNldFxcdFxcdD0gZHJyX3Jlc2V0X3FkaXNjLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kcnIuYz00ODc9TU9EVUxFX0FMSUFTX05FVF9TQ0goXFxcImRyclxcXCIpO1xcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDg4LVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDg5OnN0YXRpYyBpbnQgX19pbml0IGRycl9pbml0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9kcnIuYy00OTAte1xcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDkxOlxcdHJldHVybiByZWdpc3Rlcl9xZGlzYyhcXHUwMDI2ZHJyX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9kcnIuYy00OTItfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kcnIuYz00OTQ9c3RhdGljIHZvaWQgX19leGl0IGRycl9leGl0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9kcnIuYy00OTUte1xcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDk2OlxcdHVucmVnaXN0ZXJfcWRpc2MoXFx1MDAyNmRycl9xZGlzY19vcHMpO1xcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDk3LX1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ5OC1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ5OTptb2R1bGVfaW5pdChkcnJfaW5pdCk7XFxubmV0L3NjaGVkL3NjaF9kcnIuYy01MDAtbW9kdWxlX2V4aXQoZHJyX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjoxNC4xMDEzMjkyOTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc1MjU5ODI2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYHNjaF9kdWFscGkyLmNgKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCBgc2NoX2R1YWxwaTIuY2AuIEkgaGF2ZSBhIGZlZWxpbmcgc29tZXRoaW5nIGlzbid0IHF1aXRlIHJpZ2h0IHdpdGggdGhlIHNjaGVkdWxpbmcgaW4gdGhhdCBhcmVhLCBhbmQgdGhpcyBpcyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIG9mIHRoZSB1c3VhbCBzdXNwZWN0cyDigJMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgaW5lZmZpY2llbnQgbG9ja2luZywgb3IgbWF5YmUgZXZlbiBhIHN1YnRsZSBvdmVyZmxvdyBidWcgY3JlZXBpbmcgaW4gd2l0aCBob3cgdGhlIGR1YWwtUEkgY29udHJvbGxlciBoYW5kbGVzIGl0cyBzY2hlZHVsaW5nLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZGVhZGxpbmVzIGFyZSBiZWluZyBtYW5hZ2VkLCBob3cgdGhlIHByaW9yaXRpZXMgYXJlIHNldCwgYW5kIHdoZXRoZXIgdGhlIGludGVycnVwdCBoYW5kbGluZyBpcyBiZWhhdmluZyBhcyBJJ2QgZXhwZWN0LiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgcGlucG9pbnQgYW55IG9idmlvdXMgYXJlYXMgdGhhdCBtaWdodCBiZSBjb250cmlidXRpbmcgdG8gdGhlIG9ic2VydmVkIHBlcmZvcm1hbmNlIGlzc3VlcyBJJ3ZlIGJlZW4gc2VlaW5nIG9yIHBvdGVudGlhbCBnbGl0Y2hlcy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCBkZXRlcm1pbmlzbSBpbiB0aGlzIGNyaXRpY2FsIHNlY3Rpb24uIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5MTcsIk91dHB1dFRva2VucyI6NzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo0MS42MjczMTQyNDVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMDY4MTUwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoZHVhbHBpMl9pbml0fGR1YWxwaTJfY2hhbmdlfGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbnxtdXN0X2Ryb3B8Z2V0X21lbW9yeV9saW1pdHxkdWFscGkyX3FkaXNjX29wcylcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTk5PXN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMDctICovXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjA4OnN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMDktXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MjU1PXN0YXRpYyBib29sIGR1YWxwaTJfc2NhbGFibGVfbWFya2luZyhzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjgzLSAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI4NDpzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjg1LVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0zODg9c3RhdGljIGludCBkdWFscGkyX2VucXVldWVfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDAxLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQwMjpcXHRpZiAocS1cXHUwMDNlZHJvcF9lYXJseSBcXHUwMDI2XFx1MDAyNiBtdXN0X2Ryb3Aoc2NoLCBxLCBza2IpKSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDAzLVxcdFxcdHFkaXNjX2Ryb3BfcmVhc29uKHNrYiwgc2NoLCB0b19mcmVlLCBRRElTQ19EUk9QX0NPTkdFU1RFRCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz01ODM9c3RhdGljIHN0cnVjdCBza19idWZmICpfX2R1YWxwaTJfcWRpc2NfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU5Mi1cXHR3aGlsZSAoKHNrYiA9IGRlcXVldWVfcGFja2V0KHNjaCwgcSwgXFx1MDAyNmNyZWRpdF9jaGFuZ2UsIG5vdykpKSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTkzOlxcdFxcdGlmICghcS1cXHUwMDNlZHJvcF9lYXJseSBcXHUwMDI2XFx1MDAyNiBtdXN0X2Ryb3Aoc2NoLCBxLCBza2IpKSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTk0LVxcdFxcdFxcdGRyb3BfYW5kX3JldHJ5KHEsIHNrYiwgc2NoLCBRRElTQ19EUk9QX0NPTkdFU1RFRCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz02NzU9c3RhdGljIHUzMiBjYWxjdWxhdGVfcHJvYmFiaWxpdHkoc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03MTItXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzEzOnN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTcxNC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz03Njk9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGR1YWxwaTJfcG9saWN5W1RDQV9EVUFMUEkyX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzk0LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc5NTpzdGF0aWMgaW50IGR1YWxwaTJfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzk2LVxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtODIzLVxcdFxcdFdSSVRFX09OQ0Uoc2NoLVxcdTAwM2VsaW1pdCwgbGltaXQpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjgyNDpcXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZW1lbW9yeV9saW1pdCwgZ2V0X21lbW9yeV9saW1pdChzY2gsIGxpbWl0KSk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtODI1LVxcdH1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg5MS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo4OTI6XFx0XFx0ZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHNjaCwgcSwgd2MpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg5My1cXHR9XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz05NDk9c3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9kZWZhdWx0KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTUzLVxcdHEtXFx1MDAzZXNjaC1cXHUwMDNlbGltaXQgPSAxMDAwMDtcXHRcXHRcXHRcXHQvKiBNYXggMTI1bXMgYXQgMUdicHMgKi9cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5NTQ6XFx0cS1cXHUwMDNlbWVtb3J5X2xpbWl0ID0gZ2V0X21lbW9yeV9saW1pdChzY2gsIHEtXFx1MDAzZXNjaC1cXHUwMDNlbGltaXQpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk1NS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk2My1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5NjQ6XFx0ZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHEtXFx1MDAzZXNjaCwgcSwgMTApO1xcdC8qIHdjPTEwJSwgd2w9OTAlICovXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTY1LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTczLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk3NDpzdGF0aWMgaW50IGR1YWxwaTJfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk3NS1cXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05OTYtXFx0aWYgKG9wdCBcXHUwMDI2XFx1MDAyNiBubGFfbGVuKG9wdCkpIHtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5OTc6XFx0XFx0ZXJyID0gZHVhbHBpMl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTk4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTE5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBkdWFscGkyX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMDEtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwMjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBkdWFscGkyX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMDMtXFx0LmlkXFx0XFx0PSBcXFwiZHVhbHBpMlxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjA4LVxcdC5wZWVrXFx0XFx0PSBkdWFscGkyX3BlZWssXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwOTpcXHQuaW5pdFxcdFxcdD0gZHVhbHBpMl9pbml0LFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTAtXFx0LmRlc3Ryb3lcXHQ9IGR1YWxwaTJfZGVzdHJveSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjExLVxcdC5yZXNldFxcdFxcdD0gZHVhbHBpMl9yZXNldCxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjEyOlxcdC5jaGFuZ2VcXHRcXHQ9IGR1YWxwaTJfY2hhbmdlLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTMtXFx0LmR1bXBcXHRcXHQ9IGR1YWxwaTJfZHVtcCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTEyMTk9c3RhdGljIGludCBfX2luaXQgZHVhbHBpMl9tb2R1bGVfaW5pdCh2b2lkKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjAte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjE6XFx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZkdWFscGkyX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIyMi19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xMjI0PXN0YXRpYyB2b2lkIF9fZXhpdCBkdWFscGkyX21vZHVsZV9leGl0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIyNS17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyNjpcXHR1bnJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZkdWFscGkyX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIyNy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA2OjQyLjAzODAwMjY3NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzk5NjI4OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlcmFjdGlvbiBCZXR3ZWVuIGBzY2hfcGllYCBhbmQgYHBpZV9kcm9wX2Vhcmx5YCoqXG5cbkhtbSwgc28gd2UncmUgbG9va2luZyBhdCBgc2NoX3BpZS5jYCBhZ2Fpbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgcmVsYXRlZCB0byBgcGllX2Ryb3BfZWFybHlgIGFuZCBpdHMgdXNhZ2UsIGJlY2F1c2UgSSBrbm93IHRoYXQgZnVuY3Rpb24gaXMgZWl0aGVyIGV4cG9ydGVkIG9yIHVzZWQgaW4gZWl0aGVyIGBzY2hfcGllYCBvciBgc2NoX2ZxX3BpZWAuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIHNvbWUgc2NoZWR1bGluZyBsb2dpYyB3aXRoaW4gdGhvc2UgbW9kdWxlcy4gVG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IHJldmlldyBib3RoIHRoZSBgLmNgIGZpbGUgaXRzZWxmLCBhbmQgYW55IGNvcnJlc3BvbmRpbmcgYC5oYCBoZWFkZXIgZmlsZSBpZiBpdCBleGlzdHMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBjYWxsIHNpdGVzLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwODYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo0NC40Mzc2MzQyMTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzA2NDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBpZV9kcm9wX2Vhcmx5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9mcV9waWUuYz0xMzA9c3RhdGljIGludCBmcV9waWVfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMTY2LVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6MTY3OlxcdGlmICghcGllX2Ryb3BfZWFybHkoc2NoLCBcXHUwMDI2cS1cXHUwMDNlcF9wYXJhbXMsIFxcdTAwMjZzZWxfZmxvdy1cXHUwMDNldmFycyxcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTE2OC1cXHRcXHRcXHQgICAgc2VsX2Zsb3ctXFx1MDAzZWJhY2tsb2csIHNrYi1cXHUwMDNlbGVuKSkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYz0yNT1zdHJ1Y3QgcGllX3NjaGVkX2RhdGEge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYy0zMi1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjMzOmJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXFxubmV0L3NjaGVkL3NjaF9waWUuYy0zNC1cXHRcXHQgICAgc3RydWN0IHBpZV92YXJzICp2YXJzLCB1MzIgYmFja2xvZywgdTMyIHBhY2tldF9zaXplKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYy01MC1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjUxOlxcdC8qIElmIHdlIGhhdmUgZmV3ZXIgdGhhbiAyIG10dS1zaXplZCBwYWNrZXRzLCBkaXNhYmxlIHBpZV9kcm9wX2Vhcmx5LFxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTItXFx0ICogc2ltaWxhciB0byBtaW5fdGggaW4gUkVEXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTgyLX1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjgzOkVYUE9SVF9TWU1CT0xfR1BMKHBpZV9kcm9wX2Vhcmx5KTtcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTg0LVxcbm5ldC9zY2hlZC9zY2hfcGllLmM9ODU9c3RhdGljIGludCBwaWVfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmMtOTgtXFxubmV0L3NjaGVkL3NjaF9waWUuYzo5OTpcXHRpZiAoIXBpZV9kcm9wX2Vhcmx5KHNjaCwgXFx1MDAyNnEtXFx1MDAzZXBhcmFtcywgXFx1MDAyNnEtXFx1MDAzZXZhcnMsIHNjaC1cXHUwMDNlcXN0YXRzLmJhY2tsb2csXFxubmV0L3NjaGVkL3NjaF9waWUuYy0xMDAtXFx0XFx0XFx0ICAgIHNrYi1cXHUwMDNlbGVuKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo0NC40ODU5NDc1NTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQ2OTg2MTQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6XG5cbioqQW5hbHl6aW5nIHRoZSBQSUUgU2NoZWR1bGVyIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBgcGllX2Ryb3BfZWFybHlgIGlzIGEgcHJldHR5IGltcG9ydGFudCBmdW5jdGlvbiBpbiB0aGUgUElFIHNjaGVkdWxlciwgYW5kIGl0J3MgZXhwb3J0ZWQgd2l0aCB0aGUgR1BMIHN5bWJvbC4gVGhhdCBzaWduYWxzIGl0J3MgbWVhbnQgdG8gYmUgdXNlZCBleHRlcm5hbGx5LCBwZXJoYXBzIGJ5IG90aGVyIGtlcm5lbCBtb2R1bGVzLiBHaXZlbiBpdHMgbmFtZSwgSSdtIGd1ZXNzaW5nIGl0J3MgcmVsYXRlZCB0byBkcm9wcGluZyBwYWNrZXRzLCBidXQgbGV0J3Mgbm90IGp1bXAgdG8gY29uY2x1c2lvbnMuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQgZml0cyBpbnRvIHRoZSBvdmVyYWxsIFBJRSBhcmNoaXRlY3R1cmUuXG5cblRpbWUgdG8gZGl2ZSBpbnRvIGBzY2hfcGllLmNgLiBJIG5lZWQgdG8gcmV2aWV3IHJlbGF0ZWQgZnVuY3Rpb25zLiBGaXJzdCwgSSdsbCBiZSBsb29raW5nIGF0IGhvdyBwYWNrZXRzIGFyZSBlbnF1ZXVlZC9kZXF1ZXVlZCBieSBjaGVja2luZyBmdW5jdGlvbnMgbGlrZSBgcGllX3Byb2Nlc3NfZGVxdWV1ZWAgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gVGhlbiwgYHBpZV9pbml0YCBpcyBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIHRoZSBzY2hlZHVsaW5nIGRpc2NpcGxpbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2NoZWR1bGVyIGlzIGluaXRpYWxpemVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IGBwaWVfZHJvcF9lYXJseWAgbWlnaHQgYmUgY2FsbGVkLiBJJ20gaG9waW5nIEkgY2FuIHBpZWNlIHRvZ2V0aGVyIHRoZSBsb2dpYyBhbmQgaWRlbnRpZnkgdGhlIHNpdHVhdGlvbnMgaW4gd2hpY2ggYSBwYWNrZXQgaXMgZHJvcHBlZCBlYXJseSBhbmQgdGhlIGNvbnRleHQgYXJvdW5kIHdoeSB0aGlzIGlzIGhhcHBlbmluZy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4NDcsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo0Ny45NTU4MTIxMjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDA2NDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihwaWVfaW5pdHxwaWVfY2hhbmdlfHBpZV9xZGlzY19vcHMpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfcGllLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9waWUuYz0xMzA9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHBpZV9wb2xpY3lbVENBX1BJRV9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmMtMTQwLVxcbm5ldC9zY2hlZC9zY2hfcGllLmM6MTQxOnN0YXRpYyBpbnQgcGllX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfcGllLmMtMTQyLVxcdFxcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmM9NDI1PXN0YXRpYyB2b2lkIHBpZV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNDQyLVxcbm5ldC9zY2hlZC9zY2hfcGllLmM6NDQzOnN0YXRpYyBpbnQgcGllX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTQ0NC1cXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYy00NTUtXFx0aWYgKG9wdCkge1xcbm5ldC9zY2hlZC9zY2hfcGllLmM6NDU2OlxcdFxcdGludCBlcnIgPSBwaWVfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfcGllLmMtNDU3LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYz01NDM9c3RhdGljIHZvaWQgcGllX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU1MC1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjU1MTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBwaWVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9waWUuYy01NTItXFx0LmlkXFx0XFx0PSBcXFwicGllXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTU2LVxcdC5wZWVrXFx0XFx0PSBxZGlzY19wZWVrX2RlcXVldWVkLFxcbm5ldC9zY2hlZC9zY2hfcGllLmM6NTU3OlxcdC5pbml0XFx0XFx0PSBwaWVfaW5pdCxcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU1OC1cXHQuZGVzdHJveVxcdD0gcGllX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9waWUuYy01NTktXFx0LnJlc2V0XFx0XFx0PSBwaWVfcmVzZXQsXFxubmV0L3NjaGVkL3NjaF9waWUuYzo1NjA6XFx0LmNoYW5nZVxcdFxcdD0gcGllX2NoYW5nZSxcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU2MS1cXHQuZHVtcFxcdFxcdD0gcGllX2R1bXAsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTU2Nz1zdGF0aWMgaW50IF9faW5pdCBwaWVfbW9kdWxlX2luaXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU2OC17XFxubmV0L3NjaGVkL3NjaF9waWUuYzo1Njk6XFx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZwaWVfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU3MC19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTU3Mj1zdGF0aWMgdm9pZCBfX2V4aXQgcGllX21vZHVsZV9leGl0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9waWUuYy01NzMte1xcbm5ldC9zY2hlZC9zY2hfcGllLmM6NTc0OlxcdHVucmVnaXN0ZXJfcWRpc2MoXFx1MDAyNnBpZV9xZGlzY19vcHMpO1xcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTc1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDY6NDguMDA1MjI1MzU5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyOTUzOTcxOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIHByb3ZpZGVkIHByb21wdDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuT2theSwgc28gdGhlIHByb21wdCBkaXJlY3RzIG1lIHRvIGV4YW1pbmUgYSBzcGVjaWZpYyBmaWxlLCBgc2NoX2V0cy5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY29uc2lkZXIgdGhlIGNvbnRleHQgb2YgdGhpcyBmaWxlLiBCYXNlZCBvbiB0aGUgbmFtZSwgaXQncyBoaWdobHkgcHJvYmFibGUgdGhpcyBmaWxlIGlzIHJlbGF0ZWQgdG8gc2NoZWR1bGluZyBhbmQgbGlrZWx5IGludm9sdmVzIGFuIGVtYmVkZGVkIHN5c3RlbSBvciByZWFsLXRpbWUgb3BlcmF0aW5nIHN5c3RlbSAoUlRPUykuIFwic2NoXCIgdHlwaWNhbGx5IGluZGljYXRlcyBcInNjaGVkdWxlclwiIGFuZCBcImV0c1wiIHByb2JhYmx5IHNpZ25pZmllcyBcIkVhcmxpZXN0IERlYWRsaW5lIEZpcnN0XCIgb3Igc29tZXRoaW5nIHNpbWlsYXIgcmVsYXRlZCB0byB0aW1pbmcgY29uc3RyYWludHMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbiBxdWlja2x5IGFzIEkgZGl2ZSBpbi4gTXkgZm9jdXMgd2lsbCBiZSBvbiB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGltcGxlbWVudGVkIHdpdGhpbi4gSSBleHBlY3QgdG8gZmluZCBmdW5jdGlvbnMgZm9yIHRhc2sgbWFuYWdlbWVudCwgcHJpb3JpdHkgaGFuZGxpbmcsIGFuZCB0aW1lIG1hbmFnZW1lbnQuIE15IGluaXRpYWwgYXBwcm9hY2ggd2lsbCBiZSBhIHF1aWNrIHNjYW4gb2YgdGhlIGNvZGUsIGxvb2tpbmcgZm9yIGtleSBmdW5jdGlvbiBuYW1lcyBhbmQgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgdG8gZXN0YWJsaXNoIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBiZWZvcmUgZGVsdmluZyBpbnRvIHRoZSBkZXRhaWxzLiBJIHdpbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29tbWVudHMgb3IgZG9jdW1lbnRhdGlvbiB3aXRoaW4gdGhlIGZpbGUsIGFzIHRoaXMgaXMgb2Z0ZW4gY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZGV2ZWxvcGVyJ3MgaW50ZW50IGFuZCBob3cgdGhlIHNjaGVkdWxpbmcgcHJvY2VzcyBpcyBkZXNpZ25lZCB0byB3b3JrLiBJdCdzIGxpa2VseSBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gcG9pbnRzIG9yIGFyZWFzIHdoZXJlIGNvbmN1cnJlbmN5IGlzc3VlcyBjb3VsZCBhcmlzZSwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHN1Y2ggc3lzdGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5MjgsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo1Mi4zMDA2MjUwMTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTI0MTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihldHNfaW5pdHxldHNfY2hhbmdlfGV0c19xdWFudHVtX3BhcnNlfGV0c19xZGlzY19vcHMpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9ldHMuYz03Nz1zdGF0aWMgYm9vbCBjbF9pc19hY3RpdmUoc3RydWN0IGV0c19jbGFzcyAqY2wpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgxLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM6ODI6c3RhdGljIGludCBldHNfcXVhbnR1bV9wYXJzZShzdHJ1Y3QgUWRpc2MgKnNjaCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgzLVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9ldHMuYz0yMDQ9c3RhdGljIGludCBldHNfY2xhc3NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCwgdTMyIHBhcmVudGlkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9ldHMuYy0yNDAtXFxubmV0L3NjaGVkL3NjaF9ldHMuYzoyNDE6XFx0ZXJyID0gZXRzX3F1YW50dW1fcGFyc2Uoc2NoLCB0YltUQ0FfRVRTX1FVQU5UQV9CQU5EXSwgXFx1MDAyNnF1YW50dW0sXFxubmV0L3NjaGVkL3NjaF9ldHMuYy0yNDItXFx0XFx0XFx0XFx0ZXh0YWNrKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM9NTQyPXN0YXRpYyBpbnQgZXRzX3FkaXNjX3F1YW50YV9wYXJzZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqcXVhbnRhX2F0dHIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTU2NC1cXHRcXHRcXHR9XFxubmV0L3NjaGVkL3NjaF9ldHMuYzo1NjU6XFx0XFx0XFx0ZXJyID0gZXRzX3F1YW50dW1fcGFyc2Uoc2NoLCBhdHRyLCBcXHUwMDI2cXVhbnRhW2JhbmQrK10sXFxubmV0L3NjaGVkL3NjaF9ldHMuYy01NjYtXFx0XFx0XFx0XFx0XFx0XFx0ZXh0YWNrKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM9ODAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGV0c19jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgxMy1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jOjgxNDpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBldHNfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9ldHMuYy04MTUtXFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNmV0c19jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jPTgyOD1NT0RVTEVfQUxJQVNfTkVUX1NDSChcXFwiZXRzXFxcIik7XFxubmV0L3NjaGVkL3NjaF9ldHMuYy04MjktXFxubmV0L3NjaGVkL3NjaF9ldHMuYzo4MzA6c3RhdGljIGludCBfX2luaXQgZXRzX2luaXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgzMS17XFxubmV0L3NjaGVkL3NjaF9ldHMuYzo4MzI6XFx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZldHNfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgzMy19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0cy5jPTgzNT1zdGF0aWMgdm9pZCBfX2V4aXQgZXRzX2V4aXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgzNi17XFxubmV0L3NjaGVkL3NjaF9ldHMuYzo4Mzc6XFx0dW5yZWdpc3Rlcl9xZGlzYyhcXHUwMDI2ZXRzX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9ldHMuYy04MzgtfVxcbm5ldC9zY2hlZC9zY2hfZXRzLmMtODM5LVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM6ODQwOm1vZHVsZV9pbml0KGV0c19pbml0KTtcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTg0MS1tb2R1bGVfZXhpdChldHNfZXhpdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA2OjUyLjM0OTU1Njg1OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDMwNTgzNTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNjaGVkdWxlciBGcmVxdWVuY3kgQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIGBzY2hfZnEuY2AuIFRoaXMgZmlsZSBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgZnJlcXVlbmN5IHNjYWxpbmcgbG9naWMgZm9yIHRoZSBzY2hlZHVsZXIgcmVzaWRlcy4gR2l2ZW4gbXkgZXhwZXJ0aXNlIGluIGtlcm5lbCBpbnRlcm5hbHMsIEknbSBhbnRpY2lwYXRpbmcgdG8gc2VlIHRoZSBjb250cm9sIGxvb3BzLCB0aGUgZGVjaXNpb24tbWFraW5nIHByb2Nlc3NlcyBmb3Igc2VsZWN0aW5nIGZyZXF1ZW5jaWVzLCBhbmQgaG93IHRoZXNlIGRlY2lzaW9ucyBhcmUgdGhlbiBjb21tdW5pY2F0ZWQgdG8gdGhlIGhhcmR3YXJlLiBJ4oCZbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgdGhlIGdvdmVybm9yIGltcGxlbWVudGF0aW9ucyAoaWYgdGhleSdyZSBwcmVzZW50KSwgdGhlIGFsZ29yaXRobXMgdXNlZCBmb3Igd29ya2xvYWQgY2hhcmFjdGVyaXphdGlvbiwgYW5kIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgcG93ZXIgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2NoZWR1bGVyIGFjY291bnRzIGZvciBib3RoIHBlcmZvcm1hbmNlIGFuZCBwb3dlciBjb25zdW1wdGlvbiBpbiBpdHMgZnJlcXVlbmN5IGNob2ljZXMuIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5OTksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo1NS43ODAxNDM0NDhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTMzMzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihmcV9pbml0fGZxX2NoYW5nZXxmcV9xZGlzY19vcHMpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZnEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2ZxLmM9MTA1Mj1zdGF0aWMgaW50IGZxX2xvYWRfcHJpb21hcChzdHJ1Y3QgZnFfc2NoZWRfZGF0YSAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnEuYy0xMDczLVxcbm5ldC9zY2hlZC9zY2hfZnEuYzoxMDc0OnN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEwNzUtXFx0XFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxLmM9MTIxMj1zdGF0aWMgdm9pZCBmcV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEyMjAtXFxubmV0L3NjaGVkL3NjaF9mcS5jOjEyMjE6c3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEyMjItXFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEyNjEtXFx0aWYgKG9wdClcXG5uZXQvc2NoZWQvc2NoX2ZxLmM6MTI2MjpcXHRcXHRlcnIgPSBmcV9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF9mcS5jLTEyNjMtXFx0ZWxzZVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jPTEzNDI9c3RhdGljIGludCBmcV9kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzNzgtXFxubmV0L3NjaGVkL3NjaF9mcS5jOjEzNzk6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZnFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzODAtXFx0LmlkXFx0XFx0PVxcdFxcXCJmcVxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTM4NS1cXHQucGVla1xcdFxcdD1cXHRxZGlzY19wZWVrX2RlcXVldWVkLFxcbm5ldC9zY2hlZC9zY2hfZnEuYzoxMzg2OlxcdC5pbml0XFx0XFx0PVxcdGZxX2luaXQsXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzODctXFx0LnJlc2V0XFx0XFx0PVxcdGZxX3Jlc2V0LFxcbm5ldC9zY2hlZC9zY2hfZnEuYy0xMzg4LVxcdC5kZXN0cm95XFx0PVxcdGZxX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9mcS5jOjEzODk6XFx0LmNoYW5nZVxcdFxcdD1cXHRmcV9jaGFuZ2UsXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzOTAtXFx0LmR1bXBcXHRcXHQ9XFx0ZnFfZHVtcCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnEuYz0xMzk2PXN0YXRpYyBpbnQgX19pbml0IGZxX21vZHVsZV9pbml0KHZvaWQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTQwNS1cXG5uZXQvc2NoZWQvc2NoX2ZxLmM6MTQwNjpcXHRyZXQgPSByZWdpc3Rlcl9xZGlzYyhcXHUwMDI2ZnFfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTQwNy1cXHRpZiAocmV0KVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jPTE0MTI9c3RhdGljIHZvaWQgX19leGl0IGZxX21vZHVsZV9leGl0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9mcS5jLTE0MTMte1xcbm5ldC9zY2hlZC9zY2hfZnEuYzoxNDE0OlxcdHVucmVnaXN0ZXJfcWRpc2MoXFx1MDAyNmZxX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9mcS5jLTE0MTUtXFx0a21lbV9jYWNoZV9kZXN0cm95KGZxX2Zsb3dfY2FjaGVwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDY6NTUuODI5NjgzMDg0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MTQ5ODQ5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYHNjaF9mcV9waWUuY2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gYHNjaF9mcV9waWUuY2AuIEknbSBzdGFydGluZyBoZXJlIGJlY2F1c2UgSSBuZWVkIGEgZGVlcGVyIGRpdmUgaW50byBob3cgdGhpcyBzY2hlZHVsZXIgaGFuZGxlcyB0aGUgdmFyaW91cyBxdWV1ZXMsIGVzcGVjaWFsbHkgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gZmFpciBxdWV1aW5nIGFuZCBwYWNrZXQgZGVsYXkgZXN0aW1hdGlvbi4gTXkgZ3V0IHRlbGxzIG1lIHNvbWV0aGluZyBpcyBhbWlzcyBpbiBob3cgdGhleSdyZSBjb21iaW5lZCwgb3IgcGVyaGFwcyBhIHN1YnRsZSBidWcgaXMgbHVya2luZyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHJlbGF0ZWQgdG8gdGhlIFBJRSBjb21wb25lbnQuIEkgd2FudCB0byBjaGVjayB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMsIHNwZWNpZmljYWxseSB0aGUgcGVyLXF1ZXVlIHN0YXRlLiBJJ2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyB3aXRoIHRoZSBgbmV0ZW1gIGNvbXBvbmVudCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIExldCBtZSBleGFtaW5lIGhvdyB0aGUgZmFpciBxdWV1aW5nIGlzIGltcGxlbWVudGVkLCBjb25maXJtIGlmIHRoZSByb3VuZCByb2JpbiBhcHByb2FjaCBpcyBpbXBsZW1lbnRlZCBhbmQgaG93IGl0IGlzIGltcGxlbWVudGVkLiBJIHNob3VsZCBsb29rIHNwZWNpZmljYWxseSBhdCBob3cgUElFJ3MgYWN0aXZlIHF1ZXVlIG1hbmFnZW1lbnQgaXMgdHJpZ2dlcmVkIGFuZCB3aGV0aGVyIHRoZXJlJ3MgYW55IHVubmVjZXNzYXJ5IGJsb2NraW5nIG9yIGNvbnRlbnRpb24gdGhhdCBjb3VsZCBiZSBjYXVzaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCB1bmRlciBoaWdoIGxvYWQuIEkgbmVlZCB0byBsb29rIGF0IGhvdyBkaWZmZXJlbnQgdHJhZmZpYyBjbGFzc2VzIGFyZSB3ZWlnaHRlZCBvciBwcmlvcml0aXplZCB3aXRoaW4gdGhlIFBJRSBwYXJhbWV0ZXJzLiBJIHNob3VsZCBsb29rIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHJlbGF0ZWQgdG8gdGhlIGVucXVldWUgYW5kIGRlcXVldWUgb3BlcmF0aW9ucywgYXMgd2VsbCBhcyBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgc3RhdGlzdGljcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwMjksIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNjo1OS40NDQ2NzExMDlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxOTkzNjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihmcV9waWVfaW5pdHxmcV9waWVfY2hhbmdlfGZxX3BpZV9xZGlzY19vcHMpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZnFfcGllLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9mcV9waWUuYz0yMzg9c3RhdGljIHN0cnVjdCBza19idWZmICpmcV9waWVfcWRpc2NfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMjg2LVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6Mjg3OnN0YXRpYyBpbnQgZnFfcGllX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMjg4LVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTM4OD1zdGF0aWMgdm9pZCBmcV9waWVfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTQyMC1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjQyMTpzdGF0aWMgaW50IGZxX3BpZV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy00MjItXFx0XFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNDQyLVxcdGlmIChvcHQpIHtcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjQ0MzpcXHRcXHRlcnIgPSBmcV9waWVfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNDQ0LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYz01NTY9c3RhdGljIHZvaWQgZnFfcGllX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU2NS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjU2NjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBmcV9waWVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NjctXFx0LmlkXFx0XFx0PSBcXFwiZnFfcGllXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTcxLVxcdC5wZWVrXFx0XFx0PSBxZGlzY19wZWVrX2RlcXVldWVkLFxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6NTcyOlxcdC5pbml0XFx0XFx0PSBmcV9waWVfaW5pdCxcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU3My1cXHQuZGVzdHJveVxcdD0gZnFfcGllX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NzQtXFx0LnJlc2V0XFx0XFx0PSBmcV9waWVfcmVzZXQsXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1NzU6XFx0LmNoYW5nZVxcdFxcdD0gZnFfcGllX2NoYW5nZSxcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU3Ni1cXHQuZHVtcFxcdFxcdD0gZnFfcGllX2R1bXAsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTU4Mj1zdGF0aWMgaW50IF9faW5pdCBmcV9waWVfbW9kdWxlX2luaXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU4My17XFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1ODQ6XFx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZmcV9waWVfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU4NS19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTU4Nz1zdGF0aWMgdm9pZCBfX2V4aXQgZnFfcGllX21vZHVsZV9leGl0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01ODgte1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6NTg5OlxcdHVucmVnaXN0ZXJfcWRpc2MoXFx1MDAyNmZxX3BpZV9xZGlzY19vcHMpO1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTkwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDY6NTkuNDk2Njc1MTU1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc2MDYyODcxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYHNjaF9oaGYuY2AqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIGBzY2hfaGhmLmNgLiBHaXZlbiB0aGUgY29udGV4dCBvZiB3aGF0IHdlJ3JlIHdvcmtpbmcgb24sIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gYXNzZXNzIGhvdyB0aGlzIHNwZWNpZmljIGZpbGUgY29udHJpYnV0ZXMgdG8gdGhlIG92ZXJhbGwgc2NoZWR1bGluZyBhbmQgcG90ZW50aWFsbHkgdGhlIGhhbmRsaW5nIG9mIGhpZ2gtZnJlcXVlbmN5IGV2ZW50cy4gSSdtIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMg4oCTIGxpa2VseSByZWxhdGVkIHRvIHRhc2sgcXVldWVzLCBydW5xdWV1ZXMsIG9yIGV2ZW50IHRpbWVycyDigJMgYW5kIGhvdyB0aG9zZSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllci4gSSBleHBlY3QgdG8gZmluZCBzb21lIGNyaXRpY2FsIHNlY3Rpb25zIGhlYXZpbHkgZ3VhcmRlZCB3aXRoIHNwaW5sb2NrcyBvciBtdXRleGVzLCBhbmQgSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGxvY2sgaGllcmFyY2hpZXMgdG8gcHJldmVudCBhbnkgcG90ZW50aWFsIGRlYWRsb2Nrcy5cblxuSSdsbCBiZSB6ZXJvaW5nIGluIG9uIGFueSBhcmVhcyB0aGF0IGRlYWwgd2l0aCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGNvbnRleHQgc3dpdGNoaW5nLCBhbmQgcHJlZW1wdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgSEhGIGNvbXBvbmVudCAod2hhdGV2ZXIgXCJISEZcIiBhY3R1YWxseSAqaXMqIGluIHRoaXMgcHJvamVjdCDigJMgaGlnaC1mcmVxdWVuY3kgaGFuZGxpbmcsIHBlcmhhcHM/KSBpcyBpbnRlZ3JhdGVkIHdpdGggdGhlIHN0YW5kYXJkIHNjaGVkdWxlci4gRG9lcyBpdCBtb2RpZnkgdGhlIHJ1bnF1ZXVlIHByaW9yaXRpZXM/IERvZXMgaXQgaGF2ZSBpdHMgb3duIGRlZGljYXRlZCB0aHJlYWQgb3Igd29ya2VyIHBvb2w/IEFyZSB0aGVyZSBhbnkgc3BlY2lhbGl6ZWQgc3lzdGVtIGNhbGxzIG9yIGtlcm5lbCBBUElzIGV4cG9zZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eT9cblxuSSdtIGFsc28ga2VlbiB0byBzcG90IGFueSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zLiBBcmUgdGhleSB1c2luZyB0ZWNobmlxdWVzIGxpa2UgcGVyLUNQVSBkYXRhIHN0cnVjdHVyZXMsIGxvY2tsZXNzIGFsZ29yaXRobXMsIG9yIGJhdGNoIHByb2Nlc3NpbmcgdG8gbWluaW1pemUgb3ZlcmhlYWQ/IEFueSB1c2Ugb2YgaGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMgd2lsbCBiZSBvZiBwYXJ0aWN1bGFyIGludGVyZXN0LiBFc3NlbnRpYWxseSwgSSdtIHRyeWluZyB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgcm9sZSBhbmQgaW1wYWN0IG9mIGBzY2hfaGhmLmNgIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGhlIHNvb25lciBJIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSwgdGhlIHNvb25lciBJIGNhbiBkaWFnbm9zZSB0aGUgY3VycmVudCBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExODIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNzowNy4xMDI5NjYzMzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDQyMTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihoaGZfaW5pdHxoaGZfY2hhbmdlfGhoZl9xZGlzY19vcHMpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfaGhmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9oaGYuYz01Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGhoZl9wb2xpY3lbVENBX0hIRl9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNTM2LVxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NTM3OnN0YXRpYyBpbnQgaGhmX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNTM4LVxcdFxcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNjA4LVxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NjA5OnN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTYxMC1cXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9oaGYuYy02MjctXFx0aWYgKG9wdCkge1xcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NjI4OlxcdFxcdGludCBlcnIgPSBoaGZfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNjI5LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9oaGYuYz03MTQ9c3RhdGljIGludCBoaGZfZHVtcF9zdGF0cyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGduZXRfZHVtcCAqZClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzI2LVxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzI3OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGhoZl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTcyOC1cXHQuaWRcXHRcXHQ9XFx0XFxcImhoZlxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTczMy1cXHQucGVla1xcdFxcdD1cXHRxZGlzY19wZWVrX2RlcXVldWVkLFxcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzM0OlxcdC5pbml0XFx0XFx0PVxcdGhoZl9pbml0LFxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzM1LVxcdC5yZXNldFxcdFxcdD1cXHRoaGZfcmVzZXQsXFxubmV0L3NjaGVkL3NjaF9oaGYuYy03MzYtXFx0LmRlc3Ryb3lcXHQ9XFx0aGhmX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9oaGYuYzo3Mzc6XFx0LmNoYW5nZVxcdFxcdD1cXHRoaGZfY2hhbmdlLFxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzM4LVxcdC5kdW1wXFx0XFx0PVxcdGhoZl9kdW1wLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9oaGYuYz03NDQ9c3RhdGljIGludCBfX2luaXQgaGhmX21vZHVsZV9pbml0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9oaGYuYy03NDUte1xcbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzQ2OlxcdHJldHVybiByZWdpc3Rlcl9xZGlzYyhcXHUwMDI2aGhmX3FkaXNjX29wcyk7XFxubmV0L3NjaGVkL3NjaF9oaGYuYy03NDctfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9oaGYuYz03NDk9c3RhdGljIHZvaWQgX19leGl0IGhoZl9tb2R1bGVfZXhpdCh2b2lkKVxcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzUwLXtcXG5uZXQvc2NoZWQvc2NoX2hoZi5jOjc1MTpcXHR1bnJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZoaGZfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTc1Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA3OjA3LjE1MjQxNzQ0M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzQzOTE4NjE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgc2NoX3NmcS5jYCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gYHNjaF9zZnEuY2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpIGltcGxlbWVudGF0aW9uLiBMZXQncyBzZWUgd2hhdCB0aGUgY3VycmVudCBjb2RlIGxvb2tzIGxpa2UuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGNvcmUgYWxnb3JpdGhtcyDigJMgaG93IGl0J3MgaGFzaGluZywgaG93IHRoZSBxdWV1ZXMgYXJlIG1hbmFnZWQsIGFuZCwgb2YgY291cnNlLCB0aGUgZGVxdWV1ZSBwcm9jZXNzLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHdoZXJlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBtaWdodCBiZSBwb3NzaWJsZS4gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgbGluZ2VyaW5nPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIHJlZmluZW1lbnQ/IFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCBwYXJzaW5nIHRoZSBsb2dpYy4gTGV0J3Mgc2VlIGlmIGFueSByZWNlbnQgY29tbWl0cyB3YXJyYW50IGEgc2Vjb25kIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzQ0LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDc6MjAuNTkxNjA2OTgzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTMzMzYxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoc2ZxX2luaXR8c2ZxX2NoYW5nZXxzZnFfcWRpc2Nfb3BzKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3NmcS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfc2ZxLmM9NjA0PXN0YXRpYyB2b2lkIHNmcV9wZXJ0dXJiYXRpb24oc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTYyMS1cXHQvKiBxLVxcdTAwM2VwZXJ0dXJiX3BlcmlvZCBjYW4gY2hhbmdlIHVuZGVyIHVzIGZyb21cXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjYyMjpcXHQgKiBzZnFfY2hhbmdlKCkgYW5kIHNmcV9kZXN0cm95KCkuXFxubmV0L3NjaGVkL3NjaF9zZnEuYy02MjMtXFx0ICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTYyOS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjYzMDpzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTYzMS1cXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jPTc3MD1zdGF0aWMgdm9pZCBzZnFfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtNzgxLVxcbm5ldC9zY2hlZC9zY2hfc2ZxLmM6NzgyOnN0YXRpYyBpbnQgc2ZxX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTc4My1cXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9zZnEuYy04MTItXFx0aWYgKG9wdCkge1xcbm5ldC9zY2hlZC9zY2hfc2ZxLmM6ODEzOlxcdFxcdGludCBlcnIgPSBzZnFfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtODE0LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jPTk1MT1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBzZnFfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9zZnEuYy05NjEtXFxubmV0L3NjaGVkL3NjaF9zZnEuYzo5NjI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgc2ZxX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtOTYzLVxcdC5jbF9vcHNcXHRcXHQ9XFx0XFx1MDAyNnNmcV9jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk2OC1cXHQucGVla1xcdFxcdD1cXHRxZGlzY19wZWVrX2RlcXVldWVkLFxcbm5ldC9zY2hlZC9zY2hfc2ZxLmM6OTY5OlxcdC5pbml0XFx0XFx0PVxcdHNmcV9pbml0LFxcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtOTcwLVxcdC5yZXNldFxcdFxcdD1cXHRzZnFfcmVzZXQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jPTk3OD1zdGF0aWMgaW50IF9faW5pdCBzZnFfbW9kdWxlX2luaXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk3OS17XFxubmV0L3NjaGVkL3NjaF9zZnEuYzo5ODA6XFx0cmV0dXJuIHJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZzZnFfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk4MS19XFxubmV0L3NjaGVkL3NjaF9zZnEuYz05ODI9c3RhdGljIHZvaWQgX19leGl0IHNmcV9tb2R1bGVfZXhpdCh2b2lkKVxcbm5ldC9zY2hlZC9zY2hfc2ZxLmMtOTgzLXtcXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjk4NDpcXHR1bnJlZ2lzdGVyX3FkaXNjKFxcdTAwMjZzZnFfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk4NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA3OjIwLjY1MDk0NzM2OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NTAzOTE4NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gQ2hlY2tsaXN0KipcblxuT2theSwgdGltZSB0byBtYWtlIHN1cmUgdGhpcyBzZXR1cCBpcyBjb21wbGV0ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHJ1biB0aHJvdWdoIHRoZSBlc3NlbnRpYWwgc2NoZWR1bGluZyBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXNlIG9wdGlvbnMgYXJlIGVuYWJsZWQgaW4gYG1lbnVjb25maWdgOiBgTkVUX1NDSEVEYCwgYE5FVF9TQ0hfRFJSYCwgYE5FVF9TQ0hfRFVBTFBJMmAsIGBORVRfU0NIX0VUU2AsIGBORVRfU0NIX0ZRYCwgYE5FVF9TQ0hfRlFfUElFYCwgYE5FVF9TQ0hfSEhGYCwgYE5FVF9TQ0hfUElFYCwgYW5kIGBORVRfU0NIX1NGUWAuIEknbGwgY3Jvc3MtcmVmZXJlbmNlIHRoZXNlIGFnYWluc3Qgd2hhdCBJJ3ZlIHByZXZpb3VzbHkgd29ya2VkIG9uLlxuXG5BZnRlciB0aGF0LCBJJ2xsIGRpdmUgaW50byBgbmV0L3NjaGVkL0tjb25maWdgIHRvIGxvb2sgZm9yIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBJdCdzIGNydWNpYWwgbm90IHRvIG1pc3MgYW55IGltcGxpZWQgcmVxdWlyZW1lbnRzIG9yIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBjb25maWd1cmF0aW9uczsgbWlzc2luZyBvbmUgY2FuIGNhdXNlIG1ham9yIGhlYWRhY2hlcyBkb3duIHRoZSByb2FkLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzNTUsIk91dHB1dFRva2VucyI6NTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDc6MjUuMTU0ODY5NDE2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTY3NDUyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF8oRFJSfERVQUxQSTJ8RVRTfEZRfEZRX1BJRXxISEZ8UElFfFNGUSlcXFxcYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0xMDA9Y29uZmlnIE5FVF9TQ0hfU0ZCXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMTAtXFxubmV0L3NjaGVkL0tjb25maWc6MTExOmNvbmZpZyBORVRfU0NIX1NGUVxcbm5ldC9zY2hlZC9LY29uZmlnLTExMi1cXHR0cmlzdGF0ZSBcXFwiU3RvY2hhc3RpYyBGYWlybmVzcyBRdWV1ZWluZyAoU0ZRKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTE5NT1jb25maWcgTkVUX1NDSF9ORVRFTVxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjA2LVxcbm5ldC9zY2hlZC9LY29uZmlnOjIwNzpjb25maWcgTkVUX1NDSF9EUlJcXG5uZXQvc2NoZWQvS2NvbmZpZy0yMDgtXFx0dHJpc3RhdGUgXFxcIkRlZmljaXQgUm91bmQgUm9iaW4gc2NoZWR1bGVyIChEUlIpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Mjg4PWNvbmZpZyBORVRfU0NIX0NBS0VcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTI5OC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyOTk6Y29uZmlnIE5FVF9TQ0hfRlFcXG5uZXQvc2NoZWQvS2NvbmZpZy0zMDAtXFx0dHJpc3RhdGUgXFxcIkZhaXIgUXVldWVcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zMTItXFxubmV0L3NjaGVkL0tjb25maWc6MzEzOmNvbmZpZyBORVRfU0NIX0hIRlxcbm5ldC9zY2hlZC9LY29uZmlnLTMxNC1cXHR0cmlzdGF0ZSBcXFwiSGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTMyMS1cXG5uZXQvc2NoZWQvS2NvbmZpZzozMjI6Y29uZmlnIE5FVF9TQ0hfUElFXFxubmV0L3NjaGVkL0tjb25maWctMzIzLVxcdHRyaXN0YXRlIFxcXCJQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoUElFKSBzY2hlZHVsZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zMzMtXFxubmV0L3NjaGVkL0tjb25maWc6MzM0OmNvbmZpZyBORVRfU0NIX0ZRX1BJRVxcbm5ldC9zY2hlZC9LY29uZmlnLTMzNS1cXHRkZXBlbmRzIG9uIE5FVF9TQ0hfUElFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz0zNjM9Y29uZmlnIE5FVF9TQ0hfUExVR1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMzg4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjM4OTpjb25maWcgTkVUX1NDSF9FVFNcXG5uZXQvc2NoZWQvS2NvbmZpZy0zOTAtXFx0dHJpc3RhdGUgXFxcIkVuaGFuY2VkIHRyYW5zbWlzc2lvbiBzZWxlY3Rpb24gc2NoZWR1bGVyIChFVFMpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NDA2PWNvbmZpZyBORVRfU0NIX0JQRlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDE3LVxcbm5ldC9zY2hlZC9LY29uZmlnOjQxODpjb25maWcgTkVUX1NDSF9EVUFMUEkyXFxubmV0L3NjaGVkL0tjb25maWctNDE5LVxcdHRyaXN0YXRlIFxcXCJEdWFsIFF1ZXVlIFBJIFNxdWFyZSAoRFVBTFBJMikgc2NoZWR1bGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNzoyNS4yMTA1NTAyNTJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTM2NDg3ODgzNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZy4gRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORVRfU0NIX0ZRX1BJRWA7IEkgc2VlIHRoYXQgaXQgZGVwZW5kcyBvbiBgTkVUX1NDSF9QSUVgLiAgTmV4dCwgd2hhdCBhYm91dCB0aGUgdG9wLWxldmVsIGBORVRfU0NIRURgPyBEb2VzIGl0IGhhdmUgYW55IGRlcGVuZGVuY2llcyBpdHNlbGY/IExldCBtZSBxdWlja2x5IHJldmlldyB0aGUgZmlyc3QgZmV3IGxpbmVzIG9mIGBuZXQvc2NoZWQvS2NvbmZpZ2AgdG8gY29uZmlybSwgYW5kIGNvbmZpcm0gdGhhdCBgTkVUX1NDSEVEYCBpcyBhIHN0YW5kYXJkIHN1YnN5c3RlbSBjb25maWcuXG5cbkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLCBJIGNhbiBzZWUgdGhhdCB0aGVzZSBhcmU6IGBkcnJfY2hhbmdlX2NsYXNzYCwgYGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbmAsIGBtdXN0X2Ryb3BgLCBgZ2V0X21lbW9yeV9saW1pdGAsIGBldHNfcXVhbnR1bV9wYXJzZWAsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBwaWVfZHJvcF9lYXJseWAsIGFuZCBgc2ZxX2NoYW5nZWAuIE5vdywgZm9jdXNpbmcgaW4sIEkgc2VlIGBwaWVfZHJvcF9lYXJseWAgaXMgbm9uLXN0YXRpYywgbWVhbmluZyBpdCdzIGV4cG9ydGVkIGFuZCBhIGdvb2QgdGFyZ2V0LiBUaGUgb3RoZXIgZnVuY3Rpb25zIGFyZSBzdGF0aWMgY2FsbGJhY2sgZnVuY3Rpb25zIGluIHFkaXNjIG9wZXJhdGlvbnMsIHNvIHRoZXkgYXJlIGxpa2VseSBlbnRyeXBvaW50cyB3aXRoaW4gdGhhdCBjb250ZXh0LlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhlIHZpc2libGUgc3ltYm9scyBhbmQgZW50cnlwb2ludHMgcmVsYXRlZCB0byBxZGlzYyBvcGVyYXRpb25zLiBGcm9tIHRoZSBgcWRpc2Mgb3BzYCBzdHJ1Y3RzLCBJIGNhbiBzZWUgdGhlc2Uga2V5IGZ1bmN0aW9ucyBhcmUgcmVnaXN0ZXJlZDogYGRycl9jaGFuZ2VfY2xhc3NgLCBgZHVhbHBpMl9jaGFuZ2VgLCBgZHVhbHBpMl9pbml0YCwgYGV0c19jbGFzc19jaGFuZ2VgLCBgZXRzX3FkaXNjX2NoYW5nZWAsIGBmcV9jaGFuZ2VgLCBgZnFfaW5pdGAsIGBmcV9waWVfY2hhbmdlYCwgYGhoZl9jaGFuZ2VgLCBgaGhmX2luaXRgLCBgcGllX2NoYW5nZWAsIGBwaWVfaW5pdGAsIGBwaWVfZHJvcF9lYXJseWAsIGBzZnFfY2hhbmdlYCwgYW5kIGBzZnFfaW5pdGAuXG5cblRpbWUgdG8gc2VsZWN0IHRoZSBrZXkgc3ltYm9scyBmb3IgdGhlIGZ1enppbmcgY2FtcGFpZ24sIGZvY3VzaW5nIG9uIHRoZSBjcml0aWNhbCBub24taG90cGF0aCBmdW5jdGlvbnMuIFRoYXQgbWVhbnM6IGBwaWVfZHJvcF9lYXJseWAsIGBkcnJfY2hhbmdlX2NsYXNzYCwgYGR1YWxwaTJfY2hhbmdlYCwgYGR1YWxwaTJfaW5pdGAsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBwaWVfY2hhbmdlYCwgYW5kIGBzZnFfY2hhbmdlYC5cblxuTm93LCB0aGUgZmluYWwgc3RhZ2UgaXMgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zIGFuZCBhc3Nlc3MgXCJXb3J0aEZ1enppbmcuXCIgR2l2ZW4gdGhhdCB0aGlzIGludm9sdmVzIGNoYW5nZXMgdG8gcXVhbnR1bSBjYWxjdWxhdGlvbiwgYm91bmRzIGNoZWNraW5nIGFjcm9zcyBlaWdodCBkaWZmZXJlbnQgbmV0d29yayBwYWNrZXQgc2NoZWR1bGVycywgYW5kIGFsdGVyYXRpb25zIHRvIHF1ZXVpbmcvZHJvcCBiZWhhdmlvciBhbG9uZyB3aXRoIG5ldGxpbmsgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggb3VyIHRpbWUuXG5cbkJhc2VkIG9uIHRoYXQsIEknbGwgaWRlbnRpZnkgYW5kIGVuYWJsZSBhbGwgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZzogYE5FVF9TQ0hFRGAsIGBORVRfU0NIX0RSUmAsIGBORVRfU0NIX0RVQUxQSTJgLCBgTkVUX1NDSF9FVFNgLCBgTkVUX1NDSF9GUWAsIGBORVRfU0NIX0ZRX1BJRWAsIGBORVRfU0NIX0hIRmAsIGBORVRfU0NIX1BJRWAsIGFuZCBgTkVUX1NDSF9TRlFgLiBGaW5hbGx5LCBpdCdzIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI4MSwiT3V0cHV0VG9rZW5zIjoyNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDc6MzguODU5MzQyMTgxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMzNDY4NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9EUlJcIixcbiAgICBcIk5FVF9TQ0hfRFVBTFBJMlwiLFxuICAgIFwiTkVUX1NDSF9FVFNcIixcbiAgICBcIk5FVF9TQ0hfRlFcIixcbiAgICBcIk5FVF9TQ0hfRlFfUElFXCIsXG4gICAgXCJORVRfU0NIX0hIRlwiLFxuICAgIFwiTkVUX1NDSF9QSUVcIixcbiAgICBcIk5FVF9TQ0hfU0ZRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGllX2Ryb3BfZWFybHlcIixcbiAgICBcImRycl9jaGFuZ2VfY2xhc3NcIixcbiAgICBcImR1YWxwaTJfY2hhbmdlXCIsXG4gICAgXCJkdWFscGkyX2luaXRcIixcbiAgICBcImV0c19xZGlzY19jaGFuZ2VcIixcbiAgICBcImZxX2NoYW5nZVwiLFxuICAgIFwiZnFfaW5pdFwiLFxuICAgIFwiZnFfcGllX2NoYW5nZVwiLFxuICAgIFwiaGhmX2NoYW5nZVwiLFxuICAgIFwiaGhmX2luaXRcIixcbiAgICBcInBpZV9jaGFuZ2VcIixcbiAgICBcInNmcV9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVhbnR1bSBhbmQgTVRVIGhhbmRsaW5nIC8gYm91bmRpbmcgbG9naWMgYWNyb3NzIG11bHRpcGxlIG5ldHdvcmsgcXVldWVpbmcgZGlzY2lwbGluZXMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSBpbiBuZXQvc2NoZWQvLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBxZGlzYyBpbml0aWFsaXphdGlvbiwgY29uZmlndXJhdGlvbiB2aWEgbmV0bGluayAocnRuZXRsaW5rL3RjKSwgYW5kIHBhY2tldCBkcm9wL3NjaGVkdWxpbmcgZGVjaXNpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9EUlJcIixcbiAgICBcIk5FVF9TQ0hfRFVBTFBJMlwiLFxuICAgIFwiTkVUX1NDSF9FVFNcIixcbiAgICBcIk5FVF9TQ0hfRlFcIixcbiAgICBcIk5FVF9TQ0hfRlFfUElFXCIsXG4gICAgXCJORVRfU0NIX0hIRlwiLFxuICAgIFwiTkVUX1NDSF9QSUVcIixcbiAgICBcIk5FVF9TQ0hfU0ZRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGllX2Ryb3BfZWFybHlcIixcbiAgICBcImRycl9jaGFuZ2VfY2xhc3NcIixcbiAgICBcImR1YWxwaTJfY2hhbmdlXCIsXG4gICAgXCJkdWFscGkyX2luaXRcIixcbiAgICBcImV0c19xZGlzY19jaGFuZ2VcIixcbiAgICBcImZxX2NoYW5nZVwiLFxuICAgIFwiZnFfaW5pdFwiLFxuICAgIFwiZnFfcGllX2NoYW5nZVwiLFxuICAgIFwiaGhmX2NoYW5nZVwiLFxuICAgIFwiaGhmX2luaXRcIixcbiAgICBcInBpZV9jaGFuZ2VcIixcbiAgICBcInNmcV9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVhbnR1bSBhbmQgTVRVIGhhbmRsaW5nIC8gYm91bmRpbmcgbG9naWMgYWNyb3NzIG11bHRpcGxlIG5ldHdvcmsgcXVldWVpbmcgZGlzY2lwbGluZXMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSBpbiBuZXQvc2NoZWQvLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBxZGlzYyBpbml0aWFsaXphdGlvbiwgY29uZmlndXJhdGlvbiB2aWEgbmV0bGluayAocnRuZXRsaW5rL3RjKSwgYW5kIHBhY2tldCBkcm9wL3NjaGVkdWxpbmcgZGVjaXNpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNzozOC45NDI3MDA3NjVaIiwiU2VxIjozNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MjA4OTY1MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxMDowNzozOC45NDMzMjYzNjVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3OTIwMjY1ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGp1c3RzIGlucHV0IHZhbGlkYXRpb24gYW5kIGFyaXRobWV0aWMgYm91bmRzIG9uIHF1YW50dW0gYW5kIE1UVSBwYXJhbWV0ZXJzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgc2NoZWR1bGVycyAoRFJSLCBEdWFsUEkyLCBFVFMsIEZRLCBGUS1QSUUsIEhIRiwgUElFLCBTRlEpIHVzaW5nIGNsYW1waW5nIGZ1bmN0aW9ucyAoY2xhbXBfdCwgbWF4KS4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBtb2RpZnksIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnksIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCBvciBkYXRhIHRyYW5zZmVycyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZCwgYW5kIHN0YW5kYXJkIEtBU0FOL3Nhbml0aXplciBidWlsZHMgYXJlIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWYzNjMyZDVhNTc3M2E0NTBjOTQ4NTkzNDg1ZjAyMzJlM2JhNTYwOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTA6MDQ6MzkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xuaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHJyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcbkBAIC04Miw4ICs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiU3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXCIpO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4rXHRcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9IGVsc2Vcbi1cdFx0cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0aWYgKGNsICE9IE5VTEwpIHtcbiBcdFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5AQCAtMjA4LDkgKzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKVxuIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxuIHtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbitcbiBcdHEtXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xuLVx0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxuK1x0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICpcbiBcdFx0KChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2MgLSAoaW50KXEtXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcbiBcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xuIH1cbkBAIC0yODUsOCArMjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuIFx0dTY0IGxvY2FsX2xfcHJvYjtcbiBcdGJvb2wgb3ZlcmxvYWQ7XG4gXHR1MzIgcHJvYjtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcbitcdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBtdHUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByb2IgPSBSRUFEX09OQ0UocS1cdTAwM2VwaTJfcHJvYik7XG5AQCAtNzEyLDcgKzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxuIFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXG4gXHQgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuXG4gXHQgKi9cbi1cdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcbitcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbitcdFx0XHRcdFx0XHQgICAgIDEsIDEgXHUwMDNjXHUwMDNjIDIwKSk7XG4gXG4gXHRpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKVxuIFx0XHRyZXR1cm4gVTMyX01BWDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xuaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcbkBAIC04MywxMSArODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxuIFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XG4tXHRpZiAoISpxdWFudHVtKSB7XG4tXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR9XG4rXHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjMyLDExICs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nXG4tXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS5cbitcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZ1xuK1x0ICogdmFsdWVzIGhlcmUuXG4gXHQgKi9cbiBcdGZvciAoaSA9IG5zdHJpY3Q7IGkgXHUwMDNjIG5iYW5kczsgaSsrKSB7XG4gXHRcdGlmICghcXVhbnRhW2ldKVxuLVx0XHRcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRcdHF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxuK1x0XHRcdFx0XHQgICAgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9XG4gXG4gXHQvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jXG5pbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcbkBAIC05ODAsNyArOTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0ge1xuLVx0Lm1heCA9IElOVF9NQVgsXG4rXHQubWF4ID0gMSBcdTAwM2NcdTAwM2MgMjAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggKyAxXSA9IHtcbkBAIC0xMTA2LDE0ICsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xuLVx0XHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XG4rXHRcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXG4rXHRcdFx0XHQgICAgIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuLVx0XHRpZiAocXVhbnR1bSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgcXVhbnR1bSBcdTAwM2M9ICgxIFx1MDAzY1x1MDAzYyAyMCkpIHtcbi1cdFx0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHF1YW50dW1cIik7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0fVxuK1x0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4gXHR9XG4gXG4gXHRpZiAodGJbVENBX0ZRX0lOSVRJQUxfUVVBTlRVTV0pXG5AQCAtMTIzMiw3ICsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzY2gtXHUwMDNlbGltaXRcdFx0PSAxMDAwMDtcbiBcdHEtXHUwMDNlZmxvd19wbGltaXRcdFx0PSAxMDA7XG4gXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbi1cdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuK1x0cS1cdTAwM2VxdWFudHVtXHRcdD0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2Vpbml0aWFsX3F1YW50dW1cdD0gbWluX3QodTMyLCAxMCAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2VmbG93X3JlZmlsbF9kZWxheVx0PSBtc2Vjc190b19qaWZmaWVzKDQwKTtcbiBcdHEtXHUwMDNlZmxvd19tYXhfcmF0ZVx0PSB+MFVMO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXG5pbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuQEAgLTM0MSw3ICszNDEsOCBAQCBzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSlcbi1cdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTtcbitcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sXG4rXHRcdFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxuIFx0XHRXUklURV9PTkNFKHEtXHUwMDNlbWVtb3J5X2xpbWl0LFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKVxuLVx0XHRuZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pO1xuK1x0XHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcbiBcdFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XG5AQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdGludCBpO1xuIFxuIFx0c2NoLVx1MDAzZWxpbWl0ID0gMTAwMDtcbi1cdHEtXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0cS1cdTAwM2VxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdGdldF9yYW5kb21fYnl0ZXMoXHUwMDI2cS1cdTAwM2VwZXJ0dXJiYXRpb24sIHNpemVvZihxLVx1MDAzZXBlcnR1cmJhdGlvbikpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cS1cdTAwM2VuZXdfYnVja2V0cyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxLVx1MDAzZW9sZF9idWNrZXRzKTtcbkBAIC02MjQsMTAgKzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHEtXHUwMDNlaGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi9cbiBcdHEtXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgPSAyO1xuIFxuLVx0aWYgKChpbnQpcS1cdTAwM2VxdWFudHVtIFx1MDAzYz0gMCB8fFxuLVx0ICAgICh1NjQpcS1cdTAwM2VxdWFudHVtICogcS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCBcdTAwM2UgSU5UX01BWClcbi1cdFx0cS1cdTAwM2VxdWFudHVtID0gMjU2O1xuLVxuIFx0aWYgKG9wdCkge1xuIFx0XHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfcGllLmNcbkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG4ge1xuIFx0dTY0IHJuZDtcbiBcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cdTAwM2Vwcm9iO1xuLVx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0LyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqL1xuIFx0aWYgKHZhcnMtXHUwMDNlYnVyc3RfdGltZSBcdTAwM2UgMClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xuaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcbkBAIC02NjAsNiArNjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSBcdTAwM2UgMSBcdTAwM2NcdTAwM2MgMjApIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJxdWFudHVtIHRvbyBsYXJnZVwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpZiAoY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzYyAwIHx8XG4gXHQgICAgY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHBlcnR1cmIgcGVyaW9kXCIpO1xuQEAgLTY4OCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xuIFx0aWYgKGN0bC1cdTAwM2VxdWFudHVtKVxuLVx0XHRxdWFudHVtID0gY3RsLVx1MDAzZXF1YW50dW07XG4rXHRcdHF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLVx1MDAzZXF1YW50dW0pO1xuIFx0aWYgKGN0bC1cdTAwM2VmbG93cylcbiBcdFx0bWF4Zmxvd3MgPSBtaW5fdCh1MzIsIGN0bC1cdTAwM2VmbG93cywgU0ZRX01BWF9GTE9XUyk7XG4gXHRpZiAoY3RsLVx1MDAzZWRpdmlzb3IpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9ldHMuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXG5pbmRleCBlZTA5ZTZkNmZkZjNjLi5kMmVhYjYxYzA5OWE4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZXRzLmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2V0cy5qc29uXG5AQCAtOTg3LDcgKzk4Nyw3IEBAXG4gICAgIH0sXG4gICAgIHtcbiAgICAgICAgIFwiaWRcIjogXCI0MWY1XCIsXG4tICAgICAgICBcIm5hbWVcIjogXCJFVFMgb2ZmbG9hZCB3aGVyZSB0aGUgc3VtIG9mIHF1YW50YSB3cmFwcyB1MzJcIixcbisgICAgICAgIFwibmFtZVwiOiBcIkVUUyBvZmZsb2FkIHdpdGggb3V0LW9mLXJhbmdlIHF1YW50YSBjbGFtcGVkXCIsXG4gICAgICAgICBcImNhdGVnb3J5XCI6IFtcbiAgICAgICAgICAgICBcInFkaXNjXCIsXG4gICAgICAgICAgICAgXCJldHNcIlxuQEAgLTEwMDIsNyArMTAwMiw3IEBAXG4gICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBxZGlzYyBhZGQgZGV2ICRFVEggcm9vdCBldHMgcXVhbnRhIDQyOTQ5NjcyOTQgMSAxXCIsXG4gICAgICAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuICAgICAgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSFwiLFxuLSAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBldHMgLipiYW5kcyAzIHF1YW50YSA0Mjk0OTY3Mjk0IDEgMVwiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBldHMgLipiYW5kcyAzIHF1YW50YSAxMDQ4NTc2IDI1NiAyNTZcIixcbiAgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiZWNobyBcXFwiMVxcXCIgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXCJcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDEwOjA3OjM4Ljk0MzMyNzcwNVoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3OTIwMjQyNjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFzc2Vzc21lbnQ6IFRoaXMgUGF0Y2ggaXMgQ2xlYW4qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IEtNU0FOIGlzbid0IG5lZWRlZCBoZXJlLCBidXQgbGV0J3Mgd2FsayB0aHJvdWdoIHRoZSBkZXRhaWxzLiBUaGlzIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2NzIOKAkyBzY2hfZHJyLmMsIHNjaF9kdWFscGkyLmMsIHNjaF9ldHMuYywgc2NoX2ZxLmMsIHNjaF9mcV9waWUuYywgc2NoX2hoZi5jLCBzY2hfcGllLmMsIGFuZCBzY2hfc2ZxLmMuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIHJldm9sdmUgYXJvdW5kIGNsYW1waW5nIG9yIHNhbml0aXppbmcgdGhlIGBxdWFudHVtYCBhbmQgYG10dWAgdmFsdWVzIHVzZWQgd2l0aGluIHRoZXNlIHNjaGVkdWxlcnMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgaW5wdXQgdmFsaWRhdGlvbiBtb3JlIHRoYW4gYW55dGhpbmcgZWxzZS5cblxuU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlOlxuXG4qICAgV2UncmUgZW5mb3JjaW5nIHNlbnNpYmxlIHJhbmdlcyBmb3IgYHF1YW50dW1gIGFuZCBgbXR1YCB1c2luZyBgY2xhbXBfdGAgYW5kIGBtYXhgIG1hY3Jvcy4gRm9yIGV4YW1wbGUsIGVuc3VyaW5nIGBxdWFudHVtYCBpcyBiZXR3ZWVuIDI1NiBhbmQgMSBcdTAwM2NcdTAwM2MgMjAgKHRoYXQgaXMsIDEgTUIpLiBUaGVzZSB2YWx1ZXMgYXJlIGJlaW5nIGFwcGxpZWQgaW4gbXVsdGlwbGUgZmlsZXMgYW5kIGZ1bmN0aW9ucyBsaWtlIGBkcnJfY2hhbmdlX2NsYXNzYCwgYGV0c19xdWFudHVtX3BhcnNlYCwgYGZxX2luaXRgIGFuZCBgaGhmX2NoYW5nZWAuXG5cbk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBpcyB0aGVyZSBhbnkgY2hhbmNlIHRoaXMgaW50cm9kdWNlcyBvciBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcz8gSSBuZWVkIHRvIGFuYWx5emUgZm9yIHRob3NlIHJpc2tzLlxuXG4xLiAgKipLZXJuZWwgc3RydWN0cyB0byB1c2Vyc3BhY2U/KiogTm9wZSwgdGhpcyBkb2Vzbid0IGFkZCBvciBtb2RpZnkgYW55IHN0cnVjdHMgc2VudCB0byB1c2Vyc3BhY2UsIG5vciBkb2VzIGl0IGxlYXZlIGZpZWxkcyB1bmluaXRpYWxpemVkIHRoYXQgYXJlIHJldHVybmVkLlxuXG4yLiAgKipDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8qKiBObywgdGhlIGxvZ2ljIGxvb2tzIHNvdW5kLCBhbmQgdGhlcmUncyBubyBldmlkZW5jZSBvZiBkZWNpc2lvbnMgYmVpbmcgbWFkZSBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhbHVlcy5cblxuMy4gICoqQ29tcGxleCBkYXRhIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbj8qKiBOb3RoaW5nIG5ldyBpcyBiZWluZyBhbGxvY2F0ZWQsIHNvIHRoYXQncyBub3QgYSBjb25jZXJuLlxuXG40LiAgKipCb3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGE/KiogVGhpcyBpcyBzdHJpY3RseSBwYXJhbWV0ZXIgY2xhbXBpbmcsIHdoaWNoIGlzIHRoZSBvcHBvc2l0ZSBvZiB0aGUgaXNzdWUuXG5cblRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSBmb2N1c2VkIG9uIGFyaXRobWV0aWMgY2xhbXBpbmcgb2YgcGFyYW1ldGVycyBwYXNzZWQgdmlhIG5ldGxpbmssIHdoaWNoIGFyZSByZWFkIGZyb20gdGhlIGRldmljZSBNVFUuIFRoaXMgaXMgYWJvdXQgcHJldmVudGluZyBpbnRlZ2VyIG92ZXJmbG93cywgZGl2aXNpb24gYnkgemVybywgb3Igc2ltcGx5IGV4Y2Vzc2l2ZWx5IGxhcmdlL3NtYWxsIGBxdWFudHVtYCB2YWx1ZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHNjaGVkdWxpbmcgaXNzdWVzIChsaWtlIGhhbmdzIG9yIG92ZXJmbG93cywgbm90IHVuaW5pdGlhbGl6ZWQgbWVtb3J5KS5cblxuVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ3ZlIGRvdWJsZS1jaGVja2VkIHNvbWUga2V5IGZ1bmN0aW9ucyAoYGRycl9jaGFuZ2VfY2xhc3NgLCBgZXRzX3F1YW50dW1fcGFyc2VgLCBgZnFfaW5pdGAsIGFuZCBgaGhmX2NoYW5nZWApLiBJbiBlYWNoIGNhc2UsIGl0J3MgY2xlYXIgdGhhdCB0aGUgdmFyaWFibGVzIChsaWtlIGBxdWFudHVtYCkgYXJlICphbHdheXMqIGluaXRpYWxpemVkLCBlaXRoZXIgZGlyZWN0bHkgb3IgdGhyb3VnaCB0aGUgY2xhbXBpbmcgbWVjaGFuaXNtLiBXZSdyZSB0YWxraW5nIGFib3V0IHNpbXBsZSBzY2FsYXIgdmFsdWVzLCBub3QgY29tcGxleCBhbGxvY2F0aW9ucyBvciBtZW1vcnkgbWFuYWdlbWVudC5cblxuU28sIGFmdGVyIHRoaXMgZGVlcGVyIGRpdmUsIEknbSBjb25maWRlbnQuIE5lZWRzS01TQU4gPSBmYWxzZS4gSSdtIHJlYWR5IHRvIGNhbGwgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBhbmQgbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk1MCwiT3V0cHV0VG9rZW5zIjoxNDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTA6MDc6NDYuODYzNTczMTI5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGp1c3RzIGlucHV0IHZhbGlkYXRpb24gYW5kIGFyaXRobWV0aWMgYm91bmRzIG9uIHF1YW50dW0gYW5kIE1UVSBwYXJhbWV0ZXJzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgc2NoZWR1bGVycyAoRFJSLCBEdWFsUEkyLCBFVFMsIEZRLCBGUS1QSUUsIEhIRiwgUElFLCBTRlEpIHVzaW5nIGNsYW1waW5nIGZ1bmN0aW9ucyAoY2xhbXBfdCwgbWF4KS4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBtb2RpZnksIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnksIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCBvciBkYXRhIHRyYW5zZmVycyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZCwgYW5kIHN0YW5kYXJkIEtBU0FOL3Nhbml0aXplciBidWlsZHMgYXJlIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRqdXN0cyBpbnB1dCB2YWxpZGF0aW9uIGFuZCBhcml0aG1ldGljIGJvdW5kcyBvbiBxdWFudHVtIGFuZCBNVFUgcGFyYW1ldGVycyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIHNjaGVkdWxlcnMgKERSUiwgRHVhbFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgU0ZRKSB1c2luZyBjbGFtcGluZyBmdW5jdGlvbnMgKGNsYW1wX3QsIG1heCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgZGF0YSB0cmFuc2ZlcnMgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQsIGFuZCBzdGFuZGFyZCBLQVNBTi9zYW5pdGl6ZXIgYnVpbGRzIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbs782[1] Phase: Succeeded StartedAt: 2026-09-02 10:07:58 +0000 UTC FinishedAt: 2026-09-02 10:07:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-02 10:07:58 +0000 UTC FinishedAt: 2026-09-02 10:07:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2] Phase: Succeeded StartedAt: 2026-09-02 10:07:58 +0000 UTC FinishedAt: 2026-09-02 13:47:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-02 10:07:58 +0000 UTC FinishedAt: 2026-09-02 13:47:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-02 10:07:58 +0000 UTC FinishedAt: 2026-09-02 10:08:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-02 10:07:58 +0000 UTC FinishedAt: 2026-09-02 10:08:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbs782/series-workflowbs782-convert-artifact-4211511651/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-02 10:08:08 +0000 UTC FinishedAt: 2026-09-02 10:24:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-02 10:08:08 +0000 UTC FinishedAt: 2026-09-02 10:24:56 +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:*ab4c3b12-24bf-413a-b74c-84b28cd6cb03,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-workflowbs782/series-workflowbs782-convert-artifact-4211511651/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": "b289bb5c-92fb-4b3f-a83e-59cc5aec0b38", "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-workflowbs782/series-workflowbs782-build-action-3139611857/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-02 10:08:08 +0000 UTC FinishedAt: 2026-09-02 10:24:46 +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:*ab4c3b12-24bf-413a-b74c-84b28cd6cb03,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-workflowbs782/series-workflowbs782-convert-artifact-4211511651/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": "b289bb5c-92fb-4b3f-a83e-59cc5aec0b38", "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-workflowbs782/series-workflowbs782-build-action-3139611857/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-02 10:24:56 +0000 UTC FinishedAt: 2026-09-02 10:24:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-02 10:24:56 +0000 UTC FinishedAt: 2026-09-02 10:24:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-02 10:24:56 +0000 UTC FinishedAt: 2026-09-02 10:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-02 10:24:56 +0000 UTC FinishedAt: 2026-09-02 10:25:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbs782/series-workflowbs782-convert-artifact-2948439962/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-02 10:25:06 +0000 UTC FinishedAt: 2026-09-02 10:27:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-02 10:25:06 +0000 UTC FinishedAt: 2026-09-02 10:26:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b289bb5c-92fb-4b3f-a83e-59cc5aec0b38,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-workflowbs782/series-workflowbs782-build-action-3139611857/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-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-02 10:27:05 +0000 UTC FinishedAt: 2026-09-02 10:27:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-02 10:27:05 +0000 UTC FinishedAt: 2026-09-02 10:27:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-02 10:27:05 +0000 UTC FinishedAt: 2026-09-02 10:43:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-02 10:27:05 +0000 UTC FinishedAt: 2026-09-02 10:43:24 +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:*ab4c3b12-24bf-413a-b74c-84b28cd6cb03,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-workflowbs782/series-workflowbs782-convert-artifact-2948439962/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": "7506925e-e09e-4f9c-8537-105ac5bbf380", "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-workflowbs782/series-workflowbs782-build-action-3326430078/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-02 10:27:05 +0000 UTC FinishedAt: 2026-09-02 10:43:14 +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:*ab4c3b12-24bf-413a-b74c-84b28cd6cb03,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-workflowbs782/series-workflowbs782-convert-artifact-2948439962/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": "7506925e-e09e-4f9c-8537-105ac5bbf380", "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-workflowbs782/series-workflowbs782-build-action-3326430078/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-02 10:43:24 +0000 UTC FinishedAt: 2026-09-02 10:43:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-02 10:43:24 +0000 UTC FinishedAt: 2026-09-02 10:43:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-02 10:43:24 +0000 UTC FinishedAt: 2026-09-02 10:45:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-02 10:43:24 +0000 UTC FinishedAt: 2026-09-02 10:45:08 +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:*7506925e-e09e-4f9c-8537-105ac5bbf380,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-workflowbs782/series-workflowbs782-build-action-3326430078/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-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-02 10:45:18 +0000 UTC FinishedAt: 2026-09-02 13:47:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-02 10:45:18 +0000 UTC FinishedAt: 2026-09-02 13:47:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"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:*b289bb5c-92fb-4b3f-a83e-59cc5aec0b38,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7506925e-e09e-4f9c-8537-105ac5bbf380,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-workflowbs782/series-workflowbs782-build-action-3139611857/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-workflowbs782/series-workflowbs782-build-action-3326430078/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-02 10:45:18 +0000 UTC FinishedAt: 2026-09-02 10:45:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-02 10:45:18 +0000 UTC FinishedAt: 2026-09-02 10:45:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"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-workflowbs782/series-workflowbs782-convert-artifact-3077284687/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-02 10:45:18 +0000 UTC FinishedAt: 2026-09-02 10:45:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-02 10:45:18 +0000 UTC FinishedAt: 2026-09-02 10:45:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-02 10:45:18 +0000 UTC FinishedAt: 2026-09-02 10:45:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-02 10:45:28 +0000 UTC FinishedAt: 2026-09-02 13:47:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs782[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pie_drop_early","drr_change_class","dualpi2_change","dualpi2_init","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","pie_change","sfq_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"70f3995830d3f1e79faa14eb0605914f778feca9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"147fc5e1-50e1-448a-98c7-ef525337ee71","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-02 10:45:28 +0000 UTC FinishedAt: 2026-09-02 13:47:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b289bb5c-92fb-4b3f-a83e-59cc5aec0b38,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7506925e-e09e-4f9c-8537-105ac5bbf380,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-workflowbs782/series-workflowbs782-build-action-3139611857/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-workflowbs782/series-workflowbs782-build-action-3326430078/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-workflowbs782/series-workflowbs782-convert-artifact-3077284687/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,}