Name: series-workflowspmr6 Phase: Succeeded StartedAt: 2026-07-23 05:13:01 +0000 UTC FinishedAt: 2026-07-23 06:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[0] Phase: Succeeded StartedAt: 2026-07-23 05:13:01 +0000 UTC FinishedAt: 2026-07-23 05:33:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 05:13:01 +0000 UTC FinishedAt: 2026-07-23 05:33:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "242a3c50-2bb1-477f-86af-8d781cc3e03a" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_loongarch_csr_io" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IEtWTSBpb2N0bHMgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IgZm9yIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgdG8gZ2V0L3NldCBidWxrIENTUiBzdGF0ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgdXNlci1mYWNpbmcgQVBJcyB3aGljaCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTA1NTdkM2EwOTlhNTljODgwMjhlYTYxOTAwNTVmYTUxYTVmODkxM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDA1OjMzOjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5pbmRleCBjZDBiNWMxMWNhOWMyYi4uNTliM2I3ZWZhMDM5N2UgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5AQCAtMTI3LDYgJiM0MzsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xuIHN0cnVjdCBrdm1fc3JlZ3Mge1xuIH07XG4gXG4mIzQzOy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqL1xuJiM0MztzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkge1xuJiM0MztcdF9fdTMyIGluZGV4O1xuJiM0MztcdF9fdTMyIHJlc2VydmVkO1xuJiM0MztcdF9fdTY0IGRhdGE7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIHtcbiYjNDM7XHRfX3UzMiBuY3NycztcdC8qIG51bWJlciBvZiBjc3IgZW50cmllcyAqL1xuJiM0MztcdF9fdTMyIHBhZDtcbiYjNDM7XHRfX0RFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnksIGVudHJpZXMpO1xuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3Qga3ZtX2lvY3NyX2VudHJ5IHtcbiBcdF9fdTMyIGFkZHI7XG4gXHRfX3UzMiBwYWQ7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbmluZGV4IDIwYzIwN2Q4MGUzMWFlLi45YjQxMWM2OTQ3MThjNiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbkBAIC0xMDA5LDYgJiM0MzsxMDA5LDczIEBAIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzXG4gXHRyZXR1cm4gLUVOT0lPQ1RMQ01EO1xuIH1cbiBcbiYjNDM7LyogbWF4IENTUiBlbnRyaWVzIGhhbmRsZWQgcGVyIGlvY3RsICovXG4mIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1NcdDB4NDAwXG4mIzQzO1xuJiM0MzsvKiBCdWxrIGdldC9zZXQgb2YgQ1NSIHN0YXRlIGZvciBWTSBtaWdyYXRpb24uICovXG4mIzQzO3N0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuJiM0MztcdFx0XHRcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgX191c2VyICp1Y3NycyxcbiYjNDM7XHRcdFx0XHRib29sIHdyaXRlKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGksIHJldCA9IDA7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBzaXplO1xuJiM0MztcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgY3NycztcbiYjNDM7XHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkgKmVudHJpZXM7XG4mIzQzO1x0c3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LVx1MDAzZWFyY2guY3NyO1xuJiM0MztcbiYjNDM7XHRpZiAoY29weV9mcm9tX3VzZXIoXHUwMDI2Y3NycywgdWNzcnMsIHNpemVvZihjc3JzKSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XG4mIzQzO1x0aWYgKGNzcnMubmNzcnMgXHUwMDNlIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTKVxuJiM0MztcdFx0cmV0dXJuIC1FMkJJRztcbiYjNDM7XG4mIzQzO1x0c2l6ZSA9IGFycmF5X3NpemUoY3Nycy5uY3Nycywgc2l6ZW9mKCplbnRyaWVzKSk7XG4mIzQzO1x0ZW50cmllcyA9IG1lbWR1cF91c2VyKHVjc3JzLVx1MDAzZWVudHJpZXMsIHNpemUpO1xuJiM0MztcdGlmIChJU19FUlIoZW50cmllcykpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihlbnRyaWVzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHdyaXRlKSB7XG4mIzQzO1x0XHR2Y3B1LVx1MDAzZWFyY2guYXV4X2ludXNlIFx1MDAyNj0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHByZWVtcHRfZGlzYWJsZSgpO1xuJiM0MztcdFx0dmNwdV9sb2FkKHZjcHUpO1xuJiM0MztcdFx0a3ZtX2RlbGl2ZXJfaW50cih2Y3B1KTtcbiYjNDM7XHRcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX1NXQ1NSX0xBVEVTVDtcbiYjNDM7XHRcdHZjcHVfcHV0KHZjcHUpO1xuJiM0MztcdFx0cHJlZW1wdF9lbmFibGUoKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGNzcnMubmNzcnM7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgaWQgPSBlbnRyaWVzW2ldLmluZGV4O1xuJiM0MztcbiYjNDM7XHRcdGlmIChnZXRfZ2Nzcl9mbGFnKGlkKSBcdTAwMjYgSU5WQUxJRF9HQ1NSKSB7XG4mIzQzO1x0XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGlmICh3cml0ZSkge1xuJiM0MztcdFx0XHRyZXQgPSBfa3ZtX3NldGNzcih2Y3B1LCBpZCwgZW50cmllc1tpXS5kYXRhKTtcbiYjNDM7XHRcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdH0gZWxzZSBpZiAoaWQgPT0gTE9PTkdBUkNIX0NTUl9FU1RBVCkge1xuJiM0MztcdFx0XHR1bnNpZ25lZCBsb25nIGVzdGF0LCBnaW50YztcbiYjNDM7XG4mIzQzO1x0XHRcdC8qIEVTVEFUIElQMH5JUDcgY29tZSBmcm9tIEdJTlRDICovXG4mIzQzO1x0XHRcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFx1MDAyNiBLVk1fR0lOVENfSVJRX01BU0s7XG4mIzQzO1x0XHRcdGVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpIFx1MDAyNiB+S1ZNX0VTVEFUX0VYVElfTUFTSztcbiYjNDM7XHRcdFx0ZW50cmllc1tpXS5kYXRhID0gZXN0YXQgfCAoZ2ludGMgXHUwMDNjXHUwMDNjIFZJUF9ERUxUQSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRlbnRyaWVzW2ldLmRhdGEgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgaWQpO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCF3cml0ZSBcdTAwMjZcdTAwMjYgY29weV90b191c2VyKHVjc3JzLVx1MDAzZWVudHJpZXMsIGVudHJpZXMsIHNpemUpKVxuJiM0MztcdFx0cmV0ID0gLUVGQVVMVDtcbiYjNDM7XG4mIzQzO1x0a2ZyZWUoZW50cmllcyk7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbiB7XG4gXHRpbnQgaTtcbkBAIC0xMjY2LDYgJiM0MzsxMzMzLDEyIEBAIGxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbiBcdFx0XHRyID0ga3ZtX2dldF9yZWcodmNwdSwgXHUwMDI2cmVnKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4mIzQzO1x0Y2FzZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1I6XG4mIzQzO1x0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1I6XG4mIzQzO1x0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7XG4mIzQzO1x0XHRicmVhaztcbiBcdGNhc2UgS1ZNX0VOQUJMRV9DQVA6IHtcbiBcdFx0c3RydWN0IGt2bV9lbmFibGVfY2FwIGNhcDtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbmluZGV4IDQxOTAxMTA5N2ZhOGUyLi5hYWRlNjU3NTE3MjFkOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG5AQCAtMTY3MCw0ICYjNDM7MTY3MCw4IEBAIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSB7XG4gXHRfX3U2NCBwYWRkaW5nWzVdO1xuIH07XG4gXG4mIzQzOy8qIExvb25nQXJjaDogYnVsayBDU1IgZ2V0L3NldCBmb3IgbWlncmF0aW9uICovXG4mIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSXHRfSU9XUihLVk1JTywgMHhkNiwgc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycylcbiYjNDM7I2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1JcdF9JT1coS1ZNSU8sICAweGQ3LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKVxuJiM0MztcbiAjZW5kaWYgLyogX19MSU5VWF9LVk1fSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fbG9vbmdhcmNoX2Nzcl9pbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBLVk0gaW9jdGxzIEtWTV9MT09OR0FSQ0hfR0VUX0NTUiBhbmQgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSIGZvciBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIHRvIGdldC9zZXQgYnVsayBDU1Igc3RhdGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGludHJvZHVjZXMgbmV3IHVzZXItZmFjaW5nIEFQSXMgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTA1NTdkM2EwOTlhNTljODgwMjhlYTYxOTAwNTVmYTUxYTVmODkxMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDA1OjMzOjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKaW5kZXggY2QwYjVjMTFjYTljMmIuLjU5YjNiN2VmYTAzOTdlIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKQEAgLTEyNyw2ICYjNDM7MTI3LDE5IEBAIHN0cnVjdCBrdm1fc3luY19yZWdzIHsKIHN0cnVjdCBrdm1fc3JlZ3MgewogfTsKIAomIzQzOy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqLwomIzQzO3N0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSB7CiYjNDM7CV9fdTMyIGluZGV4OwomIzQzOwlfX3UzMiByZXNlcnZlZDsKJiM0MzsJX191NjQgZGF0YTsKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgewomIzQzOwlfX3UzMiBuY3NyczsJLyogbnVtYmVyIG9mIGNzciBlbnRyaWVzICovCiYjNDM7CV9fdTMyIHBhZDsKJiM0MzsJX19ERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5LCBlbnRyaWVzKTsKJiM0Mzt9OwomIzQzOwogc3RydWN0IGt2bV9pb2Nzcl9lbnRyeSB7CiAJX191MzIgYWRkcjsKIAlfX3UzMiBwYWQ7CmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwppbmRleCAyMGMyMDdkODBlMzFhZS4uOWI0MTFjNjk0NzE4YzYgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwpAQCAtMTAwOSw2ICYjNDM7MTAwOSw3MyBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncwogCXJldHVybiAtRU5PSU9DVExDTUQ7CiB9CiAKJiM0MzsvKiBtYXggQ1NSIGVudHJpZXMgaGFuZGxlZCBwZXIgaW9jdGwgKi8KJiM0MzsjZGVmaW5lIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTCTB4NDAwCiYjNDM7CiYjNDM7LyogQnVsayBnZXQvc2V0IG9mIENTUiBzdGF0ZSBmb3IgVk0gbWlncmF0aW9uLiAqLwomIzQzO3N0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAomIzQzOwkJCQlzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIF9fdXNlciAqdWNzcnMsCiYjNDM7CQkJCWJvb2wgd3JpdGUpCiYjNDM7ewomIzQzOwlpbnQgaSwgcmV0ID0gMDsKJiM0MzsJdW5zaWduZWQgbG9uZyBzaXplOwomIzQzOwlzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIGNzcnM7CiYjNDM7CXN0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSAqZW50cmllczsKJiM0MzsJc3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LSZndDthcmNoLmNzcjsKJiM0MzsKJiM0MzsJaWYgKGNvcHlfZnJvbV91c2VyKCZhbXA7Y3NycywgdWNzcnMsIHNpemVvZihjc3JzKSkpCiYjNDM7CQlyZXR1cm4gLUVGQVVMVDsKJiM0MzsKJiM0MzsJaWYgKGNzcnMubmNzcnMgJmd0OyBLVk1fTE9PTkdBUkNIX01BWF9DU1JfUkVHUykKJiM0MzsJCXJldHVybiAtRTJCSUc7CiYjNDM7CiYjNDM7CXNpemUgPSBhcnJheV9zaXplKGNzcnMubmNzcnMsIHNpemVvZigqZW50cmllcykpOwomIzQzOwllbnRyaWVzID0gbWVtZHVwX3VzZXIodWNzcnMtJmd0O2VudHJpZXMsIHNpemUpOwomIzQzOwlpZiAoSVNfRVJSKGVudHJpZXMpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIoZW50cmllcyk7CiYjNDM7CiYjNDM7CWlmICh3cml0ZSkgewomIzQzOwkJdmNwdS0mZ3Q7YXJjaC5hdXhfaW51c2UgJmFtcDs9IH5LVk1fTEFSQ0hfSFdDU1JfVVNBQkxFOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcHJlZW1wdF9kaXNhYmxlKCk7CiYjNDM7CQl2Y3B1X2xvYWQodmNwdSk7CiYjNDM7CQlrdm1fZGVsaXZlcl9pbnRyKHZjcHUpOwomIzQzOwkJdmNwdS0mZ3Q7YXJjaC5hdXhfaW51c2UgJmFtcDs9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUOwomIzQzOwkJdmNwdV9wdXQodmNwdSk7CiYjNDM7CQlwcmVlbXB0X2VuYWJsZSgpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBjc3JzLm5jc3JzOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdW5zaWduZWQgaW50IGlkID0gZW50cmllc1tpXS5pbmRleDsKJiM0MzsKJiM0MzsJCWlmIChnZXRfZ2Nzcl9mbGFnKGlkKSAmYW1wOyBJTlZBTElEX0dDU1IpIHsKJiM0MzsJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKHdyaXRlKSB7CiYjNDM7CQkJcmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaWQsIGVudHJpZXNbaV0uZGF0YSk7CiYjNDM7CQkJaWYgKHJldCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9IGVsc2UgaWYgKGlkID09IExPT05HQVJDSF9DU1JfRVNUQVQpIHsKJiM0MzsJCQl1bnNpZ25lZCBsb25nIGVzdGF0LCBnaW50YzsKJiM0MzsKJiM0MzsJCQkvKiBFU1RBVCBJUDB+SVA3IGNvbWUgZnJvbSBHSU5UQyAqLwomIzQzOwkJCWdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpICZhbXA7IEtWTV9HSU5UQ19JUlFfTUFTSzsKJiM0MzsJCQllc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSAmYW1wOyB+S1ZNX0VTVEFUX0VYVElfTUFTSzsKJiM0MzsJCQllbnRyaWVzW2ldLmRhdGEgPSBlc3RhdCB8IChnaW50YyAmbHQ7Jmx0OyBWSVBfREVMVEEpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQllbnRyaWVzW2ldLmRhdGEgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgaWQpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICghd3JpdGUgJmFtcDsmYW1wOyBjb3B5X3RvX3VzZXIodWNzcnMtJmd0O2VudHJpZXMsIGVudHJpZXMsIHNpemUpKQomIzQzOwkJcmV0ID0gLUVGQVVMVDsKJiM0MzsKJiM0MzsJa2ZyZWUoZW50cmllcyk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpCiB7CiAJaW50IGk7CkBAIC0xMjY2LDYgJiM0MzsxMzMzLDEyIEBAIGxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwKIAkJCXIgPSBrdm1fZ2V0X3JlZyh2Y3B1LCAmYW1wO3JlZyk7CiAJCWJyZWFrOwogCX0KJiM0MzsJY2FzZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1I6CiYjNDM7CQlyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSOgomIzQzOwkJciA9IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHZjcHUsIGFyZ3AsIHRydWUpOwomIzQzOwkJYnJlYWs7CiAJY2FzZSBLVk1fRU5BQkxFX0NBUDogewogCQlzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgY2FwOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgKaW5kZXggNDE5MDExMDk3ZmE4ZTIuLmFhZGU2NTc1MTcyMWQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCkBAIC0xNjcwLDQgJiM0MzsxNjcwLDggQEAgc3RydWN0IGt2bV9wcmVfZmF1bHRfbWVtb3J5IHsKIAlfX3U2NCBwYWRkaW5nWzVdOwogfTsKIAomIzQzOy8qIExvb25nQXJjaDogYnVsayBDU1IgZ2V0L3NldCBmb3IgbWlncmF0aW9uICovCiYjNDM7I2RlZmluZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1IJX0lPV1IoS1ZNSU8sIDB4ZDYsIHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMpCiYjNDM7I2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1IJX0lPVyhLVk1JTywgIDB4ZDcsIHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMpCiYjNDM7CiAjZW5kaWYgLyogX19MSU5VWF9LVk1fSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDIyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBMb29uZ0FyY2ggS1ZNIENTUiBJb2N0bHMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgbmV3IHBhdGNoIGhlcmUgaW50cm9kdWNpbmcgYEtWTV9MT09OR0FSQ0hfR0VUX0NTUmAgYW5kIGBLVk1fTE9PTkdBUkNIX1NFVF9DU1JgIGlvY3RscyBzcGVjaWZpY2FsbHkgZm9yIExvb25nQXJjaCBLVk0uIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgbW9kaWZpY2F0aW9ucyBhcmUgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgIGFuZCBhIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUgdXBkYXRlIGluIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oYC4gVGhhdCBtYWtlcyBzZW5zZTsgdGhlIGB2Y3B1LmNgIGZpbGUgaXMgd2hlcmUgdGhlIGlvY3RsIGhhbmRsaW5nIGxvZ2ljIHR5cGljYWxseSByZXNpZGVzIHdpdGhpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZS4gVGhlIG5ldyBpb2N0bHMgd2lsbCBiZSByb3V0ZWQgdGhyb3VnaCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAsIHdoaWNoIGlzIHN0YW5kYXJkIGZvciBLVk0gYXJjaGl0ZWN0dXJlcy4gQWRkaXRpb25hbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgaGVscGVyIGZ1bmN0aW9uIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AsIHdoaWNoIEkmIzM5O20gYXNzdW1pbmcgaGFuZGxlcyB0aGUgYWN0dWFsIENTUiAoQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyKSBpbnRlcmFjdGlvbnMuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpczogaXMgdGhpcyBmdXp6YWJsZT8gQWJzb2x1dGVseS4gTmV3IGlvY3RscyBhcmUgYWx3YXlzIGhpZ2gtdmFsdWUgdGFyZ2V0cywgYW5kIENTUiBtYW5pcHVsYXRpb24gd2l0aGluIEtWTSBvbiBhIG5ldyBhcmNoaXRlY3R1cmUgbGlrZSBMb29uZ0FyY2ggaXMgcG90ZW50aWFsbHkgZmVydGlsZSBncm91bmQgZm9yIHZ1bG5lcmFiaWxpdGllcy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZm9jdXMgb24gZnV6emluZyBga3ZtX2xvb25nYXJjaF9jc3JfaW9gLiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBjb25maWcgb3B0aW9ucyB0aGF0IGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYCBvciBgYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ2AgdG8gc2VlIHdoYXQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBjb250cm9sIHRoZSBpbmNsdXNpb24gb2YgdGhlc2UgaW9jdGxzLiBJIHNob3VsZCBiZSBhYmxlIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgYW5kIG1ha2Ugc3VyZSBteSBmdXp6aW5nIGVudmlyb25tZW50IGhhcyB0aG9zZSBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNDUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS1ZNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gYEtWTWAgcmlnaHQgbm93IOKAkyB0aGF0JiMzOTtzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSYjMzk7bSBkZWFsaW5nIHdpdGguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0IGNvbXBsZXRlbHksIGJ1dCBJIGFsc28gbmVlZCB0byBiZSBjb21wcmVoZW5zaXZlLCBhbmQgSSBoYXZlIHRvIGltbWVkaWF0ZWx5IGNvbnNpZGVyIHdoZXRoZXIgdGhlcmUgYXJlICpvdGhlciogY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQsIHBlcmhhcHMgZXhpc3RpbmcgaW4gcGFyYWxsZWwgb3IgZXZlbiBjb25mbGljdGluZy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIHBhcnRpY3VsYXIgc2V0dGluZyB3aXRoaW4gdGhlIGxhcmdlciBpbmZyYXN0cnVjdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgaXMgaW4gcGxheSwgYmVjYXVzZSB0aGVyZSAqYWx3YXlzKiBzb21ldGhpbmcgZWxzZSBpbiBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEwMDc9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDE1LS8qIEJ1bGsgZ2V0L3NldCBvZiBDU1Igc3RhdGUgZm9yIFZNIG1pZ3JhdGlvbi4gKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAxNjpzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxNy1cdFx0XHRcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgX191c2VyICp1Y3Nycyxcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEzMDE9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMzNi1cdGNhc2UgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSOlxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzM3Olx0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzM4LVx0XHRicmVhaztcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMzOS1cdGNhc2UgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSOlxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzQwOlx0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzNDEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NTgKCQkJCQkJCW91dHB1dDogMTA5CgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIExvb25nQXJjaCBLVk0gQ1NSIElPQ1RMIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgdGhlIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkuIEkgc2VlIGl0IGludHJvZHVjZXMgdHdvIG5ldyBpb2N0bHM6IGBLVk1fTE9PTkdBUkNIX0dFVF9DU1JgIGFuZCBgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSYC4gVGhlc2UgYXJlIGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlciAoQ1NSKSBzdGF0ZSBpbiBidWxrIGZvciB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSB3aXRoaW4gS1ZNLgoKRnVuY3Rpb25hbGx5LCB0aGlzIHNlZW1zIHNvdW5kLiBUaGUgcGF0Y2ggaXMgY2xlYXJseSBhZGRpbmcgbmV3IHVzZXItZmFjaW5nIEFQSXMsIHdoaWNoIG1lYW5zIGl0IHdpbGwgY2hhbmdlIGhvdyB1c2VycyBjYW4gaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtLiBGcm9tIGEgc2VjdXJpdHkgc3RhbmRwb2ludCwgdGhhdCYjMzk7cyBpbW1lZGlhdGVseSBmbGFnZ2VkIGFzIHNvbWV0aGluZyB0aGF0IG5lZWRzIHJvYnVzdCBmdXp6aW5nLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIHByaW9yaXRpemUgdGVzdGluZyB0aGlzLCBlc3BlY2lhbGx5IGFyb3VuZCBib3VuZGFyeSBjb25kaXRpb25zIGFuZCBwb3RlbnRpYWwgZGF0YSB2YWxpZGF0aW9uIGlzc3Vlcy4gR2l2ZW4gdGhlIGludGVyYWN0aW9uIHdpdGggQ1NScywgSSBuZWVkIHRvIHBheSBwYXJ0aWN1bGFybHkgY2xvc2UgYXR0ZW50aW9uIHRvIHBvdGVudGlhbCBwcml2aWxlZ2UgZXNjYWxhdGlvbiB2ZWN0b3JzLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBLVk1gIGFzIGFuIGBFbmFibGVDb25maWdgIGNvbmZpcm1zIHRoYXQgdGhpcyBpcyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBLVk0gY29yZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2xvb25nYXJjaF9jc3JfaW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgS1ZNIGlvY3RscyBLVk1fTE9PTkdBUkNIX0dFVF9DU1IgYW5kIEtWTV9MT09OR0FSQ0hfU0VUX0NTUiBmb3IgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSB0byBnZXQvc2V0IGJ1bGsgQ1NSIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyB1c2VyLWZhY2luZyBBUElzIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IEtWTSBpb2N0bHMgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IgZm9yIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgdG8gZ2V0L3NldCBidWxrIENTUiBzdGF0ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgdXNlci1mYWNpbmcgQVBJcyB3aGljaCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjNUMDU6MzM6MTQuNTAyODU5NDY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNzQ5MzUxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2xvb25nYXJjaF9jc3JfaW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBLVk0gaW9jdGxzIEtWTV9MT09OR0FSQ0hfR0VUX0NTUiBhbmQgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSIGZvciBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIHRvIGdldC9zZXQgYnVsayBDU1Igc3RhdGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGludHJvZHVjZXMgbmV3IHVzZXItZmFjaW5nIEFQSXMgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDU6MzM6MTQuNTAyODcxMTM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzg2MzQ3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMDU1N2QzYTA5OWE1OWM4ODAyOGVhNjE5MDA1NWZhNTFhNWY4OTEzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDA1OjMzOjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXFxuaW5kZXggY2QwYjVjMTFjYTljMmIuLjU5YjNiN2VmYTAzOTdlIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXFxuQEAgLTEyNyw2ICsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xcbiBzdHJ1Y3Qga3ZtX3NyZWdzIHtcXG4gfTtcXG4gXFxuKy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqL1xcbitzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkge1xcbitcXHRfX3UzMiBpbmRleDtcXG4rXFx0X191MzIgcmVzZXJ2ZWQ7XFxuK1xcdF9fdTY0IGRhdGE7XFxuK307XFxuK1xcbitzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIHtcXG4rXFx0X191MzIgbmNzcnM7XFx0LyogbnVtYmVyIG9mIGNzciBlbnRyaWVzICovXFxuK1xcdF9fdTMyIHBhZDtcXG4rXFx0X19ERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5LCBlbnRyaWVzKTtcXG4rfTtcXG4rXFxuIHN0cnVjdCBrdm1faW9jc3JfZW50cnkge1xcbiBcXHRfX3UzMiBhZGRyO1xcbiBcXHRfX3UzMiBwYWQ7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXFxuaW5kZXggMjBjMjA3ZDgwZTMxYWUuLjliNDExYzY5NDcxOGM2IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXFxuQEAgLTEwMDksNiArMTAwOSw3MyBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVnc1xcbiBcXHRyZXR1cm4gLUVOT0lPQ1RMQ01EO1xcbiB9XFxuIFxcbisvKiBtYXggQ1NSIGVudHJpZXMgaGFuZGxlZCBwZXIgaW9jdGwgKi9cXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX01BWF9DU1JfUkVHU1xcdDB4NDAwXFxuK1xcbisvKiBCdWxrIGdldC9zZXQgb2YgQ1NSIHN0YXRlIGZvciBWTSBtaWdyYXRpb24uICovXFxuK3N0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbitcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIF9fdXNlciAqdWNzcnMsXFxuK1xcdFxcdFxcdFxcdGJvb2wgd3JpdGUpXFxuK3tcXG4rXFx0aW50IGksIHJldCA9IDA7XFxuK1xcdHVuc2lnbmVkIGxvbmcgc2l6ZTtcXG4rXFx0c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycyBjc3JzO1xcbitcXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkgKmVudHJpZXM7XFxuK1xcdHN0cnVjdCBsb29uZ2FyY2hfY3NycyAqY3NyID0gdmNwdS1cXHUwMDNlYXJjaC5jc3I7XFxuK1xcbitcXHRpZiAoY29weV9mcm9tX3VzZXIoXFx1MDAyNmNzcnMsIHVjc3JzLCBzaXplb2YoY3NycykpKVxcbitcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFxuK1xcdGlmIChjc3JzLm5jc3JzIFxcdTAwM2UgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1MpXFxuK1xcdFxcdHJldHVybiAtRTJCSUc7XFxuK1xcbitcXHRzaXplID0gYXJyYXlfc2l6ZShjc3JzLm5jc3JzLCBzaXplb2YoKmVudHJpZXMpKTtcXG4rXFx0ZW50cmllcyA9IG1lbWR1cF91c2VyKHVjc3JzLVxcdTAwM2VlbnRyaWVzLCBzaXplKTtcXG4rXFx0aWYgKElTX0VSUihlbnRyaWVzKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIoZW50cmllcyk7XFxuK1xcbitcXHRpZiAod3JpdGUpIHtcXG4rXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5hdXhfaW51c2UgXFx1MDAyNj0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHByZWVtcHRfZGlzYWJsZSgpO1xcbitcXHRcXHR2Y3B1X2xvYWQodmNwdSk7XFxuK1xcdFxcdGt2bV9kZWxpdmVyX2ludHIodmNwdSk7XFxuK1xcdFxcdHZjcHUtXFx1MDAzZWFyY2guYXV4X2ludXNlIFxcdTAwMjY9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUO1xcbitcXHRcXHR2Y3B1X3B1dCh2Y3B1KTtcXG4rXFx0XFx0cHJlZW1wdF9lbmFibGUoKTtcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGNzcnMubmNzcnM7IGkrKykge1xcbitcXHRcXHR1bnNpZ25lZCBpbnQgaWQgPSBlbnRyaWVzW2ldLmluZGV4O1xcbitcXG4rXFx0XFx0aWYgKGdldF9nY3NyX2ZsYWcoaWQpIFxcdTAwMjYgSU5WQUxJRF9HQ1NSKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAod3JpdGUpIHtcXG4rXFx0XFx0XFx0cmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaWQsIGVudHJpZXNbaV0uZGF0YSk7XFxuK1xcdFxcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9IGVsc2UgaWYgKGlkID09IExPT05HQVJDSF9DU1JfRVNUQVQpIHtcXG4rXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBlc3RhdCwgZ2ludGM7XFxuK1xcbitcXHRcXHRcXHQvKiBFU1RBVCBJUDB+SVA3IGNvbWUgZnJvbSBHSU5UQyAqL1xcbitcXHRcXHRcXHRnaW50YyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0dJTlRDKSBcXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcXG4rXFx0XFx0XFx0ZXN0YXQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCkgXFx1MDAyNiB+S1ZNX0VTVEFUX0VYVElfTUFTSztcXG4rXFx0XFx0XFx0ZW50cmllc1tpXS5kYXRhID0gZXN0YXQgfCAoZ2ludGMgXFx1MDAzY1xcdTAwM2MgVklQX0RFTFRBKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZW50cmllc1tpXS5kYXRhID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGlkKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRpZiAoIXdyaXRlIFxcdTAwMjZcXHUwMDI2IGNvcHlfdG9fdXNlcih1Y3Nycy1cXHUwMDNlZW50cmllcywgZW50cmllcywgc2l6ZSkpXFxuK1xcdFxcdHJldCA9IC1FRkFVTFQ7XFxuK1xcbitcXHRrZnJlZShlbnRyaWVzKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuIHtcXG4gXFx0aW50IGk7XFxuQEAgLTEyNjYsNiArMTMzMywxMiBAQCBsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuIFxcdFxcdFxcdHIgPSBrdm1fZ2V0X3JlZyh2Y3B1LCBcXHUwMDI2cmVnKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4rXFx0Y2FzZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1I6XFxuK1xcdFxcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCBmYWxzZSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIEtWTV9MT09OR0FSQ0hfU0VUX0NTUjpcXG4rXFx0XFx0ciA9IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHZjcHUsIGFyZ3AsIHRydWUpO1xcbitcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBLVk1fRU5BQkxFX0NBUDoge1xcbiBcXHRcXHRzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgY2FwO1xcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXFxuaW5kZXggNDE5MDExMDk3ZmE4ZTIuLmFhZGU2NTc1MTcyMWQ5IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxcbkBAIC0xNjcwLDQgKzE2NzAsOCBAQCBzdHJ1Y3Qga3ZtX3ByZV9mYXVsdF9tZW1vcnkge1xcbiBcXHRfX3U2NCBwYWRkaW5nWzVdO1xcbiB9O1xcbiBcXG4rLyogTG9vbmdBcmNoOiBidWxrIENTUiBnZXQvc2V0IGZvciBtaWdyYXRpb24gKi9cXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1JcXHRfSU9XUihLVk1JTywgMHhkNiwgc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycylcXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1JcXHRfSU9XKEtWTUlPLCAgMHhkNywgc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycylcXG4rXFxuICNlbmRpZiAvKiBfX0xJTlVYX0tWTV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA1OjMzOjE1LjA0MjQ0ODIxNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyNjM1MzM3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9sb29uZ2FyY2hfY3NyX2lvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgS1ZNIGlvY3RscyBLVk1fTE9PTkdBUkNIX0dFVF9DU1IgYW5kIEtWTV9MT09OR0FSQ0hfU0VUX0NTUiBmb3IgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSB0byBnZXQvc2V0IGJ1bGsgQ1NSIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyB1c2VyLWZhY2luZyBBUElzIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTA1NTdkM2EwOTlhNTljODgwMjhlYTYxOTAwNTVmYTUxYTVmODkxM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDA1OjMzOjEyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbmluZGV4IGNkMGI1YzExY2E5YzJiLi41OWIzYjdlZmEwMzk3ZSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbkBAIC0xMjcsNiArMTI3LDE5IEBAIHN0cnVjdCBrdm1fc3luY19yZWdzIHtcbiBzdHJ1Y3Qga3ZtX3NyZWdzIHtcbiB9O1xuIFxuKy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqL1xuK3N0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSB7XG4rXHRfX3UzMiBpbmRleDtcbitcdF9fdTMyIHJlc2VydmVkO1xuK1x0X191NjQgZGF0YTtcbit9O1xuK1xuK3N0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMge1xuK1x0X191MzIgbmNzcnM7XHQvKiBudW1iZXIgb2YgY3NyIGVudHJpZXMgKi9cbitcdF9fdTMyIHBhZDtcbitcdF9fREVDTEFSRV9GTEVYX0FSUkFZKHN0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSwgZW50cmllcyk7XG4rfTtcbitcbiBzdHJ1Y3Qga3ZtX2lvY3NyX2VudHJ5IHtcbiBcdF9fdTMyIGFkZHI7XG4gXHRfX3UzMiBwYWQ7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbmluZGV4IDIwYzIwN2Q4MGUzMWFlLi45YjQxMWM2OTQ3MThjNiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbkBAIC0xMDA5LDYgKzEwMDksNzMgQEAgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3NcbiBcdHJldHVybiAtRU5PSU9DVExDTUQ7XG4gfVxuIFxuKy8qIG1heCBDU1IgZW50cmllcyBoYW5kbGVkIHBlciBpb2N0bCAqL1xuKyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1NcdDB4NDAwXG4rXG4rLyogQnVsayBnZXQvc2V0IG9mIENTUiBzdGF0ZSBmb3IgVk0gbWlncmF0aW9uLiAqL1xuK3N0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuK1x0XHRcdFx0c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycyBfX3VzZXIgKnVjc3JzLFxuK1x0XHRcdFx0Ym9vbCB3cml0ZSlcbit7XG4rXHRpbnQgaSwgcmV0ID0gMDtcbitcdHVuc2lnbmVkIGxvbmcgc2l6ZTtcbitcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgY3NycztcbitcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSAqZW50cmllcztcbitcdHN0cnVjdCBsb29uZ2FyY2hfY3NycyAqY3NyID0gdmNwdS1cdTAwM2VhcmNoLmNzcjtcbitcbitcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZjc3JzLCB1Y3Nycywgc2l6ZW9mKGNzcnMpKSlcbitcdFx0cmV0dXJuIC1FRkFVTFQ7XG4rXG4rXHRpZiAoY3Nycy5uY3NycyBcdTAwM2UgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1MpXG4rXHRcdHJldHVybiAtRTJCSUc7XG4rXG4rXHRzaXplID0gYXJyYXlfc2l6ZShjc3JzLm5jc3JzLCBzaXplb2YoKmVudHJpZXMpKTtcbitcdGVudHJpZXMgPSBtZW1kdXBfdXNlcih1Y3Nycy1cdTAwM2VlbnRyaWVzLCBzaXplKTtcbitcdGlmIChJU19FUlIoZW50cmllcykpXG4rXHRcdHJldHVybiBQVFJfRVJSKGVudHJpZXMpO1xuK1xuK1x0aWYgKHdyaXRlKSB7XG4rXHRcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTtcbitcdH0gZWxzZSB7XG4rXHRcdHByZWVtcHRfZGlzYWJsZSgpO1xuK1x0XHR2Y3B1X2xvYWQodmNwdSk7XG4rXHRcdGt2bV9kZWxpdmVyX2ludHIodmNwdSk7XG4rXHRcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX1NXQ1NSX0xBVEVTVDtcbitcdFx0dmNwdV9wdXQodmNwdSk7XG4rXHRcdHByZWVtcHRfZW5hYmxlKCk7XG4rXHR9XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjc3JzLm5jc3JzOyBpKyspIHtcbitcdFx0dW5zaWduZWQgaW50IGlkID0gZW50cmllc1tpXS5pbmRleDtcbitcbitcdFx0aWYgKGdldF9nY3NyX2ZsYWcoaWQpIFx1MDAyNiBJTlZBTElEX0dDU1IpIHtcbitcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXG4rXHRcdGlmICh3cml0ZSkge1xuK1x0XHRcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGlkLCBlbnRyaWVzW2ldLmRhdGEpO1xuK1x0XHRcdGlmIChyZXQpXG4rXHRcdFx0XHRicmVhaztcbitcdFx0fSBlbHNlIGlmIChpZCA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XG4rXHRcdFx0dW5zaWduZWQgbG9uZyBlc3RhdCwgZ2ludGM7XG4rXG4rXHRcdFx0LyogRVNUQVQgSVAwfklQNyBjb21lIGZyb20gR0lOVEMgKi9cbitcdFx0XHRnaW50YyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0dJTlRDKSBcdTAwMjYgS1ZNX0dJTlRDX0lSUV9NQVNLO1xuK1x0XHRcdGVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpIFx1MDAyNiB+S1ZNX0VTVEFUX0VYVElfTUFTSztcbitcdFx0XHRlbnRyaWVzW2ldLmRhdGEgPSBlc3RhdCB8IChnaW50YyBcdTAwM2NcdTAwM2MgVklQX0RFTFRBKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRlbnRyaWVzW2ldLmRhdGEgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgaWQpO1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRpZiAoIXdyaXRlIFx1MDAyNlx1MDAyNiBjb3B5X3RvX3VzZXIodWNzcnMtXHUwMDNlZW50cmllcywgZW50cmllcywgc2l6ZSkpXG4rXHRcdHJldCA9IC1FRkFVTFQ7XG4rXG4rXHRrZnJlZShlbnRyaWVzKTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuIHtcbiBcdGludCBpO1xuQEAgLTEyNjYsNiArMTMzMywxMiBAQCBsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4gXHRcdFx0ciA9IGt2bV9nZXRfcmVnKHZjcHUsIFx1MDAyNnJlZyk7XG4gXHRcdGJyZWFrO1xuIFx0fVxuK1x0Y2FzZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1I6XG4rXHRcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCBmYWxzZSk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1I6XG4rXHRcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCB0cnVlKTtcbitcdFx0YnJlYWs7XG4gXHRjYXNlIEtWTV9FTkFCTEVfQ0FQOiB7XG4gXHRcdHN0cnVjdCBrdm1fZW5hYmxlX2NhcCBjYXA7XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG5pbmRleCA0MTkwMTEwOTdmYThlMi4uYWFkZTY1NzUxNzIxZDkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuQEAgLTE2NzAsNCArMTY3MCw4IEBAIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSB7XG4gXHRfX3U2NCBwYWRkaW5nWzVdO1xuIH07XG4gXG4rLyogTG9vbmdBcmNoOiBidWxrIENTUiBnZXQvc2V0IGZvciBtaWdyYXRpb24gKi9cbisjZGVmaW5lIEtWTV9MT09OR0FSQ0hfR0VUX0NTUlx0X0lPV1IoS1ZNSU8sIDB4ZDYsIHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMpXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1JcdF9JT1coS1ZNSU8sICAweGQ3LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKVxuK1xuICNlbmRpZiAvKiBfX0xJTlVYX0tWTV9IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNTozMzoxNS4wNDI0NTAyNDZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzE3MTExOTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUG90ZW50aWFsOiBMb29uZ0FyY2ggS1ZNIENTUiBJb2N0bHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIG5ldyBwYXRjaCBoZXJlIGludHJvZHVjaW5nIGBLVk1fTE9PTkdBUkNIX0dFVF9DU1JgIGFuZCBgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSYCBpb2N0bHMgc3BlY2lmaWNhbGx5IGZvciBMb29uZ0FyY2ggS1ZNLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG1vZGlmaWNhdGlvbnMgYXJlIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYCBhbmQgYSBjb3JyZXNwb25kaW5nIGhlYWRlciBmaWxlIHVwZGF0ZSBpbiBgYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaGAuIFRoYXQgbWFrZXMgc2Vuc2U7IHRoZSBgdmNwdS5jYCBmaWxlIGlzIHdoZXJlIHRoZSBpb2N0bCBoYW5kbGluZyBsb2dpYyB0eXBpY2FsbHkgcmVzaWRlcyB3aXRoaW4gdGhlIEtWTSBhcmNoaXRlY3R1cmUuIFRoZSBuZXcgaW9jdGxzIHdpbGwgYmUgcm91dGVkIHRocm91Z2ggYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLCB3aGljaCBpcyBzdGFuZGFyZCBmb3IgS1ZNIGFyY2hpdGVjdHVyZXMuIEFkZGl0aW9uYWxseSwgdGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIGhlbHBlciBmdW5jdGlvbiBga3ZtX2xvb25nYXJjaF9jc3JfaW9gLCB3aGljaCBJJ20gYXNzdW1pbmcgaGFuZGxlcyB0aGUgYWN0dWFsIENTUiAoQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyKSBpbnRlcmFjdGlvbnMuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBpcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBOZXcgaW9jdGxzIGFyZSBhbHdheXMgaGlnaC12YWx1ZSB0YXJnZXRzLCBhbmQgQ1NSIG1hbmlwdWxhdGlvbiB3aXRoaW4gS1ZNIG9uIGEgbmV3IGFyY2hpdGVjdHVyZSBsaWtlIExvb25nQXJjaCBpcyBwb3RlbnRpYWxseSBmZXJ0aWxlIGdyb3VuZCBmb3IgdnVsbmVyYWJpbGl0aWVzLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmb2N1cyBvbiBmdXp6aW5nIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AuIFRoZSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZyBvcHRpb25zIHRoYXQgZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2Agb3IgYGFyY2gvbG9vbmdhcmNoL0tjb25maWdgIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgY29udHJvbCB0aGUgaW5jbHVzaW9uIG9mIHRoZXNlIGlvY3Rscy4gSSBzaG91bGQgYmUgYWJsZSB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGFuZCBtYWtlIHN1cmUgbXkgZnV6emluZyBlbnZpcm9ubWVudCBoYXMgdGhvc2UgY29uZmlndXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyMiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA1OjMzOjIwLjM1OTU2NDk3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIxMzY1ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNTozMzoyMC40ODE3MDc3NjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTYxMDUyNTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIGBLVk1gIHJpZ2h0IG5vdyDigJMgdGhhdCdzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSdtIGRlYWxpbmcgd2l0aC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXQgY29tcGxldGVseSwgYnV0IEkgYWxzbyBuZWVkIHRvIGJlIGNvbXByZWhlbnNpdmUsIGFuZCBJIGhhdmUgdG8gaW1tZWRpYXRlbHkgY29uc2lkZXIgd2hldGhlciB0aGVyZSBhcmUgKm90aGVyKiBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudCwgcGVyaGFwcyBleGlzdGluZyBpbiBwYXJhbGxlbCBvciBldmVuIGNvbmZsaWN0aW5nLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHNjb3BlIG9mIHRoaXMgcGFydGljdWxhciBzZXR0aW5nIHdpdGhpbiB0aGUgbGFyZ2VyIGluZnJhc3RydWN0dXJlLiBMZXQncyBzZWUgd2hhdCBlbHNlIGlzIGluIHBsYXksIGJlY2F1c2UgdGhlcmUgKmFsd2F5cyogc29tZXRoaW5nIGVsc2UgaW4gcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA1OjMzOjIzLjA0Mjc2MzExOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI4MTIyODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2xvb25nYXJjaF9jc3JfaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEwMDc9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMTUtLyogQnVsayBnZXQvc2V0IG9mIENTUiBzdGF0ZSBmb3IgVk0gbWlncmF0aW9uLiAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAxNjpzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMTctXFx0XFx0XFx0XFx0c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycyBfX3VzZXIgKnVjc3JzLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMzAxPWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMzNi1cXHRjYXNlIEtWTV9MT09OR0FSQ0hfR0VUX0NTUjpcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEzMzc6XFx0XFx0ciA9IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHZjcHUsIGFyZ3AsIGZhbHNlKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMzgtXFx0XFx0YnJlYWs7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzM5LVxcdGNhc2UgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSOlxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTM0MDpcXHRcXHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzQxLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNTozMzoyMy4xNTU1ODEyODFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzc2NjgxODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIExvb25nQXJjaCBLVk0gQ1NSIElPQ1RMIFBhdGNoKipcblxuT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyB0aGUgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBmdW5jdGlvbiwgd2hpY2ggaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4gSSBzZWUgaXQgaW50cm9kdWNlcyB0d28gbmV3IGlvY3RsczogYEtWTV9MT09OR0FSQ0hfR0VUX0NTUmAgYW5kIGBLVk1fTE9PTkdBUkNIX1NFVF9DU1JgLiBUaGVzZSBhcmUgZm9yIGdldHRpbmcgYW5kIHNldHRpbmcgQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyIChDU1IpIHN0YXRlIGluIGJ1bGsgZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIHdpdGhpbiBLVk0uXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBzZWVtcyBzb3VuZC4gVGhlIHBhdGNoIGlzIGNsZWFybHkgYWRkaW5nIG5ldyB1c2VyLWZhY2luZyBBUElzLCB3aGljaCBtZWFucyBpdCB3aWxsIGNoYW5nZSBob3cgdXNlcnMgY2FuIGludGVyYWN0IHdpdGggdGhlIHN5c3RlbS4gRnJvbSBhIHNlY3VyaXR5IHN0YW5kcG9pbnQsIHRoYXQncyBpbW1lZGlhdGVseSBmbGFnZ2VkIGFzIHNvbWV0aGluZyB0aGF0IG5lZWRzIHJvYnVzdCBmdXp6aW5nLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gcHJpb3JpdGl6ZSB0ZXN0aW5nIHRoaXMsIGVzcGVjaWFsbHkgYXJvdW5kIGJvdW5kYXJ5IGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCBkYXRhIHZhbGlkYXRpb24gaXNzdWVzLiBHaXZlbiB0aGUgaW50ZXJhY3Rpb24gd2l0aCBDU1JzLCBJIG5lZWQgdG8gcGF5IHBhcnRpY3VsYXJseSBjbG9zZSBhdHRlbnRpb24gdG8gcG90ZW50aWFsIHByaXZpbGVnZSBlc2NhbGF0aW9uIHZlY3RvcnMuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYEtWTWAgYXMgYW4gYEVuYWJsZUNvbmZpZ2AgY29uZmlybXMgdGhhdCB0aGlzIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIEtWTSBjb3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzU4LCJPdXRwdXRUb2tlbnMiOjEwOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNTozMzoyNy41MzIyNjU2MTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTUxNjkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2xvb25nYXJjaF9jc3JfaW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBLVk0gaW9jdGxzIEtWTV9MT09OR0FSQ0hfR0VUX0NTUiBhbmQgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSIGZvciBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIHRvIGdldC9zZXQgYnVsayBDU1Igc3RhdGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGludHJvZHVjZXMgbmV3IHVzZXItZmFjaW5nIEFQSXMgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fbG9vbmdhcmNoX2Nzcl9pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IEtWTSBpb2N0bHMgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IgZm9yIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgdG8gZ2V0L3NldCBidWxrIENTUiBzdGF0ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgdXNlci1mYWNpbmcgQVBJcyB3aGljaCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowspmr6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 05:13:01 +0000 UTC FinishedAt: 2026-07-23 05:33:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "242a3c50-2bb1-477f-86af-8d781cc3e03a" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_loongarch_csr_io" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IEtWTSBpb2N0bHMgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IgZm9yIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgdG8gZ2V0L3NldCBidWxrIENTUiBzdGF0ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgdXNlci1mYWNpbmcgQVBJcyB3aGljaCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTA1NTdkM2EwOTlhNTljODgwMjhlYTYxOTAwNTVmYTUxYTVmODkxM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDA1OjMzOjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5pbmRleCBjZDBiNWMxMWNhOWMyYi4uNTliM2I3ZWZhMDM5N2UgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5AQCAtMTI3LDYgJiM0MzsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xuIHN0cnVjdCBrdm1fc3JlZ3Mge1xuIH07XG4gXG4mIzQzOy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqL1xuJiM0MztzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkge1xuJiM0MztcdF9fdTMyIGluZGV4O1xuJiM0MztcdF9fdTMyIHJlc2VydmVkO1xuJiM0MztcdF9fdTY0IGRhdGE7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIHtcbiYjNDM7XHRfX3UzMiBuY3NycztcdC8qIG51bWJlciBvZiBjc3IgZW50cmllcyAqL1xuJiM0MztcdF9fdTMyIHBhZDtcbiYjNDM7XHRfX0RFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnksIGVudHJpZXMpO1xuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3Qga3ZtX2lvY3NyX2VudHJ5IHtcbiBcdF9fdTMyIGFkZHI7XG4gXHRfX3UzMiBwYWQ7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbmluZGV4IDIwYzIwN2Q4MGUzMWFlLi45YjQxMWM2OTQ3MThjNiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbkBAIC0xMDA5LDYgJiM0MzsxMDA5LDczIEBAIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzXG4gXHRyZXR1cm4gLUVOT0lPQ1RMQ01EO1xuIH1cbiBcbiYjNDM7LyogbWF4IENTUiBlbnRyaWVzIGhhbmRsZWQgcGVyIGlvY3RsICovXG4mIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1NcdDB4NDAwXG4mIzQzO1xuJiM0MzsvKiBCdWxrIGdldC9zZXQgb2YgQ1NSIHN0YXRlIGZvciBWTSBtaWdyYXRpb24uICovXG4mIzQzO3N0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuJiM0MztcdFx0XHRcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgX191c2VyICp1Y3NycyxcbiYjNDM7XHRcdFx0XHRib29sIHdyaXRlKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGksIHJldCA9IDA7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBzaXplO1xuJiM0MztcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgY3NycztcbiYjNDM7XHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkgKmVudHJpZXM7XG4mIzQzO1x0c3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LVx1MDAzZWFyY2guY3NyO1xuJiM0MztcbiYjNDM7XHRpZiAoY29weV9mcm9tX3VzZXIoXHUwMDI2Y3NycywgdWNzcnMsIHNpemVvZihjc3JzKSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XG4mIzQzO1x0aWYgKGNzcnMubmNzcnMgXHUwMDNlIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTKVxuJiM0MztcdFx0cmV0dXJuIC1FMkJJRztcbiYjNDM7XG4mIzQzO1x0c2l6ZSA9IGFycmF5X3NpemUoY3Nycy5uY3Nycywgc2l6ZW9mKCplbnRyaWVzKSk7XG4mIzQzO1x0ZW50cmllcyA9IG1lbWR1cF91c2VyKHVjc3JzLVx1MDAzZWVudHJpZXMsIHNpemUpO1xuJiM0MztcdGlmIChJU19FUlIoZW50cmllcykpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihlbnRyaWVzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHdyaXRlKSB7XG4mIzQzO1x0XHR2Y3B1LVx1MDAzZWFyY2guYXV4X2ludXNlIFx1MDAyNj0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHByZWVtcHRfZGlzYWJsZSgpO1xuJiM0MztcdFx0dmNwdV9sb2FkKHZjcHUpO1xuJiM0MztcdFx0a3ZtX2RlbGl2ZXJfaW50cih2Y3B1KTtcbiYjNDM7XHRcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX1NXQ1NSX0xBVEVTVDtcbiYjNDM7XHRcdHZjcHVfcHV0KHZjcHUpO1xuJiM0MztcdFx0cHJlZW1wdF9lbmFibGUoKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGNzcnMubmNzcnM7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgaWQgPSBlbnRyaWVzW2ldLmluZGV4O1xuJiM0MztcbiYjNDM7XHRcdGlmIChnZXRfZ2Nzcl9mbGFnKGlkKSBcdTAwMjYgSU5WQUxJRF9HQ1NSKSB7XG4mIzQzO1x0XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGlmICh3cml0ZSkge1xuJiM0MztcdFx0XHRyZXQgPSBfa3ZtX3NldGNzcih2Y3B1LCBpZCwgZW50cmllc1tpXS5kYXRhKTtcbiYjNDM7XHRcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdH0gZWxzZSBpZiAoaWQgPT0gTE9PTkdBUkNIX0NTUl9FU1RBVCkge1xuJiM0MztcdFx0XHR1bnNpZ25lZCBsb25nIGVzdGF0LCBnaW50YztcbiYjNDM7XG4mIzQzO1x0XHRcdC8qIEVTVEFUIElQMH5JUDcgY29tZSBmcm9tIEdJTlRDICovXG4mIzQzO1x0XHRcdGdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpIFx1MDAyNiBLVk1fR0lOVENfSVJRX01BU0s7XG4mIzQzO1x0XHRcdGVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpIFx1MDAyNiB+S1ZNX0VTVEFUX0VYVElfTUFTSztcbiYjNDM7XHRcdFx0ZW50cmllc1tpXS5kYXRhID0gZXN0YXQgfCAoZ2ludGMgXHUwMDNjXHUwMDNjIFZJUF9ERUxUQSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRlbnRyaWVzW2ldLmRhdGEgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgaWQpO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCF3cml0ZSBcdTAwMjZcdTAwMjYgY29weV90b191c2VyKHVjc3JzLVx1MDAzZWVudHJpZXMsIGVudHJpZXMsIHNpemUpKVxuJiM0MztcdFx0cmV0ID0gLUVGQVVMVDtcbiYjNDM7XG4mIzQzO1x0a2ZyZWUoZW50cmllcyk7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbiB7XG4gXHRpbnQgaTtcbkBAIC0xMjY2LDYgJiM0MzsxMzMzLDEyIEBAIGxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbiBcdFx0XHRyID0ga3ZtX2dldF9yZWcodmNwdSwgXHUwMDI2cmVnKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4mIzQzO1x0Y2FzZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1I6XG4mIzQzO1x0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1I6XG4mIzQzO1x0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7XG4mIzQzO1x0XHRicmVhaztcbiBcdGNhc2UgS1ZNX0VOQUJMRV9DQVA6IHtcbiBcdFx0c3RydWN0IGt2bV9lbmFibGVfY2FwIGNhcDtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbmluZGV4IDQxOTAxMTA5N2ZhOGUyLi5hYWRlNjU3NTE3MjFkOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG5AQCAtMTY3MCw0ICYjNDM7MTY3MCw4IEBAIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSB7XG4gXHRfX3U2NCBwYWRkaW5nWzVdO1xuIH07XG4gXG4mIzQzOy8qIExvb25nQXJjaDogYnVsayBDU1IgZ2V0L3NldCBmb3IgbWlncmF0aW9uICovXG4mIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSXHRfSU9XUihLVk1JTywgMHhkNiwgc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycylcbiYjNDM7I2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1JcdF9JT1coS1ZNSU8sICAweGQ3LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKVxuJiM0MztcbiAjZW5kaWYgLyogX19MSU5VWF9LVk1fSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fbG9vbmdhcmNoX2Nzcl9pbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG5ldyBLVk0gaW9jdGxzIEtWTV9MT09OR0FSQ0hfR0VUX0NTUiBhbmQgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSIGZvciBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIHRvIGdldC9zZXQgYnVsayBDU1Igc3RhdGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGludHJvZHVjZXMgbmV3IHVzZXItZmFjaW5nIEFQSXMgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTA1NTdkM2EwOTlhNTljODgwMjhlYTYxOTAwNTVmYTUxYTVmODkxMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDA1OjMzOjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKaW5kZXggY2QwYjVjMTFjYTljMmIuLjU5YjNiN2VmYTAzOTdlIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKQEAgLTEyNyw2ICYjNDM7MTI3LDE5IEBAIHN0cnVjdCBrdm1fc3luY19yZWdzIHsKIHN0cnVjdCBrdm1fc3JlZ3MgewogfTsKIAomIzQzOy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqLwomIzQzO3N0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSB7CiYjNDM7CV9fdTMyIGluZGV4OwomIzQzOwlfX3UzMiByZXNlcnZlZDsKJiM0MzsJX191NjQgZGF0YTsKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgewomIzQzOwlfX3UzMiBuY3NyczsJLyogbnVtYmVyIG9mIGNzciBlbnRyaWVzICovCiYjNDM7CV9fdTMyIHBhZDsKJiM0MzsJX19ERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5LCBlbnRyaWVzKTsKJiM0Mzt9OwomIzQzOwogc3RydWN0IGt2bV9pb2Nzcl9lbnRyeSB7CiAJX191MzIgYWRkcjsKIAlfX3UzMiBwYWQ7CmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwppbmRleCAyMGMyMDdkODBlMzFhZS4uOWI0MTFjNjk0NzE4YzYgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwpAQCAtMTAwOSw2ICYjNDM7MTAwOSw3MyBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncwogCXJldHVybiAtRU5PSU9DVExDTUQ7CiB9CiAKJiM0MzsvKiBtYXggQ1NSIGVudHJpZXMgaGFuZGxlZCBwZXIgaW9jdGwgKi8KJiM0MzsjZGVmaW5lIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTCTB4NDAwCiYjNDM7CiYjNDM7LyogQnVsayBnZXQvc2V0IG9mIENTUiBzdGF0ZSBmb3IgVk0gbWlncmF0aW9uLiAqLwomIzQzO3N0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAomIzQzOwkJCQlzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIF9fdXNlciAqdWNzcnMsCiYjNDM7CQkJCWJvb2wgd3JpdGUpCiYjNDM7ewomIzQzOwlpbnQgaSwgcmV0ID0gMDsKJiM0MzsJdW5zaWduZWQgbG9uZyBzaXplOwomIzQzOwlzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIGNzcnM7CiYjNDM7CXN0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSAqZW50cmllczsKJiM0MzsJc3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LSZndDthcmNoLmNzcjsKJiM0MzsKJiM0MzsJaWYgKGNvcHlfZnJvbV91c2VyKCZhbXA7Y3NycywgdWNzcnMsIHNpemVvZihjc3JzKSkpCiYjNDM7CQlyZXR1cm4gLUVGQVVMVDsKJiM0MzsKJiM0MzsJaWYgKGNzcnMubmNzcnMgJmd0OyBLVk1fTE9PTkdBUkNIX01BWF9DU1JfUkVHUykKJiM0MzsJCXJldHVybiAtRTJCSUc7CiYjNDM7CiYjNDM7CXNpemUgPSBhcnJheV9zaXplKGNzcnMubmNzcnMsIHNpemVvZigqZW50cmllcykpOwomIzQzOwllbnRyaWVzID0gbWVtZHVwX3VzZXIodWNzcnMtJmd0O2VudHJpZXMsIHNpemUpOwomIzQzOwlpZiAoSVNfRVJSKGVudHJpZXMpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIoZW50cmllcyk7CiYjNDM7CiYjNDM7CWlmICh3cml0ZSkgewomIzQzOwkJdmNwdS0mZ3Q7YXJjaC5hdXhfaW51c2UgJmFtcDs9IH5LVk1fTEFSQ0hfSFdDU1JfVVNBQkxFOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcHJlZW1wdF9kaXNhYmxlKCk7CiYjNDM7CQl2Y3B1X2xvYWQodmNwdSk7CiYjNDM7CQlrdm1fZGVsaXZlcl9pbnRyKHZjcHUpOwomIzQzOwkJdmNwdS0mZ3Q7YXJjaC5hdXhfaW51c2UgJmFtcDs9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUOwomIzQzOwkJdmNwdV9wdXQodmNwdSk7CiYjNDM7CQlwcmVlbXB0X2VuYWJsZSgpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBjc3JzLm5jc3JzOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdW5zaWduZWQgaW50IGlkID0gZW50cmllc1tpXS5pbmRleDsKJiM0MzsKJiM0MzsJCWlmIChnZXRfZ2Nzcl9mbGFnKGlkKSAmYW1wOyBJTlZBTElEX0dDU1IpIHsKJiM0MzsJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKHdyaXRlKSB7CiYjNDM7CQkJcmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaWQsIGVudHJpZXNbaV0uZGF0YSk7CiYjNDM7CQkJaWYgKHJldCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQl9IGVsc2UgaWYgKGlkID09IExPT05HQVJDSF9DU1JfRVNUQVQpIHsKJiM0MzsJCQl1bnNpZ25lZCBsb25nIGVzdGF0LCBnaW50YzsKJiM0MzsKJiM0MzsJCQkvKiBFU1RBVCBJUDB+SVA3IGNvbWUgZnJvbSBHSU5UQyAqLwomIzQzOwkJCWdpbnRjID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfR0lOVEMpICZhbXA7IEtWTV9HSU5UQ19JUlFfTUFTSzsKJiM0MzsJCQllc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSAmYW1wOyB+S1ZNX0VTVEFUX0VYVElfTUFTSzsKJiM0MzsJCQllbnRyaWVzW2ldLmRhdGEgPSBlc3RhdCB8IChnaW50YyAmbHQ7Jmx0OyBWSVBfREVMVEEpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQllbnRyaWVzW2ldLmRhdGEgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgaWQpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICghd3JpdGUgJmFtcDsmYW1wOyBjb3B5X3RvX3VzZXIodWNzcnMtJmd0O2VudHJpZXMsIGVudHJpZXMsIHNpemUpKQomIzQzOwkJcmV0ID0gLUVGQVVMVDsKJiM0MzsKJiM0MzsJa2ZyZWUoZW50cmllcyk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpCiB7CiAJaW50IGk7CkBAIC0xMjY2LDYgJiM0MzsxMzMzLDEyIEBAIGxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwKIAkJCXIgPSBrdm1fZ2V0X3JlZyh2Y3B1LCAmYW1wO3JlZyk7CiAJCWJyZWFrOwogCX0KJiM0MzsJY2FzZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1I6CiYjNDM7CQlyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSOgomIzQzOwkJciA9IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHZjcHUsIGFyZ3AsIHRydWUpOwomIzQzOwkJYnJlYWs7CiAJY2FzZSBLVk1fRU5BQkxFX0NBUDogewogCQlzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgY2FwOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgKaW5kZXggNDE5MDExMDk3ZmE4ZTIuLmFhZGU2NTc1MTcyMWQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCkBAIC0xNjcwLDQgJiM0MzsxNjcwLDggQEAgc3RydWN0IGt2bV9wcmVfZmF1bHRfbWVtb3J5IHsKIAlfX3U2NCBwYWRkaW5nWzVdOwogfTsKIAomIzQzOy8qIExvb25nQXJjaDogYnVsayBDU1IgZ2V0L3NldCBmb3IgbWlncmF0aW9uICovCiYjNDM7I2RlZmluZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1IJX0lPV1IoS1ZNSU8sIDB4ZDYsIHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMpCiYjNDM7I2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1IJX0lPVyhLVk1JTywgIDB4ZDcsIHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMpCiYjNDM7CiAjZW5kaWYgLyogX19MSU5VWF9LVk1fSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDIyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBMb29uZ0FyY2ggS1ZNIENTUiBJb2N0bHMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgbmV3IHBhdGNoIGhlcmUgaW50cm9kdWNpbmcgYEtWTV9MT09OR0FSQ0hfR0VUX0NTUmAgYW5kIGBLVk1fTE9PTkdBUkNIX1NFVF9DU1JgIGlvY3RscyBzcGVjaWZpY2FsbHkgZm9yIExvb25nQXJjaCBLVk0uIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgbW9kaWZpY2F0aW9ucyBhcmUgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgIGFuZCBhIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUgdXBkYXRlIGluIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oYC4gVGhhdCBtYWtlcyBzZW5zZTsgdGhlIGB2Y3B1LmNgIGZpbGUgaXMgd2hlcmUgdGhlIGlvY3RsIGhhbmRsaW5nIGxvZ2ljIHR5cGljYWxseSByZXNpZGVzIHdpdGhpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZS4gVGhlIG5ldyBpb2N0bHMgd2lsbCBiZSByb3V0ZWQgdGhyb3VnaCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAsIHdoaWNoIGlzIHN0YW5kYXJkIGZvciBLVk0gYXJjaGl0ZWN0dXJlcy4gQWRkaXRpb25hbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgaGVscGVyIGZ1bmN0aW9uIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AsIHdoaWNoIEkmIzM5O20gYXNzdW1pbmcgaGFuZGxlcyB0aGUgYWN0dWFsIENTUiAoQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyKSBpbnRlcmFjdGlvbnMuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpczogaXMgdGhpcyBmdXp6YWJsZT8gQWJzb2x1dGVseS4gTmV3IGlvY3RscyBhcmUgYWx3YXlzIGhpZ2gtdmFsdWUgdGFyZ2V0cywgYW5kIENTUiBtYW5pcHVsYXRpb24gd2l0aGluIEtWTSBvbiBhIG5ldyBhcmNoaXRlY3R1cmUgbGlrZSBMb29uZ0FyY2ggaXMgcG90ZW50aWFsbHkgZmVydGlsZSBncm91bmQgZm9yIHZ1bG5lcmFiaWxpdGllcy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZm9jdXMgb24gZnV6emluZyBga3ZtX2xvb25nYXJjaF9jc3JfaW9gLiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBjb25maWcgb3B0aW9ucyB0aGF0IGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYCBvciBgYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ2AgdG8gc2VlIHdoYXQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBjb250cm9sIHRoZSBpbmNsdXNpb24gb2YgdGhlc2UgaW9jdGxzLiBJIHNob3VsZCBiZSBhYmxlIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgYW5kIG1ha2Ugc3VyZSBteSBmdXp6aW5nIGVudmlyb25tZW50IGhhcyB0aG9zZSBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNDUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS1ZNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gYEtWTWAgcmlnaHQgbm93IOKAkyB0aGF0JiMzOTtzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSYjMzk7bSBkZWFsaW5nIHdpdGguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0IGNvbXBsZXRlbHksIGJ1dCBJIGFsc28gbmVlZCB0byBiZSBjb21wcmVoZW5zaXZlLCBhbmQgSSBoYXZlIHRvIGltbWVkaWF0ZWx5IGNvbnNpZGVyIHdoZXRoZXIgdGhlcmUgYXJlICpvdGhlciogY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQsIHBlcmhhcHMgZXhpc3RpbmcgaW4gcGFyYWxsZWwgb3IgZXZlbiBjb25mbGljdGluZy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIHBhcnRpY3VsYXIgc2V0dGluZyB3aXRoaW4gdGhlIGxhcmdlciBpbmZyYXN0cnVjdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgaXMgaW4gcGxheSwgYmVjYXVzZSB0aGVyZSAqYWx3YXlzKiBzb21ldGhpbmcgZWxzZSBpbiBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEwMDc9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDE1LS8qIEJ1bGsgZ2V0L3NldCBvZiBDU1Igc3RhdGUgZm9yIFZNIG1pZ3JhdGlvbi4gKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAxNjpzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxNy1cdFx0XHRcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgX191c2VyICp1Y3Nycyxcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEzMDE9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMzNi1cdGNhc2UgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSOlxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzM3Olx0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzM4LVx0XHRicmVhaztcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMzOS1cdGNhc2UgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSOlxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzQwOlx0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzNDEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA1OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NTgKCQkJCQkJCW91dHB1dDogMTA5CgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIExvb25nQXJjaCBLVk0gQ1NSIElPQ1RMIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgdGhlIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkuIEkgc2VlIGl0IGludHJvZHVjZXMgdHdvIG5ldyBpb2N0bHM6IGBLVk1fTE9PTkdBUkNIX0dFVF9DU1JgIGFuZCBgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSYC4gVGhlc2UgYXJlIGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlciAoQ1NSKSBzdGF0ZSBpbiBidWxrIGZvciB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSB3aXRoaW4gS1ZNLgoKRnVuY3Rpb25hbGx5LCB0aGlzIHNlZW1zIHNvdW5kLiBUaGUgcGF0Y2ggaXMgY2xlYXJseSBhZGRpbmcgbmV3IHVzZXItZmFjaW5nIEFQSXMsIHdoaWNoIG1lYW5zIGl0IHdpbGwgY2hhbmdlIGhvdyB1c2VycyBjYW4gaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtLiBGcm9tIGEgc2VjdXJpdHkgc3RhbmRwb2ludCwgdGhhdCYjMzk7cyBpbW1lZGlhdGVseSBmbGFnZ2VkIGFzIHNvbWV0aGluZyB0aGF0IG5lZWRzIHJvYnVzdCBmdXp6aW5nLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIHByaW9yaXRpemUgdGVzdGluZyB0aGlzLCBlc3BlY2lhbGx5IGFyb3VuZCBib3VuZGFyeSBjb25kaXRpb25zIGFuZCBwb3RlbnRpYWwgZGF0YSB2YWxpZGF0aW9uIGlzc3Vlcy4gR2l2ZW4gdGhlIGludGVyYWN0aW9uIHdpdGggQ1NScywgSSBuZWVkIHRvIHBheSBwYXJ0aWN1bGFybHkgY2xvc2UgYXR0ZW50aW9uIHRvIHBvdGVudGlhbCBwcml2aWxlZ2UgZXNjYWxhdGlvbiB2ZWN0b3JzLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBLVk1gIGFzIGFuIGBFbmFibGVDb25maWdgIGNvbmZpcm1zIHRoYXQgdGhpcyBpcyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBLVk0gY29yZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2xvb25nYXJjaF9jc3JfaW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgS1ZNIGlvY3RscyBLVk1fTE9PTkdBUkNIX0dFVF9DU1IgYW5kIEtWTV9MT09OR0FSQ0hfU0VUX0NTUiBmb3IgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSB0byBnZXQvc2V0IGJ1bGsgQ1NSIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyB1c2VyLWZhY2luZyBBUElzIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IEtWTSBpb2N0bHMgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IgZm9yIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgdG8gZ2V0L3NldCBidWxrIENTUiBzdGF0ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgdXNlci1mYWNpbmcgQVBJcyB3aGljaCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjNUMDU6MzM6MTQuNTAyODU5NDY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNzQ5MzUxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2xvb25nYXJjaF9jc3JfaW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBLVk0gaW9jdGxzIEtWTV9MT09OR0FSQ0hfR0VUX0NTUiBhbmQgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSIGZvciBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIHRvIGdldC9zZXQgYnVsayBDU1Igc3RhdGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGludHJvZHVjZXMgbmV3IHVzZXItZmFjaW5nIEFQSXMgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDU6MzM6MTQuNTAyODcxMTM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzg2MzQ3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMDU1N2QzYTA5OWE1OWM4ODAyOGVhNjE5MDA1NWZhNTFhNWY4OTEzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDA1OjMzOjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXFxuaW5kZXggY2QwYjVjMTFjYTljMmIuLjU5YjNiN2VmYTAzOTdlIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXFxuQEAgLTEyNyw2ICsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xcbiBzdHJ1Y3Qga3ZtX3NyZWdzIHtcXG4gfTtcXG4gXFxuKy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqL1xcbitzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkge1xcbitcXHRfX3UzMiBpbmRleDtcXG4rXFx0X191MzIgcmVzZXJ2ZWQ7XFxuK1xcdF9fdTY0IGRhdGE7XFxuK307XFxuK1xcbitzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIHtcXG4rXFx0X191MzIgbmNzcnM7XFx0LyogbnVtYmVyIG9mIGNzciBlbnRyaWVzICovXFxuK1xcdF9fdTMyIHBhZDtcXG4rXFx0X19ERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5LCBlbnRyaWVzKTtcXG4rfTtcXG4rXFxuIHN0cnVjdCBrdm1faW9jc3JfZW50cnkge1xcbiBcXHRfX3UzMiBhZGRyO1xcbiBcXHRfX3UzMiBwYWQ7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXFxuaW5kZXggMjBjMjA3ZDgwZTMxYWUuLjliNDExYzY5NDcxOGM2IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXFxuQEAgLTEwMDksNiArMTAwOSw3MyBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVnc1xcbiBcXHRyZXR1cm4gLUVOT0lPQ1RMQ01EO1xcbiB9XFxuIFxcbisvKiBtYXggQ1NSIGVudHJpZXMgaGFuZGxlZCBwZXIgaW9jdGwgKi9cXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX01BWF9DU1JfUkVHU1xcdDB4NDAwXFxuK1xcbisvKiBCdWxrIGdldC9zZXQgb2YgQ1NSIHN0YXRlIGZvciBWTSBtaWdyYXRpb24uICovXFxuK3N0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbitcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIF9fdXNlciAqdWNzcnMsXFxuK1xcdFxcdFxcdFxcdGJvb2wgd3JpdGUpXFxuK3tcXG4rXFx0aW50IGksIHJldCA9IDA7XFxuK1xcdHVuc2lnbmVkIGxvbmcgc2l6ZTtcXG4rXFx0c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycyBjc3JzO1xcbitcXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkgKmVudHJpZXM7XFxuK1xcdHN0cnVjdCBsb29uZ2FyY2hfY3NycyAqY3NyID0gdmNwdS1cXHUwMDNlYXJjaC5jc3I7XFxuK1xcbitcXHRpZiAoY29weV9mcm9tX3VzZXIoXFx1MDAyNmNzcnMsIHVjc3JzLCBzaXplb2YoY3NycykpKVxcbitcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFxuK1xcdGlmIChjc3JzLm5jc3JzIFxcdTAwM2UgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1MpXFxuK1xcdFxcdHJldHVybiAtRTJCSUc7XFxuK1xcbitcXHRzaXplID0gYXJyYXlfc2l6ZShjc3JzLm5jc3JzLCBzaXplb2YoKmVudHJpZXMpKTtcXG4rXFx0ZW50cmllcyA9IG1lbWR1cF91c2VyKHVjc3JzLVxcdTAwM2VlbnRyaWVzLCBzaXplKTtcXG4rXFx0aWYgKElTX0VSUihlbnRyaWVzKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIoZW50cmllcyk7XFxuK1xcbitcXHRpZiAod3JpdGUpIHtcXG4rXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5hdXhfaW51c2UgXFx1MDAyNj0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHByZWVtcHRfZGlzYWJsZSgpO1xcbitcXHRcXHR2Y3B1X2xvYWQodmNwdSk7XFxuK1xcdFxcdGt2bV9kZWxpdmVyX2ludHIodmNwdSk7XFxuK1xcdFxcdHZjcHUtXFx1MDAzZWFyY2guYXV4X2ludXNlIFxcdTAwMjY9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUO1xcbitcXHRcXHR2Y3B1X3B1dCh2Y3B1KTtcXG4rXFx0XFx0cHJlZW1wdF9lbmFibGUoKTtcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGNzcnMubmNzcnM7IGkrKykge1xcbitcXHRcXHR1bnNpZ25lZCBpbnQgaWQgPSBlbnRyaWVzW2ldLmluZGV4O1xcbitcXG4rXFx0XFx0aWYgKGdldF9nY3NyX2ZsYWcoaWQpIFxcdTAwMjYgSU5WQUxJRF9HQ1NSKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAod3JpdGUpIHtcXG4rXFx0XFx0XFx0cmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaWQsIGVudHJpZXNbaV0uZGF0YSk7XFxuK1xcdFxcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9IGVsc2UgaWYgKGlkID09IExPT05HQVJDSF9DU1JfRVNUQVQpIHtcXG4rXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBlc3RhdCwgZ2ludGM7XFxuK1xcbitcXHRcXHRcXHQvKiBFU1RBVCBJUDB+SVA3IGNvbWUgZnJvbSBHSU5UQyAqL1xcbitcXHRcXHRcXHRnaW50YyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0dJTlRDKSBcXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcXG4rXFx0XFx0XFx0ZXN0YXQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCkgXFx1MDAyNiB+S1ZNX0VTVEFUX0VYVElfTUFTSztcXG4rXFx0XFx0XFx0ZW50cmllc1tpXS5kYXRhID0gZXN0YXQgfCAoZ2ludGMgXFx1MDAzY1xcdTAwM2MgVklQX0RFTFRBKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZW50cmllc1tpXS5kYXRhID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGlkKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRpZiAoIXdyaXRlIFxcdTAwMjZcXHUwMDI2IGNvcHlfdG9fdXNlcih1Y3Nycy1cXHUwMDNlZW50cmllcywgZW50cmllcywgc2l6ZSkpXFxuK1xcdFxcdHJldCA9IC1FRkFVTFQ7XFxuK1xcbitcXHRrZnJlZShlbnRyaWVzKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuIHtcXG4gXFx0aW50IGk7XFxuQEAgLTEyNjYsNiArMTMzMywxMiBAQCBsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuIFxcdFxcdFxcdHIgPSBrdm1fZ2V0X3JlZyh2Y3B1LCBcXHUwMDI2cmVnKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4rXFx0Y2FzZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1I6XFxuK1xcdFxcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCBmYWxzZSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIEtWTV9MT09OR0FSQ0hfU0VUX0NTUjpcXG4rXFx0XFx0ciA9IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHZjcHUsIGFyZ3AsIHRydWUpO1xcbitcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBLVk1fRU5BQkxFX0NBUDoge1xcbiBcXHRcXHRzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgY2FwO1xcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXFxuaW5kZXggNDE5MDExMDk3ZmE4ZTIuLmFhZGU2NTc1MTcyMWQ5IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxcbkBAIC0xNjcwLDQgKzE2NzAsOCBAQCBzdHJ1Y3Qga3ZtX3ByZV9mYXVsdF9tZW1vcnkge1xcbiBcXHRfX3U2NCBwYWRkaW5nWzVdO1xcbiB9O1xcbiBcXG4rLyogTG9vbmdBcmNoOiBidWxrIENTUiBnZXQvc2V0IGZvciBtaWdyYXRpb24gKi9cXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1JcXHRfSU9XUihLVk1JTywgMHhkNiwgc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycylcXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1JcXHRfSU9XKEtWTUlPLCAgMHhkNywgc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycylcXG4rXFxuICNlbmRpZiAvKiBfX0xJTlVYX0tWTV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA1OjMzOjE1LjA0MjQ0ODIxNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyNjM1MzM3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9sb29uZ2FyY2hfY3NyX2lvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBuZXcgS1ZNIGlvY3RscyBLVk1fTE9PTkdBUkNIX0dFVF9DU1IgYW5kIEtWTV9MT09OR0FSQ0hfU0VUX0NTUiBmb3IgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSB0byBnZXQvc2V0IGJ1bGsgQ1NSIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyB1c2VyLWZhY2luZyBBUElzIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTA1NTdkM2EwOTlhNTljODgwMjhlYTYxOTAwNTVmYTUxYTVmODkxM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDA1OjMzOjEyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbmluZGV4IGNkMGI1YzExY2E5YzJiLi41OWIzYjdlZmEwMzk3ZSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbkBAIC0xMjcsNiArMTI3LDE5IEBAIHN0cnVjdCBrdm1fc3luY19yZWdzIHtcbiBzdHJ1Y3Qga3ZtX3NyZWdzIHtcbiB9O1xuIFxuKy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqL1xuK3N0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSB7XG4rXHRfX3UzMiBpbmRleDtcbitcdF9fdTMyIHJlc2VydmVkO1xuK1x0X191NjQgZGF0YTtcbit9O1xuK1xuK3N0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMge1xuK1x0X191MzIgbmNzcnM7XHQvKiBudW1iZXIgb2YgY3NyIGVudHJpZXMgKi9cbitcdF9fdTMyIHBhZDtcbitcdF9fREVDTEFSRV9GTEVYX0FSUkFZKHN0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSwgZW50cmllcyk7XG4rfTtcbitcbiBzdHJ1Y3Qga3ZtX2lvY3NyX2VudHJ5IHtcbiBcdF9fdTMyIGFkZHI7XG4gXHRfX3UzMiBwYWQ7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbmluZGV4IDIwYzIwN2Q4MGUzMWFlLi45YjQxMWM2OTQ3MThjNiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbkBAIC0xMDA5LDYgKzEwMDksNzMgQEAgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3NcbiBcdHJldHVybiAtRU5PSU9DVExDTUQ7XG4gfVxuIFxuKy8qIG1heCBDU1IgZW50cmllcyBoYW5kbGVkIHBlciBpb2N0bCAqL1xuKyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1NcdDB4NDAwXG4rXG4rLyogQnVsayBnZXQvc2V0IG9mIENTUiBzdGF0ZSBmb3IgVk0gbWlncmF0aW9uLiAqL1xuK3N0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuK1x0XHRcdFx0c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycyBfX3VzZXIgKnVjc3JzLFxuK1x0XHRcdFx0Ym9vbCB3cml0ZSlcbit7XG4rXHRpbnQgaSwgcmV0ID0gMDtcbitcdHVuc2lnbmVkIGxvbmcgc2l6ZTtcbitcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgY3NycztcbitcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSAqZW50cmllcztcbitcdHN0cnVjdCBsb29uZ2FyY2hfY3NycyAqY3NyID0gdmNwdS1cdTAwM2VhcmNoLmNzcjtcbitcbitcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZjc3JzLCB1Y3Nycywgc2l6ZW9mKGNzcnMpKSlcbitcdFx0cmV0dXJuIC1FRkFVTFQ7XG4rXG4rXHRpZiAoY3Nycy5uY3NycyBcdTAwM2UgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1MpXG4rXHRcdHJldHVybiAtRTJCSUc7XG4rXG4rXHRzaXplID0gYXJyYXlfc2l6ZShjc3JzLm5jc3JzLCBzaXplb2YoKmVudHJpZXMpKTtcbitcdGVudHJpZXMgPSBtZW1kdXBfdXNlcih1Y3Nycy1cdTAwM2VlbnRyaWVzLCBzaXplKTtcbitcdGlmIChJU19FUlIoZW50cmllcykpXG4rXHRcdHJldHVybiBQVFJfRVJSKGVudHJpZXMpO1xuK1xuK1x0aWYgKHdyaXRlKSB7XG4rXHRcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTtcbitcdH0gZWxzZSB7XG4rXHRcdHByZWVtcHRfZGlzYWJsZSgpO1xuK1x0XHR2Y3B1X2xvYWQodmNwdSk7XG4rXHRcdGt2bV9kZWxpdmVyX2ludHIodmNwdSk7XG4rXHRcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX1NXQ1NSX0xBVEVTVDtcbitcdFx0dmNwdV9wdXQodmNwdSk7XG4rXHRcdHByZWVtcHRfZW5hYmxlKCk7XG4rXHR9XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjc3JzLm5jc3JzOyBpKyspIHtcbitcdFx0dW5zaWduZWQgaW50IGlkID0gZW50cmllc1tpXS5pbmRleDtcbitcbitcdFx0aWYgKGdldF9nY3NyX2ZsYWcoaWQpIFx1MDAyNiBJTlZBTElEX0dDU1IpIHtcbitcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXG4rXHRcdGlmICh3cml0ZSkge1xuK1x0XHRcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGlkLCBlbnRyaWVzW2ldLmRhdGEpO1xuK1x0XHRcdGlmIChyZXQpXG4rXHRcdFx0XHRicmVhaztcbitcdFx0fSBlbHNlIGlmIChpZCA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XG4rXHRcdFx0dW5zaWduZWQgbG9uZyBlc3RhdCwgZ2ludGM7XG4rXG4rXHRcdFx0LyogRVNUQVQgSVAwfklQNyBjb21lIGZyb20gR0lOVEMgKi9cbitcdFx0XHRnaW50YyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0dJTlRDKSBcdTAwMjYgS1ZNX0dJTlRDX0lSUV9NQVNLO1xuK1x0XHRcdGVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpIFx1MDAyNiB+S1ZNX0VTVEFUX0VYVElfTUFTSztcbitcdFx0XHRlbnRyaWVzW2ldLmRhdGEgPSBlc3RhdCB8IChnaW50YyBcdTAwM2NcdTAwM2MgVklQX0RFTFRBKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRlbnRyaWVzW2ldLmRhdGEgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgaWQpO1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRpZiAoIXdyaXRlIFx1MDAyNlx1MDAyNiBjb3B5X3RvX3VzZXIodWNzcnMtXHUwMDNlZW50cmllcywgZW50cmllcywgc2l6ZSkpXG4rXHRcdHJldCA9IC1FRkFVTFQ7XG4rXG4rXHRrZnJlZShlbnRyaWVzKTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuIHtcbiBcdGludCBpO1xuQEAgLTEyNjYsNiArMTMzMywxMiBAQCBsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4gXHRcdFx0ciA9IGt2bV9nZXRfcmVnKHZjcHUsIFx1MDAyNnJlZyk7XG4gXHRcdGJyZWFrO1xuIFx0fVxuK1x0Y2FzZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1I6XG4rXHRcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCBmYWxzZSk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1I6XG4rXHRcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCB0cnVlKTtcbitcdFx0YnJlYWs7XG4gXHRjYXNlIEtWTV9FTkFCTEVfQ0FQOiB7XG4gXHRcdHN0cnVjdCBrdm1fZW5hYmxlX2NhcCBjYXA7XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG5pbmRleCA0MTkwMTEwOTdmYThlMi4uYWFkZTY1NzUxNzIxZDkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuQEAgLTE2NzAsNCArMTY3MCw4IEBAIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSB7XG4gXHRfX3U2NCBwYWRkaW5nWzVdO1xuIH07XG4gXG4rLyogTG9vbmdBcmNoOiBidWxrIENTUiBnZXQvc2V0IGZvciBtaWdyYXRpb24gKi9cbisjZGVmaW5lIEtWTV9MT09OR0FSQ0hfR0VUX0NTUlx0X0lPV1IoS1ZNSU8sIDB4ZDYsIHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMpXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1JcdF9JT1coS1ZNSU8sICAweGQ3LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKVxuK1xuICNlbmRpZiAvKiBfX0xJTlVYX0tWTV9IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNTozMzoxNS4wNDI0NTAyNDZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzE3MTExOTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUG90ZW50aWFsOiBMb29uZ0FyY2ggS1ZNIENTUiBJb2N0bHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIG5ldyBwYXRjaCBoZXJlIGludHJvZHVjaW5nIGBLVk1fTE9PTkdBUkNIX0dFVF9DU1JgIGFuZCBgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSYCBpb2N0bHMgc3BlY2lmaWNhbGx5IGZvciBMb29uZ0FyY2ggS1ZNLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG1vZGlmaWNhdGlvbnMgYXJlIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYCBhbmQgYSBjb3JyZXNwb25kaW5nIGhlYWRlciBmaWxlIHVwZGF0ZSBpbiBgYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaGAuIFRoYXQgbWFrZXMgc2Vuc2U7IHRoZSBgdmNwdS5jYCBmaWxlIGlzIHdoZXJlIHRoZSBpb2N0bCBoYW5kbGluZyBsb2dpYyB0eXBpY2FsbHkgcmVzaWRlcyB3aXRoaW4gdGhlIEtWTSBhcmNoaXRlY3R1cmUuIFRoZSBuZXcgaW9jdGxzIHdpbGwgYmUgcm91dGVkIHRocm91Z2ggYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLCB3aGljaCBpcyBzdGFuZGFyZCBmb3IgS1ZNIGFyY2hpdGVjdHVyZXMuIEFkZGl0aW9uYWxseSwgdGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIGhlbHBlciBmdW5jdGlvbiBga3ZtX2xvb25nYXJjaF9jc3JfaW9gLCB3aGljaCBJJ20gYXNzdW1pbmcgaGFuZGxlcyB0aGUgYWN0dWFsIENTUiAoQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyKSBpbnRlcmFjdGlvbnMuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBpcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBOZXcgaW9jdGxzIGFyZSBhbHdheXMgaGlnaC12YWx1ZSB0YXJnZXRzLCBhbmQgQ1NSIG1hbmlwdWxhdGlvbiB3aXRoaW4gS1ZNIG9uIGEgbmV3IGFyY2hpdGVjdHVyZSBsaWtlIExvb25nQXJjaCBpcyBwb3RlbnRpYWxseSBmZXJ0aWxlIGdyb3VuZCBmb3IgdnVsbmVyYWJpbGl0aWVzLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmb2N1cyBvbiBmdXp6aW5nIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AuIFRoZSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZyBvcHRpb25zIHRoYXQgZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2Agb3IgYGFyY2gvbG9vbmdhcmNoL0tjb25maWdgIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgY29udHJvbCB0aGUgaW5jbHVzaW9uIG9mIHRoZXNlIGlvY3Rscy4gSSBzaG91bGQgYmUgYWJsZSB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGFuZCBtYWtlIHN1cmUgbXkgZnV6emluZyBlbnZpcm9ubWVudCBoYXMgdGhvc2UgY29uZmlndXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyMiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA1OjMzOjIwLjM1OTU2NDk3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIxMzY1ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNTozMzoyMC40ODE3MDc3NjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTYxMDUyNTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIGBLVk1gIHJpZ2h0IG5vdyDigJMgdGhhdCdzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSdtIGRlYWxpbmcgd2l0aC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXQgY29tcGxldGVseSwgYnV0IEkgYWxzbyBuZWVkIHRvIGJlIGNvbXByZWhlbnNpdmUsIGFuZCBJIGhhdmUgdG8gaW1tZWRpYXRlbHkgY29uc2lkZXIgd2hldGhlciB0aGVyZSBhcmUgKm90aGVyKiBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudCwgcGVyaGFwcyBleGlzdGluZyBpbiBwYXJhbGxlbCBvciBldmVuIGNvbmZsaWN0aW5nLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHNjb3BlIG9mIHRoaXMgcGFydGljdWxhciBzZXR0aW5nIHdpdGhpbiB0aGUgbGFyZ2VyIGluZnJhc3RydWN0dXJlLiBMZXQncyBzZWUgd2hhdCBlbHNlIGlzIGluIHBsYXksIGJlY2F1c2UgdGhlcmUgKmFsd2F5cyogc29tZXRoaW5nIGVsc2UgaW4gcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA1OjMzOjIzLjA0Mjc2MzExOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI4MTIyODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2xvb25nYXJjaF9jc3JfaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEwMDc9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMTUtLyogQnVsayBnZXQvc2V0IG9mIENTUiBzdGF0ZSBmb3IgVk0gbWlncmF0aW9uLiAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAxNjpzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMTctXFx0XFx0XFx0XFx0c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycyBfX3VzZXIgKnVjc3JzLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMzAxPWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMzNi1cXHRjYXNlIEtWTV9MT09OR0FSQ0hfR0VUX0NTUjpcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEzMzc6XFx0XFx0ciA9IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHZjcHUsIGFyZ3AsIGZhbHNlKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMzgtXFx0XFx0YnJlYWs7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzM5LVxcdGNhc2UgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSOlxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTM0MDpcXHRcXHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzQxLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNTozMzoyMy4xNTU1ODEyODFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzc2NjgxODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIExvb25nQXJjaCBLVk0gQ1NSIElPQ1RMIFBhdGNoKipcblxuT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyB0aGUgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBmdW5jdGlvbiwgd2hpY2ggaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4gSSBzZWUgaXQgaW50cm9kdWNlcyB0d28gbmV3IGlvY3RsczogYEtWTV9MT09OR0FSQ0hfR0VUX0NTUmAgYW5kIGBLVk1fTE9PTkdBUkNIX1NFVF9DU1JgLiBUaGVzZSBhcmUgZm9yIGdldHRpbmcgYW5kIHNldHRpbmcgQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyIChDU1IpIHN0YXRlIGluIGJ1bGsgZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIHdpdGhpbiBLVk0uXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBzZWVtcyBzb3VuZC4gVGhlIHBhdGNoIGlzIGNsZWFybHkgYWRkaW5nIG5ldyB1c2VyLWZhY2luZyBBUElzLCB3aGljaCBtZWFucyBpdCB3aWxsIGNoYW5nZSBob3cgdXNlcnMgY2FuIGludGVyYWN0IHdpdGggdGhlIHN5c3RlbS4gRnJvbSBhIHNlY3VyaXR5IHN0YW5kcG9pbnQsIHRoYXQncyBpbW1lZGlhdGVseSBmbGFnZ2VkIGFzIHNvbWV0aGluZyB0aGF0IG5lZWRzIHJvYnVzdCBmdXp6aW5nLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gcHJpb3JpdGl6ZSB0ZXN0aW5nIHRoaXMsIGVzcGVjaWFsbHkgYXJvdW5kIGJvdW5kYXJ5IGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCBkYXRhIHZhbGlkYXRpb24gaXNzdWVzLiBHaXZlbiB0aGUgaW50ZXJhY3Rpb24gd2l0aCBDU1JzLCBJIG5lZWQgdG8gcGF5IHBhcnRpY3VsYXJseSBjbG9zZSBhdHRlbnRpb24gdG8gcG90ZW50aWFsIHByaXZpbGVnZSBlc2NhbGF0aW9uIHZlY3RvcnMuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYEtWTWAgYXMgYW4gYEVuYWJsZUNvbmZpZ2AgY29uZmlybXMgdGhhdCB0aGlzIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIEtWTSBjb3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzU4LCJPdXRwdXRUb2tlbnMiOjEwOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNTozMzoyNy41MzIyNjU2MTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTUxNjkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2xvb25nYXJjaF9jc3JfaW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBLVk0gaW9jdGxzIEtWTV9MT09OR0FSQ0hfR0VUX0NTUiBhbmQgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSIGZvciBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIHRvIGdldC9zZXQgYnVsayBDU1Igc3RhdGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGludHJvZHVjZXMgbmV3IHVzZXItZmFjaW5nIEFQSXMgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fbG9vbmdhcmNoX2Nzcl9pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IEtWTSBpb2N0bHMgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IgZm9yIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgdG8gZ2V0L3NldCBidWxrIENTUiBzdGF0ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgaW50cm9kdWNlcyBuZXcgdXNlci1mYWNpbmcgQVBJcyB3aGljaCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowspmr6[1] Phase: Succeeded StartedAt: 2026-07-23 05:33:38 +0000 UTC FinishedAt: 2026-07-23 05:33:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 05:33:38 +0000 UTC FinishedAt: 2026-07-23 05:33:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2] Phase: Succeeded StartedAt: 2026-07-23 05:33:38 +0000 UTC FinishedAt: 2026-07-23 06:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-23 05:33:38 +0000 UTC FinishedAt: 2026-07-23 06:53:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-23 05:33:38 +0000 UTC FinishedAt: 2026-07-23 05:33:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-23 05:33:38 +0000 UTC FinishedAt: 2026-07-23 05:33:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowspmr6/series-workflowspmr6-convert-artifact-3230145349/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-23 05:33:48 +0000 UTC FinishedAt: 2026-07-23 06:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-23 05:33:48 +0000 UTC FinishedAt: 2026-07-23 06:06: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:*ec809894-c9d8-4acf-af75-92551b13de71,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-workflowspmr6/series-workflowspmr6-convert-artifact-3230145349/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": "60a081e8-c842-485c-8270-c6b3a1e80a29", "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-workflowspmr6/series-workflowspmr6-build-action-1737015787/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-23 05:33:48 +0000 UTC FinishedAt: 2026-07-23 06:06:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ec809894-c9d8-4acf-af75-92551b13de71,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-workflowspmr6/series-workflowspmr6-convert-artifact-3230145349/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": "60a081e8-c842-485c-8270-c6b3a1e80a29", "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-workflowspmr6/series-workflowspmr6-build-action-1737015787/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-23 06:06:32 +0000 UTC FinishedAt: 2026-07-23 06:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-23 06:06:32 +0000 UTC FinishedAt: 2026-07-23 06:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-23 06:06:32 +0000 UTC FinishedAt: 2026-07-23 06:06:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-23 06:06:32 +0000 UTC FinishedAt: 2026-07-23 06:06:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowspmr6/series-workflowspmr6-convert-artifact-183779616/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-23 06:06:42 +0000 UTC FinishedAt: 2026-07-23 06:08:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-23 06:06:42 +0000 UTC FinishedAt: 2026-07-23 06:08:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*60a081e8-c842-485c-8270-c6b3a1e80a29,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-workflowspmr6/series-workflowspmr6-build-action-1737015787/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-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-23 06:08:54 +0000 UTC FinishedAt: 2026-07-23 06:08:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-23 06:08:54 +0000 UTC FinishedAt: 2026-07-23 06:08:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-23 06:08:54 +0000 UTC FinishedAt: 2026-07-23 06:50:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-23 06:08:54 +0000 UTC FinishedAt: 2026-07-23 06:50:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ec809894-c9d8-4acf-af75-92551b13de71,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-workflowspmr6/series-workflowspmr6-convert-artifact-183779616/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": "7d09ff8f-a35b-45ce-ae46-359519057f8a", "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-workflowspmr6/series-workflowspmr6-build-action-857028316/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-23 06:08:54 +0000 UTC FinishedAt: 2026-07-23 06:50:04 +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:*ec809894-c9d8-4acf-af75-92551b13de71,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-workflowspmr6/series-workflowspmr6-convert-artifact-183779616/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": "7d09ff8f-a35b-45ce-ae46-359519057f8a", "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-workflowspmr6/series-workflowspmr6-build-action-857028316/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-23 06:50:14 +0000 UTC FinishedAt: 2026-07-23 06:50:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-23 06:50:14 +0000 UTC FinishedAt: 2026-07-23 06:50:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-23 06:50:14 +0000 UTC FinishedAt: 2026-07-23 06:52:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-23 06:50:14 +0000 UTC FinishedAt: 2026-07-23 06:52:11 +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:*7d09ff8f-a35b-45ce-ae46-359519057f8a,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-workflowspmr6/series-workflowspmr6-build-action-857028316/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-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-23 06:52:21 +0000 UTC FinishedAt: 2026-07-23 06:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-23 06:52:21 +0000 UTC FinishedAt: 2026-07-23 06:53:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"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:*60a081e8-c842-485c-8270-c6b3a1e80a29,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7d09ff8f-a35b-45ce-ae46-359519057f8a,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-workflowspmr6/series-workflowspmr6-build-action-1737015787/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-workflowspmr6/series-workflowspmr6-build-action-857028316/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-23 06:52:21 +0000 UTC FinishedAt: 2026-07-23 06:52:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-23 06:52:21 +0000 UTC FinishedAt: 2026-07-23 06:52:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"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-workflowspmr6/series-workflowspmr6-convert-artifact-3538432377/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-23 06:52:21 +0000 UTC FinishedAt: 2026-07-23 06:52:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-23 06:52:21 +0000 UTC FinishedAt: 2026-07-23 06:52:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-23 06:52:21 +0000 UTC FinishedAt: 2026-07-23 06:52:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-23 06:52:31 +0000 UTC FinishedAt: 2026-07-23 06:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspmr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"242a3c50-2bb1-477f-86af-8d781cc3e03a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-23 06:52:31 +0000 UTC FinishedAt: 2026-07-23 06:53:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*60a081e8-c842-485c-8270-c6b3a1e80a29,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7d09ff8f-a35b-45ce-ae46-359519057f8a,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-workflowspmr6/series-workflowspmr6-build-action-1737015787/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-workflowspmr6/series-workflowspmr6-build-action-857028316/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-workflowspmr6/series-workflowspmr6-convert-artifact-3538432377/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,}