Name: series-workflowfxvzj Phase: Succeeded StartedAt: 2026-07-08 09:09:08 +0000 UTC FinishedAt: 2026-07-08 14:02:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[0] Phase: Succeeded StartedAt: 2026-07-08 09:09:08 +0000 UTC FinishedAt: 2026-07-08 09:28:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 09:09:08 +0000 UTC FinishedAt: 2026-07-08 09:28:39 +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": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH", "PSAMPLE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH", "PSAMPLE" ], "series_id": "c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "do_output", "execute_psample", "queue_userspace_packet", "ovs_packet_cmd_execute" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDssCiAgICAmIzM0O1BTQU1QTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19vdXRwdXQmIzM0OywKICAgICYjMzQ7ZXhlY3V0ZV9wc2FtcGxlJiMzNDssCiAgICAmIzM0O3F1ZXVlX3VzZXJzcGFjZV9wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyBpbiBPcGVuIHZTd2l0Y2gsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgcGFja2V0IHRydW5jYXRpb24gKE9WU19BQ1RJT05fQVRUUl9UUlVOQykgYW5kIHRoZSBjdXRsZW4gZmllbGQgYXJlIGhhbmRsZWQgZHVyaW5nIGFjdGlvbiBleGVjdXRpb24sIG91dHB1dCwgYW5kIHVwY2FsbHMgdG8gdXNlcnNwYWNlLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBuZXR3b3JrIGRhdGFwYXRoIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjYxMDdhM2MwODRlYzljMjVlYTRlYzE5NDhlZDcwMmFkNzVmYTg1NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDk6MjU6NTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbmluZGV4IDE0MDM4OGExOGFlMDQyLi41MTNmY2E2YThlOGE0OCAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbkBAIC04MzcsMTIgJiM0Mzs4MzcsOCBAQCBzdGF0aWMgdm9pZCBkb19vdXRwdXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG91dF9wb3J0LFxuIFx0XHR1MTYgbXJ1ID0gT1ZTX0NCKHNrYiktXHUwMDNlbXJ1O1xuIFx0XHR1MzIgY3V0bGVuID0gT1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuO1xuIFxuLVx0XHRpZiAodW5saWtlbHkoY3V0bGVuIFx1MDAzZSAwKSkge1xuLVx0XHRcdGlmIChza2ItXHUwMDNlbGVuIC0gY3V0bGVuIFx1MDAzZSBvdnNfbWFjX2hlYWRlcl9sZW4oa2V5KSlcbi1cdFx0XHRcdHBza2JfdHJpbShza2IsIHNrYi1cdTAwM2VsZW4gLSBjdXRsZW4pO1xuLVx0XHRcdGVsc2Vcbi1cdFx0XHRcdHBza2JfdHJpbShza2IsIG92c19tYWNfaGVhZGVyX2xlbihrZXkpKTtcbi1cdFx0fVxuJiM0MztcdFx0aWYgKHVubGlrZWx5KGN1dGxlbiBcdTAwM2Mgc2tiLVx1MDAzZWxlbikpXG4mIzQzO1x0XHRcdHBza2JfdHJpbShza2IsIG1heChjdXRsZW4sIG92c19tYWNfaGVhZGVyX2xlbihrZXkpKSk7XG4gXG4gXHRcdGlmIChsaWtlbHkoIW1ydSB8fFxuIFx0XHQgICAgICAgICAgIChza2ItXHUwMDNlbGVuIFx1MDAzYz0gbXJ1ICYjNDM7IHZwb3J0LVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pKSkge1xuQEAgLTEyMzQsNyAmIzQzOzEyMzAsNyBAQCBzdGF0aWMgdm9pZCBleGVjdXRlX3BzYW1wbGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdHBzYW1wbGVfZ3JvdXAubmV0ID0gb3ZzX2RwX2dldF9uZXQoZHApO1xuIFx0bWQuaW5faWZpbmRleCA9IE9WU19DQihza2IpLVx1MDAzZWlucHV0X3Zwb3J0LVx1MDAzZWRldi1cdTAwM2VpZmluZGV4O1xuLVx0bWQudHJ1bmNfc2l6ZSA9IHNrYi1cdTAwM2VsZW4gLSBPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW47XG4mIzQzO1x0bWQudHJ1bmNfc2l6ZSA9IG1pbihza2ItXHUwMDNlbGVuLCBPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW4pO1xuIFx0bWQucmF0ZV9hc19wcm9iYWJpbGl0eSA9IDE7XG4gXG4gXHRyYXRlID0gT1ZTX0NCKHNrYiktXHUwMDNlcHJvYmFiaWxpdHkgPyBPVlNfQ0Ioc2tiKS1cdTAwM2Vwcm9iYWJpbGl0eSA6IFUzMl9NQVg7XG5AQCAtMTI4NCwyMiAmIzQzOzEyODAsMjEgQEAgc3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRjbG9uZSA9IHNrYl9jbG9uZShza2IsIEdGUF9BVE9NSUMpO1xuIFx0XHRcdGlmIChjbG9uZSlcbiBcdFx0XHRcdGRvX291dHB1dChkcCwgY2xvbmUsIHBvcnQsIGtleSk7XG4tXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gMDtcbiYjNDM7XHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFxuIFx0XHRjYXNlIE9WU19BQ1RJT05fQVRUUl9UUlVOQzoge1xuIFx0XHRcdHN0cnVjdCBvdnNfYWN0aW9uX3RydW5jICp0cnVuYyA9IG5sYV9kYXRhKGEpO1xuIFxuLVx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzZSB0cnVuYy1cdTAwM2VtYXhfbGVuKVxuLVx0XHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gc2tiLVx1MDAzZWxlbiAtIHRydW5jLVx1MDAzZW1heF9sZW47XG4mIzQzO1x0XHRcdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IHRydW5jLVx1MDAzZW1heF9sZW47XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcbiBcdFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfVVNFUlNQQUNFOlxuIFx0XHRcdG91dHB1dF91c2Vyc3BhY2UoZHAsIHNrYiwga2V5LCBhLCBhdHRyLFxuIFx0XHRcdFx0XHRcdCAgICAgbGVuLCBPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW4pO1xuLVx0XHRcdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IDA7XG4mIzQzO1x0XHRcdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IFUzMl9NQVg7XG4gXHRcdFx0aWYgKG5sYV9pc19sYXN0KGEsIHJlbSkpIHtcbiBcdFx0XHRcdGNvbnN1bWVfc2tiKHNrYik7XG4gXHRcdFx0XHRyZXR1cm4gMDtcbkBAIC0xNDUzLDcgJiM0MzsxNDQ4LDcgQEAgc3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfUFNBTVBMRTpcbiBcdFx0XHRleGVjdXRlX3BzYW1wbGUoZHAsIHNrYiwgYSk7XG4tXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gMDtcbiYjNDM7XHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcbiBcdFx0XHRpZiAobmxhX2lzX2xhc3QoYSwgcmVtKSkge1xuIFx0XHRcdFx0Y29uc3VtZV9za2Ioc2tiKTtcbiBcdFx0XHRcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNcbmluZGV4IGYwMTY0ODE3ZDliNzIzLi5lYWYzMzJiMTU2ZDczMSAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguY1xuQEAgLTI3Niw3ICYjNDM7Mjc2LDcgQEAgdm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXG4gXHRcdFx0dXBjYWxsLnBvcnRpZCA9IG92c192cG9ydF9maW5kX3VwY2FsbF9wb3J0aWQocCwgc2tiKTtcbiBcbiBcdFx0dXBjYWxsLm1ydSA9IE9WU19DQihza2IpLVx1MDAzZW1ydTtcbi1cdFx0ZXJyb3IgPSBvdnNfZHBfdXBjYWxsKGRwLCBza2IsIGtleSwgXHUwMDI2dXBjYWxsLCAwKTtcbiYjNDM7XHRcdGVycm9yID0gb3ZzX2RwX3VwY2FsbChkcCwgc2tiLCBrZXksIFx1MDAyNnVwY2FsbCwgVTMyX01BWCk7XG4gXHRcdHN3aXRjaCAoZXJyb3IpIHtcbiBcdFx0Y2FzZSAwOlxuIFx0XHRjYXNlIC1FQUdBSU46XG5AQCAtNDU3LDcgJiM0Mzs0NTcsOCBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCBza19idWZmICpuc2tiID0gTlVMTDtcbiBcdHN0cnVjdCBza19idWZmICp1c2VyX3NrYiA9IE5VTEw7IC8qIHRvIGJlIHF1ZXVlZCB0byB1c2Vyc3BhY2UgKi9cbiBcdHN0cnVjdCBubGF0dHIgKm5sYTtcbi1cdHNpemVfdCBsZW47XG4mIzQzO1x0c2l6ZV90IG1zZ19zaXplO1xuJiM0MztcdHNpemVfdCBza2JfbGVuO1xuIFx0dW5zaWduZWQgaW50IGhsZW47XG4gXHRpbnQgZXJyLCBkcF9pZmluZGV4O1xuIFx0dTY0IGhhc2g7XG5AQCAtNDc4LDcgJiM0Mzs0NzksOCBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0c2tiID0gbnNrYjtcbiBcdH1cbiBcbi1cdGlmIChubGFfYXR0cl9zaXplKHNrYi1cdTAwM2VsZW4pIFx1MDAzZSBVU0hSVF9NQVgpIHtcbiYjNDM7XHRza2JfbGVuID0gbWluKHNrYi1cdTAwM2VsZW4sIGN1dGxlbik7XG4mIzQzO1x0aWYgKG5sYV9hdHRyX3NpemUoc2tiX2xlbikgXHUwMDNlIFVTSFJUX01BWCkge1xuIFx0XHRlcnIgPSAtRUZCSUc7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuQEAgLTQ5MywxMyAmIzQzOzQ5NSwxMyBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIHBhZGRpbmcgbG9naWMuIE9ubHkgcGVyZm9ybSB6ZXJvY29weSBpZiBwYWRkaW5nIGlzIG5vdCByZXF1aXJlZC5cbiBcdCAqL1xuIFx0aWYgKGRwLVx1MDAzZXVzZXJfZmVhdHVyZXMgXHUwMDI2IE9WU19EUF9GX1VOQUxJR05FRClcbi1cdFx0aGxlbiA9IHNrYl96ZXJvY29weV9oZWFkbGVuKHNrYik7XG4mIzQzO1x0XHRobGVuID0gbWluKHNrYl96ZXJvY29weV9oZWFkbGVuKHNrYiksIGN1dGxlbik7XG4gXHRlbHNlXG4tXHRcdGhsZW4gPSBza2ItXHUwMDNlbGVuO1xuJiM0MztcdFx0aGxlbiA9IHNrYl9sZW47XG4gXG4tXHRsZW4gPSB1cGNhbGxfbXNnX3NpemUodXBjYWxsX2luZm8sIGhsZW4gLSBjdXRsZW4sXG4tXHRcdFx0ICAgICAgT1ZTX0NCKHNrYiktXHUwMDNlYWN0c19vcmlnbGVuKTtcbi1cdHVzZXJfc2tiID0gZ2VubG1zZ19uZXcobGVuLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRtc2dfc2l6ZSA9IHVwY2FsbF9tc2dfc2l6ZSh1cGNhbGxfaW5mbywgaGxlbixcbiYjNDM7XHRcdFx0XHQgICBPVlNfQ0Ioc2tiKS1cdTAwM2VhY3RzX29yaWdsZW4pO1xuJiM0MztcdHVzZXJfc2tiID0gZ2VubG1zZ19uZXcobXNnX3NpemUsIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCF1c2VyX3NrYikge1xuIFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG91dDtcbkBAIC01NjAsNyAmIzQzOzU2Miw3IEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0fVxuIFxuIFx0LyogQWRkIE9WU19QQUNLRVRfQVRUUl9MRU4gd2hlbiBwYWNrZXQgaXMgdHJ1bmNhdGVkICovXG4tXHRpZiAoY3V0bGVuIFx1MDAzZSAwIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmIChza2JfbGVuIFx1MDAzYyBza2ItXHUwMDNlbGVuIFx1MDAyNlx1MDAyNlxuIFx0ICAgIG5sYV9wdXRfdTMyKHVzZXJfc2tiLCBPVlNfUEFDS0VUX0FUVFJfTEVOLCBza2ItXHUwMDNlbGVuKSkge1xuIFx0XHRlcnIgPSAtRU5PQlVGUztcbiBcdFx0Z290byBvdXQ7XG5AQCAtNTg1LDkgJiM0Mzs1ODcsOSBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZXJyID0gLUVOT0JVRlM7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuLVx0bmxhLVx1MDAzZW5sYV9sZW4gPSBubGFfYXR0cl9zaXplKHNrYi1cdTAwM2VsZW4gLSBjdXRsZW4pO1xuJiM0MztcdG5sYS1cdTAwM2VubGFfbGVuID0gbmxhX2F0dHJfc2l6ZShza2JfbGVuKTtcbiBcbi1cdGVyciA9IHNrYl96ZXJvY29weSh1c2VyX3NrYiwgc2tiLCBza2ItXHUwMDNlbGVuIC0gY3V0bGVuLCBobGVuKTtcbiYjNDM7XHRlcnIgPSBza2JfemVyb2NvcHkodXNlcl9za2IsIHNrYiwgc2tiX2xlbiwgaGxlbik7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIG91dDtcbiBcbkBAIC02NDQsNiAmIzQzOzY0Niw3IEBAIHN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRwYWNrZXQtXHUwMDNlaWdub3JlX2RmID0gMTtcbiBcdH1cbiBcdE9WU19DQihwYWNrZXQpLVx1MDAzZW1ydSA9IG1ydTtcbiYjNDM7XHRPVlNfQ0IocGFja2V0KS1cdTAwM2VjdXRsZW4gPSBVMzJfTUFYO1xuIFxuIFx0aWYgKGFbT1ZTX1BBQ0tFVF9BVFRSX0hBU0hdKSB7XG4gXHRcdGhhc2ggPSBubGFfZ2V0X3U2NChhW09WU19QQUNLRVRfQVRUUl9IQVNIXSk7XG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmggYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaFxuaW5kZXggZGIwYzNlNjlkNjZjYWMuLjY5NjY0MGU4OGZhN2UzIDEwMDY0NFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oXG5AQCAtMTE4LDcgJiM0MzsxMTgsNyBAQCBzdHJ1Y3QgZGF0YXBhdGgge1xuICAqIEBtcnU6IFRoZSBtYXhpbXVtIHJlY2VpdmVkIGZyYWdlbWVudCBzaXplOyAwIGlmIHRoZSBwYWNrZXQgaXMgbm90XG4gICogZnJhZ21lbnRlZC5cbiAgKiBAYWN0c19vcmlnbGVuOiBUaGUgbmV0bGluayBzaXplIG9mIHRoZSBmbG93IGFjdGlvbnMgYXBwbGllZCB0byB0aGlzIHNrYi5cbi0gKiBAY3V0bGVuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHBhY2tldCBlbmQgdG8gYmUgcmVtb3ZlZC5cbiYjNDM7ICogQGN1dGxlbjogVGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgcGFja2V0IHRvIHByZXNlcnZlIG9uIG91dHB1dC5cbiAgKiBAcHJvYmFiaWxpdHk6IFRoZSBzYW1wbGluZyBwcm9iYWJpbGl0eSB0aGF0IHdhcyBhcHBsaWVkIHRvIHRoaXMgc2tiOyAwIG1lYW5zXG4gICogbm8gc2FtcGxpbmcgaGFzIG9jY3VycmVkOyBVMzJfTUFYIG1lYW5zIDEwMCUgcHJvYmFiaWxpdHkuXG4gICogQHVwY2FsbF9waWQ6IE5ldGxpbmsgc29ja2V0IFBJRCB0byB1c2UgZm9yIHNlbmRpbmcgdGhpcyBwYWNrZXQgdG8gdXNlcnNwYWNlO1xuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LmNcbmluZGV4IDU2YjJlMmQxYTc0OWY4Li4xMjc0MTQ4NWM5MzkzZCAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuY1xuQEAgLTUwMiw3ICYjNDM7NTAyLDcgQEAgaW50IG92c192cG9ydF9yZWNlaXZlKHN0cnVjdCB2cG9ydCAqdnBvcnQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRPVlNfQ0Ioc2tiKS1cdTAwM2VpbnB1dF92cG9ydCA9IHZwb3J0O1xuIFx0T1ZTX0NCKHNrYiktXHUwMDNlbXJ1ID0gMDtcbi1cdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IDA7XG4mIzQzO1x0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcbiBcdE9WU19DQihza2IpLVx1MDAzZXByb2JhYmlsaXR5ID0gMDtcbiBcdE9WU19DQihza2IpLVx1MDAzZXVwY2FsbF9waWQgPSAwO1xuIFx0aWYgKHVubGlrZWx5KGRldl9uZXQoc2tiLVx1MDAzZWRldikgIT0gb3ZzX2RwX2dldF9uZXQodnBvcnQtXHUwMDNlZHApKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDssCiAgICAmIzM0O1BTQU1QTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19vdXRwdXQmIzM0OywKICAgICYjMzQ7ZXhlY3V0ZV9wc2FtcGxlJiMzNDssCiAgICAmIzM0O3F1ZXVlX3VzZXJzcGFjZV9wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyBpbiBPcGVuIHZTd2l0Y2gsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgcGFja2V0IHRydW5jYXRpb24gKE9WU19BQ1RJT05fQVRUUl9UUlVOQykgYW5kIHRoZSBjdXRsZW4gZmllbGQgYXJlIGhhbmRsZWQgZHVyaW5nIGFjdGlvbiBleGVjdXRpb24sIG91dHB1dCwgYW5kIHVwY2FsbHMgdG8gdXNlcnNwYWNlLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBuZXR3b3JrIGRhdGFwYXRoIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNjEwN2EzYzA4NGVjOWMyNWVhNGVjMTk0OGVkNzAyYWQ3NWZhODU1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAwOToyNTo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCmluZGV4IDE0MDM4OGExOGFlMDQyLi41MTNmY2E2YThlOGE0OCAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCkBAIC04MzcsMTIgJiM0Mzs4MzcsOCBAQCBzdGF0aWMgdm9pZCBkb19vdXRwdXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG91dF9wb3J0LAogCQl1MTYgbXJ1ID0gT1ZTX0NCKHNrYiktJmd0O21ydTsKIAkJdTMyIGN1dGxlbiA9IE9WU19DQihza2IpLSZndDtjdXRsZW47CiAKLQkJaWYgKHVubGlrZWx5KGN1dGxlbiAmZ3Q7IDApKSB7Ci0JCQlpZiAoc2tiLSZndDtsZW4gLSBjdXRsZW4gJmd0OyBvdnNfbWFjX2hlYWRlcl9sZW4oa2V5KSkKLQkJCQlwc2tiX3RyaW0oc2tiLCBza2ItJmd0O2xlbiAtIGN1dGxlbik7Ci0JCQllbHNlCi0JCQkJcHNrYl90cmltKHNrYiwgb3ZzX21hY19oZWFkZXJfbGVuKGtleSkpOwotCQl9CiYjNDM7CQlpZiAodW5saWtlbHkoY3V0bGVuICZsdDsgc2tiLSZndDtsZW4pKQomIzQzOwkJCXBza2JfdHJpbShza2IsIG1heChjdXRsZW4sIG92c19tYWNfaGVhZGVyX2xlbihrZXkpKSk7CiAKIAkJaWYgKGxpa2VseSghbXJ1IHx8CiAJCSAgICAgICAgICAgKHNrYi0mZ3Q7bGVuICZsdDs9IG1ydSAmIzQzOyB2cG9ydC0mZ3Q7ZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pKSkgewpAQCAtMTIzNCw3ICYjNDM7MTIzMCw3IEBAIHN0YXRpYyB2b2lkIGV4ZWN1dGVfcHNhbXBsZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJcHNhbXBsZV9ncm91cC5uZXQgPSBvdnNfZHBfZ2V0X25ldChkcCk7CiAJbWQuaW5faWZpbmRleCA9IE9WU19DQihza2IpLSZndDtpbnB1dF92cG9ydC0mZ3Q7ZGV2LSZndDtpZmluZGV4OwotCW1kLnRydW5jX3NpemUgPSBza2ItJmd0O2xlbiAtIE9WU19DQihza2IpLSZndDtjdXRsZW47CiYjNDM7CW1kLnRydW5jX3NpemUgPSBtaW4oc2tiLSZndDtsZW4sIE9WU19DQihza2IpLSZndDtjdXRsZW4pOwogCW1kLnJhdGVfYXNfcHJvYmFiaWxpdHkgPSAxOwogCiAJcmF0ZSA9IE9WU19DQihza2IpLSZndDtwcm9iYWJpbGl0eSA/IE9WU19DQihza2IpLSZndDtwcm9iYWJpbGl0eSA6IFUzMl9NQVg7CkBAIC0xMjg0LDIyICYjNDM7MTI4MCwyMSBAQCBzdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJY2xvbmUgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTsKIAkJCWlmIChjbG9uZSkKIAkJCQlkb19vdXRwdXQoZHAsIGNsb25lLCBwb3J0LCBrZXkpOwotCQkJT1ZTX0NCKHNrYiktJmd0O2N1dGxlbiA9IDA7CiYjNDM7CQkJT1ZTX0NCKHNrYiktJmd0O2N1dGxlbiA9IFUzMl9NQVg7CiAJCQlicmVhazsKIAkJfQogCiAJCWNhc2UgT1ZTX0FDVElPTl9BVFRSX1RSVU5DOiB7CiAJCQlzdHJ1Y3Qgb3ZzX2FjdGlvbl90cnVuYyAqdHJ1bmMgPSBubGFfZGF0YShhKTsKIAotCQkJaWYgKHNrYi0mZ3Q7bGVuICZndDsgdHJ1bmMtJmd0O21heF9sZW4pCi0JCQkJT1ZTX0NCKHNrYiktJmd0O2N1dGxlbiA9IHNrYi0mZ3Q7bGVuIC0gdHJ1bmMtJmd0O21heF9sZW47CiYjNDM7CQkJT1ZTX0NCKHNrYiktJmd0O2N1dGxlbiA9IHRydW5jLSZndDttYXhfbGVuOwogCQkJYnJlYWs7CiAJCX0KIAogCQljYXNlIE9WU19BQ1RJT05fQVRUUl9VU0VSU1BBQ0U6CiAJCQlvdXRwdXRfdXNlcnNwYWNlKGRwLCBza2IsIGtleSwgYSwgYXR0ciwKIAkJCQkJCSAgICAgbGVuLCBPVlNfQ0Ioc2tiKS0mZ3Q7Y3V0bGVuKTsKLQkJCU9WU19DQihza2IpLSZndDtjdXRsZW4gPSAwOwomIzQzOwkJCU9WU19DQihza2IpLSZndDtjdXRsZW4gPSBVMzJfTUFYOwogCQkJaWYgKG5sYV9pc19sYXN0KGEsIHJlbSkpIHsKIAkJCQljb25zdW1lX3NrYihza2IpOwogCQkJCXJldHVybiAwOwpAQCAtMTQ1Myw3ICYjNDM7MTQ0OCw3IEBAIHN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsCiAKIAkJY2FzZSBPVlNfQUNUSU9OX0FUVFJfUFNBTVBMRToKIAkJCWV4ZWN1dGVfcHNhbXBsZShkcCwgc2tiLCBhKTsKLQkJCU9WU19DQihza2IpLSZndDtjdXRsZW4gPSAwOwomIzQzOwkJCU9WU19DQihza2IpLSZndDtjdXRsZW4gPSBVMzJfTUFYOwogCQkJaWYgKG5sYV9pc19sYXN0KGEsIHJlbSkpIHsKIAkJCQljb25zdW1lX3NrYihza2IpOwogCQkJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYwppbmRleCBmMDE2NDgxN2Q5YjcyMy4uZWFmMzMyYjE1NmQ3MzEgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jCkBAIC0yNzYsNyAmIzQzOzI3Niw3IEBAIHZvaWQgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KQogCQkJdXBjYWxsLnBvcnRpZCA9IG92c192cG9ydF9maW5kX3VwY2FsbF9wb3J0aWQocCwgc2tiKTsKIAogCQl1cGNhbGwubXJ1ID0gT1ZTX0NCKHNrYiktJmd0O21ydTsKLQkJZXJyb3IgPSBvdnNfZHBfdXBjYWxsKGRwLCBza2IsIGtleSwgJmFtcDt1cGNhbGwsIDApOwomIzQzOwkJZXJyb3IgPSBvdnNfZHBfdXBjYWxsKGRwLCBza2IsIGtleSwgJmFtcDt1cGNhbGwsIFUzMl9NQVgpOwogCQlzd2l0Y2ggKGVycm9yKSB7CiAJCWNhc2UgMDoKIAkJY2FzZSAtRUFHQUlOOgpAQCAtNDU3LDcgJiM0Mzs0NTcsOCBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IE5VTEw7CiAJc3RydWN0IHNrX2J1ZmYgKnVzZXJfc2tiID0gTlVMTDsgLyogdG8gYmUgcXVldWVkIHRvIHVzZXJzcGFjZSAqLwogCXN0cnVjdCBubGF0dHIgKm5sYTsKLQlzaXplX3QgbGVuOwomIzQzOwlzaXplX3QgbXNnX3NpemU7CiYjNDM7CXNpemVfdCBza2JfbGVuOwogCXVuc2lnbmVkIGludCBobGVuOwogCWludCBlcnIsIGRwX2lmaW5kZXg7CiAJdTY0IGhhc2g7CkBAIC00NzgsNyAmIzQzOzQ3OSw4IEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlza2IgPSBuc2tiOwogCX0KIAotCWlmIChubGFfYXR0cl9zaXplKHNrYi0mZ3Q7bGVuKSAmZ3Q7IFVTSFJUX01BWCkgewomIzQzOwlza2JfbGVuID0gbWluKHNrYi0mZ3Q7bGVuLCBjdXRsZW4pOwomIzQzOwlpZiAobmxhX2F0dHJfc2l6ZShza2JfbGVuKSAmZ3Q7IFVTSFJUX01BWCkgewogCQllcnIgPSAtRUZCSUc7CiAJCWdvdG8gb3V0OwogCX0KQEAgLTQ5MywxMyAmIzQzOzQ5NSwxMyBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiBwYWRkaW5nIGxvZ2ljLiBPbmx5IHBlcmZvcm0gemVyb2NvcHkgaWYgcGFkZGluZyBpcyBub3QgcmVxdWlyZWQuCiAJICovCiAJaWYgKGRwLSZndDt1c2VyX2ZlYXR1cmVzICZhbXA7IE9WU19EUF9GX1VOQUxJR05FRCkKLQkJaGxlbiA9IHNrYl96ZXJvY29weV9oZWFkbGVuKHNrYik7CiYjNDM7CQlobGVuID0gbWluKHNrYl96ZXJvY29weV9oZWFkbGVuKHNrYiksIGN1dGxlbik7CiAJZWxzZQotCQlobGVuID0gc2tiLSZndDtsZW47CiYjNDM7CQlobGVuID0gc2tiX2xlbjsKIAotCWxlbiA9IHVwY2FsbF9tc2dfc2l6ZSh1cGNhbGxfaW5mbywgaGxlbiAtIGN1dGxlbiwKLQkJCSAgICAgIE9WU19DQihza2IpLSZndDthY3RzX29yaWdsZW4pOwotCXVzZXJfc2tiID0gZ2VubG1zZ19uZXcobGVuLCBHRlBfQVRPTUlDKTsKJiM0MzsJbXNnX3NpemUgPSB1cGNhbGxfbXNnX3NpemUodXBjYWxsX2luZm8sIGhsZW4sCiYjNDM7CQkJCSAgIE9WU19DQihza2IpLSZndDthY3RzX29yaWdsZW4pOwomIzQzOwl1c2VyX3NrYiA9IGdlbmxtc2dfbmV3KG1zZ19zaXplLCBHRlBfQVRPTUlDKTsKIAlpZiAoIXVzZXJfc2tiKSB7CiAJCWVyciA9IC1FTk9NRU07CiAJCWdvdG8gb3V0OwpAQCAtNTYwLDcgJiM0Mzs1NjIsNyBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl9CiAKIAkvKiBBZGQgT1ZTX1BBQ0tFVF9BVFRSX0xFTiB3aGVuIHBhY2tldCBpcyB0cnVuY2F0ZWQgKi8KLQlpZiAoY3V0bGVuICZndDsgMCAmYW1wOyZhbXA7CiYjNDM7CWlmIChza2JfbGVuICZsdDsgc2tiLSZndDtsZW4gJmFtcDsmYW1wOwogCSAgICBubGFfcHV0X3UzMih1c2VyX3NrYiwgT1ZTX1BBQ0tFVF9BVFRSX0xFTiwgc2tiLSZndDtsZW4pKSB7CiAJCWVyciA9IC1FTk9CVUZTOwogCQlnb3RvIG91dDsKQEAgLTU4NSw5ICYjNDM7NTg3LDkgQEAgc3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsCiAJCWVyciA9IC1FTk9CVUZTOwogCQlnb3RvIG91dDsKIAl9Ci0JbmxhLSZndDtubGFfbGVuID0gbmxhX2F0dHJfc2l6ZShza2ItJmd0O2xlbiAtIGN1dGxlbik7CiYjNDM7CW5sYS0mZ3Q7bmxhX2xlbiA9IG5sYV9hdHRyX3NpemUoc2tiX2xlbik7CiAKLQllcnIgPSBza2JfemVyb2NvcHkodXNlcl9za2IsIHNrYiwgc2tiLSZndDtsZW4gLSBjdXRsZW4sIGhsZW4pOwomIzQzOwllcnIgPSBza2JfemVyb2NvcHkodXNlcl9za2IsIHNrYiwgc2tiX2xlbiwgaGxlbik7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CiAKQEAgLTY0NCw2ICYjNDM7NjQ2LDcgQEAgc3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJCXBhY2tldC0mZ3Q7aWdub3JlX2RmID0gMTsKIAl9CiAJT1ZTX0NCKHBhY2tldCktJmd0O21ydSA9IG1ydTsKJiM0MzsJT1ZTX0NCKHBhY2tldCktJmd0O2N1dGxlbiA9IFUzMl9NQVg7CiAKIAlpZiAoYVtPVlNfUEFDS0VUX0FUVFJfSEFTSF0pIHsKIAkJaGFzaCA9IG5sYV9nZXRfdTY0KGFbT1ZTX1BBQ0tFVF9BVFRSX0hBU0hdKTsKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgKaW5kZXggZGIwYzNlNjlkNjZjYWMuLjY5NjY0MGU4OGZhN2UzIDEwMDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaApAQCAtMTE4LDcgJiM0MzsxMTgsNyBAQCBzdHJ1Y3QgZGF0YXBhdGggewogICogQG1ydTogVGhlIG1heGltdW0gcmVjZWl2ZWQgZnJhZ2VtZW50IHNpemU7IDAgaWYgdGhlIHBhY2tldCBpcyBub3QKICAqIGZyYWdtZW50ZWQuCiAgKiBAYWN0c19vcmlnbGVuOiBUaGUgbmV0bGluayBzaXplIG9mIHRoZSBmbG93IGFjdGlvbnMgYXBwbGllZCB0byB0aGlzIHNrYi4KLSAqIEBjdXRsZW46IFRoZSBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgcGFja2V0IGVuZCB0byBiZSByZW1vdmVkLgomIzQzOyAqIEBjdXRsZW46IFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHBhY2tldCB0byBwcmVzZXJ2ZSBvbiBvdXRwdXQuCiAgKiBAcHJvYmFiaWxpdHk6IFRoZSBzYW1wbGluZyBwcm9iYWJpbGl0eSB0aGF0IHdhcyBhcHBsaWVkIHRvIHRoaXMgc2tiOyAwIG1lYW5zCiAgKiBubyBzYW1wbGluZyBoYXMgb2NjdXJyZWQ7IFUzMl9NQVggbWVhbnMgMTAwJSBwcm9iYWJpbGl0eS4KICAqIEB1cGNhbGxfcGlkOiBOZXRsaW5rIHNvY2tldCBQSUQgdG8gdXNlIGZvciBzZW5kaW5nIHRoaXMgcGFja2V0IHRvIHVzZXJzcGFjZTsKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LmMKaW5kZXggNTZiMmUyZDFhNzQ5ZjguLjEyNzQxNDg1YzkzOTNkIDEwMDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYwpAQCAtNTAyLDcgJiM0Mzs1MDIsNyBAQCBpbnQgb3ZzX3Zwb3J0X3JlY2VpdmUoc3RydWN0IHZwb3J0ICp2cG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCU9WU19DQihza2IpLSZndDtpbnB1dF92cG9ydCA9IHZwb3J0OwogCU9WU19DQihza2IpLSZndDttcnUgPSAwOwotCU9WU19DQihza2IpLSZndDtjdXRsZW4gPSAwOwomIzQzOwlPVlNfQ0Ioc2tiKS0mZ3Q7Y3V0bGVuID0gVTMyX01BWDsKIAlPVlNfQ0Ioc2tiKS0mZ3Q7cHJvYmFiaWxpdHkgPSAwOwogCU9WU19DQihza2IpLSZndDt1cGNhbGxfcGlkID0gMDsKIAlpZiAodW5saWtlbHkoZGV2X25ldChza2ItJmd0O2RldikgIT0gb3ZzX2RwX2dldF9uZXQodnBvcnQtJmd0O2RwKSkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ5NgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgTGludXgga2VybmVsIHRoYXQmIzM5O3MgYmVlbiBhcHBsaWVkLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtYWtpbmcgYSBzaWduaWZpY2FudCBzaGlmdCBpbiBPcGVuIHZTd2l0Y2gmIzM5O3MgY29yZSBwYWNrZXQgaGFuZGxpbmcuIEl0JiMzOTtzIHRvdWNoaW5nIGBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jYCwgYG5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jYCwgYG5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oYCwgYW5kIGBuZXQvb3BlbnZzd2l0Y2gvdnBvcnQuY2AuIFRoZSBjb3JlIGNoYW5nZSBpcyB0aGUgcmVkZWZpbml0aW9uIG9mIGBPVlNfQ0Ioc2tiKS0mZ3Q7Y3V0bGVuYCwgbW92aW5nIGl0IGZyb20gJiMzNDtieXRlcyB0byByZW1vdmUmIzM0OyB0byAmIzM0O2J5dGVzIHRvIHByZXNlcnZlLiYjMzQ7IFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gaG93IGl0IG1hbmlwdWxhdGVzIHBhY2tldHMsIGFuZCBpdCBpbXBhY3RzIGBwc2tiX3RyaW1gLCBgc2tiX3plcm9jb3B5YCwgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdXNhZ2Ugb2YgdGhhdCBgY3V0bGVuYCBmaWVsZC4gCgpHaXZlbiBteSBleHBlcnRpc2UsIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gTW9kaWZ5aW5nIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHdpdGhpbiBPcGVuIHZTd2l0Y2ggaXMgYSBwcmltZSB0YXJnZXQgZm9yIHVuY292ZXJpbmcgdnVsbmVyYWJpbGl0aWVzLiBOb3csIHRoZSBwbGFuIGlzOgoKMS4gICoqSWRlbnRpZnkgRm9jdXMgU3ltYm9sczoqKiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGRpcmVjdGx5IGludGVyYWN0cyB3aXRoLCBzbyBJIGNhbiB0YXJnZXQgbXkgZnV6emluZyBlZmZvcnRzIGVmZmljaWVudGx5LgoyLiAgKipEZXRlcm1pbmUgRW5hYmxlIENvbmZpZ3VyYXRpb25zOioqIEkmIzM5O2xsIGFsc28gbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGBDT05GSUdfYCBvcHRpb25zIGFyZSBuZWNlc3NhcnkgdG8gYnVpbGQgYW5kIGVuYWJsZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25hbGl0eSBzbyBJIGNhbiBidWlsZCBhIHRlc3QgY29uZmlndXJhdGlvbiB0byB0ZXN0IHRoaXMgcHJvcGVybHkuCgpMZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMuIEkmIzM5O20gc2VlaW5nOiBgZG9fb3V0cHV0YCwgYGV4ZWN1dGVfcHNhbXBsZWAsIGBkb19leGVjdXRlX2FjdGlvbnNgLCBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YCwgYHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXRgLCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAsIGFuZCBgb3ZzX3Zwb3J0X3JlY2VpdmVgLiBUaGVzZSBhcmUgYWxsIHdpdGhpbiB0aGUgYG5ldC9vcGVudnN3aXRjaC9gIGRpcmVjdG9yeSwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdyBJJiMzOTtsbCBzY2FuIHRoZSBgS2NvbmZpZ2AgZm9yIE9wZW4gdlN3aXRjaCB0byBkZXRlcm1pbmUgdGhlIHJlbGV2YW50IENPTkZJRyBvcHRpb25zIHRvIGVuYWJsZSB0aGUgZmVhdHVyZSwgc28gSSBjYW4gc3RhcnQgY3JhZnRpbmcgbXkgZnV6emluZyBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgT1BFTlZTV0lUQ0gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9LY29uZmlnLTUtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OmNvbmZpZyBPUEVOVlNXSVRDSFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaFwmIzM0O1xuLS1cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTQzLVxubmV0L29wZW52c3dpdGNoL0tjb25maWc6NDQ6Y29uZmlnIE9QRU5WU1dJVENIX0dSRVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2ggR1JFIHR1bm5lbGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNTYtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo1Nzpjb25maWcgT1BFTlZTV0lUQ0hfVlhMQU5cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU4LVx0dHJpc3RhdGUgXCYjMzQ7T3BlbiB2U3dpdGNoIFZYTEFOIHR1bm5lbGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNjgtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OTpjb25maWcgT1BFTlZTV0lUQ0hfR0VORVZFXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy03MC1cdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaCBHZW5ldmUgdHVubmVsaW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTQ5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBPcGVuIHZTd2l0Y2ggQ29uZmlndXJhdGlvbiBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgT1BFTlZTV0lUQ0hgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBpbml0aWFsIHNjYW4gaXMgdGVsbGluZyBtZSB3ZSBoYXZlIHNldmVyYWwga2V5IGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiB0d2Vha2VkLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O3ZlIGdvdCBgZG9fb3V0cHV0YCwgYGV4ZWN1dGVfcHNhbXBsZWAsIGBkb19leGVjdXRlX2FjdGlvbnNgLCBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YCwgYHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXRgLCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAsIGFuZCBgb3ZzX3Zwb3J0X3JlY2VpdmVgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgY2hhbmdlZCBjb2RlLgoKTm93LCBhcyBhbiBleHBlcnQsIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGVyZSB0byBmb2N1cyBteSBhdHRlbnRpb24uIGBkb19leGVjdXRlX2FjdGlvbnNgIGFuZCBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAgaW1tZWRpYXRlbHkgc3RhbmQgb3V0IGFzIHN0cm9uZyBjYW5kaWRhdGVzIGZvciBGb2N1c1N5bWJvbHMuIFRoZWlyIHJvbGUgaW4gYWN0aW9uIGV4ZWN1dGlvbiBhbmQgdXNlci1zcGFjZSBwYWNrZXQgaGFuZGxpbmcgbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIGBkb19vdXRwdXRgIGlzIGFsc28gY3J1Y2lhbCBhbmQgZGVzZXJ2ZXMgYSBjbG9zZSBsb29rLgoKVGhlbiB3ZSBoYXZlIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgd2hpY2ggSSByZWNvZ25pemUgYXMgdGhlIGVudHJ5IHBvaW50IGZyb20gbmV0bGluaywgYW5kIGBvdnNfdnBvcnRfcmVjZWl2ZWAsIHRoZSBuZXR3b3JrIGRldmljZSBlbnRyeSBwb2ludC4gVW5kZXJzdGFuZGluZyBob3cgdGhlc2UgaW50ZXJmYWNlcyBhcmUgYWZmZWN0ZWQgaXMgZXNzZW50aWFsIGZvciBhIGNvbXByZWhlbnNpdmUgdmlldyBvZiB0aGUgY2hhbmdlcy4KCkkmIzM5O20gYWxzbyBjdXJpb3VzIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBuZWVkZWQuIEZvciBleGFtcGxlLCBgZXhlY3V0ZV9wc2FtcGxlYCAqbWlnaHQqIHJlcXVpcmUgYSBgUFNBTVBMRWAgY29uZmlndXJhdGlvbiB0byB3b3JrIGNvcnJlY3RseS4gSSYjMzk7bGwgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIGZvciB0aGF0IGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXhlY3V0ZV9wc2FtcGxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTExNjk9c3RhdGljIGludCBleGVjdXRlX2RlY190dGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjA4LSNpZiBJU19FTkFCTEVEKENPTkZJR19QU0FNUExFKVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxMjA5OnN0YXRpYyB2b2lkIGV4ZWN1dGVfcHNhbXBsZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjEwLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTI0MC0jZWxzZVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxMjQxOnN0YXRpYyB2b2lkIGV4ZWN1dGVfcHNhbXBsZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjQyLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTI0Nz1zdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTQ0OS1cdFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfUFNBTVBMRTpcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTQ1MDpcdFx0XHRleGVjdXRlX3BzYW1wbGUoZHAsIHNrYiwgYSk7XG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE0NTEtXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDMwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRm9jdXNTeW1ib2xzIEZ1bmN0aW9ucyBmb3IgVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBDT05GSUdfUFNBTVBMRWAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCBmb3IgYGV4ZWN1dGVfcHNhbXBsZWAgdG8gd29yayBhcyBleHBlY3RlZC4gSG93ZXZlciwgaXQmIzM5O3MgdGhlIGBPUEVOVlNXSVRDSGAgY29uZmlndXJhdGlvbiB0aGF0IHNlZW1zIHRvIGhvdXNlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayDigJMgSSYjMzk7bGwgZm9jdXMgb24gYE9QRU5WU1dJVENIYCBpbml0aWFsbHksIHdpdGggYFBTQU1QTEVgIGJlaW5nIGEgbmljZS10by1oYXZlIGlmIGl0JiMzOTtzIHRoZXJlLgoKTm93LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBGb2N1c1N5bWJvbHM6IGBkb19vdXRwdXRgLCBgZXhlY3V0ZV9wc2FtcGxlYCwgYGRvX2V4ZWN1dGVfYWN0aW9uc2AsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCwgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLCBhbmQgYG92c192cG9ydF9yZWNlaXZlYC4gT2theSwgYSBmZXcgc3RhbmQgb3V0IGFzIGhvdCBwYXRoIGZ1bmN0aW9uczogYG92c192cG9ydF9yZWNlaXZlYCAtIHRoYXQmIzM5O3MgY2FsbGVkIGZvciAqZXZlcnkqIHBhY2tldC4gVGhlbiB0aGVyZSYjMzk7cyBgZG9fZXhlY3V0ZV9hY3Rpb25zYCBhbmQgYGRvX291dHB1dGAgdG9vIOKAkyB0aG9zZSBhcmUgYWxzbyBoaWdoLWZyZXF1ZW5jeSBjYWxscy4gYHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXRgLCB3ZWxsLCB0aGF0JiMzOTtzIHRyaWdnZXJlZCB3aGVuIGEgcGFja2V0IGhlYWRzIHRvIHVzZXJzcGFjZSAobGlrZSBhbiB1cGNhbGwpLCBzbyB3aGlsZSBpdCBpc24mIzM5O3QgYXMgZnJlcXVlbnQsIGl0JiMzOTtzIHN0aWxsIGEgY29tbW9uIG9wZXJhdGlvbi4gVGhlbiwgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0JiMzOTtzIGhhbmRsaW5nIHBhY2tldHMgc2VudCBmcm9tIHVzZXJzcGFjZSB0byB0aGUgZGF0YXBhdGggZm9yIGV4ZWN1dGlvbi4gRmluYWxseSwgd2UgaGF2ZSBgZXhlY3V0ZV9wc2FtcGxlYCwgd2hpY2ggaXMgb25seSBjYWxsZWQgd2hlbiB0aGUgcHNhbXBsZSBhY3Rpb24gaXMgZXhwbGljaXRseSBleGVjdXRlZC4KCkFoYSEgVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgT1ZTX0FDVElPTl9BVFRSX1RSVU5DYCBhbmQgaG93IHRoZSBgY3V0bGVuYCBwYXJhbWV0ZXIgaXMgaW50ZXJwcmV0ZWQsIHdoaWNoIG1lYW5zIEkmIzM5O2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgaG93IHRoYXQgYWN0aW9uIGlzIGJlaW5nIGltcGxlbWVudGVkIGluIGBhY3Rpb25zLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7T1ZTX0FDVElPTl9BVFRSX1RSVU5DJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNDc9c3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyODYtXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjEyODc6XHRcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1RSVU5DOiB7XG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyODgtXHRcdFx0c3RydWN0IG92c19hY3Rpb25fdHJ1bmMgKnRydW5jID0gbmxhX2RhdGEoYSk7XG4tLVxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jPTUzPXN0YXRpYyBib29sIGFjdGlvbnNfbWF5X2NoYW5nZV9mbG93KGNvbnN0IHN0cnVjdCBubGF0dHIgKmFjdGlvbnMpXG4tLVxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTYzLVx0XHRjYXNlIE9WU19BQ1RJT05fQVRUUl9SRUNJUkM6XG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmM6NjQ6XHRcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1RSVU5DOlxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTY1LVx0XHRjYXNlIE9WU19BQ1RJT05fQVRUUl9VU0VSU1BBQ0U6XG4tLVxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jPTMxNDc9c3RhdGljIGludCBfX292c19ubGFfY29weV9hY3Rpb25zKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMtMzE3Ni1cdFx0XHRbT1ZTX0FDVElPTl9BVFRSX0NUX0NMRUFSXSA9IDAsXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmM6MzE3NzpcdFx0XHRbT1ZTX0FDVElPTl9BVFRSX1RSVU5DXSA9IHNpemVvZihzdHJ1Y3Qgb3ZzX2FjdGlvbl90cnVuYyksXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMtMzE3OC1cdFx0XHRbT1ZTX0FDVElPTl9BVFRSX1BVU0hfRVRIXSA9IHNpemVvZihzdHJ1Y3Qgb3ZzX2FjdGlvbl9wdXNoX2V0aCksXG4tLVxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTMyMTQtXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmM6MzIxNTpcdFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfVFJVTkM6IHtcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYy0zMjE2LVx0XHRcdGNvbnN0IHN0cnVjdCBvdnNfYWN0aW9uX3RydW5jICp0cnVuYyA9IG5sYV9kYXRhKGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NzEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoIG9uIFBhY2tldCBIYW5kbGluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgaG93IGBjdXRsZW5gIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHN5c3RlbS4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGN1dGxlbmAmIzM5O3MgdmFsdWUgaXMgZGVyaXZlZCBmcm9tIGBPVlNfQUNUSU9OX0FUVFJfVFJVTkNgLiBPa2F5LCB0aGF0JiMzOTtzIGNsZWFyIGVub3VnaC4gTm93LCB3aGVyZSBpcyBgY3V0bGVuYCBhY3R1YWxseSAqdXNlZCo/IFRoZSB0ZXh0IGlkZW50aWZpZXMgYGRvX291dHB1dGAsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCwgYW5kIGBleGVjdXRlX3BzYW1wbGVgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGtlZXAgdGhvc2UgaW4gbWluZC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBgZG9fZXhlY3V0ZV9hY3Rpb25zYCB3aGljaCBpcyBpbXBsaWVkIGFzIHBhcnQgb2YgdGhlIG92ZXJhbGwgZmxvdy4KCk9rYXksIGxldCYjMzk7cyBzaGFycGVuIG91ciBmb2N1cyBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHJlZmluZSB0aGlzIGxpc3QgdG86CgoqICAgYGRvX291dHB1dGAKKiAgIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YAoqICAgYGV4ZWN1dGVfcHNhbXBsZWAKKiAgIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYAoKVGhvc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIEkgbmVlZCB0byBhbmFseXplIGluIGRldGFpbC4gSSBoYXZlIHRvIG1ha2Ugc3VyZSBJIGFtIGFjY291bnRpbmcgZm9yIGV2ZXJ5dGhpbmcuCgpOb3csIGJleW9uZCB0aGUgY29yZSBmdW5jdGlvbnMsIGFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGhpbmsuLi4gT2gsIHJpZ2h0LCB0aGVyZSYjMzk7cyBgT1BFTlZTV0lUQ0hgIGFuZCBgUFNBTVBMRWAuIFRob3NlIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LiBBbmQsIG9mIGNvdXJzZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgUFNBTVBMRWAgY29uZmlndXJhdGlvbiB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGludGVyYWN0aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFNBTVBMRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wc2FtcGxlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcHNhbXBsZS9LY29uZmlnLTUtXG5uZXQvcHNhbXBsZS9LY29uZmlnOjY6bWVudWNvbmZpZyBQU0FNUExFXG5uZXQvcHNhbXBsZS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQtc2FtcGxpbmcgbmV0bGluayBjaGFubmVsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMjgKCQkJCQkJCW91dHB1dDogMTQwCgkJCQkJCQl0aG91Z2h0czogMTE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBQYWNrZXQgVHJ1bmNhdGlvbiBpbiBPcGVuIHZTd2l0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBpbXBhY3RzIE9wZW4gdlN3aXRjaC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBob3cgdGhlIGBPVlNfQUNUSU9OX0FUVFJfVFJVTkNgIGFjdGlvbiBhbmQgdGhlIGFzc29jaWF0ZWQgYGN1dGxlbmAgZmllbGQgYXJlIGhhbmRsZWQuIEl0JiMzOTtzIHRvdWNoaW5nIHNvbWUga2V5IGFyZWFzOiBwYWNrZXQgdHJ1bmNhdGlvbiBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbiwgb3V0cHV0LCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdXNlcnNwYWNlLiBUaGlzIGRlZmluaXRlbHkgd2FycmFudHMgZnV6emluZywgYXMgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgaW4gbmV0d29yayBkYXRhcGF0aCBjb2RlLgoKSSYjMzk7dmUgZGV0ZXJtaW5lZCB0aGF0IGBQU0FNUExFYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIGhlcmUuIEFuZCB5ZXMsIGBPUEVOVlNXSVRDSGAgaXMgc3VmZmljaWVudCB0byBlbmFibGUgdGhlIG5lZWRlZCBjb25maWd1cmF0aW9ucy4KCkluaXRpYWxseSwgSSB3YXMgY29uc2lkZXJpbmcgdGhlc2UgZnVuY3Rpb25zIGFzIGZvY3VzIHN5bWJvbHM6IGBkb19vdXRwdXRgLCBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAsIGBleGVjdXRlX3BzYW1wbGVgLCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAsIGFuZCBgZG9fZXhlY3V0ZV9hY3Rpb25zYC4gSG93ZXZlciwgSSBuZWVkIHRvIGJlIHN0cmF0ZWdpYy4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gYXZvaWQgaG90IHBhdGggZnVuY3Rpb25zLiBgZG9fZXhlY3V0ZV9hY3Rpb25zYCBpcyB0aGUgbWFpbiBhY3Rpb24gbG9vcDsgdG9vIGJyb2FkLiBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAgZGVhbHMgd2l0aCB1cGNhbGxzLCBzbyBpdCYjMzk7cyBsZXNzIG9mIGEgaG90IHBhdGguIGBleGVjdXRlX3BzYW1wbGVgIGFuZCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgYXJlIHNwZWNpZmljIHRvIHBhY2tldCBleGVjdXRpb24gY29tbWFuZHMgZnJvbSB1c2Vyc3BhY2UgYW5kIHRoZSBwc2FtcGxlIGFjdGlvbi4KCkluaXRpYWxseSBJIGNvbnNpZGVyZWQgZXhjbHVkaW5nIGBkb19vdXRwdXRgLCBnaXZlbiBpdHMgY29tbW9uIG5hdHVyZS4gSG93ZXZlciwgYWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb2RlLCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIHdoZXJlIGEgKnNpZ25pZmljYW50KiBjaGFuZ2UgaXMgdGFraW5nIHBsYWNlIGluIGhvdyBgcHNrYl90cmltYCBhbmQgdGhlIGBjdXRsZW5gIGZpZWxkIGFyZSBoYW5kbGVkLiBFdmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMgaW4gYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgLCBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgaXQuCgpBZnRlciBjaGVja2luZyB0aGUgY29kZSBhZ2FpbiwgSSBhbSBnb2luZyB0byBmb2N1cyBvbjogYGRvX291dHB1dGAsIGBleGVjdXRlX3BzYW1wbGVgLCBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgd2hlcmUgdGhlIGNvcmUgbG9naWMgY2hhbmdlcy4gVGhlIG90aGVyIGZ1bmN0aW9ucyBpbml0aWFsaXplIGFuZCBzZXQgdGhlIGN1dGxlbi4KClRoZXJlZm9yZSwgSSB3aWxsIHNldCB0aGVzZSBhcyBteSBmb2N1cyBzeW1ib2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1BFTlZTV0lUQ0gmIzM0OywKICAgICYjMzQ7UFNBTVBMRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RvX291dHB1dCYjMzQ7LAogICAgJiMzNDtleGVjdXRlX3BzYW1wbGUmIzM0OywKICAgICYjMzQ7cXVldWVfdXNlcnNwYWNlX3BhY2tldCYjMzQ7LAogICAgJiMzNDtvdnNfcGFja2V0X2NtZF9leGVjdXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBwYWNrZXQgdHJ1bmNhdGlvbiAoT1ZTX0FDVElPTl9BVFRSX1RSVU5DKSBhbmQgdGhlIGN1dGxlbiBmaWVsZCBhcmUgaGFuZGxlZCBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbiwgb3V0cHV0LCBhbmQgdXBjYWxscyB0byB1c2Vyc3BhY2UuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIG5ldHdvcmsgZGF0YXBhdGggY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDssCiAgICAmIzM0O1BTQU1QTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19vdXRwdXQmIzM0OywKICAgICYjMzQ7ZXhlY3V0ZV9wc2FtcGxlJiMzNDssCiAgICAmIzM0O3F1ZXVlX3VzZXJzcGFjZV9wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyBpbiBPcGVuIHZTd2l0Y2gsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgcGFja2V0IHRydW5jYXRpb24gKE9WU19BQ1RJT05fQVRUUl9UUlVOQykgYW5kIHRoZSBjdXRsZW4gZmllbGQgYXJlIGhhbmRsZWQgZHVyaW5nIGFjdGlvbiBleGVjdXRpb24sIG91dHB1dCwgYW5kIHVwY2FsbHMgdG8gdXNlcnNwYWNlLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBuZXR3b3JrIGRhdGFwYXRoIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDhUMDk6MjU6NTcuOTY3NTM5ODE3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzMzAwMjIwNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIixcbiAgICBcIlBTQU1QTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19vdXRwdXRcIixcbiAgICBcImV4ZWN1dGVfcHNhbXBsZVwiLFxuICAgIFwicXVldWVfdXNlcnNwYWNlX3BhY2tldFwiLFxuICAgIFwib3ZzX3BhY2tldF9jbWRfZXhlY3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBwYWNrZXQgdHJ1bmNhdGlvbiAoT1ZTX0FDVElPTl9BVFRSX1RSVU5DKSBhbmQgdGhlIGN1dGxlbiBmaWVsZCBhcmUgaGFuZGxlZCBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbiwgb3V0cHV0LCBhbmQgdXBjYWxscyB0byB1c2Vyc3BhY2UuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIG5ldHdvcmsgZGF0YXBhdGggY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI1OjU3Ljk2NzU0OTcxN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkzMjE3NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjYxMDdhM2MwODRlYzljMjVlYTRlYzE5NDhlZDcwMmFkNzVmYTg1NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDA5OjI1OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXFxuaW5kZXggMTQwMzg4YTE4YWUwNDIuLjUxM2ZjYTZhOGU4YTQ4IDEwMDY0NFxcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcXG4rKysgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXFxuQEAgLTgzNywxMiArODM3LDggQEAgc3RhdGljIHZvaWQgZG9fb3V0cHV0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsIGludCBvdXRfcG9ydCxcXG4gXFx0XFx0dTE2IG1ydSA9IE9WU19DQihza2IpLVxcdTAwM2VtcnU7XFxuIFxcdFxcdHUzMiBjdXRsZW4gPSBPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuO1xcbiBcXG4tXFx0XFx0aWYgKHVubGlrZWx5KGN1dGxlbiBcXHUwMDNlIDApKSB7XFxuLVxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiAtIGN1dGxlbiBcXHUwMDNlIG92c19tYWNfaGVhZGVyX2xlbihrZXkpKVxcbi1cXHRcXHRcXHRcXHRwc2tiX3RyaW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIGN1dGxlbik7XFxuLVxcdFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0XFx0cHNrYl90cmltKHNrYiwgb3ZzX21hY19oZWFkZXJfbGVuKGtleSkpO1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlmICh1bmxpa2VseShjdXRsZW4gXFx1MDAzYyBza2ItXFx1MDAzZWxlbikpXFxuK1xcdFxcdFxcdHBza2JfdHJpbShza2IsIG1heChjdXRsZW4sIG92c19tYWNfaGVhZGVyX2xlbihrZXkpKSk7XFxuIFxcbiBcXHRcXHRpZiAobGlrZWx5KCFtcnUgfHxcXG4gXFx0XFx0ICAgICAgICAgICAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYz0gbXJ1ICsgdnBvcnQtXFx1MDAzZWRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSkpIHtcXG5AQCAtMTIzNCw3ICsxMjMwLDcgQEAgc3RhdGljIHZvaWQgZXhlY3V0ZV9wc2FtcGxlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRwc2FtcGxlX2dyb3VwLm5ldCA9IG92c19kcF9nZXRfbmV0KGRwKTtcXG4gXFx0bWQuaW5faWZpbmRleCA9IE9WU19DQihza2IpLVxcdTAwM2VpbnB1dF92cG9ydC1cXHUwMDNlZGV2LVxcdTAwM2VpZmluZGV4O1xcbi1cXHRtZC50cnVuY19zaXplID0gc2tiLVxcdTAwM2VsZW4gLSBPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuO1xcbitcXHRtZC50cnVuY19zaXplID0gbWluKHNrYi1cXHUwMDNlbGVuLCBPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuKTtcXG4gXFx0bWQucmF0ZV9hc19wcm9iYWJpbGl0eSA9IDE7XFxuIFxcbiBcXHRyYXRlID0gT1ZTX0NCKHNrYiktXFx1MDAzZXByb2JhYmlsaXR5ID8gT1ZTX0NCKHNrYiktXFx1MDAzZXByb2JhYmlsaXR5IDogVTMyX01BWDtcXG5AQCAtMTI4NCwyMiArMTI4MCwyMSBAQCBzdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRjbG9uZSA9IHNrYl9jbG9uZShza2IsIEdGUF9BVE9NSUMpO1xcbiBcXHRcXHRcXHRpZiAoY2xvbmUpXFxuIFxcdFxcdFxcdFxcdGRvX291dHB1dChkcCwgY2xvbmUsIHBvcnQsIGtleSk7XFxuLVxcdFxcdFxcdE9WU19DQihza2IpLVxcdTAwM2VjdXRsZW4gPSAwO1xcbitcXHRcXHRcXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1RSVU5DOiB7XFxuIFxcdFxcdFxcdHN0cnVjdCBvdnNfYWN0aW9uX3RydW5jICp0cnVuYyA9IG5sYV9kYXRhKGEpO1xcbiBcXG4tXFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgdHJ1bmMtXFx1MDAzZW1heF9sZW4pXFxuLVxcdFxcdFxcdFxcdE9WU19DQihza2IpLVxcdTAwM2VjdXRsZW4gPSBza2ItXFx1MDAzZWxlbiAtIHRydW5jLVxcdTAwM2VtYXhfbGVuO1xcbitcXHRcXHRcXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gdHJ1bmMtXFx1MDAzZW1heF9sZW47XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRjYXNlIE9WU19BQ1RJT05fQVRUUl9VU0VSU1BBQ0U6XFxuIFxcdFxcdFxcdG91dHB1dF91c2Vyc3BhY2UoZHAsIHNrYiwga2V5LCBhLCBhdHRyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGxlbiwgT1ZTX0NCKHNrYiktXFx1MDAzZWN1dGxlbik7XFxuLVxcdFxcdFxcdE9WU19DQihza2IpLVxcdTAwM2VjdXRsZW4gPSAwO1xcbitcXHRcXHRcXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcXG4gXFx0XFx0XFx0aWYgKG5sYV9pc19sYXN0KGEsIHJlbSkpIHtcXG4gXFx0XFx0XFx0XFx0Y29uc3VtZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuQEAgLTE0NTMsNyArMTQ0OCw3IEBAIHN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRcXHRjYXNlIE9WU19BQ1RJT05fQVRUUl9QU0FNUExFOlxcbiBcXHRcXHRcXHRleGVjdXRlX3BzYW1wbGUoZHAsIHNrYiwgYSk7XFxuLVxcdFxcdFxcdE9WU19DQihza2IpLVxcdTAwM2VjdXRsZW4gPSAwO1xcbitcXHRcXHRcXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcXG4gXFx0XFx0XFx0aWYgKG5sYV9pc19sYXN0KGEsIHJlbSkpIHtcXG4gXFx0XFx0XFx0XFx0Y29uc3VtZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNcXG5pbmRleCBmMDE2NDgxN2Q5YjcyMy4uZWFmMzMyYjE1NmQ3MzEgMTAwNjQ0XFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNcXG4rKysgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguY1xcbkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXFxuIFxcdFxcdFxcdHVwY2FsbC5wb3J0aWQgPSBvdnNfdnBvcnRfZmluZF91cGNhbGxfcG9ydGlkKHAsIHNrYik7XFxuIFxcbiBcXHRcXHR1cGNhbGwubXJ1ID0gT1ZTX0NCKHNrYiktXFx1MDAzZW1ydTtcXG4tXFx0XFx0ZXJyb3IgPSBvdnNfZHBfdXBjYWxsKGRwLCBza2IsIGtleSwgXFx1MDAyNnVwY2FsbCwgMCk7XFxuK1xcdFxcdGVycm9yID0gb3ZzX2RwX3VwY2FsbChkcCwgc2tiLCBrZXksIFxcdTAwMjZ1cGNhbGwsIFUzMl9NQVgpO1xcbiBcXHRcXHRzd2l0Y2ggKGVycm9yKSB7XFxuIFxcdFxcdGNhc2UgMDpcXG4gXFx0XFx0Y2FzZSAtRUFHQUlOOlxcbkBAIC00NTcsNyArNDU3LDggQEAgc3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHN0cnVjdCBza19idWZmICpuc2tiID0gTlVMTDtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnVzZXJfc2tiID0gTlVMTDsgLyogdG8gYmUgcXVldWVkIHRvIHVzZXJzcGFjZSAqL1xcbiBcXHRzdHJ1Y3QgbmxhdHRyICpubGE7XFxuLVxcdHNpemVfdCBsZW47XFxuK1xcdHNpemVfdCBtc2dfc2l6ZTtcXG4rXFx0c2l6ZV90IHNrYl9sZW47XFxuIFxcdHVuc2lnbmVkIGludCBobGVuO1xcbiBcXHRpbnQgZXJyLCBkcF9pZmluZGV4O1xcbiBcXHR1NjQgaGFzaDtcXG5AQCAtNDc4LDcgKzQ3OSw4IEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRza2IgPSBuc2tiO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAobmxhX2F0dHJfc2l6ZShza2ItXFx1MDAzZWxlbikgXFx1MDAzZSBVU0hSVF9NQVgpIHtcXG4rXFx0c2tiX2xlbiA9IG1pbihza2ItXFx1MDAzZWxlbiwgY3V0bGVuKTtcXG4rXFx0aWYgKG5sYV9hdHRyX3NpemUoc2tiX2xlbikgXFx1MDAzZSBVU0hSVF9NQVgpIHtcXG4gXFx0XFx0ZXJyID0gLUVGQklHO1xcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbkBAIC00OTMsMTMgKzQ5NSwxMyBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICogcGFkZGluZyBsb2dpYy4gT25seSBwZXJmb3JtIHplcm9jb3B5IGlmIHBhZGRpbmcgaXMgbm90IHJlcXVpcmVkLlxcbiBcXHQgKi9cXG4gXFx0aWYgKGRwLVxcdTAwM2V1c2VyX2ZlYXR1cmVzIFxcdTAwMjYgT1ZTX0RQX0ZfVU5BTElHTkVEKVxcbi1cXHRcXHRobGVuID0gc2tiX3plcm9jb3B5X2hlYWRsZW4oc2tiKTtcXG4rXFx0XFx0aGxlbiA9IG1pbihza2JfemVyb2NvcHlfaGVhZGxlbihza2IpLCBjdXRsZW4pO1xcbiBcXHRlbHNlXFxuLVxcdFxcdGhsZW4gPSBza2ItXFx1MDAzZWxlbjtcXG4rXFx0XFx0aGxlbiA9IHNrYl9sZW47XFxuIFxcbi1cXHRsZW4gPSB1cGNhbGxfbXNnX3NpemUodXBjYWxsX2luZm8sIGhsZW4gLSBjdXRsZW4sXFxuLVxcdFxcdFxcdCAgICAgIE9WU19DQihza2IpLVxcdTAwM2VhY3RzX29yaWdsZW4pO1xcbi1cXHR1c2VyX3NrYiA9IGdlbmxtc2dfbmV3KGxlbiwgR0ZQX0FUT01JQyk7XFxuK1xcdG1zZ19zaXplID0gdXBjYWxsX21zZ19zaXplKHVwY2FsbF9pbmZvLCBobGVuLFxcbitcXHRcXHRcXHRcXHQgICBPVlNfQ0Ioc2tiKS1cXHUwMDNlYWN0c19vcmlnbGVuKTtcXG4rXFx0dXNlcl9za2IgPSBnZW5sbXNnX25ldyhtc2dfc2l6ZSwgR0ZQX0FUT01JQyk7XFxuIFxcdGlmICghdXNlcl9za2IpIHtcXG4gXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuQEAgLTU2MCw3ICs1NjIsNyBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0fVxcbiBcXG4gXFx0LyogQWRkIE9WU19QQUNLRVRfQVRUUl9MRU4gd2hlbiBwYWNrZXQgaXMgdHJ1bmNhdGVkICovXFxuLVxcdGlmIChjdXRsZW4gXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2XFxuK1xcdGlmIChza2JfbGVuIFxcdTAwM2Mgc2tiLVxcdTAwM2VsZW4gXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIG5sYV9wdXRfdTMyKHVzZXJfc2tiLCBPVlNfUEFDS0VUX0FUVFJfTEVOLCBza2ItXFx1MDAzZWxlbikpIHtcXG4gXFx0XFx0ZXJyID0gLUVOT0JVRlM7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC01ODUsOSArNTg3LDkgQEAgc3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGVyciA9IC1FTk9CVUZTO1xcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbi1cXHRubGEtXFx1MDAzZW5sYV9sZW4gPSBubGFfYXR0cl9zaXplKHNrYi1cXHUwMDNlbGVuIC0gY3V0bGVuKTtcXG4rXFx0bmxhLVxcdTAwM2VubGFfbGVuID0gbmxhX2F0dHJfc2l6ZShza2JfbGVuKTtcXG4gXFxuLVxcdGVyciA9IHNrYl96ZXJvY29weSh1c2VyX3NrYiwgc2tiLCBza2ItXFx1MDAzZWxlbiAtIGN1dGxlbiwgaGxlbik7XFxuK1xcdGVyciA9IHNrYl96ZXJvY29weSh1c2VyX3NrYiwgc2tiLCBza2JfbGVuLCBobGVuKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbkBAIC02NDQsNiArNjQ2LDcgQEAgc3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuIFxcdFxcdHBhY2tldC1cXHUwMDNlaWdub3JlX2RmID0gMTtcXG4gXFx0fVxcbiBcXHRPVlNfQ0IocGFja2V0KS1cXHUwMDNlbXJ1ID0gbXJ1O1xcbitcXHRPVlNfQ0IocGFja2V0KS1cXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcXG4gXFxuIFxcdGlmIChhW09WU19QQUNLRVRfQVRUUl9IQVNIXSkge1xcbiBcXHRcXHRoYXNoID0gbmxhX2dldF91NjQoYVtPVlNfUEFDS0VUX0FUVFJfSEFTSF0pO1xcbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaCBiL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oXFxuaW5kZXggZGIwYzNlNjlkNjZjYWMuLjY5NjY0MGU4OGZhN2UzIDEwMDY0NFxcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oXFxuKysrIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmhcXG5AQCAtMTE4LDcgKzExOCw3IEBAIHN0cnVjdCBkYXRhcGF0aCB7XFxuICAqIEBtcnU6IFRoZSBtYXhpbXVtIHJlY2VpdmVkIGZyYWdlbWVudCBzaXplOyAwIGlmIHRoZSBwYWNrZXQgaXMgbm90XFxuICAqIGZyYWdtZW50ZWQuXFxuICAqIEBhY3RzX29yaWdsZW46IFRoZSBuZXRsaW5rIHNpemUgb2YgdGhlIGZsb3cgYWN0aW9ucyBhcHBsaWVkIHRvIHRoaXMgc2tiLlxcbi0gKiBAY3V0bGVuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHBhY2tldCBlbmQgdG8gYmUgcmVtb3ZlZC5cXG4rICogQGN1dGxlbjogVGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgcGFja2V0IHRvIHByZXNlcnZlIG9uIG91dHB1dC5cXG4gICogQHByb2JhYmlsaXR5OiBUaGUgc2FtcGxpbmcgcHJvYmFiaWxpdHkgdGhhdCB3YXMgYXBwbGllZCB0byB0aGlzIHNrYjsgMCBtZWFuc1xcbiAgKiBubyBzYW1wbGluZyBoYXMgb2NjdXJyZWQ7IFUzMl9NQVggbWVhbnMgMTAwJSBwcm9iYWJpbGl0eS5cXG4gICogQHVwY2FsbF9waWQ6IE5ldGxpbmsgc29ja2V0IFBJRCB0byB1c2UgZm9yIHNlbmRpbmcgdGhpcyBwYWNrZXQgdG8gdXNlcnNwYWNlO1xcbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYyBiL25ldC9vcGVudnN3aXRjaC92cG9ydC5jXFxuaW5kZXggNTZiMmUyZDFhNzQ5ZjguLjEyNzQxNDg1YzkzOTNkIDEwMDY0NFxcbi0tLSBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jXFxuKysrIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LmNcXG5AQCAtNTAyLDcgKzUwMiw3IEBAIGludCBvdnNfdnBvcnRfcmVjZWl2ZShzdHJ1Y3QgdnBvcnQgKnZwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gXFx0T1ZTX0NCKHNrYiktXFx1MDAzZWlucHV0X3Zwb3J0ID0gdnBvcnQ7XFxuIFxcdE9WU19DQihza2IpLVxcdTAwM2VtcnUgPSAwO1xcbi1cXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gMDtcXG4rXFx0T1ZTX0NCKHNrYiktXFx1MDAzZWN1dGxlbiA9IFUzMl9NQVg7XFxuIFxcdE9WU19DQihza2IpLVxcdTAwM2Vwcm9iYWJpbGl0eSA9IDA7XFxuIFxcdE9WU19DQihza2IpLVxcdTAwM2V1cGNhbGxfcGlkID0gMDtcXG4gXFx0aWYgKHVubGlrZWx5KGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpICE9IG92c19kcF9nZXRfbmV0KHZwb3J0LVxcdTAwM2VkcCkpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI1OjU4LjY2MTUyNDk3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM2MzYwMjYxOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIixcbiAgICBcIlBTQU1QTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19vdXRwdXRcIixcbiAgICBcImV4ZWN1dGVfcHNhbXBsZVwiLFxuICAgIFwicXVldWVfdXNlcnNwYWNlX3BhY2tldFwiLFxuICAgIFwib3ZzX3BhY2tldF9jbWRfZXhlY3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBwYWNrZXQgdHJ1bmNhdGlvbiAoT1ZTX0FDVElPTl9BVFRSX1RSVU5DKSBhbmQgdGhlIGN1dGxlbiBmaWVsZCBhcmUgaGFuZGxlZCBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbiwgb3V0cHV0LCBhbmQgdXBjYWxscyB0byB1c2Vyc3BhY2UuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIG5ldHdvcmsgZGF0YXBhdGggY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjYxMDdhM2MwODRlYzljMjVlYTRlYzE5NDhlZDcwMmFkNzVmYTg1NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDk6MjU6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xuaW5kZXggMTQwMzg4YTE4YWUwNDIuLjUxM2ZjYTZhOGU4YTQ4IDEwMDY0NFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xuKysrIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xuQEAgLTgzNywxMiArODM3LDggQEAgc3RhdGljIHZvaWQgZG9fb3V0cHV0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsIGludCBvdXRfcG9ydCxcbiBcdFx0dTE2IG1ydSA9IE9WU19DQihza2IpLVx1MDAzZW1ydTtcbiBcdFx0dTMyIGN1dGxlbiA9IE9WU19DQihza2IpLVx1MDAzZWN1dGxlbjtcbiBcbi1cdFx0aWYgKHVubGlrZWx5KGN1dGxlbiBcdTAwM2UgMCkpIHtcbi1cdFx0XHRpZiAoc2tiLVx1MDAzZWxlbiAtIGN1dGxlbiBcdTAwM2Ugb3ZzX21hY19oZWFkZXJfbGVuKGtleSkpXG4tXHRcdFx0XHRwc2tiX3RyaW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gY3V0bGVuKTtcbi1cdFx0XHRlbHNlXG4tXHRcdFx0XHRwc2tiX3RyaW0oc2tiLCBvdnNfbWFjX2hlYWRlcl9sZW4oa2V5KSk7XG4tXHRcdH1cbitcdFx0aWYgKHVubGlrZWx5KGN1dGxlbiBcdTAwM2Mgc2tiLVx1MDAzZWxlbikpXG4rXHRcdFx0cHNrYl90cmltKHNrYiwgbWF4KGN1dGxlbiwgb3ZzX21hY19oZWFkZXJfbGVuKGtleSkpKTtcbiBcbiBcdFx0aWYgKGxpa2VseSghbXJ1IHx8XG4gXHRcdCAgICAgICAgICAgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBtcnUgKyB2cG9ydC1cdTAwM2VkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSkpIHtcbkBAIC0xMjM0LDcgKzEyMzAsNyBAQCBzdGF0aWMgdm9pZCBleGVjdXRlX3BzYW1wbGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdHBzYW1wbGVfZ3JvdXAubmV0ID0gb3ZzX2RwX2dldF9uZXQoZHApO1xuIFx0bWQuaW5faWZpbmRleCA9IE9WU19DQihza2IpLVx1MDAzZWlucHV0X3Zwb3J0LVx1MDAzZWRldi1cdTAwM2VpZmluZGV4O1xuLVx0bWQudHJ1bmNfc2l6ZSA9IHNrYi1cdTAwM2VsZW4gLSBPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW47XG4rXHRtZC50cnVuY19zaXplID0gbWluKHNrYi1cdTAwM2VsZW4sIE9WU19DQihza2IpLVx1MDAzZWN1dGxlbik7XG4gXHRtZC5yYXRlX2FzX3Byb2JhYmlsaXR5ID0gMTtcbiBcbiBcdHJhdGUgPSBPVlNfQ0Ioc2tiKS1cdTAwM2Vwcm9iYWJpbGl0eSA/IE9WU19DQihza2IpLVx1MDAzZXByb2JhYmlsaXR5IDogVTMyX01BWDtcbkBAIC0xMjg0LDIyICsxMjgwLDIxIEBAIHN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0Y2xvbmUgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTtcbiBcdFx0XHRpZiAoY2xvbmUpXG4gXHRcdFx0XHRkb19vdXRwdXQoZHAsIGNsb25lLCBwb3J0LCBrZXkpO1xuLVx0XHRcdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IDA7XG4rXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFxuIFx0XHRjYXNlIE9WU19BQ1RJT05fQVRUUl9UUlVOQzoge1xuIFx0XHRcdHN0cnVjdCBvdnNfYWN0aW9uX3RydW5jICp0cnVuYyA9IG5sYV9kYXRhKGEpO1xuIFxuLVx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzZSB0cnVuYy1cdTAwM2VtYXhfbGVuKVxuLVx0XHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gc2tiLVx1MDAzZWxlbiAtIHRydW5jLVx1MDAzZW1heF9sZW47XG4rXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gdHJ1bmMtXHUwMDNlbWF4X2xlbjtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFxuIFx0XHRjYXNlIE9WU19BQ1RJT05fQVRUUl9VU0VSU1BBQ0U6XG4gXHRcdFx0b3V0cHV0X3VzZXJzcGFjZShkcCwgc2tiLCBrZXksIGEsIGF0dHIsXG4gXHRcdFx0XHRcdFx0ICAgICBsZW4sIE9WU19DQihza2IpLVx1MDAzZWN1dGxlbik7XG4tXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gMDtcbitcdFx0XHRPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW4gPSBVMzJfTUFYO1xuIFx0XHRcdGlmIChubGFfaXNfbGFzdChhLCByZW0pKSB7XG4gXHRcdFx0XHRjb25zdW1lX3NrYihza2IpO1xuIFx0XHRcdFx0cmV0dXJuIDA7XG5AQCAtMTQ1Myw3ICsxNDQ4LDcgQEAgc3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfUFNBTVBMRTpcbiBcdFx0XHRleGVjdXRlX3BzYW1wbGUoZHAsIHNrYiwgYSk7XG4tXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gMDtcbitcdFx0XHRPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW4gPSBVMzJfTUFYO1xuIFx0XHRcdGlmIChubGFfaXNfbGFzdChhLCByZW0pKSB7XG4gXHRcdFx0XHRjb25zdW1lX3NrYihza2IpO1xuIFx0XHRcdFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguY1xuaW5kZXggZjAxNjQ4MTdkOWI3MjMuLmVhZjMzMmIxNTZkNzMxIDEwMDY0NFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNcbisrKyBiL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jXG5AQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KVxuIFx0XHRcdHVwY2FsbC5wb3J0aWQgPSBvdnNfdnBvcnRfZmluZF91cGNhbGxfcG9ydGlkKHAsIHNrYik7XG4gXG4gXHRcdHVwY2FsbC5tcnUgPSBPVlNfQ0Ioc2tiKS1cdTAwM2VtcnU7XG4tXHRcdGVycm9yID0gb3ZzX2RwX3VwY2FsbChkcCwgc2tiLCBrZXksIFx1MDAyNnVwY2FsbCwgMCk7XG4rXHRcdGVycm9yID0gb3ZzX2RwX3VwY2FsbChkcCwgc2tiLCBrZXksIFx1MDAyNnVwY2FsbCwgVTMyX01BWCk7XG4gXHRcdHN3aXRjaCAoZXJyb3IpIHtcbiBcdFx0Y2FzZSAwOlxuIFx0XHRjYXNlIC1FQUdBSU46XG5AQCAtNDU3LDcgKzQ1Nyw4IEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c3RydWN0IHNrX2J1ZmYgKm5za2IgPSBOVUxMO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnVzZXJfc2tiID0gTlVMTDsgLyogdG8gYmUgcXVldWVkIHRvIHVzZXJzcGFjZSAqL1xuIFx0c3RydWN0IG5sYXR0ciAqbmxhO1xuLVx0c2l6ZV90IGxlbjtcbitcdHNpemVfdCBtc2dfc2l6ZTtcbitcdHNpemVfdCBza2JfbGVuO1xuIFx0dW5zaWduZWQgaW50IGhsZW47XG4gXHRpbnQgZXJyLCBkcF9pZmluZGV4O1xuIFx0dTY0IGhhc2g7XG5AQCAtNDc4LDcgKzQ3OSw4IEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRza2IgPSBuc2tiO1xuIFx0fVxuIFxuLVx0aWYgKG5sYV9hdHRyX3NpemUoc2tiLVx1MDAzZWxlbikgXHUwMDNlIFVTSFJUX01BWCkge1xuK1x0c2tiX2xlbiA9IG1pbihza2ItXHUwMDNlbGVuLCBjdXRsZW4pO1xuK1x0aWYgKG5sYV9hdHRyX3NpemUoc2tiX2xlbikgXHUwMDNlIFVTSFJUX01BWCkge1xuIFx0XHRlcnIgPSAtRUZCSUc7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuQEAgLTQ5MywxMyArNDk1LDEzIEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogcGFkZGluZyBsb2dpYy4gT25seSBwZXJmb3JtIHplcm9jb3B5IGlmIHBhZGRpbmcgaXMgbm90IHJlcXVpcmVkLlxuIFx0ICovXG4gXHRpZiAoZHAtXHUwMDNldXNlcl9mZWF0dXJlcyBcdTAwMjYgT1ZTX0RQX0ZfVU5BTElHTkVEKVxuLVx0XHRobGVuID0gc2tiX3plcm9jb3B5X2hlYWRsZW4oc2tiKTtcbitcdFx0aGxlbiA9IG1pbihza2JfemVyb2NvcHlfaGVhZGxlbihza2IpLCBjdXRsZW4pO1xuIFx0ZWxzZVxuLVx0XHRobGVuID0gc2tiLVx1MDAzZWxlbjtcbitcdFx0aGxlbiA9IHNrYl9sZW47XG4gXG4tXHRsZW4gPSB1cGNhbGxfbXNnX3NpemUodXBjYWxsX2luZm8sIGhsZW4gLSBjdXRsZW4sXG4tXHRcdFx0ICAgICAgT1ZTX0NCKHNrYiktXHUwMDNlYWN0c19vcmlnbGVuKTtcbi1cdHVzZXJfc2tiID0gZ2VubG1zZ19uZXcobGVuLCBHRlBfQVRPTUlDKTtcbitcdG1zZ19zaXplID0gdXBjYWxsX21zZ19zaXplKHVwY2FsbF9pbmZvLCBobGVuLFxuK1x0XHRcdFx0ICAgT1ZTX0NCKHNrYiktXHUwMDNlYWN0c19vcmlnbGVuKTtcbitcdHVzZXJfc2tiID0gZ2VubG1zZ19uZXcobXNnX3NpemUsIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCF1c2VyX3NrYikge1xuIFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG91dDtcbkBAIC01NjAsNyArNTYyLDcgQEAgc3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHR9XG4gXG4gXHQvKiBBZGQgT1ZTX1BBQ0tFVF9BVFRSX0xFTiB3aGVuIHBhY2tldCBpcyB0cnVuY2F0ZWQgKi9cbi1cdGlmIChjdXRsZW4gXHUwMDNlIDAgXHUwMDI2XHUwMDI2XG4rXHRpZiAoc2tiX2xlbiBcdTAwM2Mgc2tiLVx1MDAzZWxlbiBcdTAwMjZcdTAwMjZcbiBcdCAgICBubGFfcHV0X3UzMih1c2VyX3NrYiwgT1ZTX1BBQ0tFVF9BVFRSX0xFTiwgc2tiLVx1MDAzZWxlbikpIHtcbiBcdFx0ZXJyID0gLUVOT0JVRlM7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTU4NSw5ICs1ODcsOSBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZXJyID0gLUVOT0JVRlM7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuLVx0bmxhLVx1MDAzZW5sYV9sZW4gPSBubGFfYXR0cl9zaXplKHNrYi1cdTAwM2VsZW4gLSBjdXRsZW4pO1xuK1x0bmxhLVx1MDAzZW5sYV9sZW4gPSBubGFfYXR0cl9zaXplKHNrYl9sZW4pO1xuIFxuLVx0ZXJyID0gc2tiX3plcm9jb3B5KHVzZXJfc2tiLCBza2IsIHNrYi1cdTAwM2VsZW4gLSBjdXRsZW4sIGhsZW4pO1xuK1x0ZXJyID0gc2tiX3plcm9jb3B5KHVzZXJfc2tiLCBza2IsIHNrYl9sZW4sIGhsZW4pO1xuIFx0aWYgKGVycilcbiBcdFx0Z290byBvdXQ7XG4gXG5AQCAtNjQ0LDYgKzY0Niw3IEBAIHN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRwYWNrZXQtXHUwMDNlaWdub3JlX2RmID0gMTtcbiBcdH1cbiBcdE9WU19DQihwYWNrZXQpLVx1MDAzZW1ydSA9IG1ydTtcbitcdE9WU19DQihwYWNrZXQpLVx1MDAzZWN1dGxlbiA9IFUzMl9NQVg7XG4gXG4gXHRpZiAoYVtPVlNfUEFDS0VUX0FUVFJfSEFTSF0pIHtcbiBcdFx0aGFzaCA9IG5sYV9nZXRfdTY0KGFbT1ZTX1BBQ0tFVF9BVFRSX0hBU0hdKTtcbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaCBiL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oXG5pbmRleCBkYjBjM2U2OWQ2NmNhYy4uNjk2NjQwZTg4ZmE3ZTMgMTAwNjQ0XG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaFxuKysrIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmhcbkBAIC0xMTgsNyArMTE4LDcgQEAgc3RydWN0IGRhdGFwYXRoIHtcbiAgKiBAbXJ1OiBUaGUgbWF4aW11bSByZWNlaXZlZCBmcmFnZW1lbnQgc2l6ZTsgMCBpZiB0aGUgcGFja2V0IGlzIG5vdFxuICAqIGZyYWdtZW50ZWQuXG4gICogQGFjdHNfb3JpZ2xlbjogVGhlIG5ldGxpbmsgc2l6ZSBvZiB0aGUgZmxvdyBhY3Rpb25zIGFwcGxpZWQgdG8gdGhpcyBza2IuXG4tICogQGN1dGxlbjogVGhlIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSBwYWNrZXQgZW5kIHRvIGJlIHJlbW92ZWQuXG4rICogQGN1dGxlbjogVGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgcGFja2V0IHRvIHByZXNlcnZlIG9uIG91dHB1dC5cbiAgKiBAcHJvYmFiaWxpdHk6IFRoZSBzYW1wbGluZyBwcm9iYWJpbGl0eSB0aGF0IHdhcyBhcHBsaWVkIHRvIHRoaXMgc2tiOyAwIG1lYW5zXG4gICogbm8gc2FtcGxpbmcgaGFzIG9jY3VycmVkOyBVMzJfTUFYIG1lYW5zIDEwMCUgcHJvYmFiaWxpdHkuXG4gICogQHVwY2FsbF9waWQ6IE5ldGxpbmsgc29ja2V0IFBJRCB0byB1c2UgZm9yIHNlbmRpbmcgdGhpcyBwYWNrZXQgdG8gdXNlcnNwYWNlO1xuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LmNcbmluZGV4IDU2YjJlMmQxYTc0OWY4Li4xMjc0MTQ4NWM5MzkzZCAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jXG4rKysgYi9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuY1xuQEAgLTUwMiw3ICs1MDIsNyBAQCBpbnQgb3ZzX3Zwb3J0X3JlY2VpdmUoc3RydWN0IHZwb3J0ICp2cG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdE9WU19DQihza2IpLVx1MDAzZWlucHV0X3Zwb3J0ID0gdnBvcnQ7XG4gXHRPVlNfQ0Ioc2tiKS1cdTAwM2VtcnUgPSAwO1xuLVx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gMDtcbitcdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IFUzMl9NQVg7XG4gXHRPVlNfQ0Ioc2tiKS1cdTAwM2Vwcm9iYWJpbGl0eSA9IDA7XG4gXHRPVlNfQ0Ioc2tiKS1cdTAwM2V1cGNhbGxfcGlkID0gMDtcbiBcdGlmICh1bmxpa2VseShkZXZfbmV0KHNrYi1cdTAwM2VkZXYpICE9IG92c19kcF9nZXRfbmV0KHZwb3J0LVx1MDAzZWRwKSkpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI1OjU4LjY2MTUyNjYzMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNjU0MTYyOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgTGludXgga2VybmVsIHRoYXQncyBiZWVuIGFwcGxpZWQsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgbWFraW5nIGEgc2lnbmlmaWNhbnQgc2hpZnQgaW4gT3BlbiB2U3dpdGNoJ3MgY29yZSBwYWNrZXQgaGFuZGxpbmcuIEl0J3MgdG91Y2hpbmcgYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgLCBgbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNgLCBgbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmhgLCBhbmQgYG5ldC9vcGVudnN3aXRjaC92cG9ydC5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSByZWRlZmluaXRpb24gb2YgYE9WU19DQihza2IpLVx1MDAzZWN1dGxlbmAsIG1vdmluZyBpdCBmcm9tIFwiYnl0ZXMgdG8gcmVtb3ZlXCIgdG8gXCJieXRlcyB0byBwcmVzZXJ2ZS5cIiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gaG93IGl0IG1hbmlwdWxhdGVzIHBhY2tldHMsIGFuZCBpdCBpbXBhY3RzIGBwc2tiX3RyaW1gLCBgc2tiX3plcm9jb3B5YCwgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdXNhZ2Ugb2YgdGhhdCBgY3V0bGVuYCBmaWVsZC4gXG5cbkdpdmVuIG15IGV4cGVydGlzZSwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBNb2RpZnlpbmcgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgd2l0aGluIE9wZW4gdlN3aXRjaCBpcyBhIHByaW1lIHRhcmdldCBmb3IgdW5jb3ZlcmluZyB2dWxuZXJhYmlsaXRpZXMuIE5vdywgdGhlIHBsYW4gaXM6XG5cbjEuICAqKklkZW50aWZ5IEZvY3VzIFN5bWJvbHM6KiogSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBkaXJlY3RseSBpbnRlcmFjdHMgd2l0aCwgc28gSSBjYW4gdGFyZ2V0IG15IGZ1enppbmcgZWZmb3J0cyBlZmZpY2llbnRseS5cbjIuICAqKkRldGVybWluZSBFbmFibGUgQ29uZmlndXJhdGlvbnM6KiogSSdsbCBhbHNvIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBgQ09ORklHX2Agb3B0aW9ucyBhcmUgbmVjZXNzYXJ5IHRvIGJ1aWxkIGFuZCBlbmFibGUgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uYWxpdHkgc28gSSBjYW4gYnVpbGQgYSB0ZXN0IGNvbmZpZ3VyYXRpb24gdG8gdGVzdCB0aGlzIHByb3Blcmx5LlxuXG5MZXQncyBkcmlsbCBkb3duIGludG8gdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucy4gSSdtIHNlZWluZzogYGRvX291dHB1dGAsIGBleGVjdXRlX3BzYW1wbGVgLCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCwgYG92c19kcF9wcm9jZXNzX3BhY2tldGAsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCwgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLCBhbmQgYG92c192cG9ydF9yZWNlaXZlYC4gVGhlc2UgYXJlIGFsbCB3aXRoaW4gdGhlIGBuZXQvb3BlbnZzd2l0Y2gvYCBkaXJlY3RvcnksIHNvIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdyBJJ2xsIHNjYW4gdGhlIGBLY29uZmlnYCBmb3IgT3BlbiB2U3dpdGNoIHRvIGRldGVybWluZSB0aGUgcmVsZXZhbnQgQ09ORklHIG9wdGlvbnMgdG8gZW5hYmxlIHRoZSBmZWF0dXJlLCBzbyBJIGNhbiBzdGFydCBjcmFmdGluZyBteSBmdXp6aW5nIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDk2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDk6MjY6MjEuMzE1NjkzMDkzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDc2Njg5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9QRU5WU1dJVENIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL0tjb25maWctNS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OmNvbmZpZyBPUEVOVlNXSVRDSFxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaFxcXCJcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTQzLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjQ0OmNvbmZpZyBPUEVOVlNXSVRDSF9HUkVcXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy00NS1cXHR0cmlzdGF0ZSBcXFwiT3BlbiB2U3dpdGNoIEdSRSB0dW5uZWxpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU2LVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjU3OmNvbmZpZyBPUEVOVlNXSVRDSF9WWExBTlxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU4LVxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2ggVlhMQU4gdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy02OC1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OTpjb25maWcgT1BFTlZTV0lUQ0hfR0VORVZFXFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaCBHZW5ldmUgdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI2OjIyLjg2MzM2OTE2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMDg2NjA5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE9wZW4gdlN3aXRjaCBDb25maWd1cmF0aW9uIE1vZGlmaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgT1BFTlZTV0lUQ0hgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBpbml0aWFsIHNjYW4gaXMgdGVsbGluZyBtZSB3ZSBoYXZlIHNldmVyYWwga2V5IGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiB0d2Vha2VkLiBMZXQncyBzZWUuLi4gSSd2ZSBnb3QgYGRvX291dHB1dGAsIGBleGVjdXRlX3BzYW1wbGVgLCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCwgYG92c19kcF9wcm9jZXNzX3BhY2tldGAsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCwgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLCBhbmQgYG92c192cG9ydF9yZWNlaXZlYC4gVGhhdCBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIGNoYW5nZWQgY29kZS5cblxuTm93LCBhcyBhbiBleHBlcnQsIEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gYGRvX2V4ZWN1dGVfYWN0aW9uc2AgYW5kIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCBpbW1lZGlhdGVseSBzdGFuZCBvdXQgYXMgc3Ryb25nIGNhbmRpZGF0ZXMgZm9yIEZvY3VzU3ltYm9scy4gVGhlaXIgcm9sZSBpbiBhY3Rpb24gZXhlY3V0aW9uIGFuZCB1c2VyLXNwYWNlIHBhY2tldCBoYW5kbGluZyBtYWtlcyB0aGVtIHByaW1lIHRhcmdldHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gYGRvX291dHB1dGAgaXMgYWxzbyBjcnVjaWFsIGFuZCBkZXNlcnZlcyBhIGNsb3NlIGxvb2suXG5cblRoZW4gd2UgaGF2ZSBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAsIHdoaWNoIEkgcmVjb2duaXplIGFzIHRoZSBlbnRyeSBwb2ludCBmcm9tIG5ldGxpbmssIGFuZCBgb3ZzX3Zwb3J0X3JlY2VpdmVgLCB0aGUgbmV0d29yayBkZXZpY2UgZW50cnkgcG9pbnQuIFVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGludGVyZmFjZXMgYXJlIGFmZmVjdGVkIGlzIGVzc2VudGlhbCBmb3IgYSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgdGhlIGNoYW5nZXMuXG5cbkknbSBhbHNvIGN1cmlvdXMgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIG5lZWRlZC4gRm9yIGV4YW1wbGUsIGBleGVjdXRlX3BzYW1wbGVgICptaWdodCogcmVxdWlyZSBhIGBQU0FNUExFYCBjb25maWd1cmF0aW9uIHRvIHdvcmsgY29ycmVjdGx5LiBJJ2xsIG1ha2UgYSBtZW50YWwgbm90ZSB0byBjaGVjayBmb3IgdGhhdCBkZXBlbmRlbmN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTQ5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI2OjI4LjE3MjAzMzAyNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzY3NjM5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXhlY3V0ZV9wc2FtcGxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMTY5PXN0YXRpYyBpbnQgZXhlY3V0ZV9kZWNfdHRsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjA4LSNpZiBJU19FTkFCTEVEKENPTkZJR19QU0FNUExFKVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTIwOTpzdGF0aWMgdm9pZCBleGVjdXRlX3BzYW1wbGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyMTAtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIpXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyNDAtI2Vsc2VcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjEyNDE6c3RhdGljIHZvaWQgZXhlY3V0ZV9wc2FtcGxlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjQyLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMjQ3PXN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE0NDktXFx0XFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfUFNBTVBMRTpcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE0NTA6XFx0XFx0XFx0ZXhlY3V0ZV9wc2FtcGxlKGRwLCBza2IsIGEpO1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTQ1MS1cXHRcXHRcXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDk6MjY6MjguNTA4ODA0NDk1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA0NzM2NjUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZvY3VzU3ltYm9scyBGdW5jdGlvbnMgZm9yIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBDT05GSUdfUFNBTVBMRWAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCBmb3IgYGV4ZWN1dGVfcHNhbXBsZWAgdG8gd29yayBhcyBleHBlY3RlZC4gSG93ZXZlciwgaXQncyB0aGUgYE9QRU5WU1dJVENIYCBjb25maWd1cmF0aW9uIHRoYXQgc2VlbXMgdG8gaG91c2UgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIOKAkyBJJ2xsIGZvY3VzIG9uIGBPUEVOVlNXSVRDSGAgaW5pdGlhbGx5LCB3aXRoIGBQU0FNUExFYCBiZWluZyBhIG5pY2UtdG8taGF2ZSBpZiBpdCdzIHRoZXJlLlxuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlc2UgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gRm9jdXNTeW1ib2xzOiBgZG9fb3V0cHV0YCwgYGV4ZWN1dGVfcHNhbXBsZWAsIGBkb19leGVjdXRlX2FjdGlvbnNgLCBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAsIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgYW5kIGBvdnNfdnBvcnRfcmVjZWl2ZWAuIE9rYXksIGEgZmV3IHN0YW5kIG91dCBhcyBob3QgcGF0aCBmdW5jdGlvbnM6IGBvdnNfdnBvcnRfcmVjZWl2ZWAgLSB0aGF0J3MgY2FsbGVkIGZvciAqZXZlcnkqIHBhY2tldC4gVGhlbiB0aGVyZSdzIGBkb19leGVjdXRlX2FjdGlvbnNgIGFuZCBgZG9fb3V0cHV0YCB0b28g4oCTIHRob3NlIGFyZSBhbHNvIGhpZ2gtZnJlcXVlbmN5IGNhbGxzLiBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAsIHdlbGwsIHRoYXQncyB0cmlnZ2VyZWQgd2hlbiBhIHBhY2tldCBoZWFkcyB0byB1c2Vyc3BhY2UgKGxpa2UgYW4gdXBjYWxsKSwgc28gd2hpbGUgaXQgaXNuJ3QgYXMgZnJlcXVlbnQsIGl0J3Mgc3RpbGwgYSBjb21tb24gb3BlcmF0aW9uLiBUaGVuLCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQncyBoYW5kbGluZyBwYWNrZXRzIHNlbnQgZnJvbSB1c2Vyc3BhY2UgdG8gdGhlIGRhdGFwYXRoIGZvciBleGVjdXRpb24uIEZpbmFsbHksIHdlIGhhdmUgYGV4ZWN1dGVfcHNhbXBsZWAsIHdoaWNoIGlzIG9ubHkgY2FsbGVkIHdoZW4gdGhlIHBzYW1wbGUgYWN0aW9uIGlzIGV4cGxpY2l0bHkgZXhlY3V0ZWQuXG5cbkFoYSEgVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgT1ZTX0FDVElPTl9BVFRSX1RSVU5DYCBhbmQgaG93IHRoZSBgY3V0bGVuYCBwYXJhbWV0ZXIgaXMgaW50ZXJwcmV0ZWQsIHdoaWNoIG1lYW5zIEknbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBob3cgdGhhdCBhY3Rpb24gaXMgYmVpbmcgaW1wbGVtZW50ZWQgaW4gYGFjdGlvbnMuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzMCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwOToyNjozNC41NTYxNzM1NDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMzk4NTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk9WU19BQ1RJT05fQVRUUl9UUlVOQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTI0Nz1zdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjg2LVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTI4NzpcXHRcXHRjYXNlIE9WU19BQ1RJT05fQVRUUl9UUlVOQzoge1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTI4OC1cXHRcXHRcXHRzdHJ1Y3Qgb3ZzX2FjdGlvbl90cnVuYyAqdHJ1bmMgPSBubGFfZGF0YShhKTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYz01Mz1zdGF0aWMgYm9vbCBhY3Rpb25zX21heV9jaGFuZ2VfZmxvdyhjb25zdCBzdHJ1Y3QgbmxhdHRyICphY3Rpb25zKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTYzLVxcdFxcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1JFQ0lSQzpcXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmM6NjQ6XFx0XFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfVFJVTkM6XFxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTY1LVxcdFxcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1VTRVJTUEFDRTpcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYz0zMTQ3PXN0YXRpYyBpbnQgX19vdnNfbmxhX2NvcHlfYWN0aW9ucyhzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMtMzE3Ni1cXHRcXHRcXHRbT1ZTX0FDVElPTl9BVFRSX0NUX0NMRUFSXSA9IDAsXFxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jOjMxNzc6XFx0XFx0XFx0W09WU19BQ1RJT05fQVRUUl9UUlVOQ10gPSBzaXplb2Yoc3RydWN0IG92c19hY3Rpb25fdHJ1bmMpLFxcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYy0zMTc4LVxcdFxcdFxcdFtPVlNfQUNUSU9OX0FUVFJfUFVTSF9FVEhdID0gc2l6ZW9mKHN0cnVjdCBvdnNfYWN0aW9uX3B1c2hfZXRoKSxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYy0zMjE0LVxcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYzozMjE1OlxcdFxcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1RSVU5DOiB7XFxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTMyMTYtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IG92c19hY3Rpb25fdHJ1bmMgKnRydW5jID0gbmxhX2RhdGEoYSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI2OjM0LjcyODU3OTA4NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NDMwMjAyNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoIG9uIFBhY2tldCBIYW5kbGluZyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIGhvdyBgY3V0bGVuYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBzeXN0ZW0uIE15IGluaXRpYWwgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBjdXRsZW5gJ3MgdmFsdWUgaXMgZGVyaXZlZCBmcm9tIGBPVlNfQUNUSU9OX0FUVFJfVFJVTkNgLiBPa2F5LCB0aGF0J3MgY2xlYXIgZW5vdWdoLiBOb3csIHdoZXJlIGlzIGBjdXRsZW5gIGFjdHVhbGx5ICp1c2VkKj8gVGhlIHRleHQgaWRlbnRpZmllcyBgZG9fb3V0cHV0YCwgYHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXRgLCBhbmQgYGV4ZWN1dGVfcHNhbXBsZWAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBrZWVwIHRob3NlIGluIG1pbmQuIEFuZCwgb2YgY291cnNlLCB0aGUgYGRvX2V4ZWN1dGVfYWN0aW9uc2Agd2hpY2ggaXMgaW1wbGllZCBhcyBwYXJ0IG9mIHRoZSBvdmVyYWxsIGZsb3cuXG5cbk9rYXksIGxldCdzIHNoYXJwZW4gb3VyIGZvY3VzIGhlcmUuIEknbSBnb2luZyB0byByZWZpbmUgdGhpcyBsaXN0IHRvOlxuXG4qICAgYGRvX291dHB1dGBcbiogICBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGBcbiogICBgZXhlY3V0ZV9wc2FtcGxlYFxuKiAgIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYFxuXG5UaG9zZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIGFuYWx5emUgaW4gZGV0YWlsLiBJIGhhdmUgdG8gbWFrZSBzdXJlIEkgYW0gYWNjb3VudGluZyBmb3IgZXZlcnl0aGluZy5cblxuTm93LCBiZXlvbmQgdGhlIGNvcmUgZnVuY3Rpb25zLCBhcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gTGV0IG1lIHRoaW5rLi4uIE9oLCByaWdodCwgdGhlcmUncyBgT1BFTlZTV0lUQ0hgIGFuZCBgUFNBTVBMRWAuIFRob3NlIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LiBBbmQsIG9mIGNvdXJzZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgUFNBTVBMRWAgY29uZmlndXJhdGlvbiB0byBzZWUgaWYgdGhlcmUncyBhbnkgaW50ZXJhY3Rpb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NzEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDk6MjY6MzkuNTcxNjAyOTk3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODcxMDE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFNBTVBMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcHNhbXBsZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BzYW1wbGUvS2NvbmZpZy01LVxcbm5ldC9wc2FtcGxlL0tjb25maWc6NjptZW51Y29uZmlnIFBTQU1QTEVcXG5uZXQvcHNhbXBsZS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlBhY2tldC1zYW1wbGluZyBuZXRsaW5rIGNoYW5uZWxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI2OjM5LjYzMDMyMDM5N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjU4NDMzMzUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBQYWNrZXQgVHJ1bmNhdGlvbiBpbiBPcGVuIHZTd2l0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBob3cgaXQgaW1wYWN0cyBPcGVuIHZTd2l0Y2guIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgaG93IHRoZSBgT1ZTX0FDVElPTl9BVFRSX1RSVU5DYCBhY3Rpb24gYW5kIHRoZSBhc3NvY2lhdGVkIGBjdXRsZW5gIGZpZWxkIGFyZSBoYW5kbGVkLiBJdCdzIHRvdWNoaW5nIHNvbWUga2V5IGFyZWFzOiBwYWNrZXQgdHJ1bmNhdGlvbiBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbiwgb3V0cHV0LCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdXNlcnNwYWNlLiBUaGlzIGRlZmluaXRlbHkgd2FycmFudHMgZnV6emluZywgYXMgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIHZ1bG5lcmFiaWxpdGllcyBpbiBuZXR3b3JrIGRhdGFwYXRoIGNvZGUuXG5cbkkndmUgZGV0ZXJtaW5lZCB0aGF0IGBQU0FNUExFYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIGhlcmUuIEFuZCB5ZXMsIGBPUEVOVlNXSVRDSGAgaXMgc3VmZmljaWVudCB0byBlbmFibGUgdGhlIG5lZWRlZCBjb25maWd1cmF0aW9ucy5cblxuSW5pdGlhbGx5LCBJIHdhcyBjb25zaWRlcmluZyB0aGVzZSBmdW5jdGlvbnMgYXMgZm9jdXMgc3ltYm9sczogYGRvX291dHB1dGAsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCwgYGV4ZWN1dGVfcHNhbXBsZWAsIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgYW5kIGBkb19leGVjdXRlX2FjdGlvbnNgLiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgc3RyYXRlZ2ljLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBhdm9pZCBob3QgcGF0aCBmdW5jdGlvbnMuIGBkb19leGVjdXRlX2FjdGlvbnNgIGlzIHRoZSBtYWluIGFjdGlvbiBsb29wOyB0b28gYnJvYWQuIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCBkZWFscyB3aXRoIHVwY2FsbHMsIHNvIGl0J3MgbGVzcyBvZiBhIGhvdCBwYXRoLiBgZXhlY3V0ZV9wc2FtcGxlYCBhbmQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIGFyZSBzcGVjaWZpYyB0byBwYWNrZXQgZXhlY3V0aW9uIGNvbW1hbmRzIGZyb20gdXNlcnNwYWNlIGFuZCB0aGUgcHNhbXBsZSBhY3Rpb24uXG5cbkluaXRpYWxseSBJIGNvbnNpZGVyZWQgZXhjbHVkaW5nIGBkb19vdXRwdXRgLCBnaXZlbiBpdHMgY29tbW9uIG5hdHVyZS4gSG93ZXZlciwgYWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb2RlLCBpdCdzIGNsZWFyIHRoaXMgaXMgd2hlcmUgYSAqc2lnbmlmaWNhbnQqIGNoYW5nZSBpcyB0YWtpbmcgcGxhY2UgaW4gaG93IGBwc2tiX3RyaW1gIGFuZCB0aGUgYGN1dGxlbmAgZmllbGQgYXJlIGhhbmRsZWQuIEV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljIGluIGBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jYCwgSSdtIGdvaW5nIHRvIGluY2x1ZGUgaXQuXG5cbkFmdGVyIGNoZWNraW5nIHRoZSBjb2RlIGFnYWluLCBJIGFtIGdvaW5nIHRvIGZvY3VzIG9uOiBgZG9fb3V0cHV0YCwgYGV4ZWN1dGVfcHNhbXBsZWAsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCBhbmQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB3aGVyZSB0aGUgY29yZSBsb2dpYyBjaGFuZ2VzLiBUaGUgb3RoZXIgZnVuY3Rpb25zIGluaXRpYWxpemUgYW5kIHNldCB0aGUgY3V0bGVuLlxuXG5UaGVyZWZvcmUsIEkgd2lsbCBzZXQgdGhlc2UgYXMgbXkgZm9jdXMgc3ltYm9scy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODIyOCwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI2OjUyLjIxNDY1NzM3NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyODg3MDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiLFxuICAgIFwiUFNBTVBMRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX291dHB1dFwiLFxuICAgIFwiZXhlY3V0ZV9wc2FtcGxlXCIsXG4gICAgXCJxdWV1ZV91c2Vyc3BhY2VfcGFja2V0XCIsXG4gICAgXCJvdnNfcGFja2V0X2NtZF9leGVjdXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IHBhY2tldCB0cnVuY2F0aW9uIChPVlNfQUNUSU9OX0FUVFJfVFJVTkMpIGFuZCB0aGUgY3V0bGVuIGZpZWxkIGFyZSBoYW5kbGVkIGR1cmluZyBhY3Rpb24gZXhlY3V0aW9uLCBvdXRwdXQsIGFuZCB1cGNhbGxzIHRvIHVzZXJzcGFjZS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBkYXRhcGF0aCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiLFxuICAgIFwiUFNBTVBMRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX291dHB1dFwiLFxuICAgIFwiZXhlY3V0ZV9wc2FtcGxlXCIsXG4gICAgXCJxdWV1ZV91c2Vyc3BhY2VfcGFja2V0XCIsXG4gICAgXCJvdnNfcGFja2V0X2NtZF9leGVjdXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IHBhY2tldCB0cnVuY2F0aW9uIChPVlNfQUNUSU9OX0FUVFJfVFJVTkMpIGFuZCB0aGUgY3V0bGVuIGZpZWxkIGFyZSBoYW5kbGVkIGR1cmluZyBhY3Rpb24gZXhlY3V0aW9uLCBvdXRwdXQsIGFuZCB1cGNhbGxzIHRvIHVzZXJzcGFjZS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBkYXRhcGF0aCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfxvzj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 09:09:08 +0000 UTC FinishedAt: 2026-07-08 09:26:54 +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": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH", "PSAMPLE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH", "PSAMPLE" ], "series_id": "c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "do_output", "execute_psample", "queue_userspace_packet", "ovs_packet_cmd_execute" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDssCiAgICAmIzM0O1BTQU1QTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19vdXRwdXQmIzM0OywKICAgICYjMzQ7ZXhlY3V0ZV9wc2FtcGxlJiMzNDssCiAgICAmIzM0O3F1ZXVlX3VzZXJzcGFjZV9wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyBpbiBPcGVuIHZTd2l0Y2gsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgcGFja2V0IHRydW5jYXRpb24gKE9WU19BQ1RJT05fQVRUUl9UUlVOQykgYW5kIHRoZSBjdXRsZW4gZmllbGQgYXJlIGhhbmRsZWQgZHVyaW5nIGFjdGlvbiBleGVjdXRpb24sIG91dHB1dCwgYW5kIHVwY2FsbHMgdG8gdXNlcnNwYWNlLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBuZXR3b3JrIGRhdGFwYXRoIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjYxMDdhM2MwODRlYzljMjVlYTRlYzE5NDhlZDcwMmFkNzVmYTg1NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDk6MjU6NTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbmluZGV4IDE0MDM4OGExOGFlMDQyLi41MTNmY2E2YThlOGE0OCAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbkBAIC04MzcsMTIgJiM0Mzs4MzcsOCBAQCBzdGF0aWMgdm9pZCBkb19vdXRwdXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG91dF9wb3J0LFxuIFx0XHR1MTYgbXJ1ID0gT1ZTX0NCKHNrYiktXHUwMDNlbXJ1O1xuIFx0XHR1MzIgY3V0bGVuID0gT1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuO1xuIFxuLVx0XHRpZiAodW5saWtlbHkoY3V0bGVuIFx1MDAzZSAwKSkge1xuLVx0XHRcdGlmIChza2ItXHUwMDNlbGVuIC0gY3V0bGVuIFx1MDAzZSBvdnNfbWFjX2hlYWRlcl9sZW4oa2V5KSlcbi1cdFx0XHRcdHBza2JfdHJpbShza2IsIHNrYi1cdTAwM2VsZW4gLSBjdXRsZW4pO1xuLVx0XHRcdGVsc2Vcbi1cdFx0XHRcdHBza2JfdHJpbShza2IsIG92c19tYWNfaGVhZGVyX2xlbihrZXkpKTtcbi1cdFx0fVxuJiM0MztcdFx0aWYgKHVubGlrZWx5KGN1dGxlbiBcdTAwM2Mgc2tiLVx1MDAzZWxlbikpXG4mIzQzO1x0XHRcdHBza2JfdHJpbShza2IsIG1heChjdXRsZW4sIG92c19tYWNfaGVhZGVyX2xlbihrZXkpKSk7XG4gXG4gXHRcdGlmIChsaWtlbHkoIW1ydSB8fFxuIFx0XHQgICAgICAgICAgIChza2ItXHUwMDNlbGVuIFx1MDAzYz0gbXJ1ICYjNDM7IHZwb3J0LVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pKSkge1xuQEAgLTEyMzQsNyAmIzQzOzEyMzAsNyBAQCBzdGF0aWMgdm9pZCBleGVjdXRlX3BzYW1wbGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdHBzYW1wbGVfZ3JvdXAubmV0ID0gb3ZzX2RwX2dldF9uZXQoZHApO1xuIFx0bWQuaW5faWZpbmRleCA9IE9WU19DQihza2IpLVx1MDAzZWlucHV0X3Zwb3J0LVx1MDAzZWRldi1cdTAwM2VpZmluZGV4O1xuLVx0bWQudHJ1bmNfc2l6ZSA9IHNrYi1cdTAwM2VsZW4gLSBPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW47XG4mIzQzO1x0bWQudHJ1bmNfc2l6ZSA9IG1pbihza2ItXHUwMDNlbGVuLCBPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW4pO1xuIFx0bWQucmF0ZV9hc19wcm9iYWJpbGl0eSA9IDE7XG4gXG4gXHRyYXRlID0gT1ZTX0NCKHNrYiktXHUwMDNlcHJvYmFiaWxpdHkgPyBPVlNfQ0Ioc2tiKS1cdTAwM2Vwcm9iYWJpbGl0eSA6IFUzMl9NQVg7XG5AQCAtMTI4NCwyMiAmIzQzOzEyODAsMjEgQEAgc3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRjbG9uZSA9IHNrYl9jbG9uZShza2IsIEdGUF9BVE9NSUMpO1xuIFx0XHRcdGlmIChjbG9uZSlcbiBcdFx0XHRcdGRvX291dHB1dChkcCwgY2xvbmUsIHBvcnQsIGtleSk7XG4tXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gMDtcbiYjNDM7XHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFxuIFx0XHRjYXNlIE9WU19BQ1RJT05fQVRUUl9UUlVOQzoge1xuIFx0XHRcdHN0cnVjdCBvdnNfYWN0aW9uX3RydW5jICp0cnVuYyA9IG5sYV9kYXRhKGEpO1xuIFxuLVx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzZSB0cnVuYy1cdTAwM2VtYXhfbGVuKVxuLVx0XHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gc2tiLVx1MDAzZWxlbiAtIHRydW5jLVx1MDAzZW1heF9sZW47XG4mIzQzO1x0XHRcdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IHRydW5jLVx1MDAzZW1heF9sZW47XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcbiBcdFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfVVNFUlNQQUNFOlxuIFx0XHRcdG91dHB1dF91c2Vyc3BhY2UoZHAsIHNrYiwga2V5LCBhLCBhdHRyLFxuIFx0XHRcdFx0XHRcdCAgICAgbGVuLCBPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW4pO1xuLVx0XHRcdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IDA7XG4mIzQzO1x0XHRcdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IFUzMl9NQVg7XG4gXHRcdFx0aWYgKG5sYV9pc19sYXN0KGEsIHJlbSkpIHtcbiBcdFx0XHRcdGNvbnN1bWVfc2tiKHNrYik7XG4gXHRcdFx0XHRyZXR1cm4gMDtcbkBAIC0xNDUzLDcgJiM0MzsxNDQ4LDcgQEAgc3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfUFNBTVBMRTpcbiBcdFx0XHRleGVjdXRlX3BzYW1wbGUoZHAsIHNrYiwgYSk7XG4tXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gMDtcbiYjNDM7XHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcbiBcdFx0XHRpZiAobmxhX2lzX2xhc3QoYSwgcmVtKSkge1xuIFx0XHRcdFx0Y29uc3VtZV9za2Ioc2tiKTtcbiBcdFx0XHRcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNcbmluZGV4IGYwMTY0ODE3ZDliNzIzLi5lYWYzMzJiMTU2ZDczMSAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguY1xuQEAgLTI3Niw3ICYjNDM7Mjc2LDcgQEAgdm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXG4gXHRcdFx0dXBjYWxsLnBvcnRpZCA9IG92c192cG9ydF9maW5kX3VwY2FsbF9wb3J0aWQocCwgc2tiKTtcbiBcbiBcdFx0dXBjYWxsLm1ydSA9IE9WU19DQihza2IpLVx1MDAzZW1ydTtcbi1cdFx0ZXJyb3IgPSBvdnNfZHBfdXBjYWxsKGRwLCBza2IsIGtleSwgXHUwMDI2dXBjYWxsLCAwKTtcbiYjNDM7XHRcdGVycm9yID0gb3ZzX2RwX3VwY2FsbChkcCwgc2tiLCBrZXksIFx1MDAyNnVwY2FsbCwgVTMyX01BWCk7XG4gXHRcdHN3aXRjaCAoZXJyb3IpIHtcbiBcdFx0Y2FzZSAwOlxuIFx0XHRjYXNlIC1FQUdBSU46XG5AQCAtNDU3LDcgJiM0Mzs0NTcsOCBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCBza19idWZmICpuc2tiID0gTlVMTDtcbiBcdHN0cnVjdCBza19idWZmICp1c2VyX3NrYiA9IE5VTEw7IC8qIHRvIGJlIHF1ZXVlZCB0byB1c2Vyc3BhY2UgKi9cbiBcdHN0cnVjdCBubGF0dHIgKm5sYTtcbi1cdHNpemVfdCBsZW47XG4mIzQzO1x0c2l6ZV90IG1zZ19zaXplO1xuJiM0MztcdHNpemVfdCBza2JfbGVuO1xuIFx0dW5zaWduZWQgaW50IGhsZW47XG4gXHRpbnQgZXJyLCBkcF9pZmluZGV4O1xuIFx0dTY0IGhhc2g7XG5AQCAtNDc4LDcgJiM0Mzs0NzksOCBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0c2tiID0gbnNrYjtcbiBcdH1cbiBcbi1cdGlmIChubGFfYXR0cl9zaXplKHNrYi1cdTAwM2VsZW4pIFx1MDAzZSBVU0hSVF9NQVgpIHtcbiYjNDM7XHRza2JfbGVuID0gbWluKHNrYi1cdTAwM2VsZW4sIGN1dGxlbik7XG4mIzQzO1x0aWYgKG5sYV9hdHRyX3NpemUoc2tiX2xlbikgXHUwMDNlIFVTSFJUX01BWCkge1xuIFx0XHRlcnIgPSAtRUZCSUc7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuQEAgLTQ5MywxMyAmIzQzOzQ5NSwxMyBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIHBhZGRpbmcgbG9naWMuIE9ubHkgcGVyZm9ybSB6ZXJvY29weSBpZiBwYWRkaW5nIGlzIG5vdCByZXF1aXJlZC5cbiBcdCAqL1xuIFx0aWYgKGRwLVx1MDAzZXVzZXJfZmVhdHVyZXMgXHUwMDI2IE9WU19EUF9GX1VOQUxJR05FRClcbi1cdFx0aGxlbiA9IHNrYl96ZXJvY29weV9oZWFkbGVuKHNrYik7XG4mIzQzO1x0XHRobGVuID0gbWluKHNrYl96ZXJvY29weV9oZWFkbGVuKHNrYiksIGN1dGxlbik7XG4gXHRlbHNlXG4tXHRcdGhsZW4gPSBza2ItXHUwMDNlbGVuO1xuJiM0MztcdFx0aGxlbiA9IHNrYl9sZW47XG4gXG4tXHRsZW4gPSB1cGNhbGxfbXNnX3NpemUodXBjYWxsX2luZm8sIGhsZW4gLSBjdXRsZW4sXG4tXHRcdFx0ICAgICAgT1ZTX0NCKHNrYiktXHUwMDNlYWN0c19vcmlnbGVuKTtcbi1cdHVzZXJfc2tiID0gZ2VubG1zZ19uZXcobGVuLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRtc2dfc2l6ZSA9IHVwY2FsbF9tc2dfc2l6ZSh1cGNhbGxfaW5mbywgaGxlbixcbiYjNDM7XHRcdFx0XHQgICBPVlNfQ0Ioc2tiKS1cdTAwM2VhY3RzX29yaWdsZW4pO1xuJiM0MztcdHVzZXJfc2tiID0gZ2VubG1zZ19uZXcobXNnX3NpemUsIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCF1c2VyX3NrYikge1xuIFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG91dDtcbkBAIC01NjAsNyAmIzQzOzU2Miw3IEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0fVxuIFxuIFx0LyogQWRkIE9WU19QQUNLRVRfQVRUUl9MRU4gd2hlbiBwYWNrZXQgaXMgdHJ1bmNhdGVkICovXG4tXHRpZiAoY3V0bGVuIFx1MDAzZSAwIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmIChza2JfbGVuIFx1MDAzYyBza2ItXHUwMDNlbGVuIFx1MDAyNlx1MDAyNlxuIFx0ICAgIG5sYV9wdXRfdTMyKHVzZXJfc2tiLCBPVlNfUEFDS0VUX0FUVFJfTEVOLCBza2ItXHUwMDNlbGVuKSkge1xuIFx0XHRlcnIgPSAtRU5PQlVGUztcbiBcdFx0Z290byBvdXQ7XG5AQCAtNTg1LDkgJiM0Mzs1ODcsOSBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZXJyID0gLUVOT0JVRlM7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuLVx0bmxhLVx1MDAzZW5sYV9sZW4gPSBubGFfYXR0cl9zaXplKHNrYi1cdTAwM2VsZW4gLSBjdXRsZW4pO1xuJiM0MztcdG5sYS1cdTAwM2VubGFfbGVuID0gbmxhX2F0dHJfc2l6ZShza2JfbGVuKTtcbiBcbi1cdGVyciA9IHNrYl96ZXJvY29weSh1c2VyX3NrYiwgc2tiLCBza2ItXHUwMDNlbGVuIC0gY3V0bGVuLCBobGVuKTtcbiYjNDM7XHRlcnIgPSBza2JfemVyb2NvcHkodXNlcl9za2IsIHNrYiwgc2tiX2xlbiwgaGxlbik7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIG91dDtcbiBcbkBAIC02NDQsNiAmIzQzOzY0Niw3IEBAIHN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRwYWNrZXQtXHUwMDNlaWdub3JlX2RmID0gMTtcbiBcdH1cbiBcdE9WU19DQihwYWNrZXQpLVx1MDAzZW1ydSA9IG1ydTtcbiYjNDM7XHRPVlNfQ0IocGFja2V0KS1cdTAwM2VjdXRsZW4gPSBVMzJfTUFYO1xuIFxuIFx0aWYgKGFbT1ZTX1BBQ0tFVF9BVFRSX0hBU0hdKSB7XG4gXHRcdGhhc2ggPSBubGFfZ2V0X3U2NChhW09WU19QQUNLRVRfQVRUUl9IQVNIXSk7XG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmggYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaFxuaW5kZXggZGIwYzNlNjlkNjZjYWMuLjY5NjY0MGU4OGZhN2UzIDEwMDY0NFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oXG5AQCAtMTE4LDcgJiM0MzsxMTgsNyBAQCBzdHJ1Y3QgZGF0YXBhdGgge1xuICAqIEBtcnU6IFRoZSBtYXhpbXVtIHJlY2VpdmVkIGZyYWdlbWVudCBzaXplOyAwIGlmIHRoZSBwYWNrZXQgaXMgbm90XG4gICogZnJhZ21lbnRlZC5cbiAgKiBAYWN0c19vcmlnbGVuOiBUaGUgbmV0bGluayBzaXplIG9mIHRoZSBmbG93IGFjdGlvbnMgYXBwbGllZCB0byB0aGlzIHNrYi5cbi0gKiBAY3V0bGVuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHBhY2tldCBlbmQgdG8gYmUgcmVtb3ZlZC5cbiYjNDM7ICogQGN1dGxlbjogVGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgcGFja2V0IHRvIHByZXNlcnZlIG9uIG91dHB1dC5cbiAgKiBAcHJvYmFiaWxpdHk6IFRoZSBzYW1wbGluZyBwcm9iYWJpbGl0eSB0aGF0IHdhcyBhcHBsaWVkIHRvIHRoaXMgc2tiOyAwIG1lYW5zXG4gICogbm8gc2FtcGxpbmcgaGFzIG9jY3VycmVkOyBVMzJfTUFYIG1lYW5zIDEwMCUgcHJvYmFiaWxpdHkuXG4gICogQHVwY2FsbF9waWQ6IE5ldGxpbmsgc29ja2V0IFBJRCB0byB1c2UgZm9yIHNlbmRpbmcgdGhpcyBwYWNrZXQgdG8gdXNlcnNwYWNlO1xuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LmNcbmluZGV4IDU2YjJlMmQxYTc0OWY4Li4xMjc0MTQ4NWM5MzkzZCAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuY1xuQEAgLTUwMiw3ICYjNDM7NTAyLDcgQEAgaW50IG92c192cG9ydF9yZWNlaXZlKHN0cnVjdCB2cG9ydCAqdnBvcnQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRPVlNfQ0Ioc2tiKS1cdTAwM2VpbnB1dF92cG9ydCA9IHZwb3J0O1xuIFx0T1ZTX0NCKHNrYiktXHUwMDNlbXJ1ID0gMDtcbi1cdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IDA7XG4mIzQzO1x0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcbiBcdE9WU19DQihza2IpLVx1MDAzZXByb2JhYmlsaXR5ID0gMDtcbiBcdE9WU19DQihza2IpLVx1MDAzZXVwY2FsbF9waWQgPSAwO1xuIFx0aWYgKHVubGlrZWx5KGRldl9uZXQoc2tiLVx1MDAzZWRldikgIT0gb3ZzX2RwX2dldF9uZXQodnBvcnQtXHUwMDNlZHApKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDssCiAgICAmIzM0O1BTQU1QTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19vdXRwdXQmIzM0OywKICAgICYjMzQ7ZXhlY3V0ZV9wc2FtcGxlJiMzNDssCiAgICAmIzM0O3F1ZXVlX3VzZXJzcGFjZV9wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyBpbiBPcGVuIHZTd2l0Y2gsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgcGFja2V0IHRydW5jYXRpb24gKE9WU19BQ1RJT05fQVRUUl9UUlVOQykgYW5kIHRoZSBjdXRsZW4gZmllbGQgYXJlIGhhbmRsZWQgZHVyaW5nIGFjdGlvbiBleGVjdXRpb24sIG91dHB1dCwgYW5kIHVwY2FsbHMgdG8gdXNlcnNwYWNlLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBuZXR3b3JrIGRhdGFwYXRoIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNjEwN2EzYzA4NGVjOWMyNWVhNGVjMTk0OGVkNzAyYWQ3NWZhODU1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAwOToyNTo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCmluZGV4IDE0MDM4OGExOGFlMDQyLi41MTNmY2E2YThlOGE0OCAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCkBAIC04MzcsMTIgJiM0Mzs4MzcsOCBAQCBzdGF0aWMgdm9pZCBkb19vdXRwdXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG91dF9wb3J0LAogCQl1MTYgbXJ1ID0gT1ZTX0NCKHNrYiktJmd0O21ydTsKIAkJdTMyIGN1dGxlbiA9IE9WU19DQihza2IpLSZndDtjdXRsZW47CiAKLQkJaWYgKHVubGlrZWx5KGN1dGxlbiAmZ3Q7IDApKSB7Ci0JCQlpZiAoc2tiLSZndDtsZW4gLSBjdXRsZW4gJmd0OyBvdnNfbWFjX2hlYWRlcl9sZW4oa2V5KSkKLQkJCQlwc2tiX3RyaW0oc2tiLCBza2ItJmd0O2xlbiAtIGN1dGxlbik7Ci0JCQllbHNlCi0JCQkJcHNrYl90cmltKHNrYiwgb3ZzX21hY19oZWFkZXJfbGVuKGtleSkpOwotCQl9CiYjNDM7CQlpZiAodW5saWtlbHkoY3V0bGVuICZsdDsgc2tiLSZndDtsZW4pKQomIzQzOwkJCXBza2JfdHJpbShza2IsIG1heChjdXRsZW4sIG92c19tYWNfaGVhZGVyX2xlbihrZXkpKSk7CiAKIAkJaWYgKGxpa2VseSghbXJ1IHx8CiAJCSAgICAgICAgICAgKHNrYi0mZ3Q7bGVuICZsdDs9IG1ydSAmIzQzOyB2cG9ydC0mZ3Q7ZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pKSkgewpAQCAtMTIzNCw3ICYjNDM7MTIzMCw3IEBAIHN0YXRpYyB2b2lkIGV4ZWN1dGVfcHNhbXBsZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJcHNhbXBsZV9ncm91cC5uZXQgPSBvdnNfZHBfZ2V0X25ldChkcCk7CiAJbWQuaW5faWZpbmRleCA9IE9WU19DQihza2IpLSZndDtpbnB1dF92cG9ydC0mZ3Q7ZGV2LSZndDtpZmluZGV4OwotCW1kLnRydW5jX3NpemUgPSBza2ItJmd0O2xlbiAtIE9WU19DQihza2IpLSZndDtjdXRsZW47CiYjNDM7CW1kLnRydW5jX3NpemUgPSBtaW4oc2tiLSZndDtsZW4sIE9WU19DQihza2IpLSZndDtjdXRsZW4pOwogCW1kLnJhdGVfYXNfcHJvYmFiaWxpdHkgPSAxOwogCiAJcmF0ZSA9IE9WU19DQihza2IpLSZndDtwcm9iYWJpbGl0eSA/IE9WU19DQihza2IpLSZndDtwcm9iYWJpbGl0eSA6IFUzMl9NQVg7CkBAIC0xMjg0LDIyICYjNDM7MTI4MCwyMSBAQCBzdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJY2xvbmUgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTsKIAkJCWlmIChjbG9uZSkKIAkJCQlkb19vdXRwdXQoZHAsIGNsb25lLCBwb3J0LCBrZXkpOwotCQkJT1ZTX0NCKHNrYiktJmd0O2N1dGxlbiA9IDA7CiYjNDM7CQkJT1ZTX0NCKHNrYiktJmd0O2N1dGxlbiA9IFUzMl9NQVg7CiAJCQlicmVhazsKIAkJfQogCiAJCWNhc2UgT1ZTX0FDVElPTl9BVFRSX1RSVU5DOiB7CiAJCQlzdHJ1Y3Qgb3ZzX2FjdGlvbl90cnVuYyAqdHJ1bmMgPSBubGFfZGF0YShhKTsKIAotCQkJaWYgKHNrYi0mZ3Q7bGVuICZndDsgdHJ1bmMtJmd0O21heF9sZW4pCi0JCQkJT1ZTX0NCKHNrYiktJmd0O2N1dGxlbiA9IHNrYi0mZ3Q7bGVuIC0gdHJ1bmMtJmd0O21heF9sZW47CiYjNDM7CQkJT1ZTX0NCKHNrYiktJmd0O2N1dGxlbiA9IHRydW5jLSZndDttYXhfbGVuOwogCQkJYnJlYWs7CiAJCX0KIAogCQljYXNlIE9WU19BQ1RJT05fQVRUUl9VU0VSU1BBQ0U6CiAJCQlvdXRwdXRfdXNlcnNwYWNlKGRwLCBza2IsIGtleSwgYSwgYXR0ciwKIAkJCQkJCSAgICAgbGVuLCBPVlNfQ0Ioc2tiKS0mZ3Q7Y3V0bGVuKTsKLQkJCU9WU19DQihza2IpLSZndDtjdXRsZW4gPSAwOwomIzQzOwkJCU9WU19DQihza2IpLSZndDtjdXRsZW4gPSBVMzJfTUFYOwogCQkJaWYgKG5sYV9pc19sYXN0KGEsIHJlbSkpIHsKIAkJCQljb25zdW1lX3NrYihza2IpOwogCQkJCXJldHVybiAwOwpAQCAtMTQ1Myw3ICYjNDM7MTQ0OCw3IEBAIHN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsCiAKIAkJY2FzZSBPVlNfQUNUSU9OX0FUVFJfUFNBTVBMRToKIAkJCWV4ZWN1dGVfcHNhbXBsZShkcCwgc2tiLCBhKTsKLQkJCU9WU19DQihza2IpLSZndDtjdXRsZW4gPSAwOwomIzQzOwkJCU9WU19DQihza2IpLSZndDtjdXRsZW4gPSBVMzJfTUFYOwogCQkJaWYgKG5sYV9pc19sYXN0KGEsIHJlbSkpIHsKIAkJCQljb25zdW1lX3NrYihza2IpOwogCQkJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYwppbmRleCBmMDE2NDgxN2Q5YjcyMy4uZWFmMzMyYjE1NmQ3MzEgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jCkBAIC0yNzYsNyAmIzQzOzI3Niw3IEBAIHZvaWQgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KQogCQkJdXBjYWxsLnBvcnRpZCA9IG92c192cG9ydF9maW5kX3VwY2FsbF9wb3J0aWQocCwgc2tiKTsKIAogCQl1cGNhbGwubXJ1ID0gT1ZTX0NCKHNrYiktJmd0O21ydTsKLQkJZXJyb3IgPSBvdnNfZHBfdXBjYWxsKGRwLCBza2IsIGtleSwgJmFtcDt1cGNhbGwsIDApOwomIzQzOwkJZXJyb3IgPSBvdnNfZHBfdXBjYWxsKGRwLCBza2IsIGtleSwgJmFtcDt1cGNhbGwsIFUzMl9NQVgpOwogCQlzd2l0Y2ggKGVycm9yKSB7CiAJCWNhc2UgMDoKIAkJY2FzZSAtRUFHQUlOOgpAQCAtNDU3LDcgJiM0Mzs0NTcsOCBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IE5VTEw7CiAJc3RydWN0IHNrX2J1ZmYgKnVzZXJfc2tiID0gTlVMTDsgLyogdG8gYmUgcXVldWVkIHRvIHVzZXJzcGFjZSAqLwogCXN0cnVjdCBubGF0dHIgKm5sYTsKLQlzaXplX3QgbGVuOwomIzQzOwlzaXplX3QgbXNnX3NpemU7CiYjNDM7CXNpemVfdCBza2JfbGVuOwogCXVuc2lnbmVkIGludCBobGVuOwogCWludCBlcnIsIGRwX2lmaW5kZXg7CiAJdTY0IGhhc2g7CkBAIC00NzgsNyAmIzQzOzQ3OSw4IEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlza2IgPSBuc2tiOwogCX0KIAotCWlmIChubGFfYXR0cl9zaXplKHNrYi0mZ3Q7bGVuKSAmZ3Q7IFVTSFJUX01BWCkgewomIzQzOwlza2JfbGVuID0gbWluKHNrYi0mZ3Q7bGVuLCBjdXRsZW4pOwomIzQzOwlpZiAobmxhX2F0dHJfc2l6ZShza2JfbGVuKSAmZ3Q7IFVTSFJUX01BWCkgewogCQllcnIgPSAtRUZCSUc7CiAJCWdvdG8gb3V0OwogCX0KQEAgLTQ5MywxMyAmIzQzOzQ5NSwxMyBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiBwYWRkaW5nIGxvZ2ljLiBPbmx5IHBlcmZvcm0gemVyb2NvcHkgaWYgcGFkZGluZyBpcyBub3QgcmVxdWlyZWQuCiAJICovCiAJaWYgKGRwLSZndDt1c2VyX2ZlYXR1cmVzICZhbXA7IE9WU19EUF9GX1VOQUxJR05FRCkKLQkJaGxlbiA9IHNrYl96ZXJvY29weV9oZWFkbGVuKHNrYik7CiYjNDM7CQlobGVuID0gbWluKHNrYl96ZXJvY29weV9oZWFkbGVuKHNrYiksIGN1dGxlbik7CiAJZWxzZQotCQlobGVuID0gc2tiLSZndDtsZW47CiYjNDM7CQlobGVuID0gc2tiX2xlbjsKIAotCWxlbiA9IHVwY2FsbF9tc2dfc2l6ZSh1cGNhbGxfaW5mbywgaGxlbiAtIGN1dGxlbiwKLQkJCSAgICAgIE9WU19DQihza2IpLSZndDthY3RzX29yaWdsZW4pOwotCXVzZXJfc2tiID0gZ2VubG1zZ19uZXcobGVuLCBHRlBfQVRPTUlDKTsKJiM0MzsJbXNnX3NpemUgPSB1cGNhbGxfbXNnX3NpemUodXBjYWxsX2luZm8sIGhsZW4sCiYjNDM7CQkJCSAgIE9WU19DQihza2IpLSZndDthY3RzX29yaWdsZW4pOwomIzQzOwl1c2VyX3NrYiA9IGdlbmxtc2dfbmV3KG1zZ19zaXplLCBHRlBfQVRPTUlDKTsKIAlpZiAoIXVzZXJfc2tiKSB7CiAJCWVyciA9IC1FTk9NRU07CiAJCWdvdG8gb3V0OwpAQCAtNTYwLDcgJiM0Mzs1NjIsNyBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl9CiAKIAkvKiBBZGQgT1ZTX1BBQ0tFVF9BVFRSX0xFTiB3aGVuIHBhY2tldCBpcyB0cnVuY2F0ZWQgKi8KLQlpZiAoY3V0bGVuICZndDsgMCAmYW1wOyZhbXA7CiYjNDM7CWlmIChza2JfbGVuICZsdDsgc2tiLSZndDtsZW4gJmFtcDsmYW1wOwogCSAgICBubGFfcHV0X3UzMih1c2VyX3NrYiwgT1ZTX1BBQ0tFVF9BVFRSX0xFTiwgc2tiLSZndDtsZW4pKSB7CiAJCWVyciA9IC1FTk9CVUZTOwogCQlnb3RvIG91dDsKQEAgLTU4NSw5ICYjNDM7NTg3LDkgQEAgc3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsCiAJCWVyciA9IC1FTk9CVUZTOwogCQlnb3RvIG91dDsKIAl9Ci0JbmxhLSZndDtubGFfbGVuID0gbmxhX2F0dHJfc2l6ZShza2ItJmd0O2xlbiAtIGN1dGxlbik7CiYjNDM7CW5sYS0mZ3Q7bmxhX2xlbiA9IG5sYV9hdHRyX3NpemUoc2tiX2xlbik7CiAKLQllcnIgPSBza2JfemVyb2NvcHkodXNlcl9za2IsIHNrYiwgc2tiLSZndDtsZW4gLSBjdXRsZW4sIGhsZW4pOwomIzQzOwllcnIgPSBza2JfemVyb2NvcHkodXNlcl9za2IsIHNrYiwgc2tiX2xlbiwgaGxlbik7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CiAKQEAgLTY0NCw2ICYjNDM7NjQ2LDcgQEAgc3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJCXBhY2tldC0mZ3Q7aWdub3JlX2RmID0gMTsKIAl9CiAJT1ZTX0NCKHBhY2tldCktJmd0O21ydSA9IG1ydTsKJiM0MzsJT1ZTX0NCKHBhY2tldCktJmd0O2N1dGxlbiA9IFUzMl9NQVg7CiAKIAlpZiAoYVtPVlNfUEFDS0VUX0FUVFJfSEFTSF0pIHsKIAkJaGFzaCA9IG5sYV9nZXRfdTY0KGFbT1ZTX1BBQ0tFVF9BVFRSX0hBU0hdKTsKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgKaW5kZXggZGIwYzNlNjlkNjZjYWMuLjY5NjY0MGU4OGZhN2UzIDEwMDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaApAQCAtMTE4LDcgJiM0MzsxMTgsNyBAQCBzdHJ1Y3QgZGF0YXBhdGggewogICogQG1ydTogVGhlIG1heGltdW0gcmVjZWl2ZWQgZnJhZ2VtZW50IHNpemU7IDAgaWYgdGhlIHBhY2tldCBpcyBub3QKICAqIGZyYWdtZW50ZWQuCiAgKiBAYWN0c19vcmlnbGVuOiBUaGUgbmV0bGluayBzaXplIG9mIHRoZSBmbG93IGFjdGlvbnMgYXBwbGllZCB0byB0aGlzIHNrYi4KLSAqIEBjdXRsZW46IFRoZSBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgcGFja2V0IGVuZCB0byBiZSByZW1vdmVkLgomIzQzOyAqIEBjdXRsZW46IFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHBhY2tldCB0byBwcmVzZXJ2ZSBvbiBvdXRwdXQuCiAgKiBAcHJvYmFiaWxpdHk6IFRoZSBzYW1wbGluZyBwcm9iYWJpbGl0eSB0aGF0IHdhcyBhcHBsaWVkIHRvIHRoaXMgc2tiOyAwIG1lYW5zCiAgKiBubyBzYW1wbGluZyBoYXMgb2NjdXJyZWQ7IFUzMl9NQVggbWVhbnMgMTAwJSBwcm9iYWJpbGl0eS4KICAqIEB1cGNhbGxfcGlkOiBOZXRsaW5rIHNvY2tldCBQSUQgdG8gdXNlIGZvciBzZW5kaW5nIHRoaXMgcGFja2V0IHRvIHVzZXJzcGFjZTsKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LmMKaW5kZXggNTZiMmUyZDFhNzQ5ZjguLjEyNzQxNDg1YzkzOTNkIDEwMDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYwpAQCAtNTAyLDcgJiM0Mzs1MDIsNyBAQCBpbnQgb3ZzX3Zwb3J0X3JlY2VpdmUoc3RydWN0IHZwb3J0ICp2cG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCU9WU19DQihza2IpLSZndDtpbnB1dF92cG9ydCA9IHZwb3J0OwogCU9WU19DQihza2IpLSZndDttcnUgPSAwOwotCU9WU19DQihza2IpLSZndDtjdXRsZW4gPSAwOwomIzQzOwlPVlNfQ0Ioc2tiKS0mZ3Q7Y3V0bGVuID0gVTMyX01BWDsKIAlPVlNfQ0Ioc2tiKS0mZ3Q7cHJvYmFiaWxpdHkgPSAwOwogCU9WU19DQihza2IpLSZndDt1cGNhbGxfcGlkID0gMDsKIAlpZiAodW5saWtlbHkoZGV2X25ldChza2ItJmd0O2RldikgIT0gb3ZzX2RwX2dldF9uZXQodnBvcnQtJmd0O2RwKSkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ5NgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgTGludXgga2VybmVsIHRoYXQmIzM5O3MgYmVlbiBhcHBsaWVkLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtYWtpbmcgYSBzaWduaWZpY2FudCBzaGlmdCBpbiBPcGVuIHZTd2l0Y2gmIzM5O3MgY29yZSBwYWNrZXQgaGFuZGxpbmcuIEl0JiMzOTtzIHRvdWNoaW5nIGBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jYCwgYG5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jYCwgYG5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oYCwgYW5kIGBuZXQvb3BlbnZzd2l0Y2gvdnBvcnQuY2AuIFRoZSBjb3JlIGNoYW5nZSBpcyB0aGUgcmVkZWZpbml0aW9uIG9mIGBPVlNfQ0Ioc2tiKS0mZ3Q7Y3V0bGVuYCwgbW92aW5nIGl0IGZyb20gJiMzNDtieXRlcyB0byByZW1vdmUmIzM0OyB0byAmIzM0O2J5dGVzIHRvIHByZXNlcnZlLiYjMzQ7IFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gaG93IGl0IG1hbmlwdWxhdGVzIHBhY2tldHMsIGFuZCBpdCBpbXBhY3RzIGBwc2tiX3RyaW1gLCBgc2tiX3plcm9jb3B5YCwgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdXNhZ2Ugb2YgdGhhdCBgY3V0bGVuYCBmaWVsZC4gCgpHaXZlbiBteSBleHBlcnRpc2UsIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gTW9kaWZ5aW5nIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHdpdGhpbiBPcGVuIHZTd2l0Y2ggaXMgYSBwcmltZSB0YXJnZXQgZm9yIHVuY292ZXJpbmcgdnVsbmVyYWJpbGl0aWVzLiBOb3csIHRoZSBwbGFuIGlzOgoKMS4gICoqSWRlbnRpZnkgRm9jdXMgU3ltYm9sczoqKiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGRpcmVjdGx5IGludGVyYWN0cyB3aXRoLCBzbyBJIGNhbiB0YXJnZXQgbXkgZnV6emluZyBlZmZvcnRzIGVmZmljaWVudGx5LgoyLiAgKipEZXRlcm1pbmUgRW5hYmxlIENvbmZpZ3VyYXRpb25zOioqIEkmIzM5O2xsIGFsc28gbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGBDT05GSUdfYCBvcHRpb25zIGFyZSBuZWNlc3NhcnkgdG8gYnVpbGQgYW5kIGVuYWJsZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25hbGl0eSBzbyBJIGNhbiBidWlsZCBhIHRlc3QgY29uZmlndXJhdGlvbiB0byB0ZXN0IHRoaXMgcHJvcGVybHkuCgpMZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMuIEkmIzM5O20gc2VlaW5nOiBgZG9fb3V0cHV0YCwgYGV4ZWN1dGVfcHNhbXBsZWAsIGBkb19leGVjdXRlX2FjdGlvbnNgLCBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YCwgYHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXRgLCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAsIGFuZCBgb3ZzX3Zwb3J0X3JlY2VpdmVgLiBUaGVzZSBhcmUgYWxsIHdpdGhpbiB0aGUgYG5ldC9vcGVudnN3aXRjaC9gIGRpcmVjdG9yeSwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdyBJJiMzOTtsbCBzY2FuIHRoZSBgS2NvbmZpZ2AgZm9yIE9wZW4gdlN3aXRjaCB0byBkZXRlcm1pbmUgdGhlIHJlbGV2YW50IENPTkZJRyBvcHRpb25zIHRvIGVuYWJsZSB0aGUgZmVhdHVyZSwgc28gSSBjYW4gc3RhcnQgY3JhZnRpbmcgbXkgZnV6emluZyBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgT1BFTlZTV0lUQ0gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9LY29uZmlnLTUtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OmNvbmZpZyBPUEVOVlNXSVRDSFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaFwmIzM0O1xuLS1cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTQzLVxubmV0L29wZW52c3dpdGNoL0tjb25maWc6NDQ6Y29uZmlnIE9QRU5WU1dJVENIX0dSRVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2ggR1JFIHR1bm5lbGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNTYtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo1Nzpjb25maWcgT1BFTlZTV0lUQ0hfVlhMQU5cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU4LVx0dHJpc3RhdGUgXCYjMzQ7T3BlbiB2U3dpdGNoIFZYTEFOIHR1bm5lbGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNjgtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OTpjb25maWcgT1BFTlZTV0lUQ0hfR0VORVZFXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy03MC1cdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaCBHZW5ldmUgdHVubmVsaW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTQ5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBPcGVuIHZTd2l0Y2ggQ29uZmlndXJhdGlvbiBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgT1BFTlZTV0lUQ0hgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBpbml0aWFsIHNjYW4gaXMgdGVsbGluZyBtZSB3ZSBoYXZlIHNldmVyYWwga2V5IGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiB0d2Vha2VkLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O3ZlIGdvdCBgZG9fb3V0cHV0YCwgYGV4ZWN1dGVfcHNhbXBsZWAsIGBkb19leGVjdXRlX2FjdGlvbnNgLCBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YCwgYHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXRgLCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAsIGFuZCBgb3ZzX3Zwb3J0X3JlY2VpdmVgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgY2hhbmdlZCBjb2RlLgoKTm93LCBhcyBhbiBleHBlcnQsIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGVyZSB0byBmb2N1cyBteSBhdHRlbnRpb24uIGBkb19leGVjdXRlX2FjdGlvbnNgIGFuZCBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAgaW1tZWRpYXRlbHkgc3RhbmQgb3V0IGFzIHN0cm9uZyBjYW5kaWRhdGVzIGZvciBGb2N1c1N5bWJvbHMuIFRoZWlyIHJvbGUgaW4gYWN0aW9uIGV4ZWN1dGlvbiBhbmQgdXNlci1zcGFjZSBwYWNrZXQgaGFuZGxpbmcgbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIGBkb19vdXRwdXRgIGlzIGFsc28gY3J1Y2lhbCBhbmQgZGVzZXJ2ZXMgYSBjbG9zZSBsb29rLgoKVGhlbiB3ZSBoYXZlIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgd2hpY2ggSSByZWNvZ25pemUgYXMgdGhlIGVudHJ5IHBvaW50IGZyb20gbmV0bGluaywgYW5kIGBvdnNfdnBvcnRfcmVjZWl2ZWAsIHRoZSBuZXR3b3JrIGRldmljZSBlbnRyeSBwb2ludC4gVW5kZXJzdGFuZGluZyBob3cgdGhlc2UgaW50ZXJmYWNlcyBhcmUgYWZmZWN0ZWQgaXMgZXNzZW50aWFsIGZvciBhIGNvbXByZWhlbnNpdmUgdmlldyBvZiB0aGUgY2hhbmdlcy4KCkkmIzM5O20gYWxzbyBjdXJpb3VzIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBuZWVkZWQuIEZvciBleGFtcGxlLCBgZXhlY3V0ZV9wc2FtcGxlYCAqbWlnaHQqIHJlcXVpcmUgYSBgUFNBTVBMRWAgY29uZmlndXJhdGlvbiB0byB3b3JrIGNvcnJlY3RseS4gSSYjMzk7bGwgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIGZvciB0aGF0IGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXhlY3V0ZV9wc2FtcGxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTExNjk9c3RhdGljIGludCBleGVjdXRlX2RlY190dGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjA4LSNpZiBJU19FTkFCTEVEKENPTkZJR19QU0FNUExFKVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxMjA5OnN0YXRpYyB2b2lkIGV4ZWN1dGVfcHNhbXBsZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjEwLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTI0MC0jZWxzZVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxMjQxOnN0YXRpYyB2b2lkIGV4ZWN1dGVfcHNhbXBsZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjQyLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTI0Nz1zdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTQ0OS1cdFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfUFNBTVBMRTpcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTQ1MDpcdFx0XHRleGVjdXRlX3BzYW1wbGUoZHAsIHNrYiwgYSk7XG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE0NTEtXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDMwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRm9jdXNTeW1ib2xzIEZ1bmN0aW9ucyBmb3IgVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBDT05GSUdfUFNBTVBMRWAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCBmb3IgYGV4ZWN1dGVfcHNhbXBsZWAgdG8gd29yayBhcyBleHBlY3RlZC4gSG93ZXZlciwgaXQmIzM5O3MgdGhlIGBPUEVOVlNXSVRDSGAgY29uZmlndXJhdGlvbiB0aGF0IHNlZW1zIHRvIGhvdXNlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayDigJMgSSYjMzk7bGwgZm9jdXMgb24gYE9QRU5WU1dJVENIYCBpbml0aWFsbHksIHdpdGggYFBTQU1QTEVgIGJlaW5nIGEgbmljZS10by1oYXZlIGlmIGl0JiMzOTtzIHRoZXJlLgoKTm93LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBGb2N1c1N5bWJvbHM6IGBkb19vdXRwdXRgLCBgZXhlY3V0ZV9wc2FtcGxlYCwgYGRvX2V4ZWN1dGVfYWN0aW9uc2AsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCwgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLCBhbmQgYG92c192cG9ydF9yZWNlaXZlYC4gT2theSwgYSBmZXcgc3RhbmQgb3V0IGFzIGhvdCBwYXRoIGZ1bmN0aW9uczogYG92c192cG9ydF9yZWNlaXZlYCAtIHRoYXQmIzM5O3MgY2FsbGVkIGZvciAqZXZlcnkqIHBhY2tldC4gVGhlbiB0aGVyZSYjMzk7cyBgZG9fZXhlY3V0ZV9hY3Rpb25zYCBhbmQgYGRvX291dHB1dGAgdG9vIOKAkyB0aG9zZSBhcmUgYWxzbyBoaWdoLWZyZXF1ZW5jeSBjYWxscy4gYHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXRgLCB3ZWxsLCB0aGF0JiMzOTtzIHRyaWdnZXJlZCB3aGVuIGEgcGFja2V0IGhlYWRzIHRvIHVzZXJzcGFjZSAobGlrZSBhbiB1cGNhbGwpLCBzbyB3aGlsZSBpdCBpc24mIzM5O3QgYXMgZnJlcXVlbnQsIGl0JiMzOTtzIHN0aWxsIGEgY29tbW9uIG9wZXJhdGlvbi4gVGhlbiwgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0JiMzOTtzIGhhbmRsaW5nIHBhY2tldHMgc2VudCBmcm9tIHVzZXJzcGFjZSB0byB0aGUgZGF0YXBhdGggZm9yIGV4ZWN1dGlvbi4gRmluYWxseSwgd2UgaGF2ZSBgZXhlY3V0ZV9wc2FtcGxlYCwgd2hpY2ggaXMgb25seSBjYWxsZWQgd2hlbiB0aGUgcHNhbXBsZSBhY3Rpb24gaXMgZXhwbGljaXRseSBleGVjdXRlZC4KCkFoYSEgVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgT1ZTX0FDVElPTl9BVFRSX1RSVU5DYCBhbmQgaG93IHRoZSBgY3V0bGVuYCBwYXJhbWV0ZXIgaXMgaW50ZXJwcmV0ZWQsIHdoaWNoIG1lYW5zIEkmIzM5O2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgaG93IHRoYXQgYWN0aW9uIGlzIGJlaW5nIGltcGxlbWVudGVkIGluIGBhY3Rpb25zLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7T1ZTX0FDVElPTl9BVFRSX1RSVU5DJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNDc9c3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyODYtXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjEyODc6XHRcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1RSVU5DOiB7XG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyODgtXHRcdFx0c3RydWN0IG92c19hY3Rpb25fdHJ1bmMgKnRydW5jID0gbmxhX2RhdGEoYSk7XG4tLVxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jPTUzPXN0YXRpYyBib29sIGFjdGlvbnNfbWF5X2NoYW5nZV9mbG93KGNvbnN0IHN0cnVjdCBubGF0dHIgKmFjdGlvbnMpXG4tLVxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTYzLVx0XHRjYXNlIE9WU19BQ1RJT05fQVRUUl9SRUNJUkM6XG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmM6NjQ6XHRcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1RSVU5DOlxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTY1LVx0XHRjYXNlIE9WU19BQ1RJT05fQVRUUl9VU0VSU1BBQ0U6XG4tLVxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jPTMxNDc9c3RhdGljIGludCBfX292c19ubGFfY29weV9hY3Rpb25zKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMtMzE3Ni1cdFx0XHRbT1ZTX0FDVElPTl9BVFRSX0NUX0NMRUFSXSA9IDAsXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmM6MzE3NzpcdFx0XHRbT1ZTX0FDVElPTl9BVFRSX1RSVU5DXSA9IHNpemVvZihzdHJ1Y3Qgb3ZzX2FjdGlvbl90cnVuYyksXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMtMzE3OC1cdFx0XHRbT1ZTX0FDVElPTl9BVFRSX1BVU0hfRVRIXSA9IHNpemVvZihzdHJ1Y3Qgb3ZzX2FjdGlvbl9wdXNoX2V0aCksXG4tLVxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTMyMTQtXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmM6MzIxNTpcdFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfVFJVTkM6IHtcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYy0zMjE2LVx0XHRcdGNvbnN0IHN0cnVjdCBvdnNfYWN0aW9uX3RydW5jICp0cnVuYyA9IG5sYV9kYXRhKGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NzEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoIG9uIFBhY2tldCBIYW5kbGluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgaG93IGBjdXRsZW5gIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHN5c3RlbS4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGN1dGxlbmAmIzM5O3MgdmFsdWUgaXMgZGVyaXZlZCBmcm9tIGBPVlNfQUNUSU9OX0FUVFJfVFJVTkNgLiBPa2F5LCB0aGF0JiMzOTtzIGNsZWFyIGVub3VnaC4gTm93LCB3aGVyZSBpcyBgY3V0bGVuYCBhY3R1YWxseSAqdXNlZCo/IFRoZSB0ZXh0IGlkZW50aWZpZXMgYGRvX291dHB1dGAsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCwgYW5kIGBleGVjdXRlX3BzYW1wbGVgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGtlZXAgdGhvc2UgaW4gbWluZC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBgZG9fZXhlY3V0ZV9hY3Rpb25zYCB3aGljaCBpcyBpbXBsaWVkIGFzIHBhcnQgb2YgdGhlIG92ZXJhbGwgZmxvdy4KCk9rYXksIGxldCYjMzk7cyBzaGFycGVuIG91ciBmb2N1cyBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHJlZmluZSB0aGlzIGxpc3QgdG86CgoqICAgYGRvX291dHB1dGAKKiAgIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YAoqICAgYGV4ZWN1dGVfcHNhbXBsZWAKKiAgIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYAoKVGhvc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIEkgbmVlZCB0byBhbmFseXplIGluIGRldGFpbC4gSSBoYXZlIHRvIG1ha2Ugc3VyZSBJIGFtIGFjY291bnRpbmcgZm9yIGV2ZXJ5dGhpbmcuCgpOb3csIGJleW9uZCB0aGUgY29yZSBmdW5jdGlvbnMsIGFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGhpbmsuLi4gT2gsIHJpZ2h0LCB0aGVyZSYjMzk7cyBgT1BFTlZTV0lUQ0hgIGFuZCBgUFNBTVBMRWAuIFRob3NlIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LiBBbmQsIG9mIGNvdXJzZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgUFNBTVBMRWAgY29uZmlndXJhdGlvbiB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGludGVyYWN0aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFNBTVBMRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wc2FtcGxlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcHNhbXBsZS9LY29uZmlnLTUtXG5uZXQvcHNhbXBsZS9LY29uZmlnOjY6bWVudWNvbmZpZyBQU0FNUExFXG5uZXQvcHNhbXBsZS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQtc2FtcGxpbmcgbmV0bGluayBjaGFubmVsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMjgKCQkJCQkJCW91dHB1dDogMTQwCgkJCQkJCQl0aG91Z2h0czogMTE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBQYWNrZXQgVHJ1bmNhdGlvbiBpbiBPcGVuIHZTd2l0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBpbXBhY3RzIE9wZW4gdlN3aXRjaC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBob3cgdGhlIGBPVlNfQUNUSU9OX0FUVFJfVFJVTkNgIGFjdGlvbiBhbmQgdGhlIGFzc29jaWF0ZWQgYGN1dGxlbmAgZmllbGQgYXJlIGhhbmRsZWQuIEl0JiMzOTtzIHRvdWNoaW5nIHNvbWUga2V5IGFyZWFzOiBwYWNrZXQgdHJ1bmNhdGlvbiBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbiwgb3V0cHV0LCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdXNlcnNwYWNlLiBUaGlzIGRlZmluaXRlbHkgd2FycmFudHMgZnV6emluZywgYXMgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgaW4gbmV0d29yayBkYXRhcGF0aCBjb2RlLgoKSSYjMzk7dmUgZGV0ZXJtaW5lZCB0aGF0IGBQU0FNUExFYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIGhlcmUuIEFuZCB5ZXMsIGBPUEVOVlNXSVRDSGAgaXMgc3VmZmljaWVudCB0byBlbmFibGUgdGhlIG5lZWRlZCBjb25maWd1cmF0aW9ucy4KCkluaXRpYWxseSwgSSB3YXMgY29uc2lkZXJpbmcgdGhlc2UgZnVuY3Rpb25zIGFzIGZvY3VzIHN5bWJvbHM6IGBkb19vdXRwdXRgLCBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAsIGBleGVjdXRlX3BzYW1wbGVgLCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAsIGFuZCBgZG9fZXhlY3V0ZV9hY3Rpb25zYC4gSG93ZXZlciwgSSBuZWVkIHRvIGJlIHN0cmF0ZWdpYy4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gYXZvaWQgaG90IHBhdGggZnVuY3Rpb25zLiBgZG9fZXhlY3V0ZV9hY3Rpb25zYCBpcyB0aGUgbWFpbiBhY3Rpb24gbG9vcDsgdG9vIGJyb2FkLiBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAgZGVhbHMgd2l0aCB1cGNhbGxzLCBzbyBpdCYjMzk7cyBsZXNzIG9mIGEgaG90IHBhdGguIGBleGVjdXRlX3BzYW1wbGVgIGFuZCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgYXJlIHNwZWNpZmljIHRvIHBhY2tldCBleGVjdXRpb24gY29tbWFuZHMgZnJvbSB1c2Vyc3BhY2UgYW5kIHRoZSBwc2FtcGxlIGFjdGlvbi4KCkluaXRpYWxseSBJIGNvbnNpZGVyZWQgZXhjbHVkaW5nIGBkb19vdXRwdXRgLCBnaXZlbiBpdHMgY29tbW9uIG5hdHVyZS4gSG93ZXZlciwgYWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb2RlLCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIHdoZXJlIGEgKnNpZ25pZmljYW50KiBjaGFuZ2UgaXMgdGFraW5nIHBsYWNlIGluIGhvdyBgcHNrYl90cmltYCBhbmQgdGhlIGBjdXRsZW5gIGZpZWxkIGFyZSBoYW5kbGVkLiBFdmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMgaW4gYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgLCBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgaXQuCgpBZnRlciBjaGVja2luZyB0aGUgY29kZSBhZ2FpbiwgSSBhbSBnb2luZyB0byBmb2N1cyBvbjogYGRvX291dHB1dGAsIGBleGVjdXRlX3BzYW1wbGVgLCBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgd2hlcmUgdGhlIGNvcmUgbG9naWMgY2hhbmdlcy4gVGhlIG90aGVyIGZ1bmN0aW9ucyBpbml0aWFsaXplIGFuZCBzZXQgdGhlIGN1dGxlbi4KClRoZXJlZm9yZSwgSSB3aWxsIHNldCB0aGVzZSBhcyBteSBmb2N1cyBzeW1ib2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1BFTlZTV0lUQ0gmIzM0OywKICAgICYjMzQ7UFNBTVBMRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RvX291dHB1dCYjMzQ7LAogICAgJiMzNDtleGVjdXRlX3BzYW1wbGUmIzM0OywKICAgICYjMzQ7cXVldWVfdXNlcnNwYWNlX3BhY2tldCYjMzQ7LAogICAgJiMzNDtvdnNfcGFja2V0X2NtZF9leGVjdXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBwYWNrZXQgdHJ1bmNhdGlvbiAoT1ZTX0FDVElPTl9BVFRSX1RSVU5DKSBhbmQgdGhlIGN1dGxlbiBmaWVsZCBhcmUgaGFuZGxlZCBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbiwgb3V0cHV0LCBhbmQgdXBjYWxscyB0byB1c2Vyc3BhY2UuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIG5ldHdvcmsgZGF0YXBhdGggY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDssCiAgICAmIzM0O1BTQU1QTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19vdXRwdXQmIzM0OywKICAgICYjMzQ7ZXhlY3V0ZV9wc2FtcGxlJiMzNDssCiAgICAmIzM0O3F1ZXVlX3VzZXJzcGFjZV9wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyBpbiBPcGVuIHZTd2l0Y2gsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgcGFja2V0IHRydW5jYXRpb24gKE9WU19BQ1RJT05fQVRUUl9UUlVOQykgYW5kIHRoZSBjdXRsZW4gZmllbGQgYXJlIGhhbmRsZWQgZHVyaW5nIGFjdGlvbiBleGVjdXRpb24sIG91dHB1dCwgYW5kIHVwY2FsbHMgdG8gdXNlcnNwYWNlLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBuZXR3b3JrIGRhdGFwYXRoIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDhUMDk6MjU6NTcuOTY3NTM5ODE3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzMzAwMjIwNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIixcbiAgICBcIlBTQU1QTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19vdXRwdXRcIixcbiAgICBcImV4ZWN1dGVfcHNhbXBsZVwiLFxuICAgIFwicXVldWVfdXNlcnNwYWNlX3BhY2tldFwiLFxuICAgIFwib3ZzX3BhY2tldF9jbWRfZXhlY3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBwYWNrZXQgdHJ1bmNhdGlvbiAoT1ZTX0FDVElPTl9BVFRSX1RSVU5DKSBhbmQgdGhlIGN1dGxlbiBmaWVsZCBhcmUgaGFuZGxlZCBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbiwgb3V0cHV0LCBhbmQgdXBjYWxscyB0byB1c2Vyc3BhY2UuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIG5ldHdvcmsgZGF0YXBhdGggY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI1OjU3Ljk2NzU0OTcxN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkzMjE3NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjYxMDdhM2MwODRlYzljMjVlYTRlYzE5NDhlZDcwMmFkNzVmYTg1NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDA5OjI1OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXFxuaW5kZXggMTQwMzg4YTE4YWUwNDIuLjUxM2ZjYTZhOGU4YTQ4IDEwMDY0NFxcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcXG4rKysgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXFxuQEAgLTgzNywxMiArODM3LDggQEAgc3RhdGljIHZvaWQgZG9fb3V0cHV0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsIGludCBvdXRfcG9ydCxcXG4gXFx0XFx0dTE2IG1ydSA9IE9WU19DQihza2IpLVxcdTAwM2VtcnU7XFxuIFxcdFxcdHUzMiBjdXRsZW4gPSBPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuO1xcbiBcXG4tXFx0XFx0aWYgKHVubGlrZWx5KGN1dGxlbiBcXHUwMDNlIDApKSB7XFxuLVxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiAtIGN1dGxlbiBcXHUwMDNlIG92c19tYWNfaGVhZGVyX2xlbihrZXkpKVxcbi1cXHRcXHRcXHRcXHRwc2tiX3RyaW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIGN1dGxlbik7XFxuLVxcdFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0XFx0cHNrYl90cmltKHNrYiwgb3ZzX21hY19oZWFkZXJfbGVuKGtleSkpO1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlmICh1bmxpa2VseShjdXRsZW4gXFx1MDAzYyBza2ItXFx1MDAzZWxlbikpXFxuK1xcdFxcdFxcdHBza2JfdHJpbShza2IsIG1heChjdXRsZW4sIG92c19tYWNfaGVhZGVyX2xlbihrZXkpKSk7XFxuIFxcbiBcXHRcXHRpZiAobGlrZWx5KCFtcnUgfHxcXG4gXFx0XFx0ICAgICAgICAgICAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYz0gbXJ1ICsgdnBvcnQtXFx1MDAzZWRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSkpIHtcXG5AQCAtMTIzNCw3ICsxMjMwLDcgQEAgc3RhdGljIHZvaWQgZXhlY3V0ZV9wc2FtcGxlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRwc2FtcGxlX2dyb3VwLm5ldCA9IG92c19kcF9nZXRfbmV0KGRwKTtcXG4gXFx0bWQuaW5faWZpbmRleCA9IE9WU19DQihza2IpLVxcdTAwM2VpbnB1dF92cG9ydC1cXHUwMDNlZGV2LVxcdTAwM2VpZmluZGV4O1xcbi1cXHRtZC50cnVuY19zaXplID0gc2tiLVxcdTAwM2VsZW4gLSBPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuO1xcbitcXHRtZC50cnVuY19zaXplID0gbWluKHNrYi1cXHUwMDNlbGVuLCBPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuKTtcXG4gXFx0bWQucmF0ZV9hc19wcm9iYWJpbGl0eSA9IDE7XFxuIFxcbiBcXHRyYXRlID0gT1ZTX0NCKHNrYiktXFx1MDAzZXByb2JhYmlsaXR5ID8gT1ZTX0NCKHNrYiktXFx1MDAzZXByb2JhYmlsaXR5IDogVTMyX01BWDtcXG5AQCAtMTI4NCwyMiArMTI4MCwyMSBAQCBzdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRjbG9uZSA9IHNrYl9jbG9uZShza2IsIEdGUF9BVE9NSUMpO1xcbiBcXHRcXHRcXHRpZiAoY2xvbmUpXFxuIFxcdFxcdFxcdFxcdGRvX291dHB1dChkcCwgY2xvbmUsIHBvcnQsIGtleSk7XFxuLVxcdFxcdFxcdE9WU19DQihza2IpLVxcdTAwM2VjdXRsZW4gPSAwO1xcbitcXHRcXHRcXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1RSVU5DOiB7XFxuIFxcdFxcdFxcdHN0cnVjdCBvdnNfYWN0aW9uX3RydW5jICp0cnVuYyA9IG5sYV9kYXRhKGEpO1xcbiBcXG4tXFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgdHJ1bmMtXFx1MDAzZW1heF9sZW4pXFxuLVxcdFxcdFxcdFxcdE9WU19DQihza2IpLVxcdTAwM2VjdXRsZW4gPSBza2ItXFx1MDAzZWxlbiAtIHRydW5jLVxcdTAwM2VtYXhfbGVuO1xcbitcXHRcXHRcXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gdHJ1bmMtXFx1MDAzZW1heF9sZW47XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRjYXNlIE9WU19BQ1RJT05fQVRUUl9VU0VSU1BBQ0U6XFxuIFxcdFxcdFxcdG91dHB1dF91c2Vyc3BhY2UoZHAsIHNrYiwga2V5LCBhLCBhdHRyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGxlbiwgT1ZTX0NCKHNrYiktXFx1MDAzZWN1dGxlbik7XFxuLVxcdFxcdFxcdE9WU19DQihza2IpLVxcdTAwM2VjdXRsZW4gPSAwO1xcbitcXHRcXHRcXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcXG4gXFx0XFx0XFx0aWYgKG5sYV9pc19sYXN0KGEsIHJlbSkpIHtcXG4gXFx0XFx0XFx0XFx0Y29uc3VtZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuQEAgLTE0NTMsNyArMTQ0OCw3IEBAIHN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRcXHRjYXNlIE9WU19BQ1RJT05fQVRUUl9QU0FNUExFOlxcbiBcXHRcXHRcXHRleGVjdXRlX3BzYW1wbGUoZHAsIHNrYiwgYSk7XFxuLVxcdFxcdFxcdE9WU19DQihza2IpLVxcdTAwM2VjdXRsZW4gPSAwO1xcbitcXHRcXHRcXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcXG4gXFx0XFx0XFx0aWYgKG5sYV9pc19sYXN0KGEsIHJlbSkpIHtcXG4gXFx0XFx0XFx0XFx0Y29uc3VtZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNcXG5pbmRleCBmMDE2NDgxN2Q5YjcyMy4uZWFmMzMyYjE1NmQ3MzEgMTAwNjQ0XFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNcXG4rKysgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguY1xcbkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXFxuIFxcdFxcdFxcdHVwY2FsbC5wb3J0aWQgPSBvdnNfdnBvcnRfZmluZF91cGNhbGxfcG9ydGlkKHAsIHNrYik7XFxuIFxcbiBcXHRcXHR1cGNhbGwubXJ1ID0gT1ZTX0NCKHNrYiktXFx1MDAzZW1ydTtcXG4tXFx0XFx0ZXJyb3IgPSBvdnNfZHBfdXBjYWxsKGRwLCBza2IsIGtleSwgXFx1MDAyNnVwY2FsbCwgMCk7XFxuK1xcdFxcdGVycm9yID0gb3ZzX2RwX3VwY2FsbChkcCwgc2tiLCBrZXksIFxcdTAwMjZ1cGNhbGwsIFUzMl9NQVgpO1xcbiBcXHRcXHRzd2l0Y2ggKGVycm9yKSB7XFxuIFxcdFxcdGNhc2UgMDpcXG4gXFx0XFx0Y2FzZSAtRUFHQUlOOlxcbkBAIC00NTcsNyArNDU3LDggQEAgc3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHN0cnVjdCBza19idWZmICpuc2tiID0gTlVMTDtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnVzZXJfc2tiID0gTlVMTDsgLyogdG8gYmUgcXVldWVkIHRvIHVzZXJzcGFjZSAqL1xcbiBcXHRzdHJ1Y3QgbmxhdHRyICpubGE7XFxuLVxcdHNpemVfdCBsZW47XFxuK1xcdHNpemVfdCBtc2dfc2l6ZTtcXG4rXFx0c2l6ZV90IHNrYl9sZW47XFxuIFxcdHVuc2lnbmVkIGludCBobGVuO1xcbiBcXHRpbnQgZXJyLCBkcF9pZmluZGV4O1xcbiBcXHR1NjQgaGFzaDtcXG5AQCAtNDc4LDcgKzQ3OSw4IEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRza2IgPSBuc2tiO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAobmxhX2F0dHJfc2l6ZShza2ItXFx1MDAzZWxlbikgXFx1MDAzZSBVU0hSVF9NQVgpIHtcXG4rXFx0c2tiX2xlbiA9IG1pbihza2ItXFx1MDAzZWxlbiwgY3V0bGVuKTtcXG4rXFx0aWYgKG5sYV9hdHRyX3NpemUoc2tiX2xlbikgXFx1MDAzZSBVU0hSVF9NQVgpIHtcXG4gXFx0XFx0ZXJyID0gLUVGQklHO1xcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbkBAIC00OTMsMTMgKzQ5NSwxMyBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICogcGFkZGluZyBsb2dpYy4gT25seSBwZXJmb3JtIHplcm9jb3B5IGlmIHBhZGRpbmcgaXMgbm90IHJlcXVpcmVkLlxcbiBcXHQgKi9cXG4gXFx0aWYgKGRwLVxcdTAwM2V1c2VyX2ZlYXR1cmVzIFxcdTAwMjYgT1ZTX0RQX0ZfVU5BTElHTkVEKVxcbi1cXHRcXHRobGVuID0gc2tiX3plcm9jb3B5X2hlYWRsZW4oc2tiKTtcXG4rXFx0XFx0aGxlbiA9IG1pbihza2JfemVyb2NvcHlfaGVhZGxlbihza2IpLCBjdXRsZW4pO1xcbiBcXHRlbHNlXFxuLVxcdFxcdGhsZW4gPSBza2ItXFx1MDAzZWxlbjtcXG4rXFx0XFx0aGxlbiA9IHNrYl9sZW47XFxuIFxcbi1cXHRsZW4gPSB1cGNhbGxfbXNnX3NpemUodXBjYWxsX2luZm8sIGhsZW4gLSBjdXRsZW4sXFxuLVxcdFxcdFxcdCAgICAgIE9WU19DQihza2IpLVxcdTAwM2VhY3RzX29yaWdsZW4pO1xcbi1cXHR1c2VyX3NrYiA9IGdlbmxtc2dfbmV3KGxlbiwgR0ZQX0FUT01JQyk7XFxuK1xcdG1zZ19zaXplID0gdXBjYWxsX21zZ19zaXplKHVwY2FsbF9pbmZvLCBobGVuLFxcbitcXHRcXHRcXHRcXHQgICBPVlNfQ0Ioc2tiKS1cXHUwMDNlYWN0c19vcmlnbGVuKTtcXG4rXFx0dXNlcl9za2IgPSBnZW5sbXNnX25ldyhtc2dfc2l6ZSwgR0ZQX0FUT01JQyk7XFxuIFxcdGlmICghdXNlcl9za2IpIHtcXG4gXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuQEAgLTU2MCw3ICs1NjIsNyBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0fVxcbiBcXG4gXFx0LyogQWRkIE9WU19QQUNLRVRfQVRUUl9MRU4gd2hlbiBwYWNrZXQgaXMgdHJ1bmNhdGVkICovXFxuLVxcdGlmIChjdXRsZW4gXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2XFxuK1xcdGlmIChza2JfbGVuIFxcdTAwM2Mgc2tiLVxcdTAwM2VsZW4gXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIG5sYV9wdXRfdTMyKHVzZXJfc2tiLCBPVlNfUEFDS0VUX0FUVFJfTEVOLCBza2ItXFx1MDAzZWxlbikpIHtcXG4gXFx0XFx0ZXJyID0gLUVOT0JVRlM7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC01ODUsOSArNTg3LDkgQEAgc3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGVyciA9IC1FTk9CVUZTO1xcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbi1cXHRubGEtXFx1MDAzZW5sYV9sZW4gPSBubGFfYXR0cl9zaXplKHNrYi1cXHUwMDNlbGVuIC0gY3V0bGVuKTtcXG4rXFx0bmxhLVxcdTAwM2VubGFfbGVuID0gbmxhX2F0dHJfc2l6ZShza2JfbGVuKTtcXG4gXFxuLVxcdGVyciA9IHNrYl96ZXJvY29weSh1c2VyX3NrYiwgc2tiLCBza2ItXFx1MDAzZWxlbiAtIGN1dGxlbiwgaGxlbik7XFxuK1xcdGVyciA9IHNrYl96ZXJvY29weSh1c2VyX3NrYiwgc2tiLCBza2JfbGVuLCBobGVuKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbkBAIC02NDQsNiArNjQ2LDcgQEAgc3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuIFxcdFxcdHBhY2tldC1cXHUwMDNlaWdub3JlX2RmID0gMTtcXG4gXFx0fVxcbiBcXHRPVlNfQ0IocGFja2V0KS1cXHUwMDNlbXJ1ID0gbXJ1O1xcbitcXHRPVlNfQ0IocGFja2V0KS1cXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcXG4gXFxuIFxcdGlmIChhW09WU19QQUNLRVRfQVRUUl9IQVNIXSkge1xcbiBcXHRcXHRoYXNoID0gbmxhX2dldF91NjQoYVtPVlNfUEFDS0VUX0FUVFJfSEFTSF0pO1xcbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaCBiL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oXFxuaW5kZXggZGIwYzNlNjlkNjZjYWMuLjY5NjY0MGU4OGZhN2UzIDEwMDY0NFxcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oXFxuKysrIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmhcXG5AQCAtMTE4LDcgKzExOCw3IEBAIHN0cnVjdCBkYXRhcGF0aCB7XFxuICAqIEBtcnU6IFRoZSBtYXhpbXVtIHJlY2VpdmVkIGZyYWdlbWVudCBzaXplOyAwIGlmIHRoZSBwYWNrZXQgaXMgbm90XFxuICAqIGZyYWdtZW50ZWQuXFxuICAqIEBhY3RzX29yaWdsZW46IFRoZSBuZXRsaW5rIHNpemUgb2YgdGhlIGZsb3cgYWN0aW9ucyBhcHBsaWVkIHRvIHRoaXMgc2tiLlxcbi0gKiBAY3V0bGVuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHBhY2tldCBlbmQgdG8gYmUgcmVtb3ZlZC5cXG4rICogQGN1dGxlbjogVGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgcGFja2V0IHRvIHByZXNlcnZlIG9uIG91dHB1dC5cXG4gICogQHByb2JhYmlsaXR5OiBUaGUgc2FtcGxpbmcgcHJvYmFiaWxpdHkgdGhhdCB3YXMgYXBwbGllZCB0byB0aGlzIHNrYjsgMCBtZWFuc1xcbiAgKiBubyBzYW1wbGluZyBoYXMgb2NjdXJyZWQ7IFUzMl9NQVggbWVhbnMgMTAwJSBwcm9iYWJpbGl0eS5cXG4gICogQHVwY2FsbF9waWQ6IE5ldGxpbmsgc29ja2V0IFBJRCB0byB1c2UgZm9yIHNlbmRpbmcgdGhpcyBwYWNrZXQgdG8gdXNlcnNwYWNlO1xcbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuYyBiL25ldC9vcGVudnN3aXRjaC92cG9ydC5jXFxuaW5kZXggNTZiMmUyZDFhNzQ5ZjguLjEyNzQxNDg1YzkzOTNkIDEwMDY0NFxcbi0tLSBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jXFxuKysrIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LmNcXG5AQCAtNTAyLDcgKzUwMiw3IEBAIGludCBvdnNfdnBvcnRfcmVjZWl2ZShzdHJ1Y3QgdnBvcnQgKnZwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gXFx0T1ZTX0NCKHNrYiktXFx1MDAzZWlucHV0X3Zwb3J0ID0gdnBvcnQ7XFxuIFxcdE9WU19DQihza2IpLVxcdTAwM2VtcnUgPSAwO1xcbi1cXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gMDtcXG4rXFx0T1ZTX0NCKHNrYiktXFx1MDAzZWN1dGxlbiA9IFUzMl9NQVg7XFxuIFxcdE9WU19DQihza2IpLVxcdTAwM2Vwcm9iYWJpbGl0eSA9IDA7XFxuIFxcdE9WU19DQihza2IpLVxcdTAwM2V1cGNhbGxfcGlkID0gMDtcXG4gXFx0aWYgKHVubGlrZWx5KGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpICE9IG92c19kcF9nZXRfbmV0KHZwb3J0LVxcdTAwM2VkcCkpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI1OjU4LjY2MTUyNDk3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM2MzYwMjYxOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIixcbiAgICBcIlBTQU1QTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19vdXRwdXRcIixcbiAgICBcImV4ZWN1dGVfcHNhbXBsZVwiLFxuICAgIFwicXVldWVfdXNlcnNwYWNlX3BhY2tldFwiLFxuICAgIFwib3ZzX3BhY2tldF9jbWRfZXhlY3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIE9wZW4gdlN3aXRjaCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBwYWNrZXQgdHJ1bmNhdGlvbiAoT1ZTX0FDVElPTl9BVFRSX1RSVU5DKSBhbmQgdGhlIGN1dGxlbiBmaWVsZCBhcmUgaGFuZGxlZCBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbiwgb3V0cHV0LCBhbmQgdXBjYWxscyB0byB1c2Vyc3BhY2UuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIG5ldHdvcmsgZGF0YXBhdGggY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjYxMDdhM2MwODRlYzljMjVlYTRlYzE5NDhlZDcwMmFkNzVmYTg1NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDk6MjU6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xuaW5kZXggMTQwMzg4YTE4YWUwNDIuLjUxM2ZjYTZhOGU4YTQ4IDEwMDY0NFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xuKysrIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xuQEAgLTgzNywxMiArODM3LDggQEAgc3RhdGljIHZvaWQgZG9fb3V0cHV0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsIGludCBvdXRfcG9ydCxcbiBcdFx0dTE2IG1ydSA9IE9WU19DQihza2IpLVx1MDAzZW1ydTtcbiBcdFx0dTMyIGN1dGxlbiA9IE9WU19DQihza2IpLVx1MDAzZWN1dGxlbjtcbiBcbi1cdFx0aWYgKHVubGlrZWx5KGN1dGxlbiBcdTAwM2UgMCkpIHtcbi1cdFx0XHRpZiAoc2tiLVx1MDAzZWxlbiAtIGN1dGxlbiBcdTAwM2Ugb3ZzX21hY19oZWFkZXJfbGVuKGtleSkpXG4tXHRcdFx0XHRwc2tiX3RyaW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gY3V0bGVuKTtcbi1cdFx0XHRlbHNlXG4tXHRcdFx0XHRwc2tiX3RyaW0oc2tiLCBvdnNfbWFjX2hlYWRlcl9sZW4oa2V5KSk7XG4tXHRcdH1cbitcdFx0aWYgKHVubGlrZWx5KGN1dGxlbiBcdTAwM2Mgc2tiLVx1MDAzZWxlbikpXG4rXHRcdFx0cHNrYl90cmltKHNrYiwgbWF4KGN1dGxlbiwgb3ZzX21hY19oZWFkZXJfbGVuKGtleSkpKTtcbiBcbiBcdFx0aWYgKGxpa2VseSghbXJ1IHx8XG4gXHRcdCAgICAgICAgICAgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBtcnUgKyB2cG9ydC1cdTAwM2VkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKSkpIHtcbkBAIC0xMjM0LDcgKzEyMzAsNyBAQCBzdGF0aWMgdm9pZCBleGVjdXRlX3BzYW1wbGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdHBzYW1wbGVfZ3JvdXAubmV0ID0gb3ZzX2RwX2dldF9uZXQoZHApO1xuIFx0bWQuaW5faWZpbmRleCA9IE9WU19DQihza2IpLVx1MDAzZWlucHV0X3Zwb3J0LVx1MDAzZWRldi1cdTAwM2VpZmluZGV4O1xuLVx0bWQudHJ1bmNfc2l6ZSA9IHNrYi1cdTAwM2VsZW4gLSBPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW47XG4rXHRtZC50cnVuY19zaXplID0gbWluKHNrYi1cdTAwM2VsZW4sIE9WU19DQihza2IpLVx1MDAzZWN1dGxlbik7XG4gXHRtZC5yYXRlX2FzX3Byb2JhYmlsaXR5ID0gMTtcbiBcbiBcdHJhdGUgPSBPVlNfQ0Ioc2tiKS1cdTAwM2Vwcm9iYWJpbGl0eSA/IE9WU19DQihza2IpLVx1MDAzZXByb2JhYmlsaXR5IDogVTMyX01BWDtcbkBAIC0xMjg0LDIyICsxMjgwLDIxIEBAIHN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0Y2xvbmUgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTtcbiBcdFx0XHRpZiAoY2xvbmUpXG4gXHRcdFx0XHRkb19vdXRwdXQoZHAsIGNsb25lLCBwb3J0LCBrZXkpO1xuLVx0XHRcdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IDA7XG4rXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFxuIFx0XHRjYXNlIE9WU19BQ1RJT05fQVRUUl9UUlVOQzoge1xuIFx0XHRcdHN0cnVjdCBvdnNfYWN0aW9uX3RydW5jICp0cnVuYyA9IG5sYV9kYXRhKGEpO1xuIFxuLVx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzZSB0cnVuYy1cdTAwM2VtYXhfbGVuKVxuLVx0XHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gc2tiLVx1MDAzZWxlbiAtIHRydW5jLVx1MDAzZW1heF9sZW47XG4rXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gdHJ1bmMtXHUwMDNlbWF4X2xlbjtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFxuIFx0XHRjYXNlIE9WU19BQ1RJT05fQVRUUl9VU0VSU1BBQ0U6XG4gXHRcdFx0b3V0cHV0X3VzZXJzcGFjZShkcCwgc2tiLCBrZXksIGEsIGF0dHIsXG4gXHRcdFx0XHRcdFx0ICAgICBsZW4sIE9WU19DQihza2IpLVx1MDAzZWN1dGxlbik7XG4tXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gMDtcbitcdFx0XHRPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW4gPSBVMzJfTUFYO1xuIFx0XHRcdGlmIChubGFfaXNfbGFzdChhLCByZW0pKSB7XG4gXHRcdFx0XHRjb25zdW1lX3NrYihza2IpO1xuIFx0XHRcdFx0cmV0dXJuIDA7XG5AQCAtMTQ1Myw3ICsxNDQ4LDcgQEAgc3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfUFNBTVBMRTpcbiBcdFx0XHRleGVjdXRlX3BzYW1wbGUoZHAsIHNrYiwgYSk7XG4tXHRcdFx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gMDtcbitcdFx0XHRPVlNfQ0Ioc2tiKS1cdTAwM2VjdXRsZW4gPSBVMzJfTUFYO1xuIFx0XHRcdGlmIChubGFfaXNfbGFzdChhLCByZW0pKSB7XG4gXHRcdFx0XHRjb25zdW1lX3NrYihza2IpO1xuIFx0XHRcdFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguY1xuaW5kZXggZjAxNjQ4MTdkOWI3MjMuLmVhZjMzMmIxNTZkNzMxIDEwMDY0NFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNcbisrKyBiL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jXG5AQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KVxuIFx0XHRcdHVwY2FsbC5wb3J0aWQgPSBvdnNfdnBvcnRfZmluZF91cGNhbGxfcG9ydGlkKHAsIHNrYik7XG4gXG4gXHRcdHVwY2FsbC5tcnUgPSBPVlNfQ0Ioc2tiKS1cdTAwM2VtcnU7XG4tXHRcdGVycm9yID0gb3ZzX2RwX3VwY2FsbChkcCwgc2tiLCBrZXksIFx1MDAyNnVwY2FsbCwgMCk7XG4rXHRcdGVycm9yID0gb3ZzX2RwX3VwY2FsbChkcCwgc2tiLCBrZXksIFx1MDAyNnVwY2FsbCwgVTMyX01BWCk7XG4gXHRcdHN3aXRjaCAoZXJyb3IpIHtcbiBcdFx0Y2FzZSAwOlxuIFx0XHRjYXNlIC1FQUdBSU46XG5AQCAtNDU3LDcgKzQ1Nyw4IEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c3RydWN0IHNrX2J1ZmYgKm5za2IgPSBOVUxMO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnVzZXJfc2tiID0gTlVMTDsgLyogdG8gYmUgcXVldWVkIHRvIHVzZXJzcGFjZSAqL1xuIFx0c3RydWN0IG5sYXR0ciAqbmxhO1xuLVx0c2l6ZV90IGxlbjtcbitcdHNpemVfdCBtc2dfc2l6ZTtcbitcdHNpemVfdCBza2JfbGVuO1xuIFx0dW5zaWduZWQgaW50IGhsZW47XG4gXHRpbnQgZXJyLCBkcF9pZmluZGV4O1xuIFx0dTY0IGhhc2g7XG5AQCAtNDc4LDcgKzQ3OSw4IEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRza2IgPSBuc2tiO1xuIFx0fVxuIFxuLVx0aWYgKG5sYV9hdHRyX3NpemUoc2tiLVx1MDAzZWxlbikgXHUwMDNlIFVTSFJUX01BWCkge1xuK1x0c2tiX2xlbiA9IG1pbihza2ItXHUwMDNlbGVuLCBjdXRsZW4pO1xuK1x0aWYgKG5sYV9hdHRyX3NpemUoc2tiX2xlbikgXHUwMDNlIFVTSFJUX01BWCkge1xuIFx0XHRlcnIgPSAtRUZCSUc7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuQEAgLTQ5MywxMyArNDk1LDEzIEBAIHN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogcGFkZGluZyBsb2dpYy4gT25seSBwZXJmb3JtIHplcm9jb3B5IGlmIHBhZGRpbmcgaXMgbm90IHJlcXVpcmVkLlxuIFx0ICovXG4gXHRpZiAoZHAtXHUwMDNldXNlcl9mZWF0dXJlcyBcdTAwMjYgT1ZTX0RQX0ZfVU5BTElHTkVEKVxuLVx0XHRobGVuID0gc2tiX3plcm9jb3B5X2hlYWRsZW4oc2tiKTtcbitcdFx0aGxlbiA9IG1pbihza2JfemVyb2NvcHlfaGVhZGxlbihza2IpLCBjdXRsZW4pO1xuIFx0ZWxzZVxuLVx0XHRobGVuID0gc2tiLVx1MDAzZWxlbjtcbitcdFx0aGxlbiA9IHNrYl9sZW47XG4gXG4tXHRsZW4gPSB1cGNhbGxfbXNnX3NpemUodXBjYWxsX2luZm8sIGhsZW4gLSBjdXRsZW4sXG4tXHRcdFx0ICAgICAgT1ZTX0NCKHNrYiktXHUwMDNlYWN0c19vcmlnbGVuKTtcbi1cdHVzZXJfc2tiID0gZ2VubG1zZ19uZXcobGVuLCBHRlBfQVRPTUlDKTtcbitcdG1zZ19zaXplID0gdXBjYWxsX21zZ19zaXplKHVwY2FsbF9pbmZvLCBobGVuLFxuK1x0XHRcdFx0ICAgT1ZTX0NCKHNrYiktXHUwMDNlYWN0c19vcmlnbGVuKTtcbitcdHVzZXJfc2tiID0gZ2VubG1zZ19uZXcobXNnX3NpemUsIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCF1c2VyX3NrYikge1xuIFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG91dDtcbkBAIC01NjAsNyArNTYyLDcgQEAgc3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHR9XG4gXG4gXHQvKiBBZGQgT1ZTX1BBQ0tFVF9BVFRSX0xFTiB3aGVuIHBhY2tldCBpcyB0cnVuY2F0ZWQgKi9cbi1cdGlmIChjdXRsZW4gXHUwMDNlIDAgXHUwMDI2XHUwMDI2XG4rXHRpZiAoc2tiX2xlbiBcdTAwM2Mgc2tiLVx1MDAzZWxlbiBcdTAwMjZcdTAwMjZcbiBcdCAgICBubGFfcHV0X3UzMih1c2VyX3NrYiwgT1ZTX1BBQ0tFVF9BVFRSX0xFTiwgc2tiLVx1MDAzZWxlbikpIHtcbiBcdFx0ZXJyID0gLUVOT0JVRlM7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTU4NSw5ICs1ODcsOSBAQCBzdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZXJyID0gLUVOT0JVRlM7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuLVx0bmxhLVx1MDAzZW5sYV9sZW4gPSBubGFfYXR0cl9zaXplKHNrYi1cdTAwM2VsZW4gLSBjdXRsZW4pO1xuK1x0bmxhLVx1MDAzZW5sYV9sZW4gPSBubGFfYXR0cl9zaXplKHNrYl9sZW4pO1xuIFxuLVx0ZXJyID0gc2tiX3plcm9jb3B5KHVzZXJfc2tiLCBza2IsIHNrYi1cdTAwM2VsZW4gLSBjdXRsZW4sIGhsZW4pO1xuK1x0ZXJyID0gc2tiX3plcm9jb3B5KHVzZXJfc2tiLCBza2IsIHNrYl9sZW4sIGhsZW4pO1xuIFx0aWYgKGVycilcbiBcdFx0Z290byBvdXQ7XG4gXG5AQCAtNjQ0LDYgKzY0Niw3IEBAIHN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRwYWNrZXQtXHUwMDNlaWdub3JlX2RmID0gMTtcbiBcdH1cbiBcdE9WU19DQihwYWNrZXQpLVx1MDAzZW1ydSA9IG1ydTtcbitcdE9WU19DQihwYWNrZXQpLVx1MDAzZWN1dGxlbiA9IFUzMl9NQVg7XG4gXG4gXHRpZiAoYVtPVlNfUEFDS0VUX0FUVFJfSEFTSF0pIHtcbiBcdFx0aGFzaCA9IG5sYV9nZXRfdTY0KGFbT1ZTX1BBQ0tFVF9BVFRSX0hBU0hdKTtcbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaCBiL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oXG5pbmRleCBkYjBjM2U2OWQ2NmNhYy4uNjk2NjQwZTg4ZmE3ZTMgMTAwNjQ0XG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaFxuKysrIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmhcbkBAIC0xMTgsNyArMTE4LDcgQEAgc3RydWN0IGRhdGFwYXRoIHtcbiAgKiBAbXJ1OiBUaGUgbWF4aW11bSByZWNlaXZlZCBmcmFnZW1lbnQgc2l6ZTsgMCBpZiB0aGUgcGFja2V0IGlzIG5vdFxuICAqIGZyYWdtZW50ZWQuXG4gICogQGFjdHNfb3JpZ2xlbjogVGhlIG5ldGxpbmsgc2l6ZSBvZiB0aGUgZmxvdyBhY3Rpb25zIGFwcGxpZWQgdG8gdGhpcyBza2IuXG4tICogQGN1dGxlbjogVGhlIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSBwYWNrZXQgZW5kIHRvIGJlIHJlbW92ZWQuXG4rICogQGN1dGxlbjogVGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgcGFja2V0IHRvIHByZXNlcnZlIG9uIG91dHB1dC5cbiAgKiBAcHJvYmFiaWxpdHk6IFRoZSBzYW1wbGluZyBwcm9iYWJpbGl0eSB0aGF0IHdhcyBhcHBsaWVkIHRvIHRoaXMgc2tiOyAwIG1lYW5zXG4gICogbm8gc2FtcGxpbmcgaGFzIG9jY3VycmVkOyBVMzJfTUFYIG1lYW5zIDEwMCUgcHJvYmFiaWxpdHkuXG4gICogQHVwY2FsbF9waWQ6IE5ldGxpbmsgc29ja2V0IFBJRCB0byB1c2UgZm9yIHNlbmRpbmcgdGhpcyBwYWNrZXQgdG8gdXNlcnNwYWNlO1xuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LmNcbmluZGV4IDU2YjJlMmQxYTc0OWY4Li4xMjc0MTQ4NWM5MzkzZCAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC92cG9ydC5jXG4rKysgYi9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQuY1xuQEAgLTUwMiw3ICs1MDIsNyBAQCBpbnQgb3ZzX3Zwb3J0X3JlY2VpdmUoc3RydWN0IHZwb3J0ICp2cG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdE9WU19DQihza2IpLVx1MDAzZWlucHV0X3Zwb3J0ID0gdnBvcnQ7XG4gXHRPVlNfQ0Ioc2tiKS1cdTAwM2VtcnUgPSAwO1xuLVx0T1ZTX0NCKHNrYiktXHUwMDNlY3V0bGVuID0gMDtcbitcdE9WU19DQihza2IpLVx1MDAzZWN1dGxlbiA9IFUzMl9NQVg7XG4gXHRPVlNfQ0Ioc2tiKS1cdTAwM2Vwcm9iYWJpbGl0eSA9IDA7XG4gXHRPVlNfQ0Ioc2tiKS1cdTAwM2V1cGNhbGxfcGlkID0gMDtcbiBcdGlmICh1bmxpa2VseShkZXZfbmV0KHNrYi1cdTAwM2VkZXYpICE9IG92c19kcF9nZXRfbmV0KHZwb3J0LVx1MDAzZWRwKSkpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI1OjU4LjY2MTUyNjYzMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNjU0MTYyOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgTGludXgga2VybmVsIHRoYXQncyBiZWVuIGFwcGxpZWQsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgbWFraW5nIGEgc2lnbmlmaWNhbnQgc2hpZnQgaW4gT3BlbiB2U3dpdGNoJ3MgY29yZSBwYWNrZXQgaGFuZGxpbmcuIEl0J3MgdG91Y2hpbmcgYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgLCBgbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmNgLCBgbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmhgLCBhbmQgYG5ldC9vcGVudnN3aXRjaC92cG9ydC5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSByZWRlZmluaXRpb24gb2YgYE9WU19DQihza2IpLVx1MDAzZWN1dGxlbmAsIG1vdmluZyBpdCBmcm9tIFwiYnl0ZXMgdG8gcmVtb3ZlXCIgdG8gXCJieXRlcyB0byBwcmVzZXJ2ZS5cIiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gaG93IGl0IG1hbmlwdWxhdGVzIHBhY2tldHMsIGFuZCBpdCBpbXBhY3RzIGBwc2tiX3RyaW1gLCBgc2tiX3plcm9jb3B5YCwgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdXNhZ2Ugb2YgdGhhdCBgY3V0bGVuYCBmaWVsZC4gXG5cbkdpdmVuIG15IGV4cGVydGlzZSwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBNb2RpZnlpbmcgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgd2l0aGluIE9wZW4gdlN3aXRjaCBpcyBhIHByaW1lIHRhcmdldCBmb3IgdW5jb3ZlcmluZyB2dWxuZXJhYmlsaXRpZXMuIE5vdywgdGhlIHBsYW4gaXM6XG5cbjEuICAqKklkZW50aWZ5IEZvY3VzIFN5bWJvbHM6KiogSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBkaXJlY3RseSBpbnRlcmFjdHMgd2l0aCwgc28gSSBjYW4gdGFyZ2V0IG15IGZ1enppbmcgZWZmb3J0cyBlZmZpY2llbnRseS5cbjIuICAqKkRldGVybWluZSBFbmFibGUgQ29uZmlndXJhdGlvbnM6KiogSSdsbCBhbHNvIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBgQ09ORklHX2Agb3B0aW9ucyBhcmUgbmVjZXNzYXJ5IHRvIGJ1aWxkIGFuZCBlbmFibGUgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uYWxpdHkgc28gSSBjYW4gYnVpbGQgYSB0ZXN0IGNvbmZpZ3VyYXRpb24gdG8gdGVzdCB0aGlzIHByb3Blcmx5LlxuXG5MZXQncyBkcmlsbCBkb3duIGludG8gdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucy4gSSdtIHNlZWluZzogYGRvX291dHB1dGAsIGBleGVjdXRlX3BzYW1wbGVgLCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCwgYG92c19kcF9wcm9jZXNzX3BhY2tldGAsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCwgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLCBhbmQgYG92c192cG9ydF9yZWNlaXZlYC4gVGhlc2UgYXJlIGFsbCB3aXRoaW4gdGhlIGBuZXQvb3BlbnZzd2l0Y2gvYCBkaXJlY3RvcnksIHNvIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdyBJJ2xsIHNjYW4gdGhlIGBLY29uZmlnYCBmb3IgT3BlbiB2U3dpdGNoIHRvIGRldGVybWluZSB0aGUgcmVsZXZhbnQgQ09ORklHIG9wdGlvbnMgdG8gZW5hYmxlIHRoZSBmZWF0dXJlLCBzbyBJIGNhbiBzdGFydCBjcmFmdGluZyBteSBmdXp6aW5nIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDk2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDk6MjY6MjEuMzE1NjkzMDkzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDc2Njg5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9QRU5WU1dJVENIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL0tjb25maWctNS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OmNvbmZpZyBPUEVOVlNXSVRDSFxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaFxcXCJcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTQzLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjQ0OmNvbmZpZyBPUEVOVlNXSVRDSF9HUkVcXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy00NS1cXHR0cmlzdGF0ZSBcXFwiT3BlbiB2U3dpdGNoIEdSRSB0dW5uZWxpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU2LVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjU3OmNvbmZpZyBPUEVOVlNXSVRDSF9WWExBTlxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU4LVxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2ggVlhMQU4gdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy02OC1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OTpjb25maWcgT1BFTlZTV0lUQ0hfR0VORVZFXFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaCBHZW5ldmUgdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI2OjIyLjg2MzM2OTE2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMDg2NjA5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE9wZW4gdlN3aXRjaCBDb25maWd1cmF0aW9uIE1vZGlmaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgT1BFTlZTV0lUQ0hgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBpbml0aWFsIHNjYW4gaXMgdGVsbGluZyBtZSB3ZSBoYXZlIHNldmVyYWwga2V5IGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiB0d2Vha2VkLiBMZXQncyBzZWUuLi4gSSd2ZSBnb3QgYGRvX291dHB1dGAsIGBleGVjdXRlX3BzYW1wbGVgLCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCwgYG92c19kcF9wcm9jZXNzX3BhY2tldGAsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCwgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLCBhbmQgYG92c192cG9ydF9yZWNlaXZlYC4gVGhhdCBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIGNoYW5nZWQgY29kZS5cblxuTm93LCBhcyBhbiBleHBlcnQsIEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gYGRvX2V4ZWN1dGVfYWN0aW9uc2AgYW5kIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCBpbW1lZGlhdGVseSBzdGFuZCBvdXQgYXMgc3Ryb25nIGNhbmRpZGF0ZXMgZm9yIEZvY3VzU3ltYm9scy4gVGhlaXIgcm9sZSBpbiBhY3Rpb24gZXhlY3V0aW9uIGFuZCB1c2VyLXNwYWNlIHBhY2tldCBoYW5kbGluZyBtYWtlcyB0aGVtIHByaW1lIHRhcmdldHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gYGRvX291dHB1dGAgaXMgYWxzbyBjcnVjaWFsIGFuZCBkZXNlcnZlcyBhIGNsb3NlIGxvb2suXG5cblRoZW4gd2UgaGF2ZSBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAsIHdoaWNoIEkgcmVjb2duaXplIGFzIHRoZSBlbnRyeSBwb2ludCBmcm9tIG5ldGxpbmssIGFuZCBgb3ZzX3Zwb3J0X3JlY2VpdmVgLCB0aGUgbmV0d29yayBkZXZpY2UgZW50cnkgcG9pbnQuIFVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGludGVyZmFjZXMgYXJlIGFmZmVjdGVkIGlzIGVzc2VudGlhbCBmb3IgYSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgdGhlIGNoYW5nZXMuXG5cbkknbSBhbHNvIGN1cmlvdXMgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIG5lZWRlZC4gRm9yIGV4YW1wbGUsIGBleGVjdXRlX3BzYW1wbGVgICptaWdodCogcmVxdWlyZSBhIGBQU0FNUExFYCBjb25maWd1cmF0aW9uIHRvIHdvcmsgY29ycmVjdGx5LiBJJ2xsIG1ha2UgYSBtZW50YWwgbm90ZSB0byBjaGVjayBmb3IgdGhhdCBkZXBlbmRlbmN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTQ5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI2OjI4LjE3MjAzMzAyNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzY3NjM5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXhlY3V0ZV9wc2FtcGxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMTY5PXN0YXRpYyBpbnQgZXhlY3V0ZV9kZWNfdHRsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjA4LSNpZiBJU19FTkFCTEVEKENPTkZJR19QU0FNUExFKVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTIwOTpzdGF0aWMgdm9pZCBleGVjdXRlX3BzYW1wbGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyMTAtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIpXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyNDAtI2Vsc2VcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjEyNDE6c3RhdGljIHZvaWQgZXhlY3V0ZV9wc2FtcGxlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjQyLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMjQ3PXN0YXRpYyBpbnQgZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE0NDktXFx0XFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfUFNBTVBMRTpcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE0NTA6XFx0XFx0XFx0ZXhlY3V0ZV9wc2FtcGxlKGRwLCBza2IsIGEpO1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTQ1MS1cXHRcXHRcXHRPVlNfQ0Ioc2tiKS1cXHUwMDNlY3V0bGVuID0gVTMyX01BWDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDk6MjY6MjguNTA4ODA0NDk1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA0NzM2NjUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZvY3VzU3ltYm9scyBGdW5jdGlvbnMgZm9yIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBDT05GSUdfUFNBTVBMRWAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCBmb3IgYGV4ZWN1dGVfcHNhbXBsZWAgdG8gd29yayBhcyBleHBlY3RlZC4gSG93ZXZlciwgaXQncyB0aGUgYE9QRU5WU1dJVENIYCBjb25maWd1cmF0aW9uIHRoYXQgc2VlbXMgdG8gaG91c2UgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIOKAkyBJJ2xsIGZvY3VzIG9uIGBPUEVOVlNXSVRDSGAgaW5pdGlhbGx5LCB3aXRoIGBQU0FNUExFYCBiZWluZyBhIG5pY2UtdG8taGF2ZSBpZiBpdCdzIHRoZXJlLlxuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlc2UgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gRm9jdXNTeW1ib2xzOiBgZG9fb3V0cHV0YCwgYGV4ZWN1dGVfcHNhbXBsZWAsIGBkb19leGVjdXRlX2FjdGlvbnNgLCBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAsIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgYW5kIGBvdnNfdnBvcnRfcmVjZWl2ZWAuIE9rYXksIGEgZmV3IHN0YW5kIG91dCBhcyBob3QgcGF0aCBmdW5jdGlvbnM6IGBvdnNfdnBvcnRfcmVjZWl2ZWAgLSB0aGF0J3MgY2FsbGVkIGZvciAqZXZlcnkqIHBhY2tldC4gVGhlbiB0aGVyZSdzIGBkb19leGVjdXRlX2FjdGlvbnNgIGFuZCBgZG9fb3V0cHV0YCB0b28g4oCTIHRob3NlIGFyZSBhbHNvIGhpZ2gtZnJlcXVlbmN5IGNhbGxzLiBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGAsIHdlbGwsIHRoYXQncyB0cmlnZ2VyZWQgd2hlbiBhIHBhY2tldCBoZWFkcyB0byB1c2Vyc3BhY2UgKGxpa2UgYW4gdXBjYWxsKSwgc28gd2hpbGUgaXQgaXNuJ3QgYXMgZnJlcXVlbnQsIGl0J3Mgc3RpbGwgYSBjb21tb24gb3BlcmF0aW9uLiBUaGVuLCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQncyBoYW5kbGluZyBwYWNrZXRzIHNlbnQgZnJvbSB1c2Vyc3BhY2UgdG8gdGhlIGRhdGFwYXRoIGZvciBleGVjdXRpb24uIEZpbmFsbHksIHdlIGhhdmUgYGV4ZWN1dGVfcHNhbXBsZWAsIHdoaWNoIGlzIG9ubHkgY2FsbGVkIHdoZW4gdGhlIHBzYW1wbGUgYWN0aW9uIGlzIGV4cGxpY2l0bHkgZXhlY3V0ZWQuXG5cbkFoYSEgVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgT1ZTX0FDVElPTl9BVFRSX1RSVU5DYCBhbmQgaG93IHRoZSBgY3V0bGVuYCBwYXJhbWV0ZXIgaXMgaW50ZXJwcmV0ZWQsIHdoaWNoIG1lYW5zIEknbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBob3cgdGhhdCBhY3Rpb24gaXMgYmVpbmcgaW1wbGVtZW50ZWQgaW4gYGFjdGlvbnMuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzMCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwOToyNjozNC41NTYxNzM1NDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMzk4NTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk9WU19BQ1RJT05fQVRUUl9UUlVOQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTI0Nz1zdGF0aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjg2LVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTI4NzpcXHRcXHRjYXNlIE9WU19BQ1RJT05fQVRUUl9UUlVOQzoge1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTI4OC1cXHRcXHRcXHRzdHJ1Y3Qgb3ZzX2FjdGlvbl90cnVuYyAqdHJ1bmMgPSBubGFfZGF0YShhKTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYz01Mz1zdGF0aWMgYm9vbCBhY3Rpb25zX21heV9jaGFuZ2VfZmxvdyhjb25zdCBzdHJ1Y3QgbmxhdHRyICphY3Rpb25zKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTYzLVxcdFxcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1JFQ0lSQzpcXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmM6NjQ6XFx0XFx0Y2FzZSBPVlNfQUNUSU9OX0FUVFJfVFJVTkM6XFxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTY1LVxcdFxcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1VTRVJTUEFDRTpcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYz0zMTQ3PXN0YXRpYyBpbnQgX19vdnNfbmxhX2NvcHlfYWN0aW9ucyhzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMtMzE3Ni1cXHRcXHRcXHRbT1ZTX0FDVElPTl9BVFRSX0NUX0NMRUFSXSA9IDAsXFxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jOjMxNzc6XFx0XFx0XFx0W09WU19BQ1RJT05fQVRUUl9UUlVOQ10gPSBzaXplb2Yoc3RydWN0IG92c19hY3Rpb25fdHJ1bmMpLFxcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYy0zMTc4LVxcdFxcdFxcdFtPVlNfQUNUSU9OX0FUVFJfUFVTSF9FVEhdID0gc2l6ZW9mKHN0cnVjdCBvdnNfYWN0aW9uX3B1c2hfZXRoKSxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYy0zMjE0LVxcbm5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYzozMjE1OlxcdFxcdGNhc2UgT1ZTX0FDVElPTl9BVFRSX1RSVU5DOiB7XFxubmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jLTMyMTYtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IG92c19hY3Rpb25fdHJ1bmMgKnRydW5jID0gbmxhX2RhdGEoYSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI2OjM0LjcyODU3OTA4NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NDMwMjAyNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoIG9uIFBhY2tldCBIYW5kbGluZyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIGhvdyBgY3V0bGVuYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBzeXN0ZW0uIE15IGluaXRpYWwgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBjdXRsZW5gJ3MgdmFsdWUgaXMgZGVyaXZlZCBmcm9tIGBPVlNfQUNUSU9OX0FUVFJfVFJVTkNgLiBPa2F5LCB0aGF0J3MgY2xlYXIgZW5vdWdoLiBOb3csIHdoZXJlIGlzIGBjdXRsZW5gIGFjdHVhbGx5ICp1c2VkKj8gVGhlIHRleHQgaWRlbnRpZmllcyBgZG9fb3V0cHV0YCwgYHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXRgLCBhbmQgYGV4ZWN1dGVfcHNhbXBsZWAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBrZWVwIHRob3NlIGluIG1pbmQuIEFuZCwgb2YgY291cnNlLCB0aGUgYGRvX2V4ZWN1dGVfYWN0aW9uc2Agd2hpY2ggaXMgaW1wbGllZCBhcyBwYXJ0IG9mIHRoZSBvdmVyYWxsIGZsb3cuXG5cbk9rYXksIGxldCdzIHNoYXJwZW4gb3VyIGZvY3VzIGhlcmUuIEknbSBnb2luZyB0byByZWZpbmUgdGhpcyBsaXN0IHRvOlxuXG4qICAgYGRvX291dHB1dGBcbiogICBgcXVldWVfdXNlcnNwYWNlX3BhY2tldGBcbiogICBgZXhlY3V0ZV9wc2FtcGxlYFxuKiAgIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYFxuXG5UaG9zZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIGFuYWx5emUgaW4gZGV0YWlsLiBJIGhhdmUgdG8gbWFrZSBzdXJlIEkgYW0gYWNjb3VudGluZyBmb3IgZXZlcnl0aGluZy5cblxuTm93LCBiZXlvbmQgdGhlIGNvcmUgZnVuY3Rpb25zLCBhcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gTGV0IG1lIHRoaW5rLi4uIE9oLCByaWdodCwgdGhlcmUncyBgT1BFTlZTV0lUQ0hgIGFuZCBgUFNBTVBMRWAuIFRob3NlIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LiBBbmQsIG9mIGNvdXJzZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgUFNBTVBMRWAgY29uZmlndXJhdGlvbiB0byBzZWUgaWYgdGhlcmUncyBhbnkgaW50ZXJhY3Rpb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NzEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDk6MjY6MzkuNTcxNjAyOTk3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODcxMDE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFNBTVBMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcHNhbXBsZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BzYW1wbGUvS2NvbmZpZy01LVxcbm5ldC9wc2FtcGxlL0tjb25maWc6NjptZW51Y29uZmlnIFBTQU1QTEVcXG5uZXQvcHNhbXBsZS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlBhY2tldC1zYW1wbGluZyBuZXRsaW5rIGNoYW5uZWxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI2OjM5LjYzMDMyMDM5N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjU4NDMzMzUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBQYWNrZXQgVHJ1bmNhdGlvbiBpbiBPcGVuIHZTd2l0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBob3cgaXQgaW1wYWN0cyBPcGVuIHZTd2l0Y2guIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgaG93IHRoZSBgT1ZTX0FDVElPTl9BVFRSX1RSVU5DYCBhY3Rpb24gYW5kIHRoZSBhc3NvY2lhdGVkIGBjdXRsZW5gIGZpZWxkIGFyZSBoYW5kbGVkLiBJdCdzIHRvdWNoaW5nIHNvbWUga2V5IGFyZWFzOiBwYWNrZXQgdHJ1bmNhdGlvbiBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbiwgb3V0cHV0LCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdXNlcnNwYWNlLiBUaGlzIGRlZmluaXRlbHkgd2FycmFudHMgZnV6emluZywgYXMgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIHZ1bG5lcmFiaWxpdGllcyBpbiBuZXR3b3JrIGRhdGFwYXRoIGNvZGUuXG5cbkkndmUgZGV0ZXJtaW5lZCB0aGF0IGBQU0FNUExFYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIGhlcmUuIEFuZCB5ZXMsIGBPUEVOVlNXSVRDSGAgaXMgc3VmZmljaWVudCB0byBlbmFibGUgdGhlIG5lZWRlZCBjb25maWd1cmF0aW9ucy5cblxuSW5pdGlhbGx5LCBJIHdhcyBjb25zaWRlcmluZyB0aGVzZSBmdW5jdGlvbnMgYXMgZm9jdXMgc3ltYm9sczogYGRvX291dHB1dGAsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCwgYGV4ZWN1dGVfcHNhbXBsZWAsIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgYW5kIGBkb19leGVjdXRlX2FjdGlvbnNgLiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgc3RyYXRlZ2ljLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBhdm9pZCBob3QgcGF0aCBmdW5jdGlvbnMuIGBkb19leGVjdXRlX2FjdGlvbnNgIGlzIHRoZSBtYWluIGFjdGlvbiBsb29wOyB0b28gYnJvYWQuIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCBkZWFscyB3aXRoIHVwY2FsbHMsIHNvIGl0J3MgbGVzcyBvZiBhIGhvdCBwYXRoLiBgZXhlY3V0ZV9wc2FtcGxlYCBhbmQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIGFyZSBzcGVjaWZpYyB0byBwYWNrZXQgZXhlY3V0aW9uIGNvbW1hbmRzIGZyb20gdXNlcnNwYWNlIGFuZCB0aGUgcHNhbXBsZSBhY3Rpb24uXG5cbkluaXRpYWxseSBJIGNvbnNpZGVyZWQgZXhjbHVkaW5nIGBkb19vdXRwdXRgLCBnaXZlbiBpdHMgY29tbW9uIG5hdHVyZS4gSG93ZXZlciwgYWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb2RlLCBpdCdzIGNsZWFyIHRoaXMgaXMgd2hlcmUgYSAqc2lnbmlmaWNhbnQqIGNoYW5nZSBpcyB0YWtpbmcgcGxhY2UgaW4gaG93IGBwc2tiX3RyaW1gIGFuZCB0aGUgYGN1dGxlbmAgZmllbGQgYXJlIGhhbmRsZWQuIEV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljIGluIGBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jYCwgSSdtIGdvaW5nIHRvIGluY2x1ZGUgaXQuXG5cbkFmdGVyIGNoZWNraW5nIHRoZSBjb2RlIGFnYWluLCBJIGFtIGdvaW5nIHRvIGZvY3VzIG9uOiBgZG9fb3V0cHV0YCwgYGV4ZWN1dGVfcHNhbXBsZWAsIGBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0YCBhbmQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB3aGVyZSB0aGUgY29yZSBsb2dpYyBjaGFuZ2VzLiBUaGUgb3RoZXIgZnVuY3Rpb25zIGluaXRpYWxpemUgYW5kIHNldCB0aGUgY3V0bGVuLlxuXG5UaGVyZWZvcmUsIEkgd2lsbCBzZXQgdGhlc2UgYXMgbXkgZm9jdXMgc3ltYm9scy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODIyOCwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjI2OjUyLjIxNDY1NzM3NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyODg3MDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiLFxuICAgIFwiUFNBTVBMRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX291dHB1dFwiLFxuICAgIFwiZXhlY3V0ZV9wc2FtcGxlXCIsXG4gICAgXCJxdWV1ZV91c2Vyc3BhY2VfcGFja2V0XCIsXG4gICAgXCJvdnNfcGFja2V0X2NtZF9leGVjdXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IHBhY2tldCB0cnVuY2F0aW9uIChPVlNfQUNUSU9OX0FUVFJfVFJVTkMpIGFuZCB0aGUgY3V0bGVuIGZpZWxkIGFyZSBoYW5kbGVkIGR1cmluZyBhY3Rpb24gZXhlY3V0aW9uLCBvdXRwdXQsIGFuZCB1cGNhbGxzIHRvIHVzZXJzcGFjZS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBkYXRhcGF0aCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiLFxuICAgIFwiUFNBTVBMRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX291dHB1dFwiLFxuICAgIFwiZXhlY3V0ZV9wc2FtcGxlXCIsXG4gICAgXCJxdWV1ZV91c2Vyc3BhY2VfcGFja2V0XCIsXG4gICAgXCJvdnNfcGFja2V0X2NtZF9leGVjdXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gT3BlbiB2U3dpdGNoLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IHBhY2tldCB0cnVuY2F0aW9uIChPVlNfQUNUSU9OX0FUVFJfVFJVTkMpIGFuZCB0aGUgY3V0bGVuIGZpZWxkIGFyZSBoYW5kbGVkIGR1cmluZyBhY3Rpb24gZXhlY3V0aW9uLCBvdXRwdXQsIGFuZCB1cGNhbGxzIHRvIHVzZXJzcGFjZS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBkYXRhcGF0aCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfxvzj[1] Phase: Succeeded StartedAt: 2026-07-08 09:28:39 +0000 UTC FinishedAt: 2026-07-08 09:28:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 09:28:39 +0000 UTC FinishedAt: 2026-07-08 09:28:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2] Phase: Succeeded StartedAt: 2026-07-08 09:28:39 +0000 UTC FinishedAt: 2026-07-08 14:02:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 09:28:39 +0000 UTC FinishedAt: 2026-07-08 14:02:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 09:28:39 +0000 UTC FinishedAt: 2026-07-08 09:29:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 09:28:39 +0000 UTC FinishedAt: 2026-07-08 09:28:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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-workflowfxvzj/series-workflowfxvzj-convert-artifact-3709927788/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 09:29:02 +0000 UTC FinishedAt: 2026-07-08 10:04:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 09:29:02 +0000 UTC FinishedAt: 2026-07-08 10:04:42 +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:*90fed5f5-513a-4df1-bf64-da1aa2dc41da,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-workflowfxvzj/series-workflowfxvzj-convert-artifact-3709927788/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": "7d7b85d5-02ce-4972-9e62-8bdcff9e5faa", "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-workflowfxvzj/series-workflowfxvzj-build-action-2906549146/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 09:29:02 +0000 UTC FinishedAt: 2026-07-08 10:04:32 +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:*90fed5f5-513a-4df1-bf64-da1aa2dc41da,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-workflowfxvzj/series-workflowfxvzj-convert-artifact-3709927788/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": "7d7b85d5-02ce-4972-9e62-8bdcff9e5faa", "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-workflowfxvzj/series-workflowfxvzj-build-action-2906549146/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:04:42 +0000 UTC FinishedAt: 2026-07-08 10:04:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:04:42 +0000 UTC FinishedAt: 2026-07-08 10:04:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:04:42 +0000 UTC FinishedAt: 2026-07-08 10:04:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:04:42 +0000 UTC FinishedAt: 2026-07-08 10:04:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-workflowfxvzj/series-workflowfxvzj-convert-artifact-149051947/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:04:52 +0000 UTC FinishedAt: 2026-07-08 10:06:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:04:52 +0000 UTC FinishedAt: 2026-07-08 10:06:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7d7b85d5-02ce-4972-9e62-8bdcff9e5faa,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-workflowfxvzj/series-workflowfxvzj-build-action-2906549146/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-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:06:50 +0000 UTC FinishedAt: 2026-07-08 10:06:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:06:50 +0000 UTC FinishedAt: 2026-07-08 10:06:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:06:50 +0000 UTC FinishedAt: 2026-07-08 10:52:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:06:50 +0000 UTC FinishedAt: 2026-07-08 10:52:49 +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:*90fed5f5-513a-4df1-bf64-da1aa2dc41da,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-workflowfxvzj/series-workflowfxvzj-convert-artifact-149051947/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": "a76af31a-316f-457b-bb35-b3ad8f16d803", "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-workflowfxvzj/series-workflowfxvzj-build-action-701237839/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:06:50 +0000 UTC FinishedAt: 2026-07-08 10:52:39 +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:*90fed5f5-513a-4df1-bf64-da1aa2dc41da,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-workflowfxvzj/series-workflowfxvzj-convert-artifact-149051947/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": "a76af31a-316f-457b-bb35-b3ad8f16d803", "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-workflowfxvzj/series-workflowfxvzj-build-action-701237839/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:52:49 +0000 UTC FinishedAt: 2026-07-08 10:52:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:52:49 +0000 UTC FinishedAt: 2026-07-08 10:52:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:52:49 +0000 UTC FinishedAt: 2026-07-08 10:54:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:52:49 +0000 UTC FinishedAt: 2026-07-08 10:54:36 +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:*a76af31a-316f-457b-bb35-b3ad8f16d803,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-workflowfxvzj/series-workflowfxvzj-build-action-701237839/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-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:54:46 +0000 UTC FinishedAt: 2026-07-08 14:02:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:54:46 +0000 UTC FinishedAt: 2026-07-08 14:02:20 +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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"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:*7d7b85d5-02ce-4972-9e62-8bdcff9e5faa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a76af31a-316f-457b-bb35-b3ad8f16d803,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-workflowfxvzj/series-workflowfxvzj-build-action-2906549146/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-workflowfxvzj/series-workflowfxvzj-build-action-701237839/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:54:46 +0000 UTC FinishedAt: 2026-07-08 10:55:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:54:46 +0000 UTC FinishedAt: 2026-07-08 10:54:55 +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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"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-workflowfxvzj/series-workflowfxvzj-convert-artifact-614817348/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:54:46 +0000 UTC FinishedAt: 2026-07-08 10:54:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:54:46 +0000 UTC FinishedAt: 2026-07-08 10:54:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:54:47 +0000 UTC FinishedAt: 2026-07-08 10:54:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:55:07 +0000 UTC FinishedAt: 2026-07-08 14:02:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfxvzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"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":["do_output","execute_psample","queue_userspace_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","PSAMPLE"],"series_id":"c1102f3c-eaaf-4cd4-9999-1bae8ecc1e8c","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-07-08 10:55:07 +0000 UTC FinishedAt: 2026-07-08 14:02:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7d7b85d5-02ce-4972-9e62-8bdcff9e5faa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a76af31a-316f-457b-bb35-b3ad8f16d803,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-workflowfxvzj/series-workflowfxvzj-build-action-2906549146/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-workflowfxvzj/series-workflowfxvzj-build-action-701237839/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-workflowfxvzj/series-workflowfxvzj-convert-artifact-614817348/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,}