Name: series-workflowsrn7t Phase: Succeeded StartedAt: 2026-07-10 07:02:45 +0000 UTC FinishedAt: 2026-07-10 08:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[0] Phase: Succeeded StartedAt: 2026-07-10 07:02:45 +0000 UTC FinishedAt: 2026-07-10 07:14:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 07:02:45 +0000 UTC FinishedAt: 2026-07-10 07:14:24 +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": "db61c8e7-1c09-4b1d-bd36-d6e4986ed41a" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_vcpu_context_reset" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBib290IHBhcmFtZXRlciB0byBjb250cm9sIFdGSSB0cmFwIHBvbGljeSBpbiBSSVNDLVYgS1ZNIGFuZCBtb2RpZmllcyB0aGUgdkNQVSByZXNldCBsb2dpYyB0byBhcHBseSB0aGlzIHBvbGljeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIEtWTSB2Q1BVIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDNhNDU5YjVlN2FlMjJlOWZiZjg1Nzc5ZGM2ZjA2OGYwMGNkYzFkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDA3OjEyOjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbmluZGV4IDk3MDA3ZjRmNjlkNGU4Li4yZGU0NWYyNDcxODMxOSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxuQEAgLTMyNDgsNiAmIzQzOzMyNDgsMjAgQEAgS2VybmVsIHBhcmFtZXRlcnNcbiBcbiBcdFx0XHRub3RyYXA6IGNsZWFyIFdGSSBpbnN0cnVjdGlvbiB0cmFwXG4gXG4mIzQzO1x0a3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeT1cbiYjNDM7XHRcdFx0W0tWTSxSSVNDVl0gQ29udHJvbCB3aGVuIHRvIHNldCB0aGUgV0ZJIGluc3RydWN0aW9uXG4mIzQzO1x0XHRcdHRyYXAgZm9yIEtWTSBWTXMuIFdoZW4gc2V0LCBhIFZTLW1vZGUgV0ZJIHRyYXBzIGludG9cbiYjNDM7XHRcdFx0S1ZNIGFuZCBpcyBlbXVsYXRlZDsgd2hlbiBjbGVhciwgdGhlIGd1ZXN0IGV4ZWN1dGVzXG4mIzQzO1x0XHRcdFdGSSBuYXRpdmVseSBhbmQgYmxvY2tzIHVudGlsIGEgVlMtbW9kZSBpbnRlcnJ1cHRcbiYjNDM7XHRcdFx0KGUuZy4gdGhlIHNzdGMgdGltZXIpIGlzIHBlbmRpbmcuXG4mIzQzO1xuJiM0MztcdFx0XHR0cmFwOiBzZXQgV0ZJIGluc3RydWN0aW9uIHRyYXAgKEhTVEFUVVMuVlRXPTEpXG4mIzQzO1xuJiM0MztcdFx0XHRub3RyYXA6IGNsZWFyIFdGSSBpbnN0cnVjdGlvbiB0cmFwIChIU1RBVFVTLlZUVz0wKVxuJiM0MztcbiYjNDM7XHRcdFx0RGVmYXVsdHMgdG8gdHJhcCwgcHJlc2VydmluZyB0aGUgcHJldmlvdXNcbiYjNDM7XHRcdFx0dW5jb25kaXRpb25hbCBiZWhhdmlvci5cbiYjNDM7XG4gXHRrdm1fY21hX3Jlc3ZfcmF0aW89biBbUFBDLEVBUkxZXVxuIFx0XHRcdFJlc2VydmVzIGdpdmVuIHBlcmNlbnRhZ2UgZnJvbSBzeXN0ZW0gbWVtb3J5IGFyZWEgZm9yXG4gXHRcdFx0Y29udGlndW91cyBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgS1ZNIGhhc2ggcGFnZXRhYmxlXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdS5jXG5pbmRleCBjZjZlMjMxZTc2ZTI1NC4uMDlhZmJiMDE0YjQ3ZDAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xuQEAgLTEyLDYgJiM0MzsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2RlYnVnLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdm1hbGxvYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQvc2lnbmFsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG5AQCAtMjYsNiAmIzQzOzI3LDQyIEBAXG4gXG4gc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBrdm1fdmNwdSAqLCBrdm1fZm9ybWVyX3ZjcHUpO1xuIFxuJiM0MzsvKlxuJiM0MzsgKiBXRkkgdHJhcCBwb2xpY3kgZm9yIFZTLW1vZGUgZ3Vlc3RzLCBjb250cm9sbGFibGUgdGhyb3VnaCB0aGVcbiYjNDM7ICoga3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeT0ga2VybmVsIGNvbW1hbmQtbGluZSBvcHRpb24uXG4mIzQzOyAqL1xuJiM0MztlbnVtIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kge1xuJiM0MztcdEtWTV9SSVNDVl9XRklfVFJBUCxcdC8qIERlZmF1bHQ6IHRyYXAgVlMtbW9kZSBXRkkgaW50byBLVk0gKi9cbiYjNDM7XHRLVk1fUklTQ1ZfV0ZJX05PVFJBUCxcdC8qIExldCBWUy1tb2RlIFdGSSBleGVjdXRlIG5hdGl2ZWx5ICovXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgZW51bSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5IGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kgX19yZWFkX21vc3RseSA9XG4mIzQzO1x0S1ZNX1JJU0NWX1dGSV9UUkFQO1xuJiM0MztcbiYjNDM7c3RhdGljIGludCBfX2luaXQgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmcoY2hhciAqYXJnKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFhcmcpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0aWYgKHN0cmNtcChhcmcsIFwmIzM0O3RyYXBcJiMzNDspID09IDApIHtcbiYjNDM7XHRcdGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kgPSBLVk1fUklTQ1ZfV0ZJX1RSQVA7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChzdHJjbXAoYXJnLCBcJiMzNDtub3RyYXBcJiMzNDspID09IDApIHtcbiYjNDM7XHRcdGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kgPSBLVk1fUklTQ1ZfV0ZJX05PVFJBUDtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO31cbiYjNDM7ZWFybHlfcGFyYW0oXCYjMzQ7a3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeVwmIzM0OywgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmcpO1xuJiM0MztcbiYjNDM7c3RhdGljIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiYjNDM7e1xuJiM0MztcdHJldHVybiBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5ID09IEtWTV9SSVNDVl9XRklfVFJBUDtcbiYjNDM7fVxuJiM0MztcbiBjb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2Rlc2Mga3ZtX3ZjcHVfc3RhdHNfZGVzY1tdID0ge1xuIFx0S1ZNX0dFTkVSSUNfVkNQVV9TVEFUUygpLFxuIFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGVjYWxsX2V4aXRfc3RhdCksXG5AQCAtNzMsNyAmIzQzOzExMCwxMiBAQCBzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdC8qIFNldHVwIHJlc2V0IHN0YXRlIG9mIHNoYWRvdyBTU1RBVFVTIGFuZCBIU1RBVFVTIENTUnMgKi9cbiBcdGNudHgtXHUwMDNlc3N0YXR1cyA9IFNSX1NQUCB8IFNSX1NQSUU7XG4gXG4tXHRjbnR4LVx1MDAzZWhzdGF0dXMgfD0gSFNUQVRVU19WVFc7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBUcmFwIFZTLW1vZGUgV0ZJIGludG8gS1ZNIHVubGVzcyB0aGUgV0ZJIHRyYXAgcG9saWN5IGxldHMgdGhlIGd1ZXN0XG4mIzQzO1x0ICogZXhlY3V0ZSBpdCBuYXRpdmVseS4gU2VlIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGt2bV9yaXNjdl92Y3B1X3dmaV9zaG91bGRfdHJhcCh2Y3B1KSlcbiYjNDM7XHRcdGNudHgtXHUwMDNlaHN0YXR1cyB8PSBIU1RBVFVTX1ZUVztcbiBcdGNudHgtXHUwMDNlaHN0YXR1cyB8PSBIU1RBVFVTX1NQVlA7XG4gXHRjbnR4LVx1MDAzZWhzdGF0dXMgfD0gSFNUQVRVU19TUFY7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBib290IHBhcmFtZXRlciB0byBjb250cm9sIFdGSSB0cmFwIHBvbGljeSBpbiBSSVNDLVYgS1ZNIGFuZCBtb2RpZmllcyB0aGUgdkNQVSByZXNldCBsb2dpYyB0byBhcHBseSB0aGlzIHBvbGljeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIEtWTSB2Q1BVIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkM2E0NTliNWU3YWUyMmU5ZmJmODU3NzlkYzZmMDY4ZjAwY2RjMWRjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTAgMDc6MTI6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0CmluZGV4IDk3MDA3ZjRmNjlkNGU4Li4yZGU0NWYyNDcxODMxOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQKQEAgLTMyNDgsNiAmIzQzOzMyNDgsMjAgQEAgS2VybmVsIHBhcmFtZXRlcnMKIAogCQkJbm90cmFwOiBjbGVhciBXRkkgaW5zdHJ1Y3Rpb24gdHJhcAogCiYjNDM7CWt2bS1yaXNjdi53ZmlfdHJhcF9wb2xpY3k9CiYjNDM7CQkJW0tWTSxSSVNDVl0gQ29udHJvbCB3aGVuIHRvIHNldCB0aGUgV0ZJIGluc3RydWN0aW9uCiYjNDM7CQkJdHJhcCBmb3IgS1ZNIFZNcy4gV2hlbiBzZXQsIGEgVlMtbW9kZSBXRkkgdHJhcHMgaW50bwomIzQzOwkJCUtWTSBhbmQgaXMgZW11bGF0ZWQ7IHdoZW4gY2xlYXIsIHRoZSBndWVzdCBleGVjdXRlcwomIzQzOwkJCVdGSSBuYXRpdmVseSBhbmQgYmxvY2tzIHVudGlsIGEgVlMtbW9kZSBpbnRlcnJ1cHQKJiM0MzsJCQkoZS5nLiB0aGUgc3N0YyB0aW1lcikgaXMgcGVuZGluZy4KJiM0MzsKJiM0MzsJCQl0cmFwOiBzZXQgV0ZJIGluc3RydWN0aW9uIHRyYXAgKEhTVEFUVVMuVlRXPTEpCiYjNDM7CiYjNDM7CQkJbm90cmFwOiBjbGVhciBXRkkgaW5zdHJ1Y3Rpb24gdHJhcCAoSFNUQVRVUy5WVFc9MCkKJiM0MzsKJiM0MzsJCQlEZWZhdWx0cyB0byB0cmFwLCBwcmVzZXJ2aW5nIHRoZSBwcmV2aW91cwomIzQzOwkJCXVuY29uZGl0aW9uYWwgYmVoYXZpb3IuCiYjNDM7CiAJa3ZtX2NtYV9yZXN2X3JhdGlvPW4gW1BQQyxFQVJMWV0KIAkJCVJlc2VydmVzIGdpdmVuIHBlcmNlbnRhZ2UgZnJvbSBzeXN0ZW0gbWVtb3J5IGFyZWEgZm9yCiAJCQljb250aWd1b3VzIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gaGFzaCBwYWdldGFibGUKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYwppbmRleCBjZjZlMjMxZTc2ZTI1NC4uMDlhZmJiMDE0YjQ3ZDAgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgva2RlYnVnLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGVyY3B1LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3N0cmluZy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zY2hlZC9zaWduYWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OwpAQCAtMjYsNiAmIzQzOzI3LDQyIEBACiAKIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3Qga3ZtX3ZjcHUgKiwga3ZtX2Zvcm1lcl92Y3B1KTsKIAomIzQzOy8qCiYjNDM7ICogV0ZJIHRyYXAgcG9saWN5IGZvciBWUy1tb2RlIGd1ZXN0cywgY29udHJvbGxhYmxlIHRocm91Z2ggdGhlCiYjNDM7ICoga3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeT0ga2VybmVsIGNvbW1hbmQtbGluZSBvcHRpb24uCiYjNDM7ICovCiYjNDM7ZW51bSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5IHsKJiM0MzsJS1ZNX1JJU0NWX1dGSV9UUkFQLAkvKiBEZWZhdWx0OiB0cmFwIFZTLW1vZGUgV0ZJIGludG8gS1ZNICovCiYjNDM7CUtWTV9SSVNDVl9XRklfTk9UUkFQLAkvKiBMZXQgVlMtbW9kZSBXRkkgZXhlY3V0ZSBuYXRpdmVseSAqLwomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGVudW0ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5IF9fcmVhZF9tb3N0bHkgPQomIzQzOwlLVk1fUklTQ1ZfV0ZJX1RSQVA7CiYjNDM7CiYjNDM7c3RhdGljIGludCBfX2luaXQgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmcoY2hhciAqYXJnKQomIzQzO3sKJiM0MzsJaWYgKCFhcmcpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJaWYgKHN0cmNtcChhcmcsICYjMzQ7dHJhcCYjMzQ7KSA9PSAwKSB7CiYjNDM7CQlrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5ID0gS1ZNX1JJU0NWX1dGSV9UUkFQOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHN0cmNtcChhcmcsICYjMzQ7bm90cmFwJiMzNDspID09IDApIHsKJiM0MzsJCWt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kgPSBLVk1fUklTQ1ZfV0ZJX05PVFJBUDsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAtRUlOVkFMOwomIzQzO30KJiM0MztlYXJseV9wYXJhbSgmIzM0O2t2bS1yaXNjdi53ZmlfdHJhcF9wb2xpY3kmIzM0OywgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmcpOwomIzQzOwomIzQzO3N0YXRpYyBib29sIGt2bV9yaXNjdl92Y3B1X3dmaV9zaG91bGRfdHJhcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwlyZXR1cm4ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSA9PSBLVk1fUklTQ1ZfV0ZJX1RSQVA7CiYjNDM7fQomIzQzOwogY29uc3Qgc3RydWN0IGt2bV9zdGF0c19kZXNjIGt2bV92Y3B1X3N0YXRzX2Rlc2NbXSA9IHsKIAlLVk1fR0VORVJJQ19WQ1BVX1NUQVRTKCksCiAJU1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGVjYWxsX2V4aXRfc3RhdCksCkBAIC03Myw3ICYjNDM7MTEwLDEyIEBAIHN0YXRpYyB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCS8qIFNldHVwIHJlc2V0IHN0YXRlIG9mIHNoYWRvdyBTU1RBVFVTIGFuZCBIU1RBVFVTIENTUnMgKi8KIAljbnR4LSZndDtzc3RhdHVzID0gU1JfU1BQIHwgU1JfU1BJRTsKIAotCWNudHgtJmd0O2hzdGF0dXMgfD0gSFNUQVRVU19WVFc7CiYjNDM7CS8qCiYjNDM7CSAqIFRyYXAgVlMtbW9kZSBXRkkgaW50byBLVk0gdW5sZXNzIHRoZSBXRkkgdHJhcCBwb2xpY3kgbGV0cyB0aGUgZ3Vlc3QKJiM0MzsJICogZXhlY3V0ZSBpdCBuYXRpdmVseS4gU2VlIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kuCiYjNDM7CSAqLwomIzQzOwlpZiAoa3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHZjcHUpKQomIzQzOwkJY250eC0mZ3Q7aHN0YXR1cyB8PSBIU1RBVFVTX1ZUVzsKIAljbnR4LSZndDtoc3RhdHVzIHw9IEhTVEFUVVNfU1BWUDsKIAljbnR4LSZndDtoc3RhdHVzIHw9IEhTVEFUVVNfU1BWOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTEwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBXRkkgVHJhcCBQb2xpY3kgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGtlcm5lbCBjb21tYW5kLWxpbmUgcGFyYW1ldGVyLCBga3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeWAsIHNwZWNpZmljYWxseSBmb3IgUklTQy1WIEtWTSwgd2hpY2ggd2lsbCBjb250cm9sIHdoZXRoZXIgdGhlIFdGSSBpbnN0cnVjdGlvbiB0cmFwcyBpbnRvIEtWTS4gVGhlIGNoYW5nZSBpcyBjZW50ZXJlZCB3aXRoaW4gYGFyY2gvcmlzY3Yva3ZtL3ZjcHUuY2AuIFRoZSBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGVudW0gYW5kIGEgc3RhdGljIHZhcmlhYmxlLCBhbmQgYWRkcyBhbiBgZWFybHlfcGFyYW1gIGZ1bmN0aW9uIGFuZCBhIGhlbHBlciBmdW5jdGlvbi4gQWxzbywgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgIGlzIGJlaW5nIG1vZGlmaWVkIHRvIHNldCBgSFNUQVRVU19WVFdgIGNvbmRpdGlvbmFsbHkuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIHJlYWNoIGFuZCB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcuIFRoaXMgaXMgb2J2aW91c2x5IHRhcmdldGVkIGF0IHZpcnR1YWxpemVkIFJJU0MtViBlbnZpcm9ubWVudHMsIHNwZWNpZmljYWxseSBLVk0gb24gUklTQy1WLiBUaGUgY3JpdGljYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoaXMgYWZmZWN0cyB0aGUgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgIGZ1bmN0aW9uLgoKTm93LCBjb25zaWRlcmluZyBmdXp6aW5nLCBpdCYjMzk7cyBhIHNtYWxsIGNoYW5nZS4gVGhlIGJvb3QgcGFyYW1ldGVyIHBhcnNpbmcsIGBlYXJseV9rdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5X2NmZ2AsIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGJvb3QgYW5kIGlzIGdlbmVyYWxseSBub3QgZnV6emVkIGJ5IHN5emthbGxlci4gSG93ZXZlciwgdGhhdCYjMzk7cyBjYWxsZWQgZXZlcnkgYm9vdCBhbmQgaWYgdGhlcmUgaXMgYSBjcmFzaCB0aGlzIHdpbGwgYmUgbW9yZSBhbm5veWluZyB0byBkZWJ1Zy4gVGhlIGNvbmRpdGlvbmFsIGNoYW5nZSB3aXRoaW4gYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgIHNpbXBseSBzZXRzIGEgYml0IGluIHRoZSBgaHN0YXR1c2AgcmVnaXN0ZXIgYmFzZWQgb24gYSBnbG9iYWwgdmFyaWFibGUuIEl0IGRvZXMgc2V0IHRoZSBgSFNUQVRVU19WVFdgIHdoaWNoIGNvdWxkIGhhdmUgc2lkZSBlZmZlY3RzLgoKU28sIGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IFRoZSBwYXRjaCBpcyBzbWFsbCwgYW5kIHRoZXJlJiMzOTtzIG5vIGNvbXBsZXggbG9naWMgaW52b2x2ZWQgYmV5b25kIGEgc2ltcGxlIGdsb2JhbCB2YXJpYWJsZSBjaGVjay4gVGhlIG1haW4gZm9jdXMgc3ltYm9sIGlmIGZ1enppbmcgd291bGQgb2NjdXIsIHdvdWxkIGJlIGBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0YC4gSG93ZXZlciwgaXQmIzM5O3Mgc3RpbGwgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBLVk0sIHNvIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suCgpUaGUgY29uZmlndXJhdGlvbiB0YXJnZXQgaXMgYEtWTWAgKG9uIFJJU0MtVikgYW5kIEkgc2hvdWxkIGV4YW1pbmUgYGFyY2gvcmlzY3Yva3ZtL3ZjcHUuY2AgbW9yZSBjbG9zZWx5IHRvIGJlIGNlcnRhaW4gdGhhdCBJIGFtIGNvbmZpZGVudCBpbiB0aGlzIGNvbmNsdXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1LmM9ODQ9Y29uc3Qgc3RydWN0IGt2bV9zdGF0c19oZWFkZXIga3ZtX3ZjcHVfc3RhdHNfaGVhZGVyID0ge1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy05Mi1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo5MzpzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy05NC1cdFx0XHRcdFx0IGJvb2wga3ZtX3NiaV9yZXNldClcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9MTIzPXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9yZXNldF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBrdm1fc2JpX3Jlc2V0KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xMzgtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MTM5Olx0a3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldCh2Y3B1LCBrdm1fc2JpX3Jlc2V0KTtcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNDAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI0NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiBUaGlzIFNtYWxsIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIGNoYW5nZSBsb29rcyBwcmV0dHkgbWlub3IsIGJhc2ljYWxseSBqdXN0IHR3ZWFraW5nIGEgYm9vdCBwYXJhbWV0ZXIuIFRoYXQgcGFyYW1ldGVyIGdldHMgcGlja2VkIHVwIGJ5IGBlYXJseV9rdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5X2NmZ2AuICBUaGUgb3RoZXIgbW9kaWZpY2F0aW9uIGlzIGp1c3QgdGhpcyBnZXR0ZXIgZnVuY3Rpb24sIGBrdm1fcmlzY3ZfdmNwdV93Zmlfc2hvdWxkX3RyYXBgLCBhbmQgaXRzIHVzZSBpbiBga3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldGAuIFRoZSBtYWluIHRoaW5nIGlzIHRoYXQgaXQgaGluZ2VzIG9uIHRoaXMgYm9vdCBwYXJhbWV0ZXIuCgpTaW5jZSBzeXprYWxsZXIgZG9lc24mIzM5O3QgdHlwaWNhbGx5IG1lc3Mgd2l0aCBib290IHBhcmFtZXRlcnMgb24gaXRzIG93biwgaXQgd291bGQsIGJ5IGRlZmF1bHQsIGp1c3QgdXNlIHRoZSBkZWZhdWx0IHZhbHVlIOKAkyB3aGljaCBpcyBgS1ZNX1JJU0NWX1dGSV9UUkFQYC4gIFNvLCBpbml0aWFsbHksIG15IHRob3VnaHQgd2FzLCAmIzM0O1dlbGwsIGlmIGl0JiMzOTtzIHRoZSBzYW1lIGJlaGF2aW9yIHVubGVzcyB5b3UgdXNlIHRoZSBib290IHBhcmFtZXRlciwgYW5kIHN5emthbGxlciBpc24mIzM5O3QgdXNpbmcgaXQsIGlzIGl0IGV2ZW4gd29ydGggYm90aGVyaW5nIHdpdGggZnV6emluZyB0aGlzPyBUaGUgYW5zd2VyIHRvIHRoYXQgcXVlc3Rpb24gaXMgJiMzOTt5ZXMmIzM5Oy4KCldhaXQgYSBzZWNvbmQsIHN5emthbGxlciAqY2FuKiBiZSBjb25maWd1cmVkIHRvIHBhc3MgYm9vdCBwYXJhbWV0ZXJzISBJdCBqdXN0IHdvbiYjMzk7dCBieSBkZWZhdWx0LiBBbmQgZXZlbiBpZiBpdCBkb2VzLCBhbGwgdGhpcyBjaGFuZ2UgcmVhbGx5IGRvZXMgaXMgc2V0IGEgYml0IGluIGEgcmVnaXN0ZXIuIFN0aWxsLCBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIGl0IGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpGb3IgdGhlIGZvY3VzIHN5bWJvbHMsIEkmIzM5O2xsIGxpc3QgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLiBJIHNob3VsZCBhbHNvIHVzZSBgRW5hYmxlQ29uZmlncz1bJiMzNDtLVk0mIzM0O11gLiBCdXQsIEkgc2hvdWxkIGNvbmZpcm0gc29tZXRoaW5nLi4uaXMgS1ZNIG9uIFJJU0MtViBldmVuIHN1cHBvcnRlZCBieSBzeXprYWxsZXI/IFN5emthbGxlciBkZWZpbml0ZWx5IHN1cHBvcnRzIFJJU0MtViwgYnV0IEtWTSBvbiBSSVNDLVYgbWlnaHQgYmUgYSBiaXQgb2YgYSBuaWNoZSBzZXR1cC4gSXQmIzM5O3MgYSB2YWxpZCBrZXJuZWwgc3Vic3lzdGVtLCB0aG91Z2gsIHNvIGl0JiMzOTtzIHdvcnRoIGludmVzdGlnYXRpbmcuIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgUklTQy1WIEtWTS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA5NwoJCQkJCQkJb3V0cHV0OiA5MwoJCQkJCQkJdGhvdWdodHM6IDM4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBSSVNDLVYgS1ZNIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgYEtWTWAuIE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhpcyBpcyBmdXp6LXdvcnRoeSwgYnV0IGxldCYjMzk7cyBicmVhayBpdCBkb3duIHByb3Blcmx5LiBUaGlzIHBhdGNoIGFkZHMgYSBib290IHBhcmFtZXRlciBhbmQgdHdlYWtzIGEgc2luZ2xlIGJpdCBpbiBhIHJlZ2lzdGVyIHdoZW4gYSB2Q1BVIHJlc2V0cywgYmFzZWQgb24gdGhhdCBwYXJhbWV0ZXIuIEl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgS1ZNJiMzOTtzIGJlaGF2aW9yLiBUaGF0IGZ1bmN0aW9uYWwgY2hhbmdlIHNjcmVhbXMgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIGtleSBmdW5jdGlvbiB0byB0YXJnZXQgaXMgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLCBzbyB0aGF0IGdvZXMgaW4gYXMgdGhlIGBGb2N1c1N5bWJvbGAuIEFuZCwgb2J2aW91c2x5LCBgRW5hYmxlQ29uZmlnczogS1ZNYC4KCkhvbGQgb24sIHRob3VnaC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZSBoZXJlLiBLVk0gb24gUklTQy1WICpjYW4qIGJlIHRlc3RlZCBpbiBRRU1VIOKAkyB3ZSBjYW4gdXNlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvciBpZiB0aGUgaG9zdCBpcyBhbHNvIFJJU0MtViwgbmF0aXZlIEtWTSBpcyBzdXBwb3J0ZWQuIFN5emthbGxlciBpcyBhbHJlYWR5IHNldCB1cCB0byBydW4gUklTQy1WIFZNcyBpbiBRRU1VICh1c3VhbGx5IHdpdGggVENHLCBidXQgcG90ZW50aWFsbHkgS1ZNIGlmIHRoZSBob3N0IHN1cHBvcnRzIGl0KS4gU28sIHRoZSBjaGFuZ2VkIGZ1bmN0aW9uYWxpdHkgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBhdWRpdCBmb3IgYW55IG90aGVyIGNoYW5nZXMuIEFzaWRlIGZyb20gYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLCBJIHNlZSBgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmdgLCB3aGljaCBpcyBgX19pbml0YCBhbmQgb25seSBjYWxsZWQgZHVyaW5nIGJvb3QuIFRoZW4sIHRoZXJlJiMzOTtzIGBrdm1fcmlzY3ZfdmNwdV93Zmlfc2hvdWxkX3RyYXBgLCB3aGljaCBsb29rcyBsaWtlIGFuIGlubGluZSBmdW5jdGlvbi4gVGhvc2UgYXJlIGJvdGggZmluZTsgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgIGlzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuCgpBbHJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudC4gKipgV29ydGhGdXp6aW5nPXRydWVgKiouIFRoZSBgRm9jdXNTeW1ib2xgIGlzIGRlZmluaXRlbHkgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLiBBbmQgdGhlIG9ubHkgbmVlZGVkIGBFbmFibGVDb25maWdzYCBpcyBgS1ZNYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCYjMzk7cyBpbnRyb2R1Y2luZyBhIG5ldyBib290IHBhcmFtZXRlciB0byBjb250cm9sIHRoZSBXRkkgdHJhcCBwb2xpY3kgaW4gUklTQy1WIEtWTS4gSXQgdGhlbiBtb2RpZmllcyB2Q1BVIHJlc2V0IGxvZ2ljIHRvIGFwcGx5IHRoYXQgcG9saWN5LiBUaGlzIGlzLCBhdCBpdHMgaGVhcnQsIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gaG93IEtWTSBpbml0aWFsaXplcyBpdHMgdkNQVXMsIHdoaWNoIG1ha2VzIGl0IGEgcHJpbWUgZnV6emluZyB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBib290IHBhcmFtZXRlciB0byBjb250cm9sIFdGSSB0cmFwIHBvbGljeSBpbiBSSVNDLVYgS1ZNIGFuZCBtb2RpZmllcyB0aGUgdkNQVSByZXNldCBsb2dpYyB0byBhcHBseSB0aGlzIHBvbGljeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIEtWTSB2Q1BVIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgYm9vdCBwYXJhbWV0ZXIgdG8gY29udHJvbCBXRkkgdHJhcCBwb2xpY3kgaW4gUklTQy1WIEtWTSBhbmQgbW9kaWZpZXMgdGhlIHZDUFUgcmVzZXQgbG9naWMgdG8gYXBwbHkgdGhpcyBwb2xpY3kuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBLVk0gdkNQVSBpbml0aWFsaXphdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjEyOjM0LjE0ODk4NDA5MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4ODc5NzI5MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGJvb3QgcGFyYW1ldGVyIHRvIGNvbnRyb2wgV0ZJIHRyYXAgcG9saWN5IGluIFJJU0MtViBLVk0gYW5kIG1vZGlmaWVzIHRoZSB2Q1BVIHJlc2V0IGxvZ2ljIHRvIGFwcGx5IHRoaXMgcG9saWN5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gS1ZNIHZDUFUgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjEyOjM0LjE0ODk5MjMxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ0ODQ4MDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDNhNDU5YjVlN2FlMjJlOWZiZjg1Nzc5ZGM2ZjA2OGYwMGNkYzFkY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAwNzoxMjozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XFxuaW5kZXggOTcwMDdmNGY2OWQ0ZTguLjJkZTQ1ZjI0NzE4MzE5IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcXG5AQCAtMzI0OCw2ICszMjQ4LDIwIEBAIEtlcm5lbCBwYXJhbWV0ZXJzXFxuIFxcbiBcXHRcXHRcXHRub3RyYXA6IGNsZWFyIFdGSSBpbnN0cnVjdGlvbiB0cmFwXFxuIFxcbitcXHRrdm0tcmlzY3Yud2ZpX3RyYXBfcG9saWN5PVxcbitcXHRcXHRcXHRbS1ZNLFJJU0NWXSBDb250cm9sIHdoZW4gdG8gc2V0IHRoZSBXRkkgaW5zdHJ1Y3Rpb25cXG4rXFx0XFx0XFx0dHJhcCBmb3IgS1ZNIFZNcy4gV2hlbiBzZXQsIGEgVlMtbW9kZSBXRkkgdHJhcHMgaW50b1xcbitcXHRcXHRcXHRLVk0gYW5kIGlzIGVtdWxhdGVkOyB3aGVuIGNsZWFyLCB0aGUgZ3Vlc3QgZXhlY3V0ZXNcXG4rXFx0XFx0XFx0V0ZJIG5hdGl2ZWx5IGFuZCBibG9ja3MgdW50aWwgYSBWUy1tb2RlIGludGVycnVwdFxcbitcXHRcXHRcXHQoZS5nLiB0aGUgc3N0YyB0aW1lcikgaXMgcGVuZGluZy5cXG4rXFxuK1xcdFxcdFxcdHRyYXA6IHNldCBXRkkgaW5zdHJ1Y3Rpb24gdHJhcCAoSFNUQVRVUy5WVFc9MSlcXG4rXFxuK1xcdFxcdFxcdG5vdHJhcDogY2xlYXIgV0ZJIGluc3RydWN0aW9uIHRyYXAgKEhTVEFUVVMuVlRXPTApXFxuK1xcbitcXHRcXHRcXHREZWZhdWx0cyB0byB0cmFwLCBwcmVzZXJ2aW5nIHRoZSBwcmV2aW91c1xcbitcXHRcXHRcXHR1bmNvbmRpdGlvbmFsIGJlaGF2aW9yLlxcbitcXG4gXFx0a3ZtX2NtYV9yZXN2X3JhdGlvPW4gW1BQQyxFQVJMWV1cXG4gXFx0XFx0XFx0UmVzZXJ2ZXMgZ2l2ZW4gcGVyY2VudGFnZSBmcm9tIHN5c3RlbSBtZW1vcnkgYXJlYSBmb3JcXG4gXFx0XFx0XFx0Y29udGlndW91cyBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgS1ZNIGhhc2ggcGFnZXRhYmxlXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xcbmluZGV4IGNmNmUyMzFlNzZlMjU0Li4wOWFmYmIwMTRiNDdkMCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcXG5AQCAtMTIsNiArMTIsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2RlYnVnLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BlcmNwdS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RyaW5nLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC92bWFsbG9jLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zY2hlZC9zaWduYWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZzLmhcXHUwMDNlXFxuQEAgLTI2LDYgKzI3LDQyIEBAXFxuIFxcbiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGt2bV92Y3B1ICosIGt2bV9mb3JtZXJfdmNwdSk7XFxuIFxcbisvKlxcbisgKiBXRkkgdHJhcCBwb2xpY3kgZm9yIFZTLW1vZGUgZ3Vlc3RzLCBjb250cm9sbGFibGUgdGhyb3VnaCB0aGVcXG4rICoga3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeT0ga2VybmVsIGNvbW1hbmQtbGluZSBvcHRpb24uXFxuKyAqL1xcbitlbnVtIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kge1xcbitcXHRLVk1fUklTQ1ZfV0ZJX1RSQVAsXFx0LyogRGVmYXVsdDogdHJhcCBWUy1tb2RlIFdGSSBpbnRvIEtWTSAqL1xcbitcXHRLVk1fUklTQ1ZfV0ZJX05PVFJBUCxcXHQvKiBMZXQgVlMtbW9kZSBXRkkgZXhlY3V0ZSBuYXRpdmVseSAqL1xcbit9O1xcbitcXG4rc3RhdGljIGVudW0ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5IF9fcmVhZF9tb3N0bHkgPVxcbitcXHRLVk1fUklTQ1ZfV0ZJX1RSQVA7XFxuK1xcbitzdGF0aWMgaW50IF9faW5pdCBlYXJseV9rdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5X2NmZyhjaGFyICphcmcpXFxuK3tcXG4rXFx0aWYgKCFhcmcpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0aWYgKHN0cmNtcChhcmcsIFxcXCJ0cmFwXFxcIikgPT0gMCkge1xcbitcXHRcXHRrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5ID0gS1ZNX1JJU0NWX1dGSV9UUkFQO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHN0cmNtcChhcmcsIFxcXCJub3RyYXBcXFwiKSA9PSAwKSB7XFxuK1xcdFxcdGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kgPSBLVk1fUklTQ1ZfV0ZJX05PVFJBUDtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAtRUlOVkFMO1xcbit9XFxuK2Vhcmx5X3BhcmFtKFxcXCJrdm0tcmlzY3Yud2ZpX3RyYXBfcG9saWN5XFxcIiwgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmcpO1xcbitcXG4rc3RhdGljIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4re1xcbitcXHRyZXR1cm4ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSA9PSBLVk1fUklTQ1ZfV0ZJX1RSQVA7XFxuK31cXG4rXFxuIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfZGVzYyBrdm1fdmNwdV9zdGF0c19kZXNjW10gPSB7XFxuIFxcdEtWTV9HRU5FUklDX1ZDUFVfU1RBVFMoKSxcXG4gXFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGVjYWxsX2V4aXRfc3RhdCksXFxuQEAgLTczLDcgKzExMCwxMiBAQCBzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4gXFx0LyogU2V0dXAgcmVzZXQgc3RhdGUgb2Ygc2hhZG93IFNTVEFUVVMgYW5kIEhTVEFUVVMgQ1NScyAqL1xcbiBcXHRjbnR4LVxcdTAwM2Vzc3RhdHVzID0gU1JfU1BQIHwgU1JfU1BJRTtcXG4gXFxuLVxcdGNudHgtXFx1MDAzZWhzdGF0dXMgfD0gSFNUQVRVU19WVFc7XFxuK1xcdC8qXFxuK1xcdCAqIFRyYXAgVlMtbW9kZSBXRkkgaW50byBLVk0gdW5sZXNzIHRoZSBXRkkgdHJhcCBwb2xpY3kgbGV0cyB0aGUgZ3Vlc3RcXG4rXFx0ICogZXhlY3V0ZSBpdCBuYXRpdmVseS4gU2VlIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kuXFxuK1xcdCAqL1xcbitcXHRpZiAoa3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHZjcHUpKVxcbitcXHRcXHRjbnR4LVxcdTAwM2Voc3RhdHVzIHw9IEhTVEFUVVNfVlRXO1xcbiBcXHRjbnR4LVxcdTAwM2Voc3RhdHVzIHw9IEhTVEFUVVNfU1BWUDtcXG4gXFx0Y250eC1cXHUwMDNlaHN0YXR1cyB8PSBIU1RBVFVTX1NQVjtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxMjozNC43OTQ2NDEyMDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4MjM0MDU3ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGJvb3QgcGFyYW1ldGVyIHRvIGNvbnRyb2wgV0ZJIHRyYXAgcG9saWN5IGluIFJJU0MtViBLVk0gYW5kIG1vZGlmaWVzIHRoZSB2Q1BVIHJlc2V0IGxvZ2ljIHRvIGFwcGx5IHRoaXMgcG9saWN5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gS1ZNIHZDUFUgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDNhNDU5YjVlN2FlMjJlOWZiZjg1Nzc5ZGM2ZjA2OGYwMGNkYzFkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDA3OjEyOjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxuaW5kZXggOTcwMDdmNGY2OWQ0ZTguLjJkZTQ1ZjI0NzE4MzE5IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbisrKyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG5AQCAtMzI0OCw2ICszMjQ4LDIwIEBAIEtlcm5lbCBwYXJhbWV0ZXJzXG4gXG4gXHRcdFx0bm90cmFwOiBjbGVhciBXRkkgaW5zdHJ1Y3Rpb24gdHJhcFxuIFxuK1x0a3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeT1cbitcdFx0XHRbS1ZNLFJJU0NWXSBDb250cm9sIHdoZW4gdG8gc2V0IHRoZSBXRkkgaW5zdHJ1Y3Rpb25cbitcdFx0XHR0cmFwIGZvciBLVk0gVk1zLiBXaGVuIHNldCwgYSBWUy1tb2RlIFdGSSB0cmFwcyBpbnRvXG4rXHRcdFx0S1ZNIGFuZCBpcyBlbXVsYXRlZDsgd2hlbiBjbGVhciwgdGhlIGd1ZXN0IGV4ZWN1dGVzXG4rXHRcdFx0V0ZJIG5hdGl2ZWx5IGFuZCBibG9ja3MgdW50aWwgYSBWUy1tb2RlIGludGVycnVwdFxuK1x0XHRcdChlLmcuIHRoZSBzc3RjIHRpbWVyKSBpcyBwZW5kaW5nLlxuK1xuK1x0XHRcdHRyYXA6IHNldCBXRkkgaW5zdHJ1Y3Rpb24gdHJhcCAoSFNUQVRVUy5WVFc9MSlcbitcbitcdFx0XHRub3RyYXA6IGNsZWFyIFdGSSBpbnN0cnVjdGlvbiB0cmFwIChIU1RBVFVTLlZUVz0wKVxuK1xuK1x0XHRcdERlZmF1bHRzIHRvIHRyYXAsIHByZXNlcnZpbmcgdGhlIHByZXZpb3VzXG4rXHRcdFx0dW5jb25kaXRpb25hbCBiZWhhdmlvci5cbitcbiBcdGt2bV9jbWFfcmVzdl9yYXRpbz1uIFtQUEMsRUFSTFldXG4gXHRcdFx0UmVzZXJ2ZXMgZ2l2ZW4gcGVyY2VudGFnZSBmcm9tIHN5c3RlbSBtZW1vcnkgYXJlYSBmb3JcbiBcdFx0XHRjb250aWd1b3VzIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gaGFzaCBwYWdldGFibGVcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcbmluZGV4IGNmNmUyMzFlNzZlMjU0Li4wOWFmYmIwMTRiNDdkMCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdS5jXG5AQCAtMTIsNiArMTIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tkZWJ1Zy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdm1hbGxvYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQvc2lnbmFsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG5AQCAtMjYsNiArMjcsNDIgQEBcbiBcbiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGt2bV92Y3B1ICosIGt2bV9mb3JtZXJfdmNwdSk7XG4gXG4rLypcbisgKiBXRkkgdHJhcCBwb2xpY3kgZm9yIFZTLW1vZGUgZ3Vlc3RzLCBjb250cm9sbGFibGUgdGhyb3VnaCB0aGVcbisgKiBrdm0tcmlzY3Yud2ZpX3RyYXBfcG9saWN5PSBrZXJuZWwgY29tbWFuZC1saW5lIG9wdGlvbi5cbisgKi9cbitlbnVtIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kge1xuK1x0S1ZNX1JJU0NWX1dGSV9UUkFQLFx0LyogRGVmYXVsdDogdHJhcCBWUy1tb2RlIFdGSSBpbnRvIEtWTSAqL1xuK1x0S1ZNX1JJU0NWX1dGSV9OT1RSQVAsXHQvKiBMZXQgVlMtbW9kZSBXRkkgZXhlY3V0ZSBuYXRpdmVseSAqL1xuK307XG4rXG4rc3RhdGljIGVudW0ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5IF9fcmVhZF9tb3N0bHkgPVxuK1x0S1ZNX1JJU0NWX1dGSV9UUkFQO1xuK1xuK3N0YXRpYyBpbnQgX19pbml0IGVhcmx5X2t2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3lfY2ZnKGNoYXIgKmFyZylcbit7XG4rXHRpZiAoIWFyZylcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRpZiAoc3RyY21wKGFyZywgXCJ0cmFwXCIpID09IDApIHtcbitcdFx0a3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSA9IEtWTV9SSVNDVl9XRklfVFJBUDtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4rXHRpZiAoc3RyY21wKGFyZywgXCJub3RyYXBcIikgPT0gMCkge1xuK1x0XHRrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5ID0gS1ZNX1JJU0NWX1dGSV9OT1RSQVA7XG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1xuK1x0cmV0dXJuIC1FSU5WQUw7XG4rfVxuK2Vhcmx5X3BhcmFtKFwia3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeVwiLCBlYXJseV9rdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5X2NmZyk7XG4rXG4rc3RhdGljIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbit7XG4rXHRyZXR1cm4ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSA9PSBLVk1fUklTQ1ZfV0ZJX1RSQVA7XG4rfVxuK1xuIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfZGVzYyBrdm1fdmNwdV9zdGF0c19kZXNjW10gPSB7XG4gXHRLVk1fR0VORVJJQ19WQ1BVX1NUQVRTKCksXG4gXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgZWNhbGxfZXhpdF9zdGF0KSxcbkBAIC03Myw3ICsxMTAsMTIgQEAgc3RhdGljIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHQvKiBTZXR1cCByZXNldCBzdGF0ZSBvZiBzaGFkb3cgU1NUQVRVUyBhbmQgSFNUQVRVUyBDU1JzICovXG4gXHRjbnR4LVx1MDAzZXNzdGF0dXMgPSBTUl9TUFAgfCBTUl9TUElFO1xuIFxuLVx0Y250eC1cdTAwM2Voc3RhdHVzIHw9IEhTVEFUVVNfVlRXO1xuK1x0LypcbitcdCAqIFRyYXAgVlMtbW9kZSBXRkkgaW50byBLVk0gdW5sZXNzIHRoZSBXRkkgdHJhcCBwb2xpY3kgbGV0cyB0aGUgZ3Vlc3RcbitcdCAqIGV4ZWN1dGUgaXQgbmF0aXZlbHkuIFNlZSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5LlxuK1x0ICovXG4rXHRpZiAoa3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHZjcHUpKVxuK1x0XHRjbnR4LVx1MDAzZWhzdGF0dXMgfD0gSFNUQVRVU19WVFc7XG4gXHRjbnR4LVx1MDAzZWhzdGF0dXMgfD0gSFNUQVRVU19TUFZQO1xuIFx0Y250eC1cdTAwM2Voc3RhdHVzIHw9IEhTVEFUVVNfU1BWO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjEyOjM0Ljc5NDY0MjQxM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNzQzNjI5NDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBXRkkgVHJhcCBQb2xpY3kgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcga2VybmVsIGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIsIGBrdm0tcmlzY3Yud2ZpX3RyYXBfcG9saWN5YCwgc3BlY2lmaWNhbGx5IGZvciBSSVNDLVYgS1ZNLCB3aGljaCB3aWxsIGNvbnRyb2wgd2hldGhlciB0aGUgV0ZJIGluc3RydWN0aW9uIHRyYXBzIGludG8gS1ZNLiBUaGUgY2hhbmdlIGlzIGNlbnRlcmVkIHdpdGhpbiBgYXJjaC9yaXNjdi9rdm0vdmNwdS5jYC4gVGhlIHBhdGNoIGltcGxlbWVudHMgYSBuZXcgZW51bSBhbmQgYSBzdGF0aWMgdmFyaWFibGUsIGFuZCBhZGRzIGFuIGBlYXJseV9wYXJhbWAgZnVuY3Rpb24gYW5kIGEgaGVscGVyIGZ1bmN0aW9uLiBBbHNvLCBga3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldGAgaXMgYmVpbmcgbW9kaWZpZWQgdG8gc2V0IGBIU1RBVFVTX1ZUV2AgY29uZGl0aW9uYWxseS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyByZWFjaCBhbmQgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nLiBUaGlzIGlzIG9idmlvdXNseSB0YXJnZXRlZCBhdCB2aXJ0dWFsaXplZCBSSVNDLVYgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgS1ZNIG9uIFJJU0MtVi4gVGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCB0aGlzIGFmZmVjdHMgdGhlIGBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0YCBmdW5jdGlvbi5cblxuTm93LCBjb25zaWRlcmluZyBmdXp6aW5nLCBpdCdzIGEgc21hbGwgY2hhbmdlLiBUaGUgYm9vdCBwYXJhbWV0ZXIgcGFyc2luZywgYGVhcmx5X2t2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3lfY2ZnYCwgaXMgb25seSBleGVjdXRlZCBkdXJpbmcgYm9vdCBhbmQgaXMgZ2VuZXJhbGx5IG5vdCBmdXp6ZWQgYnkgc3l6a2FsbGVyLiBIb3dldmVyLCB0aGF0J3MgY2FsbGVkIGV2ZXJ5IGJvb3QgYW5kIGlmIHRoZXJlIGlzIGEgY3Jhc2ggdGhpcyB3aWxsIGJlIG1vcmUgYW5ub3lpbmcgdG8gZGVidWcuIFRoZSBjb25kaXRpb25hbCBjaGFuZ2Ugd2l0aGluIGBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0YCBzaW1wbHkgc2V0cyBhIGJpdCBpbiB0aGUgYGhzdGF0dXNgIHJlZ2lzdGVyIGJhc2VkIG9uIGEgZ2xvYmFsIHZhcmlhYmxlLiBJdCBkb2VzIHNldCB0aGUgYEhTVEFUVVNfVlRXYCB3aGljaCBjb3VsZCBoYXZlIHNpZGUgZWZmZWN0cy5cblxuU28sIGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IFRoZSBwYXRjaCBpcyBzbWFsbCwgYW5kIHRoZXJlJ3Mgbm8gY29tcGxleCBsb2dpYyBpbnZvbHZlZCBiZXlvbmQgYSBzaW1wbGUgZ2xvYmFsIHZhcmlhYmxlIGNoZWNrLiBUaGUgbWFpbiBmb2N1cyBzeW1ib2wgaWYgZnV6emluZyB3b3VsZCBvY2N1ciwgd291bGQgYmUgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLiBIb3dldmVyLCBpdCdzIHN0aWxsIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gS1ZNLCBzbyBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLlxuXG5UaGUgY29uZmlndXJhdGlvbiB0YXJnZXQgaXMgYEtWTWAgKG9uIFJJU0MtVikgYW5kIEkgc2hvdWxkIGV4YW1pbmUgYGFyY2gvcmlzY3Yva3ZtL3ZjcHUuY2AgbW9yZSBjbG9zZWx5IHRvIGJlIGNlcnRhaW4gdGhhdCBJIGFtIGNvbmZpZGVudCBpbiB0aGlzIGNvbmNsdXNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxMzoyOC41MzgyNzQ1MjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ5MTAyODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz04ND1jb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2hlYWRlciBrdm1fdmNwdV9zdGF0c19oZWFkZXIgPSB7XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtOTItXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjkzOnN0YXRpYyB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy05NC1cXHRcXHRcXHRcXHRcXHQgYm9vbCBrdm1fc2JpX3Jlc2V0KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTEyMz1zdGF0aWMgdm9pZCBrdm1fcmlzY3ZfcmVzZXRfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wga3ZtX3NiaV9yZXNldClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xMzgtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjEzOTpcXHRrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0KHZjcHUsIGt2bV9zYmlfcmVzZXQpO1xcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNDAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjEzOjI5LjA4NzM4MjE3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwMDk2NjUyOTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wbGljYXRpb25zIG9mIFRoaXMgU21hbGwgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgbG9va3MgcHJldHR5IG1pbm9yLCBiYXNpY2FsbHkganVzdCB0d2Vha2luZyBhIGJvb3QgcGFyYW1ldGVyLiBUaGF0IHBhcmFtZXRlciBnZXRzIHBpY2tlZCB1cCBieSBgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmdgLiAgVGhlIG90aGVyIG1vZGlmaWNhdGlvbiBpcyBqdXN0IHRoaXMgZ2V0dGVyIGZ1bmN0aW9uLCBga3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwYCwgYW5kIGl0cyB1c2UgaW4gYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLiBUaGUgbWFpbiB0aGluZyBpcyB0aGF0IGl0IGhpbmdlcyBvbiB0aGlzIGJvb3QgcGFyYW1ldGVyLlxuXG5TaW5jZSBzeXprYWxsZXIgZG9lc24ndCB0eXBpY2FsbHkgbWVzcyB3aXRoIGJvb3QgcGFyYW1ldGVycyBvbiBpdHMgb3duLCBpdCB3b3VsZCwgYnkgZGVmYXVsdCwganVzdCB1c2UgdGhlIGRlZmF1bHQgdmFsdWUg4oCTIHdoaWNoIGlzIGBLVk1fUklTQ1ZfV0ZJX1RSQVBgLiAgU28sIGluaXRpYWxseSwgbXkgdGhvdWdodCB3YXMsIFwiV2VsbCwgaWYgaXQncyB0aGUgc2FtZSBiZWhhdmlvciB1bmxlc3MgeW91IHVzZSB0aGUgYm9vdCBwYXJhbWV0ZXIsIGFuZCBzeXprYWxsZXIgaXNuJ3QgdXNpbmcgaXQsIGlzIGl0IGV2ZW4gd29ydGggYm90aGVyaW5nIHdpdGggZnV6emluZyB0aGlzPyBUaGUgYW5zd2VyIHRvIHRoYXQgcXVlc3Rpb24gaXMgJ3llcycuXG5cbldhaXQgYSBzZWNvbmQsIHN5emthbGxlciAqY2FuKiBiZSBjb25maWd1cmVkIHRvIHBhc3MgYm9vdCBwYXJhbWV0ZXJzISBJdCBqdXN0IHdvbid0IGJ5IGRlZmF1bHQuIEFuZCBldmVuIGlmIGl0IGRvZXMsIGFsbCB0aGlzIGNoYW5nZSByZWFsbHkgZG9lcyBpcyBzZXQgYSBiaXQgaW4gYSByZWdpc3Rlci4gU3RpbGwsIGl0J3Mgd29ydGggZnV6emluZy4gSSdsbCBmbGFnIGl0IGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkZvciB0aGUgZm9jdXMgc3ltYm9scywgSSdsbCBsaXN0IGBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0YC4gSSBzaG91bGQgYWxzbyB1c2UgYEVuYWJsZUNvbmZpZ3M9W1wiS1ZNXCJdYC4gQnV0LCBJIHNob3VsZCBjb25maXJtIHNvbWV0aGluZy4uLmlzIEtWTSBvbiBSSVNDLVYgZXZlbiBzdXBwb3J0ZWQgYnkgc3l6a2FsbGVyPyBTeXprYWxsZXIgZGVmaW5pdGVseSBzdXBwb3J0cyBSSVNDLVYsIGJ1dCBLVk0gb24gUklTQy1WIG1pZ2h0IGJlIGEgYml0IG9mIGEgbmljaGUgc2V0dXAuIEl0J3MgYSB2YWxpZCBrZXJuZWwgc3Vic3lzdGVtLCB0aG91Z2gsIHNvIGl0J3Mgd29ydGggaW52ZXN0aWdhdGluZy4gTGV0IG1lIGNoZWNrIHRoZSBLY29uZmlnIGZvciBSSVNDLVYgS1ZNLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjQ2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjEzOjQ5LjE4NDAzNjkyM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTgzNzA0MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTM6NDkuMzAyNDEyNjEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM1NDE5OTQ0MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgUklTQy1WIEtWTSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgYEtWTWAuIE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhpcyBpcyBmdXp6LXdvcnRoeSwgYnV0IGxldCdzIGJyZWFrIGl0IGRvd24gcHJvcGVybHkuIFRoaXMgcGF0Y2ggYWRkcyBhIGJvb3QgcGFyYW1ldGVyIGFuZCB0d2Vha3MgYSBzaW5nbGUgYml0IGluIGEgcmVnaXN0ZXIgd2hlbiBhIHZDUFUgcmVzZXRzLCBiYXNlZCBvbiB0aGF0IHBhcmFtZXRlci4gSXQncyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIEtWTSdzIGJlaGF2aW9yLiBUaGF0IGZ1bmN0aW9uYWwgY2hhbmdlIHNjcmVhbXMgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIGtleSBmdW5jdGlvbiB0byB0YXJnZXQgaXMgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLCBzbyB0aGF0IGdvZXMgaW4gYXMgdGhlIGBGb2N1c1N5bWJvbGAuIEFuZCwgb2J2aW91c2x5LCBgRW5hYmxlQ29uZmlnczogS1ZNYC5cblxuSG9sZCBvbiwgdGhvdWdoLiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmljYWxseSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gQnV0IHRoYXQncyBub3QgdGhlIGNhc2UgaGVyZS4gS1ZNIG9uIFJJU0MtViAqY2FuKiBiZSB0ZXN0ZWQgaW4gUUVNVSDigJMgd2UgY2FuIHVzZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gb3IgaWYgdGhlIGhvc3QgaXMgYWxzbyBSSVNDLVYsIG5hdGl2ZSBLVk0gaXMgc3VwcG9ydGVkLiBTeXprYWxsZXIgaXMgYWxyZWFkeSBzZXQgdXAgdG8gcnVuIFJJU0MtViBWTXMgaW4gUUVNVSAodXN1YWxseSB3aXRoIFRDRywgYnV0IHBvdGVudGlhbGx5IEtWTSBpZiB0aGUgaG9zdCBzdXBwb3J0cyBpdCkuIFNvLCB0aGUgY2hhbmdlZCBmdW5jdGlvbmFsaXR5IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLlxuXG5MZXQncyBkbyBhIHF1aWNrIGF1ZGl0IGZvciBhbnkgb3RoZXIgY2hhbmdlcy4gQXNpZGUgZnJvbSBga3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldGAsIEkgc2VlIGBlYXJseV9rdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5X2NmZ2AsIHdoaWNoIGlzIGBfX2luaXRgIGFuZCBvbmx5IGNhbGxlZCBkdXJpbmcgYm9vdC4gVGhlbiwgdGhlcmUncyBga3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwYCwgd2hpY2ggbG9va3MgbGlrZSBhbiBpbmxpbmUgZnVuY3Rpb24uIFRob3NlIGFyZSBib3RoIGZpbmU7IGBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0YCBpcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLlxuXG5BbHJpZ2h0LCBJJ20gY29uZmlkZW50LiAqKmBXb3J0aEZ1enppbmc9dHJ1ZWAqKi4gVGhlIGBGb2N1c1N5bWJvbGAgaXMgZGVmaW5pdGVseSBga3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldGAuIEFuZCB0aGUgb25seSBuZWVkZWQgYEVuYWJsZUNvbmZpZ3NgIGlzIGBLVk1gLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoJ3MgaW50cm9kdWNpbmcgYSBuZXcgYm9vdCBwYXJhbWV0ZXIgdG8gY29udHJvbCB0aGUgV0ZJIHRyYXAgcG9saWN5IGluIFJJU0MtViBLVk0uIEl0IHRoZW4gbW9kaWZpZXMgdkNQVSByZXNldCBsb2dpYyB0byBhcHBseSB0aGF0IHBvbGljeS4gVGhpcyBpcywgYXQgaXRzIGhlYXJ0LCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGhvdyBLVk0gaW5pdGlhbGl6ZXMgaXRzIHZDUFVzLCB3aGljaCBtYWtlcyBpdCBhIHByaW1lIGZ1enppbmcgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDk3LCJPdXRwdXRUb2tlbnMiOjkzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE0OjEyLjg0NDQwOTM2NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0MjgyNjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBib290IHBhcmFtZXRlciB0byBjb250cm9sIFdGSSB0cmFwIHBvbGljeSBpbiBSSVNDLVYgS1ZNIGFuZCBtb2RpZmllcyB0aGUgdkNQVSByZXNldCBsb2dpYyB0byBhcHBseSB0aGlzIHBvbGljeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIEtWTSB2Q1BVIGluaXRpYWxpemF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGJvb3QgcGFyYW1ldGVyIHRvIGNvbnRyb2wgV0ZJIHRyYXAgcG9saWN5IGluIFJJU0MtViBLVk0gYW5kIG1vZGlmaWVzIHRoZSB2Q1BVIHJlc2V0IGxvZ2ljIHRvIGFwcGx5IHRoaXMgcG9saWN5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gS1ZNIHZDUFUgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrn7t[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 07:02:45 +0000 UTC FinishedAt: 2026-07-10 07:14:14 +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": "db61c8e7-1c09-4b1d-bd36-d6e4986ed41a" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_vcpu_context_reset" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBib290IHBhcmFtZXRlciB0byBjb250cm9sIFdGSSB0cmFwIHBvbGljeSBpbiBSSVNDLVYgS1ZNIGFuZCBtb2RpZmllcyB0aGUgdkNQVSByZXNldCBsb2dpYyB0byBhcHBseSB0aGlzIHBvbGljeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIEtWTSB2Q1BVIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDNhNDU5YjVlN2FlMjJlOWZiZjg1Nzc5ZGM2ZjA2OGYwMGNkYzFkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDA3OjEyOjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbmluZGV4IDk3MDA3ZjRmNjlkNGU4Li4yZGU0NWYyNDcxODMxOSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxuQEAgLTMyNDgsNiAmIzQzOzMyNDgsMjAgQEAgS2VybmVsIHBhcmFtZXRlcnNcbiBcbiBcdFx0XHRub3RyYXA6IGNsZWFyIFdGSSBpbnN0cnVjdGlvbiB0cmFwXG4gXG4mIzQzO1x0a3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeT1cbiYjNDM7XHRcdFx0W0tWTSxSSVNDVl0gQ29udHJvbCB3aGVuIHRvIHNldCB0aGUgV0ZJIGluc3RydWN0aW9uXG4mIzQzO1x0XHRcdHRyYXAgZm9yIEtWTSBWTXMuIFdoZW4gc2V0LCBhIFZTLW1vZGUgV0ZJIHRyYXBzIGludG9cbiYjNDM7XHRcdFx0S1ZNIGFuZCBpcyBlbXVsYXRlZDsgd2hlbiBjbGVhciwgdGhlIGd1ZXN0IGV4ZWN1dGVzXG4mIzQzO1x0XHRcdFdGSSBuYXRpdmVseSBhbmQgYmxvY2tzIHVudGlsIGEgVlMtbW9kZSBpbnRlcnJ1cHRcbiYjNDM7XHRcdFx0KGUuZy4gdGhlIHNzdGMgdGltZXIpIGlzIHBlbmRpbmcuXG4mIzQzO1xuJiM0MztcdFx0XHR0cmFwOiBzZXQgV0ZJIGluc3RydWN0aW9uIHRyYXAgKEhTVEFUVVMuVlRXPTEpXG4mIzQzO1xuJiM0MztcdFx0XHRub3RyYXA6IGNsZWFyIFdGSSBpbnN0cnVjdGlvbiB0cmFwIChIU1RBVFVTLlZUVz0wKVxuJiM0MztcbiYjNDM7XHRcdFx0RGVmYXVsdHMgdG8gdHJhcCwgcHJlc2VydmluZyB0aGUgcHJldmlvdXNcbiYjNDM7XHRcdFx0dW5jb25kaXRpb25hbCBiZWhhdmlvci5cbiYjNDM7XG4gXHRrdm1fY21hX3Jlc3ZfcmF0aW89biBbUFBDLEVBUkxZXVxuIFx0XHRcdFJlc2VydmVzIGdpdmVuIHBlcmNlbnRhZ2UgZnJvbSBzeXN0ZW0gbWVtb3J5IGFyZWEgZm9yXG4gXHRcdFx0Y29udGlndW91cyBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgS1ZNIGhhc2ggcGFnZXRhYmxlXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdS5jXG5pbmRleCBjZjZlMjMxZTc2ZTI1NC4uMDlhZmJiMDE0YjQ3ZDAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xuQEAgLTEyLDYgJiM0MzsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2RlYnVnLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdm1hbGxvYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQvc2lnbmFsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG5AQCAtMjYsNiAmIzQzOzI3LDQyIEBAXG4gXG4gc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBrdm1fdmNwdSAqLCBrdm1fZm9ybWVyX3ZjcHUpO1xuIFxuJiM0MzsvKlxuJiM0MzsgKiBXRkkgdHJhcCBwb2xpY3kgZm9yIFZTLW1vZGUgZ3Vlc3RzLCBjb250cm9sbGFibGUgdGhyb3VnaCB0aGVcbiYjNDM7ICoga3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeT0ga2VybmVsIGNvbW1hbmQtbGluZSBvcHRpb24uXG4mIzQzOyAqL1xuJiM0MztlbnVtIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kge1xuJiM0MztcdEtWTV9SSVNDVl9XRklfVFJBUCxcdC8qIERlZmF1bHQ6IHRyYXAgVlMtbW9kZSBXRkkgaW50byBLVk0gKi9cbiYjNDM7XHRLVk1fUklTQ1ZfV0ZJX05PVFJBUCxcdC8qIExldCBWUy1tb2RlIFdGSSBleGVjdXRlIG5hdGl2ZWx5ICovXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgZW51bSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5IGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kgX19yZWFkX21vc3RseSA9XG4mIzQzO1x0S1ZNX1JJU0NWX1dGSV9UUkFQO1xuJiM0MztcbiYjNDM7c3RhdGljIGludCBfX2luaXQgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmcoY2hhciAqYXJnKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFhcmcpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0aWYgKHN0cmNtcChhcmcsIFwmIzM0O3RyYXBcJiMzNDspID09IDApIHtcbiYjNDM7XHRcdGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kgPSBLVk1fUklTQ1ZfV0ZJX1RSQVA7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChzdHJjbXAoYXJnLCBcJiMzNDtub3RyYXBcJiMzNDspID09IDApIHtcbiYjNDM7XHRcdGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kgPSBLVk1fUklTQ1ZfV0ZJX05PVFJBUDtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO31cbiYjNDM7ZWFybHlfcGFyYW0oXCYjMzQ7a3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeVwmIzM0OywgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmcpO1xuJiM0MztcbiYjNDM7c3RhdGljIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiYjNDM7e1xuJiM0MztcdHJldHVybiBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5ID09IEtWTV9SSVNDVl9XRklfVFJBUDtcbiYjNDM7fVxuJiM0MztcbiBjb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2Rlc2Mga3ZtX3ZjcHVfc3RhdHNfZGVzY1tdID0ge1xuIFx0S1ZNX0dFTkVSSUNfVkNQVV9TVEFUUygpLFxuIFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGVjYWxsX2V4aXRfc3RhdCksXG5AQCAtNzMsNyAmIzQzOzExMCwxMiBAQCBzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdC8qIFNldHVwIHJlc2V0IHN0YXRlIG9mIHNoYWRvdyBTU1RBVFVTIGFuZCBIU1RBVFVTIENTUnMgKi9cbiBcdGNudHgtXHUwMDNlc3N0YXR1cyA9IFNSX1NQUCB8IFNSX1NQSUU7XG4gXG4tXHRjbnR4LVx1MDAzZWhzdGF0dXMgfD0gSFNUQVRVU19WVFc7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBUcmFwIFZTLW1vZGUgV0ZJIGludG8gS1ZNIHVubGVzcyB0aGUgV0ZJIHRyYXAgcG9saWN5IGxldHMgdGhlIGd1ZXN0XG4mIzQzO1x0ICogZXhlY3V0ZSBpdCBuYXRpdmVseS4gU2VlIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGt2bV9yaXNjdl92Y3B1X3dmaV9zaG91bGRfdHJhcCh2Y3B1KSlcbiYjNDM7XHRcdGNudHgtXHUwMDNlaHN0YXR1cyB8PSBIU1RBVFVTX1ZUVztcbiBcdGNudHgtXHUwMDNlaHN0YXR1cyB8PSBIU1RBVFVTX1NQVlA7XG4gXHRjbnR4LVx1MDAzZWhzdGF0dXMgfD0gSFNUQVRVU19TUFY7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA3OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBib290IHBhcmFtZXRlciB0byBjb250cm9sIFdGSSB0cmFwIHBvbGljeSBpbiBSSVNDLVYgS1ZNIGFuZCBtb2RpZmllcyB0aGUgdkNQVSByZXNldCBsb2dpYyB0byBhcHBseSB0aGlzIHBvbGljeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIEtWTSB2Q1BVIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkM2E0NTliNWU3YWUyMmU5ZmJmODU3NzlkYzZmMDY4ZjAwY2RjMWRjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTAgMDc6MTI6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0CmluZGV4IDk3MDA3ZjRmNjlkNGU4Li4yZGU0NWYyNDcxODMxOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQKQEAgLTMyNDgsNiAmIzQzOzMyNDgsMjAgQEAgS2VybmVsIHBhcmFtZXRlcnMKIAogCQkJbm90cmFwOiBjbGVhciBXRkkgaW5zdHJ1Y3Rpb24gdHJhcAogCiYjNDM7CWt2bS1yaXNjdi53ZmlfdHJhcF9wb2xpY3k9CiYjNDM7CQkJW0tWTSxSSVNDVl0gQ29udHJvbCB3aGVuIHRvIHNldCB0aGUgV0ZJIGluc3RydWN0aW9uCiYjNDM7CQkJdHJhcCBmb3IgS1ZNIFZNcy4gV2hlbiBzZXQsIGEgVlMtbW9kZSBXRkkgdHJhcHMgaW50bwomIzQzOwkJCUtWTSBhbmQgaXMgZW11bGF0ZWQ7IHdoZW4gY2xlYXIsIHRoZSBndWVzdCBleGVjdXRlcwomIzQzOwkJCVdGSSBuYXRpdmVseSBhbmQgYmxvY2tzIHVudGlsIGEgVlMtbW9kZSBpbnRlcnJ1cHQKJiM0MzsJCQkoZS5nLiB0aGUgc3N0YyB0aW1lcikgaXMgcGVuZGluZy4KJiM0MzsKJiM0MzsJCQl0cmFwOiBzZXQgV0ZJIGluc3RydWN0aW9uIHRyYXAgKEhTVEFUVVMuVlRXPTEpCiYjNDM7CiYjNDM7CQkJbm90cmFwOiBjbGVhciBXRkkgaW5zdHJ1Y3Rpb24gdHJhcCAoSFNUQVRVUy5WVFc9MCkKJiM0MzsKJiM0MzsJCQlEZWZhdWx0cyB0byB0cmFwLCBwcmVzZXJ2aW5nIHRoZSBwcmV2aW91cwomIzQzOwkJCXVuY29uZGl0aW9uYWwgYmVoYXZpb3IuCiYjNDM7CiAJa3ZtX2NtYV9yZXN2X3JhdGlvPW4gW1BQQyxFQVJMWV0KIAkJCVJlc2VydmVzIGdpdmVuIHBlcmNlbnRhZ2UgZnJvbSBzeXN0ZW0gbWVtb3J5IGFyZWEgZm9yCiAJCQljb250aWd1b3VzIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gaGFzaCBwYWdldGFibGUKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYwppbmRleCBjZjZlMjMxZTc2ZTI1NC4uMDlhZmJiMDE0YjQ3ZDAgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgva2RlYnVnLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGVyY3B1LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3N0cmluZy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zY2hlZC9zaWduYWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OwpAQCAtMjYsNiAmIzQzOzI3LDQyIEBACiAKIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3Qga3ZtX3ZjcHUgKiwga3ZtX2Zvcm1lcl92Y3B1KTsKIAomIzQzOy8qCiYjNDM7ICogV0ZJIHRyYXAgcG9saWN5IGZvciBWUy1tb2RlIGd1ZXN0cywgY29udHJvbGxhYmxlIHRocm91Z2ggdGhlCiYjNDM7ICoga3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeT0ga2VybmVsIGNvbW1hbmQtbGluZSBvcHRpb24uCiYjNDM7ICovCiYjNDM7ZW51bSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5IHsKJiM0MzsJS1ZNX1JJU0NWX1dGSV9UUkFQLAkvKiBEZWZhdWx0OiB0cmFwIFZTLW1vZGUgV0ZJIGludG8gS1ZNICovCiYjNDM7CUtWTV9SSVNDVl9XRklfTk9UUkFQLAkvKiBMZXQgVlMtbW9kZSBXRkkgZXhlY3V0ZSBuYXRpdmVseSAqLwomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGVudW0ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5IF9fcmVhZF9tb3N0bHkgPQomIzQzOwlLVk1fUklTQ1ZfV0ZJX1RSQVA7CiYjNDM7CiYjNDM7c3RhdGljIGludCBfX2luaXQgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmcoY2hhciAqYXJnKQomIzQzO3sKJiM0MzsJaWYgKCFhcmcpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJaWYgKHN0cmNtcChhcmcsICYjMzQ7dHJhcCYjMzQ7KSA9PSAwKSB7CiYjNDM7CQlrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5ID0gS1ZNX1JJU0NWX1dGSV9UUkFQOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHN0cmNtcChhcmcsICYjMzQ7bm90cmFwJiMzNDspID09IDApIHsKJiM0MzsJCWt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kgPSBLVk1fUklTQ1ZfV0ZJX05PVFJBUDsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAtRUlOVkFMOwomIzQzO30KJiM0MztlYXJseV9wYXJhbSgmIzM0O2t2bS1yaXNjdi53ZmlfdHJhcF9wb2xpY3kmIzM0OywgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmcpOwomIzQzOwomIzQzO3N0YXRpYyBib29sIGt2bV9yaXNjdl92Y3B1X3dmaV9zaG91bGRfdHJhcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwlyZXR1cm4ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSA9PSBLVk1fUklTQ1ZfV0ZJX1RSQVA7CiYjNDM7fQomIzQzOwogY29uc3Qgc3RydWN0IGt2bV9zdGF0c19kZXNjIGt2bV92Y3B1X3N0YXRzX2Rlc2NbXSA9IHsKIAlLVk1fR0VORVJJQ19WQ1BVX1NUQVRTKCksCiAJU1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGVjYWxsX2V4aXRfc3RhdCksCkBAIC03Myw3ICYjNDM7MTEwLDEyIEBAIHN0YXRpYyB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCS8qIFNldHVwIHJlc2V0IHN0YXRlIG9mIHNoYWRvdyBTU1RBVFVTIGFuZCBIU1RBVFVTIENTUnMgKi8KIAljbnR4LSZndDtzc3RhdHVzID0gU1JfU1BQIHwgU1JfU1BJRTsKIAotCWNudHgtJmd0O2hzdGF0dXMgfD0gSFNUQVRVU19WVFc7CiYjNDM7CS8qCiYjNDM7CSAqIFRyYXAgVlMtbW9kZSBXRkkgaW50byBLVk0gdW5sZXNzIHRoZSBXRkkgdHJhcCBwb2xpY3kgbGV0cyB0aGUgZ3Vlc3QKJiM0MzsJICogZXhlY3V0ZSBpdCBuYXRpdmVseS4gU2VlIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kuCiYjNDM7CSAqLwomIzQzOwlpZiAoa3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHZjcHUpKQomIzQzOwkJY250eC0mZ3Q7aHN0YXR1cyB8PSBIU1RBVFVTX1ZUVzsKIAljbnR4LSZndDtoc3RhdHVzIHw9IEhTVEFUVVNfU1BWUDsKIAljbnR4LSZndDtoc3RhdHVzIHw9IEhTVEFUVVNfU1BWOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTEwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBXRkkgVHJhcCBQb2xpY3kgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGtlcm5lbCBjb21tYW5kLWxpbmUgcGFyYW1ldGVyLCBga3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeWAsIHNwZWNpZmljYWxseSBmb3IgUklTQy1WIEtWTSwgd2hpY2ggd2lsbCBjb250cm9sIHdoZXRoZXIgdGhlIFdGSSBpbnN0cnVjdGlvbiB0cmFwcyBpbnRvIEtWTS4gVGhlIGNoYW5nZSBpcyBjZW50ZXJlZCB3aXRoaW4gYGFyY2gvcmlzY3Yva3ZtL3ZjcHUuY2AuIFRoZSBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGVudW0gYW5kIGEgc3RhdGljIHZhcmlhYmxlLCBhbmQgYWRkcyBhbiBgZWFybHlfcGFyYW1gIGZ1bmN0aW9uIGFuZCBhIGhlbHBlciBmdW5jdGlvbi4gQWxzbywgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgIGlzIGJlaW5nIG1vZGlmaWVkIHRvIHNldCBgSFNUQVRVU19WVFdgIGNvbmRpdGlvbmFsbHkuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIHJlYWNoIGFuZCB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcuIFRoaXMgaXMgb2J2aW91c2x5IHRhcmdldGVkIGF0IHZpcnR1YWxpemVkIFJJU0MtViBlbnZpcm9ubWVudHMsIHNwZWNpZmljYWxseSBLVk0gb24gUklTQy1WLiBUaGUgY3JpdGljYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoaXMgYWZmZWN0cyB0aGUgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgIGZ1bmN0aW9uLgoKTm93LCBjb25zaWRlcmluZyBmdXp6aW5nLCBpdCYjMzk7cyBhIHNtYWxsIGNoYW5nZS4gVGhlIGJvb3QgcGFyYW1ldGVyIHBhcnNpbmcsIGBlYXJseV9rdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5X2NmZ2AsIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGJvb3QgYW5kIGlzIGdlbmVyYWxseSBub3QgZnV6emVkIGJ5IHN5emthbGxlci4gSG93ZXZlciwgdGhhdCYjMzk7cyBjYWxsZWQgZXZlcnkgYm9vdCBhbmQgaWYgdGhlcmUgaXMgYSBjcmFzaCB0aGlzIHdpbGwgYmUgbW9yZSBhbm5veWluZyB0byBkZWJ1Zy4gVGhlIGNvbmRpdGlvbmFsIGNoYW5nZSB3aXRoaW4gYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgIHNpbXBseSBzZXRzIGEgYml0IGluIHRoZSBgaHN0YXR1c2AgcmVnaXN0ZXIgYmFzZWQgb24gYSBnbG9iYWwgdmFyaWFibGUuIEl0IGRvZXMgc2V0IHRoZSBgSFNUQVRVU19WVFdgIHdoaWNoIGNvdWxkIGhhdmUgc2lkZSBlZmZlY3RzLgoKU28sIGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IFRoZSBwYXRjaCBpcyBzbWFsbCwgYW5kIHRoZXJlJiMzOTtzIG5vIGNvbXBsZXggbG9naWMgaW52b2x2ZWQgYmV5b25kIGEgc2ltcGxlIGdsb2JhbCB2YXJpYWJsZSBjaGVjay4gVGhlIG1haW4gZm9jdXMgc3ltYm9sIGlmIGZ1enppbmcgd291bGQgb2NjdXIsIHdvdWxkIGJlIGBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0YC4gSG93ZXZlciwgaXQmIzM5O3Mgc3RpbGwgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBLVk0sIHNvIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suCgpUaGUgY29uZmlndXJhdGlvbiB0YXJnZXQgaXMgYEtWTWAgKG9uIFJJU0MtVikgYW5kIEkgc2hvdWxkIGV4YW1pbmUgYGFyY2gvcmlzY3Yva3ZtL3ZjcHUuY2AgbW9yZSBjbG9zZWx5IHRvIGJlIGNlcnRhaW4gdGhhdCBJIGFtIGNvbmZpZGVudCBpbiB0aGlzIGNvbmNsdXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1LmM9ODQ9Y29uc3Qgc3RydWN0IGt2bV9zdGF0c19oZWFkZXIga3ZtX3ZjcHVfc3RhdHNfaGVhZGVyID0ge1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy05Mi1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo5MzpzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy05NC1cdFx0XHRcdFx0IGJvb2wga3ZtX3NiaV9yZXNldClcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9MTIzPXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9yZXNldF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBrdm1fc2JpX3Jlc2V0KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xMzgtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MTM5Olx0a3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldCh2Y3B1LCBrdm1fc2JpX3Jlc2V0KTtcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNDAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI0NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiBUaGlzIFNtYWxsIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIGNoYW5nZSBsb29rcyBwcmV0dHkgbWlub3IsIGJhc2ljYWxseSBqdXN0IHR3ZWFraW5nIGEgYm9vdCBwYXJhbWV0ZXIuIFRoYXQgcGFyYW1ldGVyIGdldHMgcGlja2VkIHVwIGJ5IGBlYXJseV9rdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5X2NmZ2AuICBUaGUgb3RoZXIgbW9kaWZpY2F0aW9uIGlzIGp1c3QgdGhpcyBnZXR0ZXIgZnVuY3Rpb24sIGBrdm1fcmlzY3ZfdmNwdV93Zmlfc2hvdWxkX3RyYXBgLCBhbmQgaXRzIHVzZSBpbiBga3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldGAuIFRoZSBtYWluIHRoaW5nIGlzIHRoYXQgaXQgaGluZ2VzIG9uIHRoaXMgYm9vdCBwYXJhbWV0ZXIuCgpTaW5jZSBzeXprYWxsZXIgZG9lc24mIzM5O3QgdHlwaWNhbGx5IG1lc3Mgd2l0aCBib290IHBhcmFtZXRlcnMgb24gaXRzIG93biwgaXQgd291bGQsIGJ5IGRlZmF1bHQsIGp1c3QgdXNlIHRoZSBkZWZhdWx0IHZhbHVlIOKAkyB3aGljaCBpcyBgS1ZNX1JJU0NWX1dGSV9UUkFQYC4gIFNvLCBpbml0aWFsbHksIG15IHRob3VnaHQgd2FzLCAmIzM0O1dlbGwsIGlmIGl0JiMzOTtzIHRoZSBzYW1lIGJlaGF2aW9yIHVubGVzcyB5b3UgdXNlIHRoZSBib290IHBhcmFtZXRlciwgYW5kIHN5emthbGxlciBpc24mIzM5O3QgdXNpbmcgaXQsIGlzIGl0IGV2ZW4gd29ydGggYm90aGVyaW5nIHdpdGggZnV6emluZyB0aGlzPyBUaGUgYW5zd2VyIHRvIHRoYXQgcXVlc3Rpb24gaXMgJiMzOTt5ZXMmIzM5Oy4KCldhaXQgYSBzZWNvbmQsIHN5emthbGxlciAqY2FuKiBiZSBjb25maWd1cmVkIHRvIHBhc3MgYm9vdCBwYXJhbWV0ZXJzISBJdCBqdXN0IHdvbiYjMzk7dCBieSBkZWZhdWx0LiBBbmQgZXZlbiBpZiBpdCBkb2VzLCBhbGwgdGhpcyBjaGFuZ2UgcmVhbGx5IGRvZXMgaXMgc2V0IGEgYml0IGluIGEgcmVnaXN0ZXIuIFN0aWxsLCBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIGl0IGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpGb3IgdGhlIGZvY3VzIHN5bWJvbHMsIEkmIzM5O2xsIGxpc3QgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLiBJIHNob3VsZCBhbHNvIHVzZSBgRW5hYmxlQ29uZmlncz1bJiMzNDtLVk0mIzM0O11gLiBCdXQsIEkgc2hvdWxkIGNvbmZpcm0gc29tZXRoaW5nLi4uaXMgS1ZNIG9uIFJJU0MtViBldmVuIHN1cHBvcnRlZCBieSBzeXprYWxsZXI/IFN5emthbGxlciBkZWZpbml0ZWx5IHN1cHBvcnRzIFJJU0MtViwgYnV0IEtWTSBvbiBSSVNDLVYgbWlnaHQgYmUgYSBiaXQgb2YgYSBuaWNoZSBzZXR1cC4gSXQmIzM5O3MgYSB2YWxpZCBrZXJuZWwgc3Vic3lzdGVtLCB0aG91Z2gsIHNvIGl0JiMzOTtzIHdvcnRoIGludmVzdGlnYXRpbmcuIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgUklTQy1WIEtWTS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA5NwoJCQkJCQkJb3V0cHV0OiA5MwoJCQkJCQkJdGhvdWdodHM6IDM4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBSSVNDLVYgS1ZNIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgYEtWTWAuIE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhpcyBpcyBmdXp6LXdvcnRoeSwgYnV0IGxldCYjMzk7cyBicmVhayBpdCBkb3duIHByb3Blcmx5LiBUaGlzIHBhdGNoIGFkZHMgYSBib290IHBhcmFtZXRlciBhbmQgdHdlYWtzIGEgc2luZ2xlIGJpdCBpbiBhIHJlZ2lzdGVyIHdoZW4gYSB2Q1BVIHJlc2V0cywgYmFzZWQgb24gdGhhdCBwYXJhbWV0ZXIuIEl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgS1ZNJiMzOTtzIGJlaGF2aW9yLiBUaGF0IGZ1bmN0aW9uYWwgY2hhbmdlIHNjcmVhbXMgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIGtleSBmdW5jdGlvbiB0byB0YXJnZXQgaXMgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLCBzbyB0aGF0IGdvZXMgaW4gYXMgdGhlIGBGb2N1c1N5bWJvbGAuIEFuZCwgb2J2aW91c2x5LCBgRW5hYmxlQ29uZmlnczogS1ZNYC4KCkhvbGQgb24sIHRob3VnaC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZSBoZXJlLiBLVk0gb24gUklTQy1WICpjYW4qIGJlIHRlc3RlZCBpbiBRRU1VIOKAkyB3ZSBjYW4gdXNlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvciBpZiB0aGUgaG9zdCBpcyBhbHNvIFJJU0MtViwgbmF0aXZlIEtWTSBpcyBzdXBwb3J0ZWQuIFN5emthbGxlciBpcyBhbHJlYWR5IHNldCB1cCB0byBydW4gUklTQy1WIFZNcyBpbiBRRU1VICh1c3VhbGx5IHdpdGggVENHLCBidXQgcG90ZW50aWFsbHkgS1ZNIGlmIHRoZSBob3N0IHN1cHBvcnRzIGl0KS4gU28sIHRoZSBjaGFuZ2VkIGZ1bmN0aW9uYWxpdHkgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBhdWRpdCBmb3IgYW55IG90aGVyIGNoYW5nZXMuIEFzaWRlIGZyb20gYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLCBJIHNlZSBgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmdgLCB3aGljaCBpcyBgX19pbml0YCBhbmQgb25seSBjYWxsZWQgZHVyaW5nIGJvb3QuIFRoZW4sIHRoZXJlJiMzOTtzIGBrdm1fcmlzY3ZfdmNwdV93Zmlfc2hvdWxkX3RyYXBgLCB3aGljaCBsb29rcyBsaWtlIGFuIGlubGluZSBmdW5jdGlvbi4gVGhvc2UgYXJlIGJvdGggZmluZTsgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgIGlzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuCgpBbHJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudC4gKipgV29ydGhGdXp6aW5nPXRydWVgKiouIFRoZSBgRm9jdXNTeW1ib2xgIGlzIGRlZmluaXRlbHkgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLiBBbmQgdGhlIG9ubHkgbmVlZGVkIGBFbmFibGVDb25maWdzYCBpcyBgS1ZNYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCYjMzk7cyBpbnRyb2R1Y2luZyBhIG5ldyBib290IHBhcmFtZXRlciB0byBjb250cm9sIHRoZSBXRkkgdHJhcCBwb2xpY3kgaW4gUklTQy1WIEtWTS4gSXQgdGhlbiBtb2RpZmllcyB2Q1BVIHJlc2V0IGxvZ2ljIHRvIGFwcGx5IHRoYXQgcG9saWN5LiBUaGlzIGlzLCBhdCBpdHMgaGVhcnQsIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gaG93IEtWTSBpbml0aWFsaXplcyBpdHMgdkNQVXMsIHdoaWNoIG1ha2VzIGl0IGEgcHJpbWUgZnV6emluZyB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDc6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBib290IHBhcmFtZXRlciB0byBjb250cm9sIFdGSSB0cmFwIHBvbGljeSBpbiBSSVNDLVYgS1ZNIGFuZCBtb2RpZmllcyB0aGUgdkNQVSByZXNldCBsb2dpYyB0byBhcHBseSB0aGlzIHBvbGljeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIEtWTSB2Q1BVIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgYm9vdCBwYXJhbWV0ZXIgdG8gY29udHJvbCBXRkkgdHJhcCBwb2xpY3kgaW4gUklTQy1WIEtWTSBhbmQgbW9kaWZpZXMgdGhlIHZDUFUgcmVzZXQgbG9naWMgdG8gYXBwbHkgdGhpcyBwb2xpY3kuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBLVk0gdkNQVSBpbml0aWFsaXphdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjEyOjM0LjE0ODk4NDA5MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4ODc5NzI5MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGJvb3QgcGFyYW1ldGVyIHRvIGNvbnRyb2wgV0ZJIHRyYXAgcG9saWN5IGluIFJJU0MtViBLVk0gYW5kIG1vZGlmaWVzIHRoZSB2Q1BVIHJlc2V0IGxvZ2ljIHRvIGFwcGx5IHRoaXMgcG9saWN5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gS1ZNIHZDUFUgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjEyOjM0LjE0ODk5MjMxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ0ODQ4MDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDNhNDU5YjVlN2FlMjJlOWZiZjg1Nzc5ZGM2ZjA2OGYwMGNkYzFkY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAwNzoxMjozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XFxuaW5kZXggOTcwMDdmNGY2OWQ0ZTguLjJkZTQ1ZjI0NzE4MzE5IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcXG5AQCAtMzI0OCw2ICszMjQ4LDIwIEBAIEtlcm5lbCBwYXJhbWV0ZXJzXFxuIFxcbiBcXHRcXHRcXHRub3RyYXA6IGNsZWFyIFdGSSBpbnN0cnVjdGlvbiB0cmFwXFxuIFxcbitcXHRrdm0tcmlzY3Yud2ZpX3RyYXBfcG9saWN5PVxcbitcXHRcXHRcXHRbS1ZNLFJJU0NWXSBDb250cm9sIHdoZW4gdG8gc2V0IHRoZSBXRkkgaW5zdHJ1Y3Rpb25cXG4rXFx0XFx0XFx0dHJhcCBmb3IgS1ZNIFZNcy4gV2hlbiBzZXQsIGEgVlMtbW9kZSBXRkkgdHJhcHMgaW50b1xcbitcXHRcXHRcXHRLVk0gYW5kIGlzIGVtdWxhdGVkOyB3aGVuIGNsZWFyLCB0aGUgZ3Vlc3QgZXhlY3V0ZXNcXG4rXFx0XFx0XFx0V0ZJIG5hdGl2ZWx5IGFuZCBibG9ja3MgdW50aWwgYSBWUy1tb2RlIGludGVycnVwdFxcbitcXHRcXHRcXHQoZS5nLiB0aGUgc3N0YyB0aW1lcikgaXMgcGVuZGluZy5cXG4rXFxuK1xcdFxcdFxcdHRyYXA6IHNldCBXRkkgaW5zdHJ1Y3Rpb24gdHJhcCAoSFNUQVRVUy5WVFc9MSlcXG4rXFxuK1xcdFxcdFxcdG5vdHJhcDogY2xlYXIgV0ZJIGluc3RydWN0aW9uIHRyYXAgKEhTVEFUVVMuVlRXPTApXFxuK1xcbitcXHRcXHRcXHREZWZhdWx0cyB0byB0cmFwLCBwcmVzZXJ2aW5nIHRoZSBwcmV2aW91c1xcbitcXHRcXHRcXHR1bmNvbmRpdGlvbmFsIGJlaGF2aW9yLlxcbitcXG4gXFx0a3ZtX2NtYV9yZXN2X3JhdGlvPW4gW1BQQyxFQVJMWV1cXG4gXFx0XFx0XFx0UmVzZXJ2ZXMgZ2l2ZW4gcGVyY2VudGFnZSBmcm9tIHN5c3RlbSBtZW1vcnkgYXJlYSBmb3JcXG4gXFx0XFx0XFx0Y29udGlndW91cyBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgS1ZNIGhhc2ggcGFnZXRhYmxlXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xcbmluZGV4IGNmNmUyMzFlNzZlMjU0Li4wOWFmYmIwMTRiNDdkMCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcXG5AQCAtMTIsNiArMTIsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2RlYnVnLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BlcmNwdS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RyaW5nLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC92bWFsbG9jLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zY2hlZC9zaWduYWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZzLmhcXHUwMDNlXFxuQEAgLTI2LDYgKzI3LDQyIEBAXFxuIFxcbiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGt2bV92Y3B1ICosIGt2bV9mb3JtZXJfdmNwdSk7XFxuIFxcbisvKlxcbisgKiBXRkkgdHJhcCBwb2xpY3kgZm9yIFZTLW1vZGUgZ3Vlc3RzLCBjb250cm9sbGFibGUgdGhyb3VnaCB0aGVcXG4rICoga3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeT0ga2VybmVsIGNvbW1hbmQtbGluZSBvcHRpb24uXFxuKyAqL1xcbitlbnVtIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kge1xcbitcXHRLVk1fUklTQ1ZfV0ZJX1RSQVAsXFx0LyogRGVmYXVsdDogdHJhcCBWUy1tb2RlIFdGSSBpbnRvIEtWTSAqL1xcbitcXHRLVk1fUklTQ1ZfV0ZJX05PVFJBUCxcXHQvKiBMZXQgVlMtbW9kZSBXRkkgZXhlY3V0ZSBuYXRpdmVseSAqL1xcbit9O1xcbitcXG4rc3RhdGljIGVudW0ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5IF9fcmVhZF9tb3N0bHkgPVxcbitcXHRLVk1fUklTQ1ZfV0ZJX1RSQVA7XFxuK1xcbitzdGF0aWMgaW50IF9faW5pdCBlYXJseV9rdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5X2NmZyhjaGFyICphcmcpXFxuK3tcXG4rXFx0aWYgKCFhcmcpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0aWYgKHN0cmNtcChhcmcsIFxcXCJ0cmFwXFxcIikgPT0gMCkge1xcbitcXHRcXHRrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5ID0gS1ZNX1JJU0NWX1dGSV9UUkFQO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHN0cmNtcChhcmcsIFxcXCJub3RyYXBcXFwiKSA9PSAwKSB7XFxuK1xcdFxcdGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kgPSBLVk1fUklTQ1ZfV0ZJX05PVFJBUDtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAtRUlOVkFMO1xcbit9XFxuK2Vhcmx5X3BhcmFtKFxcXCJrdm0tcmlzY3Yud2ZpX3RyYXBfcG9saWN5XFxcIiwgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmcpO1xcbitcXG4rc3RhdGljIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4re1xcbitcXHRyZXR1cm4ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSA9PSBLVk1fUklTQ1ZfV0ZJX1RSQVA7XFxuK31cXG4rXFxuIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfZGVzYyBrdm1fdmNwdV9zdGF0c19kZXNjW10gPSB7XFxuIFxcdEtWTV9HRU5FUklDX1ZDUFVfU1RBVFMoKSxcXG4gXFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGVjYWxsX2V4aXRfc3RhdCksXFxuQEAgLTczLDcgKzExMCwxMiBAQCBzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4gXFx0LyogU2V0dXAgcmVzZXQgc3RhdGUgb2Ygc2hhZG93IFNTVEFUVVMgYW5kIEhTVEFUVVMgQ1NScyAqL1xcbiBcXHRjbnR4LVxcdTAwM2Vzc3RhdHVzID0gU1JfU1BQIHwgU1JfU1BJRTtcXG4gXFxuLVxcdGNudHgtXFx1MDAzZWhzdGF0dXMgfD0gSFNUQVRVU19WVFc7XFxuK1xcdC8qXFxuK1xcdCAqIFRyYXAgVlMtbW9kZSBXRkkgaW50byBLVk0gdW5sZXNzIHRoZSBXRkkgdHJhcCBwb2xpY3kgbGV0cyB0aGUgZ3Vlc3RcXG4rXFx0ICogZXhlY3V0ZSBpdCBuYXRpdmVseS4gU2VlIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kuXFxuK1xcdCAqL1xcbitcXHRpZiAoa3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHZjcHUpKVxcbitcXHRcXHRjbnR4LVxcdTAwM2Voc3RhdHVzIHw9IEhTVEFUVVNfVlRXO1xcbiBcXHRjbnR4LVxcdTAwM2Voc3RhdHVzIHw9IEhTVEFUVVNfU1BWUDtcXG4gXFx0Y250eC1cXHUwMDNlaHN0YXR1cyB8PSBIU1RBVFVTX1NQVjtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxMjozNC43OTQ2NDEyMDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4MjM0MDU3ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGJvb3QgcGFyYW1ldGVyIHRvIGNvbnRyb2wgV0ZJIHRyYXAgcG9saWN5IGluIFJJU0MtViBLVk0gYW5kIG1vZGlmaWVzIHRoZSB2Q1BVIHJlc2V0IGxvZ2ljIHRvIGFwcGx5IHRoaXMgcG9saWN5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gS1ZNIHZDUFUgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDNhNDU5YjVlN2FlMjJlOWZiZjg1Nzc5ZGM2ZjA2OGYwMGNkYzFkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDA3OjEyOjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxuaW5kZXggOTcwMDdmNGY2OWQ0ZTguLjJkZTQ1ZjI0NzE4MzE5IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbisrKyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG5AQCAtMzI0OCw2ICszMjQ4LDIwIEBAIEtlcm5lbCBwYXJhbWV0ZXJzXG4gXG4gXHRcdFx0bm90cmFwOiBjbGVhciBXRkkgaW5zdHJ1Y3Rpb24gdHJhcFxuIFxuK1x0a3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeT1cbitcdFx0XHRbS1ZNLFJJU0NWXSBDb250cm9sIHdoZW4gdG8gc2V0IHRoZSBXRkkgaW5zdHJ1Y3Rpb25cbitcdFx0XHR0cmFwIGZvciBLVk0gVk1zLiBXaGVuIHNldCwgYSBWUy1tb2RlIFdGSSB0cmFwcyBpbnRvXG4rXHRcdFx0S1ZNIGFuZCBpcyBlbXVsYXRlZDsgd2hlbiBjbGVhciwgdGhlIGd1ZXN0IGV4ZWN1dGVzXG4rXHRcdFx0V0ZJIG5hdGl2ZWx5IGFuZCBibG9ja3MgdW50aWwgYSBWUy1tb2RlIGludGVycnVwdFxuK1x0XHRcdChlLmcuIHRoZSBzc3RjIHRpbWVyKSBpcyBwZW5kaW5nLlxuK1xuK1x0XHRcdHRyYXA6IHNldCBXRkkgaW5zdHJ1Y3Rpb24gdHJhcCAoSFNUQVRVUy5WVFc9MSlcbitcbitcdFx0XHRub3RyYXA6IGNsZWFyIFdGSSBpbnN0cnVjdGlvbiB0cmFwIChIU1RBVFVTLlZUVz0wKVxuK1xuK1x0XHRcdERlZmF1bHRzIHRvIHRyYXAsIHByZXNlcnZpbmcgdGhlIHByZXZpb3VzXG4rXHRcdFx0dW5jb25kaXRpb25hbCBiZWhhdmlvci5cbitcbiBcdGt2bV9jbWFfcmVzdl9yYXRpbz1uIFtQUEMsRUFSTFldXG4gXHRcdFx0UmVzZXJ2ZXMgZ2l2ZW4gcGVyY2VudGFnZSBmcm9tIHN5c3RlbSBtZW1vcnkgYXJlYSBmb3JcbiBcdFx0XHRjb250aWd1b3VzIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBLVk0gaGFzaCBwYWdldGFibGVcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmNcbmluZGV4IGNmNmUyMzFlNzZlMjU0Li4wOWFmYmIwMTRiNDdkMCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHUuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdS5jXG5AQCAtMTIsNiArMTIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tkZWJ1Zy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdm1hbGxvYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQvc2lnbmFsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG5AQCAtMjYsNiArMjcsNDIgQEBcbiBcbiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGt2bV92Y3B1ICosIGt2bV9mb3JtZXJfdmNwdSk7XG4gXG4rLypcbisgKiBXRkkgdHJhcCBwb2xpY3kgZm9yIFZTLW1vZGUgZ3Vlc3RzLCBjb250cm9sbGFibGUgdGhyb3VnaCB0aGVcbisgKiBrdm0tcmlzY3Yud2ZpX3RyYXBfcG9saWN5PSBrZXJuZWwgY29tbWFuZC1saW5lIG9wdGlvbi5cbisgKi9cbitlbnVtIGt2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3kge1xuK1x0S1ZNX1JJU0NWX1dGSV9UUkFQLFx0LyogRGVmYXVsdDogdHJhcCBWUy1tb2RlIFdGSSBpbnRvIEtWTSAqL1xuK1x0S1ZNX1JJU0NWX1dGSV9OT1RSQVAsXHQvKiBMZXQgVlMtbW9kZSBXRkkgZXhlY3V0ZSBuYXRpdmVseSAqL1xuK307XG4rXG4rc3RhdGljIGVudW0ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5IF9fcmVhZF9tb3N0bHkgPVxuK1x0S1ZNX1JJU0NWX1dGSV9UUkFQO1xuK1xuK3N0YXRpYyBpbnQgX19pbml0IGVhcmx5X2t2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3lfY2ZnKGNoYXIgKmFyZylcbit7XG4rXHRpZiAoIWFyZylcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRpZiAoc3RyY21wKGFyZywgXCJ0cmFwXCIpID09IDApIHtcbitcdFx0a3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSA9IEtWTV9SSVNDVl9XRklfVFJBUDtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4rXHRpZiAoc3RyY21wKGFyZywgXCJub3RyYXBcIikgPT0gMCkge1xuK1x0XHRrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5ID0gS1ZNX1JJU0NWX1dGSV9OT1RSQVA7XG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1xuK1x0cmV0dXJuIC1FSU5WQUw7XG4rfVxuK2Vhcmx5X3BhcmFtKFwia3ZtLXJpc2N2LndmaV90cmFwX3BvbGljeVwiLCBlYXJseV9rdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5X2NmZyk7XG4rXG4rc3RhdGljIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbit7XG4rXHRyZXR1cm4ga3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeSA9PSBLVk1fUklTQ1ZfV0ZJX1RSQVA7XG4rfVxuK1xuIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfZGVzYyBrdm1fdmNwdV9zdGF0c19kZXNjW10gPSB7XG4gXHRLVk1fR0VORVJJQ19WQ1BVX1NUQVRTKCksXG4gXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgZWNhbGxfZXhpdF9zdGF0KSxcbkBAIC03Myw3ICsxMTAsMTIgQEAgc3RhdGljIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHQvKiBTZXR1cCByZXNldCBzdGF0ZSBvZiBzaGFkb3cgU1NUQVRVUyBhbmQgSFNUQVRVUyBDU1JzICovXG4gXHRjbnR4LVx1MDAzZXNzdGF0dXMgPSBTUl9TUFAgfCBTUl9TUElFO1xuIFxuLVx0Y250eC1cdTAwM2Voc3RhdHVzIHw9IEhTVEFUVVNfVlRXO1xuK1x0LypcbitcdCAqIFRyYXAgVlMtbW9kZSBXRkkgaW50byBLVk0gdW5sZXNzIHRoZSBXRkkgdHJhcCBwb2xpY3kgbGV0cyB0aGUgZ3Vlc3RcbitcdCAqIGV4ZWN1dGUgaXQgbmF0aXZlbHkuIFNlZSBrdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5LlxuK1x0ICovXG4rXHRpZiAoa3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwKHZjcHUpKVxuK1x0XHRjbnR4LVx1MDAzZWhzdGF0dXMgfD0gSFNUQVRVU19WVFc7XG4gXHRjbnR4LVx1MDAzZWhzdGF0dXMgfD0gSFNUQVRVU19TUFZQO1xuIFx0Y250eC1cdTAwM2Voc3RhdHVzIHw9IEhTVEFUVVNfU1BWO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjEyOjM0Ljc5NDY0MjQxM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNzQzNjI5NDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBXRkkgVHJhcCBQb2xpY3kgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcga2VybmVsIGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIsIGBrdm0tcmlzY3Yud2ZpX3RyYXBfcG9saWN5YCwgc3BlY2lmaWNhbGx5IGZvciBSSVNDLVYgS1ZNLCB3aGljaCB3aWxsIGNvbnRyb2wgd2hldGhlciB0aGUgV0ZJIGluc3RydWN0aW9uIHRyYXBzIGludG8gS1ZNLiBUaGUgY2hhbmdlIGlzIGNlbnRlcmVkIHdpdGhpbiBgYXJjaC9yaXNjdi9rdm0vdmNwdS5jYC4gVGhlIHBhdGNoIGltcGxlbWVudHMgYSBuZXcgZW51bSBhbmQgYSBzdGF0aWMgdmFyaWFibGUsIGFuZCBhZGRzIGFuIGBlYXJseV9wYXJhbWAgZnVuY3Rpb24gYW5kIGEgaGVscGVyIGZ1bmN0aW9uLiBBbHNvLCBga3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldGAgaXMgYmVpbmcgbW9kaWZpZWQgdG8gc2V0IGBIU1RBVFVTX1ZUV2AgY29uZGl0aW9uYWxseS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyByZWFjaCBhbmQgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nLiBUaGlzIGlzIG9idmlvdXNseSB0YXJnZXRlZCBhdCB2aXJ0dWFsaXplZCBSSVNDLVYgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgS1ZNIG9uIFJJU0MtVi4gVGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCB0aGlzIGFmZmVjdHMgdGhlIGBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0YCBmdW5jdGlvbi5cblxuTm93LCBjb25zaWRlcmluZyBmdXp6aW5nLCBpdCdzIGEgc21hbGwgY2hhbmdlLiBUaGUgYm9vdCBwYXJhbWV0ZXIgcGFyc2luZywgYGVhcmx5X2t2bV9yaXNjdl93ZmlfdHJhcF9wb2xpY3lfY2ZnYCwgaXMgb25seSBleGVjdXRlZCBkdXJpbmcgYm9vdCBhbmQgaXMgZ2VuZXJhbGx5IG5vdCBmdXp6ZWQgYnkgc3l6a2FsbGVyLiBIb3dldmVyLCB0aGF0J3MgY2FsbGVkIGV2ZXJ5IGJvb3QgYW5kIGlmIHRoZXJlIGlzIGEgY3Jhc2ggdGhpcyB3aWxsIGJlIG1vcmUgYW5ub3lpbmcgdG8gZGVidWcuIFRoZSBjb25kaXRpb25hbCBjaGFuZ2Ugd2l0aGluIGBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0YCBzaW1wbHkgc2V0cyBhIGJpdCBpbiB0aGUgYGhzdGF0dXNgIHJlZ2lzdGVyIGJhc2VkIG9uIGEgZ2xvYmFsIHZhcmlhYmxlLiBJdCBkb2VzIHNldCB0aGUgYEhTVEFUVVNfVlRXYCB3aGljaCBjb3VsZCBoYXZlIHNpZGUgZWZmZWN0cy5cblxuU28sIGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IFRoZSBwYXRjaCBpcyBzbWFsbCwgYW5kIHRoZXJlJ3Mgbm8gY29tcGxleCBsb2dpYyBpbnZvbHZlZCBiZXlvbmQgYSBzaW1wbGUgZ2xvYmFsIHZhcmlhYmxlIGNoZWNrLiBUaGUgbWFpbiBmb2N1cyBzeW1ib2wgaWYgZnV6emluZyB3b3VsZCBvY2N1ciwgd291bGQgYmUgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLiBIb3dldmVyLCBpdCdzIHN0aWxsIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gS1ZNLCBzbyBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLlxuXG5UaGUgY29uZmlndXJhdGlvbiB0YXJnZXQgaXMgYEtWTWAgKG9uIFJJU0MtVikgYW5kIEkgc2hvdWxkIGV4YW1pbmUgYGFyY2gvcmlzY3Yva3ZtL3ZjcHUuY2AgbW9yZSBjbG9zZWx5IHRvIGJlIGNlcnRhaW4gdGhhdCBJIGFtIGNvbmZpZGVudCBpbiB0aGlzIGNvbmNsdXNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNzoxMzoyOC41MzgyNzQ1MjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ5MTAyODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz04ND1jb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2hlYWRlciBrdm1fdmNwdV9zdGF0c19oZWFkZXIgPSB7XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtOTItXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjkzOnN0YXRpYyB2b2lkIGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy05NC1cXHRcXHRcXHRcXHRcXHQgYm9vbCBrdm1fc2JpX3Jlc2V0KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTEyMz1zdGF0aWMgdm9pZCBrdm1fcmlzY3ZfcmVzZXRfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wga3ZtX3NiaV9yZXNldClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xMzgtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjEzOTpcXHRrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0KHZjcHUsIGt2bV9zYmlfcmVzZXQpO1xcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNDAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjEzOjI5LjA4NzM4MjE3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwMDk2NjUyOTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wbGljYXRpb25zIG9mIFRoaXMgU21hbGwgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgbG9va3MgcHJldHR5IG1pbm9yLCBiYXNpY2FsbHkganVzdCB0d2Vha2luZyBhIGJvb3QgcGFyYW1ldGVyLiBUaGF0IHBhcmFtZXRlciBnZXRzIHBpY2tlZCB1cCBieSBgZWFybHlfa3ZtX3Jpc2N2X3dmaV90cmFwX3BvbGljeV9jZmdgLiAgVGhlIG90aGVyIG1vZGlmaWNhdGlvbiBpcyBqdXN0IHRoaXMgZ2V0dGVyIGZ1bmN0aW9uLCBga3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwYCwgYW5kIGl0cyB1c2UgaW4gYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLiBUaGUgbWFpbiB0aGluZyBpcyB0aGF0IGl0IGhpbmdlcyBvbiB0aGlzIGJvb3QgcGFyYW1ldGVyLlxuXG5TaW5jZSBzeXprYWxsZXIgZG9lc24ndCB0eXBpY2FsbHkgbWVzcyB3aXRoIGJvb3QgcGFyYW1ldGVycyBvbiBpdHMgb3duLCBpdCB3b3VsZCwgYnkgZGVmYXVsdCwganVzdCB1c2UgdGhlIGRlZmF1bHQgdmFsdWUg4oCTIHdoaWNoIGlzIGBLVk1fUklTQ1ZfV0ZJX1RSQVBgLiAgU28sIGluaXRpYWxseSwgbXkgdGhvdWdodCB3YXMsIFwiV2VsbCwgaWYgaXQncyB0aGUgc2FtZSBiZWhhdmlvciB1bmxlc3MgeW91IHVzZSB0aGUgYm9vdCBwYXJhbWV0ZXIsIGFuZCBzeXprYWxsZXIgaXNuJ3QgdXNpbmcgaXQsIGlzIGl0IGV2ZW4gd29ydGggYm90aGVyaW5nIHdpdGggZnV6emluZyB0aGlzPyBUaGUgYW5zd2VyIHRvIHRoYXQgcXVlc3Rpb24gaXMgJ3llcycuXG5cbldhaXQgYSBzZWNvbmQsIHN5emthbGxlciAqY2FuKiBiZSBjb25maWd1cmVkIHRvIHBhc3MgYm9vdCBwYXJhbWV0ZXJzISBJdCBqdXN0IHdvbid0IGJ5IGRlZmF1bHQuIEFuZCBldmVuIGlmIGl0IGRvZXMsIGFsbCB0aGlzIGNoYW5nZSByZWFsbHkgZG9lcyBpcyBzZXQgYSBiaXQgaW4gYSByZWdpc3Rlci4gU3RpbGwsIGl0J3Mgd29ydGggZnV6emluZy4gSSdsbCBmbGFnIGl0IGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkZvciB0aGUgZm9jdXMgc3ltYm9scywgSSdsbCBsaXN0IGBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0YC4gSSBzaG91bGQgYWxzbyB1c2UgYEVuYWJsZUNvbmZpZ3M9W1wiS1ZNXCJdYC4gQnV0LCBJIHNob3VsZCBjb25maXJtIHNvbWV0aGluZy4uLmlzIEtWTSBvbiBSSVNDLVYgZXZlbiBzdXBwb3J0ZWQgYnkgc3l6a2FsbGVyPyBTeXprYWxsZXIgZGVmaW5pdGVseSBzdXBwb3J0cyBSSVNDLVYsIGJ1dCBLVk0gb24gUklTQy1WIG1pZ2h0IGJlIGEgYml0IG9mIGEgbmljaGUgc2V0dXAuIEl0J3MgYSB2YWxpZCBrZXJuZWwgc3Vic3lzdGVtLCB0aG91Z2gsIHNvIGl0J3Mgd29ydGggaW52ZXN0aWdhdGluZy4gTGV0IG1lIGNoZWNrIHRoZSBLY29uZmlnIGZvciBSSVNDLVYgS1ZNLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjQ2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjEzOjQ5LjE4NDAzNjkyM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTgzNzA0MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDc6MTM6NDkuMzAyNDEyNjEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM1NDE5OTQ0MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgUklTQy1WIEtWTSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgYEtWTWAuIE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhpcyBpcyBmdXp6LXdvcnRoeSwgYnV0IGxldCdzIGJyZWFrIGl0IGRvd24gcHJvcGVybHkuIFRoaXMgcGF0Y2ggYWRkcyBhIGJvb3QgcGFyYW1ldGVyIGFuZCB0d2Vha3MgYSBzaW5nbGUgYml0IGluIGEgcmVnaXN0ZXIgd2hlbiBhIHZDUFUgcmVzZXRzLCBiYXNlZCBvbiB0aGF0IHBhcmFtZXRlci4gSXQncyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIEtWTSdzIGJlaGF2aW9yLiBUaGF0IGZ1bmN0aW9uYWwgY2hhbmdlIHNjcmVhbXMgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIGtleSBmdW5jdGlvbiB0byB0YXJnZXQgaXMgYGt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRgLCBzbyB0aGF0IGdvZXMgaW4gYXMgdGhlIGBGb2N1c1N5bWJvbGAuIEFuZCwgb2J2aW91c2x5LCBgRW5hYmxlQ29uZmlnczogS1ZNYC5cblxuSG9sZCBvbiwgdGhvdWdoLiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmljYWxseSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gQnV0IHRoYXQncyBub3QgdGhlIGNhc2UgaGVyZS4gS1ZNIG9uIFJJU0MtViAqY2FuKiBiZSB0ZXN0ZWQgaW4gUUVNVSDigJMgd2UgY2FuIHVzZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gb3IgaWYgdGhlIGhvc3QgaXMgYWxzbyBSSVNDLVYsIG5hdGl2ZSBLVk0gaXMgc3VwcG9ydGVkLiBTeXprYWxsZXIgaXMgYWxyZWFkeSBzZXQgdXAgdG8gcnVuIFJJU0MtViBWTXMgaW4gUUVNVSAodXN1YWxseSB3aXRoIFRDRywgYnV0IHBvdGVudGlhbGx5IEtWTSBpZiB0aGUgaG9zdCBzdXBwb3J0cyBpdCkuIFNvLCB0aGUgY2hhbmdlZCBmdW5jdGlvbmFsaXR5IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLlxuXG5MZXQncyBkbyBhIHF1aWNrIGF1ZGl0IGZvciBhbnkgb3RoZXIgY2hhbmdlcy4gQXNpZGUgZnJvbSBga3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldGAsIEkgc2VlIGBlYXJseV9rdm1fcmlzY3Zfd2ZpX3RyYXBfcG9saWN5X2NmZ2AsIHdoaWNoIGlzIGBfX2luaXRgIGFuZCBvbmx5IGNhbGxlZCBkdXJpbmcgYm9vdC4gVGhlbiwgdGhlcmUncyBga3ZtX3Jpc2N2X3ZjcHVfd2ZpX3Nob3VsZF90cmFwYCwgd2hpY2ggbG9va3MgbGlrZSBhbiBpbmxpbmUgZnVuY3Rpb24uIFRob3NlIGFyZSBib3RoIGZpbmU7IGBrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0YCBpcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLlxuXG5BbHJpZ2h0LCBJJ20gY29uZmlkZW50LiAqKmBXb3J0aEZ1enppbmc9dHJ1ZWAqKi4gVGhlIGBGb2N1c1N5bWJvbGAgaXMgZGVmaW5pdGVseSBga3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldGAuIEFuZCB0aGUgb25seSBuZWVkZWQgYEVuYWJsZUNvbmZpZ3NgIGlzIGBLVk1gLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoJ3MgaW50cm9kdWNpbmcgYSBuZXcgYm9vdCBwYXJhbWV0ZXIgdG8gY29udHJvbCB0aGUgV0ZJIHRyYXAgcG9saWN5IGluIFJJU0MtViBLVk0uIEl0IHRoZW4gbW9kaWZpZXMgdkNQVSByZXNldCBsb2dpYyB0byBhcHBseSB0aGF0IHBvbGljeS4gVGhpcyBpcywgYXQgaXRzIGhlYXJ0LCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGhvdyBLVk0gaW5pdGlhbGl6ZXMgaXRzIHZDUFVzLCB3aGljaCBtYWtlcyBpdCBhIHByaW1lIGZ1enppbmcgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDk3LCJPdXRwdXRUb2tlbnMiOjkzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA3OjE0OjEyLjg0NDQwOTM2NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0MjgyNjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9jb250ZXh0X3Jlc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBib290IHBhcmFtZXRlciB0byBjb250cm9sIFdGSSB0cmFwIHBvbGljeSBpbiBSSVNDLVYgS1ZNIGFuZCBtb2RpZmllcyB0aGUgdkNQVSByZXNldCBsb2dpYyB0byBhcHBseSB0aGlzIHBvbGljeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIEtWTSB2Q1BVIGluaXRpYWxpemF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X2NvbnRleHRfcmVzZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGJvb3QgcGFyYW1ldGVyIHRvIGNvbnRyb2wgV0ZJIHRyYXAgcG9saWN5IGluIFJJU0MtViBLVk0gYW5kIG1vZGlmaWVzIHRoZSB2Q1BVIHJlc2V0IGxvZ2ljIHRvIGFwcGx5IHRoaXMgcG9saWN5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gS1ZNIHZDUFUgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrn7t[1] Phase: Succeeded StartedAt: 2026-07-10 07:14:24 +0000 UTC FinishedAt: 2026-07-10 07:14:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-10 07:14:24 +0000 UTC FinishedAt: 2026-07-10 07:14:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[2] Phase: Succeeded StartedAt: 2026-07-10 07:14:24 +0000 UTC FinishedAt: 2026-07-10 08:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-10 07:14:24 +0000 UTC FinishedAt: 2026-07-10 08:31:43 +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_riscv_vcpu_context_reset"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:14:24 +0000 UTC FinishedAt: 2026-07-10 07:14:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:14:24 +0000 UTC FinishedAt: 2026-07-10 07:14:32 +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-workflowsrn7t/series-workflowsrn7t-convert-artifact-919281254/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:14:34 +0000 UTC FinishedAt: 2026-07-10 07:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:14:34 +0000 UTC FinishedAt: 2026-07-10 07:52:30 +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:*43b8ff96-5462-4806-9236-d3385b72cff9,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-workflowsrn7t/series-workflowsrn7t-convert-artifact-919281254/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": "5a805f5d-4e3f-4ef8-b84a-b349cc63a4d2", "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-workflowsrn7t/series-workflowsrn7t-build-action-248233468/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:14:34 +0000 UTC FinishedAt: 2026-07-10 07:52:20 +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:*43b8ff96-5462-4806-9236-d3385b72cff9,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-workflowsrn7t/series-workflowsrn7t-convert-artifact-919281254/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": "5a805f5d-4e3f-4ef8-b84a-b349cc63a4d2", "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-workflowsrn7t/series-workflowsrn7t-build-action-248233468/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:52:30 +0000 UTC FinishedAt: 2026-07-10 07:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:52:30 +0000 UTC FinishedAt: 2026-07-10 07:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:52:30 +0000 UTC FinishedAt: 2026-07-10 07:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:52:30 +0000 UTC FinishedAt: 2026-07-10 07:52:35 +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":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-workflowsrn7t/series-workflowsrn7t-convert-artifact-39277241/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:52:40 +0000 UTC FinishedAt: 2026-07-10 07:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:52:40 +0000 UTC FinishedAt: 2026-07-10 07:54:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5a805f5d-4e3f-4ef8-b84a-b349cc63a4d2,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-workflowsrn7t/series-workflowsrn7t-build-action-248233468/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-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:54:51 +0000 UTC FinishedAt: 2026-07-10 07:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:54:51 +0000 UTC FinishedAt: 2026-07-10 07:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:54:51 +0000 UTC FinishedAt: 2026-07-10 08:27:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:54:51 +0000 UTC FinishedAt: 2026-07-10 08:27:05 +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:*43b8ff96-5462-4806-9236-d3385b72cff9,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-workflowsrn7t/series-workflowsrn7t-convert-artifact-39277241/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": "98da163c-d74a-4c25-89f5-da5c86b6b7cb", "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-workflowsrn7t/series-workflowsrn7t-build-action-3339922325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 07:54:51 +0000 UTC FinishedAt: 2026-07-10 08:26:55 +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:*43b8ff96-5462-4806-9236-d3385b72cff9,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-workflowsrn7t/series-workflowsrn7t-convert-artifact-39277241/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": "98da163c-d74a-4c25-89f5-da5c86b6b7cb", "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-workflowsrn7t/series-workflowsrn7t-build-action-3339922325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:27:05 +0000 UTC FinishedAt: 2026-07-10 08:27:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:27:05 +0000 UTC FinishedAt: 2026-07-10 08:27:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:27:05 +0000 UTC FinishedAt: 2026-07-10 08:29:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:27:05 +0000 UTC FinishedAt: 2026-07-10 08:29:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*98da163c-d74a-4c25-89f5-da5c86b6b7cb,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-workflowsrn7t/series-workflowsrn7t-build-action-3339922325/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-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:29:17 +0000 UTC FinishedAt: 2026-07-10 08:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:29:17 +0000 UTC FinishedAt: 2026-07-10 08:31:43 +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_riscv_vcpu_context_reset"],"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:*5a805f5d-4e3f-4ef8-b84a-b349cc63a4d2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*98da163c-d74a-4c25-89f5-da5c86b6b7cb,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-workflowsrn7t/series-workflowsrn7t-build-action-248233468/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-workflowsrn7t/series-workflowsrn7t-build-action-3339922325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:29:17 +0000 UTC FinishedAt: 2026-07-10 08:30:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:29:17 +0000 UTC FinishedAt: 2026-07-10 08:30:30 +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_riscv_vcpu_context_reset"],"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-workflowsrn7t/series-workflowsrn7t-convert-artifact-1413135406/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:29:17 +0000 UTC FinishedAt: 2026-07-10 08:29:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:29:17 +0000 UTC FinishedAt: 2026-07-10 08:29:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:29:17 +0000 UTC FinishedAt: 2026-07-10 08:29:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:30:36 +0000 UTC FinishedAt: 2026-07-10 08:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrn7t[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_riscv_vcpu_context_reset"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"db61c8e7-1c09-4b1d-bd36-d6e4986ed41a","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-10 08:30:36 +0000 UTC FinishedAt: 2026-07-10 08:31:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5a805f5d-4e3f-4ef8-b84a-b349cc63a4d2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*98da163c-d74a-4c25-89f5-da5c86b6b7cb,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-workflowsrn7t/series-workflowsrn7t-build-action-248233468/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-workflowsrn7t/series-workflowsrn7t-build-action-3339922325/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-workflowsrn7t/series-workflowsrn7t-convert-artifact-1413135406/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,}