Name: series-workflowpg28z Phase: Succeeded StartedAt: 2026-07-14 00:16:07 +0000 UTC FinishedAt: 2026-07-14 05:12:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[0] Phase: Succeeded StartedAt: 2026-07-14 00:16:07 +0000 UTC FinishedAt: 2026-07-14 00:44:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 00:16:07 +0000 UTC FinishedAt: 2026-07-14 00:44:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "3d1f6d49-3376-440e-858d-97c17d425261" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_ioctl_set_sregs", "kvm_vcpu_ioctl_x86_set_sregs2", "kvm_run_sync_regs_from_user", "kvm_valid_efer" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzJiMzNDssCiAgICAmIzM0O2t2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyJiMzNDssCiAgICAmIzM0O2t2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlciYjMzQ7LAogICAgJiMzNDtrdm1fdmFsaWRfZWZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0mIzM5O3Mgc3JlZ3MgdmFsaWRhdGlvbiBsb2dpYyB0byBhbHNvIGNoZWNrIHRoZSBFRkVSIHJlZ2lzdGVyIHVzaW5nIGt2bV92YWxpZF9lZmVyKCkuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYWZmZWN0cyBLVk0gaW9jdGxzIChLVk1fU0VUX1NSRUdTLCBLVk1fU0VUX1NSRUdTMiwgS1ZNX1JVTikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwZGEwZTIyNWUzNDY2YWVkNDI2ZTBmNTVkYjU3NjA1MmRiZDQwOWFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDA6NDM6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3JlZ3MuYyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcbmluZGV4IGJkODE0Nzc5OGNjM2VlLi44ZjY2NDM4OTg5ZTQ3NCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9yZWdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcbkBAIC01NjQsNyAmIzQzOzU2NCw4IEBAIHN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuIFx0fVxuIFxuIFx0cmV0dXJuIGt2bV9pc192YWxpZF9jcjQodmNwdSwgc3JlZ3MtXHUwMDNlY3I0KSBcdTAwMjZcdTAwMjZcbi1cdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVx1MDAzZWNyMCk7XG4mIzQzO1x0ICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtXHUwMDNlY3IwKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtXHUwMDNlZWZlcik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgX19zZXRfc3JlZ3NfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5pbmRleCA3ZDNhMjdiYzBkODQyYS4uYjE2MTE3NGVjZTQ1MzEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuQEAgLTIwOCw2ICYjNDM7MjA4LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUge1xuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZDVFJfTkJcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI0KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZDVFJfTExDXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyOClcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9OWFx0XHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyMClcbiYjNDM7I2RlZmluZVx0WDg2X0ZFQVRVUkVfRlhTUl9PUFRcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI1KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0dCUEFHRVNcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI2KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1JEVFNDUFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjcpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfTE1cdFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjkpXG5AQCAtMjI2LDYgJiM0MzsyMjcsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZcdFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMSlcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9FU1x0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMylcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9TTlBcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDQpXG4mIzQzOyNkZWZpbmVcdFg4Nl9GRUFUVVJFX0FVVE9JQlJTXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCA4KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0dQX09OX1VTRVJfQ1BVSURcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCAxNylcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9QRVJGTU9OX1YyXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMiwgMCwgRUFYLCAwKVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0xCUl9QTUNfRlJFRVpFXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcbmluZGV4IDhlNjU0Y2M5YWIxNjg3Li41NjJhZmFiMzc4ZDExZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jXG5AQCAtMjEsMjAgJiM0MzsyMSwyMCBAQFxuICNpbmNsdWRlIFwmIzM0O2t2bV91dGlsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtwcm9jZXNzb3IuaFwmIzM0O1xuIFxuLSNkZWZpbmUgVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjciwgb3JpZywgYml0KVx0XHRcdFx0XFxcbiYjNDM7I2RlZmluZSBURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgcmVnLCBvcmlnLCBiaXQpXHRcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3Qga3ZtX3NyZWdzIG5ldztcdFx0XHRcdFx0XHRcdFxcXG4gXHRpbnQgcmM7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHQvKiBTa2lwIHRoZSBzdWItdGVzdCwgdGhlIGZlYXR1cmUvYml0IGlzIHN1cHBvcnRlZC4gKi9cdFx0XHRcXFxuLVx0aWYgKG9yaWcuY3IgXHUwMDI2IGJpdClcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgKG9yaWcucmVnIFx1MDAyNiBiaXQpXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRicmVhaztcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRtZW1jcHkoXHUwMDI2bmV3LCBcdTAwMjZvcmlnLCBzaXplb2Yoc3JlZ3MpKTtcdFx0XHRcdFx0XFxcbi1cdG5ldy5jciB8PSBiaXQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0bWVtY3B5KFx1MDAyNm5ldywgXHUwMDI2b3JpZywgc2l6ZW9mKG5ldykpO1x0XHRcdFx0XHRcXFxuJiM0MztcdG5ldy5yZWcgfD0gYml0O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsIFx1MDAyNm5ldyk7XHRcdFx0XHRcdFxcXG4tXHRURVNUX0FTU0VSVChyYywgXCYjMzQ7S1ZNIGFsbG93ZWQgaW52YWxpZCBcJiMzNDsgI2NyIFwmIzM0OyBiaXQgKDB4JWx4KVwmIzM0OywgYml0KTtcdFxcXG4mIzQzO1x0VEVTVF9BU1NFUlQocmMsIFwmIzM0O0tWTSBhbGxvd2VkIGludmFsaWQgXCYjMzQ7ICNyZWcgXCYjMzQ7IGJpdCAoMHglbGx4KVwmIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZyliaXQpOyBcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdC8qIFNhbml0eSBjaGVjayB0aGF0IEtWTSBkaWRuJiMzOTt0IGNoYW5nZSBhbnl0aGluZy4gKi9cdFx0XHRcXFxuIFx0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2bmV3KTtcdFx0XHRcdFx0XHRcXFxuQEAgLTQ2LDYgJiM0Mzs0Niw4IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRYODZfQ1I0X01DRSB8IFg4Nl9DUjRfUEdFIHwgWDg2X0NSNF9QQ0UgfFx0XFxcbiBcdFx0XHRcdFg4Nl9DUjRfT1NGWFNSIHwgWDg2X0NSNF9PU1hNTUVYQ1BUKVxuIFxuJiM0MzsjZGVmaW5lIEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSIEVGRVJfU0NFXG4mIzQzO1xuIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKVxuIHtcbiBcdHU2NCBjcjQgPSBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0O1xuQEAgLTc0LDYgJiM0Mzs3NiwyNCBAQCBzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHModm9pZClcbiBcdHJldHVybiBjcjQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHR1NjQgZWZlciA9IEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSO1xuJiM0MztcbiYjNDM7XHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTE0pKVxuJiM0MztcdFx0ZWZlciB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XG4mIzQzO1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX05YKSlcbiYjNDM7XHRcdGVmZXIgfD0gRUZFUl9OWDtcbiYjNDM7XHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSlcbiYjNDM7XHRcdGVmZXIgfD0gRUZFUl9TVk1FO1xuJiM0MztcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpXG4mIzQzO1x0XHRlZmVyIHw9IEVGRVJfRkZYU1I7XG4mIzQzO1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcbiYjNDM7XHRcdGVmZXIgfD0gRUZFUl9BVVRPSUJSUztcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVmZXI7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgdGVzdF9jcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGNyNClcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzO1xuQEAgLTk2LDI2ICYjNDM7MTE2LDQ1IEBAIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpXG4gXHRcdCAgICAoc3JlZ3MuY3I0IFx1MDAyNiBYODZfQ1I0X1BLRSkgPyBcJiMzNDtzZXRcJiMzNDsgOiBcJiMzNDtjbGVhclwmIzM0Oyk7XG4gXG4gXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcdTAwMjZzcmVncyk7XG4tXHRURVNUX0FTU0VSVChzcmVncy5jcjQgPT0gY3I0LCBcJiMzNDtzcmVncy5DUjQgKDB4JWxseCkgIT0gQ1I0ICgweCVseClcJiMzNDssXG4tXHRcdCAgICBzcmVncy5jcjQsIGNyNCk7XG4tXG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpO1xuJiM0MztcdFRFU1RfQVNTRVJUX0VRKHNyZWdzLmNyNCwgY3I0KTtcbiYjNDM7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpO1xuIFxuIFx0Zm9yIChpID0gMzI7IGkgXHUwMDNjIDY0OyBpJiM0MzsmIzQzOylcbi1cdFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBCSVQoaSkpO1xuJiM0MztcdFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIEJJVChpKSk7XG4gXG4gXHQvKiBOVyB3aXRob3V0IENEIGlzIGlsbGVnYWwsIGFzIGlzIFBHIHdpdGhvdXQgUEUuICovXG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfUEcpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2VmZXJfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGt2bV9zcmVncyBzcmVncztcbiYjNDM7XHRpbnQgcmM7XG4mIzQzO1xuJiM0MztcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnNyZWdzKTtcbiYjNDM7XHRzcmVncy5lZmVyIHw9IGVmZXI7XG4mIzQzO1x0cmMgPSBfdmNwdV9zcmVnc19zZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuJiM0MztcdFRFU1RfQVNTRVJUKCFyYywgXCYjMzQ7RmFpbGVkIHRvIHNldCBzdXBwb3J0ZWQgRUZFUiBiaXRzICgweCVsbHgpXCYjMzQ7LCBzcmVncy5lZmVyKTtcbiYjNDM7XG4mIzQzO1x0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuJiM0MztcdFRFU1RfQVNTRVJUX0VRKHNyZWdzLmVmZXIsIGVmZXIpO1xuJiM0MztcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTE1FKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTlgpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9TVk1FKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfRkZYU1IpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9BVVRPSUJSUyk7XG4gfVxuIFxuIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG5AQCAtMTMyLDYgJiM0MzsxNzEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0ICovXG4gXHR2bSA9IHZtX2NyZWF0ZV9iYXJlYm9uZXMoKTtcbiBcdHZjcHUgPSBfX3ZtX3ZjcHVfYWRkKHZtLCAwKTtcbiYjNDM7XHR0ZXN0X2VmZXJfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUik7XG4gXHR0ZXN0X2NyX2JpdHModmNwdSwgS1ZNX0FMV0FZU19BTExPV0VEX0NSNCk7XG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gXG5AQCAtMTUxLDYgJiM0MzsxOTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHQgICAgc3JlZ3MuYXBpY19iYXNlKTtcbiBcbiBcdHRlc3RfY3JfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKCkpO1xuJiM0MztcdHRlc3RfZWZlcl9iaXRzKHZjcHUsIGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKCkpO1xuIFxuIFx0a3ZtX3ZtX2ZyZWUodm0pO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzJiMzNDssCiAgICAmIzM0O2t2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyJiMzNDssCiAgICAmIzM0O2t2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlciYjMzQ7LAogICAgJiMzNDtrdm1fdmFsaWRfZWZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0mIzM5O3Mgc3JlZ3MgdmFsaWRhdGlvbiBsb2dpYyB0byBhbHNvIGNoZWNrIHRoZSBFRkVSIHJlZ2lzdGVyIHVzaW5nIGt2bV92YWxpZF9lZmVyKCkuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYWZmZWN0cyBLVk0gaW9jdGxzIChLVk1fU0VUX1NSRUdTLCBLVk1fU0VUX1NSRUdTMiwgS1ZNX1JVTikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBkYTBlMjI1ZTM0NjZhZWQ0MjZlMGY1NWRiNTc2MDUyZGJkNDA5YWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAxNCAwMDo0Mzo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9yZWdzLmMgYi9hcmNoL3g4Ni9rdm0vcmVncy5jCmluZGV4IGJkODE0Nzc5OGNjM2VlLi44ZjY2NDM4OTg5ZTQ3NCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3JlZ3MuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vcmVncy5jCkBAIC01NjQsNyAmIzQzOzU2NCw4IEBAIHN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKQogCX0KIAogCXJldHVybiBrdm1faXNfdmFsaWRfY3I0KHZjcHUsIHNyZWdzLSZndDtjcjQpICZhbXA7JmFtcDsKLQkgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy0mZ3Q7Y3IwKTsKJiM0MzsJICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtJmd0O2NyMCkgJmFtcDsmYW1wOwomIzQzOwkgICAgICAga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtJmd0O2VmZXIpOwogfQogCiBzdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCmluZGV4IDdkM2EyN2JjMGQ4NDJhLi5iMTYxMTc0ZWNlNDUzMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaApAQCAtMjA4LDYgJiM0MzsyMDgsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7CiAjZGVmaW5lCVg4Nl9GRUFUVVJFX1BFUkZDVFJfTkIJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyNCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfUEVSRkNUUl9MTEMJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyOCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfTlgJCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjApCiYjNDM7I2RlZmluZQlYODZfRkVBVFVSRV9GWFNSX09QVAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI1KQogI2RlZmluZQlYODZfRkVBVFVSRV9HQlBBR0VTCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjYpCiAjZGVmaW5lCVg4Nl9GRUFUVVJFX1JEVFNDUAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI3KQogI2RlZmluZQlYODZfRkVBVFVSRV9MTQkJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyOSkKQEAgLTIyNiw2ICYjNDM7MjI3LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUgewogI2RlZmluZSBYODZfRkVBVFVSRV9TRVYJCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMSkKICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX0VTCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMykKICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX1NOUAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDQpCiYjNDM7I2RlZmluZQlYODZfRkVBVFVSRV9BVVRPSUJSUwkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDgpCiAjZGVmaW5lCVg4Nl9GRUFUVVJFX0dQX09OX1VTRVJfQ1BVSUQJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDE3KQogI2RlZmluZQlYODZfRkVBVFVSRV9QRVJGTU9OX1YyCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfTEJSX1BNQ19GUkVFWkUJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIyLCAwLCBFQVgsIDIpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMKaW5kZXggOGU2NTRjYzlhYjE2ODcuLjU2MmFmYWIzNzhkMTFlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jCkBAIC0yMSwyMCAmIzQzOzIxLDIwIEBACiAjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtwcm9jZXNzb3IuaCYjMzQ7CiAKLSNkZWZpbmUgVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjciwgb3JpZywgYml0KQkJCQlcCiYjNDM7I2RlZmluZSBURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgcmVnLCBvcmlnLCBiaXQpCQkJCVwKIGRvIHsJCQkJCQkJCQkJXAogCXN0cnVjdCBrdm1fc3JlZ3MgbmV3OwkJCQkJCQlcCiAJaW50IHJjOwkJCQkJCQkJCVwKIAkJCQkJCQkJCQlcCiAJLyogU2tpcCB0aGUgc3ViLXRlc3QsIHRoZSBmZWF0dXJlL2JpdCBpcyBzdXBwb3J0ZWQuICovCQkJXAotCWlmIChvcmlnLmNyICZhbXA7IGJpdCkJCQkJCQkJXAomIzQzOwlpZiAob3JpZy5yZWcgJmFtcDsgYml0KQkJCQkJCQlcCiAJCWJyZWFrOwkJCQkJCQkJXAogCQkJCQkJCQkJCVwKLQltZW1jcHkoJmFtcDtuZXcsICZhbXA7b3JpZywgc2l6ZW9mKHNyZWdzKSk7CQkJCQlcCi0JbmV3LmNyIHw9IGJpdDsJCQkJCQkJCVwKJiM0MzsJbWVtY3B5KCZhbXA7bmV3LCAmYW1wO29yaWcsIHNpemVvZihuZXcpKTsJCQkJCVwKJiM0MzsJbmV3LnJlZyB8PSBiaXQ7CQkJCQkJCQlcCiAJCQkJCQkJCQkJXAogCXJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsICZhbXA7bmV3KTsJCQkJCVwKLQlURVNUX0FTU0VSVChyYywgJiMzNDtLVk0gYWxsb3dlZCBpbnZhbGlkICYjMzQ7ICNjciAmIzM0OyBiaXQgKDB4JWx4KSYjMzQ7LCBiaXQpOwlcCiYjNDM7CVRFU1RfQVNTRVJUKHJjLCAmIzM0O0tWTSBhbGxvd2VkIGludmFsaWQgJiMzNDsgI3JlZyAmIzM0OyBiaXQgKDB4JWxseCkmIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZyliaXQpOyBcCiAJCQkJCQkJCQkJXAogCS8qIFNhbml0eSBjaGVjayB0aGF0IEtWTSBkaWRuJiMzOTt0IGNoYW5nZSBhbnl0aGluZy4gKi8JCQlcCiAJdmNwdV9zcmVnc19nZXQodmNwdSwgJmFtcDtuZXcpOwkJCQkJCVwKQEAgLTQ2LDYgJiM0Mzs0Niw4IEBAIGRvIHsJCQkJCQkJCQkJXAogCQkJCVg4Nl9DUjRfTUNFIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8CVwKIAkJCQlYODZfQ1I0X09TRlhTUiB8IFg4Nl9DUjRfT1NYTU1FWENQVCkKIAomIzQzOyNkZWZpbmUgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIgRUZFUl9TQ0UKJiM0MzsKIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKQogewogCXU2NCBjcjQgPSBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0OwpAQCAtNzQsNiAmIzQzOzc2LDI0IEBAIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKQogCXJldHVybiBjcjQ7CiB9CiAKJiM0MztzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKHZvaWQpCiYjNDM7ewomIzQzOwl1NjQgZWZlciA9IEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSOwomIzQzOwomIzQzOwlpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTE0pKQomIzQzOwkJZWZlciB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9OWCkpCiYjNDM7CQllZmVyIHw9IEVGRVJfTlg7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKQomIzQzOwkJZWZlciB8PSBFRkVSX1NWTUU7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpCiYjNDM7CQllZmVyIHw9IEVGRVJfRkZYU1I7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpCiYjNDM7CQllZmVyIHw9IEVGRVJfQVVUT0lCUlM7CiYjNDM7CiYjNDM7CXJldHVybiBlZmVyOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpCiB7CiAJc3RydWN0IGt2bV9zcmVncyBzcmVnczsKQEAgLTk2LDI2ICYjNDM7MTE2LDQ1IEBAIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpCiAJCSAgICAoc3JlZ3MuY3I0ICZhbXA7IFg4Nl9DUjRfUEtFKSA/ICYjMzQ7c2V0JiMzNDsgOiAmIzM0O2NsZWFyJiMzNDspOwogCiAJdmNwdV9zcmVnc19nZXQodmNwdSwgJmFtcDtzcmVncyk7Ci0JVEVTVF9BU1NFUlQoc3JlZ3MuY3I0ID09IGNyNCwgJiMzNDtzcmVncy5DUjQgKDB4JWxseCkgIT0gQ1I0ICgweCVseCkmIzM0OywKLQkJICAgIHNyZWdzLmNyNCwgY3I0KTsKLQotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1ZNWEUpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QQ0lERSk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01BUCk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7CiYjNDM7CVRFU1RfQVNTRVJUX0VRKHNyZWdzLmNyNCwgY3I0KTsKJiM0MzsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0xBNTcpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9WTVhFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0ZTR1NCQVNFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUENJREUpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01FUCk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNQVApOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpOwogCiAJZm9yIChpID0gMzI7IGkgJmx0OyA2NDsgaSYjNDM7JiM0MzspCi0JCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTsKJiM0MzsJCVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBCSVQoaSkpOwogCiAJLyogTlcgd2l0aG91dCBDRCBpcyBpbGxlZ2FsLCBhcyBpcyBQRyB3aXRob3V0IFBFLiAqLwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9QRyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfZWZlcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzOwomIzQzOwlpbnQgcmM7CiYjNDM7CiYjNDM7CXZjcHVfc3JlZ3NfZ2V0KHZjcHUsICZhbXA7c3JlZ3MpOwomIzQzOwlzcmVncy5lZmVyIHw9IGVmZXI7CiYjNDM7CXJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsICZhbXA7c3JlZ3MpOwomIzQzOwlURVNUX0FTU0VSVCghcmMsICYjMzQ7RmFpbGVkIHRvIHNldCBzdXBwb3J0ZWQgRUZFUiBiaXRzICgweCVsbHgpJiMzNDssIHNyZWdzLmVmZXIpOwomIzQzOwomIzQzOwl2Y3B1X3NyZWdzX2dldCh2Y3B1LCAmYW1wO3NyZWdzKTsKJiM0MzsJVEVTVF9BU1NFUlRfRVEoc3JlZ3MuZWZlciwgZWZlcik7CiYjNDM7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9MTUUpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTlgpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfU1ZNRSk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9GRlhTUik7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9BVVRPSUJSUyk7CiB9CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCkBAIC0xMzIsNiAmIzQzOzE3MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJdm0gPSB2bV9jcmVhdGVfYmFyZWJvbmVzKCk7CiAJdmNwdSA9IF9fdm1fdmNwdV9hZGQodm0sIDApOwomIzQzOwl0ZXN0X2VmZXJfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUik7CiAJdGVzdF9jcl9iaXRzKHZjcHUsIEtWTV9BTFdBWVNfQUxMT1dFRF9DUjQpOwogCWt2bV92bV9mcmVlKHZtKTsKIApAQCAtMTUxLDYgJiM0MzsxOTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkgICAgc3JlZ3MuYXBpY19iYXNlKTsKIAogCXRlc3RfY3JfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKCkpOwomIzQzOwl0ZXN0X2VmZXJfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9lZmVyX2ZlYXR1cmVfYml0cygpKTsKIAogCWt2bV92bV9mcmVlKHZtKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjE1CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQmIzM5O3MgdG91Y2hpbmcgYGFyY2gveDg2L2t2bS9yZWdzLmNgLCBzcGVjaWZpY2FsbHkuIFRoZSBjb3JlIGNoYW5nZSBpcyBzdHJhaWdodGZvcndhcmQ6IGEgbmV3IGNoZWNrIGZvciBga3ZtX3ZhbGlkX2VmZXJgIGlzIGJlaW5nIGFkZGVkIHRvIHRoZSBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBmdW5jdGlvbi4gVGhpcyBtYWtlcyBzZW5zZTsgd2Ugd2FudCB0byBlbnN1cmUgdGhlIHN5c3RlbSByZWdpc3RlcnMgYXJlIHZhbGlkIGJlZm9yZSB3ZSB1c2UgdGhlbS4gTm93IEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIFdoZXJlIGlzIGBrdm1faXNfdmFsaWRfc3JlZ3NgIGFjdHVhbGx5ICp1c2VkKj8gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHVzZSBncmVwcGVyIHRvIGZpbmQgYWxsIGluc3RhbmNlcyBvZiB0aGF0IGZ1bmN0aW9uLiBUaGF0JiMzOTtsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmdWxseSBhc3Nlc3MgdGhlIHBhdGNoJiMzOTtzIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1faXNfdmFsaWRfc3JlZ3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3JlZ3MuYz01MjY9dm9pZCBrdm1fdmNwdV9pb2N0bF94ODZfZ2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NDQtXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU0NTpzdGF0aWMgYm9vbCBrdm1faXNfdmFsaWRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTQ2LXtcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU3MT1zdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNTc2LVxuYXJjaC94ODYva3ZtL3JlZ3MuYzo1Nzc6XHRpZiAoIWt2bV9pc192YWxpZF9zcmVncyh2Y3B1LCBzcmVncykpXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3OC1cdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIFNSRUdzIGFuZCBLVk0mIzM5O3MgSW50ZXJuYWwgTG9naWMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBga3ZtX2lzX3ZhbGlkX3NyZWdzYC4gVGhhdCBmdW5jdGlvbiYjMzk7cyBwcmltYXJ5IHB1cnBvc2UgaXMgY2xlYXJseSB0byB2YWxpZGF0ZSB0aGUgU3BlY2lhbC1QdXJwb3NlIFJlZ2lzdGVyIChTUkVHKSBzdGF0ZSwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgS1ZNJiMzOTtzIHZpcnR1YWwgQ1BVIG1hbmFnZW1lbnQuIEFuZCBJIGtub3cgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIHdpdGhpbiBgX19zZXRfc3JlZ3NfY29tbW9uYC4gTm93LCB0byB0cnVseSB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSwgSSBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiB0aGF0IGBfX3NldF9zcmVnc19jb21tb25gIGZ1bmN0aW9uLiBXaGVyZSBlbHNlIGlzIHRoaXMgY2VudHJhbCBmdW5jdGlvbiBiZWluZyB1dGlsaXplZCBpbiB0aGUgaHlwZXJ2aXNvcj8gV2hhdCBraW5kIG9mIG9wZXJhdGlvbnMgYXJlIHRyaWdnZXJpbmcgdGhlIG5lZWQgdG8gc2V0IHRoZXNlIFNSRUdzPyBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsIHNpdGVzIHdpbGwgcmV2ZWFsIHRoZSBkaWZmZXJlbnQgc2NlbmFyaW9zIHVuZGVyIHdoaWNoIHRoZSB2aXJ0dWFsIENQVSYjMzk7cyBzdGF0ZSBpcyBiZWluZyBtZXRpY3Vsb3VzbHkgbWFuYWdlZCBhbmQgdmFsaWRhdGVkIHdpdGhpbiB0aGUgS1ZNIGZyYW1ld29yay4gSSBuZWVkIHRvIHNlZSB3aGVyZSB0aGlzIGFsbCBmaXRzIGludG8gdGhlIGxhcmdlciBjb250cm9sIGZsb3cuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpbmQgdGhvc2UgY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3NldF9zcmVnc19jb21tb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3JlZ3MuYz01NDU9c3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NzAtXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU3MTpzdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NzItXHRcdFx0ICAgICAgaW50ICptbXVfcmVzZXRfbmVlZGVkLCBib29sIHVwZGF0ZV9wZHB0cnMpXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYz02Mzg9c3RhdGljIGludCBfX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQxLVx0aW50IG1tdV9yZXNldF9uZWVkZWQgPSAwO1xuYXJjaC94ODYva3ZtL3JlZ3MuYzo2NDI6XHRpbnQgcmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIHNyZWdzLCBcdTAwMjZtbXVfcmVzZXRfbmVlZGVkLCB0cnVlKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQzLVxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmM9Njc5PWludCBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTMtXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY5NDpcdHJldCA9IF9fc2V0X3NyZWdzX2NvbW1vbih2Y3B1LCAoc3RydWN0IGt2bV9zcmVncyAqKXNyZWdzMixcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjk1LVx0XHRcdFx0IFx1MDAyNm1tdV9yZXNldF9uZWVkZWQsICF2YWxpZF9wZHB0cnMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NzcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIHRoZSBJbnRlcnBsYXkgb2YgU2VnbWVudCBSZWdpc3RlciBTZXR0aW5nIEZ1bmN0aW9ucyoqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgYSBjbGVhciBwYXR0ZXJuIGhlcmUuIGBfX3NldF9zcmVnc19jb21tb25gIGlzIHRoZSB3b3JraG9yc2UsIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aGUgY29tbW9uIGxvZ2ljIGludm9sdmVkIGluIHNldHRpbmcgc2VnbWVudCByZWdpc3RlcnMuIEl0JiMzOTtzIGNhbGxlZCBieSBib3RoIGBfX3NldF9zcmVnc2AgYW5kLCBpbXBvcnRhbnRseSwgYGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBhIGxldmVsIG9mIG1vZHVsYXJpdHkgYW5kIHJldXNhYmlsaXR5LCB3aGljaCBpcyB3aGF0IEkmIzM5O2QgZXhwZWN0IHRvIHNlZSBpbiBhIHdlbGwtZGVzaWduZWQgS1ZNIGltcGxlbWVudGF0aW9uLiBOb3csIGBfX3NldF9zcmVnc2AgaXRzZWxmLCBqdWRnaW5nIGJ5IHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXMgdmVyeSBsaWtlbHkgdGhlIGZ1bmN0aW9uIHVzZWQgYnkgdGhlIG9sZGVyIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzYCBpb2N0bC4gSXQgc2VlbXMgbGlrZSB0aGUgb2J2aW91cyBjb25uZWN0aW9uLCBidXQgaXQmIzM5O3MgYWx3YXlzIGJlc3QgdG8gYmUgc3VyZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyB0aGUgY2FzZSwgYnV0IHRoZSBldmlkZW5jZSBwb2ludHMgdGhhdCB3YXkgc3Ryb25nbHkuIEkgbmVlZCB0byBkaWcgaW50byBgX19zZXRfc3JlZ3NgIG5vdyB0byB2ZXJpZnkgbXkgc3VzcGljaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fc2V0X3NyZWdzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9yZWdzLmM9NTQ1PXN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNTcwLVxuYXJjaC94ODYva3ZtL3JlZ3MuYzo1NzE6c3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTcyLVx0XHRcdCAgICAgIGludCAqbW11X3Jlc2V0X25lZWRlZCwgYm9vbCB1cGRhdGVfcGRwdHJzKVxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNjM3LVxuYXJjaC94ODYva3ZtL3JlZ3MuYzo2Mzg6c3RhdGljIGludCBfX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuYXJjaC94ODYva3ZtL3JlZ3MuYy02Mzkte1xuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQxLVx0aW50IG1tdV9yZXNldF9uZWVkZWQgPSAwO1xuYXJjaC94ODYva3ZtL3JlZ3MuYzo2NDI6XHRpbnQgcmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIHNyZWdzLCBcdTAwMjZtbXVfcmVzZXRfbmVlZGVkLCB0cnVlKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQzLVxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmM9NjY0PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy02NzMtXHR2Y3B1X2xvYWQodmNwdSk7XG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY3NDpcdHJldCA9IF9fc2V0X3NyZWdzKHZjcHUsIHNyZWdzKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjc1LVx0dmNwdV9wdXQodmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYz02Nzk9aW50IGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTY5My1cbmFyY2gveDg2L2t2bS9yZWdzLmM6Njk0Olx0cmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIChzdHJ1Y3Qga3ZtX3NyZWdzICopc3JlZ3MyLFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTUtXHRcdFx0XHQgXHUwMDI2bW11X3Jlc2V0X25lZWRlZCwgIXZhbGlkX3BkcHRycyk7XG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYz03MjU9aW50IGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy03MzQtXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjczNTpcdFx0aWYgKF9fc2V0X3NyZWdzKHZjcHUsIFx1MDAyNnNyZWdzKSlcbmFyY2gveDg2L2t2bS9yZWdzLmMtNzM2LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NjIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTUkVHIFZhbGlkYXRpb24gUHJvY2VzcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCB3aGVuZXZlciB3ZSYjMzk7cmUgc2V0dGluZyBzZWdtZW50IHJlZ2lzdGVycyAoU1JFR1MpIHRocm91Z2ggYW4gaW9jdGwgY2FsbCDigJMgc3BlY2lmaWNhbGx5IGBLVk1fU0VUX1NSRUdTYCwgYEtWTV9TRVRfU1JFR1MyYCwgb3IgZXZlbiBkdXJpbmcgYEtWTV9SVU5gLiBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbiwgY3JpdGljYWwgZm9yIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGVtdWxhdGlvbiwgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLgoKTm93LCB0aGlzIHBhdGNoIGludHJvZHVjZXMgc29tZXRoaW5nIG5ldzogaXQmIzM5O3MgYWRkaW5nIGEgY2FsbCB0byBga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtJmd0O2VmZXIpYCB3aXRoaW4gYGt2bV9pc192YWxpZF9zcmVnc2AuIFRoZSBpbXBsaWNhdGlvbiBpcyBjbGVhcjogd2UmIzM5O3JlIG5vdyB2YWxpZGF0aW5nIHRoZSBFeHRlbmRlZCBGZWF0dXJlIEVuYWJsZSBSZWdpc3RlciAoRUZFUikgYWxvbmdzaWRlIHRoZSBvdGhlciBzZWdtZW50IHJlZ2lzdGVycy4gVGhpcyBpcyBhIGdvb2QgdGhpbmcg4oCTIGl0IGhlbHBzIG1haW50YWluIHN5c3RlbSBzdGFiaWxpdHkuIFNvLCBsZXQmIzM5O3MgZGlnIGludG8gYGt2bV92YWxpZF9lZmVyYCBhbmQgc2VlIGV4YWN0bHkgd2hhdCBjaGVja3MgaXQmIzM5O3MgcGVyZm9ybWluZy4gV2hhdCBjb25kaXRpb25zIGFyZSBjb25zaWRlcmVkIGFjY2VwdGFibGUgb3IgaW52YWxpZD8gVGhpcyBpcyB3aGVyZSB0aGUgcGF0Y2ggd2lsbCByZWFsbHkgc2hvdyBpdHMgdmFsdWUsIGFuZCB3aGVyZSBJJiMzOTtsbCBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgYW55IHNlY3VyaXR5IG9yIHN0YWJpbGl0eSBpbXByb3ZlbWVudHMgaXQgcHJvdmlkZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9tc3JzLmM9NTg4PXN0YXRpYyBpbnQgZG9fZ2V0X2ZlYXR1cmVfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW5kZXgsIHU2NCAqZGF0YSlcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTU5My1cbmFyY2gveDg2L2t2bS9tc3JzLmM6NTk0OnN0YXRpYyBib29sIF9fa3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbmFyY2gveDg2L2t2bS9tc3JzLmMtNTk1LXtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYxNC19XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYxNTpib29sIGt2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYxNi17XG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYy02MTktXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYyMDpcdHJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpO1xuYXJjaC94ODYva3ZtL21zcnMuYy02MjEtfVxuYXJjaC94ODYva3ZtL21zcnMuYzo2MjI6RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV92YWxpZF9lZmVyKTtcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjIzLVxuYXJjaC94ODYva3ZtL21zcnMuYz02MjQ9c3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYy02MzMtXHRpZiAoIW1zcl9pbmZvLVx1MDAzZWhvc3RfaW5pdGlhdGVkKSB7XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYzNDpcdFx0aWYgKCFfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpKVxuYXJjaC94ODYva3ZtL21zcnMuYy02MzUtXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL21zcnMuaD02MT12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7XG5hcmNoL3g4Ni9rdm0vbXNycy5oOjYyOmJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG5hcmNoL3g4Ni9rdm0vbXNycy5oLTYzLWludCBrdm1fZW11bGF0ZV9tc3JfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0ICpkYXRhKTtcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU0NT1zdGF0aWMgYm9vbCBrdm1faXNfdmFsaWRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU2Ny1cdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVx1MDAzZWNyMCkgXHUwMDI2XHUwMDI2XG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU2ODpcdCAgICAgICBrdm1fdmFsaWRfZWZlcih2Y3B1LCBzcmVncy1cdTAwM2VlZmVyKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTY5LX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTQzOD1zdGF0aWMgYm9vbCBuZXN0ZWRfdm1jYl9jaGVja19zYXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ3MS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDcyOlx0aWYgKENDKCFrdm1fdmFsaWRfZWZlcih2Y3B1LCBzYXZlLVx1MDAzZWVmZXIpKSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDczLVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yNzMyPXN0YXRpYyBpbnQgZWZlcl90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3MzgtXHQgKiBDbGVhciB0aGUgRUZFUl9TVk1FIGJpdCBmcm9tIEVGRVIuIFRoZSBTVk0gY29kZSBhbHdheXMgc2V0cyB0aGlzXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjI3Mzk6XHQgKiBiaXQgaW4gc3ZtX3NldF9lZmVyKCksIGJ1dCBfX2t2bV92YWxpZF9lZmVyKCkgY2hlY2tzIGl0IGFnYWluc3RcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjc0MC1cdCAqIHdoZXRoZXIgdGhlIGd1ZXN0IGhhcyBYODZfRkVBVFVSRV9TVk0gLSB0aGlzIGF2b2lkcyBhIGZhaWx1cmUgaWZcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMxNzA9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2hvc3Rfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzIzMi1cdGlmICh2bWNzMTItXHUwMDNldm1fZXhpdF9jb250cm9scyBcdTAwMjYgVk1fRVhJVF9MT0FEX0lBMzJfRUZFUikge1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozMjMzOlx0XHRpZiAoQ0MoIWt2bV92YWxpZF9lZmVyKHZjcHUsIHZtY3MxMi1cdTAwM2Vob3N0X2lhMzJfZWZlcikpIHx8XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMyMzQtXHRcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXHUwMDNlaG9zdF9pYTMyX2VmZXIgXHUwMDI2IEVGRVJfTE1BKSkgfHxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMzMDY9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2d1ZXN0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMzNzEtXHQgICAgKHZtY3MxMi1cdTAwM2V2bV9lbnRyeV9jb250cm9scyBcdTAwMjYgVk1fRU5UUllfTE9BRF9JQTMyX0VGRVIpKSB7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjMzNzI6XHRcdGlmIChDQygha3ZtX3ZhbGlkX2VmZXIodmNwdSwgdm1jczEyLVx1MDAzZWd1ZXN0X2lhMzJfZWZlcikpIHx8XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMzNzMtXHRcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXHUwMDNlZ3Vlc3RfaWEzMl9lZmVyIFx1MDAyNiBFRkVSX0xNQSkpIHx8XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MzYKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAyODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIEtWTSwgc3BlY2lmaWNhbGx5IGNvcmUga2VybmVsIGxvZ2ljIHRoYXQmIzM5O3MgcmVhY2hhYmxlLiBUaGF0IHNjcmVhbXMgJiMzNDtwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQuJiMzNDsgVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUga2V5IGZ1bmN0aW9ucy4gSSBzZWUgYSBmZXcgbWVudGlvbmVkOiBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgYF9fc2V0X3NyZWdzX2NvbW1vbmAsIGBfX3NldF9zcmVnc2AsIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAsIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AsIGFuZCBga3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyYC4KCldhaXQgYSBtaW51dGUsIGhvbGQgdXAuIExldCBtZSBtYWtlIHN1cmUgSSYjMzk7bSBub3Qgd2FzdGluZyB0aW1lIG9uIGRlYWQgZW5kcy4gYGt2bV9pc192YWxpZF9zcmVnc2AsIGBfX3NldF9zcmVnc19jb21tb25gLCBhbmQgYF9fc2V0X3NyZWdzYCwgYWxsIGxvb2sgdG8gYmUgc3RhdGljIGZ1bmN0aW9ucy4gTm90IGFzIGlkZWFsIGZvciBkaXJlY3QgZnV6emluZywgdGhvdWdoIHRoZXkgY291bGQgc3RpbGwgYmUgcmVsZXZhbnQgdGhyb3VnaCBpbmxpbmluZyBvciBjYWxsLWNoYWlucy4KClRoYXQgbGVhdmVzIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAgYW5kIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AsIHdoaWNoIGFyZSBleHBvcnRlZCwgc28gdGhleSBhcmUgdGhlIHByaW1lIHRhcmdldHMuIEFuZCBJIG5lZWQgdG8gY29uc2lkZXIgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAgYXMgaXQgYXBwZWFycyB0byBiZSBkaXJlY3RseSB1c2VyLWZhY2luZyBhbmQgdGhlcmVmb3JlIGEgZ29vZCB0YXJnZXQuCgpPa2F5LCBzbyB0aGUgZnVuY3Rpb25zIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gZm9yIHRoaXMgZnV6emluZyBjYW1wYWlnbiBhcmUgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYCwgYGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyYCwgYW5kIGBrdm1fcnVuX3N5bmNfcmVnc19mcm9tX3VzZXJgLiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8ga2VlcCBhbiBleWUgb24gaG93IHRoZSBzdGF0aWMgZnVuY3Rpb25zLCBsaWtlIGBrdm1faXNfdmFsaWRfc3JlZ3NgIGFyZSB1c2VkIGluIHRoZSBvdmVyYWxsIGNvbnRyb2wgZmxvdy4KCk5vdywgbGV0JiMzOTtzIHNlZSwgdGhlIGNvbmZpZyB2YXJpYWJsZSBpcyBgS1ZNYC4gSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgdG8gc2VlIHdoYXQgZXhhY3RseSBlbmFibGVzIHRoZSBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZz0xNj1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE3LVxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjE4OmNvbmZpZyBLVk1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMC1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzozMTpjb25maWcgS1ZNX01JUFNfREVCVUdfQ09QMF9DT1VOVEVSU1xuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtNYWludGFpbiBjb3VudGVycyBmb3IgQ09QMCBhY2Nlc3Nlc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjY6Y29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI3LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI5OmNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMC1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzMtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzQ6Y29uZmlnIEtWTV9CT09LM1NfNjRfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM1LVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNy1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozODpjb25maWcgS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM5LVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQzLVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ0LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQ1OmNvbmZpZyBLVk1fQk9PSzNTXzMyXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfMzIgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX0JPT0szU182NFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYzLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzY0IHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNzgtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Nzk6Y29uZmlnIEtWTV9CT09LM1NfNjRfSFZcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy04MC1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy05OS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMDA6Y29uZmlnIEtWTV9CT09LM1NfNjRfUFJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCB3aXRob3V0IHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjY6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjctXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyOTpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O0RldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDhfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIGh5cGVydmlzb3IgcmVhbC1tb2RlIGNvZGUgKGZvciBQT1dFUjgpXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1Ni1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0h5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTgzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4NDpjb25maWcgS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg1LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4Ni1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODc6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgZXhpdCB0aW1pbmdcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk3LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5ODpjb25maWcgS1ZNX0U1MDBWMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5OS1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIxMzpjb25maWcgS1ZNX0U1MDBNQ1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNC1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwME1DL0U1NTAwL0U2NTAwIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX01QSUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzAtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQwLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0MTpjb25maWcgS1ZNX1hJQ1NcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDItXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUwLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI1MTpjb25maWcgS1ZNX1hJVkVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTItXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnPTIyPXNvdXJjZSBcJiMzNDthcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21pY3Jvd2F0dC9LY29uZmlnXCYjMzQ7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjMtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc6MjQ6Y29uZmlnIEtWTV9HVUVTVFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtLVk0gR3Vlc3Qgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzoxOTpjb25maWcgS1ZNXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXHRkZWZfdHJpc3RhdGUgeVxuLS1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuLS1cbmFyY2gveDg2L0tjb25maWc9ODI2PXNvdXJjZSBcJiMzNDthcmNoL3g4Ni94ZW4vS2NvbmZpZ1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZy04MjctXG5hcmNoL3g4Ni9LY29uZmlnOjgyODpjb25maWcgS1ZNX0dVRVNUXG5hcmNoL3g4Ni9LY29uZmlnLTgyOS1cdGJvb2wgXCYjMzQ7S1ZNIEd1ZXN0IHN1cHBvcnQgKGluY2x1ZGluZyBrdm1jbG9jaylcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7SW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0O0kvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXHRib29sIFwmIzM0O1N5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVx0Ym9vbCBcJiMzNDtQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cdGJvb2xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcJiMzNDtcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTMtXG52aXJ0L2t2bS9LY29uZmlnOjQ6Y29uZmlnIEtWTV9DT01NT05cbnZpcnQva3ZtL0tjb25maWctNS0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9Mzk9Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTQyLVxudmlydC9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX01NSU9cbnZpcnQva3ZtL0tjb25maWctNDQtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNDUtXG52aXJ0L2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQVNZTkNfUEZcbnZpcnQva3ZtL0tjb25maWctNDctICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTQ5LSMgVG9nZ2xlIHRvIHN3aXRjaCBiZXR3ZWVuIGRpcmVjdCBub3RpZmljYXRpb24gYW5kIGJhdGNoIGpvYlxudmlydC9rdm0vS2NvbmZpZzo1MDpjb25maWcgS1ZNX0FTWU5DX1BGX1NZTkNcbnZpcnQva3ZtL0tjb25maWctNTEtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTU5PWNvbmZpZyBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXG4tLVxudmlydC9rdm0vS2NvbmZpZy02MS1cbnZpcnQva3ZtL0tjb25maWc6NjI6Y29uZmlnIEtWTV9WRklPXG52aXJ0L2t2bS9LY29uZmlnLTYzLSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz02NT1jb25maWcgSEFWRV9LVk1fSU5WQUxJRF9XQUtFVVBTXG4tLVxudmlydC9rdm0vS2NvbmZpZy02Ny1cbnZpcnQva3ZtL0tjb25maWc6Njg6Y29uZmlnIEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxudmlydC9rdm0vS2NvbmZpZy02OS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy03MC1cbnZpcnQva3ZtL0tjb25maWc6NzE6Y29uZmlnIEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcbnZpcnQva3ZtL0tjb25maWctNzItICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNzMtXG52aXJ0L2t2bS9LY29uZmlnOjc0OmNvbmZpZyBLVk1fQ09NUEFUXG52aXJ0L2t2bS9LY29uZmlnLTc1LSAgICAgICBkZWZfYm9vbCB5XG4tLVxudmlydC9rdm0vS2NvbmZpZz05MT1jb25maWcgSEFWRV9LVk1fUE1fTk9USUZJRVJcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTkzLVxudmlydC9rdm0vS2NvbmZpZzo5NDpjb25maWcgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcbnZpcnQva3ZtL0tjb25maWctOTUtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctOTYtXG52aXJ0L2t2bS9LY29uZmlnOjk3OmNvbmZpZyBLVk1fRUxJREVfVExCX0ZMVVNIX0lGX1lPVU5HXG52aXJ0L2t2bS9LY29uZmlnLTk4LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTk5LVxudmlydC9rdm0vS2NvbmZpZzoxMDA6Y29uZmlnIEtWTV9NTVVfTE9DS0xFU1NfQUdJTkdcbnZpcnQva3ZtL0tjb25maWctMTAxLSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTEwMi1cbnZpcnQva3ZtL0tjb25maWc6MTAzOmNvbmZpZyBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xudmlydC9rdm0vS2NvbmZpZy0xMDQtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctMTA1LVxudmlydC9rdm0vS2NvbmZpZzoxMDY6Y29uZmlnIEtWTV9HVUVTVF9NRU1GRFxudmlydC9rdm0vS2NvbmZpZy0xMDctICAgICAgIHNlbGVjdCBYQVJSQVlfTVVMVElcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NTUKCQkJCQkJCW91dHB1dDogMTYxCgkJCQkJCQl0aG91Z2h0czogNDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBDb25maWd1cmF0aW9uIGFuZCBSZWxldmFudCBTeW1ib2xzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBLVk0gY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5LiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGZvY3VzIHN5bWJvbHMgZm9yIHRoaXMgYW5hbHlzaXMuIEkmIzM5O3ZlIGluaXRpYWxseSBmbGFnZ2VkIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AsIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAsIGFuZCBga3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyYCBhcyBzdHJvbmcgY2FuZGlkYXRlcy4gSG93ZXZlciwgSSBzaG91bGQgYWxzbyBpbmNsdWRlIGBrdm1fdmFsaWRfZWZlcmAgc2luY2UgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHdpZGVseSB1c2VkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBrdm1fdmFsaWRfZWZlcmAgaXMgZXhwb3J0ZWQsIHNvIGxldCBtZSBxdWlja2x5IHZlcmlmeSB3aXRoIGBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3ZhbGlkX2VmZXIpO2AuIFllcywgdGhhdCYjMzk7cyBmaW5lLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIHRoZSBvdGhlciBzeW1ib2xzIGFyZSBleHBvcnRlZCB0b28uIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAgaXMgbm90IGV4cG9ydGVkLCBidXQgaXQgaXMgYSBnbG9iYWwgZnVuY3Rpb24uIFNpbWlsYXJseSwgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYCBhbmQgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAgYXJlIGdsb2JhbCB0b28uIFNvLCBhbGwgZ29vZC4KCldhaXQsIGxvb2tpbmcgYXQgaXQsIGBrdm1fdmFsaWRfZWZlcmAgaXMgY2FsbGVkIGluIGBuZXN0ZWRfdm1jYl9jaGVja19zYXZlYCwgYGVmZXJfdHJhcGAsIGBuZXN0ZWRfdm14X2NoZWNrX2hvc3Rfc3RhdGVgLCBhbmQgYG5lc3RlZF92bXhfY2hlY2tfZ3Vlc3Rfc3RhdGVgLiBJdCBsb29rcyBsaWtlIGBrdm1fdmFsaWRfZWZlcmAgaXMgYWN0dWFsbHkgYSBncmVhdCBzeW1ib2wgaW4gaXRzZWxmLCBzbyBJJiMzOTttIHB1dHRpbmcgaXQgaW4uCgpTbywgbGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBwYXRjaCBhZ2Fpbi4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGBrdm1fdmFsaWRfZWZlcih2Y3B1LCBzcmVncy0mZ3Q7ZWZlcilgIHRvIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCBzbyB0aGUgcGF0Y2ggaXMgZnVuY3Rpb25hbC4KCkluIHNob3J0LCBteSBjb25jbHVzaW9ucyBhcmUgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyBLVk0sIGFuZCBteSBmb2N1cyBzeW1ib2xzIGFyZSBub3cgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYCwgYGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyYCwgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAsIGFuZCBga3ZtX3ZhbGlkX2VmZXJgLgoKVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7a3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczImIzM0OywKICAgICYjMzQ7a3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyJiMzNDssCiAgICAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSYjMzk7cyBzcmVncyB2YWxpZGF0aW9uIGxvZ2ljIHRvIGFsc28gY2hlY2sgdGhlIEVGRVIgcmVnaXN0ZXIgdXNpbmcga3ZtX3ZhbGlkX2VmZXIoKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhZmZlY3RzIEtWTSBpb2N0bHMgKEtWTV9TRVRfU1JFR1MsIEtWTV9TRVRfU1JFR1MyLCBLVk1fUlVOKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7a3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczImIzM0OywKICAgICYjMzQ7a3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyJiMzNDssCiAgICAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSYjMzk7cyBzcmVncyB2YWxpZGF0aW9uIGxvZ2ljIHRvIGFsc28gY2hlY2sgdGhlIEVGRVIgcmVnaXN0ZXIgdXNpbmcga3ZtX3ZhbGlkX2VmZXIoKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhZmZlY3RzIEtWTSBpb2N0bHMgKEtWTV9TRVRfU1JFR1MsIEtWTV9TRVRfU1JFR1MyLCBLVk1fUlVOKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQzOjU1LjEwMDg5MTIzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTYwMzY1MTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzXCIsXG4gICAgXCJrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMlwiLFxuICAgIFwia3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyXCIsXG4gICAgXCJrdm1fdmFsaWRfZWZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSdzIHNyZWdzIHZhbGlkYXRpb24gbG9naWMgdG8gYWxzbyBjaGVjayB0aGUgRUZFUiByZWdpc3RlciB1c2luZyBrdm1fdmFsaWRfZWZlcigpLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgS1ZNIGlvY3RscyAoS1ZNX1NFVF9TUkVHUywgS1ZNX1NFVF9TUkVHUzIsIEtWTV9SVU4pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0Mzo1NS4xMDA5MTA4NjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODExMTI5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBkYTBlMjI1ZTM0NjZhZWQ0MjZlMGY1NWRiNTc2MDUyZGJkNDA5YWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDA6NDM6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3JlZ3MuYyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcXG5pbmRleCBiZDgxNDc3OThjYzNlZS4uOGY2NjQzODk4OWU0NzQgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3JlZ3MuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcXG5AQCAtNTY0LDcgKzU2NCw4IEBAIHN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4ga3ZtX2lzX3ZhbGlkX2NyNCh2Y3B1LCBzcmVncy1cXHUwMDNlY3I0KSBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy1cXHUwMDNlY3IwKTtcXG4rXFx0ICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtXFx1MDAzZWNyMCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICAgIGt2bV92YWxpZF9lZmVyKHZjcHUsIHNyZWdzLVxcdTAwM2VlZmVyKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXFxuaW5kZXggN2QzYTI3YmMwZDg0MmEuLmIxNjExNzRlY2U0NTMxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxcbkBAIC0yMDgsNiArMjA4LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUge1xcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9OQlxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyNClcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX1BFUkZDVFJfTExDXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI4KVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfTlhcXHRcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjApXFxuKyNkZWZpbmVcXHRYODZfRkVBVFVSRV9GWFNSX09QVFxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNSlcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0dCUEFHRVNcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjYpXFxuICNkZWZpbmVcXHRYODZfRkVBVFVSRV9SRFRTQ1BcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjcpXFxuICNkZWZpbmVcXHRYODZfRkVBVFVSRV9MTVxcdFxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyOSlcXG5AQCAtMjI2LDYgKzIyNyw3IEBAIHN0cnVjdCBrdm1feDg2X2NwdV9mZWF0dXJlIHtcXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZcXHRcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMSlcXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZfRVNcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMylcXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZfU05QXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDQpXFxuKyNkZWZpbmVcXHRYODZfRkVBVFVSRV9BVVRPSUJSU1xcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCA4KVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfR1BfT05fVVNFUl9DUFVJRFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCAxNylcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX1BFUkZNT05fVjJcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMClcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0xCUl9QTUNfRlJFRVpFXFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIyLCAwLCBFQVgsIDIpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xcbmluZGV4IDhlNjU0Y2M5YWIxNjg3Li41NjJhZmFiMzc4ZDExZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcXG5AQCAtMjEsMjAgKzIxLDIwIEBAXFxuICNpbmNsdWRlIFxcXCJrdm1fdXRpbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicHJvY2Vzc29yLmhcXFwiXFxuIFxcbi0jZGVmaW5lIFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IsIG9yaWcsIGJpdClcXHRcXHRcXHRcXHRcXFxcXFxuKyNkZWZpbmUgVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIHJlZywgb3JpZywgYml0KVxcdFxcdFxcdFxcdFxcXFxcXG4gZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0c3RydWN0IGt2bV9zcmVncyBuZXc7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRpbnQgcmM7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdC8qIFNraXAgdGhlIHN1Yi10ZXN0LCB0aGUgZmVhdHVyZS9iaXQgaXMgc3VwcG9ydGVkLiAqL1xcdFxcdFxcdFxcXFxcXG4tXFx0aWYgKG9yaWcuY3IgXFx1MDAyNiBiaXQpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAob3JpZy5yZWcgXFx1MDAyNiBiaXQpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRicmVhaztcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0bWVtY3B5KFxcdTAwMjZuZXcsIFxcdTAwMjZvcmlnLCBzaXplb2Yoc3JlZ3MpKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdG5ldy5jciB8PSBiaXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRtZW1jcHkoXFx1MDAyNm5ldywgXFx1MDAyNm9yaWcsIHNpemVvZihuZXcpKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG5ldy5yZWcgfD0gYml0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRyYyA9IF92Y3B1X3NyZWdzX3NldCh2Y3B1LCBcXHUwMDI2bmV3KTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFRFU1RfQVNTRVJUKHJjLCBcXFwiS1ZNIGFsbG93ZWQgaW52YWxpZCBcXFwiICNjciBcXFwiIGJpdCAoMHglbHgpXFxcIiwgYml0KTtcXHRcXFxcXFxuK1xcdFRFU1RfQVNTRVJUKHJjLCBcXFwiS1ZNIGFsbG93ZWQgaW52YWxpZCBcXFwiICNyZWcgXFxcIiBiaXQgKDB4JWxseClcXFwiLCAodW5zaWduZWQgbG9uZyBsb25nKWJpdCk7IFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQvKiBTYW5pdHkgY2hlY2sgdGhhdCBLVk0gZGlkbid0IGNoYW5nZSBhbnl0aGluZy4gKi9cXHRcXHRcXHRcXFxcXFxuIFxcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFxcdTAwMjZuZXcpO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtNDYsNiArNDYsOCBAQCBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRYODZfQ1I0X01DRSB8IFg4Nl9DUjRfUEdFIHwgWDg2X0NSNF9QQ0UgfFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0WDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X09TWE1NRVhDUFQpXFxuIFxcbisjZGVmaW5lIEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSIEVGRVJfU0NFXFxuK1xcbiBzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHModm9pZClcXG4ge1xcbiBcXHR1NjQgY3I0ID0gS1ZNX0FMV0FZU19BTExPV0VEX0NSNDtcXG5AQCAtNzQsNiArNzYsMjQgQEAgc3RhdGljIHU2NCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKHZvaWQpXFxuIFxcdHJldHVybiBjcjQ7XFxuIH1cXG4gXFxuK3N0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfZWZlcl9mZWF0dXJlX2JpdHModm9pZClcXG4re1xcbitcXHR1NjQgZWZlciA9IEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSO1xcbitcXG4rXFx0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0xNKSlcXG4rXFx0XFx0ZWZlciB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XFxuK1xcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9OWCkpXFxuK1xcdFxcdGVmZXIgfD0gRUZFUl9OWDtcXG4rXFx0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpXFxuK1xcdFxcdGVmZXIgfD0gRUZFUl9TVk1FO1xcbitcXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfRlhTUl9PUFQpKVxcbitcXHRcXHRlZmVyIHw9IEVGRVJfRkZYU1I7XFxuK1xcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpXFxuK1xcdFxcdGVmZXIgfD0gRUZFUl9BVVRPSUJSUztcXG4rXFxuK1xcdHJldHVybiBlZmVyO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCB0ZXN0X2NyX2JpdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgY3I0KVxcbiB7XFxuIFxcdHN0cnVjdCBrdm1fc3JlZ3Mgc3JlZ3M7XFxuQEAgLTk2LDI2ICsxMTYsNDUgQEAgc3RhdGljIHZvaWQgdGVzdF9jcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGNyNClcXG4gXFx0XFx0ICAgIChzcmVncy5jcjQgXFx1MDAyNiBYODZfQ1I0X1BLRSkgPyBcXFwic2V0XFxcIiA6IFxcXCJjbGVhclxcXCIpO1xcbiBcXG4gXFx0dmNwdV9zcmVnc19nZXQodmNwdSwgXFx1MDAyNnNyZWdzKTtcXG4tXFx0VEVTVF9BU1NFUlQoc3JlZ3MuY3I0ID09IGNyNCwgXFxcInNyZWdzLkNSNCAoMHglbGx4KSAhPSBDUjQgKDB4JWx4KVxcXCIsXFxuLVxcdFxcdCAgICBzcmVncy5jcjQsIGNyNCk7XFxuLVxcbi1cXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1ZNWEUpO1xcbi1cXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QQ0lERSk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xcbi1cXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01BUCk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpO1xcbitcXHRURVNUX0FTU0VSVF9FUShzcmVncy5jcjQsIGNyNCk7XFxuK1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1ZNWEUpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QQ0lERSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01BUCk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XFxuIFxcbiBcXHRmb3IgKGkgPSAzMjsgaSBcXHUwMDNjIDY0OyBpKyspXFxuLVxcdFxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTtcXG4rXFx0XFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIEJJVChpKSk7XFxuIFxcbiBcXHQvKiBOVyB3aXRob3V0IENEIGlzIGlsbGVnYWwsIGFzIGlzIFBHIHdpdGhvdXQgUEUuICovXFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9QRyk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX05XKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfUEcpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X2VmZXJfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbit7XFxuK1xcdHN0cnVjdCBrdm1fc3JlZ3Mgc3JlZ3M7XFxuK1xcdGludCByYztcXG4rXFxuK1xcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFxcdTAwMjZzcmVncyk7XFxuK1xcdHNyZWdzLmVmZXIgfD0gZWZlcjtcXG4rXFx0cmMgPSBfdmNwdV9zcmVnc19zZXQodmNwdSwgXFx1MDAyNnNyZWdzKTtcXG4rXFx0VEVTVF9BU1NFUlQoIXJjLCBcXFwiRmFpbGVkIHRvIHNldCBzdXBwb3J0ZWQgRUZFUiBiaXRzICgweCVsbHgpXFxcIiwgc3JlZ3MuZWZlcik7XFxuK1xcbitcXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcXHUwMDI2c3JlZ3MpO1xcbitcXHRURVNUX0FTU0VSVF9FUShzcmVncy5lZmVyLCBlZmVyKTtcXG4rXFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9MTUUpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTlgpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfU1ZNRSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9GRlhTUik7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9BVVRPSUJSUyk7XFxuIH1cXG4gXFxuIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuQEAgLTEzMiw2ICsxNzEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHQgKi9cXG4gXFx0dm0gPSB2bV9jcmVhdGVfYmFyZWJvbmVzKCk7XFxuIFxcdHZjcHUgPSBfX3ZtX3ZjcHVfYWRkKHZtLCAwKTtcXG4rXFx0dGVzdF9lZmVyX2JpdHModmNwdSwgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIpO1xcbiBcXHR0ZXN0X2NyX2JpdHModmNwdSwgS1ZNX0FMV0FZU19BTExPV0VEX0NSNCk7XFxuIFxcdGt2bV92bV9mcmVlKHZtKTtcXG4gXFxuQEAgLTE1MSw2ICsxOTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHRcXHQgICAgc3JlZ3MuYXBpY19iYXNlKTtcXG4gXFxuIFxcdHRlc3RfY3JfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKCkpO1xcbitcXHR0ZXN0X2VmZXJfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9lZmVyX2ZlYXR1cmVfYml0cygpKTtcXG4gXFxuIFxcdGt2bV92bV9mcmVlKHZtKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQzOjU1LjcwMjEwNjY3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzNTkxNDE1NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NcIixcbiAgICBcImt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyXCIsXG4gICAgXCJrdm1fcnVuX3N5bmNfcmVnc19mcm9tX3VzZXJcIixcbiAgICBcImt2bV92YWxpZF9lZmVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNJ3Mgc3JlZ3MgdmFsaWRhdGlvbiBsb2dpYyB0byBhbHNvIGNoZWNrIHRoZSBFRkVSIHJlZ2lzdGVyIHVzaW5nIGt2bV92YWxpZF9lZmVyKCkuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYWZmZWN0cyBLVk0gaW9jdGxzIChLVk1fU0VUX1NSRUdTLCBLVk1fU0VUX1NSRUdTMiwgS1ZNX1JVTikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGRhMGUyMjVlMzQ2NmFlZDQyNmUwZjU1ZGI1NzYwNTJkYmQ0MDlhZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDAwOjQzOjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3JlZ3MuYyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcbmluZGV4IGJkODE0Nzc5OGNjM2VlLi44ZjY2NDM4OTg5ZTQ3NCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9yZWdzLmNcbisrKyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcbkBAIC01NjQsNyArNTY0LDggQEAgc3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4gXHR9XG4gXG4gXHRyZXR1cm4ga3ZtX2lzX3ZhbGlkX2NyNCh2Y3B1LCBzcmVncy1cdTAwM2VjcjQpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtXHUwMDNlY3IwKTtcbitcdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVx1MDAzZWNyMCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgICAga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtXHUwMDNlZWZlcik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgX19zZXRfc3JlZ3NfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5pbmRleCA3ZDNhMjdiYzBkODQyYS4uYjE2MTE3NGVjZTQ1MzEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuQEAgLTIwOCw2ICsyMDgsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9OQlx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVDWCwgMjQpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9MTENcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI4KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX05YXHRcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDIwKVxuKyNkZWZpbmVcdFg4Nl9GRUFUVVJFX0ZYU1JfT1BUXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNSlcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9HQlBBR0VTXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNilcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9SRFRTQ1BcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI3KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0xNXHRcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI5KVxuQEAgLTIyNiw2ICsyMjcsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZcdFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMSlcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9FU1x0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMylcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9TTlBcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDQpXG4rI2RlZmluZVx0WDg2X0ZFQVRVUkVfQVVUT0lCUlNcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDgpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfR1BfT05fVVNFUl9DUFVJRFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDE3KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZNT05fVjJcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIyLCAwLCBFQVgsIDApXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfTEJSX1BNQ19GUkVFWkVcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMiwgMCwgRUFYLCAyKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xuaW5kZXggOGU2NTRjYzlhYjE2ODcuLjU2MmFmYWIzNzhkMTFlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcbkBAIC0yMSwyMCArMjEsMjAgQEBcbiAjaW5jbHVkZSBcImt2bV91dGlsLmhcIlxuICNpbmNsdWRlIFwicHJvY2Vzc29yLmhcIlxuIFxuLSNkZWZpbmUgVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjciwgb3JpZywgYml0KVx0XHRcdFx0XFxcbisjZGVmaW5lIFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCByZWcsIG9yaWcsIGJpdClcdFx0XHRcdFxcXG4gZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHN0cnVjdCBrdm1fc3JlZ3MgbmV3O1x0XHRcdFx0XHRcdFx0XFxcbiBcdGludCByYztcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdC8qIFNraXAgdGhlIHN1Yi10ZXN0LCB0aGUgZmVhdHVyZS9iaXQgaXMgc3VwcG9ydGVkLiAqL1x0XHRcdFxcXG4tXHRpZiAob3JpZy5jciBcdTAwMjYgYml0KVx0XHRcdFx0XHRcdFx0XFxcbitcdGlmIChvcmlnLnJlZyBcdTAwMjYgYml0KVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0YnJlYWs7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0bWVtY3B5KFx1MDAyNm5ldywgXHUwMDI2b3JpZywgc2l6ZW9mKHNyZWdzKSk7XHRcdFx0XHRcdFxcXG4tXHRuZXcuY3IgfD0gYml0O1x0XHRcdFx0XHRcdFx0XHRcXFxuK1x0bWVtY3B5KFx1MDAyNm5ldywgXHUwMDI2b3JpZywgc2l6ZW9mKG5ldykpO1x0XHRcdFx0XHRcXFxuK1x0bmV3LnJlZyB8PSBiaXQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0cmMgPSBfdmNwdV9zcmVnc19zZXQodmNwdSwgXHUwMDI2bmV3KTtcdFx0XHRcdFx0XFxcbi1cdFRFU1RfQVNTRVJUKHJjLCBcIktWTSBhbGxvd2VkIGludmFsaWQgXCIgI2NyIFwiIGJpdCAoMHglbHgpXCIsIGJpdCk7XHRcXFxuK1x0VEVTVF9BU1NFUlQocmMsIFwiS1ZNIGFsbG93ZWQgaW52YWxpZCBcIiAjcmVnIFwiIGJpdCAoMHglbGx4KVwiLCAodW5zaWduZWQgbG9uZyBsb25nKWJpdCk7IFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0LyogU2FuaXR5IGNoZWNrIHRoYXQgS1ZNIGRpZG4ndCBjaGFuZ2UgYW55dGhpbmcuICovXHRcdFx0XFxcbiBcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNm5ldyk7XHRcdFx0XHRcdFx0XFxcbkBAIC00Niw2ICs0Niw4IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRYODZfQ1I0X01DRSB8IFg4Nl9DUjRfUEdFIHwgWDg2X0NSNF9QQ0UgfFx0XFxcbiBcdFx0XHRcdFg4Nl9DUjRfT1NGWFNSIHwgWDg2X0NSNF9PU1hNTUVYQ1BUKVxuIFxuKyNkZWZpbmUgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIgRUZFUl9TQ0VcbitcbiBzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHModm9pZClcbiB7XG4gXHR1NjQgY3I0ID0gS1ZNX0FMV0FZU19BTExPV0VEX0NSNDtcbkBAIC03NCw2ICs3NiwyNCBAQCBzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHModm9pZClcbiBcdHJldHVybiBjcjQ7XG4gfVxuIFxuK3N0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfZWZlcl9mZWF0dXJlX2JpdHModm9pZClcbit7XG4rXHR1NjQgZWZlciA9IEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSO1xuK1xuK1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0xNKSlcbitcdFx0ZWZlciB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XG4rXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTlgpKVxuK1x0XHRlZmVyIHw9IEVGRVJfTlg7XG4rXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSlcbitcdFx0ZWZlciB8PSBFRkVSX1NWTUU7XG4rXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfRlhTUl9PUFQpKVxuK1x0XHRlZmVyIHw9IEVGRVJfRkZYU1I7XG4rXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKVxuK1x0XHRlZmVyIHw9IEVGRVJfQVVUT0lCUlM7XG4rXG4rXHRyZXR1cm4gZWZlcjtcbit9XG4rXG4gc3RhdGljIHZvaWQgdGVzdF9jcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGNyNClcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzO1xuQEAgLTk2LDI2ICsxMTYsNDUgQEAgc3RhdGljIHZvaWQgdGVzdF9jcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGNyNClcbiBcdFx0ICAgIChzcmVncy5jcjQgXHUwMDI2IFg4Nl9DUjRfUEtFKSA/IFwic2V0XCIgOiBcImNsZWFyXCIpO1xuIFxuIFx0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuLVx0VEVTVF9BU1NFUlQoc3JlZ3MuY3I0ID09IGNyNCwgXCJzcmVncy5DUjQgKDB4JWxseCkgIT0gQ1I0ICgweCVseClcIixcbi1cdFx0ICAgIHNyZWdzLmNyNCwgY3I0KTtcbi1cbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9WTVhFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUENJREUpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNQVApO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XG4rXHRURVNUX0FTU0VSVF9FUShzcmVncy5jcjQsIGNyNCk7XG4rXG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0xBNTcpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0ZTR1NCQVNFKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01FUCk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XG4gXG4gXHRmb3IgKGkgPSAzMjsgaSBcdTAwM2MgNjQ7IGkrKylcbi1cdFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBCSVQoaSkpO1xuK1x0XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTtcbiBcbiBcdC8qIE5XIHdpdGhvdXQgQ0QgaXMgaWxsZWdhbCwgYXMgaXMgUEcgd2l0aG91dCBQRS4gKi9cbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfUEcpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfUEcpO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X2VmZXJfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuK3tcbitcdHN0cnVjdCBrdm1fc3JlZ3Mgc3JlZ3M7XG4rXHRpbnQgcmM7XG4rXG4rXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcdTAwMjZzcmVncyk7XG4rXHRzcmVncy5lZmVyIHw9IGVmZXI7XG4rXHRyYyA9IF92Y3B1X3NyZWdzX3NldCh2Y3B1LCBcdTAwMjZzcmVncyk7XG4rXHRURVNUX0FTU0VSVCghcmMsIFwiRmFpbGVkIHRvIHNldCBzdXBwb3J0ZWQgRUZFUiBiaXRzICgweCVsbHgpXCIsIHNyZWdzLmVmZXIpO1xuK1xuK1x0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuK1x0VEVTVF9BU1NFUlRfRVEoc3JlZ3MuZWZlciwgZWZlcik7XG4rXG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTE1FKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9OWCk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfU1ZNRSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfRkZYU1IpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0FVVE9JQlJTKTtcbiB9XG4gXG4gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbkBAIC0xMzIsNiArMTcxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdCAqL1xuIFx0dm0gPSB2bV9jcmVhdGVfYmFyZWJvbmVzKCk7XG4gXHR2Y3B1ID0gX192bV92Y3B1X2FkZCh2bSwgMCk7XG4rXHR0ZXN0X2VmZXJfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUik7XG4gXHR0ZXN0X2NyX2JpdHModmNwdSwgS1ZNX0FMV0FZU19BTExPV0VEX0NSNCk7XG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gXG5AQCAtMTUxLDYgKzE5MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdCAgICBzcmVncy5hcGljX2Jhc2UpO1xuIFxuIFx0dGVzdF9jcl9iaXRzKHZjcHUsIGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHMoKSk7XG4rXHR0ZXN0X2VmZXJfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9lZmVyX2ZlYXR1cmVfYml0cygpKTtcbiBcbiBcdGt2bV92bV9mcmVlKHZtKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQzOjU1LjcwMjEwOTU5MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MzA3MTUwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyB0b3VjaGluZyBgYXJjaC94ODYva3ZtL3JlZ3MuY2AsIHNwZWNpZmljYWxseS4gVGhlIGNvcmUgY2hhbmdlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYSBuZXcgY2hlY2sgZm9yIGBrdm1fdmFsaWRfZWZlcmAgaXMgYmVpbmcgYWRkZWQgdG8gdGhlIGBrdm1faXNfdmFsaWRfc3JlZ3NgIGZ1bmN0aW9uLiBUaGlzIG1ha2VzIHNlbnNlOyB3ZSB3YW50IHRvIGVuc3VyZSB0aGUgc3lzdGVtIHJlZ2lzdGVycyBhcmUgdmFsaWQgYmVmb3JlIHdlIHVzZSB0aGVtLiBOb3cgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gV2hlcmUgaXMgYGt2bV9pc192YWxpZF9zcmVnc2AgYWN0dWFsbHkgKnVzZWQqPyBJJ20gZ29pbmcgdG8gcXVpY2tseSB1c2UgZ3JlcHBlciB0byBmaW5kIGFsbCBpbnN0YW5jZXMgb2YgdGhhdCBmdW5jdGlvbi4gVGhhdCdsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmdWxseSBhc3Nlc3MgdGhlIHBhdGNoJ3MgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjE1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MDEuNjMyODI2NTM1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDc5MTU5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2lzX3ZhbGlkX3NyZWdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9yZWdzLmM9NTI2PXZvaWQga3ZtX3ZjcHVfaW9jdGxfeDg2X2dldF9zcmVnczIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NDQtXFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo1NDU6c3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NDYte1xcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYz01NzE9c3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTc2LVxcbmFyY2gveDg2L2t2bS9yZWdzLmM6NTc3OlxcdGlmICgha3ZtX2lzX3ZhbGlkX3NyZWdzKHZjcHUsIHNyZWdzKSlcXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3OC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MDYuMjQwNzQ2NzE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NDMxMDM5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTUkVHcyBhbmQgS1ZNJ3MgSW50ZXJuYWwgTG9naWMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYGt2bV9pc192YWxpZF9zcmVnc2AuIFRoYXQgZnVuY3Rpb24ncyBwcmltYXJ5IHB1cnBvc2UgaXMgY2xlYXJseSB0byB2YWxpZGF0ZSB0aGUgU3BlY2lhbC1QdXJwb3NlIFJlZ2lzdGVyIChTUkVHKSBzdGF0ZSwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgS1ZNJ3MgdmlydHVhbCBDUFUgbWFuYWdlbWVudC4gQW5kIEkga25vdyBpdCdzIGJlaW5nIGNhbGxlZCB3aXRoaW4gYF9fc2V0X3NyZWdzX2NvbW1vbmAuIE5vdywgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUsIEkgbmVlZCB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgdGhhdCBgX19zZXRfc3JlZ3NfY29tbW9uYCBmdW5jdGlvbi4gV2hlcmUgZWxzZSBpcyB0aGlzIGNlbnRyYWwgZnVuY3Rpb24gYmVpbmcgdXRpbGl6ZWQgaW4gdGhlIGh5cGVydmlzb3I/IFdoYXQga2luZCBvZiBvcGVyYXRpb25zIGFyZSB0cmlnZ2VyaW5nIHRoZSBuZWVkIHRvIHNldCB0aGVzZSBTUkVHcz8gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBzaXRlcyB3aWxsIHJldmVhbCB0aGUgZGlmZmVyZW50IHNjZW5hcmlvcyB1bmRlciB3aGljaCB0aGUgdmlydHVhbCBDUFUncyBzdGF0ZSBpcyBiZWluZyBtZXRpY3Vsb3VzbHkgbWFuYWdlZCBhbmQgdmFsaWRhdGVkIHdpdGhpbiB0aGUgS1ZNIGZyYW1ld29yay4gSSBuZWVkIHRvIHNlZSB3aGVyZSB0aGlzIGFsbCBmaXRzIGludG8gdGhlIGxhcmdlciBjb250cm9sIGZsb3cuIExldCdzIGRpZyBpbiBhbmQgZmluZCB0aG9zZSBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTQwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MDkuNTk1MDU5MThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY1NDgwNjg3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3NldF9zcmVnc19jb21tb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3JlZ3MuYz01NDU9c3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3MC1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU3MTpzdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTcyLVxcdFxcdFxcdCAgICAgIGludCAqbW11X3Jlc2V0X25lZWRlZCwgYm9vbCB1cGRhdGVfcGRwdHJzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYz02Mzg9c3RhdGljIGludCBfX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02NDEtXFx0aW50IG1tdV9yZXNldF9uZWVkZWQgPSAwO1xcbmFyY2gveDg2L2t2bS9yZWdzLmM6NjQyOlxcdGludCByZXQgPSBfX3NldF9zcmVnc19jb21tb24odmNwdSwgc3JlZ3MsIFxcdTAwMjZtbXVfcmVzZXRfbmVlZGVkLCB0cnVlKTtcXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTY0My1cXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmM9Njc5PWludCBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTY5My1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY5NDpcXHRyZXQgPSBfX3NldF9zcmVnc19jb21tb24odmNwdSwgKHN0cnVjdCBrdm1fc3JlZ3MgKilzcmVnczIsXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTUtXFx0XFx0XFx0XFx0IFxcdTAwMjZtbXVfcmVzZXRfbmVlZGVkLCAhdmFsaWRfcGRwdHJzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MTIuMjQ5ODcwMzg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwMDU2Nzk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyB0aGUgSW50ZXJwbGF5IG9mIFNlZ21lbnQgUmVnaXN0ZXIgU2V0dGluZyBGdW5jdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIHNlZWluZyBhIGNsZWFyIHBhdHRlcm4gaGVyZS4gYF9fc2V0X3NyZWdzX2NvbW1vbmAgaXMgdGhlIHdvcmtob3JzZSwgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBjb21tb24gbG9naWMgaW52b2x2ZWQgaW4gc2V0dGluZyBzZWdtZW50IHJlZ2lzdGVycy4gSXQncyBjYWxsZWQgYnkgYm90aCBgX19zZXRfc3JlZ3NgIGFuZCwgaW1wb3J0YW50bHksIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBsZXZlbCBvZiBtb2R1bGFyaXR5IGFuZCByZXVzYWJpbGl0eSwgd2hpY2ggaXMgd2hhdCBJJ2QgZXhwZWN0IHRvIHNlZSBpbiBhIHdlbGwtZGVzaWduZWQgS1ZNIGltcGxlbWVudGF0aW9uLiBOb3csIGBfX3NldF9zcmVnc2AgaXRzZWxmLCBqdWRnaW5nIGJ5IHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXMgdmVyeSBsaWtlbHkgdGhlIGZ1bmN0aW9uIHVzZWQgYnkgdGhlIG9sZGVyIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzYCBpb2N0bC4gSXQgc2VlbXMgbGlrZSB0aGUgb2J2aW91cyBjb25uZWN0aW9uLCBidXQgaXQncyBhbHdheXMgYmVzdCB0byBiZSBzdXJlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIGNhc2UsIGJ1dCB0aGUgZXZpZGVuY2UgcG9pbnRzIHRoYXQgd2F5IHN0cm9uZ2x5LiBJIG5lZWQgdG8gZGlnIGludG8gYF9fc2V0X3NyZWdzYCBub3cgdG8gdmVyaWZ5IG15IHN1c3BpY2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY3NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjE1Ljg1MDQ0MDM0MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzYwMjI1MjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fc2V0X3NyZWdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9yZWdzLmM9NTQ1PXN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NzAtXFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo1NzE6c3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3Mi1cXHRcXHRcXHQgICAgICBpbnQgKm1tdV9yZXNldF9uZWVkZWQsIGJvb2wgdXBkYXRlX3BkcHRycylcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjM3LVxcbmFyY2gveDg2L2t2bS9yZWdzLmM6NjM4OnN0YXRpYyBpbnQgX19zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTYzOS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTY0MS1cXHRpbnQgbW11X3Jlc2V0X25lZWRlZCA9IDA7XFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo2NDI6XFx0aW50IHJldCA9IF9fc2V0X3NyZWdzX2NvbW1vbih2Y3B1LCBzcmVncywgXFx1MDAyNm1tdV9yZXNldF9uZWVkZWQsIHRydWUpO1xcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQzLVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYz02NjQ9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjczLVxcdHZjcHVfbG9hZCh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY3NDpcXHRyZXQgPSBfX3NldF9zcmVncyh2Y3B1LCBzcmVncyk7XFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02NzUtXFx0dmNwdV9wdXQodmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTY3OT1pbnQga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTMtXFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo2OTQ6XFx0cmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIChzdHJ1Y3Qga3ZtX3NyZWdzICopc3JlZ3MyLFxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjk1LVxcdFxcdFxcdFxcdCBcXHUwMDI2bW11X3Jlc2V0X25lZWRlZCwgIXZhbGlkX3BkcHRycyk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTcyNT1pbnQga3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNzM0LVxcbmFyY2gveDg2L2t2bS9yZWdzLmM6NzM1OlxcdFxcdGlmIChfX3NldF9zcmVncyh2Y3B1LCBcXHUwMDI2c3JlZ3MpKVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNzM2LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0NDoxOC4yMTA2ODgwODhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQ0MDI2NjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU1JFRyBWYWxpZGF0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIGBrdm1faXNfdmFsaWRfc3JlZ3NgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIHdoZW5ldmVyIHdlJ3JlIHNldHRpbmcgc2VnbWVudCByZWdpc3RlcnMgKFNSRUdTKSB0aHJvdWdoIGFuIGlvY3RsIGNhbGwg4oCTIHNwZWNpZmljYWxseSBgS1ZNX1NFVF9TUkVHU2AsIGBLVk1fU0VUX1NSRUdTMmAsIG9yIGV2ZW4gZHVyaW5nIGBLVk1fUlVOYC4gVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb24sIGNyaXRpY2FsIGZvciB0aGUgaW50ZWdyaXR5IG9mIHRoZSBlbXVsYXRpb24sIGFuZCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLlxuXG5Ob3csIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzb21ldGhpbmcgbmV3OiBpdCdzIGFkZGluZyBhIGNhbGwgdG8gYGt2bV92YWxpZF9lZmVyKHZjcHUsIHNyZWdzLVx1MDAzZWVmZXIpYCB3aXRoaW4gYGt2bV9pc192YWxpZF9zcmVnc2AuIFRoZSBpbXBsaWNhdGlvbiBpcyBjbGVhcjogd2UncmUgbm93IHZhbGlkYXRpbmcgdGhlIEV4dGVuZGVkIEZlYXR1cmUgRW5hYmxlIFJlZ2lzdGVyIChFRkVSKSBhbG9uZ3NpZGUgdGhlIG90aGVyIHNlZ21lbnQgcmVnaXN0ZXJzLiBUaGlzIGlzIGEgZ29vZCB0aGluZyDigJMgaXQgaGVscHMgbWFpbnRhaW4gc3lzdGVtIHN0YWJpbGl0eS4gU28sIGxldCdzIGRpZyBpbnRvIGBrdm1fdmFsaWRfZWZlcmAgYW5kIHNlZSBleGFjdGx5IHdoYXQgY2hlY2tzIGl0J3MgcGVyZm9ybWluZy4gV2hhdCBjb25kaXRpb25zIGFyZSBjb25zaWRlcmVkIGFjY2VwdGFibGUgb3IgaW52YWxpZD8gVGhpcyBpcyB3aGVyZSB0aGUgcGF0Y2ggd2lsbCByZWFsbHkgc2hvdyBpdHMgdmFsdWUsIGFuZCB3aGVyZSBJJ2xsIGdldCBhIGJldHRlciBzZW5zZSBvZiBhbnkgc2VjdXJpdHkgb3Igc3RhYmlsaXR5IGltcHJvdmVtZW50cyBpdCBwcm92aWRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc2MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0NDoyMi43NTQ3MTY5MDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTYyODkzNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3ZhbGlkX2VmZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL21zcnMuYz01ODg9c3RhdGljIGludCBkb19nZXRfZmVhdHVyZV9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbmRleCwgdTY0ICpkYXRhKVxcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy01OTMtXFxuYXJjaC94ODYva3ZtL21zcnMuYzo1OTQ6c3RhdGljIGJvb2wgX19rdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtNTk1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjE0LX1cXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYxNTpib29sIGt2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTYte1xcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTktXFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MjA6XFx0cmV0dXJuIF9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MjEtfVxcbmFyY2gveDg2L2t2bS9tc3JzLmM6NjIyOkVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmFsaWRfZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MjMtXFxuYXJjaC94ODYva3ZtL21zcnMuYz02MjQ9c3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYzMy1cXHRpZiAoIW1zcl9pbmZvLVxcdTAwM2Vob3N0X2luaXRpYXRlZCkge1xcbmFyY2gveDg2L2t2bS9tc3JzLmM6NjM0OlxcdFxcdGlmICghX19rdm1fdmFsaWRfZWZlcih2Y3B1LCBlZmVyKSlcXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYzNS1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmg9NjE9dm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQpO1xcbmFyY2gveDg2L2t2bS9tc3JzLmg6NjI6Ym9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcXG5hcmNoL3g4Ni9rdm0vbXNycy5oLTYzLWludCBrdm1fZW11bGF0ZV9tc3JfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0ICpkYXRhKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmM9NTQ1PXN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NjctXFx0ICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtXFx1MDAzZWNyMCkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU2ODpcXHQgICAgICAga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtXFx1MDAzZWVmZXIpO1xcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTY5LX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NDM4PXN0YXRpYyBib29sIG5lc3RlZF92bWNiX2NoZWNrX3NhdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00NzEtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo0NzI6XFx0aWYgKENDKCFrdm1fdmFsaWRfZWZlcih2Y3B1LCBzYXZlLVxcdTAwM2VlZmVyKSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00NzMtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yNzMyPXN0YXRpYyBpbnQgZWZlcl90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjczOC1cXHQgKiBDbGVhciB0aGUgRUZFUl9TVk1FIGJpdCBmcm9tIEVGRVIuIFRoZSBTVk0gY29kZSBhbHdheXMgc2V0cyB0aGlzXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyNzM5OlxcdCAqIGJpdCBpbiBzdm1fc2V0X2VmZXIoKSwgYnV0IF9fa3ZtX3ZhbGlkX2VmZXIoKSBjaGVja3MgaXQgYWdhaW5zdFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjc0MC1cXHQgKiB3aGV0aGVyIHRoZSBndWVzdCBoYXMgWDg2X0ZFQVRVUkVfU1ZNIC0gdGhpcyBhdm9pZHMgYSBmYWlsdXJlIGlmXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMxNzA9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2hvc3Rfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zMjMyLVxcdGlmICh2bWNzMTItXFx1MDAzZXZtX2V4aXRfY29udHJvbHMgXFx1MDAyNiBWTV9FWElUX0xPQURfSUEzMl9FRkVSKSB7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozMjMzOlxcdFxcdGlmIChDQygha3ZtX3ZhbGlkX2VmZXIodmNwdSwgdm1jczEyLVxcdTAwM2Vob3N0X2lhMzJfZWZlcikpIHx8XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zMjM0LVxcdFxcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXFx1MDAzZWhvc3RfaWEzMl9lZmVyIFxcdTAwMjYgRUZFUl9MTUEpKSB8fFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0zMzA2PXN0YXRpYyBpbnQgbmVzdGVkX3ZteF9jaGVja19ndWVzdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMzNzEtXFx0ICAgICh2bWNzMTItXFx1MDAzZXZtX2VudHJ5X2NvbnRyb2xzIFxcdTAwMjYgVk1fRU5UUllfTE9BRF9JQTMyX0VGRVIpKSB7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozMzcyOlxcdFxcdGlmIChDQygha3ZtX3ZhbGlkX2VmZXIodmNwdSwgdm1jczEyLVxcdTAwM2VndWVzdF9pYTMyX2VmZXIpKSB8fFxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzM3My1cXHRcXHQgICAgQ0MoaWEzMmUgIT0gISEodm1jczEyLVxcdTAwM2VndWVzdF9pYTMyX2VmZXIgXFx1MDAyNiBFRkVSX0xNQSkpIHx8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjI1LjE1MTAxNTA3OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTA1OTE5ODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBsaWtlIGl0J3MgdG91Y2hpbmcgS1ZNLCBzcGVjaWZpY2FsbHkgY29yZSBrZXJuZWwgbG9naWMgdGhhdCdzIHJlYWNoYWJsZS4gVGhhdCBzY3JlYW1zIFwicG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0LlwiIFRoZSBvYnZpb3VzIG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIGtleSBmdW5jdGlvbnMuIEkgc2VlIGEgZmV3IG1lbnRpb25lZDogYGt2bV9pc192YWxpZF9zcmVnc2AsIGBfX3NldF9zcmVnc19jb21tb25gLCBgX19zZXRfc3JlZ3NgLCBga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczJgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgLCBhbmQgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAuXG5cbldhaXQgYSBtaW51dGUsIGhvbGQgdXAuIExldCBtZSBtYWtlIHN1cmUgSSdtIG5vdCB3YXN0aW5nIHRpbWUgb24gZGVhZCBlbmRzLiBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgYF9fc2V0X3NyZWdzX2NvbW1vbmAsIGFuZCBgX19zZXRfc3JlZ3NgLCBhbGwgbG9vayB0byBiZSBzdGF0aWMgZnVuY3Rpb25zLiBOb3QgYXMgaWRlYWwgZm9yIGRpcmVjdCBmdXp6aW5nLCB0aG91Z2ggdGhleSBjb3VsZCBzdGlsbCBiZSByZWxldmFudCB0aHJvdWdoIGlubGluaW5nIG9yIGNhbGwtY2hhaW5zLlxuXG5UaGF0IGxlYXZlcyBga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczJgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgLCB3aGljaCBhcmUgZXhwb3J0ZWQsIHNvIHRoZXkgYXJlIHRoZSBwcmltZSB0YXJnZXRzLiBBbmQgSSBuZWVkIHRvIGNvbnNpZGVyIGBrdm1fcnVuX3N5bmNfcmVnc19mcm9tX3VzZXJgIGFzIGl0IGFwcGVhcnMgdG8gYmUgZGlyZWN0bHkgdXNlci1mYWNpbmcgYW5kIHRoZXJlZm9yZSBhIGdvb2QgdGFyZ2V0LlxuXG5Pa2F5LCBzbyB0aGUgZnVuY3Rpb25zIEknbGwgbmVlZCB0byBmb2N1cyBvbiBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduIGFyZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgLCBga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczJgLCBhbmQgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAuIEknbGwgYWxzbyB3YW50IHRvIGtlZXAgYW4gZXllIG9uIGhvdyB0aGUgc3RhdGljIGZ1bmN0aW9ucywgbGlrZSBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBhcmUgdXNlZCBpbiB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cuXG5cbk5vdywgbGV0J3Mgc2VlLCB0aGUgY29uZmlnIHZhcmlhYmxlIGlzIGBLVk1gLiBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyB0byBzZWUgd2hhdCBleGFjdGx5IGVuYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2MzYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MzEuMjU2OTM2NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg4Mzk5MzE3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL21pcHMva3ZtL0tjb25maWc9MTY9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTctXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjE4OmNvbmZpZyBLVk1cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMC1cXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MzE6Y29uZmlnIEtWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzItXFx0Ym9vbCBcXFwiTWFpbnRhaW4gY291bnRlcnMgZm9yIENPUDAgYWNjZXNzZXNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNjpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI3LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI5OmNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzAtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMzLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNDpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM1LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mzg6Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzktXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00My1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ0LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0NTpjb25maWcgS1ZNX0JPT0szU18zMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzMyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fQk9PSzNTXzY0XFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Nzk6Y29uZmlnIEtWTV9CT09LM1NfNjRfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctODAtXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy05OS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fQk9PSzNTXzY0X1BSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgd2l0aG91dCB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjUtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyNjpjb25maWcgS1ZNX0JPT0szU19IVl9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjctXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyOTpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTMwLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A4X1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgdGltaW5nIGZvciBoeXBlcnZpc29yIHJlYWwtbW9kZSBjb2RlIChmb3IgUE9XRVI4KVxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE1Nzpjb25maWcgS1ZNX0JPT0szU19IVl9ORVNURURfUE1VX1dPUktBUk9VTkRcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIk5lc3RlZCBMMCBob3N0IHdvcmthcm91bmQgZm9yIEwxIEtWTSBob3N0IFBNVSBoYW5kbGluZyBidWdcXFwiIGlmIEVYUEVSVFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkh5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTgzLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODQ6Y29uZmlnIEtWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODUtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4Nzpjb25maWcgS1ZNX0VYSVRfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJEZXRhaWxlZCBleGl0IHRpbWluZ1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5ODpjb25maWcgS1ZNX0U1MDBWMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTktXFx0Ym9vbCBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEyLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTM6Y29uZmlnIEtWTV9FNTAwTUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjE0LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDBNQy9FNTUwMC9FNjUwMCBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fTVBJQ1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbCBcXFwiS1ZNIGluLWtlcm5lbCBNUElDIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDAtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0MTpjb25maWcgS1ZNX1hJQ1NcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQyLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUwLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNTE6Y29uZmlnIEtWTV9YSVZFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1Mi1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc9MjI9c291cmNlIFxcXCJhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21pY3Jvd2F0dC9LY29uZmlnXFxcIlxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yMy1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc6MjQ6Y29uZmlnIEtWTV9HVUVTVFxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZz0xNz1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0yMC1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ2LVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1xcXCJcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9ODI2PXNvdXJjZSBcXFwiYXJjaC94ODYveGVuL0tjb25maWdcXFwiXFxuYXJjaC94ODYvS2NvbmZpZy04MjctXFxuYXJjaC94ODYvS2NvbmZpZzo4Mjg6Y29uZmlnIEtWTV9HVUVTVFxcbmFyY2gveDg2L0tjb25maWctODI5LVxcdGJvb2wgXFxcIktWTSBHdWVzdCBzdXBwb3J0IChpbmNsdWRpbmcga3ZtY2xvY2spXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctMy1cXG52aXJ0L2t2bS9LY29uZmlnOjQ6Y29uZmlnIEtWTV9DT01NT05cXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9Mzk9Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNDItXFxudmlydC9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX01NSU9cXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy00NS1cXG52aXJ0L2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQVNZTkNfUEZcXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQ5LSMgVG9nZ2xlIHRvIHN3aXRjaCBiZXR3ZWVuIGRpcmVjdCBub3RpZmljYXRpb24gYW5kIGJhdGNoIGpvYlxcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXFxudmlydC9rdm0vS2NvbmZpZy01MS0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02MS1cXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xcbnZpcnQva3ZtL0tjb25maWctNjMtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02Ny1cXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG52aXJ0L2t2bS9LY29uZmlnLTY5LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy03MC1cXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXFxudmlydC9rdm0vS2NvbmZpZy03Mi0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzMtXFxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxcbnZpcnQva3ZtL0tjb25maWctNzUtICAgICAgIGRlZl9ib29sIHlcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTkzLVxcbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXFxudmlydC9rdm0vS2NvbmZpZy05NS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctOTYtXFxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xcbnZpcnQva3ZtL0tjb25maWctOTgtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk5LVxcbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXFxudmlydC9rdm0vS2NvbmZpZy0xMDEtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwMi1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcXG52aXJ0L2t2bS9LY29uZmlnLTEwNC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctMTA1LVxcbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcXG52aXJ0L2t2bS9LY29uZmlnLTEwNy0gICAgICAgc2VsZWN0IFhBUlJBWV9NVUxUSVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0NDozNS4xNDA5MzU2OTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODc5ODIxOTM0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gQ29uZmlndXJhdGlvbiBhbmQgUmVsZXZhbnQgU3ltYm9scyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgZGVhbGluZyB3aXRoIGEgS1ZNIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzLiBJJ3ZlIGluaXRpYWxseSBmbGFnZ2VkIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AsIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAsIGFuZCBga3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyYCBhcyBzdHJvbmcgY2FuZGlkYXRlcy4gSG93ZXZlciwgSSBzaG91bGQgYWxzbyBpbmNsdWRlIGBrdm1fdmFsaWRfZWZlcmAgc2luY2UgaXQncyBleHBvcnRlZCBhbmQgd2lkZWx5IHVzZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgYGt2bV92YWxpZF9lZmVyYCBpcyBleHBvcnRlZCwgc28gbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHdpdGggYEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmFsaWRfZWZlcik7YC4gWWVzLCB0aGF0J3MgZmluZS5cblxuTm93LCBsZXQncyB2ZXJpZnkgaWYgdGhlIG90aGVyIHN5bWJvbHMgYXJlIGV4cG9ydGVkIHRvby4gYGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyYCBpcyBub3QgZXhwb3J0ZWQsIGJ1dCBpdCBpcyBhIGdsb2JhbCBmdW5jdGlvbi4gU2ltaWxhcmx5LCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGFuZCBga3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyYCBhcmUgZ2xvYmFsIHRvby4gU28sIGFsbCBnb29kLlxuXG5XYWl0LCBsb29raW5nIGF0IGl0LCBga3ZtX3ZhbGlkX2VmZXJgIGlzIGNhbGxlZCBpbiBgbmVzdGVkX3ZtY2JfY2hlY2tfc2F2ZWAsIGBlZmVyX3RyYXBgLCBgbmVzdGVkX3ZteF9jaGVja19ob3N0X3N0YXRlYCwgYW5kIGBuZXN0ZWRfdm14X2NoZWNrX2d1ZXN0X3N0YXRlYC4gSXQgbG9va3MgbGlrZSBga3ZtX3ZhbGlkX2VmZXJgIGlzIGFjdHVhbGx5IGEgZ3JlYXQgc3ltYm9sIGluIGl0c2VsZiwgc28gSSdtIHB1dHRpbmcgaXQgaW4uXG5cblNvLCBsZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIHBhdGNoIGFnYWluLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgYGt2bV92YWxpZF9lZmVyKHZjcHUsIHNyZWdzLVx1MDAzZWVmZXIpYCB0byBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgc28gdGhlIHBhdGNoIGlzIGZ1bmN0aW9uYWwuXG5cbkluIHNob3J0LCBteSBjb25jbHVzaW9ucyBhcmUgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyBLVk0sIGFuZCBteSBmb2N1cyBzeW1ib2xzIGFyZSBub3cgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYCwgYGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyYCwgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAsIGFuZCBga3ZtX3ZhbGlkX2VmZXJgLlxuXG5UaW1lIHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjU1LCJPdXRwdXRUb2tlbnMiOjE2MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0NDo0My45MzkxNTY4ODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIwODcyOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzXCIsXG4gICAgXCJrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMlwiLFxuICAgIFwia3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyXCIsXG4gICAgXCJrdm1fdmFsaWRfZWZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSdzIHNyZWdzIHZhbGlkYXRpb24gbG9naWMgdG8gYWxzbyBjaGVjayB0aGUgRUZFUiByZWdpc3RlciB1c2luZyBrdm1fdmFsaWRfZWZlcigpLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgS1ZNIGlvY3RscyAoS1ZNX1NFVF9TUkVHUywgS1ZNX1NFVF9TUkVHUzIsIEtWTV9SVU4pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzXCIsXG4gICAgXCJrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMlwiLFxuICAgIFwia3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyXCIsXG4gICAgXCJrdm1fdmFsaWRfZWZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSdzIHNyZWdzIHZhbGlkYXRpb24gbG9naWMgdG8gYWxzbyBjaGVjayB0aGUgRUZFUiByZWdpc3RlciB1c2luZyBrdm1fdmFsaWRfZWZlcigpLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgS1ZNIGlvY3RscyAoS1ZNX1NFVF9TUkVHUywgS1ZNX1NFVF9TUkVHUzIsIEtWTV9SVU4pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpg28z[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 00:16:07 +0000 UTC FinishedAt: 2026-07-14 00:44:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "3d1f6d49-3376-440e-858d-97c17d425261" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_ioctl_set_sregs", "kvm_vcpu_ioctl_x86_set_sregs2", "kvm_run_sync_regs_from_user", "kvm_valid_efer" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzJiMzNDssCiAgICAmIzM0O2t2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyJiMzNDssCiAgICAmIzM0O2t2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlciYjMzQ7LAogICAgJiMzNDtrdm1fdmFsaWRfZWZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0mIzM5O3Mgc3JlZ3MgdmFsaWRhdGlvbiBsb2dpYyB0byBhbHNvIGNoZWNrIHRoZSBFRkVSIHJlZ2lzdGVyIHVzaW5nIGt2bV92YWxpZF9lZmVyKCkuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYWZmZWN0cyBLVk0gaW9jdGxzIChLVk1fU0VUX1NSRUdTLCBLVk1fU0VUX1NSRUdTMiwgS1ZNX1JVTikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwZGEwZTIyNWUzNDY2YWVkNDI2ZTBmNTVkYjU3NjA1MmRiZDQwOWFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDA6NDM6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3JlZ3MuYyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcbmluZGV4IGJkODE0Nzc5OGNjM2VlLi44ZjY2NDM4OTg5ZTQ3NCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9yZWdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcbkBAIC01NjQsNyAmIzQzOzU2NCw4IEBAIHN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuIFx0fVxuIFxuIFx0cmV0dXJuIGt2bV9pc192YWxpZF9jcjQodmNwdSwgc3JlZ3MtXHUwMDNlY3I0KSBcdTAwMjZcdTAwMjZcbi1cdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVx1MDAzZWNyMCk7XG4mIzQzO1x0ICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtXHUwMDNlY3IwKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtXHUwMDNlZWZlcik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgX19zZXRfc3JlZ3NfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5pbmRleCA3ZDNhMjdiYzBkODQyYS4uYjE2MTE3NGVjZTQ1MzEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuQEAgLTIwOCw2ICYjNDM7MjA4LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUge1xuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZDVFJfTkJcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI0KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZDVFJfTExDXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyOClcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9OWFx0XHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyMClcbiYjNDM7I2RlZmluZVx0WDg2X0ZFQVRVUkVfRlhTUl9PUFRcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI1KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0dCUEFHRVNcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI2KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1JEVFNDUFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjcpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfTE1cdFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjkpXG5AQCAtMjI2LDYgJiM0MzsyMjcsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZcdFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMSlcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9FU1x0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMylcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9TTlBcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDQpXG4mIzQzOyNkZWZpbmVcdFg4Nl9GRUFUVVJFX0FVVE9JQlJTXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCA4KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0dQX09OX1VTRVJfQ1BVSURcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCAxNylcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9QRVJGTU9OX1YyXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMiwgMCwgRUFYLCAwKVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0xCUl9QTUNfRlJFRVpFXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcbmluZGV4IDhlNjU0Y2M5YWIxNjg3Li41NjJhZmFiMzc4ZDExZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jXG5AQCAtMjEsMjAgJiM0MzsyMSwyMCBAQFxuICNpbmNsdWRlIFwmIzM0O2t2bV91dGlsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtwcm9jZXNzb3IuaFwmIzM0O1xuIFxuLSNkZWZpbmUgVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjciwgb3JpZywgYml0KVx0XHRcdFx0XFxcbiYjNDM7I2RlZmluZSBURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgcmVnLCBvcmlnLCBiaXQpXHRcdFx0XHRcXFxuIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3Qga3ZtX3NyZWdzIG5ldztcdFx0XHRcdFx0XHRcdFxcXG4gXHRpbnQgcmM7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHQvKiBTa2lwIHRoZSBzdWItdGVzdCwgdGhlIGZlYXR1cmUvYml0IGlzIHN1cHBvcnRlZC4gKi9cdFx0XHRcXFxuLVx0aWYgKG9yaWcuY3IgXHUwMDI2IGJpdClcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgKG9yaWcucmVnIFx1MDAyNiBiaXQpXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRicmVhaztcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRtZW1jcHkoXHUwMDI2bmV3LCBcdTAwMjZvcmlnLCBzaXplb2Yoc3JlZ3MpKTtcdFx0XHRcdFx0XFxcbi1cdG5ldy5jciB8PSBiaXQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0bWVtY3B5KFx1MDAyNm5ldywgXHUwMDI2b3JpZywgc2l6ZW9mKG5ldykpO1x0XHRcdFx0XHRcXFxuJiM0MztcdG5ldy5yZWcgfD0gYml0O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsIFx1MDAyNm5ldyk7XHRcdFx0XHRcdFxcXG4tXHRURVNUX0FTU0VSVChyYywgXCYjMzQ7S1ZNIGFsbG93ZWQgaW52YWxpZCBcJiMzNDsgI2NyIFwmIzM0OyBiaXQgKDB4JWx4KVwmIzM0OywgYml0KTtcdFxcXG4mIzQzO1x0VEVTVF9BU1NFUlQocmMsIFwmIzM0O0tWTSBhbGxvd2VkIGludmFsaWQgXCYjMzQ7ICNyZWcgXCYjMzQ7IGJpdCAoMHglbGx4KVwmIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZyliaXQpOyBcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdC8qIFNhbml0eSBjaGVjayB0aGF0IEtWTSBkaWRuJiMzOTt0IGNoYW5nZSBhbnl0aGluZy4gKi9cdFx0XHRcXFxuIFx0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2bmV3KTtcdFx0XHRcdFx0XHRcXFxuQEAgLTQ2LDYgJiM0Mzs0Niw4IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRYODZfQ1I0X01DRSB8IFg4Nl9DUjRfUEdFIHwgWDg2X0NSNF9QQ0UgfFx0XFxcbiBcdFx0XHRcdFg4Nl9DUjRfT1NGWFNSIHwgWDg2X0NSNF9PU1hNTUVYQ1BUKVxuIFxuJiM0MzsjZGVmaW5lIEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSIEVGRVJfU0NFXG4mIzQzO1xuIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKVxuIHtcbiBcdHU2NCBjcjQgPSBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0O1xuQEAgLTc0LDYgJiM0Mzs3NiwyNCBAQCBzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHModm9pZClcbiBcdHJldHVybiBjcjQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHR1NjQgZWZlciA9IEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSO1xuJiM0MztcbiYjNDM7XHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTE0pKVxuJiM0MztcdFx0ZWZlciB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XG4mIzQzO1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX05YKSlcbiYjNDM7XHRcdGVmZXIgfD0gRUZFUl9OWDtcbiYjNDM7XHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSlcbiYjNDM7XHRcdGVmZXIgfD0gRUZFUl9TVk1FO1xuJiM0MztcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpXG4mIzQzO1x0XHRlZmVyIHw9IEVGRVJfRkZYU1I7XG4mIzQzO1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcbiYjNDM7XHRcdGVmZXIgfD0gRUZFUl9BVVRPSUJSUztcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVmZXI7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgdGVzdF9jcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGNyNClcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzO1xuQEAgLTk2LDI2ICYjNDM7MTE2LDQ1IEBAIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpXG4gXHRcdCAgICAoc3JlZ3MuY3I0IFx1MDAyNiBYODZfQ1I0X1BLRSkgPyBcJiMzNDtzZXRcJiMzNDsgOiBcJiMzNDtjbGVhclwmIzM0Oyk7XG4gXG4gXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcdTAwMjZzcmVncyk7XG4tXHRURVNUX0FTU0VSVChzcmVncy5jcjQgPT0gY3I0LCBcJiMzNDtzcmVncy5DUjQgKDB4JWxseCkgIT0gQ1I0ICgweCVseClcJiMzNDssXG4tXHRcdCAgICBzcmVncy5jcjQsIGNyNCk7XG4tXG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpO1xuJiM0MztcdFRFU1RfQVNTRVJUX0VRKHNyZWdzLmNyNCwgY3I0KTtcbiYjNDM7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpO1xuIFxuIFx0Zm9yIChpID0gMzI7IGkgXHUwMDNjIDY0OyBpJiM0MzsmIzQzOylcbi1cdFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBCSVQoaSkpO1xuJiM0MztcdFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIEJJVChpKSk7XG4gXG4gXHQvKiBOVyB3aXRob3V0IENEIGlzIGlsbGVnYWwsIGFzIGlzIFBHIHdpdGhvdXQgUEUuICovXG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7XG4mIzQzO1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfUEcpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2VmZXJfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGt2bV9zcmVncyBzcmVncztcbiYjNDM7XHRpbnQgcmM7XG4mIzQzO1xuJiM0MztcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnNyZWdzKTtcbiYjNDM7XHRzcmVncy5lZmVyIHw9IGVmZXI7XG4mIzQzO1x0cmMgPSBfdmNwdV9zcmVnc19zZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuJiM0MztcdFRFU1RfQVNTRVJUKCFyYywgXCYjMzQ7RmFpbGVkIHRvIHNldCBzdXBwb3J0ZWQgRUZFUiBiaXRzICgweCVsbHgpXCYjMzQ7LCBzcmVncy5lZmVyKTtcbiYjNDM7XG4mIzQzO1x0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuJiM0MztcdFRFU1RfQVNTRVJUX0VRKHNyZWdzLmVmZXIsIGVmZXIpO1xuJiM0MztcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTE1FKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTlgpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9TVk1FKTtcbiYjNDM7XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfRkZYU1IpO1xuJiM0MztcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9BVVRPSUJSUyk7XG4gfVxuIFxuIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG5AQCAtMTMyLDYgJiM0MzsxNzEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0ICovXG4gXHR2bSA9IHZtX2NyZWF0ZV9iYXJlYm9uZXMoKTtcbiBcdHZjcHUgPSBfX3ZtX3ZjcHVfYWRkKHZtLCAwKTtcbiYjNDM7XHR0ZXN0X2VmZXJfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUik7XG4gXHR0ZXN0X2NyX2JpdHModmNwdSwgS1ZNX0FMV0FZU19BTExPV0VEX0NSNCk7XG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gXG5AQCAtMTUxLDYgJiM0MzsxOTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHQgICAgc3JlZ3MuYXBpY19iYXNlKTtcbiBcbiBcdHRlc3RfY3JfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKCkpO1xuJiM0MztcdHRlc3RfZWZlcl9iaXRzKHZjcHUsIGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKCkpO1xuIFxuIFx0a3ZtX3ZtX2ZyZWUodm0pO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzJiMzNDssCiAgICAmIzM0O2t2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyJiMzNDssCiAgICAmIzM0O2t2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlciYjMzQ7LAogICAgJiMzNDtrdm1fdmFsaWRfZWZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0mIzM5O3Mgc3JlZ3MgdmFsaWRhdGlvbiBsb2dpYyB0byBhbHNvIGNoZWNrIHRoZSBFRkVSIHJlZ2lzdGVyIHVzaW5nIGt2bV92YWxpZF9lZmVyKCkuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYWZmZWN0cyBLVk0gaW9jdGxzIChLVk1fU0VUX1NSRUdTLCBLVk1fU0VUX1NSRUdTMiwgS1ZNX1JVTikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBkYTBlMjI1ZTM0NjZhZWQ0MjZlMGY1NWRiNTc2MDUyZGJkNDA5YWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAxNCAwMDo0Mzo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9yZWdzLmMgYi9hcmNoL3g4Ni9rdm0vcmVncy5jCmluZGV4IGJkODE0Nzc5OGNjM2VlLi44ZjY2NDM4OTg5ZTQ3NCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3JlZ3MuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vcmVncy5jCkBAIC01NjQsNyAmIzQzOzU2NCw4IEBAIHN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKQogCX0KIAogCXJldHVybiBrdm1faXNfdmFsaWRfY3I0KHZjcHUsIHNyZWdzLSZndDtjcjQpICZhbXA7JmFtcDsKLQkgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy0mZ3Q7Y3IwKTsKJiM0MzsJICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtJmd0O2NyMCkgJmFtcDsmYW1wOwomIzQzOwkgICAgICAga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtJmd0O2VmZXIpOwogfQogCiBzdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCmluZGV4IDdkM2EyN2JjMGQ4NDJhLi5iMTYxMTc0ZWNlNDUzMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaApAQCAtMjA4LDYgJiM0MzsyMDgsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7CiAjZGVmaW5lCVg4Nl9GRUFUVVJFX1BFUkZDVFJfTkIJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyNCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfUEVSRkNUUl9MTEMJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyOCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfTlgJCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjApCiYjNDM7I2RlZmluZQlYODZfRkVBVFVSRV9GWFNSX09QVAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI1KQogI2RlZmluZQlYODZfRkVBVFVSRV9HQlBBR0VTCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjYpCiAjZGVmaW5lCVg4Nl9GRUFUVVJFX1JEVFNDUAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI3KQogI2RlZmluZQlYODZfRkVBVFVSRV9MTQkJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyOSkKQEAgLTIyNiw2ICYjNDM7MjI3LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUgewogI2RlZmluZSBYODZfRkVBVFVSRV9TRVYJCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMSkKICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX0VTCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMykKICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0VWX1NOUAkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDQpCiYjNDM7I2RlZmluZQlYODZfRkVBVFVSRV9BVVRPSUJSUwkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDgpCiAjZGVmaW5lCVg4Nl9GRUFUVVJFX0dQX09OX1VTRVJfQ1BVSUQJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDE3KQogI2RlZmluZQlYODZfRkVBVFVSRV9QRVJGTU9OX1YyCQlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMCkKICNkZWZpbmUJWDg2X0ZFQVRVUkVfTEJSX1BNQ19GUkVFWkUJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIyLCAwLCBFQVgsIDIpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMKaW5kZXggOGU2NTRjYzlhYjE2ODcuLjU2MmFmYWIzNzhkMTFlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jCkBAIC0yMSwyMCAmIzQzOzIxLDIwIEBACiAjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtwcm9jZXNzb3IuaCYjMzQ7CiAKLSNkZWZpbmUgVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjciwgb3JpZywgYml0KQkJCQlcCiYjNDM7I2RlZmluZSBURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgcmVnLCBvcmlnLCBiaXQpCQkJCVwKIGRvIHsJCQkJCQkJCQkJXAogCXN0cnVjdCBrdm1fc3JlZ3MgbmV3OwkJCQkJCQlcCiAJaW50IHJjOwkJCQkJCQkJCVwKIAkJCQkJCQkJCQlcCiAJLyogU2tpcCB0aGUgc3ViLXRlc3QsIHRoZSBmZWF0dXJlL2JpdCBpcyBzdXBwb3J0ZWQuICovCQkJXAotCWlmIChvcmlnLmNyICZhbXA7IGJpdCkJCQkJCQkJXAomIzQzOwlpZiAob3JpZy5yZWcgJmFtcDsgYml0KQkJCQkJCQlcCiAJCWJyZWFrOwkJCQkJCQkJXAogCQkJCQkJCQkJCVwKLQltZW1jcHkoJmFtcDtuZXcsICZhbXA7b3JpZywgc2l6ZW9mKHNyZWdzKSk7CQkJCQlcCi0JbmV3LmNyIHw9IGJpdDsJCQkJCQkJCVwKJiM0MzsJbWVtY3B5KCZhbXA7bmV3LCAmYW1wO29yaWcsIHNpemVvZihuZXcpKTsJCQkJCVwKJiM0MzsJbmV3LnJlZyB8PSBiaXQ7CQkJCQkJCQlcCiAJCQkJCQkJCQkJXAogCXJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsICZhbXA7bmV3KTsJCQkJCVwKLQlURVNUX0FTU0VSVChyYywgJiMzNDtLVk0gYWxsb3dlZCBpbnZhbGlkICYjMzQ7ICNjciAmIzM0OyBiaXQgKDB4JWx4KSYjMzQ7LCBiaXQpOwlcCiYjNDM7CVRFU1RfQVNTRVJUKHJjLCAmIzM0O0tWTSBhbGxvd2VkIGludmFsaWQgJiMzNDsgI3JlZyAmIzM0OyBiaXQgKDB4JWxseCkmIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZyliaXQpOyBcCiAJCQkJCQkJCQkJXAogCS8qIFNhbml0eSBjaGVjayB0aGF0IEtWTSBkaWRuJiMzOTt0IGNoYW5nZSBhbnl0aGluZy4gKi8JCQlcCiAJdmNwdV9zcmVnc19nZXQodmNwdSwgJmFtcDtuZXcpOwkJCQkJCVwKQEAgLTQ2LDYgJiM0Mzs0Niw4IEBAIGRvIHsJCQkJCQkJCQkJXAogCQkJCVg4Nl9DUjRfTUNFIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8CVwKIAkJCQlYODZfQ1I0X09TRlhTUiB8IFg4Nl9DUjRfT1NYTU1FWENQVCkKIAomIzQzOyNkZWZpbmUgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIgRUZFUl9TQ0UKJiM0MzsKIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKQogewogCXU2NCBjcjQgPSBLVk1fQUxXQVlTX0FMTE9XRURfQ1I0OwpAQCAtNzQsNiAmIzQzOzc2LDI0IEBAIHN0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfY3I0X2ZlYXR1cmVfYml0cyh2b2lkKQogCXJldHVybiBjcjQ7CiB9CiAKJiM0MztzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2VmZXJfZmVhdHVyZV9iaXRzKHZvaWQpCiYjNDM7ewomIzQzOwl1NjQgZWZlciA9IEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSOwomIzQzOwomIzQzOwlpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTE0pKQomIzQzOwkJZWZlciB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9OWCkpCiYjNDM7CQllZmVyIHw9IEVGRVJfTlg7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKQomIzQzOwkJZWZlciB8PSBFRkVSX1NWTUU7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpCiYjNDM7CQllZmVyIHw9IEVGRVJfRkZYU1I7CiYjNDM7CWlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpCiYjNDM7CQllZmVyIHw9IEVGRVJfQVVUT0lCUlM7CiYjNDM7CiYjNDM7CXJldHVybiBlZmVyOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpCiB7CiAJc3RydWN0IGt2bV9zcmVncyBzcmVnczsKQEAgLTk2LDI2ICYjNDM7MTE2LDQ1IEBAIHN0YXRpYyB2b2lkIHRlc3RfY3JfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBjcjQpCiAJCSAgICAoc3JlZ3MuY3I0ICZhbXA7IFg4Nl9DUjRfUEtFKSA/ICYjMzQ7c2V0JiMzNDsgOiAmIzM0O2NsZWFyJiMzNDspOwogCiAJdmNwdV9zcmVnc19nZXQodmNwdSwgJmFtcDtzcmVncyk7Ci0JVEVTVF9BU1NFUlQoc3JlZ3MuY3I0ID09IGNyNCwgJiMzNDtzcmVncy5DUjQgKDB4JWxseCkgIT0gQ1I0ICgweCVseCkmIzM0OywKLQkJICAgIHNyZWdzLmNyNCwgY3I0KTsKLQotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1ZNWEUpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QQ0lERSk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpOwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTsKLQlURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01BUCk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7CiYjNDM7CVRFU1RfQVNTRVJUX0VRKHNyZWdzLmNyNCwgY3I0KTsKJiM0MzsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0xBNTcpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9WTVhFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0ZTR1NCQVNFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUENJREUpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01FUCk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNQVApOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpOwogCiAJZm9yIChpID0gMzI7IGkgJmx0OyA2NDsgaSYjNDM7JiM0MzspCi0JCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTsKJiM0MzsJCVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBCSVQoaSkpOwogCiAJLyogTlcgd2l0aG91dCBDRCBpcyBpbGxlZ2FsLCBhcyBpcyBQRyB3aXRob3V0IFBFLiAqLwotCVRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7Ci0JVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX1BHKTsKJiM0MzsJVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9QRyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfZWZlcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzOwomIzQzOwlpbnQgcmM7CiYjNDM7CiYjNDM7CXZjcHVfc3JlZ3NfZ2V0KHZjcHUsICZhbXA7c3JlZ3MpOwomIzQzOwlzcmVncy5lZmVyIHw9IGVmZXI7CiYjNDM7CXJjID0gX3ZjcHVfc3JlZ3Nfc2V0KHZjcHUsICZhbXA7c3JlZ3MpOwomIzQzOwlURVNUX0FTU0VSVCghcmMsICYjMzQ7RmFpbGVkIHRvIHNldCBzdXBwb3J0ZWQgRUZFUiBiaXRzICgweCVsbHgpJiMzNDssIHNyZWdzLmVmZXIpOwomIzQzOwomIzQzOwl2Y3B1X3NyZWdzX2dldCh2Y3B1LCAmYW1wO3NyZWdzKTsKJiM0MzsJVEVTVF9BU1NFUlRfRVEoc3JlZ3MuZWZlciwgZWZlcik7CiYjNDM7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9MTUUpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTlgpOwomIzQzOwlURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfU1ZNRSk7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9GRlhTUik7CiYjNDM7CVRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9BVVRPSUJSUyk7CiB9CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCkBAIC0xMzIsNiAmIzQzOzE3MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJdm0gPSB2bV9jcmVhdGVfYmFyZWJvbmVzKCk7CiAJdmNwdSA9IF9fdm1fdmNwdV9hZGQodm0sIDApOwomIzQzOwl0ZXN0X2VmZXJfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUik7CiAJdGVzdF9jcl9iaXRzKHZjcHUsIEtWTV9BTFdBWVNfQUxMT1dFRF9DUjQpOwogCWt2bV92bV9mcmVlKHZtKTsKIApAQCAtMTUxLDYgJiM0MzsxOTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkgICAgc3JlZ3MuYXBpY19iYXNlKTsKIAogCXRlc3RfY3JfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKCkpOwomIzQzOwl0ZXN0X2VmZXJfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9lZmVyX2ZlYXR1cmVfYml0cygpKTsKIAogCWt2bV92bV9mcmVlKHZtKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjE1CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQmIzM5O3MgdG91Y2hpbmcgYGFyY2gveDg2L2t2bS9yZWdzLmNgLCBzcGVjaWZpY2FsbHkuIFRoZSBjb3JlIGNoYW5nZSBpcyBzdHJhaWdodGZvcndhcmQ6IGEgbmV3IGNoZWNrIGZvciBga3ZtX3ZhbGlkX2VmZXJgIGlzIGJlaW5nIGFkZGVkIHRvIHRoZSBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBmdW5jdGlvbi4gVGhpcyBtYWtlcyBzZW5zZTsgd2Ugd2FudCB0byBlbnN1cmUgdGhlIHN5c3RlbSByZWdpc3RlcnMgYXJlIHZhbGlkIGJlZm9yZSB3ZSB1c2UgdGhlbS4gTm93IEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIFdoZXJlIGlzIGBrdm1faXNfdmFsaWRfc3JlZ3NgIGFjdHVhbGx5ICp1c2VkKj8gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHVzZSBncmVwcGVyIHRvIGZpbmQgYWxsIGluc3RhbmNlcyBvZiB0aGF0IGZ1bmN0aW9uLiBUaGF0JiMzOTtsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmdWxseSBhc3Nlc3MgdGhlIHBhdGNoJiMzOTtzIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1faXNfdmFsaWRfc3JlZ3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3JlZ3MuYz01MjY9dm9pZCBrdm1fdmNwdV9pb2N0bF94ODZfZ2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NDQtXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU0NTpzdGF0aWMgYm9vbCBrdm1faXNfdmFsaWRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTQ2LXtcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU3MT1zdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNTc2LVxuYXJjaC94ODYva3ZtL3JlZ3MuYzo1Nzc6XHRpZiAoIWt2bV9pc192YWxpZF9zcmVncyh2Y3B1LCBzcmVncykpXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3OC1cdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIFNSRUdzIGFuZCBLVk0mIzM5O3MgSW50ZXJuYWwgTG9naWMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBga3ZtX2lzX3ZhbGlkX3NyZWdzYC4gVGhhdCBmdW5jdGlvbiYjMzk7cyBwcmltYXJ5IHB1cnBvc2UgaXMgY2xlYXJseSB0byB2YWxpZGF0ZSB0aGUgU3BlY2lhbC1QdXJwb3NlIFJlZ2lzdGVyIChTUkVHKSBzdGF0ZSwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgS1ZNJiMzOTtzIHZpcnR1YWwgQ1BVIG1hbmFnZW1lbnQuIEFuZCBJIGtub3cgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIHdpdGhpbiBgX19zZXRfc3JlZ3NfY29tbW9uYC4gTm93LCB0byB0cnVseSB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSwgSSBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiB0aGF0IGBfX3NldF9zcmVnc19jb21tb25gIGZ1bmN0aW9uLiBXaGVyZSBlbHNlIGlzIHRoaXMgY2VudHJhbCBmdW5jdGlvbiBiZWluZyB1dGlsaXplZCBpbiB0aGUgaHlwZXJ2aXNvcj8gV2hhdCBraW5kIG9mIG9wZXJhdGlvbnMgYXJlIHRyaWdnZXJpbmcgdGhlIG5lZWQgdG8gc2V0IHRoZXNlIFNSRUdzPyBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsIHNpdGVzIHdpbGwgcmV2ZWFsIHRoZSBkaWZmZXJlbnQgc2NlbmFyaW9zIHVuZGVyIHdoaWNoIHRoZSB2aXJ0dWFsIENQVSYjMzk7cyBzdGF0ZSBpcyBiZWluZyBtZXRpY3Vsb3VzbHkgbWFuYWdlZCBhbmQgdmFsaWRhdGVkIHdpdGhpbiB0aGUgS1ZNIGZyYW1ld29yay4gSSBuZWVkIHRvIHNlZSB3aGVyZSB0aGlzIGFsbCBmaXRzIGludG8gdGhlIGxhcmdlciBjb250cm9sIGZsb3cuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpbmQgdGhvc2UgY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3NldF9zcmVnc19jb21tb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3JlZ3MuYz01NDU9c3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NzAtXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU3MTpzdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NzItXHRcdFx0ICAgICAgaW50ICptbXVfcmVzZXRfbmVlZGVkLCBib29sIHVwZGF0ZV9wZHB0cnMpXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYz02Mzg9c3RhdGljIGludCBfX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQxLVx0aW50IG1tdV9yZXNldF9uZWVkZWQgPSAwO1xuYXJjaC94ODYva3ZtL3JlZ3MuYzo2NDI6XHRpbnQgcmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIHNyZWdzLCBcdTAwMjZtbXVfcmVzZXRfbmVlZGVkLCB0cnVlKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQzLVxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmM9Njc5PWludCBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTMtXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY5NDpcdHJldCA9IF9fc2V0X3NyZWdzX2NvbW1vbih2Y3B1LCAoc3RydWN0IGt2bV9zcmVncyAqKXNyZWdzMixcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjk1LVx0XHRcdFx0IFx1MDAyNm1tdV9yZXNldF9uZWVkZWQsICF2YWxpZF9wZHB0cnMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NzcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIHRoZSBJbnRlcnBsYXkgb2YgU2VnbWVudCBSZWdpc3RlciBTZXR0aW5nIEZ1bmN0aW9ucyoqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgYSBjbGVhciBwYXR0ZXJuIGhlcmUuIGBfX3NldF9zcmVnc19jb21tb25gIGlzIHRoZSB3b3JraG9yc2UsIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aGUgY29tbW9uIGxvZ2ljIGludm9sdmVkIGluIHNldHRpbmcgc2VnbWVudCByZWdpc3RlcnMuIEl0JiMzOTtzIGNhbGxlZCBieSBib3RoIGBfX3NldF9zcmVnc2AgYW5kLCBpbXBvcnRhbnRseSwgYGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBhIGxldmVsIG9mIG1vZHVsYXJpdHkgYW5kIHJldXNhYmlsaXR5LCB3aGljaCBpcyB3aGF0IEkmIzM5O2QgZXhwZWN0IHRvIHNlZSBpbiBhIHdlbGwtZGVzaWduZWQgS1ZNIGltcGxlbWVudGF0aW9uLiBOb3csIGBfX3NldF9zcmVnc2AgaXRzZWxmLCBqdWRnaW5nIGJ5IHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXMgdmVyeSBsaWtlbHkgdGhlIGZ1bmN0aW9uIHVzZWQgYnkgdGhlIG9sZGVyIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzYCBpb2N0bC4gSXQgc2VlbXMgbGlrZSB0aGUgb2J2aW91cyBjb25uZWN0aW9uLCBidXQgaXQmIzM5O3MgYWx3YXlzIGJlc3QgdG8gYmUgc3VyZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyB0aGUgY2FzZSwgYnV0IHRoZSBldmlkZW5jZSBwb2ludHMgdGhhdCB3YXkgc3Ryb25nbHkuIEkgbmVlZCB0byBkaWcgaW50byBgX19zZXRfc3JlZ3NgIG5vdyB0byB2ZXJpZnkgbXkgc3VzcGljaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fc2V0X3NyZWdzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9yZWdzLmM9NTQ1PXN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNTcwLVxuYXJjaC94ODYva3ZtL3JlZ3MuYzo1NzE6c3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTcyLVx0XHRcdCAgICAgIGludCAqbW11X3Jlc2V0X25lZWRlZCwgYm9vbCB1cGRhdGVfcGRwdHJzKVxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNjM3LVxuYXJjaC94ODYva3ZtL3JlZ3MuYzo2Mzg6c3RhdGljIGludCBfX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuYXJjaC94ODYva3ZtL3JlZ3MuYy02Mzkte1xuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQxLVx0aW50IG1tdV9yZXNldF9uZWVkZWQgPSAwO1xuYXJjaC94ODYva3ZtL3JlZ3MuYzo2NDI6XHRpbnQgcmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIHNyZWdzLCBcdTAwMjZtbXVfcmVzZXRfbmVlZGVkLCB0cnVlKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQzLVxuLS1cbmFyY2gveDg2L2t2bS9yZWdzLmM9NjY0PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy02NzMtXHR2Y3B1X2xvYWQodmNwdSk7XG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY3NDpcdHJldCA9IF9fc2V0X3NyZWdzKHZjcHUsIHNyZWdzKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjc1LVx0dmNwdV9wdXQodmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYz02Nzk9aW50IGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTY5My1cbmFyY2gveDg2L2t2bS9yZWdzLmM6Njk0Olx0cmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIChzdHJ1Y3Qga3ZtX3NyZWdzICopc3JlZ3MyLFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTUtXHRcdFx0XHQgXHUwMDI2bW11X3Jlc2V0X25lZWRlZCwgIXZhbGlkX3BkcHRycyk7XG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYz03MjU9aW50IGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYy03MzQtXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjczNTpcdFx0aWYgKF9fc2V0X3NyZWdzKHZjcHUsIFx1MDAyNnNyZWdzKSlcbmFyY2gveDg2L2t2bS9yZWdzLmMtNzM2LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NjIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTUkVHIFZhbGlkYXRpb24gUHJvY2VzcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCB3aGVuZXZlciB3ZSYjMzk7cmUgc2V0dGluZyBzZWdtZW50IHJlZ2lzdGVycyAoU1JFR1MpIHRocm91Z2ggYW4gaW9jdGwgY2FsbCDigJMgc3BlY2lmaWNhbGx5IGBLVk1fU0VUX1NSRUdTYCwgYEtWTV9TRVRfU1JFR1MyYCwgb3IgZXZlbiBkdXJpbmcgYEtWTV9SVU5gLiBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbiwgY3JpdGljYWwgZm9yIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGVtdWxhdGlvbiwgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLgoKTm93LCB0aGlzIHBhdGNoIGludHJvZHVjZXMgc29tZXRoaW5nIG5ldzogaXQmIzM5O3MgYWRkaW5nIGEgY2FsbCB0byBga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtJmd0O2VmZXIpYCB3aXRoaW4gYGt2bV9pc192YWxpZF9zcmVnc2AuIFRoZSBpbXBsaWNhdGlvbiBpcyBjbGVhcjogd2UmIzM5O3JlIG5vdyB2YWxpZGF0aW5nIHRoZSBFeHRlbmRlZCBGZWF0dXJlIEVuYWJsZSBSZWdpc3RlciAoRUZFUikgYWxvbmdzaWRlIHRoZSBvdGhlciBzZWdtZW50IHJlZ2lzdGVycy4gVGhpcyBpcyBhIGdvb2QgdGhpbmcg4oCTIGl0IGhlbHBzIG1haW50YWluIHN5c3RlbSBzdGFiaWxpdHkuIFNvLCBsZXQmIzM5O3MgZGlnIGludG8gYGt2bV92YWxpZF9lZmVyYCBhbmQgc2VlIGV4YWN0bHkgd2hhdCBjaGVja3MgaXQmIzM5O3MgcGVyZm9ybWluZy4gV2hhdCBjb25kaXRpb25zIGFyZSBjb25zaWRlcmVkIGFjY2VwdGFibGUgb3IgaW52YWxpZD8gVGhpcyBpcyB3aGVyZSB0aGUgcGF0Y2ggd2lsbCByZWFsbHkgc2hvdyBpdHMgdmFsdWUsIGFuZCB3aGVyZSBJJiMzOTtsbCBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgYW55IHNlY3VyaXR5IG9yIHN0YWJpbGl0eSBpbXByb3ZlbWVudHMgaXQgcHJvdmlkZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9tc3JzLmM9NTg4PXN0YXRpYyBpbnQgZG9fZ2V0X2ZlYXR1cmVfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW5kZXgsIHU2NCAqZGF0YSlcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTU5My1cbmFyY2gveDg2L2t2bS9tc3JzLmM6NTk0OnN0YXRpYyBib29sIF9fa3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbmFyY2gveDg2L2t2bS9tc3JzLmMtNTk1LXtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYxNC19XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYxNTpib29sIGt2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYxNi17XG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYy02MTktXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYyMDpcdHJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpO1xuYXJjaC94ODYva3ZtL21zcnMuYy02MjEtfVxuYXJjaC94ODYva3ZtL21zcnMuYzo2MjI6RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV92YWxpZF9lZmVyKTtcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjIzLVxuYXJjaC94ODYva3ZtL21zcnMuYz02MjQ9c3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYy02MzMtXHRpZiAoIW1zcl9pbmZvLVx1MDAzZWhvc3RfaW5pdGlhdGVkKSB7XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYzNDpcdFx0aWYgKCFfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpKVxuYXJjaC94ODYva3ZtL21zcnMuYy02MzUtXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL21zcnMuaD02MT12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7XG5hcmNoL3g4Ni9rdm0vbXNycy5oOjYyOmJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG5hcmNoL3g4Ni9rdm0vbXNycy5oLTYzLWludCBrdm1fZW11bGF0ZV9tc3JfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0ICpkYXRhKTtcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU0NT1zdGF0aWMgYm9vbCBrdm1faXNfdmFsaWRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU2Ny1cdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVx1MDAzZWNyMCkgXHUwMDI2XHUwMDI2XG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU2ODpcdCAgICAgICBrdm1fdmFsaWRfZWZlcih2Y3B1LCBzcmVncy1cdTAwM2VlZmVyKTtcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTY5LX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTQzOD1zdGF0aWMgYm9vbCBuZXN0ZWRfdm1jYl9jaGVja19zYXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ3MS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDcyOlx0aWYgKENDKCFrdm1fdmFsaWRfZWZlcih2Y3B1LCBzYXZlLVx1MDAzZWVmZXIpKSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDczLVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yNzMyPXN0YXRpYyBpbnQgZWZlcl90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3MzgtXHQgKiBDbGVhciB0aGUgRUZFUl9TVk1FIGJpdCBmcm9tIEVGRVIuIFRoZSBTVk0gY29kZSBhbHdheXMgc2V0cyB0aGlzXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjI3Mzk6XHQgKiBiaXQgaW4gc3ZtX3NldF9lZmVyKCksIGJ1dCBfX2t2bV92YWxpZF9lZmVyKCkgY2hlY2tzIGl0IGFnYWluc3RcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjc0MC1cdCAqIHdoZXRoZXIgdGhlIGd1ZXN0IGhhcyBYODZfRkVBVFVSRV9TVk0gLSB0aGlzIGF2b2lkcyBhIGZhaWx1cmUgaWZcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMxNzA9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2hvc3Rfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzIzMi1cdGlmICh2bWNzMTItXHUwMDNldm1fZXhpdF9jb250cm9scyBcdTAwMjYgVk1fRVhJVF9MT0FEX0lBMzJfRUZFUikge1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozMjMzOlx0XHRpZiAoQ0MoIWt2bV92YWxpZF9lZmVyKHZjcHUsIHZtY3MxMi1cdTAwM2Vob3N0X2lhMzJfZWZlcikpIHx8XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMyMzQtXHRcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXHUwMDNlaG9zdF9pYTMyX2VmZXIgXHUwMDI2IEVGRVJfTE1BKSkgfHxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMzMDY9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2d1ZXN0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMzNzEtXHQgICAgKHZtY3MxMi1cdTAwM2V2bV9lbnRyeV9jb250cm9scyBcdTAwMjYgVk1fRU5UUllfTE9BRF9JQTMyX0VGRVIpKSB7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjMzNzI6XHRcdGlmIChDQygha3ZtX3ZhbGlkX2VmZXIodmNwdSwgdm1jczEyLVx1MDAzZWd1ZXN0X2lhMzJfZWZlcikpIHx8XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMzNzMtXHRcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXHUwMDNlZ3Vlc3RfaWEzMl9lZmVyIFx1MDAyNiBFRkVSX0xNQSkpIHx8XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MzYKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAyODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIEtWTSwgc3BlY2lmaWNhbGx5IGNvcmUga2VybmVsIGxvZ2ljIHRoYXQmIzM5O3MgcmVhY2hhYmxlLiBUaGF0IHNjcmVhbXMgJiMzNDtwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQuJiMzNDsgVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUga2V5IGZ1bmN0aW9ucy4gSSBzZWUgYSBmZXcgbWVudGlvbmVkOiBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgYF9fc2V0X3NyZWdzX2NvbW1vbmAsIGBfX3NldF9zcmVnc2AsIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAsIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AsIGFuZCBga3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyYC4KCldhaXQgYSBtaW51dGUsIGhvbGQgdXAuIExldCBtZSBtYWtlIHN1cmUgSSYjMzk7bSBub3Qgd2FzdGluZyB0aW1lIG9uIGRlYWQgZW5kcy4gYGt2bV9pc192YWxpZF9zcmVnc2AsIGBfX3NldF9zcmVnc19jb21tb25gLCBhbmQgYF9fc2V0X3NyZWdzYCwgYWxsIGxvb2sgdG8gYmUgc3RhdGljIGZ1bmN0aW9ucy4gTm90IGFzIGlkZWFsIGZvciBkaXJlY3QgZnV6emluZywgdGhvdWdoIHRoZXkgY291bGQgc3RpbGwgYmUgcmVsZXZhbnQgdGhyb3VnaCBpbmxpbmluZyBvciBjYWxsLWNoYWlucy4KClRoYXQgbGVhdmVzIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAgYW5kIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AsIHdoaWNoIGFyZSBleHBvcnRlZCwgc28gdGhleSBhcmUgdGhlIHByaW1lIHRhcmdldHMuIEFuZCBJIG5lZWQgdG8gY29uc2lkZXIgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAgYXMgaXQgYXBwZWFycyB0byBiZSBkaXJlY3RseSB1c2VyLWZhY2luZyBhbmQgdGhlcmVmb3JlIGEgZ29vZCB0YXJnZXQuCgpPa2F5LCBzbyB0aGUgZnVuY3Rpb25zIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gZm9yIHRoaXMgZnV6emluZyBjYW1wYWlnbiBhcmUgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYCwgYGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyYCwgYW5kIGBrdm1fcnVuX3N5bmNfcmVnc19mcm9tX3VzZXJgLiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8ga2VlcCBhbiBleWUgb24gaG93IHRoZSBzdGF0aWMgZnVuY3Rpb25zLCBsaWtlIGBrdm1faXNfdmFsaWRfc3JlZ3NgIGFyZSB1c2VkIGluIHRoZSBvdmVyYWxsIGNvbnRyb2wgZmxvdy4KCk5vdywgbGV0JiMzOTtzIHNlZSwgdGhlIGNvbmZpZyB2YXJpYWJsZSBpcyBgS1ZNYC4gSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgdG8gc2VlIHdoYXQgZXhhY3RseSBlbmFibGVzIHRoZSBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZz0xNj1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE3LVxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjE4OmNvbmZpZyBLVk1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMC1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzozMTpjb25maWcgS1ZNX01JUFNfREVCVUdfQ09QMF9DT1VOVEVSU1xuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtNYWludGFpbiBjb3VudGVycyBmb3IgQ09QMCBhY2Nlc3Nlc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjY6Y29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI3LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI5OmNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMC1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzMtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzQ6Y29uZmlnIEtWTV9CT09LM1NfNjRfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM1LVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNy1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozODpjb25maWcgS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM5LVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQzLVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ0LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQ1OmNvbmZpZyBLVk1fQk9PSzNTXzMyXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfMzIgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX0JPT0szU182NFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYzLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzY0IHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNzgtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Nzk6Y29uZmlnIEtWTV9CT09LM1NfNjRfSFZcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy04MC1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy05OS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMDA6Y29uZmlnIEtWTV9CT09LM1NfNjRfUFJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCB3aXRob3V0IHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjY6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjctXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyOTpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O0RldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDhfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIGh5cGVydmlzb3IgcmVhbC1tb2RlIGNvZGUgKGZvciBQT1dFUjgpXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1Ni1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0h5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTgzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4NDpjb25maWcgS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg1LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4Ni1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODc6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgZXhpdCB0aW1pbmdcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk3LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5ODpjb25maWcgS1ZNX0U1MDBWMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5OS1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIxMzpjb25maWcgS1ZNX0U1MDBNQ1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNC1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwME1DL0U1NTAwL0U2NTAwIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX01QSUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzAtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQwLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0MTpjb25maWcgS1ZNX1hJQ1NcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDItXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUwLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI1MTpjb25maWcgS1ZNX1hJVkVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTItXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnPTIyPXNvdXJjZSBcJiMzNDthcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21pY3Jvd2F0dC9LY29uZmlnXCYjMzQ7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjMtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc6MjQ6Y29uZmlnIEtWTV9HVUVTVFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtLVk0gR3Vlc3Qgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzoxOTpjb25maWcgS1ZNXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXHRkZWZfdHJpc3RhdGUgeVxuLS1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuLS1cbmFyY2gveDg2L0tjb25maWc9ODI2PXNvdXJjZSBcJiMzNDthcmNoL3g4Ni94ZW4vS2NvbmZpZ1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZy04MjctXG5hcmNoL3g4Ni9LY29uZmlnOjgyODpjb25maWcgS1ZNX0dVRVNUXG5hcmNoL3g4Ni9LY29uZmlnLTgyOS1cdGJvb2wgXCYjMzQ7S1ZNIEd1ZXN0IHN1cHBvcnQgKGluY2x1ZGluZyBrdm1jbG9jaylcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7SW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0O0kvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXHRib29sIFwmIzM0O1N5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVx0Ym9vbCBcJiMzNDtQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cdGJvb2xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcJiMzNDtcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTMtXG52aXJ0L2t2bS9LY29uZmlnOjQ6Y29uZmlnIEtWTV9DT01NT05cbnZpcnQva3ZtL0tjb25maWctNS0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9Mzk9Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTQyLVxudmlydC9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX01NSU9cbnZpcnQva3ZtL0tjb25maWctNDQtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNDUtXG52aXJ0L2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQVNZTkNfUEZcbnZpcnQva3ZtL0tjb25maWctNDctICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTQ5LSMgVG9nZ2xlIHRvIHN3aXRjaCBiZXR3ZWVuIGRpcmVjdCBub3RpZmljYXRpb24gYW5kIGJhdGNoIGpvYlxudmlydC9rdm0vS2NvbmZpZzo1MDpjb25maWcgS1ZNX0FTWU5DX1BGX1NZTkNcbnZpcnQva3ZtL0tjb25maWctNTEtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTU5PWNvbmZpZyBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXG4tLVxudmlydC9rdm0vS2NvbmZpZy02MS1cbnZpcnQva3ZtL0tjb25maWc6NjI6Y29uZmlnIEtWTV9WRklPXG52aXJ0L2t2bS9LY29uZmlnLTYzLSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz02NT1jb25maWcgSEFWRV9LVk1fSU5WQUxJRF9XQUtFVVBTXG4tLVxudmlydC9rdm0vS2NvbmZpZy02Ny1cbnZpcnQva3ZtL0tjb25maWc6Njg6Y29uZmlnIEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxudmlydC9rdm0vS2NvbmZpZy02OS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy03MC1cbnZpcnQva3ZtL0tjb25maWc6NzE6Y29uZmlnIEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcbnZpcnQva3ZtL0tjb25maWctNzItICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNzMtXG52aXJ0L2t2bS9LY29uZmlnOjc0OmNvbmZpZyBLVk1fQ09NUEFUXG52aXJ0L2t2bS9LY29uZmlnLTc1LSAgICAgICBkZWZfYm9vbCB5XG4tLVxudmlydC9rdm0vS2NvbmZpZz05MT1jb25maWcgSEFWRV9LVk1fUE1fTk9USUZJRVJcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTkzLVxudmlydC9rdm0vS2NvbmZpZzo5NDpjb25maWcgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcbnZpcnQva3ZtL0tjb25maWctOTUtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctOTYtXG52aXJ0L2t2bS9LY29uZmlnOjk3OmNvbmZpZyBLVk1fRUxJREVfVExCX0ZMVVNIX0lGX1lPVU5HXG52aXJ0L2t2bS9LY29uZmlnLTk4LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTk5LVxudmlydC9rdm0vS2NvbmZpZzoxMDA6Y29uZmlnIEtWTV9NTVVfTE9DS0xFU1NfQUdJTkdcbnZpcnQva3ZtL0tjb25maWctMTAxLSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTEwMi1cbnZpcnQva3ZtL0tjb25maWc6MTAzOmNvbmZpZyBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xudmlydC9rdm0vS2NvbmZpZy0xMDQtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctMTA1LVxudmlydC9rdm0vS2NvbmZpZzoxMDY6Y29uZmlnIEtWTV9HVUVTVF9NRU1GRFxudmlydC9rdm0vS2NvbmZpZy0xMDctICAgICAgIHNlbGVjdCBYQVJSQVlfTVVMVElcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NTUKCQkJCQkJCW91dHB1dDogMTYxCgkJCQkJCQl0aG91Z2h0czogNDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBDb25maWd1cmF0aW9uIGFuZCBSZWxldmFudCBTeW1ib2xzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBLVk0gY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5LiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGZvY3VzIHN5bWJvbHMgZm9yIHRoaXMgYW5hbHlzaXMuIEkmIzM5O3ZlIGluaXRpYWxseSBmbGFnZ2VkIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AsIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAsIGFuZCBga3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyYCBhcyBzdHJvbmcgY2FuZGlkYXRlcy4gSG93ZXZlciwgSSBzaG91bGQgYWxzbyBpbmNsdWRlIGBrdm1fdmFsaWRfZWZlcmAgc2luY2UgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHdpZGVseSB1c2VkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBrdm1fdmFsaWRfZWZlcmAgaXMgZXhwb3J0ZWQsIHNvIGxldCBtZSBxdWlja2x5IHZlcmlmeSB3aXRoIGBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3ZhbGlkX2VmZXIpO2AuIFllcywgdGhhdCYjMzk7cyBmaW5lLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIHRoZSBvdGhlciBzeW1ib2xzIGFyZSBleHBvcnRlZCB0b28uIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAgaXMgbm90IGV4cG9ydGVkLCBidXQgaXQgaXMgYSBnbG9iYWwgZnVuY3Rpb24uIFNpbWlsYXJseSwgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYCBhbmQgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAgYXJlIGdsb2JhbCB0b28uIFNvLCBhbGwgZ29vZC4KCldhaXQsIGxvb2tpbmcgYXQgaXQsIGBrdm1fdmFsaWRfZWZlcmAgaXMgY2FsbGVkIGluIGBuZXN0ZWRfdm1jYl9jaGVja19zYXZlYCwgYGVmZXJfdHJhcGAsIGBuZXN0ZWRfdm14X2NoZWNrX2hvc3Rfc3RhdGVgLCBhbmQgYG5lc3RlZF92bXhfY2hlY2tfZ3Vlc3Rfc3RhdGVgLiBJdCBsb29rcyBsaWtlIGBrdm1fdmFsaWRfZWZlcmAgaXMgYWN0dWFsbHkgYSBncmVhdCBzeW1ib2wgaW4gaXRzZWxmLCBzbyBJJiMzOTttIHB1dHRpbmcgaXQgaW4uCgpTbywgbGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBwYXRjaCBhZ2Fpbi4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGBrdm1fdmFsaWRfZWZlcih2Y3B1LCBzcmVncy0mZ3Q7ZWZlcilgIHRvIGBrdm1faXNfdmFsaWRfc3JlZ3NgLCBzbyB0aGUgcGF0Y2ggaXMgZnVuY3Rpb25hbC4KCkluIHNob3J0LCBteSBjb25jbHVzaW9ucyBhcmUgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyBLVk0sIGFuZCBteSBmb2N1cyBzeW1ib2xzIGFyZSBub3cgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYCwgYGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyYCwgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAsIGFuZCBga3ZtX3ZhbGlkX2VmZXJgLgoKVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7a3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczImIzM0OywKICAgICYjMzQ7a3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyJiMzNDssCiAgICAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSYjMzk7cyBzcmVncyB2YWxpZGF0aW9uIGxvZ2ljIHRvIGFsc28gY2hlY2sgdGhlIEVGRVIgcmVnaXN0ZXIgdXNpbmcga3ZtX3ZhbGlkX2VmZXIoKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhZmZlY3RzIEtWTSBpb2N0bHMgKEtWTV9TRVRfU1JFR1MsIEtWTV9TRVRfU1JFR1MyLCBLVk1fUlVOKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3MmIzM0OywKICAgICYjMzQ7a3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczImIzM0OywKICAgICYjMzQ7a3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyJiMzNDssCiAgICAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSYjMzk7cyBzcmVncyB2YWxpZGF0aW9uIGxvZ2ljIHRvIGFsc28gY2hlY2sgdGhlIEVGRVIgcmVnaXN0ZXIgdXNpbmcga3ZtX3ZhbGlkX2VmZXIoKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhZmZlY3RzIEtWTSBpb2N0bHMgKEtWTV9TRVRfU1JFR1MsIEtWTV9TRVRfU1JFR1MyLCBLVk1fUlVOKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQzOjU1LjEwMDg5MTIzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTYwMzY1MTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzXCIsXG4gICAgXCJrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMlwiLFxuICAgIFwia3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyXCIsXG4gICAgXCJrdm1fdmFsaWRfZWZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSdzIHNyZWdzIHZhbGlkYXRpb24gbG9naWMgdG8gYWxzbyBjaGVjayB0aGUgRUZFUiByZWdpc3RlciB1c2luZyBrdm1fdmFsaWRfZWZlcigpLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgS1ZNIGlvY3RscyAoS1ZNX1NFVF9TUkVHUywgS1ZNX1NFVF9TUkVHUzIsIEtWTV9SVU4pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0Mzo1NS4xMDA5MTA4NjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODExMTI5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBkYTBlMjI1ZTM0NjZhZWQ0MjZlMGY1NWRiNTc2MDUyZGJkNDA5YWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDA6NDM6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3JlZ3MuYyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcXG5pbmRleCBiZDgxNDc3OThjYzNlZS4uOGY2NjQzODk4OWU0NzQgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3JlZ3MuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcXG5AQCAtNTY0LDcgKzU2NCw4IEBAIHN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4ga3ZtX2lzX3ZhbGlkX2NyNCh2Y3B1LCBzcmVncy1cXHUwMDNlY3I0KSBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgICAga3ZtX2lzX3ZhbGlkX2NyMCh2Y3B1LCBzcmVncy1cXHUwMDNlY3IwKTtcXG4rXFx0ICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtXFx1MDAzZWNyMCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICAgIGt2bV92YWxpZF9lZmVyKHZjcHUsIHNyZWdzLVxcdTAwM2VlZmVyKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXFxuaW5kZXggN2QzYTI3YmMwZDg0MmEuLmIxNjExNzRlY2U0NTMxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxcbkBAIC0yMDgsNiArMjA4LDcgQEAgc3RydWN0IGt2bV94ODZfY3B1X2ZlYXR1cmUge1xcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9OQlxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRUNYLCAyNClcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX1BFUkZDVFJfTExDXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI4KVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfTlhcXHRcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjApXFxuKyNkZWZpbmVcXHRYODZfRkVBVFVSRV9GWFNSX09QVFxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNSlcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0dCUEFHRVNcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjYpXFxuICNkZWZpbmVcXHRYODZfRkVBVFVSRV9SRFRTQ1BcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVEWCwgMjcpXFxuICNkZWZpbmVcXHRYODZfRkVBVFVSRV9MTVxcdFxcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyOSlcXG5AQCAtMjI2LDYgKzIyNyw3IEBAIHN0cnVjdCBrdm1feDg2X2NwdV9mZWF0dXJlIHtcXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZcXHRcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMSlcXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZfRVNcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMylcXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZfU05QXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDQpXFxuKyNkZWZpbmVcXHRYODZfRkVBVFVSRV9BVVRPSUJSU1xcdFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCA4KVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfR1BfT05fVVNFUl9DUFVJRFxcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMSwgMCwgRUFYLCAxNylcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX1BFUkZNT05fVjJcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMjIsIDAsIEVBWCwgMClcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0xCUl9QTUNfRlJFRVpFXFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIyLCAwLCBFQVgsIDIpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xcbmluZGV4IDhlNjU0Y2M5YWIxNjg3Li41NjJhZmFiMzc4ZDExZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcXG5AQCAtMjEsMjAgKzIxLDIwIEBAXFxuICNpbmNsdWRlIFxcXCJrdm1fdXRpbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicHJvY2Vzc29yLmhcXFwiXFxuIFxcbi0jZGVmaW5lIFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IsIG9yaWcsIGJpdClcXHRcXHRcXHRcXHRcXFxcXFxuKyNkZWZpbmUgVEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIHJlZywgb3JpZywgYml0KVxcdFxcdFxcdFxcdFxcXFxcXG4gZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0c3RydWN0IGt2bV9zcmVncyBuZXc7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRpbnQgcmM7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdC8qIFNraXAgdGhlIHN1Yi10ZXN0LCB0aGUgZmVhdHVyZS9iaXQgaXMgc3VwcG9ydGVkLiAqL1xcdFxcdFxcdFxcXFxcXG4tXFx0aWYgKG9yaWcuY3IgXFx1MDAyNiBiaXQpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAob3JpZy5yZWcgXFx1MDAyNiBiaXQpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRicmVhaztcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0bWVtY3B5KFxcdTAwMjZuZXcsIFxcdTAwMjZvcmlnLCBzaXplb2Yoc3JlZ3MpKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdG5ldy5jciB8PSBiaXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRtZW1jcHkoXFx1MDAyNm5ldywgXFx1MDAyNm9yaWcsIHNpemVvZihuZXcpKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG5ldy5yZWcgfD0gYml0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRyYyA9IF92Y3B1X3NyZWdzX3NldCh2Y3B1LCBcXHUwMDI2bmV3KTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFRFU1RfQVNTRVJUKHJjLCBcXFwiS1ZNIGFsbG93ZWQgaW52YWxpZCBcXFwiICNjciBcXFwiIGJpdCAoMHglbHgpXFxcIiwgYml0KTtcXHRcXFxcXFxuK1xcdFRFU1RfQVNTRVJUKHJjLCBcXFwiS1ZNIGFsbG93ZWQgaW52YWxpZCBcXFwiICNyZWcgXFxcIiBiaXQgKDB4JWxseClcXFwiLCAodW5zaWduZWQgbG9uZyBsb25nKWJpdCk7IFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQvKiBTYW5pdHkgY2hlY2sgdGhhdCBLVk0gZGlkbid0IGNoYW5nZSBhbnl0aGluZy4gKi9cXHRcXHRcXHRcXFxcXFxuIFxcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFxcdTAwMjZuZXcpO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtNDYsNiArNDYsOCBAQCBkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRYODZfQ1I0X01DRSB8IFg4Nl9DUjRfUEdFIHwgWDg2X0NSNF9QQ0UgfFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0WDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X09TWE1NRVhDUFQpXFxuIFxcbisjZGVmaW5lIEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSIEVGRVJfU0NFXFxuK1xcbiBzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHModm9pZClcXG4ge1xcbiBcXHR1NjQgY3I0ID0gS1ZNX0FMV0FZU19BTExPV0VEX0NSNDtcXG5AQCAtNzQsNiArNzYsMjQgQEAgc3RhdGljIHU2NCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKHZvaWQpXFxuIFxcdHJldHVybiBjcjQ7XFxuIH1cXG4gXFxuK3N0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfZWZlcl9mZWF0dXJlX2JpdHModm9pZClcXG4re1xcbitcXHR1NjQgZWZlciA9IEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSO1xcbitcXG4rXFx0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0xNKSlcXG4rXFx0XFx0ZWZlciB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XFxuK1xcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9OWCkpXFxuK1xcdFxcdGVmZXIgfD0gRUZFUl9OWDtcXG4rXFx0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpXFxuK1xcdFxcdGVmZXIgfD0gRUZFUl9TVk1FO1xcbitcXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfRlhTUl9PUFQpKVxcbitcXHRcXHRlZmVyIHw9IEVGRVJfRkZYU1I7XFxuK1xcdGlmIChrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpXFxuK1xcdFxcdGVmZXIgfD0gRUZFUl9BVVRPSUJSUztcXG4rXFxuK1xcdHJldHVybiBlZmVyO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCB0ZXN0X2NyX2JpdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgY3I0KVxcbiB7XFxuIFxcdHN0cnVjdCBrdm1fc3JlZ3Mgc3JlZ3M7XFxuQEAgLTk2LDI2ICsxMTYsNDUgQEAgc3RhdGljIHZvaWQgdGVzdF9jcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGNyNClcXG4gXFx0XFx0ICAgIChzcmVncy5jcjQgXFx1MDAyNiBYODZfQ1I0X1BLRSkgPyBcXFwic2V0XFxcIiA6IFxcXCJjbGVhclxcXCIpO1xcbiBcXG4gXFx0dmNwdV9zcmVnc19nZXQodmNwdSwgXFx1MDAyNnNyZWdzKTtcXG4tXFx0VEVTVF9BU1NFUlQoc3JlZ3MuY3I0ID09IGNyNCwgXFxcInNyZWdzLkNSNCAoMHglbGx4KSAhPSBDUjQgKDB4JWx4KVxcXCIsXFxuLVxcdFxcdCAgICBzcmVncy5jcjQsIGNyNCk7XFxuLVxcbi1cXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVU1JUCk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1ZNWEUpO1xcbi1cXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01YRSk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QQ0lERSk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9PU1hTQVZFKTtcXG4tXFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xcbi1cXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01BUCk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QS0UpO1xcbitcXHRURVNUX0FTU0VSVF9FUShzcmVncy5jcjQsIGNyNCk7XFxuK1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfTEE1Nyk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1ZNWEUpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfRlNHU0JBU0UpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9QQ0lERSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUVQKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01BUCk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XFxuIFxcbiBcXHRmb3IgKGkgPSAzMjsgaSBcXHUwMDNjIDY0OyBpKyspXFxuLVxcdFxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTtcXG4rXFx0XFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIEJJVChpKSk7XFxuIFxcbiBcXHQvKiBOVyB3aXRob3V0IENEIGlzIGlsbGVnYWwsIGFzIGlzIFBHIHdpdGhvdXQgUEUuICovXFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7XFxuLVxcdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9QRyk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBYODZfQ1IwX05XKTtcXG4rXFx0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfUEcpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X2VmZXJfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbit7XFxuK1xcdHN0cnVjdCBrdm1fc3JlZ3Mgc3JlZ3M7XFxuK1xcdGludCByYztcXG4rXFxuK1xcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFxcdTAwMjZzcmVncyk7XFxuK1xcdHNyZWdzLmVmZXIgfD0gZWZlcjtcXG4rXFx0cmMgPSBfdmNwdV9zcmVnc19zZXQodmNwdSwgXFx1MDAyNnNyZWdzKTtcXG4rXFx0VEVTVF9BU1NFUlQoIXJjLCBcXFwiRmFpbGVkIHRvIHNldCBzdXBwb3J0ZWQgRUZFUiBiaXRzICgweCVsbHgpXFxcIiwgc3JlZ3MuZWZlcik7XFxuK1xcbitcXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcXHUwMDI2c3JlZ3MpO1xcbitcXHRURVNUX0FTU0VSVF9FUShzcmVncy5lZmVyLCBlZmVyKTtcXG4rXFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9MTUUpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTlgpO1xcbitcXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfU1ZNRSk7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9GRlhTUik7XFxuK1xcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9BVVRPSUJSUyk7XFxuIH1cXG4gXFxuIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuQEAgLTEzMiw2ICsxNzEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHQgKi9cXG4gXFx0dm0gPSB2bV9jcmVhdGVfYmFyZWJvbmVzKCk7XFxuIFxcdHZjcHUgPSBfX3ZtX3ZjcHVfYWRkKHZtLCAwKTtcXG4rXFx0dGVzdF9lZmVyX2JpdHModmNwdSwgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIpO1xcbiBcXHR0ZXN0X2NyX2JpdHModmNwdSwgS1ZNX0FMV0FZU19BTExPV0VEX0NSNCk7XFxuIFxcdGt2bV92bV9mcmVlKHZtKTtcXG4gXFxuQEAgLTE1MSw2ICsxOTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHRcXHQgICAgc3JlZ3MuYXBpY19iYXNlKTtcXG4gXFxuIFxcdHRlc3RfY3JfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9jcjRfZmVhdHVyZV9iaXRzKCkpO1xcbitcXHR0ZXN0X2VmZXJfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9lZmVyX2ZlYXR1cmVfYml0cygpKTtcXG4gXFxuIFxcdGt2bV92bV9mcmVlKHZtKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQzOjU1LjcwMjEwNjY3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzNTkxNDE1NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NcIixcbiAgICBcImt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyXCIsXG4gICAgXCJrdm1fcnVuX3N5bmNfcmVnc19mcm9tX3VzZXJcIixcbiAgICBcImt2bV92YWxpZF9lZmVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNJ3Mgc3JlZ3MgdmFsaWRhdGlvbiBsb2dpYyB0byBhbHNvIGNoZWNrIHRoZSBFRkVSIHJlZ2lzdGVyIHVzaW5nIGt2bV92YWxpZF9lZmVyKCkuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYWZmZWN0cyBLVk0gaW9jdGxzIChLVk1fU0VUX1NSRUdTLCBLVk1fU0VUX1NSRUdTMiwgS1ZNX1JVTikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGRhMGUyMjVlMzQ2NmFlZDQyNmUwZjU1ZGI1NzYwNTJkYmQ0MDlhZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDAwOjQzOjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3JlZ3MuYyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcbmluZGV4IGJkODE0Nzc5OGNjM2VlLi44ZjY2NDM4OTg5ZTQ3NCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9yZWdzLmNcbisrKyBiL2FyY2gveDg2L2t2bS9yZWdzLmNcbkBAIC01NjQsNyArNTY0LDggQEAgc3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4gXHR9XG4gXG4gXHRyZXR1cm4ga3ZtX2lzX3ZhbGlkX2NyNCh2Y3B1LCBzcmVncy1cdTAwM2VjcjQpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtXHUwMDNlY3IwKTtcbitcdCAgICAgICBrdm1faXNfdmFsaWRfY3IwKHZjcHUsIHNyZWdzLVx1MDAzZWNyMCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgICAga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtXHUwMDNlZWZlcik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgX19zZXRfc3JlZ3NfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5pbmRleCA3ZDNhMjdiYzBkODQyYS4uYjE2MTE3NGVjZTQ1MzEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuQEAgLTIwOCw2ICsyMDgsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9OQlx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMDEsIDAsIEVDWCwgMjQpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfUEVSRkNUUl9MTENcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFQ1gsIDI4KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX05YXHRcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDIwKVxuKyNkZWZpbmVcdFg4Nl9GRUFUVVJFX0ZYU1JfT1BUXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNSlcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9HQlBBR0VTXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwMSwgMCwgRURYLCAyNilcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9SRFRTQ1BcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI3KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX0xNXHRcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDAxLCAwLCBFRFgsIDI5KVxuQEAgLTIyNiw2ICsyMjcsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XG4gI2RlZmluZSBYODZfRkVBVFVSRV9TRVZcdFx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMSlcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9FU1x0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMUYsIDAsIEVBWCwgMylcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NFVl9TTlBcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDFGLCAwLCBFQVgsIDQpXG4rI2RlZmluZVx0WDg2X0ZFQVRVUkVfQVVUT0lCUlNcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDgpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfR1BfT05fVVNFUl9DUFVJRFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIxLCAwLCBFQVgsIDE3KVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1BFUkZNT05fVjJcdFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDIyLCAwLCBFQVgsIDApXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfTEJSX1BNQ19GUkVFWkVcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAyMiwgMCwgRUFYLCAyKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X3NyZWdzX3Rlc3QuY1xuaW5kZXggOGU2NTRjYzlhYjE2ODcuLjU2MmFmYWIzNzhkMTFlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfc3JlZ3NfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9zcmVnc190ZXN0LmNcbkBAIC0yMSwyMCArMjEsMjAgQEBcbiAjaW5jbHVkZSBcImt2bV91dGlsLmhcIlxuICNpbmNsdWRlIFwicHJvY2Vzc29yLmhcIlxuIFxuLSNkZWZpbmUgVEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjciwgb3JpZywgYml0KVx0XHRcdFx0XFxcbisjZGVmaW5lIFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCByZWcsIG9yaWcsIGJpdClcdFx0XHRcdFxcXG4gZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHN0cnVjdCBrdm1fc3JlZ3MgbmV3O1x0XHRcdFx0XHRcdFx0XFxcbiBcdGludCByYztcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdC8qIFNraXAgdGhlIHN1Yi10ZXN0LCB0aGUgZmVhdHVyZS9iaXQgaXMgc3VwcG9ydGVkLiAqL1x0XHRcdFxcXG4tXHRpZiAob3JpZy5jciBcdTAwMjYgYml0KVx0XHRcdFx0XHRcdFx0XFxcbitcdGlmIChvcmlnLnJlZyBcdTAwMjYgYml0KVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0YnJlYWs7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0bWVtY3B5KFx1MDAyNm5ldywgXHUwMDI2b3JpZywgc2l6ZW9mKHNyZWdzKSk7XHRcdFx0XHRcdFxcXG4tXHRuZXcuY3IgfD0gYml0O1x0XHRcdFx0XHRcdFx0XHRcXFxuK1x0bWVtY3B5KFx1MDAyNm5ldywgXHUwMDI2b3JpZywgc2l6ZW9mKG5ldykpO1x0XHRcdFx0XHRcXFxuK1x0bmV3LnJlZyB8PSBiaXQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0cmMgPSBfdmNwdV9zcmVnc19zZXQodmNwdSwgXHUwMDI2bmV3KTtcdFx0XHRcdFx0XFxcbi1cdFRFU1RfQVNTRVJUKHJjLCBcIktWTSBhbGxvd2VkIGludmFsaWQgXCIgI2NyIFwiIGJpdCAoMHglbHgpXCIsIGJpdCk7XHRcXFxuK1x0VEVTVF9BU1NFUlQocmMsIFwiS1ZNIGFsbG93ZWQgaW52YWxpZCBcIiAjcmVnIFwiIGJpdCAoMHglbGx4KVwiLCAodW5zaWduZWQgbG9uZyBsb25nKWJpdCk7IFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0LyogU2FuaXR5IGNoZWNrIHRoYXQgS1ZNIGRpZG4ndCBjaGFuZ2UgYW55dGhpbmcuICovXHRcdFx0XFxcbiBcdHZjcHVfc3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNm5ldyk7XHRcdFx0XHRcdFx0XFxcbkBAIC00Niw2ICs0Niw4IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRYODZfQ1I0X01DRSB8IFg4Nl9DUjRfUEdFIHwgWDg2X0NSNF9QQ0UgfFx0XFxcbiBcdFx0XHRcdFg4Nl9DUjRfT1NGWFNSIHwgWDg2X0NSNF9PU1hNTUVYQ1BUKVxuIFxuKyNkZWZpbmUgS1ZNX0FMV0FZU19BTExPV0VEX0VGRVIgRUZFUl9TQ0VcbitcbiBzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHModm9pZClcbiB7XG4gXHR1NjQgY3I0ID0gS1ZNX0FMV0FZU19BTExPV0VEX0NSNDtcbkBAIC03NCw2ICs3NiwyNCBAQCBzdGF0aWMgdTY0IGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHModm9pZClcbiBcdHJldHVybiBjcjQ7XG4gfVxuIFxuK3N0YXRpYyB1NjQgY2FsY19zdXBwb3J0ZWRfZWZlcl9mZWF0dXJlX2JpdHModm9pZClcbit7XG4rXHR1NjQgZWZlciA9IEtWTV9BTFdBWVNfQUxMT1dFRF9FRkVSO1xuK1xuK1x0aWYgKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0xNKSlcbitcdFx0ZWZlciB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XG4rXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTlgpKVxuK1x0XHRlZmVyIHw9IEVGRVJfTlg7XG4rXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSlcbitcdFx0ZWZlciB8PSBFRkVSX1NWTUU7XG4rXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfRlhTUl9PUFQpKVxuK1x0XHRlZmVyIHw9IEVGRVJfRkZYU1I7XG4rXHRpZiAoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKVxuK1x0XHRlZmVyIHw9IEVGRVJfQVVUT0lCUlM7XG4rXG4rXHRyZXR1cm4gZWZlcjtcbit9XG4rXG4gc3RhdGljIHZvaWQgdGVzdF9jcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGNyNClcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzO1xuQEAgLTk2LDI2ICsxMTYsNDUgQEAgc3RhdGljIHZvaWQgdGVzdF9jcl9iaXRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGNyNClcbiBcdFx0ICAgIChzcmVncy5jcjQgXHUwMDI2IFg4Nl9DUjRfUEtFKSA/IFwic2V0XCIgOiBcImNsZWFyXCIpO1xuIFxuIFx0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuLVx0VEVTVF9BU1NFUlQoc3JlZ3MuY3I0ID09IGNyNCwgXCJzcmVncy5DUjQgKDB4JWxseCkgIT0gQ1I0ICgweCVseClcIixcbi1cdFx0ICAgIHNyZWdzLmNyNCwgY3I0KTtcbi1cbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9MQTU3KTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9WTVhFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9GU0dTQkFTRSk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfUENJREUpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNRVApO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1NNQVApO1xuLVx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XG4rXHRURVNUX0FTU0VSVF9FUShzcmVncy5jcjQsIGNyNCk7XG4rXG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9VTUlQKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0xBNTcpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfVk1YRSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTVhFKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X0ZTR1NCQVNFKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BDSURFKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X09TWFNBVkUpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyNCwgc3JlZ3MsIFg4Nl9DUjRfU01FUCk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3I0LCBzcmVncywgWDg2X0NSNF9TTUFQKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBjcjQsIHNyZWdzLCBYODZfQ1I0X1BLRSk7XG4gXG4gXHRmb3IgKGkgPSAzMjsgaSBcdTAwM2MgNjQ7IGkrKylcbi1cdFx0VEVTVF9JTlZBTElEX0NSX0JJVCh2Y3B1LCBjcjAsIHNyZWdzLCBCSVQoaSkpO1xuK1x0XHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgY3IwLCBzcmVncywgQklUKGkpKTtcbiBcbiBcdC8qIE5XIHdpdGhvdXQgQ0QgaXMgaWxsZWdhbCwgYXMgaXMgUEcgd2l0aG91dCBQRS4gKi9cbi1cdFRFU1RfSU5WQUxJRF9DUl9CSVQodmNwdSwgY3IwLCBzcmVncywgWDg2X0NSMF9OVyk7XG4tXHRURVNUX0lOVkFMSURfQ1JfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfUEcpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfTlcpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGNyMCwgc3JlZ3MsIFg4Nl9DUjBfUEcpO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X2VmZXJfYml0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuK3tcbitcdHN0cnVjdCBrdm1fc3JlZ3Mgc3JlZ3M7XG4rXHRpbnQgcmM7XG4rXG4rXHR2Y3B1X3NyZWdzX2dldCh2Y3B1LCBcdTAwMjZzcmVncyk7XG4rXHRzcmVncy5lZmVyIHw9IGVmZXI7XG4rXHRyYyA9IF92Y3B1X3NyZWdzX3NldCh2Y3B1LCBcdTAwMjZzcmVncyk7XG4rXHRURVNUX0FTU0VSVCghcmMsIFwiRmFpbGVkIHRvIHNldCBzdXBwb3J0ZWQgRUZFUiBiaXRzICgweCVsbHgpXCIsIHNyZWdzLmVmZXIpO1xuK1xuK1x0dmNwdV9zcmVnc19nZXQodmNwdSwgXHUwMDI2c3JlZ3MpO1xuK1x0VEVTVF9BU1NFUlRfRVEoc3JlZ3MuZWZlciwgZWZlcik7XG4rXG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfTE1FKTtcbitcdFRFU1RfSU5WQUxJRF9TUkVHX0JJVCh2Y3B1LCBlZmVyLCBzcmVncywgRUZFUl9OWCk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfU1ZNRSk7XG4rXHRURVNUX0lOVkFMSURfU1JFR19CSVQodmNwdSwgZWZlciwgc3JlZ3MsIEVGRVJfRkZYU1IpO1xuK1x0VEVTVF9JTlZBTElEX1NSRUdfQklUKHZjcHUsIGVmZXIsIHNyZWdzLCBFRkVSX0FVVE9JQlJTKTtcbiB9XG4gXG4gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbkBAIC0xMzIsNiArMTcxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdCAqL1xuIFx0dm0gPSB2bV9jcmVhdGVfYmFyZWJvbmVzKCk7XG4gXHR2Y3B1ID0gX192bV92Y3B1X2FkZCh2bSwgMCk7XG4rXHR0ZXN0X2VmZXJfYml0cyh2Y3B1LCBLVk1fQUxXQVlTX0FMTE9XRURfRUZFUik7XG4gXHR0ZXN0X2NyX2JpdHModmNwdSwgS1ZNX0FMV0FZU19BTExPV0VEX0NSNCk7XG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gXG5AQCAtMTUxLDYgKzE5MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdCAgICBzcmVncy5hcGljX2Jhc2UpO1xuIFxuIFx0dGVzdF9jcl9iaXRzKHZjcHUsIGNhbGNfc3VwcG9ydGVkX2NyNF9mZWF0dXJlX2JpdHMoKSk7XG4rXHR0ZXN0X2VmZXJfYml0cyh2Y3B1LCBjYWxjX3N1cHBvcnRlZF9lZmVyX2ZlYXR1cmVfYml0cygpKTtcbiBcbiBcdGt2bV92bV9mcmVlKHZtKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQzOjU1LjcwMjEwOTU5MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MzA3MTUwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyB0b3VjaGluZyBgYXJjaC94ODYva3ZtL3JlZ3MuY2AsIHNwZWNpZmljYWxseS4gVGhlIGNvcmUgY2hhbmdlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYSBuZXcgY2hlY2sgZm9yIGBrdm1fdmFsaWRfZWZlcmAgaXMgYmVpbmcgYWRkZWQgdG8gdGhlIGBrdm1faXNfdmFsaWRfc3JlZ3NgIGZ1bmN0aW9uLiBUaGlzIG1ha2VzIHNlbnNlOyB3ZSB3YW50IHRvIGVuc3VyZSB0aGUgc3lzdGVtIHJlZ2lzdGVycyBhcmUgdmFsaWQgYmVmb3JlIHdlIHVzZSB0aGVtLiBOb3cgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gV2hlcmUgaXMgYGt2bV9pc192YWxpZF9zcmVnc2AgYWN0dWFsbHkgKnVzZWQqPyBJJ20gZ29pbmcgdG8gcXVpY2tseSB1c2UgZ3JlcHBlciB0byBmaW5kIGFsbCBpbnN0YW5jZXMgb2YgdGhhdCBmdW5jdGlvbi4gVGhhdCdsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmdWxseSBhc3Nlc3MgdGhlIHBhdGNoJ3MgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjE1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MDEuNjMyODI2NTM1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDc5MTU5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2lzX3ZhbGlkX3NyZWdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9yZWdzLmM9NTI2PXZvaWQga3ZtX3ZjcHVfaW9jdGxfeDg2X2dldF9zcmVnczIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NDQtXFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo1NDU6c3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NDYte1xcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYz01NzE9c3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTc2LVxcbmFyY2gveDg2L2t2bS9yZWdzLmM6NTc3OlxcdGlmICgha3ZtX2lzX3ZhbGlkX3NyZWdzKHZjcHUsIHNyZWdzKSlcXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3OC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MDYuMjQwNzQ2NzE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NDMxMDM5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTUkVHcyBhbmQgS1ZNJ3MgSW50ZXJuYWwgTG9naWMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYGt2bV9pc192YWxpZF9zcmVnc2AuIFRoYXQgZnVuY3Rpb24ncyBwcmltYXJ5IHB1cnBvc2UgaXMgY2xlYXJseSB0byB2YWxpZGF0ZSB0aGUgU3BlY2lhbC1QdXJwb3NlIFJlZ2lzdGVyIChTUkVHKSBzdGF0ZSwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgS1ZNJ3MgdmlydHVhbCBDUFUgbWFuYWdlbWVudC4gQW5kIEkga25vdyBpdCdzIGJlaW5nIGNhbGxlZCB3aXRoaW4gYF9fc2V0X3NyZWdzX2NvbW1vbmAuIE5vdywgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUsIEkgbmVlZCB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgdGhhdCBgX19zZXRfc3JlZ3NfY29tbW9uYCBmdW5jdGlvbi4gV2hlcmUgZWxzZSBpcyB0aGlzIGNlbnRyYWwgZnVuY3Rpb24gYmVpbmcgdXRpbGl6ZWQgaW4gdGhlIGh5cGVydmlzb3I/IFdoYXQga2luZCBvZiBvcGVyYXRpb25zIGFyZSB0cmlnZ2VyaW5nIHRoZSBuZWVkIHRvIHNldCB0aGVzZSBTUkVHcz8gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBzaXRlcyB3aWxsIHJldmVhbCB0aGUgZGlmZmVyZW50IHNjZW5hcmlvcyB1bmRlciB3aGljaCB0aGUgdmlydHVhbCBDUFUncyBzdGF0ZSBpcyBiZWluZyBtZXRpY3Vsb3VzbHkgbWFuYWdlZCBhbmQgdmFsaWRhdGVkIHdpdGhpbiB0aGUgS1ZNIGZyYW1ld29yay4gSSBuZWVkIHRvIHNlZSB3aGVyZSB0aGlzIGFsbCBmaXRzIGludG8gdGhlIGxhcmdlciBjb250cm9sIGZsb3cuIExldCdzIGRpZyBpbiBhbmQgZmluZCB0aG9zZSBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTQwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MDkuNTk1MDU5MThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY1NDgwNjg3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3NldF9zcmVnc19jb21tb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3JlZ3MuYz01NDU9c3RhdGljIGJvb2wga3ZtX2lzX3ZhbGlkX3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3MC1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU3MTpzdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTcyLVxcdFxcdFxcdCAgICAgIGludCAqbW11X3Jlc2V0X25lZWRlZCwgYm9vbCB1cGRhdGVfcGRwdHJzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYz02Mzg9c3RhdGljIGludCBfX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02NDEtXFx0aW50IG1tdV9yZXNldF9uZWVkZWQgPSAwO1xcbmFyY2gveDg2L2t2bS9yZWdzLmM6NjQyOlxcdGludCByZXQgPSBfX3NldF9zcmVnc19jb21tb24odmNwdSwgc3JlZ3MsIFxcdTAwMjZtbXVfcmVzZXRfbmVlZGVkLCB0cnVlKTtcXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTY0My1cXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmM9Njc5PWludCBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTY5My1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY5NDpcXHRyZXQgPSBfX3NldF9zcmVnc19jb21tb24odmNwdSwgKHN0cnVjdCBrdm1fc3JlZ3MgKilzcmVnczIsXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTUtXFx0XFx0XFx0XFx0IFxcdTAwMjZtbXVfcmVzZXRfbmVlZGVkLCAhdmFsaWRfcGRwdHJzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MTIuMjQ5ODcwMzg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwMDU2Nzk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyB0aGUgSW50ZXJwbGF5IG9mIFNlZ21lbnQgUmVnaXN0ZXIgU2V0dGluZyBGdW5jdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIHNlZWluZyBhIGNsZWFyIHBhdHRlcm4gaGVyZS4gYF9fc2V0X3NyZWdzX2NvbW1vbmAgaXMgdGhlIHdvcmtob3JzZSwgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBjb21tb24gbG9naWMgaW52b2x2ZWQgaW4gc2V0dGluZyBzZWdtZW50IHJlZ2lzdGVycy4gSXQncyBjYWxsZWQgYnkgYm90aCBgX19zZXRfc3JlZ3NgIGFuZCwgaW1wb3J0YW50bHksIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBsZXZlbCBvZiBtb2R1bGFyaXR5IGFuZCByZXVzYWJpbGl0eSwgd2hpY2ggaXMgd2hhdCBJJ2QgZXhwZWN0IHRvIHNlZSBpbiBhIHdlbGwtZGVzaWduZWQgS1ZNIGltcGxlbWVudGF0aW9uLiBOb3csIGBfX3NldF9zcmVnc2AgaXRzZWxmLCBqdWRnaW5nIGJ5IHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXMgdmVyeSBsaWtlbHkgdGhlIGZ1bmN0aW9uIHVzZWQgYnkgdGhlIG9sZGVyIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzYCBpb2N0bC4gSXQgc2VlbXMgbGlrZSB0aGUgb2J2aW91cyBjb25uZWN0aW9uLCBidXQgaXQncyBhbHdheXMgYmVzdCB0byBiZSBzdXJlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIGNhc2UsIGJ1dCB0aGUgZXZpZGVuY2UgcG9pbnRzIHRoYXQgd2F5IHN0cm9uZ2x5LiBJIG5lZWQgdG8gZGlnIGludG8gYF9fc2V0X3NyZWdzYCBub3cgdG8gdmVyaWZ5IG15IHN1c3BpY2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY3NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjE1Ljg1MDQ0MDM0MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzYwMjI1MjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fc2V0X3NyZWdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9yZWdzLmM9NTQ1PXN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NzAtXFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo1NzE6c3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU3Mi1cXHRcXHRcXHQgICAgICBpbnQgKm1tdV9yZXNldF9uZWVkZWQsIGJvb2wgdXBkYXRlX3BkcHRycylcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjM3LVxcbmFyY2gveDg2L2t2bS9yZWdzLmM6NjM4OnN0YXRpYyBpbnQgX19zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTYzOS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTY0MS1cXHRpbnQgbW11X3Jlc2V0X25lZWRlZCA9IDA7XFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo2NDI6XFx0aW50IHJldCA9IF9fc2V0X3NyZWdzX2NvbW1vbih2Y3B1LCBzcmVncywgXFx1MDAyNm1tdV9yZXNldF9uZWVkZWQsIHRydWUpO1xcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjQzLVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYz02NjQ9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjczLVxcdHZjcHVfbG9hZCh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjY3NDpcXHRyZXQgPSBfX3NldF9zcmVncyh2Y3B1LCBzcmVncyk7XFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02NzUtXFx0dmNwdV9wdXQodmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTY3OT1pbnQga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy02OTMtXFxuYXJjaC94ODYva3ZtL3JlZ3MuYzo2OTQ6XFx0cmV0ID0gX19zZXRfc3JlZ3NfY29tbW9uKHZjcHUsIChzdHJ1Y3Qga3ZtX3NyZWdzICopc3JlZ3MyLFxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjk1LVxcdFxcdFxcdFxcdCBcXHUwMDI2bW11X3Jlc2V0X25lZWRlZCwgIXZhbGlkX3BkcHRycyk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTcyNT1pbnQga3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNzM0LVxcbmFyY2gveDg2L2t2bS9yZWdzLmM6NzM1OlxcdFxcdGlmIChfX3NldF9zcmVncyh2Y3B1LCBcXHUwMDI2c3JlZ3MpKVxcbmFyY2gveDg2L2t2bS9yZWdzLmMtNzM2LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0NDoxOC4yMTA2ODgwODhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQ0MDI2NjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU1JFRyBWYWxpZGF0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIGBrdm1faXNfdmFsaWRfc3JlZ3NgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIHdoZW5ldmVyIHdlJ3JlIHNldHRpbmcgc2VnbWVudCByZWdpc3RlcnMgKFNSRUdTKSB0aHJvdWdoIGFuIGlvY3RsIGNhbGwg4oCTIHNwZWNpZmljYWxseSBgS1ZNX1NFVF9TUkVHU2AsIGBLVk1fU0VUX1NSRUdTMmAsIG9yIGV2ZW4gZHVyaW5nIGBLVk1fUlVOYC4gVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb24sIGNyaXRpY2FsIGZvciB0aGUgaW50ZWdyaXR5IG9mIHRoZSBlbXVsYXRpb24sIGFuZCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLlxuXG5Ob3csIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzb21ldGhpbmcgbmV3OiBpdCdzIGFkZGluZyBhIGNhbGwgdG8gYGt2bV92YWxpZF9lZmVyKHZjcHUsIHNyZWdzLVx1MDAzZWVmZXIpYCB3aXRoaW4gYGt2bV9pc192YWxpZF9zcmVnc2AuIFRoZSBpbXBsaWNhdGlvbiBpcyBjbGVhcjogd2UncmUgbm93IHZhbGlkYXRpbmcgdGhlIEV4dGVuZGVkIEZlYXR1cmUgRW5hYmxlIFJlZ2lzdGVyIChFRkVSKSBhbG9uZ3NpZGUgdGhlIG90aGVyIHNlZ21lbnQgcmVnaXN0ZXJzLiBUaGlzIGlzIGEgZ29vZCB0aGluZyDigJMgaXQgaGVscHMgbWFpbnRhaW4gc3lzdGVtIHN0YWJpbGl0eS4gU28sIGxldCdzIGRpZyBpbnRvIGBrdm1fdmFsaWRfZWZlcmAgYW5kIHNlZSBleGFjdGx5IHdoYXQgY2hlY2tzIGl0J3MgcGVyZm9ybWluZy4gV2hhdCBjb25kaXRpb25zIGFyZSBjb25zaWRlcmVkIGFjY2VwdGFibGUgb3IgaW52YWxpZD8gVGhpcyBpcyB3aGVyZSB0aGUgcGF0Y2ggd2lsbCByZWFsbHkgc2hvdyBpdHMgdmFsdWUsIGFuZCB3aGVyZSBJJ2xsIGdldCBhIGJldHRlciBzZW5zZSBvZiBhbnkgc2VjdXJpdHkgb3Igc3RhYmlsaXR5IGltcHJvdmVtZW50cyBpdCBwcm92aWRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc2MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0NDoyMi43NTQ3MTY5MDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTYyODkzNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3ZhbGlkX2VmZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL21zcnMuYz01ODg9c3RhdGljIGludCBkb19nZXRfZmVhdHVyZV9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbmRleCwgdTY0ICpkYXRhKVxcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy01OTMtXFxuYXJjaC94ODYva3ZtL21zcnMuYzo1OTQ6c3RhdGljIGJvb2wgX19rdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtNTk1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjE0LX1cXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYxNTpib29sIGt2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTYte1xcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTktXFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MjA6XFx0cmV0dXJuIF9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MjEtfVxcbmFyY2gveDg2L2t2bS9tc3JzLmM6NjIyOkVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmFsaWRfZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MjMtXFxuYXJjaC94ODYva3ZtL21zcnMuYz02MjQ9c3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYzMy1cXHRpZiAoIW1zcl9pbmZvLVxcdTAwM2Vob3N0X2luaXRpYXRlZCkge1xcbmFyY2gveDg2L2t2bS9tc3JzLmM6NjM0OlxcdFxcdGlmICghX19rdm1fdmFsaWRfZWZlcih2Y3B1LCBlZmVyKSlcXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYzNS1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmg9NjE9dm9pZCBrdm1fZW5hYmxlX2VmZXJfYml0cyh1NjQpO1xcbmFyY2gveDg2L2t2bS9tc3JzLmg6NjI6Ym9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcXG5hcmNoL3g4Ni9rdm0vbXNycy5oLTYzLWludCBrdm1fZW11bGF0ZV9tc3JfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0ICpkYXRhKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9yZWdzLmM9NTQ1PXN0YXRpYyBib29sIGt2bV9pc192YWxpZF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01NjctXFx0ICAgICAgIGt2bV9pc192YWxpZF9jcjAodmNwdSwgc3JlZ3MtXFx1MDAzZWNyMCkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU2ODpcXHQgICAgICAga3ZtX3ZhbGlkX2VmZXIodmNwdSwgc3JlZ3MtXFx1MDAzZWVmZXIpO1xcbmFyY2gveDg2L2t2bS9yZWdzLmMtNTY5LX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NDM4PXN0YXRpYyBib29sIG5lc3RlZF92bWNiX2NoZWNrX3NhdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00NzEtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo0NzI6XFx0aWYgKENDKCFrdm1fdmFsaWRfZWZlcih2Y3B1LCBzYXZlLVxcdTAwM2VlZmVyKSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00NzMtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yNzMyPXN0YXRpYyBpbnQgZWZlcl90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjczOC1cXHQgKiBDbGVhciB0aGUgRUZFUl9TVk1FIGJpdCBmcm9tIEVGRVIuIFRoZSBTVk0gY29kZSBhbHdheXMgc2V0cyB0aGlzXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyNzM5OlxcdCAqIGJpdCBpbiBzdm1fc2V0X2VmZXIoKSwgYnV0IF9fa3ZtX3ZhbGlkX2VmZXIoKSBjaGVja3MgaXQgYWdhaW5zdFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjc0MC1cXHQgKiB3aGV0aGVyIHRoZSBndWVzdCBoYXMgWDg2X0ZFQVRVUkVfU1ZNIC0gdGhpcyBhdm9pZHMgYSBmYWlsdXJlIGlmXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMxNzA9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2hvc3Rfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zMjMyLVxcdGlmICh2bWNzMTItXFx1MDAzZXZtX2V4aXRfY29udHJvbHMgXFx1MDAyNiBWTV9FWElUX0xPQURfSUEzMl9FRkVSKSB7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozMjMzOlxcdFxcdGlmIChDQygha3ZtX3ZhbGlkX2VmZXIodmNwdSwgdm1jczEyLVxcdTAwM2Vob3N0X2lhMzJfZWZlcikpIHx8XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zMjM0LVxcdFxcdCAgICBDQyhpYTMyZSAhPSAhISh2bWNzMTItXFx1MDAzZWhvc3RfaWEzMl9lZmVyIFxcdTAwMjYgRUZFUl9MTUEpKSB8fFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0zMzA2PXN0YXRpYyBpbnQgbmVzdGVkX3ZteF9jaGVja19ndWVzdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMzNzEtXFx0ICAgICh2bWNzMTItXFx1MDAzZXZtX2VudHJ5X2NvbnRyb2xzIFxcdTAwMjYgVk1fRU5UUllfTE9BRF9JQTMyX0VGRVIpKSB7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozMzcyOlxcdFxcdGlmIChDQygha3ZtX3ZhbGlkX2VmZXIodmNwdSwgdm1jczEyLVxcdTAwM2VndWVzdF9pYTMyX2VmZXIpKSB8fFxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzM3My1cXHRcXHQgICAgQ0MoaWEzMmUgIT0gISEodm1jczEyLVxcdTAwM2VndWVzdF9pYTMyX2VmZXIgXFx1MDAyNiBFRkVSX0xNQSkpIHx8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjI1LjE1MTAxNTA3OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTA1OTE5ODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBsaWtlIGl0J3MgdG91Y2hpbmcgS1ZNLCBzcGVjaWZpY2FsbHkgY29yZSBrZXJuZWwgbG9naWMgdGhhdCdzIHJlYWNoYWJsZS4gVGhhdCBzY3JlYW1zIFwicG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0LlwiIFRoZSBvYnZpb3VzIG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIGtleSBmdW5jdGlvbnMuIEkgc2VlIGEgZmV3IG1lbnRpb25lZDogYGt2bV9pc192YWxpZF9zcmVnc2AsIGBfX3NldF9zcmVnc19jb21tb25gLCBgX19zZXRfc3JlZ3NgLCBga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczJgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgLCBhbmQgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAuXG5cbldhaXQgYSBtaW51dGUsIGhvbGQgdXAuIExldCBtZSBtYWtlIHN1cmUgSSdtIG5vdCB3YXN0aW5nIHRpbWUgb24gZGVhZCBlbmRzLiBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgYF9fc2V0X3NyZWdzX2NvbW1vbmAsIGFuZCBgX19zZXRfc3JlZ3NgLCBhbGwgbG9vayB0byBiZSBzdGF0aWMgZnVuY3Rpb25zLiBOb3QgYXMgaWRlYWwgZm9yIGRpcmVjdCBmdXp6aW5nLCB0aG91Z2ggdGhleSBjb3VsZCBzdGlsbCBiZSByZWxldmFudCB0aHJvdWdoIGlubGluaW5nIG9yIGNhbGwtY2hhaW5zLlxuXG5UaGF0IGxlYXZlcyBga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczJgIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgLCB3aGljaCBhcmUgZXhwb3J0ZWQsIHNvIHRoZXkgYXJlIHRoZSBwcmltZSB0YXJnZXRzLiBBbmQgSSBuZWVkIHRvIGNvbnNpZGVyIGBrdm1fcnVuX3N5bmNfcmVnc19mcm9tX3VzZXJgIGFzIGl0IGFwcGVhcnMgdG8gYmUgZGlyZWN0bHkgdXNlci1mYWNpbmcgYW5kIHRoZXJlZm9yZSBhIGdvb2QgdGFyZ2V0LlxuXG5Pa2F5LCBzbyB0aGUgZnVuY3Rpb25zIEknbGwgbmVlZCB0byBmb2N1cyBvbiBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduIGFyZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgLCBga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF9zcmVnczJgLCBhbmQgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAuIEknbGwgYWxzbyB3YW50IHRvIGtlZXAgYW4gZXllIG9uIGhvdyB0aGUgc3RhdGljIGZ1bmN0aW9ucywgbGlrZSBga3ZtX2lzX3ZhbGlkX3NyZWdzYCBhcmUgdXNlZCBpbiB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cuXG5cbk5vdywgbGV0J3Mgc2VlLCB0aGUgY29uZmlnIHZhcmlhYmxlIGlzIGBLVk1gLiBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyB0byBzZWUgd2hhdCBleGFjdGx5IGVuYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2MzYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MzEuMjU2OTM2NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg4Mzk5MzE3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL21pcHMva3ZtL0tjb25maWc9MTY9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTctXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjE4OmNvbmZpZyBLVk1cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMC1cXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MzE6Y29uZmlnIEtWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzItXFx0Ym9vbCBcXFwiTWFpbnRhaW4gY291bnRlcnMgZm9yIENPUDAgYWNjZXNzZXNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNjpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI3LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI5OmNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzAtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMzLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNDpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM1LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mzg6Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzktXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00My1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ0LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0NTpjb25maWcgS1ZNX0JPT0szU18zMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzMyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fQk9PSzNTXzY0XFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Nzk6Y29uZmlnIEtWTV9CT09LM1NfNjRfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctODAtXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy05OS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fQk9PSzNTXzY0X1BSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgd2l0aG91dCB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjUtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyNjpjb25maWcgS1ZNX0JPT0szU19IVl9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjctXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyOTpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTMwLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A4X1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgdGltaW5nIGZvciBoeXBlcnZpc29yIHJlYWwtbW9kZSBjb2RlIChmb3IgUE9XRVI4KVxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE1Nzpjb25maWcgS1ZNX0JPT0szU19IVl9ORVNURURfUE1VX1dPUktBUk9VTkRcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIk5lc3RlZCBMMCBob3N0IHdvcmthcm91bmQgZm9yIEwxIEtWTSBob3N0IFBNVSBoYW5kbGluZyBidWdcXFwiIGlmIEVYUEVSVFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkh5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTgzLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODQ6Y29uZmlnIEtWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODUtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4Nzpjb25maWcgS1ZNX0VYSVRfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJEZXRhaWxlZCBleGl0IHRpbWluZ1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5ODpjb25maWcgS1ZNX0U1MDBWMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTktXFx0Ym9vbCBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEyLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTM6Y29uZmlnIEtWTV9FNTAwTUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjE0LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDBNQy9FNTUwMC9FNjUwMCBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fTVBJQ1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbCBcXFwiS1ZNIGluLWtlcm5lbCBNUElDIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDAtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0MTpjb25maWcgS1ZNX1hJQ1NcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQyLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUwLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNTE6Y29uZmlnIEtWTV9YSVZFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1Mi1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc9MjI9c291cmNlIFxcXCJhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21pY3Jvd2F0dC9LY29uZmlnXFxcIlxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yMy1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc6MjQ6Y29uZmlnIEtWTV9HVUVTVFxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZz0xNz1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0yMC1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ2LVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1xcXCJcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9ODI2PXNvdXJjZSBcXFwiYXJjaC94ODYveGVuL0tjb25maWdcXFwiXFxuYXJjaC94ODYvS2NvbmZpZy04MjctXFxuYXJjaC94ODYvS2NvbmZpZzo4Mjg6Y29uZmlnIEtWTV9HVUVTVFxcbmFyY2gveDg2L0tjb25maWctODI5LVxcdGJvb2wgXFxcIktWTSBHdWVzdCBzdXBwb3J0IChpbmNsdWRpbmcga3ZtY2xvY2spXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctMy1cXG52aXJ0L2t2bS9LY29uZmlnOjQ6Y29uZmlnIEtWTV9DT01NT05cXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9Mzk9Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNDItXFxudmlydC9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX01NSU9cXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy00NS1cXG52aXJ0L2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQVNZTkNfUEZcXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQ5LSMgVG9nZ2xlIHRvIHN3aXRjaCBiZXR3ZWVuIGRpcmVjdCBub3RpZmljYXRpb24gYW5kIGJhdGNoIGpvYlxcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXFxudmlydC9rdm0vS2NvbmZpZy01MS0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02MS1cXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xcbnZpcnQva3ZtL0tjb25maWctNjMtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02Ny1cXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG52aXJ0L2t2bS9LY29uZmlnLTY5LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy03MC1cXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXFxudmlydC9rdm0vS2NvbmZpZy03Mi0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzMtXFxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxcbnZpcnQva3ZtL0tjb25maWctNzUtICAgICAgIGRlZl9ib29sIHlcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTkzLVxcbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXFxudmlydC9rdm0vS2NvbmZpZy05NS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctOTYtXFxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xcbnZpcnQva3ZtL0tjb25maWctOTgtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk5LVxcbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXFxudmlydC9rdm0vS2NvbmZpZy0xMDEtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwMi1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcXG52aXJ0L2t2bS9LY29uZmlnLTEwNC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctMTA1LVxcbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcXG52aXJ0L2t2bS9LY29uZmlnLTEwNy0gICAgICAgc2VsZWN0IFhBUlJBWV9NVUxUSVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0NDozNS4xNDA5MzU2OTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODc5ODIxOTM0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gQ29uZmlndXJhdGlvbiBhbmQgUmVsZXZhbnQgU3ltYm9scyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgZGVhbGluZyB3aXRoIGEgS1ZNIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzLiBJJ3ZlIGluaXRpYWxseSBmbGFnZ2VkIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc2AsIGBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMmAsIGFuZCBga3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyYCBhcyBzdHJvbmcgY2FuZGlkYXRlcy4gSG93ZXZlciwgSSBzaG91bGQgYWxzbyBpbmNsdWRlIGBrdm1fdmFsaWRfZWZlcmAgc2luY2UgaXQncyBleHBvcnRlZCBhbmQgd2lkZWx5IHVzZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgYGt2bV92YWxpZF9lZmVyYCBpcyBleHBvcnRlZCwgc28gbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHdpdGggYEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmFsaWRfZWZlcik7YC4gWWVzLCB0aGF0J3MgZmluZS5cblxuTm93LCBsZXQncyB2ZXJpZnkgaWYgdGhlIG90aGVyIHN5bWJvbHMgYXJlIGV4cG9ydGVkIHRvby4gYGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyYCBpcyBub3QgZXhwb3J0ZWQsIGJ1dCBpdCBpcyBhIGdsb2JhbCBmdW5jdGlvbi4gU2ltaWxhcmx5LCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NgIGFuZCBga3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyYCBhcmUgZ2xvYmFsIHRvby4gU28sIGFsbCBnb29kLlxuXG5XYWl0LCBsb29raW5nIGF0IGl0LCBga3ZtX3ZhbGlkX2VmZXJgIGlzIGNhbGxlZCBpbiBgbmVzdGVkX3ZtY2JfY2hlY2tfc2F2ZWAsIGBlZmVyX3RyYXBgLCBgbmVzdGVkX3ZteF9jaGVja19ob3N0X3N0YXRlYCwgYW5kIGBuZXN0ZWRfdm14X2NoZWNrX2d1ZXN0X3N0YXRlYC4gSXQgbG9va3MgbGlrZSBga3ZtX3ZhbGlkX2VmZXJgIGlzIGFjdHVhbGx5IGEgZ3JlYXQgc3ltYm9sIGluIGl0c2VsZiwgc28gSSdtIHB1dHRpbmcgaXQgaW4uXG5cblNvLCBsZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIHBhdGNoIGFnYWluLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgYGt2bV92YWxpZF9lZmVyKHZjcHUsIHNyZWdzLVx1MDAzZWVmZXIpYCB0byBga3ZtX2lzX3ZhbGlkX3NyZWdzYCwgc28gdGhlIHBhdGNoIGlzIGZ1bmN0aW9uYWwuXG5cbkluIHNob3J0LCBteSBjb25jbHVzaW9ucyBhcmUgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyBLVk0sIGFuZCBteSBmb2N1cyBzeW1ib2xzIGFyZSBub3cgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzYCwgYGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfc3JlZ3MyYCwgYGt2bV9ydW5fc3luY19yZWdzX2Zyb21fdXNlcmAsIGFuZCBga3ZtX3ZhbGlkX2VmZXJgLlxuXG5UaW1lIHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjU1LCJPdXRwdXRUb2tlbnMiOjE2MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0NDo0My45MzkxNTY4ODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIwODcyOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzXCIsXG4gICAgXCJrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMlwiLFxuICAgIFwia3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyXCIsXG4gICAgXCJrdm1fdmFsaWRfZWZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSdzIHNyZWdzIHZhbGlkYXRpb24gbG9naWMgdG8gYWxzbyBjaGVjayB0aGUgRUZFUiByZWdpc3RlciB1c2luZyBrdm1fdmFsaWRfZWZlcigpLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgS1ZNIGlvY3RscyAoS1ZNX1NFVF9TUkVHUywgS1ZNX1NFVF9TUkVHUzIsIEtWTV9SVU4pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzXCIsXG4gICAgXCJrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3NyZWdzMlwiLFxuICAgIFwia3ZtX3J1bl9zeW5jX3JlZ3NfZnJvbV91c2VyXCIsXG4gICAgXCJrdm1fdmFsaWRfZWZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSdzIHNyZWdzIHZhbGlkYXRpb24gbG9naWMgdG8gYWxzbyBjaGVjayB0aGUgRUZFUiByZWdpc3RlciB1c2luZyBrdm1fdmFsaWRfZWZlcigpLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgS1ZNIGlvY3RscyAoS1ZNX1NFVF9TUkVHUywgS1ZNX1NFVF9TUkVHUzIsIEtWTV9SVU4pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpg28z[1] Phase: Succeeded StartedAt: 2026-07-14 00:44:55 +0000 UTC FinishedAt: 2026-07-14 00:44:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 00:44:55 +0000 UTC FinishedAt: 2026-07-14 00:44:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2] Phase: Succeeded StartedAt: 2026-07-14 00:44:55 +0000 UTC FinishedAt: 2026-07-14 05:12:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 00:44:55 +0000 UTC FinishedAt: 2026-07-14 05:12:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 00:44:55 +0000 UTC FinishedAt: 2026-07-14 00:45:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 00:44:55 +0000 UTC FinishedAt: 2026-07-14 00:45:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpg28z/series-workflowpg28z-convert-artifact-2540419840/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 00:45:15 +0000 UTC FinishedAt: 2026-07-14 01:20:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 00:45:15 +0000 UTC FinishedAt: 2026-07-14 01:20:40 +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:*95c1192d-8e13-4ff0-b3c3-2c909db10785,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-workflowpg28z/series-workflowpg28z-convert-artifact-2540419840/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": "eca26fad-6f53-449d-9164-f239f71feda3", "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-workflowpg28z/series-workflowpg28z-build-action-1970865606/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 00:45:15 +0000 UTC FinishedAt: 2026-07-14 01:20:18 +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:*95c1192d-8e13-4ff0-b3c3-2c909db10785,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-workflowpg28z/series-workflowpg28z-convert-artifact-2540419840/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": "eca26fad-6f53-449d-9164-f239f71feda3", "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-workflowpg28z/series-workflowpg28z-build-action-1970865606/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 01:20:40 +0000 UTC FinishedAt: 2026-07-14 01:20:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 01:20:40 +0000 UTC FinishedAt: 2026-07-14 01:20:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 01:20:40 +0000 UTC FinishedAt: 2026-07-14 01:21:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 01:20:40 +0000 UTC FinishedAt: 2026-07-14 01:20:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpg28z/series-workflowpg28z-convert-artifact-1819197607/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 01:21:00 +0000 UTC FinishedAt: 2026-07-14 01:23:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 01:21:00 +0000 UTC FinishedAt: 2026-07-14 01:23:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*eca26fad-6f53-449d-9164-f239f71feda3,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-workflowpg28z/series-workflowpg28z-build-action-1970865606/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-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 01:23:13 +0000 UTC FinishedAt: 2026-07-14 01:23:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 01:23:13 +0000 UTC FinishedAt: 2026-07-14 01:23:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 01:23:13 +0000 UTC FinishedAt: 2026-07-14 02:07:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 01:23:13 +0000 UTC FinishedAt: 2026-07-14 02:07:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*95c1192d-8e13-4ff0-b3c3-2c909db10785,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-workflowpg28z/series-workflowpg28z-convert-artifact-1819197607/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": "b497fdca-0f49-4d81-b70b-4fa9c3d68761", "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-workflowpg28z/series-workflowpg28z-build-action-3166646827/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 01:23:13 +0000 UTC FinishedAt: 2026-07-14 02:06:40 +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:*95c1192d-8e13-4ff0-b3c3-2c909db10785,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-workflowpg28z/series-workflowpg28z-convert-artifact-1819197607/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": "b497fdca-0f49-4d81-b70b-4fa9c3d68761", "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-workflowpg28z/series-workflowpg28z-build-action-3166646827/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 02:07:49 +0000 UTC FinishedAt: 2026-07-14 02:07:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 02:07:49 +0000 UTC FinishedAt: 2026-07-14 02:07:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 02:07:49 +0000 UTC FinishedAt: 2026-07-14 02:10:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 02:07:49 +0000 UTC FinishedAt: 2026-07-14 02:10:02 +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:*b497fdca-0f49-4d81-b70b-4fa9c3d68761,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-workflowpg28z/series-workflowpg28z-build-action-3166646827/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-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 02:10:12 +0000 UTC FinishedAt: 2026-07-14 05:12:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 02:10:12 +0000 UTC FinishedAt: 2026-07-14 05:12:01 +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_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"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:*eca26fad-6f53-449d-9164-f239f71feda3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b497fdca-0f49-4d81-b70b-4fa9c3d68761,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-workflowpg28z/series-workflowpg28z-build-action-1970865606/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-workflowpg28z/series-workflowpg28z-build-action-3166646827/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 02:10:12 +0000 UTC FinishedAt: 2026-07-14 02:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 02:10:12 +0000 UTC FinishedAt: 2026-07-14 02:10:20 +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_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"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-workflowpg28z/series-workflowpg28z-convert-artifact-1991156224/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 02:10:12 +0000 UTC FinishedAt: 2026-07-14 02:10:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 02:10:12 +0000 UTC FinishedAt: 2026-07-14 02:10:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 02:10:12 +0000 UTC FinishedAt: 2026-07-14 02:10:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 02:10:22 +0000 UTC FinishedAt: 2026-07-14 05:12:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpg28z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_set_sregs","kvm_vcpu_ioctl_x86_set_sregs2","kvm_run_sync_regs_from_user","kvm_valid_efer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"3d1f6d49-3376-440e-858d-97c17d425261","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 02:10:22 +0000 UTC FinishedAt: 2026-07-14 05:11:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*eca26fad-6f53-449d-9164-f239f71feda3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b497fdca-0f49-4d81-b70b-4fa9c3d68761,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-workflowpg28z/series-workflowpg28z-build-action-1970865606/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-workflowpg28z/series-workflowpg28z-build-action-3166646827/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-workflowpg28z/series-workflowpg28z-convert-artifact-1991156224/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,}