Name: series-workflowvzswb Phase: Succeeded StartedAt: 2026-07-16 10:38:03 +0000 UTC FinishedAt: 2026-07-16 12:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[0] Phase: Succeeded StartedAt: 2026-07-16 10:38:03 +0000 UTC FinishedAt: 2026-07-16 11:11:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 10:38:03 +0000 UTC FinishedAt: 2026-07-16 11:11:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "c01779ca-c846-4792-a659-7f45d1a05923" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_aia_aplic_init", "kvm_riscv_vcpu_aia_imsic_init", "kvm_riscv_mmu_alloc_pgd", "kvm_riscv_vcpu_pmu_snapshot_set_shmem", "kvm_sbi_ext_fwft_init", "kvm_riscv_vcpu_alloc_vector_context" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9haWFfYXBsaWNfaW5pdCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtJiMzNDssCiAgICAmIzM0O2t2bV9zYmlfZXh0X2Z3ZnRfaW5pdCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChHRlBfS0VSTkVMX0FDQ09VTlQgLyBfX0dGUF9BQ0NPVU5UKSBmb3Igc2V2ZXJhbCBLVk0gYWxsb2NhdGlvbnMgb24gUklTQy1WLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgbGltaXRzIGFyZSBwcm9wZXJseSBlbmZvcmNlZCBhbmQgdG8gZGV0ZWN0IHBvdGVudGlhbCBtZW1vcnkgbGVha3MgaW4gdGhlc2UgYWxsb2NhdGlvbiBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI2Nzk5OTBmMjVhMzE5YTJmNzQ2NWQ0NzFhYWNkOGZmOTA1ZWI5ZWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAxMToxMDoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuYyBiL2FyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jXG5pbmRleCA3NDgxMDdjMzQ3ZDkxNS4uYmU5MDJlYTY0ODBiNzMgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmNcbkBAIC01ODEsNyAmIzQzOzU4MSw4IEBAIGludCBrdm1fcmlzY3ZfYWlhX2FwbGljX2luaXQoc3RydWN0IGt2bSAqa3ZtKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdC8qIEFsbG9jYXRlIEFQTElDIGdsb2JhbCBzdGF0ZSAqL1xuLVx0YXBsaWMgPSBremFsbG9jX2ZsZXgoKmFwbGljLCBpcnFzLCBrdm0tXHUwMDNlYXJjaC5haWEubnJfc291cmNlcyAmIzQzOyAxKTtcbiYjNDM7XHRhcGxpYyA9IGt6YWxsb2NfZmxleCgqYXBsaWMsIGlycXMsIGt2bS1cdTAwM2VhcmNoLmFpYS5ucl9zb3VyY2VzICYjNDM7IDEsXG4mIzQzO1x0XHRcdCAgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghYXBsaWMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0a3ZtLVx1MDAzZWFyY2guYWlhLmFwbGljX3N0YXRlID0gYXBsaWM7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmMgYi9hcmNoL3Jpc2N2L2t2bS9haWFfaW1zaWMuY1xuaW5kZXggZDM4ZjVkZTA4MzRjNWIuLjUwN2Q4MmU1YmM4ODJjIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jXG5AQCAtMTEwOCw3ICYjNDM7MTEwOCw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0LyogQWxsb2NhdGUgSU1TSUMgY29udGV4dCAqL1xuLVx0aW1zaWMgPSBremFsbG9jX29iaigqaW1zaWMpO1xuJiM0MztcdGltc2ljID0ga3phbGxvY19vYmooKmltc2ljLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFpbXNpYylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR2Y3B1LVx1MDAzZWFyY2guYWlhX2NvbnRleHQuaW1zaWNfc3RhdGUgPSBpbXNpYztcbkBAIC0xMTIxLDcgJiM0MzsxMTIxLDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGltc2ljLVx1MDAzZXZzZmlsZV9oZ2VpID0gaW1zaWMtXHUwMDNldnNmaWxlX2NwdSA9IC0xO1xuIFxuIFx0LyogU2V0dXAgSU1TSUMgU1ctZmlsZSAqL1xuLVx0c3dmaWxlX3BhZ2UgPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyxcbiYjNDM7XHRzd2ZpbGVfcGFnZSA9IGFsbG9jX3BhZ2VzKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8sXG4gXHRcdFx0XHQgIGdldF9vcmRlcihzaXplb2YoKmltc2ljLVx1MDAzZXN3ZmlsZSkpKTtcbiBcdGlmICghc3dmaWxlX3BhZ2UpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL21tdS5jXG5pbmRleCAwODJmOWIyNjE3MzM4Ny4uOWIxZDgwOWRhZjJjYzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbW11LmNcbkBAIC02NjksOCAmIzQzOzY2OSw4IEBAIGludCBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChzdHJ1Y3Qga3ZtICprdm0pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0cGdkX3BhZ2UgPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyxcbi1cdFx0XHRcdGdldF9vcmRlcihrdm1fcmlzY3ZfZ3N0YWdlX3BnZF9zaXplKSk7XG4mIzQzO1x0cGdkX3BhZ2UgPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMX0FDQ09VTlQgfCBfX0dGUF9aRVJPLFxuJiM0MztcdFx0XHQgICAgICAgZ2V0X29yZGVyKGt2bV9yaXNjdl9nc3RhZ2VfcGdkX3NpemUpKTtcbiBcdGlmICghcGdkX3BhZ2UpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0a3ZtLVx1MDAzZWFyY2gucGdkID0gcGFnZV90b192aXJ0KHBnZF9wYWdlKTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuaW5kZXggYmI0NmRjYmZiMjRkYTcuLmU1MDE4Nzg0Nzc5ZDViIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuQEAgLTQ1Miw3ICYjNDM7NDUyLDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNcbiBcdFx0fVxuIFx0fVxuIFxuLVx0a3ZwbXUtXHUwMDNlc2RhdGEgPSBremFsbG9jKHNuYXBzaG90X2FyZWFfc2l6ZSwgR0ZQX0FUT01JQyk7XG4mIzQzO1x0a3ZwbXUtXHUwMDNlc2RhdGEgPSBremFsbG9jKHNuYXBzaG90X2FyZWFfc2l6ZSwgR0ZQX0FUT01JQyB8IF9fR0ZQX0FDQ09VTlQpO1xuIFx0aWYgKCFrdnBtdS1cdTAwM2VzZGF0YSkge1xuIFx0XHRzYmlyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XG4gXHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xuaW5kZXggYWIzOWFjNDY0ZmZkODEuLjQ5ODRkM2U1NGUyM2M2IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcbkBAIC0zNzcsNyAmIzQzOzM3Nyw3IEBAIHN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGludCBpO1xuIFxuIFx0ZndmdC1cdTAwM2Vjb25maWdzID0ga3phbGxvY19vYmpzKHN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnLFxuLVx0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGZlYXR1cmVzKSk7XG4mIzQzO1x0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGZlYXR1cmVzKSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghZndmdC1cdTAwM2Vjb25maWdzKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuY1xuaW5kZXggNjJkMmZiNzdiYjliOTMuLmQ3NDhlN2Q4MjVlMTM3IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuY1xuQEAgLTc2LDExICYjNDM7NzYsMTEgQEAgdm9pZCBrdm1fcmlzY3ZfdmNwdV9ob3N0X3ZlY3Rvcl9yZXN0b3JlKHN0cnVjdCBrdm1fY3B1X2NvbnRleHQgKmNudHgpXG4gXG4gaW50IGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR2Y3B1LVx1MDAzZWFyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBremFsbG9jKHJpc2N2X3ZfdnNpemUsIEdGUF9LRVJORUwpO1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5ndWVzdF9jb250ZXh0LnZlY3Rvci5kYXRhcCA9IGt6YWxsb2MocmlzY3Zfdl92c2l6ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghdmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdHZjcHUtXHUwMDNlYXJjaC5ob3N0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHR2Y3B1LVx1MDAzZWFyY2guaG9zdF9jb250ZXh0LnZlY3Rvci5kYXRhcCA9IGt6YWxsb2MocmlzY3Zfdl92c2l6ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghdmNwdS1cdTAwM2VhcmNoLmhvc3RfY29udGV4dC52ZWN0b3IuZGF0YXApIHtcbiBcdFx0a2ZyZWUodmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwKTtcbiBcdFx0dmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2FwbGljX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2QmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSYjMzQ7LAogICAgJiMzNDtrdm1fc2JpX2V4dF9md2Z0X2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoR0ZQX0tFUk5FTF9BQ0NPVU5UIC8gX19HRlBfQUNDT1VOVCkgZm9yIHNldmVyYWwgS1ZNIGFsbG9jYXRpb25zIG9uIFJJU0MtVi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IGxpbWl0cyBhcmUgcHJvcGVybHkgZW5mb3JjZWQgYW5kIHRvIGRldGVjdCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGluIHRoZXNlIGFsbG9jYXRpb24gcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI2Nzk5OTBmMjVhMzE5YTJmNzQ2NWQ0NzFhYWNkOGZmOTA1ZWI5ZWYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAxMToxMDoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jIGIvYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmMKaW5kZXggNzQ4MTA3YzM0N2Q5MTUuLmJlOTAyZWE2NDgwYjczIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuYwpAQCAtNTgxLDcgJiM0Mzs1ODEsOCBAQCBpbnQga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0KHN0cnVjdCBrdm0gKmt2bSkKIAkJcmV0dXJuIDA7CiAKIAkvKiBBbGxvY2F0ZSBBUExJQyBnbG9iYWwgc3RhdGUgKi8KLQlhcGxpYyA9IGt6YWxsb2NfZmxleCgqYXBsaWMsIGlycXMsIGt2bS0mZ3Q7YXJjaC5haWEubnJfc291cmNlcyAmIzQzOyAxKTsKJiM0MzsJYXBsaWMgPSBremFsbG9jX2ZsZXgoKmFwbGljLCBpcnFzLCBrdm0tJmd0O2FyY2guYWlhLm5yX3NvdXJjZXMgJiM0MzsgMSwKJiM0MzsJCQkgICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJaWYgKCFhcGxpYykKIAkJcmV0dXJuIC1FTk9NRU07CiAJa3ZtLSZndDthcmNoLmFpYS5hcGxpY19zdGF0ZSA9IGFwbGljOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmMgYi9hcmNoL3Jpc2N2L2t2bS9haWFfaW1zaWMuYwppbmRleCBkMzhmNWRlMDgzNGM1Yi4uNTA3ZDgyZTViYzg4MmMgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jCkBAIC0xMTA4LDcgJiM0MzsxMTA4LDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAkvKiBBbGxvY2F0ZSBJTVNJQyBjb250ZXh0ICovCi0JaW1zaWMgPSBremFsbG9jX29iaigqaW1zaWMpOwomIzQzOwlpbXNpYyA9IGt6YWxsb2Nfb2JqKCppbXNpYywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAlpZiAoIWltc2ljKQogCQlyZXR1cm4gLUVOT01FTTsKIAl2Y3B1LSZndDthcmNoLmFpYV9jb250ZXh0Lmltc2ljX3N0YXRlID0gaW1zaWM7CkBAIC0xMTIxLDcgJiM0MzsxMTIxLDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlpbXNpYy0mZ3Q7dnNmaWxlX2hnZWkgPSBpbXNpYy0mZ3Q7dnNmaWxlX2NwdSA9IC0xOwogCiAJLyogU2V0dXAgSU1TSUMgU1ctZmlsZSAqLwotCXN3ZmlsZV9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sCiYjNDM7CXN3ZmlsZV9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTywKIAkJCQkgIGdldF9vcmRlcihzaXplb2YoKmltc2ljLSZndDtzd2ZpbGUpKSk7CiAJaWYgKCFzd2ZpbGVfcGFnZSkgewogCQlyZXQgPSAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbW11LmMgYi9hcmNoL3Jpc2N2L2t2bS9tbXUuYwppbmRleCAwODJmOWIyNjE3MzM4Ny4uOWIxZDgwOWRhZjJjYzAgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL21tdS5jCkBAIC02NjksOCAmIzQzOzY2OSw4IEBAIGludCBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChzdHJ1Y3Qga3ZtICprdm0pCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCXBnZF9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sCi0JCQkJZ2V0X29yZGVyKGt2bV9yaXNjdl9nc3RhZ2VfcGdkX3NpemUpKTsKJiM0MzsJcGdkX3BhZ2UgPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMX0FDQ09VTlQgfCBfX0dGUF9aRVJPLAomIzQzOwkJCSAgICAgICBnZXRfb3JkZXIoa3ZtX3Jpc2N2X2dzdGFnZV9wZ2Rfc2l6ZSkpOwogCWlmICghcGdkX3BhZ2UpCiAJCXJldHVybiAtRU5PTUVNOwogCWt2bS0mZ3Q7YXJjaC5wZ2QgPSBwYWdlX3RvX3ZpcnQocGdkX3BhZ2UpOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMKaW5kZXggYmI0NmRjYmZiMjRkYTcuLmU1MDE4Nzg0Nzc5ZDViIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMKQEAgLTQ1Miw3ICYjNDM7NDUyLDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHMKIAkJfQogCX0KIAotCWt2cG11LSZndDtzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDKTsKJiM0MzsJa3ZwbXUtJmd0O3NkYXRhID0ga3phbGxvYyhzbmFwc2hvdF9hcmVhX3NpemUsIEdGUF9BVE9NSUMgfCBfX0dGUF9BQ0NPVU5UKTsKIAlpZiAoIWt2cG11LSZndDtzZGF0YSkgewogCQlzYmlyZXQgPSBTQklfRVJSX0ZBSUxVUkU7CiAJCWdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jCmluZGV4IGFiMzlhYzQ2NGZmZDgxLi40OTg0ZDNlNTRlMjNjNiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYwpAQCAtMzc3LDcgJiM0MzszNzcsNyBAQCBzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaW50IGk7CiAKIAlmd2Z0LSZndDtjb25maWdzID0ga3phbGxvY19vYmpzKHN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnLAotCQkJCSAgICAgQVJSQVlfU0laRShmZWF0dXJlcykpOwomIzQzOwkJCQkgICAgIEFSUkFZX1NJWkUoZmVhdHVyZXMpLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghZndmdC0mZ3Q7Y29uZmlncykKIAkJcmV0dXJuIC1FTk9NRU07CiAKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfdmVjdG9yLmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jCmluZGV4IDYyZDJmYjc3YmI5YjkzLi5kNzQ4ZTdkODI1ZTEzNyAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jCkBAIC03NiwxMSAmIzQzOzc2LDExIEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfaG9zdF92ZWN0b3JfcmVzdG9yZShzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpjbnR4KQogCiBpbnQga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXZjcHUtJmd0O2FyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBremFsbG9jKHJpc2N2X3ZfdnNpemUsIEdGUF9LRVJORUwpOwomIzQzOwl2Y3B1LSZndDthcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghdmNwdS0mZ3Q7YXJjaC5ndWVzdF9jb250ZXh0LnZlY3Rvci5kYXRhcCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQl2Y3B1LSZndDthcmNoLmhvc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBremFsbG9jKHJpc2N2X3ZfdnNpemUsIEdGUF9LRVJORUwpOwomIzQzOwl2Y3B1LSZndDthcmNoLmhvc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBremFsbG9jKHJpc2N2X3ZfdnNpemUsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJaWYgKCF2Y3B1LSZndDthcmNoLmhvc3RfY29udGV4dC52ZWN0b3IuZGF0YXApIHsKIAkJa2ZyZWUodmNwdS0mZ3Q7YXJjaC5ndWVzdF9jb250ZXh0LnZlY3Rvci5kYXRhcCk7CiAJCXZjcHUtJmd0O2FyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBOVUxMOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDU0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1lbW9yeSBBY2NvdW50aW5nIGZvciBSSVNDLVYgS1ZNIEFsbG9jYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBlbmFibGluZyBtZW1vcnkgYWNjb3VudGluZyBmb3IgYSBmZXcgY3JpdGljYWwgYWxsb2NhdGlvbiBwYXRocyB3aXRoaW4gdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgYWRkaW5nIGBHRlBfS0VSTkVMX0FDQ09VTlRgIG9yIGBfX0dGUF9BQ0NPVU5UYCB0byB0aG9zZSBhbGxvY2F0aW9uIGZsYWdzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgc2hvdWxkIGltcHJvdmUgb3VyIGFiaWxpdHkgdG8gdHJhY2sgbWVtb3J5IHVzYWdlIHdpdGhpbiB0aGUgS1ZNIHN1YnN5c3RlbSBvbiBSSVNDLVYuCgpUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyBzZXZlcmFsIGZpbGVzLCBhbGwgd2l0aGluIHRoZSBgYXJjaC9yaXNjdi9rdm1gIGRpcmVjdG9yeTogYGFpYV9hcGxpYy5jYCwgYGFpYV9pbXNpYy5jYCwgYG1tdS5jYCwgYHZjcHVfcG11LmNgLCBgdmNwdV9zYmlfZndmdC5jYCwgYW5kIGB2Y3B1X3ZlY3Rvci5jYC4gQSBxdWljayBzY2FuIG9mIHRoZSBjb2RlIGlkZW50aWZpZXMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczogYGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdGAsIGBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdGAsIGBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZGAsIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCwgYGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdGAsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHRgLgoKTm93LCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgYWxsIG1ha2VzIHNlbnNlIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbnRleHQuIEZpcnN0LCB3ZSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCBLVk0gaXMgZXZlbiBlbmFibGVkIG9uIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLCBJIGFzc3VtZSB0aGF0IGVuYWJsaW5nIEtWTSB3b3VsZCByZWx5IG9uIHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIG9wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTE6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgS1ZNIE1lbW9yeSBBY2NvdW50aW5nIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWcgaXMgc2V0IHRvIGBLVk1gLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IHdvcnRoIGRlZGljYXRpbmcgZnV6emluZyByZXNvdXJjZXMgdG8uIEl0JiMzOTtzIGFib3V0IG1lbW9yeSBhY2NvdW50aW5nIHdpdGhpbiBLVk0gYWxsb2NhdGlvbnMg4oCTIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHksIGJ1dCB1c3VhbGx5IHRyYW5zcGFyZW50IHVubGVzcyB3ZSYjMzk7cmUgdHJpZ2dlcmluZyBhbiBvdXQtb2YtbWVtb3J5IChPT00pIGNvbmRpdGlvbi4gQnV0IHN5emthbGxlciAqZG9lcyogZm9jdXMgb24gbWVtb3J5IGxpbWl0cyBhbmQgYWNjb3VudGluZywgc28gdGhhdCYjMzk7cyBhIHBvaW50IGluIGl0cyBmYXZvci4KCkhtbSwgaXMgdGhpcyBldmVuICpyZWFjaGFibGUqIGluIG91ciB0ZXN0IGVudmlyb25tZW50PyBXZSYjMzk7cmUgcnVubmluZyB0ZXN0cyBvbiB4ODZfNjQsIGFybTY0LCBhbmQgcG90ZW50aWFsbHkgcmlzY3YuIFdhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSByaXNjdjY0IHN1cHBvcnQsIHJpZ2h0PyBJZiB3ZSYjMzk7cmUgdGVzdGluZyBvbiByaXNjdjY0LCB0aGlzIHBhdGNoIGJlY29tZXMgYSB2YWxpZCB0YXJnZXQuIAoKQWgsIHJpZ2h0LCB0aGUgcHJvbXB0IHNheXMgdG8gdmVyaWZ5IGV4ZWN1dGlvbi4gT2theSwgaWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBJIG5lZWQgdG8gdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIGNvbmZpcm0gdGhhdCB0aGUgY29kZSAqY2FuKiBiZSBleGVjdXRlZC4gVGhhdCBzZXR0bGVzIGl0LiBUaGUgYW5zd2VyIGlzICYjMzQ7V29ydGhGdXp6aW5nPXRydWUuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfYWlhX2FwbGljX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmM9NTU5PWludCBrdm1fcmlzY3ZfYWlhX2FwbGljX2hhc19hdHRyKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jLTU3My1cbmFyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jOjU3NDppbnQga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0KHN0cnVjdCBrdm0gKmt2bSlcbmFyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jLTU3NS17XG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhX2RldmljZS5jPTIyNj1zdGF0aWMgaW50IGFpYV9pbml0KHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmMtMjUxLVx0LyogSW5pdGlhbGl6ZSBBUExJQyAqL1xuYXJjaC9yaXNjdi9rdm0vYWlhX2RldmljZS5jOjI1MjpcdHJldCA9IGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdChrdm0pO1xuYXJjaC9yaXNjdi9rdm0vYWlhX2RldmljZS5jLTI1My1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTE6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAxOAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqUmVhY2hpbmcgZm9yIHRoZSBBSUEqKgoKUmlnaHQsIGl0JiMzOTtzIHN0YXJ0aW5nIHRvIGNsaWNrLiBJIGhhdmUgYSBodW5jaCB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBnZXQgbXkgaGFuZHMgb24gYW5kIHdvcmsgd2l0aC4gVGhlIHRhcmdldCBoZXJlIGlzIGNsZWFyOiBsZXQmIzM5O3MgZGl2ZSBzdHJhaWdodCBpbnRvIGBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljLCBvciBhdCBsZWFzdCB0aGUgZ3JvdW5kd29yaywgZm9yIHRoZSBBSUEgYW5kIElNU0lDIHNldHVwIGlzIGxpa2VseSBoYXBwZW5pbmcgd2l0aGluIHRoZSBLVk0vUklTQy1WIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQUlBIGltcGxlbWVudGF0aW9uIHN0YXJ0cyB1cCwgYW5kIHRoaXMgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gVGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGFuZCBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL2FpYV9kZXZpY2UuYz0yMjY9c3RhdGljIGludCBhaWFfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhX2RldmljZS5jLTI3OC1cdFx0LyogSW5pdGlhbGl6ZSBJTVNJQyBmb3IgdGhpcyBWQ1BVICovXG5hcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmM6Mjc5Olx0XHRyZXQgPSBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdCh2Y3B1KTtcbmFyY2gvcmlzY3Yva3ZtL2FpYV9kZXZpY2UuYy0yODAtXHRcdGlmIChyZXQpXG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmM9MTA5ND1zdGF0aWMgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzIGltc2ljX2lvZG9ldl9vcHMgPSB7XG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmMtMTA5OC1cbmFyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jOjEwOTk6aW50IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jLTExMDAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MTgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBga3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RgLCBwcmVzZW50ZWQgYXMgdGhvdWdoIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGlzIGlzIGdvaW5nIHRvIGJlIGFib3V0IGFsbG9jYXRpbmcgYSBwYWdlIGdsb2JhbCBkaXJlY3RvcnkgKFBHRCkgZm9yIHRoZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uLiBHaXZlbiBteSBiYWNrZ3JvdW5kIGluIHZpcnR1YWwgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIFJJU0MtViBhcmNoaXRlY3R1cmUsIG15IGluaXRpYWwgdGhvdWdodCBpczogd2hhdCBhcmUgdGhlIHNwZWNpZmljIGNvbnNpZGVyYXRpb25zIGhlcmU/IElzIHRoaXMgZm9yIHRoZSBndWVzdCYjMzk7cyBQR0QsIG9yIHRoZSBob3N0JiMzOTtzPyBKdWRnaW5nIGJ5IHRoZSBuYW1lLCBpdCYjMzk7cyB0aGUgZ3Vlc3QmIzM5O3MsIHdoaWNoIG1ha2VzIHRoZSBtb3N0IHNlbnNlLgoKTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgY29tcGxleGl0aWVzLiBUaGlzIGZ1bmN0aW9uIHByb2JhYmx5IG5lZWRzIHRvIGFjY291bnQgZm9yIHRoZSBSSVNDLVYmIzM5O3Mgc3BlY2lmaWMgcGFnZSB0YWJsZSBzdHJ1Y3R1cmUg4oCTIHdoaWNoIGxldmVsIG9mIHRoZSBwYWdlIHRhYmxlIGhpZXJhcmNoeSBhcmUgd2UgZGVhbGluZyB3aXRoPyBEb2VzIGl0IGFsaWduIHdpdGggYSA0LWxldmVsIG9yIDUtbGV2ZWwgaW1wbGVtZW50YXRpb24/IEl0IG5lZWRzIHRvIGNvbnNpZGVyIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIGNvbnN0cmFpbnRzLCB0b28sIGFuZCBlbnN1cmUgdGhlIGFsbG9jYXRpb24gaXMgYWxpZ25lZCB3aXRoIHRoZSBoYXJkd2FyZSYjMzk7cyByZXF1aXJlbWVudHMuIEdpdmVuIEtWTSYjMzk7cyByb2xlLCB0aGUgYWxsb2NhdGVkIG1lbW9yeSBhbHNvIG5lZWRzIHRvIGJlIGFjY2Vzc2libGUgYm90aCB0byB0aGUgaG9zdCBrZXJuZWwgKGZvciBtYW5hZ2luZyBpdCkgYW5kIHRvIHRoZSBndWVzdCBWTSAod2hpY2ggdXNlcyBpdCBmb3IgYWRkcmVzcyB0cmFuc2xhdGlvbikuCgpJJiMzOTttIG1lbnRhbGx5IGdvaW5nIHRocm91Z2ggcG90ZW50aWFsIGlzc3VlcyBhcm91bmQgY2FjaGUgY29oZXJlbmN5LiBTaW5jZSBib3RoIHRoZSBob3N0IGFuZCBndWVzdCBjYW4gcG90ZW50aWFsbHkgbW9kaWZ5IHRoaXMgUEdELCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBoYXJkd2FyZSBjYWNoZSBpcyBjb3JyZWN0bHkgZmx1c2hlZCwgb3IgaW52YWxpZGF0aW9uIG9wZXJhdGlvbnMgYXJlIGlzc3VlZCBjb3JyZWN0bHkuIEFyZSB3ZSBkZWFsaW5nIHdpdGggYW55IG1lbW9yeSBiYXJyaWVycyBoZXJlIHRvIGVuc3VyZSBwcm9wZXIgb3JkZXJpbmcgb2YgbWVtb3J5IG9wZXJhdGlvbnM/IExldCYjMzk7cyBjaGVjayB0aGUgY29kZSBhbmQgc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tbXUuYz01MzU9aW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy02NjItXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo2NjM6aW50IGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkKHN0cnVjdCBrdm0gKmt2bSlcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTY2NC17XG4tLVxuYXJjaC9yaXNjdi9rdm0vdm0uYz0zMT1pbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92bS5jLTM0LVxuYXJjaC9yaXNjdi9rdm0vdm0uYzozNTpcdHIgPSBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChrdm0pO1xuYXJjaC9yaXNjdi9rdm0vdm0uYy0zNi1cdGlmIChyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjA1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGFja2xpbmcgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAqKgoKUmlnaHQsIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGl0c2VsZiBpcyBhIHByZXR0eSBnb29kIGluZGljYXRvciBvZiB3aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIEl0JiMzOTtzIG9idmlvdXNseSB0aWVkIHRvIEtWTSwgUklTQy1WIGFyY2hpdGVjdHVyZSwgdkNQVXMsIGFuZCBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXRzIChQTVVzKS4gVGhlICYjMzQ7c25hcHNob3QmIzM0OyBwYXJ0IHN1Z2dlc3RzIHdlJiMzOTtyZSBwcm9iYWJseSBjYXB0dXJpbmcgYSBwb2ludC1pbi10aW1lIHN0YXRlIG9mIHRoZSBQTVUgY291bnRlcnMsIGFuZCB0aGUgJiMzNDtzaG1lbSYjMzQ7IGluZGljYXRlcyB3ZSYjMzk7cmUgc3RvcmluZyB0aGlzIHNuYXBzaG90IGluIHNoYXJlZCBtZW1vcnkuIEdpdmVuIHRoYXQgc2hhcmVkIG1lbW9yeSBpcyB1c2VkIGZvciBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24sIHRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgYSBtZWNoYW5pc20gZm9yIHNvbWV0aGluZyBvdXRzaWRlIG9mIHRoZSBndWVzdCAobGlrZWx5IHRoZSBob3N0L2h5cGVydmlzb3IpIHRvIGludGVyYWN0IHdpdGggdGhlIGd1ZXN0JiMzOTtzIFBNVSBkYXRhLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6CgoqICAgKipXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyoqIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGZyb20/IElzIGl0IGludm9rZWQgZHVyaW5nIGEgc3BlY2lmaWMgVk0gbGlmZWN5Y2xlIGV2ZW50IChsaWtlIGEgZ3Vlc3Qgc3VzcGVuZCwgbWlncmF0aW9uLCBvciBzb21lIHNwZWNpZmljIG1vbml0b3JpbmcgcmVxdWVzdCk/IFRoaXMgd2lsbCBkaWN0YXRlIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLgoqICAgKipXaGF0IGRhdGEgaXMgYmVpbmcgc2hhcmVkPyoqIFdoYXQgc3BlY2lmaWMgUE1VIGNvdW50ZXJzIGFyZSBiZWluZyBzbmFwc2hvdHRlZCBhbmQgc2hhcmVkPyBBcmUgd2UgdGFsa2luZyBhYm91dCBldmVudCBjb3VudHMsIHRpbWUtYmFzZWQgbWV0cmljcywgb3IgcGVyaGFwcyBldmVuIGNvbnRyb2wgcmVnaXN0ZXIgc3RhdGVzPyBUaGlzIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBsZXZlbCBvZiBvYnNlcnZhYmlsaXR5IHdlIGhhdmUuCiogICAqKldoYXQmIzM5O3MgdGhlIG1lbW9yeSBsYXlvdXQ/KiogV2hhdCYjMzk7cyB0aGUgc3RydWN0dXJlIG9mIHRoZSBzaGFyZWQgbWVtb3J5IHJlZ2lvbj8gS25vd2luZyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBvZmZzZXRzIHdpbGwgYmUga2V5IGZvciBwcm9wZXIgZGF0YSBpbnRlcnByZXRhdGlvbiBhbmQgaW50ZXJhY3Rpb24gd2l0aCBpdC4KKiAgICoqV2hhdCYjMzk7cyB0aGUgbG9ja2luZy9zeW5jaHJvbml6YXRpb24gc2NoZW1lPyoqIFNoYXJlZCBtZW1vcnkgaXMgaW5oZXJlbnRseSBzdXNjZXB0aWJsZSB0byByYWNlIGNvbmRpdGlvbnMuIEhvdyBkb2VzIHRoaXMgZnVuY3Rpb24gaGFuZGxlIGNvbmN1cnJlbmN5IGJldHdlZW4gdGhlIGd1ZXN0IGFuZCB0aGUgaHlwZXJ2aXNvcj8gQXJlIHRoZXJlIG11dGV4ZXMsIHNwaW5sb2Nrcywgb3Igb3RoZXIgbWVjaGFuaXNtcyBpbnZvbHZlZCB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHk/IFRoaXMgaXMgYSBwcmltYXJ5IGNvbmNlcm4uCiogICAqKldoYXQmIzM5O3MgdGhlIGVycm9yIGhhbmRsaW5nPyoqIEhvdyBkb2VzIHRoZSBmdW5jdGlvbiBoYW5kbGUgZmFpbHVyZXM/IERvZXMgaXQgcmV0dXJuIGVycm9yIGNvZGVzLCBsb2cgbWVzc2FnZXMsIG9yIHRyaWdnZXIgb3RoZXIgZXJyb3ItaGFuZGxpbmcgcHJvY2VkdXJlcz8gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHN5c3RlbSBzdGFiaWxpdHkuCiogICAqKkhvdyYjMzk7cyBpdCBhcmNoaXRlY3RlZD8qKiBJcyB0aGlzIGEgZGlyZWN0IGludGVyYWN0aW9uLCBvciBkb2VzIGl0IHV0aWxpemUgYW55IGhlbHBlciBmdW5jdGlvbnMgb3IgYWJzdHJhY3Rpb24gbGF5ZXJzIHdpdGhpbiB0aGUgS1ZNIGluZnJhc3RydWN0dXJlPwoKTm93LCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlLiBUaW1lIHRvIGZpcmUgdXAgdGhlIGRlYnVnZ2VyIG9yIHRoZSBzdGF0aWMgYW5hbHlzaXMgdG9vbHMuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZ2V0IHRvIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCBsb29rIGF0IHRoZSBzdHJ1Y3R1cmVzLCBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgdGhlbiB0cnkgdG8gc2VlIHRoZSBvdmVyYWxsIGZsb3cuIEkgYWxzbyBleHBlY3QgdG8gc2VlIGEgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBvbiB0aGUgaHlwZXJ2aXNvciBzaWRlLCBsaWtlbHkgY2FsbGVkIGR1cmluZyB0aGUgc25hcHNob3QgcmV0cmlldmFsLiBUaGlzIHdpbGwgbmVlZCBhIGNhcmVmdWwgbG9vayBmb3IgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYz00MTY9c3RhdGljIHZvaWQga3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyNC1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM6NDI1OmludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyNi1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBmbGFncyxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz0xNj1zdGF0aWMgaW50IGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03My1cdGNhc2UgU0JJX0VYVF9QTVVfU05BUFNIT1RfU0VUX1NITUVNOlxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6NzQ6XHRcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0odmNwdSwgY3AtXHUwMDNlYTAsIGNwLVx1MDAzZWExLCBjcC1cdTAwM2VhMiwgcmV0ZGF0YSk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03NS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNDMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIEtWTSBTQkkgRXh0ZW5zaW9uIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhlYWQgYXJvdW5kIGBrdm1fc2JpX2V4dF9md2Z0X2luaXRgLiBUaGlzIGZ1bmN0aW9uIG5hbWUgaW1tZWRpYXRlbHkgY2x1ZXMgbWUgaW4g4oCTIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggS1ZNIChLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lKSBhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gU0JJIGV4dGVuc2lvbnMsIGxpa2VseSBjb25jZXJuaW5nIGZpcm13YXJlLCBmbG9hdGluZy1wb2ludCBzdGF0ZSBtYW5hZ2VtZW50LCBhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIFRoYXQgJiMzNDtmd2Z0JiMzNDsgcGFydCBpcyBpbnRyaWd1aW5nOyBJIHN1c3BlY3QgaXQgcmVsYXRlcyB0byB0aGUgRldGVCBpbnN0cnVjdGlvbiBleHRlbnNpb24gKGxpa2VseSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlIG9yIHByb2Nlc3NvciB2ZW5kb3IpIGFuZCBob3cgaXQmIzM5O3MgaGFuZGxlZCBkdXJpbmcgS1ZNIHNldHVwLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgc3BlY2lmaWMgYXNwZWN0IG9mIHRoZSBTQkkgZXh0ZW5zaW9uIGlzIGJlaW5nIGluaXRpYWxpemVkIGhlcmUgYW5kIHdoeSBpdCB3YXJyYW50cyBhIGRlZGljYXRlZCBmdW5jdGlvbi4gV2hhdCYjMzk7cyB0aGUgcmVsYXRpb25zaGlwIG9mIEZXRlQgdG8gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlIG9yIHNlY3VyaXR5PyBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIHJldm9sdmUgYXJvdW5kIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCB3aGF0JiMzOTtzIGJlaW5nIGluaXRpYWxpemVkLCB0aGUgcmVsZXZhbnQgZGF0YSBzdHJ1Y3R1cmVzLCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgYW5kIHdoYXQgZXJyb3JzLCBpZiBhbnksIGNhbiBvY2N1ciBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZXhwbG9yZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIEtWTSBpbmZyYXN0cnVjdHVyZS4gSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgZGVmaW5pdGlvbiwgdGhlbiBsb29rIGF0IHRoZSBjYWxsZXIgYW5kIGNhbGxlZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zYmlfZXh0X2Z3ZnRfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9MzQ4PXN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMtMzcxLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jOjM3MjpzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMtMzczLXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9NTY4PWNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9md2Z0ID0ge1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzEtXHQuaGFuZGxlciA9IGt2bV9zYmlfZXh0X2Z3ZnRfaGFuZGxlcixcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYzo1NzI6XHQuaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdCxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzMtXHQuZGVpbml0ID0ga3ZtX3NiaV9leHRfZndmdF9kZWluaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MjcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBmdW5jdGlvbjoKCioqRGl2aW5nIGludG8gYGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0YC4gVGhhdCBuYW1lIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcgdGhlIGNvbnRleHQgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdmVjdG9yIG9wZXJhdGlvbnMgd2l0aGluIGEgUklTQy1WIEtWTSB2aXJ0dWFsIENQVS4gVGhpcyBpcyBsaWtlbHkgYSBjcml0aWNhbCBwaWVjZSBmb3Igc3VwcG9ydGluZyB2ZWN0b3IgZXh0ZW5zaW9ucyBpbiB0aGUgZ3Vlc3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBzZXR0aW5nIHVwIHRoZSBtZW1vcnkgYW5kIGRhdGEgc3RydWN0dXJlcyByZXF1aXJlZCB0byBtYW5hZ2UgdGhvc2UgdmVjdG9yIHJlZ2lzdGVycyBhbmQgc3RhdGUuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgaW52b2x2ZXMgYWxsb2NhdGluZyBtZW1vcnksIGluaXRpYWxpemluZyByZWdpc3RlcnMsIHNldHRpbmcgdXAgc2hhZG93IHJlZ2lzdGVycyAoaWYgYXBwbGljYWJsZSBmb3IgZW11bGF0aW9uIG9yIG9wdGltaXphdGlvbiksIGFuZCBsaWtlbHkgaW50ZXJmYWNpbmcgd2l0aCB0aGUgaGFyZHdhcmUgb3IgdGhlIGVtdWxhdGlvbiBsYXllciYjMzk7cyB2ZWN0b3IgdW5pdC4gSSYjMzk7bSBjdXJpb3VzIHRvIHNlZSBpZiBpdCBoYW5kbGVzIGFueSBzcGVjaWZpYyBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIGZvciB0aGUgdmVjdG9yIGNvbnRleHQsIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBjbGV2ZXIgbWVtb3J5IG1hbmFnZW1lbnQgaW52b2x2ZWQuIElzIGl0IHVzaW5nIGEgY3VzdG9tIGFsbG9jYXRvciwgb3IgcmVseWluZyBvbiBzdGFuZGFyZCBrZXJuZWwgYWxsb2NhdG9ycz8gTGV0JiMzOTtzIHNlZSBpZiBpdCBoYW5kbGVzIHRoZSB2YXJpb3VzIHZlY3RvciBsZW5ndGggKFZMRU4pIGNvbmZpZ3VyYXRpb25zIGFuZCB0aGUgdmVjdG9yIHJlZ2lzdGVyIGdyb3VwcyBjb3JyZWN0bHkuIFRoZSBhbGxvY2F0aW9uIHN0cmF0ZWd5IHNob3VsZCBhbHNvIGJlIGNvbnNpZGVyZWQuIElzIGl0IHByZS1hbGxvY2F0aW5nIHRoZSB2ZWN0b3IgY29udGV4dCBmb3IgYSBjZXJ0YWluIGFtb3VudCBvZiB2aXJ0dWFsIENQVXMsIG9yIGlzIGl0IGFsbG9jYXRpbmcgdGhlbSBvbiBkZW1hbmQ/IEkgYW50aWNpcGF0ZSB0aGVyZSBtaWdodCBiZSBzb21lIGludGVycGxheSB3aXRoIHRoZSBLVk0gTU1VIHNldHVwLCB0b28sIGlmIHRoZSB2ZWN0b3IgY29udGV4dCBpbnZvbHZlcyBhZGRyZXNzIHRyYW5zbGF0aW9uIGluIHNvbWUgd2F5LiBUaGUgZXJyb3IgaGFuZGxpbmcgaXMgYWxzbyBzb21ldGhpbmcgdGhhdCBjYXRjaGVzIG15IGV5ZS4gSXMgdGhlcmUgcm9idXN0IGVycm9yIGhhbmRsaW5nIHRvIGRlYWwgd2l0aCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcz8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBlcnJvciBjb2RlcyB0aGF0IEtWTSByZXBvcnRzIHRvIHNpZ25hbCBpc3N1ZXMgd2l0aCB0aGlzIHZlY3RvciBjb250ZXh0IGFsbG9jYXRpb24/IEFuZCBmaW5hbGx5LCBJIHdvdWxkIGxpa2UgdG8gcXVpY2tseSBhc3Nlc3MgaWYgaXQgaW50ZWdyYXRlcyB3aXRoIGFueSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLCBsaWtlIHRoZSBLVk0gaHlwZXJjYWxscy4gSXMgdGhlcmUgYW55dGhpbmcgc3BlY2lhbCBoZXJlPyBUaGlzIHNob3VsZCBiZSBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTE6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vdmNwdS5jPTEyOT1pbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNTYtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MTU3Olx0cmMgPSBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dCh2Y3B1KTtcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNTgtXHRpZiAocmMpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYz03MT12b2lkIGt2bV9yaXNjdl92Y3B1X2hvc3RfdmVjdG9yX3Jlc3RvcmUoc3RydWN0IGt2bV9jcHVfY29udGV4dCAqY250eClcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jLTc2LVxuYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYzo3NzppbnQga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYy03OC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MzAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSBSSVNDLVYgSW5pdGlhbGl6YXRpb24gUGF0aHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIEtWTSBmdW5jdGlvbnMsIGFsbCBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgUklTQy1WIGltcGxlbWVudGF0aW9uLCBhbmQgc3BlY2lmaWNhbGx5LCB1bmRlciB0aGUgYEtWTWAgY29uZmlndXJhdGlvbi4gVGhlIGtleSBzeW1ib2xzIEkmIzM5O20gZm9jdXNpbmcgb24gYXJlOiBga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCwgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAuCgpJJiMzOTttIG1lbnRhbGx5IG1hcHBpbmcgdGhlIGNhbGwgY2hhaW5zIG5vdy4gV2FpdCBhIG1pbnV0ZS4uLiBga3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RgIGlzIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF9pbml0X3ZtYCwgd2hpY2ggaXMgYSBmdW5jdGlvbiBjcml0aWNhbCB0byB0aGUgVk0gY3JlYXRpb24gcHJvY2Vzcy4gVGhhdCYjMzk7cyBhIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcmVhLiBTaW1pbGFybHksIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAgb3JpZ2luYXRlcyBmcm9tIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWAsIHdoaWNoIGFsc28gZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSB2Q1BVIGlzIGNyZWF0ZWQuIFRoaXMgaGlnaGxpZ2h0cyB0aGUgaW1wb3J0YW5jZSBvZiB0aG9zZSB0d28gZnVuY3Rpb25zLgoKYGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdGAgYW5kIGBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdGAgYXJlIGluaXRpYWxpemVkIHZpYSBgYWlhX2luaXRgLiBPa2F5LCBtYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyB0aGVpciBuYXR1cmFsIGdyb3VwaW5nLiBBbmQsIHdoYXQgYWJvdXQgYGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdGA/IEkgc2VlbSB0byByZW1lbWJlciB0aGF0IGJlaW5nIGNhbGxlZCBmcm9tIGBrdm1fdmNwdV9zYmlfZXh0X2luaXRgLCBidXQgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQuIEFsd2F5cyBnb29kIHRvIGJlIHByZWNpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zYmlfZXh0X2Z3ZnRfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9MzQ4PXN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMtMzcxLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jOjM3MjpzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMtMzczLXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9NTY4PWNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9md2Z0ID0ge1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzEtXHQuaGFuZGxlciA9IGt2bV9zYmlfZXh0X2Z3ZnRfaGFuZGxlcixcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYzo1NzI6XHQuaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdCxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzMtXHQuZGVpbml0ID0ga3ZtX3NiaV9leHRfZndmdF9kZWluaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2OTAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjoga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSoqCgpPa2F5LCBzbyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAgaXMgdGhlIGZ1bmN0aW9uIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluIHRvZGF5LiBJdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgIHdoZW4gdGhlIGBTQklfRVhUX1BNVV9TTkFQU0hPVF9TRVRfU0hNRU1gIFNCSSBleHRlbnNpb24gaXMgaW52b2tlZC4gVGhhdCYjMzk7cyBhIGNsZWFyIGVudHJ5IHBvaW50LCB3aGljaCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3Igc29tZSBmdXp6aW5nIHdvcmsuIEEgbmljZSwgY2xlYW4sIHdlbGwtZGVmaW5lZCB0YXJnZXQgbGlrZSB0aGlzIGlzIGFsd2F5cyBhcHBlYWxpbmcuCgpOb3csIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJIG5lZWQgdG8gc2VlIGlmIHRoaXMgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnLCBvciBpZiB0aGVyZSBhcmUgb3RoZXIsIHBvc3NpYmx5IHJlbGF0ZWQsIGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBgS1ZNYCBpcyB0aGUgb2J2aW91cyBvbmUsIG9mIGNvdXJzZS4gQnV0IGFyZSB0aGVyZSBhbnkgb3RoZXIgYEtWTWAtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIHBlcmhhcHMgZmxhZ3Mgb3IgYnVpbGQgb3B0aW9ucywgd2l0aGluIHRoZSBSSVNDLVYgY29udGV4dCB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGZ1bmN0aW9uJiMzOTtzIGJlaGF2aW9yIG9yIHNldHVwPyBJdCYjMzk7cyBhbHdheXMgYmVzdCB0byBoYXZlIHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIHJlYWxseSBkaWdnaW5nIGludG8gdGhlIGNvZGUuIEdvdHRhIG1ha2Ugc3VyZSBub3RoaW5nIGlzIG92ZXJsb29rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTE6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNzQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlF1aWNrIERpYWdub3N0aWMgLSBWaXJ0dWFsaXphdGlvbiAmYW1wOyBLVk0gb24gUklTQy1WKioKCkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgc29tZXRoaW5nIGlzbiYjMzk7dCBxdWl0ZSBjbGlja2luZy4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWw6IElzICp2aXJ0dWFsaXphdGlvbiogYWN0dWFsbHkgZW5hYmxlZD8gU2VlbXMgb2J2aW91cywgYnV0IEkgaGF2ZSB0byBzdGFydCB0aGVyZS4gQW5kIHNpbmNlIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IFJJU0MtViwgdGhlIGFzc3VtcHRpb24gaXMgKktWTSogaXMgdGhlIGRyaXZpbmcgZm9yY2UgZm9yIGhhcmR3YXJlLWFzc2lzdGVkIHZpcnR1YWxpemF0aW9uLiBJdCB3b3VsZCBiZSBiaXphcnJlIGlmIHdlIHdlcmUgdXNpbmcgYW55dGhpbmcgZWxzZSBhdCB0aGlzIHBvaW50LgoKTGV0JiMzOTtzIHF1aWNrbHkgZHJpbGwgZG93biBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGZ1bmN0aW9uLiBUaGF04oCZcyBwcm9iYWJseSB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSByb290IG9mIHRoZSBwcm9ibGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM9NDE2PXN0YXRpYyB2b2lkIGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjQtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jOjQyNTppbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93LFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjYtXHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIHNhZGRyX2hpZ2gsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM9MTY9c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzMtXHRjYXNlIFNCSV9FWFRfUE1VX1NOQVBTSE9UX1NFVF9TSE1FTTpcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjc0Olx0XHRyZXQgPSBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHZjcHUsIGNwLVx1MDAzZWEwLCBjcC1cdTAwM2VhMSwgY3AtXHUwMDNlYTIsIHJldGRhdGEpO1xuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzUtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgxOAoJCQkJCQkJb3V0cHV0OiAxOTIKCQkJCQkJCXRob3VnaHRzOiAzMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1ZNIFJJU0MtViBNZW1vcnkgQWNjb3VudGluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBgR0ZQX0tFUk5FTF9BQ0NPVU5UYCBvciBgX19HRlBfQUNDT1VOVGAgdG8gYSBidW5jaCBvZiBhbGxvY2F0aW9ucy4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBpbXBvcnRhbnQgb25lIGFjdHVhbGx5LiBFbmFibGluZyBtZW1vcnkgYWNjb3VudGluZyBmb3IgdGhlc2UgYWxsb2NhdGlvbnMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBvcGVucyB0aGVtIHVwIGZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcsIHNwZWNpZmljYWxseSB3aXRoIHNvbWV0aGluZyBsaWtlIHN5emthbGxlci4gV2UgY2FuIHVzZSB0aGF0IHRvb2wgdG8gdmVyaWZ5IHRoYXQgbWVtb3J5IGxpbWl0cyBhcmUgYmVpbmcgZW5mb3JjZWQgY29ycmVjdGx5IGFuZCB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBtZW1vcnkgbGVha3MgbHVya2luZyBpbiB0aGVzZSBhbGxvY2F0aW9uIHBhdGhzLiBUaGF04oCZcyB0aGUgcmVhbCB2YWx1ZS4KCk5vdywgbGV0JiMzOTtzIHNlZSwgdGhlIHBhdGNoIHRvdWNoZXMgdGhlc2UgZnVuY3Rpb25zOiBga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCwgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAuIEhtbSwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCBhbmQgYGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0YC4uLiB0aG9zZSBhcmUgY2FsbGVkIGR1cmluZyBWTS9WQ1BVIGNyZWF0aW9uLCByaWdodD8gVGhleSBtaWdodCBiZSBzb21ld2hhdCBob3QgcGF0aHMsIGJ1dCB0aGF0IFZNL1ZDUFUgY3JlYXRpb24gcHJvY2VzcyBpcyBhY3R1YWxseSBhIGdyZWF0IHRhcmdldCBmb3IgZnV6emluZyB3aGVuIG1lbW9yeSBhY2NvdW50aW5nIGlzIGVuYWJsZWQuIEl0JiMzOTtzIGEgbmF0dXJhbCBwb2ludCB0byBwb2tlIGF0IHRoZXNlIGFsbG9jYXRpb25zLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gaW5jbHVkZSB0aGVtLgoKU28sIHRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFib3V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCB0aGF0IHNob3VsZCBiZSBlbmFibGVkLiBUaGUgY29uZmlnIGlzIG9idmlvdXNseSBgS1ZNYC4gSXTigJlzIGFsbCBhYm91dCBlbmhhbmNpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIFRpbWUgdG8gbG9nIHRoYXQgdG8gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNldCB0aG9zZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9tbXVfYWxsb2NfcGdkJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0mIzM0OywKICAgICYjMzQ7a3ZtX3NiaV9leHRfZndmdF9pbml0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGVuYWJsZXMgbWVtb3J5IGFjY291bnRpbmcgKEdGUF9LRVJORUxfQUNDT1VOVCAvIF9fR0ZQX0FDQ09VTlQpIGZvciBzZXZlcmFsIEtWTSBhbGxvY2F0aW9ucyBvbiBSSVNDLVYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSBmdXp6ZWQgdG8gZW5zdXJlIG1lbW9yeSBsaW1pdHMgYXJlIHByb3Blcmx5IGVuZm9yY2VkIGFuZCB0byBkZXRlY3QgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBpbiB0aGVzZSBhbGxvY2F0aW9uIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2FwbGljX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2QmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSYjMzQ7LAogICAgJiMzNDtrdm1fc2JpX2V4dF9md2Z0X2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoR0ZQX0tFUk5FTF9BQ0NPVU5UIC8gX19HRlBfQUNDT1VOVCkgZm9yIHNldmVyYWwgS1ZNIGFsbG9jYXRpb25zIG9uIFJJU0MtVi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IGxpbWl0cyBhcmUgcHJvcGVybHkgZW5mb3JjZWQgYW5kIHRvIGRldGVjdCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGluIHRoZXNlIGFsbG9jYXRpb24gcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMDoyMi44MDI5MTA2OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMjk3NjI4NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX2luaXRcIixcbiAgICBcImt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtXCIsXG4gICAgXCJrdm1fc2JpX2V4dF9md2Z0X2luaXRcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoR0ZQX0tFUk5FTF9BQ0NPVU5UIC8gX19HRlBfQUNDT1VOVCkgZm9yIHNldmVyYWwgS1ZNIGFsbG9jYXRpb25zIG9uIFJJU0MtVi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IGxpbWl0cyBhcmUgcHJvcGVybHkgZW5mb3JjZWQgYW5kIHRvIGRldGVjdCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGluIHRoZXNlIGFsbG9jYXRpb24gcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjIyLjgwMjkxNjUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzMwNzA1ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyNjc5OTkwZjI1YTMxOWEyZjc0NjVkNDcxYWFjZDhmZjkwNWViOWVmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDExOjEwOjIwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jIGIvYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmNcXG5pbmRleCA3NDgxMDdjMzQ3ZDkxNS4uYmU5MDJlYTY0ODBiNzMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuY1xcbkBAIC01ODEsNyArNTgxLDggQEAgaW50IGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0LyogQWxsb2NhdGUgQVBMSUMgZ2xvYmFsIHN0YXRlICovXFxuLVxcdGFwbGljID0ga3phbGxvY19mbGV4KCphcGxpYywgaXJxcywga3ZtLVxcdTAwM2VhcmNoLmFpYS5ucl9zb3VyY2VzICsgMSk7XFxuK1xcdGFwbGljID0ga3phbGxvY19mbGV4KCphcGxpYywgaXJxcywga3ZtLVxcdTAwM2VhcmNoLmFpYS5ucl9zb3VyY2VzICsgMSxcXG4rXFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRpZiAoIWFwbGljKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFx0a3ZtLVxcdTAwM2VhcmNoLmFpYS5hcGxpY19zdGF0ZSA9IGFwbGljO1xcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9haWFfaW1zaWMuYyBiL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jXFxuaW5kZXggZDM4ZjVkZTA4MzRjNWIuLjUwN2Q4MmU1YmM4ODJjIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmNcXG5AQCAtMTEwOCw3ICsxMTA4LDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbiBcXHQvKiBBbGxvY2F0ZSBJTVNJQyBjb250ZXh0ICovXFxuLVxcdGltc2ljID0ga3phbGxvY19vYmooKmltc2ljKTtcXG4rXFx0aW1zaWMgPSBremFsbG9jX29iaigqaW1zaWMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIFxcdGlmICghaW1zaWMpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR2Y3B1LVxcdTAwM2VhcmNoLmFpYV9jb250ZXh0Lmltc2ljX3N0YXRlID0gaW1zaWM7XFxuQEAgLTExMjEsNyArMTEyMSw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGltc2ljLVxcdTAwM2V2c2ZpbGVfaGdlaSA9IGltc2ljLVxcdTAwM2V2c2ZpbGVfY3B1ID0gLTE7XFxuIFxcbiBcXHQvKiBTZXR1cCBJTVNJQyBTVy1maWxlICovXFxuLVxcdHN3ZmlsZV9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sXFxuK1xcdHN3ZmlsZV9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyxcXG4gXFx0XFx0XFx0XFx0ICBnZXRfb3JkZXIoc2l6ZW9mKCppbXNpYy1cXHUwMDNlc3dmaWxlKSkpO1xcbiBcXHRpZiAoIXN3ZmlsZV9wYWdlKSB7XFxuIFxcdFxcdHJldCA9IC1FTk9NRU07XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21tdS5jIGIvYXJjaC9yaXNjdi9rdm0vbW11LmNcXG5pbmRleCAwODJmOWIyNjE3MzM4Ny4uOWIxZDgwOWRhZjJjYzAgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbW11LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xcbkBAIC02NjksOCArNjY5LDggQEAgaW50IGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkKHN0cnVjdCBrdm0gKmt2bSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuLVxcdHBnZF9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sXFxuLVxcdFxcdFxcdFxcdGdldF9vcmRlcihrdm1fcmlzY3ZfZ3N0YWdlX3BnZF9zaXplKSk7XFxuK1xcdHBnZF9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyxcXG4rXFx0XFx0XFx0ICAgICAgIGdldF9vcmRlcihrdm1fcmlzY3ZfZ3N0YWdlX3BnZF9zaXplKSk7XFxuIFxcdGlmICghcGdkX3BhZ2UpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHRrdm0tXFx1MDAzZWFyY2gucGdkID0gcGFnZV90b192aXJ0KHBnZF9wYWdlKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG5pbmRleCBiYjQ2ZGNiZmIyNGRhNy4uZTUwMTg3ODQ3NzlkNWIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG5AQCAtNDUyLDcgKzQ1Miw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0a3ZwbXUtXFx1MDAzZXNkYXRhID0ga3phbGxvYyhzbmFwc2hvdF9hcmVhX3NpemUsIEdGUF9BVE9NSUMpO1xcbitcXHRrdnBtdS1cXHUwMDNlc2RhdGEgPSBremFsbG9jKHNuYXBzaG90X2FyZWFfc2l6ZSwgR0ZQX0FUT01JQyB8IF9fR0ZQX0FDQ09VTlQpO1xcbiBcXHRpZiAoIWt2cG11LVxcdTAwM2VzZGF0YSkge1xcbiBcXHRcXHRzYmlyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcXG5pbmRleCBhYjM5YWM0NjRmZmQ4MS4uNDk4NGQzZTU0ZTIzYzYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jXFxuQEAgLTM3Nyw3ICszNzcsNyBAQCBzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGludCBpO1xcbiBcXG4gXFx0ZndmdC1cXHUwMDNlY29uZmlncyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qga3ZtX3NiaV9md2Z0X2NvbmZpZyxcXG4tXFx0XFx0XFx0XFx0ICAgICBBUlJBWV9TSVpFKGZlYXR1cmVzKSk7XFxuK1xcdFxcdFxcdFxcdCAgICAgQVJSQVlfU0laRShmZWF0dXJlcyksIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIFxcdGlmICghZndmdC1cXHUwMDNlY29uZmlncylcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuY1xcbmluZGV4IDYyZDJmYjc3YmI5YjkzLi5kNzQ4ZTdkODI1ZTEzNyAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuY1xcbkBAIC03NiwxMSArNzYsMTEgQEAgdm9pZCBrdm1fcmlzY3ZfdmNwdV9ob3N0X3ZlY3Rvcl9yZXN0b3JlKHN0cnVjdCBrdm1fY3B1X2NvbnRleHQgKmNudHgpXFxuIFxcbiBpbnQga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuLVxcdHZjcHUtXFx1MDAzZWFyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBremFsbG9jKHJpc2N2X3ZfdnNpemUsIEdGUF9LRVJORUwpO1xcbitcXHR2Y3B1LVxcdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRpZiAoIXZjcHUtXFx1MDAzZWFyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXApXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4tXFx0dmNwdS1cXHUwMDNlYXJjaC5ob3N0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMKTtcXG4rXFx0dmNwdS1cXHUwMDNlYXJjaC5ob3N0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRpZiAoIXZjcHUtXFx1MDAzZWFyY2guaG9zdF9jb250ZXh0LnZlY3Rvci5kYXRhcCkge1xcbiBcXHRcXHRrZnJlZSh2Y3B1LVxcdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwKTtcXG4gXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5ndWVzdF9jb250ZXh0LnZlY3Rvci5kYXRhcCA9IE5VTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjIzLjU3NjYwNjg1NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1MjM5MTcwMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0XCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIixcbiAgICBcImt2bV9zYmlfZXh0X2Z3ZnRfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChHRlBfS0VSTkVMX0FDQ09VTlQgLyBfX0dGUF9BQ0NPVU5UKSBmb3Igc2V2ZXJhbCBLVk0gYWxsb2NhdGlvbnMgb24gUklTQy1WLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgbGltaXRzIGFyZSBwcm9wZXJseSBlbmZvcmNlZCBhbmQgdG8gZGV0ZWN0IHBvdGVudGlhbCBtZW1vcnkgbGVha3MgaW4gdGhlc2UgYWxsb2NhdGlvbiBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNjc5OTkwZjI1YTMxOWEyZjc0NjVkNDcxYWFjZDhmZjkwNWViOWVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMTE6MTA6MjAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuYyBiL2FyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jXG5pbmRleCA3NDgxMDdjMzQ3ZDkxNS4uYmU5MDJlYTY0ODBiNzMgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmNcbkBAIC01ODEsNyArNTgxLDggQEAgaW50IGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0LyogQWxsb2NhdGUgQVBMSUMgZ2xvYmFsIHN0YXRlICovXG4tXHRhcGxpYyA9IGt6YWxsb2NfZmxleCgqYXBsaWMsIGlycXMsIGt2bS1cdTAwM2VhcmNoLmFpYS5ucl9zb3VyY2VzICsgMSk7XG4rXHRhcGxpYyA9IGt6YWxsb2NfZmxleCgqYXBsaWMsIGlycXMsIGt2bS1cdTAwM2VhcmNoLmFpYS5ucl9zb3VyY2VzICsgMSxcbitcdFx0XHQgICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIWFwbGljKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdGt2bS1cdTAwM2VhcmNoLmFpYS5hcGxpY19zdGF0ZSA9IGFwbGljO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jIGIvYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmNcbmluZGV4IGQzOGY1ZGUwODM0YzViLi41MDdkODJlNWJjODgyYyAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9haWFfaW1zaWMuY1xuQEAgLTExMDgsNyArMTEwOCw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0LyogQWxsb2NhdGUgSU1TSUMgY29udGV4dCAqL1xuLVx0aW1zaWMgPSBremFsbG9jX29iaigqaW1zaWMpO1xuK1x0aW1zaWMgPSBremFsbG9jX29iaigqaW1zaWMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIWltc2ljKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdHZjcHUtXHUwMDNlYXJjaC5haWFfY29udGV4dC5pbXNpY19zdGF0ZSA9IGltc2ljO1xuQEAgLTExMjEsNyArMTEyMSw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpbXNpYy1cdTAwM2V2c2ZpbGVfaGdlaSA9IGltc2ljLVx1MDAzZXZzZmlsZV9jcHUgPSAtMTtcbiBcbiBcdC8qIFNldHVwIElNU0lDIFNXLWZpbGUgKi9cbi1cdHN3ZmlsZV9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sXG4rXHRzd2ZpbGVfcGFnZSA9IGFsbG9jX3BhZ2VzKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8sXG4gXHRcdFx0XHQgIGdldF9vcmRlcihzaXplb2YoKmltc2ljLVx1MDAzZXN3ZmlsZSkpKTtcbiBcdGlmICghc3dmaWxlX3BhZ2UpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL21tdS5jXG5pbmRleCAwODJmOWIyNjE3MzM4Ny4uOWIxZDgwOWRhZjJjYzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vbW11LmNcbkBAIC02NjksOCArNjY5LDggQEAgaW50IGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkKHN0cnVjdCBrdm0gKmt2bSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4tXHRwZ2RfcGFnZSA9IGFsbG9jX3BhZ2VzKEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPLFxuLVx0XHRcdFx0Z2V0X29yZGVyKGt2bV9yaXNjdl9nc3RhZ2VfcGdkX3NpemUpKTtcbitcdHBnZF9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyxcbitcdFx0XHQgICAgICAgZ2V0X29yZGVyKGt2bV9yaXNjdl9nc3RhZ2VfcGdkX3NpemUpKTtcbiBcdGlmICghcGdkX3BhZ2UpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0a3ZtLVx1MDAzZWFyY2gucGdkID0gcGFnZV90b192aXJ0KHBnZF9wYWdlKTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuaW5kZXggYmI0NmRjYmZiMjRkYTcuLmU1MDE4Nzg0Nzc5ZDViIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuQEAgLTQ1Miw3ICs0NTIsNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc1xuIFx0XHR9XG4gXHR9XG4gXG4tXHRrdnBtdS1cdTAwM2VzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDKTtcbitcdGt2cG11LVx1MDAzZXNkYXRhID0ga3phbGxvYyhzbmFwc2hvdF9hcmVhX3NpemUsIEdGUF9BVE9NSUMgfCBfX0dGUF9BQ0NPVU5UKTtcbiBcdGlmICgha3ZwbXUtXHUwMDNlc2RhdGEpIHtcbiBcdFx0c2JpcmV0ID0gU0JJX0VSUl9GQUlMVVJFO1xuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcbmluZGV4IGFiMzlhYzQ2NGZmZDgxLi40OTg0ZDNlNTRlMjNjNiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jXG5AQCAtMzc3LDcgKzM3Nyw3IEBAIHN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGludCBpO1xuIFxuIFx0ZndmdC1cdTAwM2Vjb25maWdzID0ga3phbGxvY19vYmpzKHN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnLFxuLVx0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGZlYXR1cmVzKSk7XG4rXHRcdFx0XHQgICAgIEFSUkFZX1NJWkUoZmVhdHVyZXMpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFmd2Z0LVx1MDAzZWNvbmZpZ3MpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfdmVjdG9yLmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jXG5pbmRleCA2MmQyZmI3N2JiOWI5My4uZDc0OGU3ZDgyNWUxMzcgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jXG5AQCAtNzYsMTEgKzc2LDExIEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfaG9zdF92ZWN0b3JfcmVzdG9yZShzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpjbnR4KVxuIFxuIGludCBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuLVx0dmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMKTtcbitcdHZjcHUtXHUwMDNlYXJjaC5ndWVzdF9jb250ZXh0LnZlY3Rvci5kYXRhcCA9IGt6YWxsb2MocmlzY3Zfdl92c2l6ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghdmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdHZjcHUtXHUwMDNlYXJjaC5ob3N0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMKTtcbitcdHZjcHUtXHUwMDNlYXJjaC5ob3N0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCF2Y3B1LVx1MDAzZWFyY2guaG9zdF9jb250ZXh0LnZlY3Rvci5kYXRhcCkge1xuIFx0XHRrZnJlZSh2Y3B1LVx1MDAzZWFyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXApO1xuIFx0XHR2Y3B1LVx1MDAzZWFyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBOVUxMO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6MjMuNTc2NjA4NDY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwMjQxODcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNZW1vcnkgQWNjb3VudGluZyBmb3IgUklTQy1WIEtWTSBBbGxvY2F0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2Ugd2UncmUgZW5hYmxpbmcgbWVtb3J5IGFjY291bnRpbmcgZm9yIGEgZmV3IGNyaXRpY2FsIGFsbG9jYXRpb24gcGF0aHMgd2l0aGluIHRoZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgYWRkaW5nIGBHRlBfS0VSTkVMX0FDQ09VTlRgIG9yIGBfX0dGUF9BQ0NPVU5UYCB0byB0aG9zZSBhbGxvY2F0aW9uIGZsYWdzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgc2hvdWxkIGltcHJvdmUgb3VyIGFiaWxpdHkgdG8gdHJhY2sgbWVtb3J5IHVzYWdlIHdpdGhpbiB0aGUgS1ZNIHN1YnN5c3RlbSBvbiBSSVNDLVYuXG5cblRoZSBjaGFuZ2VzIGFyZSBzcHJlYWQgYWNyb3NzIHNldmVyYWwgZmlsZXMsIGFsbCB3aXRoaW4gdGhlIGBhcmNoL3Jpc2N2L2t2bWAgZGlyZWN0b3J5OiBgYWlhX2FwbGljLmNgLCBgYWlhX2ltc2ljLmNgLCBgbW11LmNgLCBgdmNwdV9wbXUuY2AsIGB2Y3B1X3NiaV9md2Z0LmNgLCBhbmQgYHZjcHVfdmVjdG9yLmNgLiBBIHF1aWNrIHNjYW4gb2YgdGhlIGNvZGUgaWRlbnRpZmllcyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOiBga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCwgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAuXG5cbk5vdywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGFsbCBtYWtlcyBzZW5zZSB3aXRoaW4gdGhlIGxhcmdlciBjb250ZXh0LiBGaXJzdCwgd2UgbmVlZCB0byBiZSBjZXJ0YWluIHRoYXQgS1ZNIGlzIGV2ZW4gZW5hYmxlZCBvbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgSSBhc3N1bWUgdGhhdCBlbmFibGluZyBLVk0gd291bGQgcmVseSBvbiB0aGUgYEtWTWAgY29uZmlndXJhdGlvbiBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMDoyOS4wNzkwMjkwMzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NDMyNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjI5LjE4NTQ2Nzk0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MzI2NzE4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIEtWTSBNZW1vcnkgQWNjb3VudGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgaXMgc2V0IHRvIGBLVk1gLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gTGV0J3Mgc2VlIGlmIHRoaXMgcGF0Y2ggaXMgYWN0dWFsbHkgd29ydGggZGVkaWNhdGluZyBmdXp6aW5nIHJlc291cmNlcyB0by4gSXQncyBhYm91dCBtZW1vcnkgYWNjb3VudGluZyB3aXRoaW4gS1ZNIGFsbG9jYXRpb25zIOKAkyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5LCBidXQgdXN1YWxseSB0cmFuc3BhcmVudCB1bmxlc3Mgd2UncmUgdHJpZ2dlcmluZyBhbiBvdXQtb2YtbWVtb3J5IChPT00pIGNvbmRpdGlvbi4gQnV0IHN5emthbGxlciAqZG9lcyogZm9jdXMgb24gbWVtb3J5IGxpbWl0cyBhbmQgYWNjb3VudGluZywgc28gdGhhdCdzIGEgcG9pbnQgaW4gaXRzIGZhdm9yLlxuXG5IbW0sIGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBvdXIgdGVzdCBlbnZpcm9ubWVudD8gV2UncmUgcnVubmluZyB0ZXN0cyBvbiB4ODZfNjQsIGFybTY0LCBhbmQgcG90ZW50aWFsbHkgcmlzY3YuIFdhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSByaXNjdjY0IHN1cHBvcnQsIHJpZ2h0PyBJZiB3ZSdyZSB0ZXN0aW5nIG9uIHJpc2N2NjQsIHRoaXMgcGF0Y2ggYmVjb21lcyBhIHZhbGlkIHRhcmdldC4gXG5cbkFoLCByaWdodCwgdGhlIHByb21wdCBzYXlzIHRvIHZlcmlmeSBleGVjdXRpb24uIE9rYXksIGlmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgSSBuZWVkIHRvIHVzZSBteSBjb2RlIHNlYXJjaCB0b29scyB0byBjb25maXJtIHRoYXQgdGhlIGNvZGUgKmNhbiogYmUgZXhlY3V0ZWQuIFRoYXQgc2V0dGxlcyBpdC4gVGhlIGFuc3dlciBpcyBcIldvcnRoRnV6emluZz10cnVlLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6MzMuODE4MTQyNDE5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODU4ODMzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfYWlhX2FwbGljX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jPTU1OT1pbnQga3ZtX3Jpc2N2X2FpYV9hcGxpY19oYXNfYXR0cihzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jLTU3My1cXG5hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuYzo1NzQ6aW50IGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmMtNTc1LXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2FpYV9kZXZpY2UuYz0yMjY9c3RhdGljIGludCBhaWFfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmMtMjUxLVxcdC8qIEluaXRpYWxpemUgQVBMSUMgKi9cXG5hcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmM6MjUyOlxcdHJldCA9IGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdChrdm0pO1xcbmFyY2gvcmlzY3Yva3ZtL2FpYV9kZXZpY2UuYy0yNTMtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6MzMuOTc2NzM1MzQ1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MzM4Nzg5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKlJlYWNoaW5nIGZvciB0aGUgQUlBKipcblxuUmlnaHQsIGl0J3Mgc3RhcnRpbmcgdG8gY2xpY2suIEkgaGF2ZSBhIGh1bmNoIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGdldCBteSBoYW5kcyBvbiBhbmQgd29yayB3aXRoLiBUaGUgdGFyZ2V0IGhlcmUgaXMgY2xlYXI6IGxldCdzIGRpdmUgc3RyYWlnaHQgaW50byBga3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX2luaXRgLiBUaGF0J3Mgd2hlcmUgdGhlIG1hZ2ljLCBvciBhdCBsZWFzdCB0aGUgZ3JvdW5kd29yaywgZm9yIHRoZSBBSUEgYW5kIElNU0lDIHNldHVwIGlzIGxpa2VseSBoYXBwZW5pbmcgd2l0aGluIHRoZSBLVk0vUklTQy1WIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQUlBIGltcGxlbWVudGF0aW9uIHN0YXJ0cyB1cCwgYW5kIHRoaXMgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gVGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGFuZCBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDE4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6MzcuNjIwMTI1OTI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODkxMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmM9MjI2PXN0YXRpYyBpbnQgYWlhX2luaXQoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vYWlhX2RldmljZS5jLTI3OC1cXHRcXHQvKiBJbml0aWFsaXplIElNU0lDIGZvciB0aGlzIFZDUFUgKi9cXG5hcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmM6Mjc5OlxcdFxcdHJldCA9IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHZjcHUpO1xcbmFyY2gvcmlzY3Yva3ZtL2FpYV9kZXZpY2UuYy0yODAtXFx0XFx0aWYgKHJldClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jPTEwOTQ9c3RhdGljIHN0cnVjdCBrdm1faW9fZGV2aWNlX29wcyBpbXNpY19pb2RvZXZfb3BzID0ge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmMtMTA5OC1cXG5hcmNoL3Jpc2N2L2t2bS9haWFfaW1zaWMuYzoxMDk5OmludCBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmMtMTEwMC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjM3LjY5ODA0MDc2N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODI0MDM5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIGBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZGAsIHByZXNlbnRlZCBhcyB0aG91Z2ggaXQgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIGBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZGAqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCBga3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBrbm93IHRoaXMgaXMgZ29pbmcgdG8gYmUgYWJvdXQgYWxsb2NhdGluZyBhIHBhZ2UgZ2xvYmFsIGRpcmVjdG9yeSAoUEdEKSBmb3IgdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIEdpdmVuIG15IGJhY2tncm91bmQgaW4gdmlydHVhbCBtZW1vcnkgbWFuYWdlbWVudCBhbmQgUklTQy1WIGFyY2hpdGVjdHVyZSwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB3aGF0IGFyZSB0aGUgc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgaGVyZT8gSXMgdGhpcyBmb3IgdGhlIGd1ZXN0J3MgUEdELCBvciB0aGUgaG9zdCdzPyBKdWRnaW5nIGJ5IHRoZSBuYW1lLCBpdCdzIHRoZSBndWVzdCdzLCB3aGljaCBtYWtlcyB0aGUgbW9zdCBzZW5zZS5cblxuTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgY29tcGxleGl0aWVzLiBUaGlzIGZ1bmN0aW9uIHByb2JhYmx5IG5lZWRzIHRvIGFjY291bnQgZm9yIHRoZSBSSVNDLVYncyBzcGVjaWZpYyBwYWdlIHRhYmxlIHN0cnVjdHVyZSDigJMgd2hpY2ggbGV2ZWwgb2YgdGhlIHBhZ2UgdGFibGUgaGllcmFyY2h5IGFyZSB3ZSBkZWFsaW5nIHdpdGg/IERvZXMgaXQgYWxpZ24gd2l0aCBhIDQtbGV2ZWwgb3IgNS1sZXZlbCBpbXBsZW1lbnRhdGlvbj8gSXQgbmVlZHMgdG8gY29uc2lkZXIgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UgY29uc3RyYWludHMsIHRvbywgYW5kIGVuc3VyZSB0aGUgYWxsb2NhdGlvbiBpcyBhbGlnbmVkIHdpdGggdGhlIGhhcmR3YXJlJ3MgcmVxdWlyZW1lbnRzLiBHaXZlbiBLVk0ncyByb2xlLCB0aGUgYWxsb2NhdGVkIG1lbW9yeSBhbHNvIG5lZWRzIHRvIGJlIGFjY2Vzc2libGUgYm90aCB0byB0aGUgaG9zdCBrZXJuZWwgKGZvciBtYW5hZ2luZyBpdCkgYW5kIHRvIHRoZSBndWVzdCBWTSAod2hpY2ggdXNlcyBpdCBmb3IgYWRkcmVzcyB0cmFuc2xhdGlvbikuXG5cbkknbSBtZW50YWxseSBnb2luZyB0aHJvdWdoIHBvdGVudGlhbCBpc3N1ZXMgYXJvdW5kIGNhY2hlIGNvaGVyZW5jeS4gU2luY2UgYm90aCB0aGUgaG9zdCBhbmQgZ3Vlc3QgY2FuIHBvdGVudGlhbGx5IG1vZGlmeSB0aGlzIFBHRCwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgaGFyZHdhcmUgY2FjaGUgaXMgY29ycmVjdGx5IGZsdXNoZWQsIG9yIGludmFsaWRhdGlvbiBvcGVyYXRpb25zIGFyZSBpc3N1ZWQgY29ycmVjdGx5LiBBcmUgd2UgZGVhbGluZyB3aXRoIGFueSBtZW1vcnkgYmFycmllcnMgaGVyZSB0byBlbnN1cmUgcHJvcGVyIG9yZGVyaW5nIG9mIG1lbW9yeSBvcGVyYXRpb25zPyBMZXQncyBjaGVjayB0aGUgY29kZSBhbmQgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTE4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6NDIuNDgwNDQ4MjU2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkxMTI2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL21tdS5jPTUzNT1pbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNjYyLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjY2MzppbnQga3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2Qoc3RydWN0IGt2bSAqa3ZtKVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTY2NC17XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92bS5jPTMxPWludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdm0uYy0zNC1cXG5hcmNoL3Jpc2N2L2t2bS92bS5jOjM1OlxcdHIgPSBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChrdm0pO1xcbmFyY2gvcmlzY3Yva3ZtL3ZtLmMtMzYtXFx0aWYgKHIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjQyLjU4OTU2OTA1NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDkwNzY5MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0YWNrbGluZyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gKipcblxuUmlnaHQsIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGl0c2VsZiBpcyBhIHByZXR0eSBnb29kIGluZGljYXRvciBvZiB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC4gSXQncyBvYnZpb3VzbHkgdGllZCB0byBLVk0sIFJJU0MtViBhcmNoaXRlY3R1cmUsIHZDUFVzLCBhbmQgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0cyAoUE1VcykuIFRoZSBcInNuYXBzaG90XCIgcGFydCBzdWdnZXN0cyB3ZSdyZSBwcm9iYWJseSBjYXB0dXJpbmcgYSBwb2ludC1pbi10aW1lIHN0YXRlIG9mIHRoZSBQTVUgY291bnRlcnMsIGFuZCB0aGUgXCJzaG1lbVwiIGluZGljYXRlcyB3ZSdyZSBzdG9yaW5nIHRoaXMgc25hcHNob3QgaW4gc2hhcmVkIG1lbW9yeS4gR2l2ZW4gdGhhdCBzaGFyZWQgbWVtb3J5IGlzIHVzZWQgZm9yIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiwgdGhpcyBzdHJvbmdseSBzdWdnZXN0cyBhIG1lY2hhbmlzbSBmb3Igc29tZXRoaW5nIG91dHNpZGUgb2YgdGhlIGd1ZXN0IChsaWtlbHkgdGhlIGhvc3QvaHlwZXJ2aXNvcikgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZ3Vlc3QncyBQTVUgZGF0YS5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6XG5cbiogICAqKldoYXQncyB0aGUgY29udGV4dD8qKiBXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGNhbGxlZCBmcm9tPyBJcyBpdCBpbnZva2VkIGR1cmluZyBhIHNwZWNpZmljIFZNIGxpZmVjeWNsZSBldmVudCAobGlrZSBhIGd1ZXN0IHN1c3BlbmQsIG1pZ3JhdGlvbiwgb3Igc29tZSBzcGVjaWZpYyBtb25pdG9yaW5nIHJlcXVlc3QpPyBUaGlzIHdpbGwgZGljdGF0ZSBob3cgaXQncyBiZWluZyB1c2VkLlxuKiAgICoqV2hhdCBkYXRhIGlzIGJlaW5nIHNoYXJlZD8qKiBXaGF0IHNwZWNpZmljIFBNVSBjb3VudGVycyBhcmUgYmVpbmcgc25hcHNob3R0ZWQgYW5kIHNoYXJlZD8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZXZlbnQgY291bnRzLCB0aW1lLWJhc2VkIG1ldHJpY3MsIG9yIHBlcmhhcHMgZXZlbiBjb250cm9sIHJlZ2lzdGVyIHN0YXRlcz8gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgbGV2ZWwgb2Ygb2JzZXJ2YWJpbGl0eSB3ZSBoYXZlLlxuKiAgICoqV2hhdCdzIHRoZSBtZW1vcnkgbGF5b3V0PyoqIFdoYXQncyB0aGUgc3RydWN0dXJlIG9mIHRoZSBzaGFyZWQgbWVtb3J5IHJlZ2lvbj8gS25vd2luZyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBvZmZzZXRzIHdpbGwgYmUga2V5IGZvciBwcm9wZXIgZGF0YSBpbnRlcnByZXRhdGlvbiBhbmQgaW50ZXJhY3Rpb24gd2l0aCBpdC5cbiogICAqKldoYXQncyB0aGUgbG9ja2luZy9zeW5jaHJvbml6YXRpb24gc2NoZW1lPyoqIFNoYXJlZCBtZW1vcnkgaXMgaW5oZXJlbnRseSBzdXNjZXB0aWJsZSB0byByYWNlIGNvbmRpdGlvbnMuIEhvdyBkb2VzIHRoaXMgZnVuY3Rpb24gaGFuZGxlIGNvbmN1cnJlbmN5IGJldHdlZW4gdGhlIGd1ZXN0IGFuZCB0aGUgaHlwZXJ2aXNvcj8gQXJlIHRoZXJlIG11dGV4ZXMsIHNwaW5sb2Nrcywgb3Igb3RoZXIgbWVjaGFuaXNtcyBpbnZvbHZlZCB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHk/IFRoaXMgaXMgYSBwcmltYXJ5IGNvbmNlcm4uXG4qICAgKipXaGF0J3MgdGhlIGVycm9yIGhhbmRsaW5nPyoqIEhvdyBkb2VzIHRoZSBmdW5jdGlvbiBoYW5kbGUgZmFpbHVyZXM/IERvZXMgaXQgcmV0dXJuIGVycm9yIGNvZGVzLCBsb2cgbWVzc2FnZXMsIG9yIHRyaWdnZXIgb3RoZXIgZXJyb3ItaGFuZGxpbmcgcHJvY2VkdXJlcz8gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHN5c3RlbSBzdGFiaWxpdHkuXG4qICAgKipIb3cncyBpdCBhcmNoaXRlY3RlZD8qKiBJcyB0aGlzIGEgZGlyZWN0IGludGVyYWN0aW9uLCBvciBkb2VzIGl0IHV0aWxpemUgYW55IGhlbHBlciBmdW5jdGlvbnMgb3IgYWJzdHJhY3Rpb24gbGF5ZXJzIHdpdGhpbiB0aGUgS1ZNIGluZnJhc3RydWN0dXJlP1xuXG5Ob3csIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZS4gVGltZSB0byBmaXJlIHVwIHRoZSBkZWJ1Z2dlciBvciB0aGUgc3RhdGljIGFuYWx5c2lzIHRvb2xzLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZ2V0IHRvIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCBsb29rIGF0IHRoZSBzdHJ1Y3R1cmVzLCBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgdGhlbiB0cnkgdG8gc2VlIHRoZSBvdmVyYWxsIGZsb3cuIEkgYWxzbyBleHBlY3QgdG8gc2VlIGEgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBvbiB0aGUgaHlwZXJ2aXNvciBzaWRlLCBsaWtlbHkgY2FsbGVkIGR1cmluZyB0aGUgc25hcHNob3QgcmV0cmlldmFsLiBUaGlzIHdpbGwgbmVlZCBhIGNhcmVmdWwgbG9vayBmb3IgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMDUsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMDo0Ny42ODAzNDAyOTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODczMDc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jPTQxNj1zdGF0aWMgdm9pZCBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjQtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYzo0MjU6aW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdyxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyNi1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBsb25nIHNhZGRyX2hpZ2gsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz0xNj1zdGF0aWMgaW50IGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTczLVxcdGNhc2UgU0JJX0VYVF9QTVVfU05BUFNIT1RfU0VUX1NITUVNOlxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjc0OlxcdFxcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0odmNwdSwgY3AtXFx1MDAzZWEwLCBjcC1cXHUwMDNlYTEsIGNwLVxcdTAwM2VhMiwgcmV0ZGF0YSk7XFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjQ3Ljc4OTA3NjkwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYxMzU5MzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIFNCSSBFeHRlbnNpb24gSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoZWFkIGFyb3VuZCBga3ZtX3NiaV9leHRfZndmdF9pbml0YC4gVGhpcyBmdW5jdGlvbiBuYW1lIGltbWVkaWF0ZWx5IGNsdWVzIG1lIGluIOKAkyB3ZSdyZSBkZWFsaW5nIHdpdGggS1ZNIChLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lKSBhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gU0JJIGV4dGVuc2lvbnMsIGxpa2VseSBjb25jZXJuaW5nIGZpcm13YXJlLCBmbG9hdGluZy1wb2ludCBzdGF0ZSBtYW5hZ2VtZW50LCBhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIFRoYXQgXCJmd2Z0XCIgcGFydCBpcyBpbnRyaWd1aW5nOyBJIHN1c3BlY3QgaXQgcmVsYXRlcyB0byB0aGUgRldGVCBpbnN0cnVjdGlvbiBleHRlbnNpb24gKGxpa2VseSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlIG9yIHByb2Nlc3NvciB2ZW5kb3IpIGFuZCBob3cgaXQncyBoYW5kbGVkIGR1cmluZyBLVk0gc2V0dXAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBzcGVjaWZpYyBhc3BlY3Qgb2YgdGhlIFNCSSBleHRlbnNpb24gaXMgYmVpbmcgaW5pdGlhbGl6ZWQgaGVyZSBhbmQgd2h5IGl0IHdhcnJhbnRzIGEgZGVkaWNhdGVkIGZ1bmN0aW9uLiBXaGF0J3MgdGhlIHJlbGF0aW9uc2hpcCBvZiBGV0ZUIHRvIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZT8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBzZWN1cml0eT8gTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyByZXZvbHZlIGFyb3VuZCB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgd2hhdCdzIGJlaW5nIGluaXRpYWxpemVkLCB0aGUgcmVsZXZhbnQgZGF0YSBzdHJ1Y3R1cmVzLCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgYW5kIHdoYXQgZXJyb3JzLCBpZiBhbnksIGNhbiBvY2N1ciBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEknbGwgbmVlZCB0byBleHBsb3JlIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgS1ZNIGluZnJhc3RydWN0dXJlLiBJJ2xsIHN0YXJ0IHdpdGggdGhlIGRlZmluaXRpb24sIHRoZW4gbG9vayBhdCB0aGUgY2FsbGVyIGFuZCBjYWxsZWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjQzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6NTEuMjUwNDM5NTkyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzc3MDk5OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3NiaV9leHRfZndmdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9MzQ4PXN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy0zNzEtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jOjM3MjpzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTM3My17XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9NTY4PWNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9md2Z0ID0ge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTU3MS1cXHQuaGFuZGxlciA9IGt2bV9zYmlfZXh0X2Z3ZnRfaGFuZGxlcixcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM6NTcyOlxcdC5pbml0ID0ga3ZtX3NiaV9leHRfZndmdF9pbml0LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzMtXFx0LmRlaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZGVpbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMDo1MS4zODgxNTQ5MjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NzkxNTEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGZ1bmN0aW9uOlxuXG4qKkRpdmluZyBpbnRvIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCBga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHRgLiBUaGF0IG5hbWUgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgYWxsb2NhdGluZyB0aGUgY29udGV4dCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB2ZWN0b3Igb3BlcmF0aW9ucyB3aXRoaW4gYSBSSVNDLVYgS1ZNIHZpcnR1YWwgQ1BVLiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBpZWNlIGZvciBzdXBwb3J0aW5nIHZlY3RvciBleHRlbnNpb25zIGluIHRoZSBndWVzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0J3Mgc2V0dGluZyB1cCB0aGUgbWVtb3J5IGFuZCBkYXRhIHN0cnVjdHVyZXMgcmVxdWlyZWQgdG8gbWFuYWdlIHRob3NlIHZlY3RvciByZWdpc3RlcnMgYW5kIHN0YXRlLiBJJ20gZXhwZWN0aW5nIHRoaXMgaW52b2x2ZXMgYWxsb2NhdGluZyBtZW1vcnksIGluaXRpYWxpemluZyByZWdpc3RlcnMsIHNldHRpbmcgdXAgc2hhZG93IHJlZ2lzdGVycyAoaWYgYXBwbGljYWJsZSBmb3IgZW11bGF0aW9uIG9yIG9wdGltaXphdGlvbiksIGFuZCBsaWtlbHkgaW50ZXJmYWNpbmcgd2l0aCB0aGUgaGFyZHdhcmUgb3IgdGhlIGVtdWxhdGlvbiBsYXllcidzIHZlY3RvciB1bml0LiBJJ20gY3VyaW91cyB0byBzZWUgaWYgaXQgaGFuZGxlcyBhbnkgc3BlY2lmaWMgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBmb3IgdGhlIHZlY3RvciBjb250ZXh0LCBvciBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgbWVtb3J5IG1hbmFnZW1lbnQgaW52b2x2ZWQuIElzIGl0IHVzaW5nIGEgY3VzdG9tIGFsbG9jYXRvciwgb3IgcmVseWluZyBvbiBzdGFuZGFyZCBrZXJuZWwgYWxsb2NhdG9ycz8gTGV0J3Mgc2VlIGlmIGl0IGhhbmRsZXMgdGhlIHZhcmlvdXMgdmVjdG9yIGxlbmd0aCAoVkxFTikgY29uZmlndXJhdGlvbnMgYW5kIHRoZSB2ZWN0b3IgcmVnaXN0ZXIgZ3JvdXBzIGNvcnJlY3RseS4gVGhlIGFsbG9jYXRpb24gc3RyYXRlZ3kgc2hvdWxkIGFsc28gYmUgY29uc2lkZXJlZC4gSXMgaXQgcHJlLWFsbG9jYXRpbmcgdGhlIHZlY3RvciBjb250ZXh0IGZvciBhIGNlcnRhaW4gYW1vdW50IG9mIHZpcnR1YWwgQ1BVcywgb3IgaXMgaXQgYWxsb2NhdGluZyB0aGVtIG9uIGRlbWFuZD8gSSBhbnRpY2lwYXRlIHRoZXJlIG1pZ2h0IGJlIHNvbWUgaW50ZXJwbGF5IHdpdGggdGhlIEtWTSBNTVUgc2V0dXAsIHRvbywgaWYgdGhlIHZlY3RvciBjb250ZXh0IGludm9sdmVzIGFkZHJlc3MgdHJhbnNsYXRpb24gaW4gc29tZSB3YXkuIFRoZSBlcnJvciBoYW5kbGluZyBpcyBhbHNvIHNvbWV0aGluZyB0aGF0IGNhdGNoZXMgbXkgZXllLiBJcyB0aGVyZSByb2J1c3QgZXJyb3IgaGFuZGxpbmcgdG8gZGVhbCB3aXRoIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGVycm9yIGNvZGVzIHRoYXQgS1ZNIHJlcG9ydHMgdG8gc2lnbmFsIGlzc3VlcyB3aXRoIHRoaXMgdmVjdG9yIGNvbnRleHQgYWxsb2NhdGlvbj8gQW5kIGZpbmFsbHksIEkgd291bGQgbGlrZSB0byBxdWlja2x5IGFzc2VzcyBpZiBpdCBpbnRlZ3JhdGVzIHdpdGggYW55IHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMsIGxpa2UgdGhlIEtWTSBoeXBlcmNhbGxzLiBJcyB0aGVyZSBhbnl0aGluZyBzcGVjaWFsIGhlcmU/IFRoaXMgc2hvdWxkIGJlIGludGVyZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTI3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6NTUuOTY2MDczMDEyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY4ODg3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz0xMjk9aW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNTYtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjE1NzpcXHRyYyA9IGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0KHZjcHUpO1xcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNTgtXFx0aWYgKHJjKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYz03MT12b2lkIGt2bV9yaXNjdl92Y3B1X2hvc3RfdmVjdG9yX3Jlc3RvcmUoc3RydWN0IGt2bV9jcHVfY29udGV4dCAqY250eClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfdmVjdG9yLmMtNzYtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYzo3NzppbnQga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfdmVjdG9yLmMtNzgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMDo1Ni4wNzI5NjY4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NTYzNzM2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBSSVNDLVYgSW5pdGlhbGl6YXRpb24gUGF0aHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBLVk0gZnVuY3Rpb25zLCBhbGwgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIFJJU0MtViBpbXBsZW1lbnRhdGlvbiwgYW5kIHNwZWNpZmljYWxseSwgdW5kZXIgdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24uIFRoZSBrZXkgc3ltYm9scyBJJ20gZm9jdXNpbmcgb24gYXJlOiBga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCwgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAuXG5cbkknbSBtZW50YWxseSBtYXBwaW5nIHRoZSBjYWxsIGNoYWlucyBub3cuIFdhaXQgYSBtaW51dGUuLi4gYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCBpcyBjYWxsZWQgZnJvbSBga3ZtX2FyY2hfaW5pdF92bWAsIHdoaWNoIGlzIGEgZnVuY3Rpb24gY3JpdGljYWwgdG8gdGhlIFZNIGNyZWF0aW9uIHByb2Nlc3MuIFRoYXQncyBhIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcmVhLiBTaW1pbGFybHksIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAgb3JpZ2luYXRlcyBmcm9tIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWAsIHdoaWNoIGFsc28gZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSB2Q1BVIGlzIGNyZWF0ZWQuIFRoaXMgaGlnaGxpZ2h0cyB0aGUgaW1wb3J0YW5jZSBvZiB0aG9zZSB0d28gZnVuY3Rpb25zLlxuXG5ga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCBhbmQgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCBhcmUgaW5pdGlhbGl6ZWQgdmlhIGBhaWFfaW5pdGAuIE9rYXksIG1ha2VzIHNlbnNlLCB0aGF0J3MgdGhlaXIgbmF0dXJhbCBncm91cGluZy4gQW5kLCB3aGF0IGFib3V0IGBrdm1fc2JpX2V4dF9md2Z0X2luaXRgPyBJIHNlZW0gdG8gcmVtZW1iZXIgdGhhdCBiZWluZyBjYWxsZWQgZnJvbSBga3ZtX3ZjcHVfc2JpX2V4dF9pbml0YCwgYnV0IGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0LiBBbHdheXMgZ29vZCB0byBiZSBwcmVjaXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjMwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjExOjAxLjUyOTM0MzYyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg3NDA0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3NiaV9leHRfZndmdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9MzQ4PXN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy0zNzEtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jOjM3MjpzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTM3My17XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9NTY4PWNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9md2Z0ID0ge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTU3MS1cXHQuaGFuZGxlciA9IGt2bV9zYmlfZXh0X2Z3ZnRfaGFuZGxlcixcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM6NTcyOlxcdC5pbml0ID0ga3ZtX3NiaV9leHRfZndmdF9pbml0LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzMtXFx0LmRlaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZGVpbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMTowMS42MTgwOTE0NDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzMzY1NzAxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjoga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSoqXG5cbk9rYXksIHNvIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBpcyB0aGUgZnVuY3Rpb24gd2UncmUgaW50ZXJlc3RlZCBpbiB0b2RheS4gSXQncyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgIHdoZW4gdGhlIGBTQklfRVhUX1BNVV9TTkFQU0hPVF9TRVRfU0hNRU1gIFNCSSBleHRlbnNpb24gaXMgaW52b2tlZC4gVGhhdCdzIGEgY2xlYXIgZW50cnkgcG9pbnQsIHdoaWNoIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBzb21lIGZ1enppbmcgd29yay4gQSBuaWNlLCBjbGVhbiwgd2VsbC1kZWZpbmVkIHRhcmdldCBsaWtlIHRoaXMgaXMgYWx3YXlzIGFwcGVhbGluZy5cblxuTm93LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBsZXQncyBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJIG5lZWQgdG8gc2VlIGlmIHRoaXMgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnLCBvciBpZiB0aGVyZSBhcmUgb3RoZXIsIHBvc3NpYmx5IHJlbGF0ZWQsIGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBgS1ZNYCBpcyB0aGUgb2J2aW91cyBvbmUsIG9mIGNvdXJzZS4gQnV0IGFyZSB0aGVyZSBhbnkgb3RoZXIgYEtWTWAtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIHBlcmhhcHMgZmxhZ3Mgb3IgYnVpbGQgb3B0aW9ucywgd2l0aGluIHRoZSBSSVNDLVYgY29udGV4dCB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGZ1bmN0aW9uJ3MgYmVoYXZpb3Igb3Igc2V0dXA/IEl0J3MgYWx3YXlzIGJlc3QgdG8gaGF2ZSB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSByZWFsbHkgZGlnZ2luZyBpbnRvIHRoZSBjb2RlLiBHb3R0YSBtYWtlIHN1cmUgbm90aGluZyBpcyBvdmVybG9va2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjkwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTE6MDUuNjUxNzUxNDQ4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjExNjUyNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTE6MDUuNzcyOTIxNTc2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODQ0OTk2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUXVpY2sgRGlhZ25vc3RpYyAtIFZpcnR1YWxpemF0aW9uIFx1MDAyNiBLVk0gb24gUklTQy1WKipcblxuQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBzb21ldGhpbmcgaXNuJ3QgcXVpdGUgY2xpY2tpbmcuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBJJ20gbWlzc2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWw6IElzICp2aXJ0dWFsaXphdGlvbiogYWN0dWFsbHkgZW5hYmxlZD8gU2VlbXMgb2J2aW91cywgYnV0IEkgaGF2ZSB0byBzdGFydCB0aGVyZS4gQW5kIHNpbmNlIHdlJ3JlIHRhbGtpbmcgYWJvdXQgUklTQy1WLCB0aGUgYXNzdW1wdGlvbiBpcyAqS1ZNKiBpcyB0aGUgZHJpdmluZyBmb3JjZSBmb3IgaGFyZHdhcmUtYXNzaXN0ZWQgdmlydHVhbGl6YXRpb24uIEl0IHdvdWxkIGJlIGJpemFycmUgaWYgd2Ugd2VyZSB1c2luZyBhbnl0aGluZyBlbHNlIGF0IHRoaXMgcG9pbnQuXG5cbkxldCdzIHF1aWNrbHkgZHJpbGwgZG93biBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGZ1bmN0aW9uLiBUaGF04oCZcyBwcm9iYWJseSB3aGVyZSBJJ2xsIGZpbmQgdGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTc0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTE6MDkuNTU3NDI1NDk2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzEzOTU2NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYz00MTY9c3RhdGljIHZvaWQga3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMtNDI0LVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM6NDI1OmludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjYtXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyBzYWRkcl9oaWdoLCB1bnNpZ25lZCBsb25nIGZsYWdzLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM9MTY9c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03My1cXHRjYXNlIFNCSV9FWFRfUE1VX1NOQVBTSE9UX1NFVF9TSE1FTTpcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYzo3NDpcXHRcXHRyZXQgPSBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHZjcHUsIGNwLVxcdTAwM2VhMCwgY3AtXFx1MDAzZWExLCBjcC1cXHUwMDNlYTIsIHJldGRhdGEpO1xcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTc1LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMTowOS42ODg4MjcwMzNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI3NDQ4MzQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gUklTQy1WIE1lbW9yeSBBY2NvdW50aW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYEdGUF9LRVJORUxfQUNDT1VOVGAgb3IgYF9fR0ZQX0FDQ09VTlRgIHRvIGEgYnVuY2ggb2YgYWxsb2NhdGlvbnMuIFRoYXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBpbXBvcnRhbnQgb25lIGFjdHVhbGx5LiBFbmFibGluZyBtZW1vcnkgYWNjb3VudGluZyBmb3IgdGhlc2UgYWxsb2NhdGlvbnMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBvcGVucyB0aGVtIHVwIGZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcsIHNwZWNpZmljYWxseSB3aXRoIHNvbWV0aGluZyBsaWtlIHN5emthbGxlci4gV2UgY2FuIHVzZSB0aGF0IHRvb2wgdG8gdmVyaWZ5IHRoYXQgbWVtb3J5IGxpbWl0cyBhcmUgYmVpbmcgZW5mb3JjZWQgY29ycmVjdGx5IGFuZCB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgc25lYWt5IG1lbW9yeSBsZWFrcyBsdXJraW5nIGluIHRoZXNlIGFsbG9jYXRpb24gcGF0aHMuIFRoYXTigJlzIHRoZSByZWFsIHZhbHVlLlxuXG5Ob3csIGxldCdzIHNlZSwgdGhlIHBhdGNoIHRvdWNoZXMgdGhlc2UgZnVuY3Rpb25zOiBga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCwgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAuIEhtbSwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCBhbmQgYGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0YC4uLiB0aG9zZSBhcmUgY2FsbGVkIGR1cmluZyBWTS9WQ1BVIGNyZWF0aW9uLCByaWdodD8gVGhleSBtaWdodCBiZSBzb21ld2hhdCBob3QgcGF0aHMsIGJ1dCB0aGF0IFZNL1ZDUFUgY3JlYXRpb24gcHJvY2VzcyBpcyBhY3R1YWxseSBhIGdyZWF0IHRhcmdldCBmb3IgZnV6emluZyB3aGVuIG1lbW9yeSBhY2NvdW50aW5nIGlzIGVuYWJsZWQuIEl0J3MgYSBuYXR1cmFsIHBvaW50IHRvIHBva2UgYXQgdGhlc2UgYWxsb2NhdGlvbnMuIEl0J3MgaW1wb3J0YW50IHRvIGluY2x1ZGUgdGhlbS5cblxuU28sIHRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFib3V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCB0aGF0IHNob3VsZCBiZSBlbmFibGVkLiBUaGUgY29uZmlnIGlzIG9idmlvdXNseSBgS1ZNYC4gSXTigJlzIGFsbCBhYm91dCBlbmhhbmNpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIFRpbWUgdG8gbG9nIHRoYXQgdG8gdGhlIHN5c3RlbS4gTGV0J3Mgc2V0IHRob3NlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODE4LCJPdXRwdXRUb2tlbnMiOjE5MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMToxNS45NjMzMTM5NzFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcyMDE5MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX2luaXRcIixcbiAgICBcImt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtXCIsXG4gICAgXCJrdm1fc2JpX2V4dF9md2Z0X2luaXRcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoR0ZQX0tFUk5FTF9BQ0NPVU5UIC8gX19HRlBfQUNDT1VOVCkgZm9yIHNldmVyYWwgS1ZNIGFsbG9jYXRpb25zIG9uIFJJU0MtVi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IGxpbWl0cyBhcmUgcHJvcGVybHkgZW5mb3JjZWQgYW5kIHRvIGRldGVjdCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGluIHRoZXNlIGFsbG9jYXRpb24gcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0XCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIixcbiAgICBcImt2bV9zYmlfZXh0X2Z3ZnRfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChHRlBfS0VSTkVMX0FDQ09VTlQgLyBfX0dGUF9BQ0NPVU5UKSBmb3Igc2V2ZXJhbCBLVk0gYWxsb2NhdGlvbnMgb24gUklTQy1WLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgbGltaXRzIGFyZSBwcm9wZXJseSBlbmZvcmNlZCBhbmQgdG8gZGV0ZWN0IHBvdGVudGlhbCBtZW1vcnkgbGVha3MgaW4gdGhlc2UgYWxsb2NhdGlvbiBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvzswb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 10:38:03 +0000 UTC FinishedAt: 2026-07-16 11:11:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "c01779ca-c846-4792-a659-7f45d1a05923" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_aia_aplic_init", "kvm_riscv_vcpu_aia_imsic_init", "kvm_riscv_mmu_alloc_pgd", "kvm_riscv_vcpu_pmu_snapshot_set_shmem", "kvm_sbi_ext_fwft_init", "kvm_riscv_vcpu_alloc_vector_context" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9haWFfYXBsaWNfaW5pdCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtJiMzNDssCiAgICAmIzM0O2t2bV9zYmlfZXh0X2Z3ZnRfaW5pdCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChHRlBfS0VSTkVMX0FDQ09VTlQgLyBfX0dGUF9BQ0NPVU5UKSBmb3Igc2V2ZXJhbCBLVk0gYWxsb2NhdGlvbnMgb24gUklTQy1WLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgbGltaXRzIGFyZSBwcm9wZXJseSBlbmZvcmNlZCBhbmQgdG8gZGV0ZWN0IHBvdGVudGlhbCBtZW1vcnkgbGVha3MgaW4gdGhlc2UgYWxsb2NhdGlvbiBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI2Nzk5OTBmMjVhMzE5YTJmNzQ2NWQ0NzFhYWNkOGZmOTA1ZWI5ZWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAxMToxMDoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuYyBiL2FyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jXG5pbmRleCA3NDgxMDdjMzQ3ZDkxNS4uYmU5MDJlYTY0ODBiNzMgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmNcbkBAIC01ODEsNyAmIzQzOzU4MSw4IEBAIGludCBrdm1fcmlzY3ZfYWlhX2FwbGljX2luaXQoc3RydWN0IGt2bSAqa3ZtKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdC8qIEFsbG9jYXRlIEFQTElDIGdsb2JhbCBzdGF0ZSAqL1xuLVx0YXBsaWMgPSBremFsbG9jX2ZsZXgoKmFwbGljLCBpcnFzLCBrdm0tXHUwMDNlYXJjaC5haWEubnJfc291cmNlcyAmIzQzOyAxKTtcbiYjNDM7XHRhcGxpYyA9IGt6YWxsb2NfZmxleCgqYXBsaWMsIGlycXMsIGt2bS1cdTAwM2VhcmNoLmFpYS5ucl9zb3VyY2VzICYjNDM7IDEsXG4mIzQzO1x0XHRcdCAgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghYXBsaWMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0a3ZtLVx1MDAzZWFyY2guYWlhLmFwbGljX3N0YXRlID0gYXBsaWM7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmMgYi9hcmNoL3Jpc2N2L2t2bS9haWFfaW1zaWMuY1xuaW5kZXggZDM4ZjVkZTA4MzRjNWIuLjUwN2Q4MmU1YmM4ODJjIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jXG5AQCAtMTEwOCw3ICYjNDM7MTEwOCw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0LyogQWxsb2NhdGUgSU1TSUMgY29udGV4dCAqL1xuLVx0aW1zaWMgPSBremFsbG9jX29iaigqaW1zaWMpO1xuJiM0MztcdGltc2ljID0ga3phbGxvY19vYmooKmltc2ljLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFpbXNpYylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR2Y3B1LVx1MDAzZWFyY2guYWlhX2NvbnRleHQuaW1zaWNfc3RhdGUgPSBpbXNpYztcbkBAIC0xMTIxLDcgJiM0MzsxMTIxLDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGltc2ljLVx1MDAzZXZzZmlsZV9oZ2VpID0gaW1zaWMtXHUwMDNldnNmaWxlX2NwdSA9IC0xO1xuIFxuIFx0LyogU2V0dXAgSU1TSUMgU1ctZmlsZSAqL1xuLVx0c3dmaWxlX3BhZ2UgPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyxcbiYjNDM7XHRzd2ZpbGVfcGFnZSA9IGFsbG9jX3BhZ2VzKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8sXG4gXHRcdFx0XHQgIGdldF9vcmRlcihzaXplb2YoKmltc2ljLVx1MDAzZXN3ZmlsZSkpKTtcbiBcdGlmICghc3dmaWxlX3BhZ2UpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL21tdS5jXG5pbmRleCAwODJmOWIyNjE3MzM4Ny4uOWIxZDgwOWRhZjJjYzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbW11LmNcbkBAIC02NjksOCAmIzQzOzY2OSw4IEBAIGludCBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChzdHJ1Y3Qga3ZtICprdm0pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0cGdkX3BhZ2UgPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyxcbi1cdFx0XHRcdGdldF9vcmRlcihrdm1fcmlzY3ZfZ3N0YWdlX3BnZF9zaXplKSk7XG4mIzQzO1x0cGdkX3BhZ2UgPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMX0FDQ09VTlQgfCBfX0dGUF9aRVJPLFxuJiM0MztcdFx0XHQgICAgICAgZ2V0X29yZGVyKGt2bV9yaXNjdl9nc3RhZ2VfcGdkX3NpemUpKTtcbiBcdGlmICghcGdkX3BhZ2UpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0a3ZtLVx1MDAzZWFyY2gucGdkID0gcGFnZV90b192aXJ0KHBnZF9wYWdlKTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuaW5kZXggYmI0NmRjYmZiMjRkYTcuLmU1MDE4Nzg0Nzc5ZDViIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuQEAgLTQ1Miw3ICYjNDM7NDUyLDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNcbiBcdFx0fVxuIFx0fVxuIFxuLVx0a3ZwbXUtXHUwMDNlc2RhdGEgPSBremFsbG9jKHNuYXBzaG90X2FyZWFfc2l6ZSwgR0ZQX0FUT01JQyk7XG4mIzQzO1x0a3ZwbXUtXHUwMDNlc2RhdGEgPSBremFsbG9jKHNuYXBzaG90X2FyZWFfc2l6ZSwgR0ZQX0FUT01JQyB8IF9fR0ZQX0FDQ09VTlQpO1xuIFx0aWYgKCFrdnBtdS1cdTAwM2VzZGF0YSkge1xuIFx0XHRzYmlyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XG4gXHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xuaW5kZXggYWIzOWFjNDY0ZmZkODEuLjQ5ODRkM2U1NGUyM2M2IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcbkBAIC0zNzcsNyAmIzQzOzM3Nyw3IEBAIHN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGludCBpO1xuIFxuIFx0ZndmdC1cdTAwM2Vjb25maWdzID0ga3phbGxvY19vYmpzKHN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnLFxuLVx0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGZlYXR1cmVzKSk7XG4mIzQzO1x0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGZlYXR1cmVzKSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghZndmdC1cdTAwM2Vjb25maWdzKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuY1xuaW5kZXggNjJkMmZiNzdiYjliOTMuLmQ3NDhlN2Q4MjVlMTM3IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuY1xuQEAgLTc2LDExICYjNDM7NzYsMTEgQEAgdm9pZCBrdm1fcmlzY3ZfdmNwdV9ob3N0X3ZlY3Rvcl9yZXN0b3JlKHN0cnVjdCBrdm1fY3B1X2NvbnRleHQgKmNudHgpXG4gXG4gaW50IGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR2Y3B1LVx1MDAzZWFyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBremFsbG9jKHJpc2N2X3ZfdnNpemUsIEdGUF9LRVJORUwpO1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5ndWVzdF9jb250ZXh0LnZlY3Rvci5kYXRhcCA9IGt6YWxsb2MocmlzY3Zfdl92c2l6ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghdmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdHZjcHUtXHUwMDNlYXJjaC5ob3N0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHR2Y3B1LVx1MDAzZWFyY2guaG9zdF9jb250ZXh0LnZlY3Rvci5kYXRhcCA9IGt6YWxsb2MocmlzY3Zfdl92c2l6ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghdmNwdS1cdTAwM2VhcmNoLmhvc3RfY29udGV4dC52ZWN0b3IuZGF0YXApIHtcbiBcdFx0a2ZyZWUodmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwKTtcbiBcdFx0dmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2FwbGljX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2QmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSYjMzQ7LAogICAgJiMzNDtrdm1fc2JpX2V4dF9md2Z0X2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoR0ZQX0tFUk5FTF9BQ0NPVU5UIC8gX19HRlBfQUNDT1VOVCkgZm9yIHNldmVyYWwgS1ZNIGFsbG9jYXRpb25zIG9uIFJJU0MtVi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IGxpbWl0cyBhcmUgcHJvcGVybHkgZW5mb3JjZWQgYW5kIHRvIGRldGVjdCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGluIHRoZXNlIGFsbG9jYXRpb24gcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI2Nzk5OTBmMjVhMzE5YTJmNzQ2NWQ0NzFhYWNkOGZmOTA1ZWI5ZWYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAxMToxMDoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jIGIvYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmMKaW5kZXggNzQ4MTA3YzM0N2Q5MTUuLmJlOTAyZWE2NDgwYjczIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuYwpAQCAtNTgxLDcgJiM0Mzs1ODEsOCBAQCBpbnQga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0KHN0cnVjdCBrdm0gKmt2bSkKIAkJcmV0dXJuIDA7CiAKIAkvKiBBbGxvY2F0ZSBBUExJQyBnbG9iYWwgc3RhdGUgKi8KLQlhcGxpYyA9IGt6YWxsb2NfZmxleCgqYXBsaWMsIGlycXMsIGt2bS0mZ3Q7YXJjaC5haWEubnJfc291cmNlcyAmIzQzOyAxKTsKJiM0MzsJYXBsaWMgPSBremFsbG9jX2ZsZXgoKmFwbGljLCBpcnFzLCBrdm0tJmd0O2FyY2guYWlhLm5yX3NvdXJjZXMgJiM0MzsgMSwKJiM0MzsJCQkgICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJaWYgKCFhcGxpYykKIAkJcmV0dXJuIC1FTk9NRU07CiAJa3ZtLSZndDthcmNoLmFpYS5hcGxpY19zdGF0ZSA9IGFwbGljOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmMgYi9hcmNoL3Jpc2N2L2t2bS9haWFfaW1zaWMuYwppbmRleCBkMzhmNWRlMDgzNGM1Yi4uNTA3ZDgyZTViYzg4MmMgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jCkBAIC0xMTA4LDcgJiM0MzsxMTA4LDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAkvKiBBbGxvY2F0ZSBJTVNJQyBjb250ZXh0ICovCi0JaW1zaWMgPSBremFsbG9jX29iaigqaW1zaWMpOwomIzQzOwlpbXNpYyA9IGt6YWxsb2Nfb2JqKCppbXNpYywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAlpZiAoIWltc2ljKQogCQlyZXR1cm4gLUVOT01FTTsKIAl2Y3B1LSZndDthcmNoLmFpYV9jb250ZXh0Lmltc2ljX3N0YXRlID0gaW1zaWM7CkBAIC0xMTIxLDcgJiM0MzsxMTIxLDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlpbXNpYy0mZ3Q7dnNmaWxlX2hnZWkgPSBpbXNpYy0mZ3Q7dnNmaWxlX2NwdSA9IC0xOwogCiAJLyogU2V0dXAgSU1TSUMgU1ctZmlsZSAqLwotCXN3ZmlsZV9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sCiYjNDM7CXN3ZmlsZV9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTywKIAkJCQkgIGdldF9vcmRlcihzaXplb2YoKmltc2ljLSZndDtzd2ZpbGUpKSk7CiAJaWYgKCFzd2ZpbGVfcGFnZSkgewogCQlyZXQgPSAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbW11LmMgYi9hcmNoL3Jpc2N2L2t2bS9tbXUuYwppbmRleCAwODJmOWIyNjE3MzM4Ny4uOWIxZDgwOWRhZjJjYzAgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL21tdS5jCkBAIC02NjksOCAmIzQzOzY2OSw4IEBAIGludCBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChzdHJ1Y3Qga3ZtICprdm0pCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCXBnZF9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sCi0JCQkJZ2V0X29yZGVyKGt2bV9yaXNjdl9nc3RhZ2VfcGdkX3NpemUpKTsKJiM0MzsJcGdkX3BhZ2UgPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMX0FDQ09VTlQgfCBfX0dGUF9aRVJPLAomIzQzOwkJCSAgICAgICBnZXRfb3JkZXIoa3ZtX3Jpc2N2X2dzdGFnZV9wZ2Rfc2l6ZSkpOwogCWlmICghcGdkX3BhZ2UpCiAJCXJldHVybiAtRU5PTUVNOwogCWt2bS0mZ3Q7YXJjaC5wZ2QgPSBwYWdlX3RvX3ZpcnQocGdkX3BhZ2UpOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMKaW5kZXggYmI0NmRjYmZiMjRkYTcuLmU1MDE4Nzg0Nzc5ZDViIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMKQEAgLTQ1Miw3ICYjNDM7NDUyLDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHMKIAkJfQogCX0KIAotCWt2cG11LSZndDtzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDKTsKJiM0MzsJa3ZwbXUtJmd0O3NkYXRhID0ga3phbGxvYyhzbmFwc2hvdF9hcmVhX3NpemUsIEdGUF9BVE9NSUMgfCBfX0dGUF9BQ0NPVU5UKTsKIAlpZiAoIWt2cG11LSZndDtzZGF0YSkgewogCQlzYmlyZXQgPSBTQklfRVJSX0ZBSUxVUkU7CiAJCWdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jCmluZGV4IGFiMzlhYzQ2NGZmZDgxLi40OTg0ZDNlNTRlMjNjNiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYwpAQCAtMzc3LDcgJiM0MzszNzcsNyBAQCBzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaW50IGk7CiAKIAlmd2Z0LSZndDtjb25maWdzID0ga3phbGxvY19vYmpzKHN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnLAotCQkJCSAgICAgQVJSQVlfU0laRShmZWF0dXJlcykpOwomIzQzOwkJCQkgICAgIEFSUkFZX1NJWkUoZmVhdHVyZXMpLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghZndmdC0mZ3Q7Y29uZmlncykKIAkJcmV0dXJuIC1FTk9NRU07CiAKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfdmVjdG9yLmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jCmluZGV4IDYyZDJmYjc3YmI5YjkzLi5kNzQ4ZTdkODI1ZTEzNyAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jCkBAIC03NiwxMSAmIzQzOzc2LDExIEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfaG9zdF92ZWN0b3JfcmVzdG9yZShzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpjbnR4KQogCiBpbnQga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXZjcHUtJmd0O2FyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBremFsbG9jKHJpc2N2X3ZfdnNpemUsIEdGUF9LRVJORUwpOwomIzQzOwl2Y3B1LSZndDthcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghdmNwdS0mZ3Q7YXJjaC5ndWVzdF9jb250ZXh0LnZlY3Rvci5kYXRhcCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQl2Y3B1LSZndDthcmNoLmhvc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBremFsbG9jKHJpc2N2X3ZfdnNpemUsIEdGUF9LRVJORUwpOwomIzQzOwl2Y3B1LSZndDthcmNoLmhvc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBremFsbG9jKHJpc2N2X3ZfdnNpemUsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJaWYgKCF2Y3B1LSZndDthcmNoLmhvc3RfY29udGV4dC52ZWN0b3IuZGF0YXApIHsKIAkJa2ZyZWUodmNwdS0mZ3Q7YXJjaC5ndWVzdF9jb250ZXh0LnZlY3Rvci5kYXRhcCk7CiAJCXZjcHUtJmd0O2FyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBOVUxMOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDU0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1lbW9yeSBBY2NvdW50aW5nIGZvciBSSVNDLVYgS1ZNIEFsbG9jYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBlbmFibGluZyBtZW1vcnkgYWNjb3VudGluZyBmb3IgYSBmZXcgY3JpdGljYWwgYWxsb2NhdGlvbiBwYXRocyB3aXRoaW4gdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgYWRkaW5nIGBHRlBfS0VSTkVMX0FDQ09VTlRgIG9yIGBfX0dGUF9BQ0NPVU5UYCB0byB0aG9zZSBhbGxvY2F0aW9uIGZsYWdzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgc2hvdWxkIGltcHJvdmUgb3VyIGFiaWxpdHkgdG8gdHJhY2sgbWVtb3J5IHVzYWdlIHdpdGhpbiB0aGUgS1ZNIHN1YnN5c3RlbSBvbiBSSVNDLVYuCgpUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyBzZXZlcmFsIGZpbGVzLCBhbGwgd2l0aGluIHRoZSBgYXJjaC9yaXNjdi9rdm1gIGRpcmVjdG9yeTogYGFpYV9hcGxpYy5jYCwgYGFpYV9pbXNpYy5jYCwgYG1tdS5jYCwgYHZjcHVfcG11LmNgLCBgdmNwdV9zYmlfZndmdC5jYCwgYW5kIGB2Y3B1X3ZlY3Rvci5jYC4gQSBxdWljayBzY2FuIG9mIHRoZSBjb2RlIGlkZW50aWZpZXMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczogYGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdGAsIGBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdGAsIGBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZGAsIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCwgYGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdGAsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHRgLgoKTm93LCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgYWxsIG1ha2VzIHNlbnNlIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbnRleHQuIEZpcnN0LCB3ZSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCBLVk0gaXMgZXZlbiBlbmFibGVkIG9uIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLCBJIGFzc3VtZSB0aGF0IGVuYWJsaW5nIEtWTSB3b3VsZCByZWx5IG9uIHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIG9wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTE6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgS1ZNIE1lbW9yeSBBY2NvdW50aW5nIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWcgaXMgc2V0IHRvIGBLVk1gLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IHdvcnRoIGRlZGljYXRpbmcgZnV6emluZyByZXNvdXJjZXMgdG8uIEl0JiMzOTtzIGFib3V0IG1lbW9yeSBhY2NvdW50aW5nIHdpdGhpbiBLVk0gYWxsb2NhdGlvbnMg4oCTIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHksIGJ1dCB1c3VhbGx5IHRyYW5zcGFyZW50IHVubGVzcyB3ZSYjMzk7cmUgdHJpZ2dlcmluZyBhbiBvdXQtb2YtbWVtb3J5IChPT00pIGNvbmRpdGlvbi4gQnV0IHN5emthbGxlciAqZG9lcyogZm9jdXMgb24gbWVtb3J5IGxpbWl0cyBhbmQgYWNjb3VudGluZywgc28gdGhhdCYjMzk7cyBhIHBvaW50IGluIGl0cyBmYXZvci4KCkhtbSwgaXMgdGhpcyBldmVuICpyZWFjaGFibGUqIGluIG91ciB0ZXN0IGVudmlyb25tZW50PyBXZSYjMzk7cmUgcnVubmluZyB0ZXN0cyBvbiB4ODZfNjQsIGFybTY0LCBhbmQgcG90ZW50aWFsbHkgcmlzY3YuIFdhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSByaXNjdjY0IHN1cHBvcnQsIHJpZ2h0PyBJZiB3ZSYjMzk7cmUgdGVzdGluZyBvbiByaXNjdjY0LCB0aGlzIHBhdGNoIGJlY29tZXMgYSB2YWxpZCB0YXJnZXQuIAoKQWgsIHJpZ2h0LCB0aGUgcHJvbXB0IHNheXMgdG8gdmVyaWZ5IGV4ZWN1dGlvbi4gT2theSwgaWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBJIG5lZWQgdG8gdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIGNvbmZpcm0gdGhhdCB0aGUgY29kZSAqY2FuKiBiZSBleGVjdXRlZC4gVGhhdCBzZXR0bGVzIGl0LiBUaGUgYW5zd2VyIGlzICYjMzQ7V29ydGhGdXp6aW5nPXRydWUuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfYWlhX2FwbGljX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmM9NTU5PWludCBrdm1fcmlzY3ZfYWlhX2FwbGljX2hhc19hdHRyKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jLTU3My1cbmFyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jOjU3NDppbnQga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0KHN0cnVjdCBrdm0gKmt2bSlcbmFyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jLTU3NS17XG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhX2RldmljZS5jPTIyNj1zdGF0aWMgaW50IGFpYV9pbml0KHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmMtMjUxLVx0LyogSW5pdGlhbGl6ZSBBUExJQyAqL1xuYXJjaC9yaXNjdi9rdm0vYWlhX2RldmljZS5jOjI1MjpcdHJldCA9IGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdChrdm0pO1xuYXJjaC9yaXNjdi9rdm0vYWlhX2RldmljZS5jLTI1My1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTE6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAxOAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqUmVhY2hpbmcgZm9yIHRoZSBBSUEqKgoKUmlnaHQsIGl0JiMzOTtzIHN0YXJ0aW5nIHRvIGNsaWNrLiBJIGhhdmUgYSBodW5jaCB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBnZXQgbXkgaGFuZHMgb24gYW5kIHdvcmsgd2l0aC4gVGhlIHRhcmdldCBoZXJlIGlzIGNsZWFyOiBsZXQmIzM5O3MgZGl2ZSBzdHJhaWdodCBpbnRvIGBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljLCBvciBhdCBsZWFzdCB0aGUgZ3JvdW5kd29yaywgZm9yIHRoZSBBSUEgYW5kIElNU0lDIHNldHVwIGlzIGxpa2VseSBoYXBwZW5pbmcgd2l0aGluIHRoZSBLVk0vUklTQy1WIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQUlBIGltcGxlbWVudGF0aW9uIHN0YXJ0cyB1cCwgYW5kIHRoaXMgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gVGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGFuZCBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL2FpYV9kZXZpY2UuYz0yMjY9c3RhdGljIGludCBhaWFfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhX2RldmljZS5jLTI3OC1cdFx0LyogSW5pdGlhbGl6ZSBJTVNJQyBmb3IgdGhpcyBWQ1BVICovXG5hcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmM6Mjc5Olx0XHRyZXQgPSBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdCh2Y3B1KTtcbmFyY2gvcmlzY3Yva3ZtL2FpYV9kZXZpY2UuYy0yODAtXHRcdGlmIChyZXQpXG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmM9MTA5ND1zdGF0aWMgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzIGltc2ljX2lvZG9ldl9vcHMgPSB7XG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmMtMTA5OC1cbmFyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jOjEwOTk6aW50IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jLTExMDAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MTgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBga3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RgLCBwcmVzZW50ZWQgYXMgdGhvdWdoIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGlzIGlzIGdvaW5nIHRvIGJlIGFib3V0IGFsbG9jYXRpbmcgYSBwYWdlIGdsb2JhbCBkaXJlY3RvcnkgKFBHRCkgZm9yIHRoZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uLiBHaXZlbiBteSBiYWNrZ3JvdW5kIGluIHZpcnR1YWwgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIFJJU0MtViBhcmNoaXRlY3R1cmUsIG15IGluaXRpYWwgdGhvdWdodCBpczogd2hhdCBhcmUgdGhlIHNwZWNpZmljIGNvbnNpZGVyYXRpb25zIGhlcmU/IElzIHRoaXMgZm9yIHRoZSBndWVzdCYjMzk7cyBQR0QsIG9yIHRoZSBob3N0JiMzOTtzPyBKdWRnaW5nIGJ5IHRoZSBuYW1lLCBpdCYjMzk7cyB0aGUgZ3Vlc3QmIzM5O3MsIHdoaWNoIG1ha2VzIHRoZSBtb3N0IHNlbnNlLgoKTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgY29tcGxleGl0aWVzLiBUaGlzIGZ1bmN0aW9uIHByb2JhYmx5IG5lZWRzIHRvIGFjY291bnQgZm9yIHRoZSBSSVNDLVYmIzM5O3Mgc3BlY2lmaWMgcGFnZSB0YWJsZSBzdHJ1Y3R1cmUg4oCTIHdoaWNoIGxldmVsIG9mIHRoZSBwYWdlIHRhYmxlIGhpZXJhcmNoeSBhcmUgd2UgZGVhbGluZyB3aXRoPyBEb2VzIGl0IGFsaWduIHdpdGggYSA0LWxldmVsIG9yIDUtbGV2ZWwgaW1wbGVtZW50YXRpb24/IEl0IG5lZWRzIHRvIGNvbnNpZGVyIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIGNvbnN0cmFpbnRzLCB0b28sIGFuZCBlbnN1cmUgdGhlIGFsbG9jYXRpb24gaXMgYWxpZ25lZCB3aXRoIHRoZSBoYXJkd2FyZSYjMzk7cyByZXF1aXJlbWVudHMuIEdpdmVuIEtWTSYjMzk7cyByb2xlLCB0aGUgYWxsb2NhdGVkIG1lbW9yeSBhbHNvIG5lZWRzIHRvIGJlIGFjY2Vzc2libGUgYm90aCB0byB0aGUgaG9zdCBrZXJuZWwgKGZvciBtYW5hZ2luZyBpdCkgYW5kIHRvIHRoZSBndWVzdCBWTSAod2hpY2ggdXNlcyBpdCBmb3IgYWRkcmVzcyB0cmFuc2xhdGlvbikuCgpJJiMzOTttIG1lbnRhbGx5IGdvaW5nIHRocm91Z2ggcG90ZW50aWFsIGlzc3VlcyBhcm91bmQgY2FjaGUgY29oZXJlbmN5LiBTaW5jZSBib3RoIHRoZSBob3N0IGFuZCBndWVzdCBjYW4gcG90ZW50aWFsbHkgbW9kaWZ5IHRoaXMgUEdELCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBoYXJkd2FyZSBjYWNoZSBpcyBjb3JyZWN0bHkgZmx1c2hlZCwgb3IgaW52YWxpZGF0aW9uIG9wZXJhdGlvbnMgYXJlIGlzc3VlZCBjb3JyZWN0bHkuIEFyZSB3ZSBkZWFsaW5nIHdpdGggYW55IG1lbW9yeSBiYXJyaWVycyBoZXJlIHRvIGVuc3VyZSBwcm9wZXIgb3JkZXJpbmcgb2YgbWVtb3J5IG9wZXJhdGlvbnM/IExldCYjMzk7cyBjaGVjayB0aGUgY29kZSBhbmQgc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tbXUuYz01MzU9aW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy02NjItXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo2NjM6aW50IGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkKHN0cnVjdCBrdm0gKmt2bSlcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTY2NC17XG4tLVxuYXJjaC9yaXNjdi9rdm0vdm0uYz0zMT1pbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92bS5jLTM0LVxuYXJjaC9yaXNjdi9rdm0vdm0uYzozNTpcdHIgPSBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChrdm0pO1xuYXJjaC9yaXNjdi9rdm0vdm0uYy0zNi1cdGlmIChyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjA1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGFja2xpbmcgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAqKgoKUmlnaHQsIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGl0c2VsZiBpcyBhIHByZXR0eSBnb29kIGluZGljYXRvciBvZiB3aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIEl0JiMzOTtzIG9idmlvdXNseSB0aWVkIHRvIEtWTSwgUklTQy1WIGFyY2hpdGVjdHVyZSwgdkNQVXMsIGFuZCBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXRzIChQTVVzKS4gVGhlICYjMzQ7c25hcHNob3QmIzM0OyBwYXJ0IHN1Z2dlc3RzIHdlJiMzOTtyZSBwcm9iYWJseSBjYXB0dXJpbmcgYSBwb2ludC1pbi10aW1lIHN0YXRlIG9mIHRoZSBQTVUgY291bnRlcnMsIGFuZCB0aGUgJiMzNDtzaG1lbSYjMzQ7IGluZGljYXRlcyB3ZSYjMzk7cmUgc3RvcmluZyB0aGlzIHNuYXBzaG90IGluIHNoYXJlZCBtZW1vcnkuIEdpdmVuIHRoYXQgc2hhcmVkIG1lbW9yeSBpcyB1c2VkIGZvciBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24sIHRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgYSBtZWNoYW5pc20gZm9yIHNvbWV0aGluZyBvdXRzaWRlIG9mIHRoZSBndWVzdCAobGlrZWx5IHRoZSBob3N0L2h5cGVydmlzb3IpIHRvIGludGVyYWN0IHdpdGggdGhlIGd1ZXN0JiMzOTtzIFBNVSBkYXRhLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6CgoqICAgKipXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyoqIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGZyb20/IElzIGl0IGludm9rZWQgZHVyaW5nIGEgc3BlY2lmaWMgVk0gbGlmZWN5Y2xlIGV2ZW50IChsaWtlIGEgZ3Vlc3Qgc3VzcGVuZCwgbWlncmF0aW9uLCBvciBzb21lIHNwZWNpZmljIG1vbml0b3JpbmcgcmVxdWVzdCk/IFRoaXMgd2lsbCBkaWN0YXRlIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLgoqICAgKipXaGF0IGRhdGEgaXMgYmVpbmcgc2hhcmVkPyoqIFdoYXQgc3BlY2lmaWMgUE1VIGNvdW50ZXJzIGFyZSBiZWluZyBzbmFwc2hvdHRlZCBhbmQgc2hhcmVkPyBBcmUgd2UgdGFsa2luZyBhYm91dCBldmVudCBjb3VudHMsIHRpbWUtYmFzZWQgbWV0cmljcywgb3IgcGVyaGFwcyBldmVuIGNvbnRyb2wgcmVnaXN0ZXIgc3RhdGVzPyBUaGlzIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBsZXZlbCBvZiBvYnNlcnZhYmlsaXR5IHdlIGhhdmUuCiogICAqKldoYXQmIzM5O3MgdGhlIG1lbW9yeSBsYXlvdXQ/KiogV2hhdCYjMzk7cyB0aGUgc3RydWN0dXJlIG9mIHRoZSBzaGFyZWQgbWVtb3J5IHJlZ2lvbj8gS25vd2luZyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBvZmZzZXRzIHdpbGwgYmUga2V5IGZvciBwcm9wZXIgZGF0YSBpbnRlcnByZXRhdGlvbiBhbmQgaW50ZXJhY3Rpb24gd2l0aCBpdC4KKiAgICoqV2hhdCYjMzk7cyB0aGUgbG9ja2luZy9zeW5jaHJvbml6YXRpb24gc2NoZW1lPyoqIFNoYXJlZCBtZW1vcnkgaXMgaW5oZXJlbnRseSBzdXNjZXB0aWJsZSB0byByYWNlIGNvbmRpdGlvbnMuIEhvdyBkb2VzIHRoaXMgZnVuY3Rpb24gaGFuZGxlIGNvbmN1cnJlbmN5IGJldHdlZW4gdGhlIGd1ZXN0IGFuZCB0aGUgaHlwZXJ2aXNvcj8gQXJlIHRoZXJlIG11dGV4ZXMsIHNwaW5sb2Nrcywgb3Igb3RoZXIgbWVjaGFuaXNtcyBpbnZvbHZlZCB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHk/IFRoaXMgaXMgYSBwcmltYXJ5IGNvbmNlcm4uCiogICAqKldoYXQmIzM5O3MgdGhlIGVycm9yIGhhbmRsaW5nPyoqIEhvdyBkb2VzIHRoZSBmdW5jdGlvbiBoYW5kbGUgZmFpbHVyZXM/IERvZXMgaXQgcmV0dXJuIGVycm9yIGNvZGVzLCBsb2cgbWVzc2FnZXMsIG9yIHRyaWdnZXIgb3RoZXIgZXJyb3ItaGFuZGxpbmcgcHJvY2VkdXJlcz8gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHN5c3RlbSBzdGFiaWxpdHkuCiogICAqKkhvdyYjMzk7cyBpdCBhcmNoaXRlY3RlZD8qKiBJcyB0aGlzIGEgZGlyZWN0IGludGVyYWN0aW9uLCBvciBkb2VzIGl0IHV0aWxpemUgYW55IGhlbHBlciBmdW5jdGlvbnMgb3IgYWJzdHJhY3Rpb24gbGF5ZXJzIHdpdGhpbiB0aGUgS1ZNIGluZnJhc3RydWN0dXJlPwoKTm93LCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlLiBUaW1lIHRvIGZpcmUgdXAgdGhlIGRlYnVnZ2VyIG9yIHRoZSBzdGF0aWMgYW5hbHlzaXMgdG9vbHMuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZ2V0IHRvIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCBsb29rIGF0IHRoZSBzdHJ1Y3R1cmVzLCBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgdGhlbiB0cnkgdG8gc2VlIHRoZSBvdmVyYWxsIGZsb3cuIEkgYWxzbyBleHBlY3QgdG8gc2VlIGEgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBvbiB0aGUgaHlwZXJ2aXNvciBzaWRlLCBsaWtlbHkgY2FsbGVkIGR1cmluZyB0aGUgc25hcHNob3QgcmV0cmlldmFsLiBUaGlzIHdpbGwgbmVlZCBhIGNhcmVmdWwgbG9vayBmb3IgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYz00MTY9c3RhdGljIHZvaWQga3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyNC1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM6NDI1OmludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyNi1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBmbGFncyxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz0xNj1zdGF0aWMgaW50IGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03My1cdGNhc2UgU0JJX0VYVF9QTVVfU05BUFNIT1RfU0VUX1NITUVNOlxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6NzQ6XHRcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0odmNwdSwgY3AtXHUwMDNlYTAsIGNwLVx1MDAzZWExLCBjcC1cdTAwM2VhMiwgcmV0ZGF0YSk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03NS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNDMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIEtWTSBTQkkgRXh0ZW5zaW9uIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhlYWQgYXJvdW5kIGBrdm1fc2JpX2V4dF9md2Z0X2luaXRgLiBUaGlzIGZ1bmN0aW9uIG5hbWUgaW1tZWRpYXRlbHkgY2x1ZXMgbWUgaW4g4oCTIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggS1ZNIChLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lKSBhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gU0JJIGV4dGVuc2lvbnMsIGxpa2VseSBjb25jZXJuaW5nIGZpcm13YXJlLCBmbG9hdGluZy1wb2ludCBzdGF0ZSBtYW5hZ2VtZW50LCBhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIFRoYXQgJiMzNDtmd2Z0JiMzNDsgcGFydCBpcyBpbnRyaWd1aW5nOyBJIHN1c3BlY3QgaXQgcmVsYXRlcyB0byB0aGUgRldGVCBpbnN0cnVjdGlvbiBleHRlbnNpb24gKGxpa2VseSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlIG9yIHByb2Nlc3NvciB2ZW5kb3IpIGFuZCBob3cgaXQmIzM5O3MgaGFuZGxlZCBkdXJpbmcgS1ZNIHNldHVwLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgc3BlY2lmaWMgYXNwZWN0IG9mIHRoZSBTQkkgZXh0ZW5zaW9uIGlzIGJlaW5nIGluaXRpYWxpemVkIGhlcmUgYW5kIHdoeSBpdCB3YXJyYW50cyBhIGRlZGljYXRlZCBmdW5jdGlvbi4gV2hhdCYjMzk7cyB0aGUgcmVsYXRpb25zaGlwIG9mIEZXRlQgdG8gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlIG9yIHNlY3VyaXR5PyBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIHJldm9sdmUgYXJvdW5kIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCB3aGF0JiMzOTtzIGJlaW5nIGluaXRpYWxpemVkLCB0aGUgcmVsZXZhbnQgZGF0YSBzdHJ1Y3R1cmVzLCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgYW5kIHdoYXQgZXJyb3JzLCBpZiBhbnksIGNhbiBvY2N1ciBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZXhwbG9yZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIEtWTSBpbmZyYXN0cnVjdHVyZS4gSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgZGVmaW5pdGlvbiwgdGhlbiBsb29rIGF0IHRoZSBjYWxsZXIgYW5kIGNhbGxlZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zYmlfZXh0X2Z3ZnRfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9MzQ4PXN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMtMzcxLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jOjM3MjpzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMtMzczLXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9NTY4PWNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9md2Z0ID0ge1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzEtXHQuaGFuZGxlciA9IGt2bV9zYmlfZXh0X2Z3ZnRfaGFuZGxlcixcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYzo1NzI6XHQuaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdCxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzMtXHQuZGVpbml0ID0ga3ZtX3NiaV9leHRfZndmdF9kZWluaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MjcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBmdW5jdGlvbjoKCioqRGl2aW5nIGludG8gYGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0YC4gVGhhdCBuYW1lIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcgdGhlIGNvbnRleHQgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdmVjdG9yIG9wZXJhdGlvbnMgd2l0aGluIGEgUklTQy1WIEtWTSB2aXJ0dWFsIENQVS4gVGhpcyBpcyBsaWtlbHkgYSBjcml0aWNhbCBwaWVjZSBmb3Igc3VwcG9ydGluZyB2ZWN0b3IgZXh0ZW5zaW9ucyBpbiB0aGUgZ3Vlc3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBzZXR0aW5nIHVwIHRoZSBtZW1vcnkgYW5kIGRhdGEgc3RydWN0dXJlcyByZXF1aXJlZCB0byBtYW5hZ2UgdGhvc2UgdmVjdG9yIHJlZ2lzdGVycyBhbmQgc3RhdGUuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgaW52b2x2ZXMgYWxsb2NhdGluZyBtZW1vcnksIGluaXRpYWxpemluZyByZWdpc3RlcnMsIHNldHRpbmcgdXAgc2hhZG93IHJlZ2lzdGVycyAoaWYgYXBwbGljYWJsZSBmb3IgZW11bGF0aW9uIG9yIG9wdGltaXphdGlvbiksIGFuZCBsaWtlbHkgaW50ZXJmYWNpbmcgd2l0aCB0aGUgaGFyZHdhcmUgb3IgdGhlIGVtdWxhdGlvbiBsYXllciYjMzk7cyB2ZWN0b3IgdW5pdC4gSSYjMzk7bSBjdXJpb3VzIHRvIHNlZSBpZiBpdCBoYW5kbGVzIGFueSBzcGVjaWZpYyBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIGZvciB0aGUgdmVjdG9yIGNvbnRleHQsIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBjbGV2ZXIgbWVtb3J5IG1hbmFnZW1lbnQgaW52b2x2ZWQuIElzIGl0IHVzaW5nIGEgY3VzdG9tIGFsbG9jYXRvciwgb3IgcmVseWluZyBvbiBzdGFuZGFyZCBrZXJuZWwgYWxsb2NhdG9ycz8gTGV0JiMzOTtzIHNlZSBpZiBpdCBoYW5kbGVzIHRoZSB2YXJpb3VzIHZlY3RvciBsZW5ndGggKFZMRU4pIGNvbmZpZ3VyYXRpb25zIGFuZCB0aGUgdmVjdG9yIHJlZ2lzdGVyIGdyb3VwcyBjb3JyZWN0bHkuIFRoZSBhbGxvY2F0aW9uIHN0cmF0ZWd5IHNob3VsZCBhbHNvIGJlIGNvbnNpZGVyZWQuIElzIGl0IHByZS1hbGxvY2F0aW5nIHRoZSB2ZWN0b3IgY29udGV4dCBmb3IgYSBjZXJ0YWluIGFtb3VudCBvZiB2aXJ0dWFsIENQVXMsIG9yIGlzIGl0IGFsbG9jYXRpbmcgdGhlbSBvbiBkZW1hbmQ/IEkgYW50aWNpcGF0ZSB0aGVyZSBtaWdodCBiZSBzb21lIGludGVycGxheSB3aXRoIHRoZSBLVk0gTU1VIHNldHVwLCB0b28sIGlmIHRoZSB2ZWN0b3IgY29udGV4dCBpbnZvbHZlcyBhZGRyZXNzIHRyYW5zbGF0aW9uIGluIHNvbWUgd2F5LiBUaGUgZXJyb3IgaGFuZGxpbmcgaXMgYWxzbyBzb21ldGhpbmcgdGhhdCBjYXRjaGVzIG15IGV5ZS4gSXMgdGhlcmUgcm9idXN0IGVycm9yIGhhbmRsaW5nIHRvIGRlYWwgd2l0aCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcz8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBlcnJvciBjb2RlcyB0aGF0IEtWTSByZXBvcnRzIHRvIHNpZ25hbCBpc3N1ZXMgd2l0aCB0aGlzIHZlY3RvciBjb250ZXh0IGFsbG9jYXRpb24/IEFuZCBmaW5hbGx5LCBJIHdvdWxkIGxpa2UgdG8gcXVpY2tseSBhc3Nlc3MgaWYgaXQgaW50ZWdyYXRlcyB3aXRoIGFueSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLCBsaWtlIHRoZSBLVk0gaHlwZXJjYWxscy4gSXMgdGhlcmUgYW55dGhpbmcgc3BlY2lhbCBoZXJlPyBUaGlzIHNob3VsZCBiZSBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTE6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vdmNwdS5jPTEyOT1pbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNTYtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MTU3Olx0cmMgPSBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dCh2Y3B1KTtcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNTgtXHRpZiAocmMpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYz03MT12b2lkIGt2bV9yaXNjdl92Y3B1X2hvc3RfdmVjdG9yX3Jlc3RvcmUoc3RydWN0IGt2bV9jcHVfY29udGV4dCAqY250eClcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jLTc2LVxuYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYzo3NzppbnQga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYy03OC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MzAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSBSSVNDLVYgSW5pdGlhbGl6YXRpb24gUGF0aHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIEtWTSBmdW5jdGlvbnMsIGFsbCBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgUklTQy1WIGltcGxlbWVudGF0aW9uLCBhbmQgc3BlY2lmaWNhbGx5LCB1bmRlciB0aGUgYEtWTWAgY29uZmlndXJhdGlvbi4gVGhlIGtleSBzeW1ib2xzIEkmIzM5O20gZm9jdXNpbmcgb24gYXJlOiBga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCwgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAuCgpJJiMzOTttIG1lbnRhbGx5IG1hcHBpbmcgdGhlIGNhbGwgY2hhaW5zIG5vdy4gV2FpdCBhIG1pbnV0ZS4uLiBga3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RgIGlzIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF9pbml0X3ZtYCwgd2hpY2ggaXMgYSBmdW5jdGlvbiBjcml0aWNhbCB0byB0aGUgVk0gY3JlYXRpb24gcHJvY2Vzcy4gVGhhdCYjMzk7cyBhIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcmVhLiBTaW1pbGFybHksIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAgb3JpZ2luYXRlcyBmcm9tIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWAsIHdoaWNoIGFsc28gZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSB2Q1BVIGlzIGNyZWF0ZWQuIFRoaXMgaGlnaGxpZ2h0cyB0aGUgaW1wb3J0YW5jZSBvZiB0aG9zZSB0d28gZnVuY3Rpb25zLgoKYGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdGAgYW5kIGBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdGAgYXJlIGluaXRpYWxpemVkIHZpYSBgYWlhX2luaXRgLiBPa2F5LCBtYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyB0aGVpciBuYXR1cmFsIGdyb3VwaW5nLiBBbmQsIHdoYXQgYWJvdXQgYGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdGA/IEkgc2VlbSB0byByZW1lbWJlciB0aGF0IGJlaW5nIGNhbGxlZCBmcm9tIGBrdm1fdmNwdV9zYmlfZXh0X2luaXRgLCBidXQgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQuIEFsd2F5cyBnb29kIHRvIGJlIHByZWNpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zYmlfZXh0X2Z3ZnRfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9MzQ4PXN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMtMzcxLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jOjM3MjpzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMtMzczLXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9NTY4PWNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9md2Z0ID0ge1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzEtXHQuaGFuZGxlciA9IGt2bV9zYmlfZXh0X2Z3ZnRfaGFuZGxlcixcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYzo1NzI6XHQuaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdCxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzMtXHQuZGVpbml0ID0ga3ZtX3NiaV9leHRfZndmdF9kZWluaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2OTAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjoga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSoqCgpPa2F5LCBzbyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAgaXMgdGhlIGZ1bmN0aW9uIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluIHRvZGF5LiBJdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgIHdoZW4gdGhlIGBTQklfRVhUX1BNVV9TTkFQU0hPVF9TRVRfU0hNRU1gIFNCSSBleHRlbnNpb24gaXMgaW52b2tlZC4gVGhhdCYjMzk7cyBhIGNsZWFyIGVudHJ5IHBvaW50LCB3aGljaCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3Igc29tZSBmdXp6aW5nIHdvcmsuIEEgbmljZSwgY2xlYW4sIHdlbGwtZGVmaW5lZCB0YXJnZXQgbGlrZSB0aGlzIGlzIGFsd2F5cyBhcHBlYWxpbmcuCgpOb3csIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJIG5lZWQgdG8gc2VlIGlmIHRoaXMgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnLCBvciBpZiB0aGVyZSBhcmUgb3RoZXIsIHBvc3NpYmx5IHJlbGF0ZWQsIGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBgS1ZNYCBpcyB0aGUgb2J2aW91cyBvbmUsIG9mIGNvdXJzZS4gQnV0IGFyZSB0aGVyZSBhbnkgb3RoZXIgYEtWTWAtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIHBlcmhhcHMgZmxhZ3Mgb3IgYnVpbGQgb3B0aW9ucywgd2l0aGluIHRoZSBSSVNDLVYgY29udGV4dCB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGZ1bmN0aW9uJiMzOTtzIGJlaGF2aW9yIG9yIHNldHVwPyBJdCYjMzk7cyBhbHdheXMgYmVzdCB0byBoYXZlIHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIHJlYWxseSBkaWdnaW5nIGludG8gdGhlIGNvZGUuIEdvdHRhIG1ha2Ugc3VyZSBub3RoaW5nIGlzIG92ZXJsb29rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDExOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTE6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNzQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlF1aWNrIERpYWdub3N0aWMgLSBWaXJ0dWFsaXphdGlvbiAmYW1wOyBLVk0gb24gUklTQy1WKioKCkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgc29tZXRoaW5nIGlzbiYjMzk7dCBxdWl0ZSBjbGlja2luZy4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWw6IElzICp2aXJ0dWFsaXphdGlvbiogYWN0dWFsbHkgZW5hYmxlZD8gU2VlbXMgb2J2aW91cywgYnV0IEkgaGF2ZSB0byBzdGFydCB0aGVyZS4gQW5kIHNpbmNlIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IFJJU0MtViwgdGhlIGFzc3VtcHRpb24gaXMgKktWTSogaXMgdGhlIGRyaXZpbmcgZm9yY2UgZm9yIGhhcmR3YXJlLWFzc2lzdGVkIHZpcnR1YWxpemF0aW9uLiBJdCB3b3VsZCBiZSBiaXphcnJlIGlmIHdlIHdlcmUgdXNpbmcgYW55dGhpbmcgZWxzZSBhdCB0aGlzIHBvaW50LgoKTGV0JiMzOTtzIHF1aWNrbHkgZHJpbGwgZG93biBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGZ1bmN0aW9uLiBUaGF04oCZcyBwcm9iYWJseSB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSByb290IG9mIHRoZSBwcm9ibGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM9NDE2PXN0YXRpYyB2b2lkIGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjQtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jOjQyNTppbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93LFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjYtXHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIHNhZGRyX2hpZ2gsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM9MTY9c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzMtXHRjYXNlIFNCSV9FWFRfUE1VX1NOQVBTSE9UX1NFVF9TSE1FTTpcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjc0Olx0XHRyZXQgPSBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHZjcHUsIGNwLVx1MDAzZWEwLCBjcC1cdTAwM2VhMSwgY3AtXHUwMDNlYTIsIHJldGRhdGEpO1xuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzUtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgxOAoJCQkJCQkJb3V0cHV0OiAxOTIKCQkJCQkJCXRob3VnaHRzOiAzMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1ZNIFJJU0MtViBNZW1vcnkgQWNjb3VudGluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBgR0ZQX0tFUk5FTF9BQ0NPVU5UYCBvciBgX19HRlBfQUNDT1VOVGAgdG8gYSBidW5jaCBvZiBhbGxvY2F0aW9ucy4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBpbXBvcnRhbnQgb25lIGFjdHVhbGx5LiBFbmFibGluZyBtZW1vcnkgYWNjb3VudGluZyBmb3IgdGhlc2UgYWxsb2NhdGlvbnMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBvcGVucyB0aGVtIHVwIGZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcsIHNwZWNpZmljYWxseSB3aXRoIHNvbWV0aGluZyBsaWtlIHN5emthbGxlci4gV2UgY2FuIHVzZSB0aGF0IHRvb2wgdG8gdmVyaWZ5IHRoYXQgbWVtb3J5IGxpbWl0cyBhcmUgYmVpbmcgZW5mb3JjZWQgY29ycmVjdGx5IGFuZCB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBtZW1vcnkgbGVha3MgbHVya2luZyBpbiB0aGVzZSBhbGxvY2F0aW9uIHBhdGhzLiBUaGF04oCZcyB0aGUgcmVhbCB2YWx1ZS4KCk5vdywgbGV0JiMzOTtzIHNlZSwgdGhlIHBhdGNoIHRvdWNoZXMgdGhlc2UgZnVuY3Rpb25zOiBga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCwgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAuIEhtbSwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCBhbmQgYGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0YC4uLiB0aG9zZSBhcmUgY2FsbGVkIGR1cmluZyBWTS9WQ1BVIGNyZWF0aW9uLCByaWdodD8gVGhleSBtaWdodCBiZSBzb21ld2hhdCBob3QgcGF0aHMsIGJ1dCB0aGF0IFZNL1ZDUFUgY3JlYXRpb24gcHJvY2VzcyBpcyBhY3R1YWxseSBhIGdyZWF0IHRhcmdldCBmb3IgZnV6emluZyB3aGVuIG1lbW9yeSBhY2NvdW50aW5nIGlzIGVuYWJsZWQuIEl0JiMzOTtzIGEgbmF0dXJhbCBwb2ludCB0byBwb2tlIGF0IHRoZXNlIGFsbG9jYXRpb25zLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gaW5jbHVkZSB0aGVtLgoKU28sIHRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFib3V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCB0aGF0IHNob3VsZCBiZSBlbmFibGVkLiBUaGUgY29uZmlnIGlzIG9idmlvdXNseSBgS1ZNYC4gSXTigJlzIGFsbCBhYm91dCBlbmhhbmNpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIFRpbWUgdG8gbG9nIHRoYXQgdG8gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNldCB0aG9zZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9tbXVfYWxsb2NfcGdkJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0mIzM0OywKICAgICYjMzQ7a3ZtX3NiaV9leHRfZndmdF9pbml0JiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGVuYWJsZXMgbWVtb3J5IGFjY291bnRpbmcgKEdGUF9LRVJORUxfQUNDT1VOVCAvIF9fR0ZQX0FDQ09VTlQpIGZvciBzZXZlcmFsIEtWTSBhbGxvY2F0aW9ucyBvbiBSSVNDLVYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSBmdXp6ZWQgdG8gZW5zdXJlIG1lbW9yeSBsaW1pdHMgYXJlIHByb3Blcmx5IGVuZm9yY2VkIGFuZCB0byBkZXRlY3QgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBpbiB0aGVzZSBhbGxvY2F0aW9uIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfYWlhX2FwbGljX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2QmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSYjMzQ7LAogICAgJiMzNDtrdm1fc2JpX2V4dF9md2Z0X2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoR0ZQX0tFUk5FTF9BQ0NPVU5UIC8gX19HRlBfQUNDT1VOVCkgZm9yIHNldmVyYWwgS1ZNIGFsbG9jYXRpb25zIG9uIFJJU0MtVi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IGxpbWl0cyBhcmUgcHJvcGVybHkgZW5mb3JjZWQgYW5kIHRvIGRldGVjdCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGluIHRoZXNlIGFsbG9jYXRpb24gcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMDoyMi44MDI5MTA2OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMjk3NjI4NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX2luaXRcIixcbiAgICBcImt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtXCIsXG4gICAgXCJrdm1fc2JpX2V4dF9md2Z0X2luaXRcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoR0ZQX0tFUk5FTF9BQ0NPVU5UIC8gX19HRlBfQUNDT1VOVCkgZm9yIHNldmVyYWwgS1ZNIGFsbG9jYXRpb25zIG9uIFJJU0MtVi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IGxpbWl0cyBhcmUgcHJvcGVybHkgZW5mb3JjZWQgYW5kIHRvIGRldGVjdCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGluIHRoZXNlIGFsbG9jYXRpb24gcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjIyLjgwMjkxNjUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzMwNzA1ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyNjc5OTkwZjI1YTMxOWEyZjc0NjVkNDcxYWFjZDhmZjkwNWViOWVmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDExOjEwOjIwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jIGIvYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmNcXG5pbmRleCA3NDgxMDdjMzQ3ZDkxNS4uYmU5MDJlYTY0ODBiNzMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuY1xcbkBAIC01ODEsNyArNTgxLDggQEAgaW50IGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0LyogQWxsb2NhdGUgQVBMSUMgZ2xvYmFsIHN0YXRlICovXFxuLVxcdGFwbGljID0ga3phbGxvY19mbGV4KCphcGxpYywgaXJxcywga3ZtLVxcdTAwM2VhcmNoLmFpYS5ucl9zb3VyY2VzICsgMSk7XFxuK1xcdGFwbGljID0ga3phbGxvY19mbGV4KCphcGxpYywgaXJxcywga3ZtLVxcdTAwM2VhcmNoLmFpYS5ucl9zb3VyY2VzICsgMSxcXG4rXFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRpZiAoIWFwbGljKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFx0a3ZtLVxcdTAwM2VhcmNoLmFpYS5hcGxpY19zdGF0ZSA9IGFwbGljO1xcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9haWFfaW1zaWMuYyBiL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jXFxuaW5kZXggZDM4ZjVkZTA4MzRjNWIuLjUwN2Q4MmU1YmM4ODJjIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmNcXG5AQCAtMTEwOCw3ICsxMTA4LDcgQEAgaW50IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbiBcXHQvKiBBbGxvY2F0ZSBJTVNJQyBjb250ZXh0ICovXFxuLVxcdGltc2ljID0ga3phbGxvY19vYmooKmltc2ljKTtcXG4rXFx0aW1zaWMgPSBremFsbG9jX29iaigqaW1zaWMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIFxcdGlmICghaW1zaWMpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR2Y3B1LVxcdTAwM2VhcmNoLmFpYV9jb250ZXh0Lmltc2ljX3N0YXRlID0gaW1zaWM7XFxuQEAgLTExMjEsNyArMTEyMSw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGltc2ljLVxcdTAwM2V2c2ZpbGVfaGdlaSA9IGltc2ljLVxcdTAwM2V2c2ZpbGVfY3B1ID0gLTE7XFxuIFxcbiBcXHQvKiBTZXR1cCBJTVNJQyBTVy1maWxlICovXFxuLVxcdHN3ZmlsZV9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sXFxuK1xcdHN3ZmlsZV9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyxcXG4gXFx0XFx0XFx0XFx0ICBnZXRfb3JkZXIoc2l6ZW9mKCppbXNpYy1cXHUwMDNlc3dmaWxlKSkpO1xcbiBcXHRpZiAoIXN3ZmlsZV9wYWdlKSB7XFxuIFxcdFxcdHJldCA9IC1FTk9NRU07XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21tdS5jIGIvYXJjaC9yaXNjdi9rdm0vbW11LmNcXG5pbmRleCAwODJmOWIyNjE3MzM4Ny4uOWIxZDgwOWRhZjJjYzAgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbW11LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xcbkBAIC02NjksOCArNjY5LDggQEAgaW50IGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkKHN0cnVjdCBrdm0gKmt2bSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuLVxcdHBnZF9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sXFxuLVxcdFxcdFxcdFxcdGdldF9vcmRlcihrdm1fcmlzY3ZfZ3N0YWdlX3BnZF9zaXplKSk7XFxuK1xcdHBnZF9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyxcXG4rXFx0XFx0XFx0ICAgICAgIGdldF9vcmRlcihrdm1fcmlzY3ZfZ3N0YWdlX3BnZF9zaXplKSk7XFxuIFxcdGlmICghcGdkX3BhZ2UpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHRrdm0tXFx1MDAzZWFyY2gucGdkID0gcGFnZV90b192aXJ0KHBnZF9wYWdlKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG5pbmRleCBiYjQ2ZGNiZmIyNGRhNy4uZTUwMTg3ODQ3NzlkNWIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG5AQCAtNDUyLDcgKzQ1Miw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0a3ZwbXUtXFx1MDAzZXNkYXRhID0ga3phbGxvYyhzbmFwc2hvdF9hcmVhX3NpemUsIEdGUF9BVE9NSUMpO1xcbitcXHRrdnBtdS1cXHUwMDNlc2RhdGEgPSBremFsbG9jKHNuYXBzaG90X2FyZWFfc2l6ZSwgR0ZQX0FUT01JQyB8IF9fR0ZQX0FDQ09VTlQpO1xcbiBcXHRpZiAoIWt2cG11LVxcdTAwM2VzZGF0YSkge1xcbiBcXHRcXHRzYmlyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcXG5pbmRleCBhYjM5YWM0NjRmZmQ4MS4uNDk4NGQzZTU0ZTIzYzYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jXFxuQEAgLTM3Nyw3ICszNzcsNyBAQCBzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGludCBpO1xcbiBcXG4gXFx0ZndmdC1cXHUwMDNlY29uZmlncyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qga3ZtX3NiaV9md2Z0X2NvbmZpZyxcXG4tXFx0XFx0XFx0XFx0ICAgICBBUlJBWV9TSVpFKGZlYXR1cmVzKSk7XFxuK1xcdFxcdFxcdFxcdCAgICAgQVJSQVlfU0laRShmZWF0dXJlcyksIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIFxcdGlmICghZndmdC1cXHUwMDNlY29uZmlncylcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuY1xcbmluZGV4IDYyZDJmYjc3YmI5YjkzLi5kNzQ4ZTdkODI1ZTEzNyAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuY1xcbkBAIC03NiwxMSArNzYsMTEgQEAgdm9pZCBrdm1fcmlzY3ZfdmNwdV9ob3N0X3ZlY3Rvcl9yZXN0b3JlKHN0cnVjdCBrdm1fY3B1X2NvbnRleHQgKmNudHgpXFxuIFxcbiBpbnQga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuLVxcdHZjcHUtXFx1MDAzZWFyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBremFsbG9jKHJpc2N2X3ZfdnNpemUsIEdGUF9LRVJORUwpO1xcbitcXHR2Y3B1LVxcdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRpZiAoIXZjcHUtXFx1MDAzZWFyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXApXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4tXFx0dmNwdS1cXHUwMDNlYXJjaC5ob3N0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMKTtcXG4rXFx0dmNwdS1cXHUwMDNlYXJjaC5ob3N0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRpZiAoIXZjcHUtXFx1MDAzZWFyY2guaG9zdF9jb250ZXh0LnZlY3Rvci5kYXRhcCkge1xcbiBcXHRcXHRrZnJlZSh2Y3B1LVxcdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwKTtcXG4gXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5ndWVzdF9jb250ZXh0LnZlY3Rvci5kYXRhcCA9IE5VTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjIzLjU3NjYwNjg1NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1MjM5MTcwMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0XCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIixcbiAgICBcImt2bV9zYmlfZXh0X2Z3ZnRfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChHRlBfS0VSTkVMX0FDQ09VTlQgLyBfX0dGUF9BQ0NPVU5UKSBmb3Igc2V2ZXJhbCBLVk0gYWxsb2NhdGlvbnMgb24gUklTQy1WLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgbGltaXRzIGFyZSBwcm9wZXJseSBlbmZvcmNlZCBhbmQgdG8gZGV0ZWN0IHBvdGVudGlhbCBtZW1vcnkgbGVha3MgaW4gdGhlc2UgYWxsb2NhdGlvbiBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNjc5OTkwZjI1YTMxOWEyZjc0NjVkNDcxYWFjZDhmZjkwNWViOWVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMTE6MTA6MjAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuYyBiL2FyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jXG5pbmRleCA3NDgxMDdjMzQ3ZDkxNS4uYmU5MDJlYTY0ODBiNzMgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmNcbkBAIC01ODEsNyArNTgxLDggQEAgaW50IGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0LyogQWxsb2NhdGUgQVBMSUMgZ2xvYmFsIHN0YXRlICovXG4tXHRhcGxpYyA9IGt6YWxsb2NfZmxleCgqYXBsaWMsIGlycXMsIGt2bS1cdTAwM2VhcmNoLmFpYS5ucl9zb3VyY2VzICsgMSk7XG4rXHRhcGxpYyA9IGt6YWxsb2NfZmxleCgqYXBsaWMsIGlycXMsIGt2bS1cdTAwM2VhcmNoLmFpYS5ucl9zb3VyY2VzICsgMSxcbitcdFx0XHQgICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIWFwbGljKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdGt2bS1cdTAwM2VhcmNoLmFpYS5hcGxpY19zdGF0ZSA9IGFwbGljO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jIGIvYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmNcbmluZGV4IGQzOGY1ZGUwODM0YzViLi41MDdkODJlNWJjODgyYyAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9haWFfaW1zaWMuY1xuQEAgLTExMDgsNyArMTEwOCw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0LyogQWxsb2NhdGUgSU1TSUMgY29udGV4dCAqL1xuLVx0aW1zaWMgPSBremFsbG9jX29iaigqaW1zaWMpO1xuK1x0aW1zaWMgPSBremFsbG9jX29iaigqaW1zaWMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIWltc2ljKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdHZjcHUtXHUwMDNlYXJjaC5haWFfY29udGV4dC5pbXNpY19zdGF0ZSA9IGltc2ljO1xuQEAgLTExMjEsNyArMTEyMSw3IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpbXNpYy1cdTAwM2V2c2ZpbGVfaGdlaSA9IGltc2ljLVx1MDAzZXZzZmlsZV9jcHUgPSAtMTtcbiBcbiBcdC8qIFNldHVwIElNU0lDIFNXLWZpbGUgKi9cbi1cdHN3ZmlsZV9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sXG4rXHRzd2ZpbGVfcGFnZSA9IGFsbG9jX3BhZ2VzKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8sXG4gXHRcdFx0XHQgIGdldF9vcmRlcihzaXplb2YoKmltc2ljLVx1MDAzZXN3ZmlsZSkpKTtcbiBcdGlmICghc3dmaWxlX3BhZ2UpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL21tdS5jXG5pbmRleCAwODJmOWIyNjE3MzM4Ny4uOWIxZDgwOWRhZjJjYzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vbW11LmNcbkBAIC02NjksOCArNjY5LDggQEAgaW50IGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkKHN0cnVjdCBrdm0gKmt2bSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4tXHRwZ2RfcGFnZSA9IGFsbG9jX3BhZ2VzKEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPLFxuLVx0XHRcdFx0Z2V0X29yZGVyKGt2bV9yaXNjdl9nc3RhZ2VfcGdkX3NpemUpKTtcbitcdHBnZF9wYWdlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyxcbitcdFx0XHQgICAgICAgZ2V0X29yZGVyKGt2bV9yaXNjdl9nc3RhZ2VfcGdkX3NpemUpKTtcbiBcdGlmICghcGdkX3BhZ2UpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0a3ZtLVx1MDAzZWFyY2gucGdkID0gcGFnZV90b192aXJ0KHBnZF9wYWdlKTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuaW5kZXggYmI0NmRjYmZiMjRkYTcuLmU1MDE4Nzg0Nzc5ZDViIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuQEAgLTQ1Miw3ICs0NTIsNyBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc1xuIFx0XHR9XG4gXHR9XG4gXG4tXHRrdnBtdS1cdTAwM2VzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDKTtcbitcdGt2cG11LVx1MDAzZXNkYXRhID0ga3phbGxvYyhzbmFwc2hvdF9hcmVhX3NpemUsIEdGUF9BVE9NSUMgfCBfX0dGUF9BQ0NPVU5UKTtcbiBcdGlmICgha3ZwbXUtXHUwMDNlc2RhdGEpIHtcbiBcdFx0c2JpcmV0ID0gU0JJX0VSUl9GQUlMVVJFO1xuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmNcbmluZGV4IGFiMzlhYzQ2NGZmZDgxLi40OTg0ZDNlNTRlMjNjNiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jXG5AQCAtMzc3LDcgKzM3Nyw3IEBAIHN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGludCBpO1xuIFxuIFx0ZndmdC1cdTAwM2Vjb25maWdzID0ga3phbGxvY19vYmpzKHN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnLFxuLVx0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGZlYXR1cmVzKSk7XG4rXHRcdFx0XHQgICAgIEFSUkFZX1NJWkUoZmVhdHVyZXMpLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFmd2Z0LVx1MDAzZWNvbmZpZ3MpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfdmVjdG9yLmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jXG5pbmRleCA2MmQyZmI3N2JiOWI5My4uZDc0OGU3ZDgyNWUxMzcgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jXG5AQCAtNzYsMTEgKzc2LDExIEBAIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfaG9zdF92ZWN0b3JfcmVzdG9yZShzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpjbnR4KVxuIFxuIGludCBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuLVx0dmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMKTtcbitcdHZjcHUtXHUwMDNlYXJjaC5ndWVzdF9jb250ZXh0LnZlY3Rvci5kYXRhcCA9IGt6YWxsb2MocmlzY3Zfdl92c2l6ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghdmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2NvbnRleHQudmVjdG9yLmRhdGFwKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdHZjcHUtXHUwMDNlYXJjaC5ob3N0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMKTtcbitcdHZjcHUtXHUwMDNlYXJjaC5ob3N0X2NvbnRleHQudmVjdG9yLmRhdGFwID0ga3phbGxvYyhyaXNjdl92X3ZzaXplLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCF2Y3B1LVx1MDAzZWFyY2guaG9zdF9jb250ZXh0LnZlY3Rvci5kYXRhcCkge1xuIFx0XHRrZnJlZSh2Y3B1LVx1MDAzZWFyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXApO1xuIFx0XHR2Y3B1LVx1MDAzZWFyY2guZ3Vlc3RfY29udGV4dC52ZWN0b3IuZGF0YXAgPSBOVUxMO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6MjMuNTc2NjA4NDY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwMjQxODcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNZW1vcnkgQWNjb3VudGluZyBmb3IgUklTQy1WIEtWTSBBbGxvY2F0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2Ugd2UncmUgZW5hYmxpbmcgbWVtb3J5IGFjY291bnRpbmcgZm9yIGEgZmV3IGNyaXRpY2FsIGFsbG9jYXRpb24gcGF0aHMgd2l0aGluIHRoZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgYWRkaW5nIGBHRlBfS0VSTkVMX0FDQ09VTlRgIG9yIGBfX0dGUF9BQ0NPVU5UYCB0byB0aG9zZSBhbGxvY2F0aW9uIGZsYWdzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgc2hvdWxkIGltcHJvdmUgb3VyIGFiaWxpdHkgdG8gdHJhY2sgbWVtb3J5IHVzYWdlIHdpdGhpbiB0aGUgS1ZNIHN1YnN5c3RlbSBvbiBSSVNDLVYuXG5cblRoZSBjaGFuZ2VzIGFyZSBzcHJlYWQgYWNyb3NzIHNldmVyYWwgZmlsZXMsIGFsbCB3aXRoaW4gdGhlIGBhcmNoL3Jpc2N2L2t2bWAgZGlyZWN0b3J5OiBgYWlhX2FwbGljLmNgLCBgYWlhX2ltc2ljLmNgLCBgbW11LmNgLCBgdmNwdV9wbXUuY2AsIGB2Y3B1X3NiaV9md2Z0LmNgLCBhbmQgYHZjcHVfdmVjdG9yLmNgLiBBIHF1aWNrIHNjYW4gb2YgdGhlIGNvZGUgaWRlbnRpZmllcyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOiBga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCwgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAuXG5cbk5vdywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGFsbCBtYWtlcyBzZW5zZSB3aXRoaW4gdGhlIGxhcmdlciBjb250ZXh0LiBGaXJzdCwgd2UgbmVlZCB0byBiZSBjZXJ0YWluIHRoYXQgS1ZNIGlzIGV2ZW4gZW5hYmxlZCBvbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgSSBhc3N1bWUgdGhhdCBlbmFibGluZyBLVk0gd291bGQgcmVseSBvbiB0aGUgYEtWTWAgY29uZmlndXJhdGlvbiBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMDoyOS4wNzkwMjkwMzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NDMyNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjI5LjE4NTQ2Nzk0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MzI2NzE4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIEtWTSBNZW1vcnkgQWNjb3VudGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgaXMgc2V0IHRvIGBLVk1gLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gTGV0J3Mgc2VlIGlmIHRoaXMgcGF0Y2ggaXMgYWN0dWFsbHkgd29ydGggZGVkaWNhdGluZyBmdXp6aW5nIHJlc291cmNlcyB0by4gSXQncyBhYm91dCBtZW1vcnkgYWNjb3VudGluZyB3aXRoaW4gS1ZNIGFsbG9jYXRpb25zIOKAkyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5LCBidXQgdXN1YWxseSB0cmFuc3BhcmVudCB1bmxlc3Mgd2UncmUgdHJpZ2dlcmluZyBhbiBvdXQtb2YtbWVtb3J5IChPT00pIGNvbmRpdGlvbi4gQnV0IHN5emthbGxlciAqZG9lcyogZm9jdXMgb24gbWVtb3J5IGxpbWl0cyBhbmQgYWNjb3VudGluZywgc28gdGhhdCdzIGEgcG9pbnQgaW4gaXRzIGZhdm9yLlxuXG5IbW0sIGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBvdXIgdGVzdCBlbnZpcm9ubWVudD8gV2UncmUgcnVubmluZyB0ZXN0cyBvbiB4ODZfNjQsIGFybTY0LCBhbmQgcG90ZW50aWFsbHkgcmlzY3YuIFdhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSByaXNjdjY0IHN1cHBvcnQsIHJpZ2h0PyBJZiB3ZSdyZSB0ZXN0aW5nIG9uIHJpc2N2NjQsIHRoaXMgcGF0Y2ggYmVjb21lcyBhIHZhbGlkIHRhcmdldC4gXG5cbkFoLCByaWdodCwgdGhlIHByb21wdCBzYXlzIHRvIHZlcmlmeSBleGVjdXRpb24uIE9rYXksIGlmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgSSBuZWVkIHRvIHVzZSBteSBjb2RlIHNlYXJjaCB0b29scyB0byBjb25maXJtIHRoYXQgdGhlIGNvZGUgKmNhbiogYmUgZXhlY3V0ZWQuIFRoYXQgc2V0dGxlcyBpdC4gVGhlIGFuc3dlciBpcyBcIldvcnRoRnV6emluZz10cnVlLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6MzMuODE4MTQyNDE5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODU4ODMzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfYWlhX2FwbGljX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jPTU1OT1pbnQga3ZtX3Jpc2N2X2FpYV9hcGxpY19oYXNfYXR0cihzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2FpYV9hcGxpYy5jLTU3My1cXG5hcmNoL3Jpc2N2L2t2bS9haWFfYXBsaWMuYzo1NzQ6aW50IGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9yaXNjdi9rdm0vYWlhX2FwbGljLmMtNTc1LXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2FpYV9kZXZpY2UuYz0yMjY9c3RhdGljIGludCBhaWFfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmMtMjUxLVxcdC8qIEluaXRpYWxpemUgQVBMSUMgKi9cXG5hcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmM6MjUyOlxcdHJldCA9IGt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdChrdm0pO1xcbmFyY2gvcmlzY3Yva3ZtL2FpYV9kZXZpY2UuYy0yNTMtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6MzMuOTc2NzM1MzQ1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MzM4Nzg5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKlJlYWNoaW5nIGZvciB0aGUgQUlBKipcblxuUmlnaHQsIGl0J3Mgc3RhcnRpbmcgdG8gY2xpY2suIEkgaGF2ZSBhIGh1bmNoIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGdldCBteSBoYW5kcyBvbiBhbmQgd29yayB3aXRoLiBUaGUgdGFyZ2V0IGhlcmUgaXMgY2xlYXI6IGxldCdzIGRpdmUgc3RyYWlnaHQgaW50byBga3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX2luaXRgLiBUaGF0J3Mgd2hlcmUgdGhlIG1hZ2ljLCBvciBhdCBsZWFzdCB0aGUgZ3JvdW5kd29yaywgZm9yIHRoZSBBSUEgYW5kIElNU0lDIHNldHVwIGlzIGxpa2VseSBoYXBwZW5pbmcgd2l0aGluIHRoZSBLVk0vUklTQy1WIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQUlBIGltcGxlbWVudGF0aW9uIHN0YXJ0cyB1cCwgYW5kIHRoaXMgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gVGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGFuZCBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDE4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6MzcuNjIwMTI1OTI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODkxMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmM9MjI2PXN0YXRpYyBpbnQgYWlhX2luaXQoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vYWlhX2RldmljZS5jLTI3OC1cXHRcXHQvKiBJbml0aWFsaXplIElNU0lDIGZvciB0aGlzIFZDUFUgKi9cXG5hcmNoL3Jpc2N2L2t2bS9haWFfZGV2aWNlLmM6Mjc5OlxcdFxcdHJldCA9IGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0KHZjcHUpO1xcbmFyY2gvcmlzY3Yva3ZtL2FpYV9kZXZpY2UuYy0yODAtXFx0XFx0aWYgKHJldClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2FpYV9pbXNpYy5jPTEwOTQ9c3RhdGljIHN0cnVjdCBrdm1faW9fZGV2aWNlX29wcyBpbXNpY19pb2RvZXZfb3BzID0ge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmMtMTA5OC1cXG5hcmNoL3Jpc2N2L2t2bS9haWFfaW1zaWMuYzoxMDk5OmludCBrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9yaXNjdi9rdm0vYWlhX2ltc2ljLmMtMTEwMC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjM3LjY5ODA0MDc2N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODI0MDM5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIGBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZGAsIHByZXNlbnRlZCBhcyB0aG91Z2ggaXQgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIGBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZGAqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCBga3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBrbm93IHRoaXMgaXMgZ29pbmcgdG8gYmUgYWJvdXQgYWxsb2NhdGluZyBhIHBhZ2UgZ2xvYmFsIGRpcmVjdG9yeSAoUEdEKSBmb3IgdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIEdpdmVuIG15IGJhY2tncm91bmQgaW4gdmlydHVhbCBtZW1vcnkgbWFuYWdlbWVudCBhbmQgUklTQy1WIGFyY2hpdGVjdHVyZSwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB3aGF0IGFyZSB0aGUgc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgaGVyZT8gSXMgdGhpcyBmb3IgdGhlIGd1ZXN0J3MgUEdELCBvciB0aGUgaG9zdCdzPyBKdWRnaW5nIGJ5IHRoZSBuYW1lLCBpdCdzIHRoZSBndWVzdCdzLCB3aGljaCBtYWtlcyB0aGUgbW9zdCBzZW5zZS5cblxuTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgY29tcGxleGl0aWVzLiBUaGlzIGZ1bmN0aW9uIHByb2JhYmx5IG5lZWRzIHRvIGFjY291bnQgZm9yIHRoZSBSSVNDLVYncyBzcGVjaWZpYyBwYWdlIHRhYmxlIHN0cnVjdHVyZSDigJMgd2hpY2ggbGV2ZWwgb2YgdGhlIHBhZ2UgdGFibGUgaGllcmFyY2h5IGFyZSB3ZSBkZWFsaW5nIHdpdGg/IERvZXMgaXQgYWxpZ24gd2l0aCBhIDQtbGV2ZWwgb3IgNS1sZXZlbCBpbXBsZW1lbnRhdGlvbj8gSXQgbmVlZHMgdG8gY29uc2lkZXIgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UgY29uc3RyYWludHMsIHRvbywgYW5kIGVuc3VyZSB0aGUgYWxsb2NhdGlvbiBpcyBhbGlnbmVkIHdpdGggdGhlIGhhcmR3YXJlJ3MgcmVxdWlyZW1lbnRzLiBHaXZlbiBLVk0ncyByb2xlLCB0aGUgYWxsb2NhdGVkIG1lbW9yeSBhbHNvIG5lZWRzIHRvIGJlIGFjY2Vzc2libGUgYm90aCB0byB0aGUgaG9zdCBrZXJuZWwgKGZvciBtYW5hZ2luZyBpdCkgYW5kIHRvIHRoZSBndWVzdCBWTSAod2hpY2ggdXNlcyBpdCBmb3IgYWRkcmVzcyB0cmFuc2xhdGlvbikuXG5cbkknbSBtZW50YWxseSBnb2luZyB0aHJvdWdoIHBvdGVudGlhbCBpc3N1ZXMgYXJvdW5kIGNhY2hlIGNvaGVyZW5jeS4gU2luY2UgYm90aCB0aGUgaG9zdCBhbmQgZ3Vlc3QgY2FuIHBvdGVudGlhbGx5IG1vZGlmeSB0aGlzIFBHRCwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgaGFyZHdhcmUgY2FjaGUgaXMgY29ycmVjdGx5IGZsdXNoZWQsIG9yIGludmFsaWRhdGlvbiBvcGVyYXRpb25zIGFyZSBpc3N1ZWQgY29ycmVjdGx5LiBBcmUgd2UgZGVhbGluZyB3aXRoIGFueSBtZW1vcnkgYmFycmllcnMgaGVyZSB0byBlbnN1cmUgcHJvcGVyIG9yZGVyaW5nIG9mIG1lbW9yeSBvcGVyYXRpb25zPyBMZXQncyBjaGVjayB0aGUgY29kZSBhbmQgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTE4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6NDIuNDgwNDQ4MjU2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkxMTI2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL21tdS5jPTUzNT1pbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNjYyLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjY2MzppbnQga3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2Qoc3RydWN0IGt2bSAqa3ZtKVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTY2NC17XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92bS5jPTMxPWludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdm0uYy0zNC1cXG5hcmNoL3Jpc2N2L2t2bS92bS5jOjM1OlxcdHIgPSBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChrdm0pO1xcbmFyY2gvcmlzY3Yva3ZtL3ZtLmMtMzYtXFx0aWYgKHIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjQyLjU4OTU2OTA1NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDkwNzY5MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0YWNrbGluZyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gKipcblxuUmlnaHQsIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGl0c2VsZiBpcyBhIHByZXR0eSBnb29kIGluZGljYXRvciBvZiB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC4gSXQncyBvYnZpb3VzbHkgdGllZCB0byBLVk0sIFJJU0MtViBhcmNoaXRlY3R1cmUsIHZDUFVzLCBhbmQgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0cyAoUE1VcykuIFRoZSBcInNuYXBzaG90XCIgcGFydCBzdWdnZXN0cyB3ZSdyZSBwcm9iYWJseSBjYXB0dXJpbmcgYSBwb2ludC1pbi10aW1lIHN0YXRlIG9mIHRoZSBQTVUgY291bnRlcnMsIGFuZCB0aGUgXCJzaG1lbVwiIGluZGljYXRlcyB3ZSdyZSBzdG9yaW5nIHRoaXMgc25hcHNob3QgaW4gc2hhcmVkIG1lbW9yeS4gR2l2ZW4gdGhhdCBzaGFyZWQgbWVtb3J5IGlzIHVzZWQgZm9yIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiwgdGhpcyBzdHJvbmdseSBzdWdnZXN0cyBhIG1lY2hhbmlzbSBmb3Igc29tZXRoaW5nIG91dHNpZGUgb2YgdGhlIGd1ZXN0IChsaWtlbHkgdGhlIGhvc3QvaHlwZXJ2aXNvcikgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZ3Vlc3QncyBQTVUgZGF0YS5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6XG5cbiogICAqKldoYXQncyB0aGUgY29udGV4dD8qKiBXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGNhbGxlZCBmcm9tPyBJcyBpdCBpbnZva2VkIGR1cmluZyBhIHNwZWNpZmljIFZNIGxpZmVjeWNsZSBldmVudCAobGlrZSBhIGd1ZXN0IHN1c3BlbmQsIG1pZ3JhdGlvbiwgb3Igc29tZSBzcGVjaWZpYyBtb25pdG9yaW5nIHJlcXVlc3QpPyBUaGlzIHdpbGwgZGljdGF0ZSBob3cgaXQncyBiZWluZyB1c2VkLlxuKiAgICoqV2hhdCBkYXRhIGlzIGJlaW5nIHNoYXJlZD8qKiBXaGF0IHNwZWNpZmljIFBNVSBjb3VudGVycyBhcmUgYmVpbmcgc25hcHNob3R0ZWQgYW5kIHNoYXJlZD8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZXZlbnQgY291bnRzLCB0aW1lLWJhc2VkIG1ldHJpY3MsIG9yIHBlcmhhcHMgZXZlbiBjb250cm9sIHJlZ2lzdGVyIHN0YXRlcz8gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgbGV2ZWwgb2Ygb2JzZXJ2YWJpbGl0eSB3ZSBoYXZlLlxuKiAgICoqV2hhdCdzIHRoZSBtZW1vcnkgbGF5b3V0PyoqIFdoYXQncyB0aGUgc3RydWN0dXJlIG9mIHRoZSBzaGFyZWQgbWVtb3J5IHJlZ2lvbj8gS25vd2luZyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBvZmZzZXRzIHdpbGwgYmUga2V5IGZvciBwcm9wZXIgZGF0YSBpbnRlcnByZXRhdGlvbiBhbmQgaW50ZXJhY3Rpb24gd2l0aCBpdC5cbiogICAqKldoYXQncyB0aGUgbG9ja2luZy9zeW5jaHJvbml6YXRpb24gc2NoZW1lPyoqIFNoYXJlZCBtZW1vcnkgaXMgaW5oZXJlbnRseSBzdXNjZXB0aWJsZSB0byByYWNlIGNvbmRpdGlvbnMuIEhvdyBkb2VzIHRoaXMgZnVuY3Rpb24gaGFuZGxlIGNvbmN1cnJlbmN5IGJldHdlZW4gdGhlIGd1ZXN0IGFuZCB0aGUgaHlwZXJ2aXNvcj8gQXJlIHRoZXJlIG11dGV4ZXMsIHNwaW5sb2Nrcywgb3Igb3RoZXIgbWVjaGFuaXNtcyBpbnZvbHZlZCB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHk/IFRoaXMgaXMgYSBwcmltYXJ5IGNvbmNlcm4uXG4qICAgKipXaGF0J3MgdGhlIGVycm9yIGhhbmRsaW5nPyoqIEhvdyBkb2VzIHRoZSBmdW5jdGlvbiBoYW5kbGUgZmFpbHVyZXM/IERvZXMgaXQgcmV0dXJuIGVycm9yIGNvZGVzLCBsb2cgbWVzc2FnZXMsIG9yIHRyaWdnZXIgb3RoZXIgZXJyb3ItaGFuZGxpbmcgcHJvY2VkdXJlcz8gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHN5c3RlbSBzdGFiaWxpdHkuXG4qICAgKipIb3cncyBpdCBhcmNoaXRlY3RlZD8qKiBJcyB0aGlzIGEgZGlyZWN0IGludGVyYWN0aW9uLCBvciBkb2VzIGl0IHV0aWxpemUgYW55IGhlbHBlciBmdW5jdGlvbnMgb3IgYWJzdHJhY3Rpb24gbGF5ZXJzIHdpdGhpbiB0aGUgS1ZNIGluZnJhc3RydWN0dXJlP1xuXG5Ob3csIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZS4gVGltZSB0byBmaXJlIHVwIHRoZSBkZWJ1Z2dlciBvciB0aGUgc3RhdGljIGFuYWx5c2lzIHRvb2xzLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZ2V0IHRvIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCBsb29rIGF0IHRoZSBzdHJ1Y3R1cmVzLCBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgdGhlbiB0cnkgdG8gc2VlIHRoZSBvdmVyYWxsIGZsb3cuIEkgYWxzbyBleHBlY3QgdG8gc2VlIGEgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBvbiB0aGUgaHlwZXJ2aXNvciBzaWRlLCBsaWtlbHkgY2FsbGVkIGR1cmluZyB0aGUgc25hcHNob3QgcmV0cmlldmFsLiBUaGlzIHdpbGwgbmVlZCBhIGNhcmVmdWwgbG9vayBmb3IgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMDUsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMDo0Ny42ODAzNDAyOTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODczMDc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jPTQxNj1zdGF0aWMgdm9pZCBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjQtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYzo0MjU6aW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdyxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyNi1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBsb25nIHNhZGRyX2hpZ2gsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz0xNj1zdGF0aWMgaW50IGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTczLVxcdGNhc2UgU0JJX0VYVF9QTVVfU05BUFNIT1RfU0VUX1NITUVNOlxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjc0OlxcdFxcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0odmNwdSwgY3AtXFx1MDAzZWEwLCBjcC1cXHUwMDNlYTEsIGNwLVxcdTAwM2VhMiwgcmV0ZGF0YSk7XFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjEwOjQ3Ljc4OTA3NjkwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYxMzU5MzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIFNCSSBFeHRlbnNpb24gSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoZWFkIGFyb3VuZCBga3ZtX3NiaV9leHRfZndmdF9pbml0YC4gVGhpcyBmdW5jdGlvbiBuYW1lIGltbWVkaWF0ZWx5IGNsdWVzIG1lIGluIOKAkyB3ZSdyZSBkZWFsaW5nIHdpdGggS1ZNIChLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lKSBhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gU0JJIGV4dGVuc2lvbnMsIGxpa2VseSBjb25jZXJuaW5nIGZpcm13YXJlLCBmbG9hdGluZy1wb2ludCBzdGF0ZSBtYW5hZ2VtZW50LCBhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIFRoYXQgXCJmd2Z0XCIgcGFydCBpcyBpbnRyaWd1aW5nOyBJIHN1c3BlY3QgaXQgcmVsYXRlcyB0byB0aGUgRldGVCBpbnN0cnVjdGlvbiBleHRlbnNpb24gKGxpa2VseSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlIG9yIHByb2Nlc3NvciB2ZW5kb3IpIGFuZCBob3cgaXQncyBoYW5kbGVkIGR1cmluZyBLVk0gc2V0dXAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBzcGVjaWZpYyBhc3BlY3Qgb2YgdGhlIFNCSSBleHRlbnNpb24gaXMgYmVpbmcgaW5pdGlhbGl6ZWQgaGVyZSBhbmQgd2h5IGl0IHdhcnJhbnRzIGEgZGVkaWNhdGVkIGZ1bmN0aW9uLiBXaGF0J3MgdGhlIHJlbGF0aW9uc2hpcCBvZiBGV0ZUIHRvIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZT8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBzZWN1cml0eT8gTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyByZXZvbHZlIGFyb3VuZCB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgd2hhdCdzIGJlaW5nIGluaXRpYWxpemVkLCB0aGUgcmVsZXZhbnQgZGF0YSBzdHJ1Y3R1cmVzLCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgYW5kIHdoYXQgZXJyb3JzLCBpZiBhbnksIGNhbiBvY2N1ciBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEknbGwgbmVlZCB0byBleHBsb3JlIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgS1ZNIGluZnJhc3RydWN0dXJlLiBJJ2xsIHN0YXJ0IHdpdGggdGhlIGRlZmluaXRpb24sIHRoZW4gbG9vayBhdCB0aGUgY2FsbGVyIGFuZCBjYWxsZWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjQzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6NTEuMjUwNDM5NTkyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzc3MDk5OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3NiaV9leHRfZndmdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9MzQ4PXN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy0zNzEtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jOjM3MjpzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTM3My17XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9NTY4PWNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9md2Z0ID0ge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTU3MS1cXHQuaGFuZGxlciA9IGt2bV9zYmlfZXh0X2Z3ZnRfaGFuZGxlcixcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM6NTcyOlxcdC5pbml0ID0ga3ZtX3NiaV9leHRfZndmdF9pbml0LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzMtXFx0LmRlaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZGVpbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMDo1MS4zODgxNTQ5MjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NzkxNTEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGZ1bmN0aW9uOlxuXG4qKkRpdmluZyBpbnRvIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCBga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHRgLiBUaGF0IG5hbWUgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgYWxsb2NhdGluZyB0aGUgY29udGV4dCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB2ZWN0b3Igb3BlcmF0aW9ucyB3aXRoaW4gYSBSSVNDLVYgS1ZNIHZpcnR1YWwgQ1BVLiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBpZWNlIGZvciBzdXBwb3J0aW5nIHZlY3RvciBleHRlbnNpb25zIGluIHRoZSBndWVzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0J3Mgc2V0dGluZyB1cCB0aGUgbWVtb3J5IGFuZCBkYXRhIHN0cnVjdHVyZXMgcmVxdWlyZWQgdG8gbWFuYWdlIHRob3NlIHZlY3RvciByZWdpc3RlcnMgYW5kIHN0YXRlLiBJJ20gZXhwZWN0aW5nIHRoaXMgaW52b2x2ZXMgYWxsb2NhdGluZyBtZW1vcnksIGluaXRpYWxpemluZyByZWdpc3RlcnMsIHNldHRpbmcgdXAgc2hhZG93IHJlZ2lzdGVycyAoaWYgYXBwbGljYWJsZSBmb3IgZW11bGF0aW9uIG9yIG9wdGltaXphdGlvbiksIGFuZCBsaWtlbHkgaW50ZXJmYWNpbmcgd2l0aCB0aGUgaGFyZHdhcmUgb3IgdGhlIGVtdWxhdGlvbiBsYXllcidzIHZlY3RvciB1bml0LiBJJ20gY3VyaW91cyB0byBzZWUgaWYgaXQgaGFuZGxlcyBhbnkgc3BlY2lmaWMgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBmb3IgdGhlIHZlY3RvciBjb250ZXh0LCBvciBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgbWVtb3J5IG1hbmFnZW1lbnQgaW52b2x2ZWQuIElzIGl0IHVzaW5nIGEgY3VzdG9tIGFsbG9jYXRvciwgb3IgcmVseWluZyBvbiBzdGFuZGFyZCBrZXJuZWwgYWxsb2NhdG9ycz8gTGV0J3Mgc2VlIGlmIGl0IGhhbmRsZXMgdGhlIHZhcmlvdXMgdmVjdG9yIGxlbmd0aCAoVkxFTikgY29uZmlndXJhdGlvbnMgYW5kIHRoZSB2ZWN0b3IgcmVnaXN0ZXIgZ3JvdXBzIGNvcnJlY3RseS4gVGhlIGFsbG9jYXRpb24gc3RyYXRlZ3kgc2hvdWxkIGFsc28gYmUgY29uc2lkZXJlZC4gSXMgaXQgcHJlLWFsbG9jYXRpbmcgdGhlIHZlY3RvciBjb250ZXh0IGZvciBhIGNlcnRhaW4gYW1vdW50IG9mIHZpcnR1YWwgQ1BVcywgb3IgaXMgaXQgYWxsb2NhdGluZyB0aGVtIG9uIGRlbWFuZD8gSSBhbnRpY2lwYXRlIHRoZXJlIG1pZ2h0IGJlIHNvbWUgaW50ZXJwbGF5IHdpdGggdGhlIEtWTSBNTVUgc2V0dXAsIHRvbywgaWYgdGhlIHZlY3RvciBjb250ZXh0IGludm9sdmVzIGFkZHJlc3MgdHJhbnNsYXRpb24gaW4gc29tZSB3YXkuIFRoZSBlcnJvciBoYW5kbGluZyBpcyBhbHNvIHNvbWV0aGluZyB0aGF0IGNhdGNoZXMgbXkgZXllLiBJcyB0aGVyZSByb2J1c3QgZXJyb3IgaGFuZGxpbmcgdG8gZGVhbCB3aXRoIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGVycm9yIGNvZGVzIHRoYXQgS1ZNIHJlcG9ydHMgdG8gc2lnbmFsIGlzc3VlcyB3aXRoIHRoaXMgdmVjdG9yIGNvbnRleHQgYWxsb2NhdGlvbj8gQW5kIGZpbmFsbHksIEkgd291bGQgbGlrZSB0byBxdWlja2x5IGFzc2VzcyBpZiBpdCBpbnRlZ3JhdGVzIHdpdGggYW55IHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMsIGxpa2UgdGhlIEtWTSBoeXBlcmNhbGxzLiBJcyB0aGVyZSBhbnl0aGluZyBzcGVjaWFsIGhlcmU/IFRoaXMgc2hvdWxkIGJlIGludGVyZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTI3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTA6NTUuOTY2MDczMDEyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY4ODg3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz0xMjk9aW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNTYtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjE1NzpcXHRyYyA9IGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0KHZjcHUpO1xcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0xNTgtXFx0aWYgKHJjKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYz03MT12b2lkIGt2bV9yaXNjdl92Y3B1X2hvc3RfdmVjdG9yX3Jlc3RvcmUoc3RydWN0IGt2bV9jcHVfY29udGV4dCAqY250eClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfdmVjdG9yLmMtNzYtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3IuYzo3NzppbnQga3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfdmVjdG9yLmMtNzgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMDo1Ni4wNzI5NjY4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NTYzNzM2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBSSVNDLVYgSW5pdGlhbGl6YXRpb24gUGF0aHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBLVk0gZnVuY3Rpb25zLCBhbGwgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIFJJU0MtViBpbXBsZW1lbnRhdGlvbiwgYW5kIHNwZWNpZmljYWxseSwgdW5kZXIgdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24uIFRoZSBrZXkgc3ltYm9scyBJJ20gZm9jdXNpbmcgb24gYXJlOiBga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCwgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAuXG5cbkknbSBtZW50YWxseSBtYXBwaW5nIHRoZSBjYWxsIGNoYWlucyBub3cuIFdhaXQgYSBtaW51dGUuLi4gYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCBpcyBjYWxsZWQgZnJvbSBga3ZtX2FyY2hfaW5pdF92bWAsIHdoaWNoIGlzIGEgZnVuY3Rpb24gY3JpdGljYWwgdG8gdGhlIFZNIGNyZWF0aW9uIHByb2Nlc3MuIFRoYXQncyBhIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcmVhLiBTaW1pbGFybHksIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAgb3JpZ2luYXRlcyBmcm9tIGBrdm1fYXJjaF92Y3B1X2NyZWF0ZWAsIHdoaWNoIGFsc28gZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSB2Q1BVIGlzIGNyZWF0ZWQuIFRoaXMgaGlnaGxpZ2h0cyB0aGUgaW1wb3J0YW5jZSBvZiB0aG9zZSB0d28gZnVuY3Rpb25zLlxuXG5ga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCBhbmQgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCBhcmUgaW5pdGlhbGl6ZWQgdmlhIGBhaWFfaW5pdGAuIE9rYXksIG1ha2VzIHNlbnNlLCB0aGF0J3MgdGhlaXIgbmF0dXJhbCBncm91cGluZy4gQW5kLCB3aGF0IGFib3V0IGBrdm1fc2JpX2V4dF9md2Z0X2luaXRgPyBJIHNlZW0gdG8gcmVtZW1iZXIgdGhhdCBiZWluZyBjYWxsZWQgZnJvbSBga3ZtX3ZjcHVfc2JpX2V4dF9pbml0YCwgYnV0IGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0LiBBbHdheXMgZ29vZCB0byBiZSBwcmVjaXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjMwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDExOjExOjAxLjUyOTM0MzYyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg3NDA0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3NiaV9leHRfZndmdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9MzQ4PXN0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy0zNzEtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jOjM3MjpzdGF0aWMgaW50IGt2bV9zYmlfZXh0X2Z3ZnRfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTM3My17XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM9NTY4PWNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9md2Z0ID0ge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jLTU3MS1cXHQuaGFuZGxlciA9IGt2bV9zYmlfZXh0X2Z3ZnRfaGFuZGxlcixcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmM6NTcyOlxcdC5pbml0ID0ga3ZtX3NiaV9leHRfZndmdF9pbml0LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYy01NzMtXFx0LmRlaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZGVpbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMTowMS42MTgwOTE0NDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzMzY1NzAxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjoga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSoqXG5cbk9rYXksIHNvIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBpcyB0aGUgZnVuY3Rpb24gd2UncmUgaW50ZXJlc3RlZCBpbiB0b2RheS4gSXQncyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBga3ZtX3NiaV9leHRfcG11X2hhbmRsZXJgIHdoZW4gdGhlIGBTQklfRVhUX1BNVV9TTkFQU0hPVF9TRVRfU0hNRU1gIFNCSSBleHRlbnNpb24gaXMgaW52b2tlZC4gVGhhdCdzIGEgY2xlYXIgZW50cnkgcG9pbnQsIHdoaWNoIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBzb21lIGZ1enppbmcgd29yay4gQSBuaWNlLCBjbGVhbiwgd2VsbC1kZWZpbmVkIHRhcmdldCBsaWtlIHRoaXMgaXMgYWx3YXlzIGFwcGVhbGluZy5cblxuTm93LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBsZXQncyBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJIG5lZWQgdG8gc2VlIGlmIHRoaXMgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnLCBvciBpZiB0aGVyZSBhcmUgb3RoZXIsIHBvc3NpYmx5IHJlbGF0ZWQsIGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBgS1ZNYCBpcyB0aGUgb2J2aW91cyBvbmUsIG9mIGNvdXJzZS4gQnV0IGFyZSB0aGVyZSBhbnkgb3RoZXIgYEtWTWAtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIHBlcmhhcHMgZmxhZ3Mgb3IgYnVpbGQgb3B0aW9ucywgd2l0aGluIHRoZSBSSVNDLVYgY29udGV4dCB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGZ1bmN0aW9uJ3MgYmVoYXZpb3Igb3Igc2V0dXA/IEl0J3MgYWx3YXlzIGJlc3QgdG8gaGF2ZSB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSByZWFsbHkgZGlnZ2luZyBpbnRvIHRoZSBjb2RlLiBHb3R0YSBtYWtlIHN1cmUgbm90aGluZyBpcyBvdmVybG9va2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjkwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTE6MDUuNjUxNzUxNDQ4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjExNjUyNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTE6MDUuNzcyOTIxNTc2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODQ0OTk2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUXVpY2sgRGlhZ25vc3RpYyAtIFZpcnR1YWxpemF0aW9uIFx1MDAyNiBLVk0gb24gUklTQy1WKipcblxuQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBzb21ldGhpbmcgaXNuJ3QgcXVpdGUgY2xpY2tpbmcuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBJJ20gbWlzc2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWw6IElzICp2aXJ0dWFsaXphdGlvbiogYWN0dWFsbHkgZW5hYmxlZD8gU2VlbXMgb2J2aW91cywgYnV0IEkgaGF2ZSB0byBzdGFydCB0aGVyZS4gQW5kIHNpbmNlIHdlJ3JlIHRhbGtpbmcgYWJvdXQgUklTQy1WLCB0aGUgYXNzdW1wdGlvbiBpcyAqS1ZNKiBpcyB0aGUgZHJpdmluZyBmb3JjZSBmb3IgaGFyZHdhcmUtYXNzaXN0ZWQgdmlydHVhbGl6YXRpb24uIEl0IHdvdWxkIGJlIGJpemFycmUgaWYgd2Ugd2VyZSB1c2luZyBhbnl0aGluZyBlbHNlIGF0IHRoaXMgcG9pbnQuXG5cbkxldCdzIHF1aWNrbHkgZHJpbGwgZG93biBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGZ1bmN0aW9uLiBUaGF04oCZcyBwcm9iYWJseSB3aGVyZSBJJ2xsIGZpbmQgdGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTc0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTE6MTE6MDkuNTU3NDI1NDk2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzEzOTU2NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYz00MTY9c3RhdGljIHZvaWQga3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMtNDI0LVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM6NDI1OmludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjYtXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyBzYWRkcl9oaWdoLCB1bnNpZ25lZCBsb25nIGZsYWdzLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM9MTY9c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03My1cXHRjYXNlIFNCSV9FWFRfUE1VX1NOQVBTSE9UX1NFVF9TSE1FTTpcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYzo3NDpcXHRcXHRyZXQgPSBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHZjcHUsIGNwLVxcdTAwM2VhMCwgY3AtXFx1MDAzZWExLCBjcC1cXHUwMDNlYTIsIHJldGRhdGEpO1xcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTc1LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMTowOS42ODg4MjcwMzNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI3NDQ4MzQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gUklTQy1WIE1lbW9yeSBBY2NvdW50aW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYEdGUF9LRVJORUxfQUNDT1VOVGAgb3IgYF9fR0ZQX0FDQ09VTlRgIHRvIGEgYnVuY2ggb2YgYWxsb2NhdGlvbnMuIFRoYXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBpbXBvcnRhbnQgb25lIGFjdHVhbGx5LiBFbmFibGluZyBtZW1vcnkgYWNjb3VudGluZyBmb3IgdGhlc2UgYWxsb2NhdGlvbnMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBvcGVucyB0aGVtIHVwIGZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcsIHNwZWNpZmljYWxseSB3aXRoIHNvbWV0aGluZyBsaWtlIHN5emthbGxlci4gV2UgY2FuIHVzZSB0aGF0IHRvb2wgdG8gdmVyaWZ5IHRoYXQgbWVtb3J5IGxpbWl0cyBhcmUgYmVpbmcgZW5mb3JjZWQgY29ycmVjdGx5IGFuZCB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgc25lYWt5IG1lbW9yeSBsZWFrcyBsdXJraW5nIGluIHRoZXNlIGFsbG9jYXRpb24gcGF0aHMuIFRoYXTigJlzIHRoZSByZWFsIHZhbHVlLlxuXG5Ob3csIGxldCdzIHNlZSwgdGhlIHBhdGNoIHRvdWNoZXMgdGhlc2UgZnVuY3Rpb25zOiBga3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0YCwgYGt2bV9yaXNjdl92Y3B1X2FpYV9pbXNpY19pbml0YCwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLCBga3ZtX3NiaV9leHRfZndmdF9pbml0YCwgYW5kIGBrdm1fcmlzY3ZfdmNwdV9hbGxvY192ZWN0b3JfY29udGV4dGAuIEhtbSwgYGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkYCBhbmQgYGt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0YC4uLiB0aG9zZSBhcmUgY2FsbGVkIGR1cmluZyBWTS9WQ1BVIGNyZWF0aW9uLCByaWdodD8gVGhleSBtaWdodCBiZSBzb21ld2hhdCBob3QgcGF0aHMsIGJ1dCB0aGF0IFZNL1ZDUFUgY3JlYXRpb24gcHJvY2VzcyBpcyBhY3R1YWxseSBhIGdyZWF0IHRhcmdldCBmb3IgZnV6emluZyB3aGVuIG1lbW9yeSBhY2NvdW50aW5nIGlzIGVuYWJsZWQuIEl0J3MgYSBuYXR1cmFsIHBvaW50IHRvIHBva2UgYXQgdGhlc2UgYWxsb2NhdGlvbnMuIEl0J3MgaW1wb3J0YW50IHRvIGluY2x1ZGUgdGhlbS5cblxuU28sIHRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFib3V0IG1lbW9yeSBhY2NvdW50aW5nIGFuZCB0aGF0IHNob3VsZCBiZSBlbmFibGVkLiBUaGUgY29uZmlnIGlzIG9idmlvdXNseSBgS1ZNYC4gSXTigJlzIGFsbCBhYm91dCBlbmhhbmNpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIFRpbWUgdG8gbG9nIHRoYXQgdG8gdGhlIHN5c3RlbS4gTGV0J3Mgc2V0IHRob3NlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODE4LCJPdXRwdXRUb2tlbnMiOjE5MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMToxMToxNS45NjMzMTM5NzFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcyMDE5MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9haWFfYXBsaWNfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfYWlhX2ltc2ljX2luaXRcIixcbiAgICBcImt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtXCIsXG4gICAgXCJrdm1fc2JpX2V4dF9md2Z0X2luaXRcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZW5hYmxlcyBtZW1vcnkgYWNjb3VudGluZyAoR0ZQX0tFUk5FTF9BQ0NPVU5UIC8gX19HRlBfQUNDT1VOVCkgZm9yIHNldmVyYWwgS1ZNIGFsbG9jYXRpb25zIG9uIFJJU0MtVi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IGxpbWl0cyBhcmUgcHJvcGVybHkgZW5mb3JjZWQgYW5kIHRvIGRldGVjdCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGluIHRoZXNlIGFsbG9jYXRpb24gcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2FpYV9hcGxpY19pbml0XCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9haWFfaW1zaWNfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2RcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIixcbiAgICBcImt2bV9zYmlfZXh0X2Z3ZnRfaW5pdFwiLFxuICAgIFwia3ZtX3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBlbmFibGVzIG1lbW9yeSBhY2NvdW50aW5nIChHRlBfS0VSTkVMX0FDQ09VTlQgLyBfX0dGUF9BQ0NPVU5UKSBmb3Igc2V2ZXJhbCBLVk0gYWxsb2NhdGlvbnMgb24gUklTQy1WLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgbGltaXRzIGFyZSBwcm9wZXJseSBlbmZvcmNlZCBhbmQgdG8gZGV0ZWN0IHBvdGVudGlhbCBtZW1vcnkgbGVha3MgaW4gdGhlc2UgYWxsb2NhdGlvbiBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvzswb[1] Phase: Succeeded StartedAt: 2026-07-16 11:11:27 +0000 UTC FinishedAt: 2026-07-16 11:11:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-16 11:11:27 +0000 UTC FinishedAt: 2026-07-16 11:11:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2] Phase: Succeeded StartedAt: 2026-07-16 11:11:27 +0000 UTC FinishedAt: 2026-07-16 12:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-16 11:11:27 +0000 UTC FinishedAt: 2026-07-16 12:41:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-16 11:11:27 +0000 UTC FinishedAt: 2026-07-16 11:11:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-16 11:11:27 +0000 UTC FinishedAt: 2026-07-16 11:11:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvzswb/series-workflowvzswb-convert-artifact-4108948210/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-16 11:11:47 +0000 UTC FinishedAt: 2026-07-16 11:53:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-16 11:11:47 +0000 UTC FinishedAt: 2026-07-16 11:53:50 +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:*a6f36526-37e1-45a9-9d1c-c3fee59f8153,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-workflowvzswb/series-workflowvzswb-convert-artifact-4108948210/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": "4a71c829-bfa1-41bd-a36b-8aeb19706033", "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-workflowvzswb/series-workflowvzswb-build-action-2212174448/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-16 11:11:47 +0000 UTC FinishedAt: 2026-07-16 11:53: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:*a6f36526-37e1-45a9-9d1c-c3fee59f8153,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-workflowvzswb/series-workflowvzswb-convert-artifact-4108948210/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": "4a71c829-bfa1-41bd-a36b-8aeb19706033", "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-workflowvzswb/series-workflowvzswb-build-action-2212174448/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-16 11:53:50 +0000 UTC FinishedAt: 2026-07-16 11:53:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-16 11:53:50 +0000 UTC FinishedAt: 2026-07-16 11:53:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-16 11:53:50 +0000 UTC FinishedAt: 2026-07-16 11:54:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-16 11:53:50 +0000 UTC FinishedAt: 2026-07-16 11:53:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvzswb/series-workflowvzswb-convert-artifact-1015746317/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-16 11:54:00 +0000 UTC FinishedAt: 2026-07-16 11:56:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-16 11:54:00 +0000 UTC FinishedAt: 2026-07-16 11:56:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4a71c829-bfa1-41bd-a36b-8aeb19706033,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-workflowvzswb/series-workflowvzswb-build-action-2212174448/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-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-16 11:56:09 +0000 UTC FinishedAt: 2026-07-16 11:56:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-16 11:56:09 +0000 UTC FinishedAt: 2026-07-16 11:56:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-16 11:56:09 +0000 UTC FinishedAt: 2026-07-16 12:38:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-16 11:56:09 +0000 UTC FinishedAt: 2026-07-16 12:38:09 +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:*a6f36526-37e1-45a9-9d1c-c3fee59f8153,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-workflowvzswb/series-workflowvzswb-convert-artifact-1015746317/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": "9e04c2ce-04e8-4c6b-9da8-6e36e6ce883b", "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-workflowvzswb/series-workflowvzswb-build-action-3468401897/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-16 11:56:09 +0000 UTC FinishedAt: 2026-07-16 12:37:59 +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:*a6f36526-37e1-45a9-9d1c-c3fee59f8153,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-workflowvzswb/series-workflowvzswb-convert-artifact-1015746317/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": "9e04c2ce-04e8-4c6b-9da8-6e36e6ce883b", "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-workflowvzswb/series-workflowvzswb-build-action-3468401897/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-16 12:38:09 +0000 UTC FinishedAt: 2026-07-16 12:38:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-16 12:38:09 +0000 UTC FinishedAt: 2026-07-16 12:38:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-16 12:38:09 +0000 UTC FinishedAt: 2026-07-16 12:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-16 12:38:09 +0000 UTC FinishedAt: 2026-07-16 12:40:07 +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:*9e04c2ce-04e8-4c6b-9da8-6e36e6ce883b,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-workflowvzswb/series-workflowvzswb-build-action-3468401897/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-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-16 12:40:16 +0000 UTC FinishedAt: 2026-07-16 12:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-16 12:40:16 +0000 UTC FinishedAt: 2026-07-16 12:41:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"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:*4a71c829-bfa1-41bd-a36b-8aeb19706033,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9e04c2ce-04e8-4c6b-9da8-6e36e6ce883b,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-workflowvzswb/series-workflowvzswb-build-action-2212174448/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-workflowvzswb/series-workflowvzswb-build-action-3468401897/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-16 12:40:16 +0000 UTC FinishedAt: 2026-07-16 12:40:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-16 12:40:16 +0000 UTC FinishedAt: 2026-07-16 12:40:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"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-workflowvzswb/series-workflowvzswb-convert-artifact-1584821490/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-16 12:40:16 +0000 UTC FinishedAt: 2026-07-16 12:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-16 12:40:16 +0000 UTC FinishedAt: 2026-07-16 12:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-16 12:40:16 +0000 UTC FinishedAt: 2026-07-16 12:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-16 12:40:26 +0000 UTC FinishedAt: 2026-07-16 12:41:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzswb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_aia_aplic_init","kvm_riscv_vcpu_aia_imsic_init","kvm_riscv_mmu_alloc_pgd","kvm_riscv_vcpu_pmu_snapshot_set_shmem","kvm_sbi_ext_fwft_init","kvm_riscv_vcpu_alloc_vector_context"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c01779ca-c846-4792-a659-7f45d1a05923","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-16 12:40:26 +0000 UTC FinishedAt: 2026-07-16 12:41:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4a71c829-bfa1-41bd-a36b-8aeb19706033,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9e04c2ce-04e8-4c6b-9da8-6e36e6ce883b,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-workflowvzswb/series-workflowvzswb-build-action-2212174448/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-workflowvzswb/series-workflowvzswb-build-action-3468401897/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-workflowvzswb/series-workflowvzswb-convert-artifact-1584821490/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,}