Name: series-workflowjfl7q Phase: Succeeded StartedAt: 2026-06-26 22:46:56 +0000 UTC FinishedAt: 2026-06-27 00:42:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[0] Phase: Succeeded StartedAt: 2026-06-26 22:46:56 +0000 UTC FinishedAt: 2026-06-26 23:01:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 22:46:56 +0000 UTC FinishedAt: 2026-06-26 23:01:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD", "AMD_IOMMU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD", "AMD_IOMMU" ], "series_id": "092e598f-3a43-4fcb-8e4c-41e284c494d2" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "avic_pi_update_irte", "avic_update_iommu_vcpu_affinity", "amd_iommu_update_ga", "amd_iommu_activate_guest_mode", "avic_add_vcpu_to_gappi_wakeup_list", "avic_remove_vcpu_from_gappi_wakeup_list", "avic_gappi_wakeup_handler", "__amd_iommu_update_ga" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OywKICAgICYjMzQ7QU1EX0lPTU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXZpY19waV91cGRhdGVfaXJ0ZSYjMzQ7LAogICAgJiMzNDthdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5JiMzNDssCiAgICAmIzM0O2FtZF9pb21tdV91cGRhdGVfZ2EmIzM0OywKICAgICYjMzQ7YW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUmIzM0OywKICAgICYjMzQ7YXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdCYjMzQ7LAogICAgJiMzNDthdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3QmIzM0OywKICAgICYjMzQ7YXZpY19nYXBwaV93YWtldXBfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtfX2FtZF9pb21tdV91cGRhdGVfZ2EmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIGludHJvZHVjZXMgR0FQUEkgKEd1ZXN0IEFQSUMgUG9zdGVkIEludGVycnVwdHMpIHN1cHBvcnQgZm9yIEFNRCBJT01NVSBhbmQgS1ZNIFNWTSBBVklDLiBJdCBtb2RpZmllcyBjb3JlIGludGVycnVwdCByZW1hcHBpbmcgYW5kIHZDUFUgYWZmaW5pdHkgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIG5lc3RlZCBLVk0gb24gQU1EKS4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBuZXcgd2FrZXVwIGxpc3RzIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgZG8gbm90IGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIG9yIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzA3Njg5OTZlYWFjOTY2NGMxOTE0YTQ4NWE1ZTIyODU5YTk2ZWI1YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDIyOjU5OjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaFxuaW5kZXggMzdiOTRmNDg0ZWYzMzguLjQwYTIyMDZhMzNjMDhkIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vaXJxX3JlbWFwcGluZy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmhcbkBAIC0zNSw4ICYjNDM7MzUsOCBAQCBzdHJ1Y3QgYW1kX2lvbW11X3BpX2RhdGEge1xuIFx0dTY0IHZhcGljX2FkZHI7XHRcdC8qIFBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIHZDUFUmIzM5O3MgdkFQSUMuICovXG4gXHR1MzIgZ2FfdGFnO1xuIFx0dTMyIHZlY3RvcjtcdFx0LyogR3Vlc3QgdmVjdG9yIG9mIHRoZSBpbnRlcnJ1cHQgKi9cbi1cdGludCBjcHU7XG4tXHRib29sIGdhX2xvZ19pbnRyO1xuJiM0MztcdGludCBhcGljaWQ7XG4mIzQzO1x0aW50IGZsYWdzO1xuIFx0Ym9vbCBpc19ndWVzdF9tb2RlO1xuIFx0dm9pZCAqaXJfZGF0YTtcbiB9O1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jIGIvYXJjaC94ODYva3ZtL3N2bS9hdmljLmNcbmluZGV4IGNkZDVhNmRjNjQ2ZjExLi5kMjM4ZjY1YTgxNzJiYyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuY1xuQEAgLTYzLDYgJiM0Mzs2Myw5IEBAXG4gXHRnYV90YWc7XHRcdFx0XHRcdFx0XHRcdFxcXG4gfSlcbiBcbiYjNDM7c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBsaXN0X2hlYWQsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpO1xuJiM0MztzdGF0aWMgREVGSU5FX1BFUl9DUFUocmF3X3NwaW5sb2NrX3QsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jayk7XG4mIzQzO1xuIHN0YXRpY19hc3NlcnQoX19BVklDX0dBVEFHKEFWSUNfVk1fSURfTUFTSywgQVZJQ19WQ1BVX0lEWF9NQVNLKSA9PSAtMXUpO1xuIFxuICNkZWZpbmUgQVZJQ19BVVRPX01PREUgLTFcbkBAIC04NzQsNiAmIzQzOzg3Nyw5IEBAIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KTtcbiBcdHJhd19zcGluX2xvY2tfaW5pdChcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdF9sb2NrKTtcbiBcbiYjNDM7XHRJTklUX0xJU1RfSEVBRChcdTAwMjZzdm0tXHUwMDNlZ2FwcGlfdmNwdV93YWtldXBfbGlzdCk7XG4mIzQzO1x0c3ZtLVx1MDAzZWdhcHBpX2NwdSA9IC0xO1xuJiM0MztcbiBcdGlmICghZW5hYmxlX2FwaWN2IHx8ICFpcnFjaGlwX2luX2tlcm5lbCh2Y3B1LVx1MDAzZWt2bSkpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTg4Niw2ICYjNDM7ODkyLDQ0IEBAIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtLCBpbnQgY3B1KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGxpc3RfaGVhZCAqd2FrZXVwX2xpc3Q7XG4mIzQzO1x0cmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrO1xuJiM0MztcbiYjNDM7XHRpZiAoV0FSTl9PTihjcHUgXHUwMDNjIDApKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHR3YWtldXBfbGlzdCA9IFx1MDAyNnBlcl9jcHUoZ2FwcGlfdmNwdV93YWtldXBfbGlzdCwgY3B1KTtcbiYjNDM7XHRzcGlubG9jayA9IFx1MDAyNnBlcl9jcHUoZ2FwcGlfdmNwdV93YWtldXBfbGlzdF9sb2NrLCBjcHUpO1xuJiM0MztcdHJhd19zcGluX2xvY2soc3BpbmxvY2spO1xuJiM0MztcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KSlcbiYjNDM7XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2c3ZtLVx1MDAzZWdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIHdha2V1cF9saXN0KTtcbiYjNDM7XHRyYXdfc3Bpbl91bmxvY2soc3BpbmxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3RydWN0IHZjcHVfc3ZtICpzdm0sIGludCBjcHUpXG4mIzQzO3tcbiYjNDM7XHRyYXdfc3BpbmxvY2tfdCAqc3BpbmxvY2s7XG4mIzQzO1xuJiM0MztcdGlmIChXQVJOX09OKGNwdSBcdTAwM2MgMCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdHNwaW5sb2NrID0gXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7XG4mIzQzO1x0cmF3X3NwaW5fbG9jayhzcGlubG9jayk7XG4mIzQzO1x0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KSlcbiYjNDM7XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2c3ZtLVx1MDAzZWdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpO1xuJiM0MztcdHJhd19zcGluX3VubG9jayhzcGlubG9jayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgYXZpY19kZXN0cm95X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4mIzQzO3tcbiYjNDM7XHRpZiAoc3ZtLVx1MDAzZWdhcHBpX2NwdSAhPSAtMSBcdTAwMjZcdTAwMjYgYW1kX2lvbW11X2dhcHBpKSB7XG4mIzQzO1x0XHRhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbiYjNDM7XHRcdHN2bS1cdTAwM2VnYXBwaV9jcHUgPSAtMTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBhdmljX2FwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0YXZpY19oYW5kbGVfZGZyX3VwZGF0ZSh2Y3B1KTtcbkBAIC04OTYsMTMgJiM0Mzs5NDAsMTggQEAgc3RhdGljIHZvaWQgc3ZtX2lyX2xpc3RfZGVsKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZClcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUgPSBpcnFmZC1cdTAwM2VpcnFfYnlwYXNzX3ZjcHU7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuJiM0MztcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtO1xuIFxuIFx0aWYgKCF2Y3B1KVxuIFx0XHRyZXR1cm47XG4gXG4tXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dG9fc3ZtKHZjcHUpLVx1MDAzZWlyX2xpc3RfbG9jaywgZmxhZ3MpO1xuJiM0MztcdHN2bSA9IHRvX3N2bSh2Y3B1KTtcbiYjNDM7XG4mIzQzO1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcbiBcdGxpc3RfZGVsKFx1MDAyNmlycWZkLVx1MDAzZXZjcHVfbGlzdCk7XG4tXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZ0b19zdm0odmNwdSktXHUwMDNlaXJfbGlzdF9sb2NrLCBmbGFncyk7XG4mIzQzO1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3QpKVxuJiM0MztcdFx0YXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4mIzQzO1x0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3RfbG9jaywgZmxhZ3MpO1xuIH1cbiBcbiBpbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbkBAIC05MzIsNiAmIzQzOzk4MSw4IEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuIFx0XHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bSA9IHRvX3N2bSh2Y3B1KTtcbiBcdFx0dTY0IGVudHJ5O1xuIFx0XHRpbnQgcmV0O1xuJiM0MztcdFx0aW50IHBvc3RlZF9pbnRyO1xuJiM0MztcdFx0Ym9vbCBpc192Y3B1X3dhaXRpbmcgPSBmYWxzZTtcbiBcbiBcdFx0LypcbiBcdFx0ICogUHJldmVudCB0aGUgdkNQVSBmcm9tIGJlaW5nIHNjaGVkdWxlZCBvdXQgb3IgbWlncmF0ZWQgdW50aWxcbkBAIC05NDksMTUgJiM0MzsxMDAwLDIzIEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuIFx0XHQgKi9cbiBcdFx0ZW50cnkgPSBzdm0tXHUwMDNlYXZpY19waHlzaWNhbF9pZF9lbnRyeTtcbiBcdFx0aWYgKGVudHJ5IFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0lTX1JVTk5JTkdfTUFTSykge1xuLVx0XHRcdHBpX2RhdGEuY3B1ID0gZW50cnkgXHUwMDI2IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfSE9TVF9QSFlTSUNBTF9JRF9NQVNLO1xuJiM0MztcdFx0XHRwaV9kYXRhLmFwaWNpZCA9IGVudHJ5IFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0hPU1RfUEhZU0lDQUxfSURfTUFTSztcbiYjNDM7XHRcdFx0cGlfZGF0YS5mbGFncyA9IEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklORztcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRwaV9kYXRhLmNwdSA9IC0xO1xuLVx0XHRcdHBpX2RhdGEuZ2FfbG9nX2ludHIgPSBlbnRyeSBcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUjtcbiYjNDM7XHRcdFx0cG9zdGVkX2ludHIgPSAhIShlbnRyeSBcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUik7XG4mIzQzO1x0XHRcdHBpX2RhdGEuZmxhZ3MgPSBwb3N0ZWRfaW50ciBcdTAwM2NcdTAwM2MgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFJfU0hJRlQ7XG4mIzQzO1x0XHRcdGlmIChhbWRfaW9tbXVfZ2FwcGkpIHtcbiYjNDM7XHRcdFx0XHRwaV9kYXRhLmFwaWNpZCA9IGt2bV9jcHVfZ2V0X2FwaWNpZChzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbiYjNDM7XHRcdFx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdCkpIHtcbiYjNDM7XHRcdFx0XHRcdGF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbiYjNDM7XHRcdFx0XHRcdGlzX3ZjcHVfd2FpdGluZyA9IHRydWU7XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0cmV0ID0gaXJxX3NldF92Y3B1X2FmZmluaXR5KGhvc3RfaXJxLCBcdTAwMjZwaV9kYXRhKTtcbiBcdFx0aWYgKHJldClcbi1cdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0XHRnb3RvIGdhcHBpX2Vycl9vdXQ7XG4gXG4gXHRcdC8qXG4gXHRcdCAqIFJldmVydCB0byBsZWdhY3kgbW9kZSBpZiB0aGUgSU9NTVUgZGlkbiYjMzk7dCBwcm92aWRlIG1ldGFkYXRhXG5AQCAtOTY2LDEyICYjNDM7MTAyNSwxNyBAQCBpbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbiBcdFx0ICovXG4gXHRcdGlmIChXQVJOX09OX09OQ0UoIXBpX2RhdGEuaXJfZGF0YSkpIHtcbiBcdFx0XHRpcnFfc2V0X3ZjcHVfYWZmaW5pdHkoaG9zdF9pcnEsIE5VTEwpO1xuLVx0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0XHRyZXQgPSAtRUlPO1xuJiM0MztcdFx0XHRnb3RvIGdhcHBpX2Vycl9vdXQ7XG4gXHRcdH1cbiBcbiBcdFx0aXJxZmQtXHUwMDNlaXJxX2J5cGFzc19kYXRhID0gcGlfZGF0YS5pcl9kYXRhO1xuIFx0XHRsaXN0X2FkZChcdTAwMjZpcnFmZC1cdTAwM2V2Y3B1X2xpc3QsIFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KTtcbiBcdFx0cmV0dXJuIDA7XG4mIzQzO2dhcHBpX2Vycl9vdXQ6XG4mIzQzO1x0XHRpZiAoaXNfdmNwdV93YWl0aW5nKVxuJiM0MztcdFx0XHRhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXHRyZXR1cm4gaXJxX3NldF92Y3B1X2FmZmluaXR5KGhvc3RfaXJxLCBOVUxMKTtcbiB9XG5AQCAtMTAwNCwxMCAmIzQzOzEwNjgsMTQgQEAgZW51bSBhdmljX3ZjcHVfYWN0aW9uIHtcbiBcdEFWSUNfU1RBUlRfQkxPQ0tJTkdcdD0gQklUKDEpLFxuIH07XG4gXG4tc3RhdGljIHZvaWQgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUsXG4tXHRcdFx0XHRcdCAgICBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKVxuJiM0MztzdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGFwaWNpZCxcbiYjNDM7XHRcdFx0XHRcdCAgICBpbnQgY3B1LCBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKVxuIHtcbi1cdGJvb2wgZ2FfbG9nX2ludHIgPSAoYWN0aW9uIFx1MDAyNiBBVklDX1NUQVJUX0JMT0NLSU5HKTtcbiYjNDM7XHRpbnQgcG9zdGVkX2ludHIgPSAhIShhY3Rpb24gXHUwMDI2IEFWSUNfU1RBUlRfQkxPQ0tJTkcpIFx1MDAzY1x1MDAzY1xuJiM0MztcdFx0XHQgIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSX1NISUZUO1xuJiM0MztcdGludCBpc192Y3B1X3J1bm5pbmcgPSAoYXBpY2lkIFx1MDAzZT0gMCkgXHUwMDNjXHUwMDNjXG4mIzQzO1x0XHRcdCAgICAgIEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklOR19TSElGVDtcbiYjNDM7XHRpbnQgZmxhZ3MgPSBwb3N0ZWRfaW50ciB8IGlzX3ZjcHVfcnVubmluZztcbiBcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtID0gdG9fc3ZtKHZjcHUpO1xuIFx0c3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkO1xuIFxuQEAgLTEwMTcsMTYgJiM0MzsxMDg1LDMwIEBAIHN0YXRpYyB2b2lkIGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3B1LFxuIFx0ICogSGVyZSwgd2UgZ28gdGhyb3VnaCB0aGUgcGVyLXZjcHUgaXJfbGlzdCB0byB1cGRhdGUgYWxsIGV4aXN0aW5nXG4gXHQgKiBpbnRlcnJ1cHQgcmVtYXBwaW5nIHRhYmxlIGVudHJ5IHRhcmdldGluZyB0aGlzIHZjcHUuXG4gXHQgKi9cbi1cdGlmIChsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KSlcbiYjNDM7XHRpZiAobGlzdF9lbXB0eShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdCkpIHtcbiYjNDM7XHRcdGlmIChhbWRfaW9tbXVfZ2FwcGkgXHUwMDI2XHUwMDI2IGNwdSBcdTAwM2U9IDApXG4mIzQzO1x0XHRcdHN2bS1cdTAwM2VnYXBwaV9jcHUgPSBjcHU7XG4gXHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChpc192Y3B1X3J1bm5pbmcgXHUwMDI2XHUwMDI2IGFtZF9pb21tdV9nYXBwaSkge1xuJiM0MztcdFx0LyogSUYgY29uZGl0aW9uIGhhbmRsZXMgdGhlIGluaXRpYWwgc3RhdGUgKi9cbiYjNDM7XHRcdGlmIChzdm0tXHUwMDNlZ2FwcGlfY3B1ICE9IC0xKVxuJiM0MztcdFx0XHRhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbiYjNDM7XG4mIzQzO1x0XHRzdm0tXHUwMDNlZ2FwcGlfY3B1ID0gY3B1OyAvKiBTdG9yZSBjcHUgbm8gYXMgdGFyZ2V0IGZvciBHQVBQSSAqL1xuJiM0MztcdH0gZWxzZSBpZiAoYW1kX2lvbW11X2dhcHBpKSB7XG4mIzQzO1x0XHRhcGljaWQgPSBrdm1fY3B1X2dldF9hcGljaWQoc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4mIzQzO1x0XHRhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4mIzQzO1x0fVxuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcnFmZCwgXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3QsIHZjcHVfbGlzdCkge1xuIFx0XHR2b2lkICpkYXRhID0gaXJxZmQtXHUwMDNlaXJxX2J5cGFzc19kYXRhO1xuIFxuIFx0XHRpZiAoIShhY3Rpb24gXHUwMDI2IEFWSUNfVE9HR0xFX09OX09GRikpXG4tXHRcdFx0V0FSTl9PTl9PTkNFKGFtZF9pb21tdV91cGRhdGVfZ2EoZGF0YSwgY3B1LCBnYV9sb2dfaW50cikpO1xuLVx0XHRlbHNlIGlmIChjcHUgXHUwMDNlPSAwKVxuLVx0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZShkYXRhLCBjcHUsIGdhX2xvZ19pbnRyKSk7XG4mIzQzO1x0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfdXBkYXRlX2dhKGRhdGEsIGFwaWNpZCwgZmxhZ3MpKTtcbiYjNDM7XHRcdGVsc2UgaWYgKGlzX3ZjcHVfcnVubmluZylcbiYjNDM7XHRcdFx0V0FSTl9PTl9PTkNFKGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGRhdGEsIGFwaWNpZCwgZmxhZ3MpKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfZGVhY3RpdmF0ZV9ndWVzdF9tb2RlKGRhdGEpKTtcbiBcdH1cbkBAIC0xMDgwLDcgJiM0MzsxMTYyLDcgQEAgc3RhdGljIHZvaWQgX19hdmljX3ZjcHVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUsXG4gXG4gXHRXUklURV9PTkNFKGt2bV9zdm0tXHUwMDNlYXZpY19waHlzaWNhbF9pZF90YWJsZVt2Y3B1LVx1MDAzZXZjcHVfaWRdLCBlbnRyeSk7XG4gXG4tXHRhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIGhfcGh5c2ljYWxfaWQsIGFjdGlvbik7XG4mIzQzO1x0YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSh2Y3B1LCBoX3BoeXNpY2FsX2lkLCBjcHUsIGFjdGlvbik7XG4gXG4gXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdF9sb2NrLCBmbGFncyk7XG4gfVxuQEAgLTExMjMsNyAmIzQzOzEyMDUsNyBAQCBzdGF0aWMgdm9pZCBfX2F2aWNfdmNwdV9wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKVxuIFx0ICovXG4gXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3RfbG9jaywgZmxhZ3MpO1xuIFxuLVx0YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSh2Y3B1LCAtMSwgYWN0aW9uKTtcbiYjNDM7XHRhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIC0xLCAtMSwgYWN0aW9uKTtcbiBcbiBcdFdBUk5fT05fT05DRShlbnRyeSBcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUik7XG4gXG5AQCAtMTI5Niw2ICYjNDM7MTM3OCwyMSBAQCBzdGF0aWMgYm9vbCBfX2luaXQgYXZpY193YW50X2F2aWNfZW5hYmxlZCh2b2lkKVxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuJiM0MztcdHN0cnVjdCBsaXN0X2hlYWQgKnZjcHVfd2FrZXVwX2xpc3QgPSBcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIGNwdSk7XG4mIzQzO1x0cmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrID0gXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7XG4mIzQzO1x0c3RydWN0IHZjcHVfc3ZtICpzdm07XG4mIzQzO1xuJiM0MztcdHJhd19zcGluX2xvY2soc3BpbmxvY2spO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkoc3ZtLCB2Y3B1X3dha2V1cF9saXN0LCBnYXBwaV92Y3B1X3dha2V1cF9saXN0KSB7XG4mIzQzO1x0XHRpZiAoa3ZtX2xhcGljX2ZpbmRfaGlnaGVzdF9pcnIoXHUwMDI2c3ZtLVx1MDAzZXZjcHUpIFx1MDAzZT0gMClcbiYjNDM7XHRcdFx0a3ZtX3ZjcHVfd2FrZV91cChcdTAwMjZzdm0tXHUwMDNldmNwdSk7XG4mIzQzO1x0fVxuJiM0MztcdHJhd19zcGluX3VubG9jayhzcGlubG9jayk7XG4mIzQzO31cbiYjNDM7XG4gLypcbiAgKiBOb3RlOlxuICAqIC0gVGhlIG1vZHVsZSBwYXJhbSBhdmljIGVuYWJsZSBib3RoIHhBUElDIGFuZCB4MkFQSUMgbW9kZS5cbkBAIC0xMzA0LDEyICYjNDM7MTQwMSwxOCBAQCBzdGF0aWMgYm9vbCBfX2luaXQgYXZpY193YW50X2F2aWNfZW5hYmxlZCh2b2lkKVxuICAqL1xuIGJvb2wgX19pbml0IGF2aWNfaGFyZHdhcmVfc2V0dXAodm9pZClcbiB7XG4mIzQzO1x0aW50IGNwdTtcbiBcdGF2aWMgPSBhdmljX3dhbnRfYXZpY19lbmFibGVkKCk7XG4gXHRpZiAoIWF2aWMpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByX2luZm8oXCYjMzQ7QVZJQyBlbmFibGVkXFxuXCYjMzQ7KTtcbiBcbiYjNDM7XHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG4mIzQzO1x0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIGNwdSkpO1xuJiM0MztcdFx0cmF3X3NwaW5fbG9ja19pbml0KFx1MDAyNnBlcl9jcHUoZ2FwcGlfdmNwdV93YWtldXBfbGlzdF9sb2NrLCBjcHUpKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LyogQVZJQyBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgeDJBVklDLiAqL1xuIFx0eDJhdmljX2VuYWJsZWQgPSBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfWDJBVklDKTtcbiBcdGlmICh4MmF2aWNfZW5hYmxlZCkge1xuQEAgLTEzMzMsNiAmIzQzOzE0MzYsNyBAQCBib29sIF9faW5pdCBhdmljX2hhcmR3YXJlX3NldHVwKHZvaWQpXG4gXHRcdGVuYWJsZV9pcGl2ID0gZmFsc2U7XG4gXG4gXHRhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKFx1MDAyNmF2aWNfZ2FfbG9nX25vdGlmaWVyKTtcbiYjNDM7XHRrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyKFx1MDAyNmF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXIpO1xuIFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCBlMDJhMzhkYTUyOTZlMy4uYjY4NzEzM2Y4NTI4YmEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtMTM1Niw2ICYjNDM7MTM1Niw4IEBAIHN0YXRpYyB2b2lkIHN2bV92Y3B1X2ZyZWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFxuIFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KSk7XG4gXG4mIzQzO1x0YXZpY19kZXN0cm95X3ZjcHUoc3ZtKTtcbiYjNDM7XG4gXHRzdm1fbGVhdmVfbmVzdGVkKHZjcHUpO1xuIFx0c3ZtX2ZyZWVfbmVzdGVkKHN2bSk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbmluZGV4IDUxMzc0MTZiZTU5M2Q3Li40N2Q1YmI1ZDcxMDNkYSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbkBAIC0zNjIsNiAmIzQzOzM2MiwxMCBAQCBzdHJ1Y3QgdmNwdV9zdm0ge1xuIFxuIFx0LyogR3Vlc3QgR0lGIHZhbHVlLCB1c2VkIHdoZW4gdkdJRiBpcyBub3QgZW5hYmxlZCAqL1xuIFx0Ym9vbCBndWVzdF9naWY7XG4mIzQzO1xuJiM0MztcdC8qIEdBUFBJIHJlbGF0ZWQgZmllbGRzICovXG4mIzQzO1x0c3RydWN0IGxpc3RfaGVhZCBnYXBwaV92Y3B1X3dha2V1cF9saXN0O1xuJiM0MztcdGludCBnYXBwaV9jcHU7XG4gfTtcbiBcbiBzdHJ1Y3Qgc3ZtX2NwdV9kYXRhIHtcbkBAIC05MDksNiAmIzQzOzkxMyw3IEBAIHZvaWQgYXZpY19pbml0X3ZtY2Ioc3RydWN0IHZjcHVfc3ZtICpzdm0sIHN0cnVjdCB2bWNiICp2bWNiKTtcbiBpbnQgYXZpY19pbmNvbXBsZXRlX2lwaV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBpbnQgYXZpY191bmFjY2VsZXJhdGVkX2FjY2Vzc19pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBpbnQgYXZpY19pbml0X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pO1xuJiM0Mzt2b2lkIGF2aWNfZGVzdHJveV92Y3B1KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKTtcbiB2b2lkIGF2aWNfdmNwdV9sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSk7XG4gdm9pZCBhdmljX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gdm9pZCBhdmljX2FwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdS5oIGIvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmhcbmluZGV4IDgzNGQ4ZmFiZmJhMzg3Li4wNDQxNzljYWIxMmU0YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXUuaFxuQEAgLTQxLDYgJiM0Mzs0MSw3IEBAIGludCBhbWRfaW9tbXVfZW5hYmxlKHZvaWQpO1xuIHZvaWQgYW1kX2lvbW11X2Rpc2FibGUodm9pZCk7XG4gaW50IGFtZF9pb21tdV9yZWVuYWJsZShpbnQgbW9kZSk7XG4gaW50IGFtZF9pb21tdV9lbmFibGVfZmF1bHRpbmcodW5zaWduZWQgaW50IGNwdSk7XG4mIzQzO2V4dGVybiBib29sIGFtZF9pb21tdV9nYXBwaTtcbiBleHRlcm4gaW50IGFtZF9pb21tdV9ndWVzdF9pcjtcbiBleHRlcm4gZW51bSBwcm90ZWN0aW9uX2RvbWFpbl9tb2RlIGFtZF9pb21tdV9wZ3RhYmxlO1xuIGV4dGVybiBpbnQgYW1kX2lvbW11X2dwdF9sZXZlbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaCBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdV90eXBlcy5oXG5pbmRleCBmOWY3MTgwODc4OTMwMy4uZGUwYjIzMzA2OTQ0YjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11X3R5cGVzLmhcbkBAIC05NCw2ICYjNDM7OTQsNyBAQFxuICNkZWZpbmUgRkVBVFVSRV9YMkFQSUNcdFx0QklUX1VMTCgyKVxuICNkZWZpbmUgRkVBVFVSRV9OWFx0XHRCSVRfVUxMKDMpXG4gI2RlZmluZSBGRUFUVVJFX0dUXHRcdEJJVF9VTEwoNClcbiYjNDM7I2RlZmluZSBGRUFUVVJFX0dBUFBJXHRcdEJJVF9VTEwoNSlcbiAjZGVmaW5lIEZFQVRVUkVfSUFcdFx0QklUX1VMTCg2KVxuICNkZWZpbmUgRkVBVFVSRV9HQVx0XHRCSVRfVUxMKDcpXG4gI2RlZmluZSBGRUFUVVJFX0hFXHRcdEJJVF9VTEwoOClcbkBAIC0xMTMsNiAmIzQzOzExNCw3IEBAXG4gLyogRXh0ZW5kZWQgRmVhdHVyZSAyIEJpdHMgKi9cbiAjZGVmaW5lIEZFQVRVUkVfU0VWU05QSU9fU1VQXHRCSVRfVUxMKDEpXG4gI2RlZmluZSBGRUFUVVJFX0dDUjNUUlBNT0RFXHRCSVRfVUxMKDMpXG4mIzQzOyNkZWZpbmUgRkVBVFVSRV9HQVBQSURJU1NVUFx0QklUX1VMTCg0KVxuICNkZWZpbmUgRkVBVFVSRV9TTlBBVklDU1VQXHRHRU5NQVNLX1VMTCg3LCA1KVxuICNkZWZpbmUgRkVBVFVSRV9TTlBBVklDU1VQX0dBTSh4KSBcXFxuIFx0KEZJRUxEX0dFVChGRUFUVVJFX1NOUEFWSUNTVVAsIHgpID09IDB4MSlcbkBAIC0xOTAsNiAmIzQzOzE5Miw3IEBAXG4gI2RlZmluZSBDT05UUk9MX0VQSF9FTlx0XHQ0NVxuICNkZWZpbmUgQ09OVFJPTF9YVF9FTlx0XHQ1MFxuICNkZWZpbmUgQ09OVFJPTF9JTlRDQVBYVF9FTlx0NTFcbiYjNDM7I2RlZmluZSBDT05UUk9MX0dBUFBJX0VOXHQ1NVxuICNkZWZpbmUgQ09OVFJPTF9HQ1IzVFJQTU9ERVx0NThcbiAjZGVmaW5lIENPTlRST0xfSVJUQ0FDSEVESVNcdDU5XG4gI2RlZmluZSBDT05UUk9MX1NOUEFWSUNfRU5cdDYxXG5AQCAtMTAwNCw3ICYjNDM7MTAwNyw4IEBAIHVuaW9uIGlydGVfZ2FfbG8ge1xuIFx0XHQgICAgbm9fZmF1bHRcdDogMSxcbiBcdFx0ICAgIC8qIC0tLS0tLSAqL1xuIFx0XHQgICAgZ2FfbG9nX2ludHJcdDogMSxcbi1cdFx0ICAgIHJzdmQxXHQ6IDMsXG4mIzQzO1x0XHQgICAgcnN2ZDFcdDogMixcbiYjNDM7XHRcdCAgICBnYXBwaV9kaXNcdDogMSxcbiBcdFx0ICAgIGlzX3J1blx0OiAxLFxuIFx0XHQgICAgLyogLS0tLS0tICovXG4gXHRcdCAgICBndWVzdF9tb2RlXHQ6IDEsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvaW5pdC5jIGIvZHJpdmVycy9pb21tdS9hbWQvaW5pdC5jXG5pbmRleCAzYmRiMzgwZDIzZTlhOS4uYjNlMWQ4ZWU3ZTlkNjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW9tbXUvYW1kL2luaXQuY1xuQEAgLTE2MCw2ICYjNDM7MTYwLDkgQEAgdTggYW1kX2lvbW11X2hwdF9sZXZlbDtcbiAvKiBHdWVzdCBwYWdlIHRhYmxlIGxldmVsICovXG4gaW50IGFtZF9pb21tdV9ncHRfbGV2ZWwgPSBQQUdFX01PREVfNF9MRVZFTDtcbiBcbiYjNDM7Ym9vbCBhbWRfaW9tbXVfZ2FwcGk7XG4mIzQzO0VYUE9SVF9TWU1CT0woYW1kX2lvbW11X2dhcHBpKTtcbiYjNDM7XG4gaW50IGFtZF9pb21tdV9ndWVzdF9pciA9IEFNRF9JT01NVV9HVUVTVF9JUl9WQVBJQztcbiBzdGF0aWMgaW50IGFtZF9pb21tdV94dF9tb2RlID0gSVJRX1JFTUFQX1hBUElDX01PREU7XG4gXG5AQCAtMzAzNSwxMSAmIzQzOzMwMzgsMjAgQEAgc3RhdGljIHZvaWQgZW5hYmxlX2lvbW11c192YXBpYyh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4mIzQzO1x0aWYgKGFtZF9pb21tdV9nYXBwaSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIShjaGVja19mZWF0dXJlKEZFQVRVUkVfR0FQUEkpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgIEFNRF9JT01NVV9HVUVTVF9JUl9WQVBJQyhhbWRfaW9tbXVfZ3Vlc3RfaXIpKSkge1xuJiM0MztcdFx0cHJfd2FybihcJiMzNDtHQVBQSSBpcyBub3Qgc3VwcG9ydGVkLlxcblwmIzM0Oyk7XG4mIzQzO1x0XHRhbWRfaW9tbXVfZ2FwcGkgPSBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LyogRW5hYmxpbmcgR0FNIGFuZCBTTlBBVklDIHN1cHBvcnQgKi9cbiBcdGZvcl9lYWNoX2lvbW11KGlvbW11KSB7XG4tXHRcdGlmIChpb21tdV9pbml0X2dhX2xvZyhpb21tdSkgfHxcbi1cdFx0ICAgIGlvbW11X2dhX2xvZ19lbmFibGUoaW9tbXUpKVxuLVx0XHRcdHJldHVybjtcbiYjNDM7XHRcdGlmIChhbWRfaW9tbXVfZ2FwcGkpXG4mIzQzO1x0XHRcdGlvbW11X2ZlYXR1cmVfZW5hYmxlKGlvbW11LCBDT05UUk9MX0dBUFBJX0VOKTtcbiYjNDM7XHRcdGVsc2UgaWYgKGlvbW11X2luaXRfZ2FfbG9nKGlvbW11KSB8fFxuJiM0MztcdFx0XHQgaW9tbXVfZ2FfbG9nX2VuYWJsZShpb21tdSkpXG4mIzQzO1x0XHRcdCByZXR1cm47XG4gXG4gXHRcdGlvbW11X2ZlYXR1cmVfZW5hYmxlKGlvbW11LCBDT05UUk9MX0dBTV9FTik7XG4gXHRcdGlmIChhbWRfaW9tbXVfc25wX2VuKVxuQEAgLTMwNDcsNyAmIzQzOzMwNTksOCBAQCBzdGF0aWMgdm9pZCBlbmFibGVfaW9tbXVzX3ZhcGljKHZvaWQpXG4gXHR9XG4gXG4gXHRhbWRfaW9tbXVfaXJxX29wcy5jYXBhYmlsaXR5IHw9ICgxIFx1MDAzY1x1MDAzYyBJUlFfUE9TVElOR19DQVApO1xuLVx0cHJfaW5mbyhcJiMzNDtWaXJ0dWFsIEFQSUMgZW5hYmxlZFxcblwmIzM0Oyk7XG4mIzQzO1x0cHJfaW5mbyhcJiMzNDtWaXJ0dWFsIEFQSUMgZW5hYmxlZCB3aXRoICVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0YW1kX2lvbW11X2dhcHBpID8gXCYjMzQ7R0FQUElcJiMzNDsgOiBcJiMzNDtHQUxPR1wmIzM0Oyk7XG4gI2VuZGlmXG4gfVxuIFxuQEAgLTM3MzgsNiAmIzQzOzM3NTEsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBwYXJzZV9hbWRfaW9tbXVfb3B0aW9ucyhjaGFyICpzdHIpXG4gXHRcdH0gZWxzZSBpZiAoc3RybmNtcChzdHIsIFwmIzM0O3YyX3Bnc2l6ZXNfb25seVwmIzM0OywgMTUpID09IDApIHtcbiBcdFx0XHRwcl9pbmZvKFwmIzM0O1Jlc3RyaWN0aW5nIFYxIHBhZ2Utc2l6ZXMgdG8gNEtpQi8yTWlCLzFHaUJcJiMzNDspO1xuIFx0XHRcdGFtZF9pb21tdV9wZ3NpemVfYml0bWFwID0gQU1EX0lPTU1VX1BHU0laRVNfVjI7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHN0cm5jbXAoc3RyLCBcJiMzNDtnYXBwaVwmIzM0OywgNSkgPT0gMCkge1xuJiM0MztcdFx0XHRhbWRfaW9tbXVfZ2FwcGkgPSB0cnVlO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdHByX25vdGljZShcJiMzNDtVbmtub3duIG9wdGlvbiAtICYjMzk7JXMmIzM5O1xcblwmIzM0Oywgc3RyKTtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmMgYi9kcml2ZXJzL2lvbW11L2FtZC9pb21tdS5jXG5pbmRleCA1N2RjOGZhYmM3ZDliOS4uNDY5MGNlY2M5YWE3ZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pb21tdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2lvbW11L2FtZC9pb21tdS5jXG5AQCAtMzk1OSwxOSAmIzQzOzM5NTksMjggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBhbWRfaXJfZG9tYWluX29wcyA9IHtcbiBcdC5kZWFjdGl2YXRlID0gaXJxX3JlbWFwcGluZ19kZWFjdGl2YXRlLFxuIH07XG4gXG4tc3RhdGljIHZvaWQgX19hbWRfaW9tbXVfdXBkYXRlX2dhKHN0cnVjdCBpcnRlX2dhICplbnRyeSwgaW50IGNwdSxcbi1cdFx0XHRcdCAgYm9vbCBnYV9sb2dfaW50cilcbiYjNDM7c3RhdGljIHZvaWQgX19hbWRfaW9tbXVfdXBkYXRlX2dhKHN0cnVjdCBpcnRlX2dhICplbnRyeSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxuIHtcbi1cdGlmIChjcHUgXHUwMDNlPSAwKSB7XG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkcpIHtcbiBcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmRlc3RpbmF0aW9uID1cbi1cdFx0XHRcdFx0QVBJQ0lEX1RPX0lSVEVfREVTVF9MTyhjcHUpO1xuJiM0MztcdFx0XHRcdFx0QVBJQ0lEX1RPX0lSVEVfREVTVF9MTyhhcGljaWQpO1xuIFx0XHRlbnRyeS1cdTAwM2VoaS5maWVsZHMuZGVzdGluYXRpb24gPVxuLVx0XHRcdFx0XHRBUElDSURfVE9fSVJURV9ERVNUX0hJKGNwdSk7XG4mIzQzO1x0XHRcdFx0XHRBUElDSURfVE9fSVJURV9ERVNUX0hJKGFwaWNpZCk7XG4gXHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSB0cnVlO1xuIFx0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfbG9nX2ludHIgPSBmYWxzZTtcbiBcdH0gZWxzZSB7XG4tXHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcbi1cdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX2xvZ19pbnRyID0gZ2FfbG9nX2ludHI7XG4mIzQzO1x0XHRib29sIHBvc3RlZF9pbnRyID0gISEoZmxhZ3MgXHUwMDI2IEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSKTtcbiYjNDM7XHRcdGlmIChhbWRfaW9tbXVfZ2FwcGkpIHtcbiYjNDM7XHRcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhcHBpX2RpcyA9ICFwb3N0ZWRfaW50ciBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICBjaGVja19mZWF0dXJlMihGRUFUVVJFX0dBUFBJRElTU1VQKTtcbiYjNDM7XHRcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmlzX3J1biA9IGZhbHNlO1xuJiM0MztcdFx0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZGVzdGluYXRpb24gPVxuJiM0MztcdFx0XHRcdFx0XHRBUElDSURfVE9fSVJURV9ERVNUX0xPKGFwaWNpZCk7XG4mIzQzO1x0XHRcdGVudHJ5LVx1MDAzZWhpLmZpZWxkcy5kZXN0aW5hdGlvbiA9IEFQSUNJRF9UT19JUlRFX0RFU1RfSEkoYXBpY2lkKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcbiYjNDM7XHRcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX2xvZ19pbnRyID0gcG9zdGVkX2ludHI7XG4mIzQzO1x0XHR9XG4gXHR9XG4gfVxuIFxuQEAgLTM5OTIsNyAmIzQzOzQwMDEsNyBAQCBzdGF0aWMgdm9pZCBfX2FtZF9pb21tdV91cGRhdGVfZ2Eoc3RydWN0IGlydGVfZ2EgKmVudHJ5LCBpbnQgY3B1LFxuICAqIGFuZCB0aHVzIGRvbiYjMzk7dCByZXF1aXJlIGFuIGludmFsaWRhdGlvbiB0byBlbnN1cmUgdGhlIElPTU1VIGNvbnN1bWVzIGZyZXNoXG4gICogaW5mb3JtYXRpb24uXG4gICovXG4taW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbiYjNDM7aW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxuIHtcbiBcdHN0cnVjdCBhbWRfaXJfZGF0YSAqaXJfZGF0YSA9IChzdHJ1Y3QgYW1kX2lyX2RhdGEgKilkYXRhO1xuIFx0c3RydWN0IGlydGVfZ2EgKmVudHJ5ID0gKHN0cnVjdCBpcnRlX2dhICopIGlyX2RhdGEtXHUwMDNlZW50cnk7XG5AQCAtNDAwNiwxNCAmIzQzOzQwMTUsMTQgQEAgaW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbiBcdGlmICghaXJfZGF0YS1cdTAwM2Vpb21tdSlcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXG4tXHRfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGNwdSwgZ2FfbG9nX2ludHIpO1xuJiM0MztcdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgYXBpY2lkLCBmbGFncyk7XG4gXG4gXHRyZXR1cm4gX19tb2RpZnlfaXJ0ZV9nYShpcl9kYXRhLVx1MDAzZWlvbW11LCBpcl9kYXRhLVx1MDAzZWlycV8yX2lydGUuZGV2aWQsXG4gXHRcdFx0XHRpcl9kYXRhLVx1MDAzZWlycV8yX2lydGUuaW5kZXgsIGVudHJ5KTtcbiB9XG4gRVhQT1JUX1NZTUJPTChhbWRfaW9tbXVfdXBkYXRlX2dhKTtcbiBcbi1pbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbiYjNDM7aW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcbiB7XG4gXHRzdHJ1Y3QgYW1kX2lyX2RhdGEgKmlyX2RhdGEgPSAoc3RydWN0IGFtZF9pcl9kYXRhICopZGF0YTtcbiBcdHN0cnVjdCBpcnRlX2dhICplbnRyeSA9IChzdHJ1Y3QgaXJ0ZV9nYSAqKSBpcl9kYXRhLVx1MDAzZWVudHJ5O1xuQEAgLTQwMzQsOSAmIzQzOzQwNDMsMTMgQEAgaW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpXG4gXHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ3Vlc3RfbW9kZSAgPSAxO1xuIFx0ZW50cnktXHUwMDNlaGkuZmllbGRzLmdhX3Jvb3RfcHRyICAgICAgID0gaXJfZGF0YS1cdTAwM2VnYV9yb290X3B0cjtcbiBcdGVudHJ5LVx1MDAzZWhpLmZpZWxkcy52ZWN0b3IgICAgICAgICAgICA9IGlyX2RhdGEtXHUwMDNlZ2FfdmVjdG9yO1xuLVx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX3RhZyAgICAgID0gaXJfZGF0YS1cdTAwM2VnYV90YWc7XG4gXG4tXHRfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGNwdSwgZ2FfbG9nX2ludHIpO1xuJiM0MztcdGlmIChhbWRfaW9tbXVfZ2FwcGkpXG4mIzQzO1x0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfdGFnID0gUE9TVEVEX0lOVFJfV0FLRVVQX1ZFQ1RPUjtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfdGFnID0gaXJfZGF0YS1cdTAwM2VnYV90YWc7XG4mIzQzO1xuJiM0MztcdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgYXBpY2lkLCBmbGFncyk7XG4gXG4gXHRyZXR1cm4gbW9kaWZ5X2lydGVfZ2EoaXJfZGF0YS1cdTAwM2Vpb21tdSwgaXJfZGF0YS1cdTAwM2VpcnFfMl9pcnRlLmRldmlkLFxuIFx0XHRcdCAgICAgIGlyX2RhdGEtXHUwMDNlaXJxXzJfaXJ0ZS5pbmRleCwgZW50cnkpO1xuQEAgLTQxMDcsOCAmIzQzOzQxMjAsOCBAQCBzdGF0aWMgaW50IGFtZF9pcl9zZXRfdmNwdV9hZmZpbml0eShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEsIHZvaWQgKmluZm8pXG4gXHRcdGlyX2RhdGEtXHUwMDNlZ2FfdmVjdG9yID0gcGlfZGF0YS1cdTAwM2V2ZWN0b3I7XG4gXHRcdGlyX2RhdGEtXHUwMDNlZ2FfdGFnID0gcGlfZGF0YS1cdTAwM2VnYV90YWc7XG4gXHRcdGlmIChwaV9kYXRhLVx1MDAzZWlzX2d1ZXN0X21vZGUpXG4tXHRcdFx0cmV0ID0gYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoaXJfZGF0YSwgcGlfZGF0YS1cdTAwM2VjcHUsXG4tXHRcdFx0XHRcdFx0XHQgICAgcGlfZGF0YS1cdTAwM2VnYV9sb2dfaW50cik7XG4mIzQzO1x0XHRcdHJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtXHUwMDNlYXBpY2lkLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBwaV9kYXRhLVx1MDAzZWZsYWdzKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdHJldCA9IGFtZF9pb21tdV9kZWFjdGl2YXRlX2d1ZXN0X21vZGUoaXJfZGF0YSk7XG4gXHR9IGVsc2Uge1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmggYi9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oXG5pbmRleCBlZGNlZTlmNTMzNWE2Zi4uODdlNzZmNjE3ZWExODUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oXG5AQCAtMzAsOCAmIzQzOzMwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGFtZF9pb21tdV9kZXRlY3Qodm9pZCkgeyB9XG4gLyogSU9NTVUgQVZJQyBGdW5jdGlvbiAqL1xuIGV4dGVybiBpbnQgYW1kX2lvbW11X3JlZ2lzdGVyX2dhX2xvZ19ub3RpZmllcihpbnQgKCpub3RpZmllcikodTMyKSk7XG4gXG4tZXh0ZXJuIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpO1xuLWV4dGVybiBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cik7XG4mIzQzO2V4dGVybiBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgYXBpY2lkLCBpbnQgZmxhZ3MpO1xuJiM0MztleHRlcm4gaW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncyk7XG4gZXh0ZXJuIGludCBhbWRfaW9tbXVfZGVhY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEpO1xuIFxuICNlbHNlIC8qIGRlZmluZWQoQ09ORklHX0FNRF9JT01NVSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0lSUV9SRU1BUCkgKi9cbkBAIC00MiwxMiAmIzQzOzQyLDEyIEBAIGFtZF9pb21tdV9yZWdpc3Rlcl9nYV9sb2dfbm90aWZpZXIoaW50ICgqbm90aWZpZXIpKHUzMikpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKVxuJiM0MztzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcbiB7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxuIHtcbiBcdHJldHVybiAwO1xuIH1cbkBAIC03Niw0ICYjNDM7NzYsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X3NucF9kaXNhYmxlKHZvaWQpIHsgcmV0dXJuIDA7IH1cbiBzdGF0aWMgaW5saW5lIGJvb2wgYW1kX2lvbW11X3Nldl90aW9fc3VwcG9ydGVkKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9XG4gI2VuZGlmXG4gXG4mIzQzOyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfVkNQVV9SVU5OSU5HX1NISUZUIDBcbiYjNDM7I2RlZmluZSBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkcgIEJJVCgwKVxuJiM0MztcbiYjNDM7I2RlZmluZSBBTURfSU9NTVVfRkxBR19QT1NURURfSU5UUl9TSElGVCAxXG4mIzQzOyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFIgIEJJVCgxKVxuJiM0MztcbiYjNDM7ZXh0ZXJuIGJvb2wgYW1kX2lvbW11X2dhcHBpO1xuICNlbmRpZiAvKiBfQVNNX1g4Nl9BTURfSU9NTVVfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OywKICAgICYjMzQ7QU1EX0lPTU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXZpY19waV91cGRhdGVfaXJ0ZSYjMzQ7LAogICAgJiMzNDthdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5JiMzNDssCiAgICAmIzM0O2FtZF9pb21tdV91cGRhdGVfZ2EmIzM0OywKICAgICYjMzQ7YW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUmIzM0OywKICAgICYjMzQ7YXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdCYjMzQ7LAogICAgJiMzNDthdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3QmIzM0OywKICAgICYjMzQ7YXZpY19nYXBwaV93YWtldXBfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtfX2FtZF9pb21tdV91cGRhdGVfZ2EmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIGludHJvZHVjZXMgR0FQUEkgKEd1ZXN0IEFQSUMgUG9zdGVkIEludGVycnVwdHMpIHN1cHBvcnQgZm9yIEFNRCBJT01NVSBhbmQgS1ZNIFNWTSBBVklDLiBJdCBtb2RpZmllcyBjb3JlIGludGVycnVwdCByZW1hcHBpbmcgYW5kIHZDUFUgYWZmaW5pdHkgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIG5lc3RlZCBLVk0gb24gQU1EKS4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBuZXcgd2FrZXVwIGxpc3RzIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgZG8gbm90IGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIG9yIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjMDc2ODk5NmVhYWM5NjY0YzE5MTRhNDg1YTVlMjI4NTlhOTZlYjViCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdW4gMjYgMjI6NTk6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmgKaW5kZXggMzdiOTRmNDg0ZWYzMzguLjQwYTIyMDZhMzNjMDhkIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vaXJxX3JlbWFwcGluZy5oCkBAIC0zNSw4ICYjNDM7MzUsOCBAQCBzdHJ1Y3QgYW1kX2lvbW11X3BpX2RhdGEgewogCXU2NCB2YXBpY19hZGRyOwkJLyogUGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgdkNQVSYjMzk7cyB2QVBJQy4gKi8KIAl1MzIgZ2FfdGFnOwogCXUzMiB2ZWN0b3I7CQkvKiBHdWVzdCB2ZWN0b3Igb2YgdGhlIGludGVycnVwdCAqLwotCWludCBjcHU7Ci0JYm9vbCBnYV9sb2dfaW50cjsKJiM0MzsJaW50IGFwaWNpZDsKJiM0MzsJaW50IGZsYWdzOwogCWJvb2wgaXNfZ3Vlc3RfbW9kZTsKIAl2b2lkICppcl9kYXRhOwogfTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jIGIvYXJjaC94ODYva3ZtL3N2bS9hdmljLmMKaW5kZXggY2RkNWE2ZGM2NDZmMTEuLmQyMzhmNjVhODE3MmJjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYwpAQCAtNjMsNiAmIzQzOzYzLDkgQEAKIAlnYV90YWc7CQkJCQkJCQlcCiB9KQogCiYjNDM7c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBsaXN0X2hlYWQsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpOwomIzQzO3N0YXRpYyBERUZJTkVfUEVSX0NQVShyYXdfc3BpbmxvY2tfdCwgZ2FwcGlfdmNwdV93YWtldXBfbGlzdF9sb2NrKTsKJiM0MzsKIHN0YXRpY19hc3NlcnQoX19BVklDX0dBVEFHKEFWSUNfVk1fSURfTUFTSywgQVZJQ19WQ1BVX0lEWF9NQVNLKSA9PSAtMXUpOwogCiAjZGVmaW5lIEFWSUNfQVVUT19NT0RFIC0xCkBAIC04NzQsNiAmIzQzOzg3Nyw5IEBAIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSkKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3N2bS0mZ3Q7aXJfbGlzdCk7CiAJcmF3X3NwaW5fbG9ja19pbml0KCZhbXA7c3ZtLSZndDtpcl9saXN0X2xvY2spOwogCiYjNDM7CUlOSVRfTElTVF9IRUFEKCZhbXA7c3ZtLSZndDtnYXBwaV92Y3B1X3dha2V1cF9saXN0KTsKJiM0MzsJc3ZtLSZndDtnYXBwaV9jcHUgPSAtMTsKJiM0MzsKIAlpZiAoIWVuYWJsZV9hcGljdiB8fCAhaXJxY2hpcF9pbl9rZXJuZWwodmNwdS0mZ3Q7a3ZtKSkKIAkJcmV0dXJuIDA7CiAKQEAgLTg4Niw2ICYjNDM7ODkyLDQ0IEBAIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSkKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHZvaWQgYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSwgaW50IGNwdSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBsaXN0X2hlYWQgKndha2V1cF9saXN0OwomIzQzOwlyYXdfc3BpbmxvY2tfdCAqc3BpbmxvY2s7CiYjNDM7CiYjNDM7CWlmIChXQVJOX09OKGNwdSAmbHQ7IDApKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwl3YWtldXBfbGlzdCA9ICZhbXA7cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0LCBjcHUpOwomIzQzOwlzcGlubG9jayA9ICZhbXA7cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7CiYjNDM7CXJhd19zcGluX2xvY2soc3BpbmxvY2spOwomIzQzOwlpZiAobGlzdF9lbXB0eSgmYW1wO3N2bS0mZ3Q7Z2FwcGlfdmNwdV93YWtldXBfbGlzdCkpCiYjNDM7CQlsaXN0X2FkZF90YWlsKCZhbXA7c3ZtLSZndDtnYXBwaV92Y3B1X3dha2V1cF9saXN0LCB3YWtldXBfbGlzdCk7CiYjNDM7CXJhd19zcGluX3VubG9jayhzcGlubG9jayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSwgaW50IGNwdSkKJiM0Mzt7CiYjNDM7CXJhd19zcGlubG9ja190ICpzcGlubG9jazsKJiM0MzsKJiM0MzsJaWYgKFdBUk5fT04oY3B1ICZsdDsgMCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXNwaW5sb2NrID0gJmFtcDtwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KTsKJiM0MzsJcmF3X3NwaW5fbG9jayhzcGlubG9jayk7CiYjNDM7CWlmICghbGlzdF9lbXB0eSgmYW1wO3N2bS0mZ3Q7Z2FwcGlfdmNwdV93YWtldXBfbGlzdCkpCiYjNDM7CQlsaXN0X2RlbF9pbml0KCZhbXA7c3ZtLSZndDtnYXBwaV92Y3B1X3dha2V1cF9saXN0KTsKJiM0MzsJcmF3X3NwaW5fdW5sb2NrKHNwaW5sb2NrKTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBhdmljX2Rlc3Ryb3lfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSkKJiM0Mzt7CiYjNDM7CWlmIChzdm0tJmd0O2dhcHBpX2NwdSAhPSAtMSAmYW1wOyZhbXA7IGFtZF9pb21tdV9nYXBwaSkgewomIzQzOwkJYXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLSZndDtnYXBwaV9jcHUpOwomIzQzOwkJc3ZtLSZndDtnYXBwaV9jcHUgPSAtMTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHZvaWQgYXZpY19hcGljdl9wb3N0X3N0YXRlX3Jlc3RvcmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCWF2aWNfaGFuZGxlX2Rmcl91cGRhdGUodmNwdSk7CkBAIC04OTYsMTMgJiM0Mzs5NDAsMTggQEAgc3RhdGljIHZvaWQgc3ZtX2lyX2xpc3RfZGVsKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCkKIHsKIAlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUgPSBpcnFmZC0mZ3Q7aXJxX2J5cGFzc192Y3B1OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiYjNDM7CXN0cnVjdCB2Y3B1X3N2bSAqc3ZtOwogCiAJaWYgKCF2Y3B1KQogCQlyZXR1cm47CiAKLQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDt0b19zdm0odmNwdSktJmd0O2lyX2xpc3RfbG9jaywgZmxhZ3MpOwomIzQzOwlzdm0gPSB0b19zdm0odmNwdSk7CiYjNDM7CiYjNDM7CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3N2bS0mZ3Q7aXJfbGlzdF9sb2NrLCBmbGFncyk7CiAJbGlzdF9kZWwoJmFtcDtpcnFmZC0mZ3Q7dmNwdV9saXN0KTsKLQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO3RvX3N2bSh2Y3B1KS0mZ3Q7aXJfbGlzdF9sb2NrLCBmbGFncyk7CiYjNDM7CWlmIChsaXN0X2VtcHR5KCZhbXA7c3ZtLSZndDtpcl9saXN0KSkKJiM0MzsJCWF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS0mZ3Q7Z2FwcGlfY3B1KTsKJiM0MzsJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtzdm0tJmd0O2lyX2xpc3RfbG9jaywgZmxhZ3MpOwogfQogCiBpbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSwKQEAgLTkzMiw2ICYjNDM7OTgxLDggQEAgaW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sCiAJCXN0cnVjdCB2Y3B1X3N2bSAqc3ZtID0gdG9fc3ZtKHZjcHUpOwogCQl1NjQgZW50cnk7CiAJCWludCByZXQ7CiYjNDM7CQlpbnQgcG9zdGVkX2ludHI7CiYjNDM7CQlib29sIGlzX3ZjcHVfd2FpdGluZyA9IGZhbHNlOwogCiAJCS8qCiAJCSAqIFByZXZlbnQgdGhlIHZDUFUgZnJvbSBiZWluZyBzY2hlZHVsZWQgb3V0IG9yIG1pZ3JhdGVkIHVudGlsCkBAIC05NDksMTUgJiM0MzsxMDAwLDIzIEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLAogCQkgKi8KIAkJZW50cnkgPSBzdm0tJmd0O2F2aWNfcGh5c2ljYWxfaWRfZW50cnk7CiAJCWlmIChlbnRyeSAmYW1wOyBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0lTX1JVTk5JTkdfTUFTSykgewotCQkJcGlfZGF0YS5jcHUgPSBlbnRyeSAmYW1wOyBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0hPU1RfUEhZU0lDQUxfSURfTUFTSzsKJiM0MzsJCQlwaV9kYXRhLmFwaWNpZCA9IGVudHJ5ICZhbXA7IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfSE9TVF9QSFlTSUNBTF9JRF9NQVNLOwomIzQzOwkJCXBpX2RhdGEuZmxhZ3MgPSBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkc7CiAJCX0gZWxzZSB7Ci0JCQlwaV9kYXRhLmNwdSA9IC0xOwotCQkJcGlfZGF0YS5nYV9sb2dfaW50ciA9IGVudHJ5ICZhbXA7IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfR0FfTE9HX0lOVFI7CiYjNDM7CQkJcG9zdGVkX2ludHIgPSAhIShlbnRyeSAmYW1wOyBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0dBX0xPR19JTlRSKTsKJiM0MzsJCQlwaV9kYXRhLmZsYWdzID0gcG9zdGVkX2ludHIgJmx0OyZsdDsgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFJfU0hJRlQ7CiYjNDM7CQkJaWYgKGFtZF9pb21tdV9nYXBwaSkgewomIzQzOwkJCQlwaV9kYXRhLmFwaWNpZCA9IGt2bV9jcHVfZ2V0X2FwaWNpZChzdm0tJmd0O2dhcHBpX2NwdSk7CiYjNDM7CQkJCWlmIChsaXN0X2VtcHR5KCZhbXA7c3ZtLSZndDtpcl9saXN0KSkgewomIzQzOwkJCQkJYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS0mZ3Q7Z2FwcGlfY3B1KTsKJiM0MzsJCQkJCWlzX3ZjcHVfd2FpdGluZyA9IHRydWU7CiYjNDM7CQkJCX0KJiM0MzsJCQl9CiAJCX0KIAogCQlyZXQgPSBpcnFfc2V0X3ZjcHVfYWZmaW5pdHkoaG9zdF9pcnEsICZhbXA7cGlfZGF0YSk7CiAJCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwomIzQzOwkJCWdvdG8gZ2FwcGlfZXJyX291dDsKIAogCQkvKgogCQkgKiBSZXZlcnQgdG8gbGVnYWN5IG1vZGUgaWYgdGhlIElPTU1VIGRpZG4mIzM5O3QgcHJvdmlkZSBtZXRhZGF0YQpAQCAtOTY2LDEyICYjNDM7MTAyNSwxNyBAQCBpbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSwKIAkJICovCiAJCWlmIChXQVJOX09OX09OQ0UoIXBpX2RhdGEuaXJfZGF0YSkpIHsKIAkJCWlycV9zZXRfdmNwdV9hZmZpbml0eShob3N0X2lycSwgTlVMTCk7Ci0JCQlyZXR1cm4gLUVJTzsKJiM0MzsJCQlyZXQgPSAtRUlPOwomIzQzOwkJCWdvdG8gZ2FwcGlfZXJyX291dDsKIAkJfQogCiAJCWlycWZkLSZndDtpcnFfYnlwYXNzX2RhdGEgPSBwaV9kYXRhLmlyX2RhdGE7CiAJCWxpc3RfYWRkKCZhbXA7aXJxZmQtJmd0O3ZjcHVfbGlzdCwgJmFtcDtzdm0tJmd0O2lyX2xpc3QpOwogCQlyZXR1cm4gMDsKJiM0MztnYXBwaV9lcnJfb3V0OgomIzQzOwkJaWYgKGlzX3ZjcHVfd2FpdGluZykKJiM0MzsJCQlhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tJmd0O2dhcHBpX2NwdSk7CiYjNDM7CQlyZXR1cm4gcmV0OwogCX0KIAlyZXR1cm4gaXJxX3NldF92Y3B1X2FmZmluaXR5KGhvc3RfaXJxLCBOVUxMKTsKIH0KQEAgLTEwMDQsMTAgJiM0MzsxMDY4LDE0IEBAIGVudW0gYXZpY192Y3B1X2FjdGlvbiB7CiAJQVZJQ19TVEFSVF9CTE9DS0lORwk9IEJJVCgxKSwKIH07CiAKLXN0YXRpYyB2b2lkIGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3B1LAotCQkJCQkgICAgZW51bSBhdmljX3ZjcHVfYWN0aW9uIGFjdGlvbikKJiM0MztzdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGFwaWNpZCwKJiM0MzsJCQkJCSAgICBpbnQgY3B1LCBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKQogewotCWJvb2wgZ2FfbG9nX2ludHIgPSAoYWN0aW9uICZhbXA7IEFWSUNfU1RBUlRfQkxPQ0tJTkcpOwomIzQzOwlpbnQgcG9zdGVkX2ludHIgPSAhIShhY3Rpb24gJmFtcDsgQVZJQ19TVEFSVF9CTE9DS0lORykgJmx0OyZsdDsKJiM0MzsJCQkgIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSX1NISUZUOwomIzQzOwlpbnQgaXNfdmNwdV9ydW5uaW5nID0gKGFwaWNpZCAmZ3Q7PSAwKSAmbHQ7Jmx0OwomIzQzOwkJCSAgICAgIEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklOR19TSElGVDsKJiM0MzsJaW50IGZsYWdzID0gcG9zdGVkX2ludHIgfCBpc192Y3B1X3J1bm5pbmc7CiAJc3RydWN0IHZjcHVfc3ZtICpzdm0gPSB0b19zdm0odmNwdSk7CiAJc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkOwogCkBAIC0xMDE3LDE2ICYjNDM7MTA4NSwzMCBAQCBzdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSwKIAkgKiBIZXJlLCB3ZSBnbyB0aHJvdWdoIHRoZSBwZXItdmNwdSBpcl9saXN0IHRvIHVwZGF0ZSBhbGwgZXhpc3RpbmcKIAkgKiBpbnRlcnJ1cHQgcmVtYXBwaW5nIHRhYmxlIGVudHJ5IHRhcmdldGluZyB0aGlzIHZjcHUuCiAJICovCi0JaWYgKGxpc3RfZW1wdHkoJmFtcDtzdm0tJmd0O2lyX2xpc3QpKQomIzQzOwlpZiAobGlzdF9lbXB0eSgmYW1wO3N2bS0mZ3Q7aXJfbGlzdCkpIHsKJiM0MzsJCWlmIChhbWRfaW9tbXVfZ2FwcGkgJmFtcDsmYW1wOyBjcHUgJmd0Oz0gMCkKJiM0MzsJCQlzdm0tJmd0O2dhcHBpX2NwdSA9IGNwdTsKIAkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChpc192Y3B1X3J1bm5pbmcgJmFtcDsmYW1wOyBhbWRfaW9tbXVfZ2FwcGkpIHsKJiM0MzsJCS8qIElGIGNvbmRpdGlvbiBoYW5kbGVzIHRoZSBpbml0aWFsIHN0YXRlICovCiYjNDM7CQlpZiAoc3ZtLSZndDtnYXBwaV9jcHUgIT0gLTEpCiYjNDM7CQkJYXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLSZndDtnYXBwaV9jcHUpOwomIzQzOwomIzQzOwkJc3ZtLSZndDtnYXBwaV9jcHUgPSBjcHU7IC8qIFN0b3JlIGNwdSBubyBhcyB0YXJnZXQgZm9yIEdBUFBJICovCiYjNDM7CX0gZWxzZSBpZiAoYW1kX2lvbW11X2dhcHBpKSB7CiYjNDM7CQlhcGljaWQgPSBrdm1fY3B1X2dldF9hcGljaWQoc3ZtLSZndDtnYXBwaV9jcHUpOwomIzQzOwkJYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS0mZ3Q7Z2FwcGlfY3B1KTsKJiM0MzsJfQogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShpcnFmZCwgJmFtcDtzdm0tJmd0O2lyX2xpc3QsIHZjcHVfbGlzdCkgewogCQl2b2lkICpkYXRhID0gaXJxZmQtJmd0O2lycV9ieXBhc3NfZGF0YTsKIAogCQlpZiAoIShhY3Rpb24gJmFtcDsgQVZJQ19UT0dHTEVfT05fT0ZGKSkKLQkJCVdBUk5fT05fT05DRShhbWRfaW9tbXVfdXBkYXRlX2dhKGRhdGEsIGNwdSwgZ2FfbG9nX2ludHIpKTsKLQkJZWxzZSBpZiAoY3B1ICZndDs9IDApCi0JCQlXQVJOX09OX09OQ0UoYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoZGF0YSwgY3B1LCBnYV9sb2dfaW50cikpOwomIzQzOwkJCVdBUk5fT05fT05DRShhbWRfaW9tbXVfdXBkYXRlX2dhKGRhdGEsIGFwaWNpZCwgZmxhZ3MpKTsKJiM0MzsJCWVsc2UgaWYgKGlzX3ZjcHVfcnVubmluZykKJiM0MzsJCQlXQVJOX09OX09OQ0UoYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoZGF0YSwgYXBpY2lkLCBmbGFncykpOwogCQllbHNlCiAJCQlXQVJOX09OX09OQ0UoYW1kX2lvbW11X2RlYWN0aXZhdGVfZ3Vlc3RfbW9kZShkYXRhKSk7CiAJfQpAQCAtMTA4MCw3ICYjNDM7MTE2Miw3IEBAIHN0YXRpYyB2b2lkIF9fYXZpY192Y3B1X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3B1LAogCiAJV1JJVEVfT05DRShrdm1fc3ZtLSZndDthdmljX3BoeXNpY2FsX2lkX3RhYmxlW3ZjcHUtJmd0O3ZjcHVfaWRdLCBlbnRyeSk7CiAKLQlhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIGhfcGh5c2ljYWxfaWQsIGFjdGlvbik7CiYjNDM7CWF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkodmNwdSwgaF9waHlzaWNhbF9pZCwgY3B1LCBhY3Rpb24pOwogCiAJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtzdm0tJmd0O2lyX2xpc3RfbG9jaywgZmxhZ3MpOwogfQpAQCAtMTEyMyw3ICYjNDM7MTIwNSw3IEBAIHN0YXRpYyB2b2lkIF9fYXZpY192Y3B1X3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGVudW0gYXZpY192Y3B1X2FjdGlvbiBhY3Rpb24pCiAJICovCiAJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZhbXA7c3ZtLSZndDtpcl9saXN0X2xvY2ssIGZsYWdzKTsKIAotCWF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkodmNwdSwgLTEsIGFjdGlvbik7CiYjNDM7CWF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkodmNwdSwgLTEsIC0xLCBhY3Rpb24pOwogCiAJV0FSTl9PTl9PTkNFKGVudHJ5ICZhbXA7IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfR0FfTE9HX0lOVFIpOwogCkBAIC0xMjk2LDYgJiM0MzsxMzc4LDIxIEBAIHN0YXRpYyBib29sIF9faW5pdCBhdmljX3dhbnRfYXZpY19lbmFibGVkKHZvaWQpCiAJcmV0dXJuIHRydWU7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyKHZvaWQpCiYjNDM7ewomIzQzOwlpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwomIzQzOwlzdHJ1Y3QgbGlzdF9oZWFkICp2Y3B1X3dha2V1cF9saXN0ID0gJmFtcDtwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIGNwdSk7CiYjNDM7CXJhd19zcGlubG9ja190ICpzcGlubG9jayA9ICZhbXA7cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7CiYjNDM7CXN0cnVjdCB2Y3B1X3N2bSAqc3ZtOwomIzQzOwomIzQzOwlyYXdfc3Bpbl9sb2NrKHNwaW5sb2NrKTsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShzdm0sIHZjcHVfd2FrZXVwX2xpc3QsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpIHsKJiM0MzsJCWlmIChrdm1fbGFwaWNfZmluZF9oaWdoZXN0X2lycigmYW1wO3N2bS0mZ3Q7dmNwdSkgJmd0Oz0gMCkKJiM0MzsJCQlrdm1fdmNwdV93YWtlX3VwKCZhbXA7c3ZtLSZndDt2Y3B1KTsKJiM0MzsJfQomIzQzOwlyYXdfc3Bpbl91bmxvY2soc3BpbmxvY2spOwomIzQzO30KJiM0MzsKIC8qCiAgKiBOb3RlOgogICogLSBUaGUgbW9kdWxlIHBhcmFtIGF2aWMgZW5hYmxlIGJvdGggeEFQSUMgYW5kIHgyQVBJQyBtb2RlLgpAQCAtMTMwNCwxMiAmIzQzOzE0MDEsMTggQEAgc3RhdGljIGJvb2wgX19pbml0IGF2aWNfd2FudF9hdmljX2VuYWJsZWQodm9pZCkKICAqLwogYm9vbCBfX2luaXQgYXZpY19oYXJkd2FyZV9zZXR1cCh2b2lkKQogewomIzQzOwlpbnQgY3B1OwogCWF2aWMgPSBhdmljX3dhbnRfYXZpY19lbmFibGVkKCk7CiAJaWYgKCFhdmljKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlwcl9pbmZvKCYjMzQ7QVZJQyBlbmFibGVkXG4mIzM0Oyk7CiAKJiM0MzsJZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkgewomIzQzOwkJSU5JVF9MSVNUX0hFQUQoJmFtcDtwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIGNwdSkpOwomIzQzOwkJcmF3X3NwaW5fbG9ja19pbml0KCZhbXA7cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSkpOwomIzQzOwl9CiYjNDM7CiAJLyogQVZJQyBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgeDJBVklDLiAqLwogCXgyYXZpY19lbmFibGVkID0gYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1gyQVZJQyk7CiAJaWYgKHgyYXZpY19lbmFibGVkKSB7CkBAIC0xMzMzLDYgJiM0MzsxNDM2LDcgQEAgYm9vbCBfX2luaXQgYXZpY19oYXJkd2FyZV9zZXR1cCh2b2lkKQogCQllbmFibGVfaXBpdiA9IGZhbHNlOwogCiAJYW1kX2lvbW11X3JlZ2lzdGVyX2dhX2xvZ19ub3RpZmllcigmYW1wO2F2aWNfZ2FfbG9nX25vdGlmaWVyKTsKJiM0MzsJa3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcigmYW1wO2F2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXIpOwogCiAJcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwppbmRleCBlMDJhMzhkYTUyOTZlMy4uYjY4NzEzM2Y4NTI4YmEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwpAQCAtMTM1Niw2ICYjNDM7MTM1Niw4IEBAIHN0YXRpYyB2b2lkIHN2bV92Y3B1X2ZyZWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiAJV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7c3ZtLSZndDtpcl9saXN0KSk7CiAKJiM0MzsJYXZpY19kZXN0cm95X3ZjcHUoc3ZtKTsKJiM0MzsKIAlzdm1fbGVhdmVfbmVzdGVkKHZjcHUpOwogCXN2bV9mcmVlX25lc3RlZChzdm0pOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uaAppbmRleCA1MTM3NDE2YmU1OTNkNy4uNDdkNWJiNWQ3MTAzZGEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uaApAQCAtMzYyLDYgJiM0MzszNjIsMTAgQEAgc3RydWN0IHZjcHVfc3ZtIHsKIAogCS8qIEd1ZXN0IEdJRiB2YWx1ZSwgdXNlZCB3aGVuIHZHSUYgaXMgbm90IGVuYWJsZWQgKi8KIAlib29sIGd1ZXN0X2dpZjsKJiM0MzsKJiM0MzsJLyogR0FQUEkgcmVsYXRlZCBmaWVsZHMgKi8KJiM0MzsJc3RydWN0IGxpc3RfaGVhZCBnYXBwaV92Y3B1X3dha2V1cF9saXN0OwomIzQzOwlpbnQgZ2FwcGlfY3B1OwogfTsKIAogc3RydWN0IHN2bV9jcHVfZGF0YSB7CkBAIC05MDksNiAmIzQzOzkxMyw3IEBAIHZvaWQgYXZpY19pbml0X3ZtY2Ioc3RydWN0IHZjcHVfc3ZtICpzdm0sIHN0cnVjdCB2bWNiICp2bWNiKTsKIGludCBhdmljX2luY29tcGxldGVfaXBpX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogaW50IGF2aWNfdW5hY2NlbGVyYXRlZF9hY2Nlc3NfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBpbnQgYXZpY19pbml0X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pOwomIzQzO3ZvaWQgYXZpY19kZXN0cm95X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pOwogdm9pZCBhdmljX3ZjcHVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUpOwogdm9pZCBhdmljX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2b2lkIGF2aWNfYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXUuaCBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdS5oCmluZGV4IDgzNGQ4ZmFiZmJhMzg3Li4wNDQxNzljYWIxMmU0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmgKQEAgLTQxLDYgJiM0Mzs0MSw3IEBAIGludCBhbWRfaW9tbXVfZW5hYmxlKHZvaWQpOwogdm9pZCBhbWRfaW9tbXVfZGlzYWJsZSh2b2lkKTsKIGludCBhbWRfaW9tbXVfcmVlbmFibGUoaW50IG1vZGUpOwogaW50IGFtZF9pb21tdV9lbmFibGVfZmF1bHRpbmcodW5zaWduZWQgaW50IGNwdSk7CiYjNDM7ZXh0ZXJuIGJvb2wgYW1kX2lvbW11X2dhcHBpOwogZXh0ZXJuIGludCBhbWRfaW9tbXVfZ3Vlc3RfaXI7CiBleHRlcm4gZW51bSBwcm90ZWN0aW9uX2RvbWFpbl9tb2RlIGFtZF9pb21tdV9wZ3RhYmxlOwogZXh0ZXJuIGludCBhbWRfaW9tbXVfZ3B0X2xldmVsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11X3R5cGVzLmggYi9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaAppbmRleCBmOWY3MTgwODc4OTMwMy4uZGUwYjIzMzA2OTQ0YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdV90eXBlcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdV90eXBlcy5oCkBAIC05NCw2ICYjNDM7OTQsNyBAQAogI2RlZmluZSBGRUFUVVJFX1gyQVBJQwkJQklUX1VMTCgyKQogI2RlZmluZSBGRUFUVVJFX05YCQlCSVRfVUxMKDMpCiAjZGVmaW5lIEZFQVRVUkVfR1QJCUJJVF9VTEwoNCkKJiM0MzsjZGVmaW5lIEZFQVRVUkVfR0FQUEkJCUJJVF9VTEwoNSkKICNkZWZpbmUgRkVBVFVSRV9JQQkJQklUX1VMTCg2KQogI2RlZmluZSBGRUFUVVJFX0dBCQlCSVRfVUxMKDcpCiAjZGVmaW5lIEZFQVRVUkVfSEUJCUJJVF9VTEwoOCkKQEAgLTExMyw2ICYjNDM7MTE0LDcgQEAKIC8qIEV4dGVuZGVkIEZlYXR1cmUgMiBCaXRzICovCiAjZGVmaW5lIEZFQVRVUkVfU0VWU05QSU9fU1VQCUJJVF9VTEwoMSkKICNkZWZpbmUgRkVBVFVSRV9HQ1IzVFJQTU9ERQlCSVRfVUxMKDMpCiYjNDM7I2RlZmluZSBGRUFUVVJFX0dBUFBJRElTU1VQCUJJVF9VTEwoNCkKICNkZWZpbmUgRkVBVFVSRV9TTlBBVklDU1VQCUdFTk1BU0tfVUxMKDcsIDUpCiAjZGVmaW5lIEZFQVRVUkVfU05QQVZJQ1NVUF9HQU0oeCkgXAogCShGSUVMRF9HRVQoRkVBVFVSRV9TTlBBVklDU1VQLCB4KSA9PSAweDEpCkBAIC0xOTAsNiAmIzQzOzE5Miw3IEBACiAjZGVmaW5lIENPTlRST0xfRVBIX0VOCQk0NQogI2RlZmluZSBDT05UUk9MX1hUX0VOCQk1MAogI2RlZmluZSBDT05UUk9MX0lOVENBUFhUX0VOCTUxCiYjNDM7I2RlZmluZSBDT05UUk9MX0dBUFBJX0VOCTU1CiAjZGVmaW5lIENPTlRST0xfR0NSM1RSUE1PREUJNTgKICNkZWZpbmUgQ09OVFJPTF9JUlRDQUNIRURJUwk1OQogI2RlZmluZSBDT05UUk9MX1NOUEFWSUNfRU4JNjEKQEAgLTEwMDQsNyAmIzQzOzEwMDcsOCBAQCB1bmlvbiBpcnRlX2dhX2xvIHsKIAkJICAgIG5vX2ZhdWx0CTogMSwKIAkJICAgIC8qIC0tLS0tLSAqLwogCQkgICAgZ2FfbG9nX2ludHIJOiAxLAotCQkgICAgcnN2ZDEJOiAzLAomIzQzOwkJICAgIHJzdmQxCTogMiwKJiM0MzsJCSAgICBnYXBwaV9kaXMJOiAxLAogCQkgICAgaXNfcnVuCTogMSwKIAkJICAgIC8qIC0tLS0tLSAqLwogCQkgICAgZ3Vlc3RfbW9kZQk6IDEsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmMgYi9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmMKaW5kZXggM2JkYjM4MGQyM2U5YTkuLmIzZTFkOGVlN2U5ZDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pb21tdS9hbWQvaW5pdC5jCkBAIC0xNjAsNiAmIzQzOzE2MCw5IEBAIHU4IGFtZF9pb21tdV9ocHRfbGV2ZWw7CiAvKiBHdWVzdCBwYWdlIHRhYmxlIGxldmVsICovCiBpbnQgYW1kX2lvbW11X2dwdF9sZXZlbCA9IFBBR0VfTU9ERV80X0xFVkVMOwogCiYjNDM7Ym9vbCBhbWRfaW9tbXVfZ2FwcGk7CiYjNDM7RVhQT1JUX1NZTUJPTChhbWRfaW9tbXVfZ2FwcGkpOwomIzQzOwogaW50IGFtZF9pb21tdV9ndWVzdF9pciA9IEFNRF9JT01NVV9HVUVTVF9JUl9WQVBJQzsKIHN0YXRpYyBpbnQgYW1kX2lvbW11X3h0X21vZGUgPSBJUlFfUkVNQVBfWEFQSUNfTU9ERTsKIApAQCAtMzAzNSwxMSAmIzQzOzMwMzgsMjAgQEAgc3RhdGljIHZvaWQgZW5hYmxlX2lvbW11c192YXBpYyh2b2lkKQogCQlyZXR1cm47CiAJfQogCiYjNDM7CWlmIChhbWRfaW9tbXVfZ2FwcGkgJmFtcDsmYW1wOwomIzQzOwkgICAgIShjaGVja19mZWF0dXJlKEZFQVRVUkVfR0FQUEkpICZhbXA7JmFtcDsKJiM0MzsJICAgICAgQU1EX0lPTU1VX0dVRVNUX0lSX1ZBUElDKGFtZF9pb21tdV9ndWVzdF9pcikpKSB7CiYjNDM7CQlwcl93YXJuKCYjMzQ7R0FQUEkgaXMgbm90IHN1cHBvcnRlZC5cbiYjMzQ7KTsKJiM0MzsJCWFtZF9pb21tdV9nYXBwaSA9IGZhbHNlOwomIzQzOwl9CiYjNDM7CiAJLyogRW5hYmxpbmcgR0FNIGFuZCBTTlBBVklDIHN1cHBvcnQgKi8KIAlmb3JfZWFjaF9pb21tdShpb21tdSkgewotCQlpZiAoaW9tbXVfaW5pdF9nYV9sb2coaW9tbXUpIHx8Ci0JCSAgICBpb21tdV9nYV9sb2dfZW5hYmxlKGlvbW11KSkKLQkJCXJldHVybjsKJiM0MzsJCWlmIChhbWRfaW9tbXVfZ2FwcGkpCiYjNDM7CQkJaW9tbXVfZmVhdHVyZV9lbmFibGUoaW9tbXUsIENPTlRST0xfR0FQUElfRU4pOwomIzQzOwkJZWxzZSBpZiAoaW9tbXVfaW5pdF9nYV9sb2coaW9tbXUpIHx8CiYjNDM7CQkJIGlvbW11X2dhX2xvZ19lbmFibGUoaW9tbXUpKQomIzQzOwkJCSByZXR1cm47CiAKIAkJaW9tbXVfZmVhdHVyZV9lbmFibGUoaW9tbXUsIENPTlRST0xfR0FNX0VOKTsKIAkJaWYgKGFtZF9pb21tdV9zbnBfZW4pCkBAIC0zMDQ3LDcgJiM0MzszMDU5LDggQEAgc3RhdGljIHZvaWQgZW5hYmxlX2lvbW11c192YXBpYyh2b2lkKQogCX0KIAogCWFtZF9pb21tdV9pcnFfb3BzLmNhcGFiaWxpdHkgfD0gKDEgJmx0OyZsdDsgSVJRX1BPU1RJTkdfQ0FQKTsKLQlwcl9pbmZvKCYjMzQ7VmlydHVhbCBBUElDIGVuYWJsZWRcbiYjMzQ7KTsKJiM0MzsJcHJfaW5mbygmIzM0O1ZpcnR1YWwgQVBJQyBlbmFibGVkIHdpdGggJXNcbiYjMzQ7LAomIzQzOwkJYW1kX2lvbW11X2dhcHBpID8gJiMzNDtHQVBQSSYjMzQ7IDogJiMzNDtHQUxPRyYjMzQ7KTsKICNlbmRpZgogfQogCkBAIC0zNzM4LDYgJiM0MzszNzUxLDggQEAgc3RhdGljIGludCBfX2luaXQgcGFyc2VfYW1kX2lvbW11X29wdGlvbnMoY2hhciAqc3RyKQogCQl9IGVsc2UgaWYgKHN0cm5jbXAoc3RyLCAmIzM0O3YyX3Bnc2l6ZXNfb25seSYjMzQ7LCAxNSkgPT0gMCkgewogCQkJcHJfaW5mbygmIzM0O1Jlc3RyaWN0aW5nIFYxIHBhZ2Utc2l6ZXMgdG8gNEtpQi8yTWlCLzFHaUImIzM0Oyk7CiAJCQlhbWRfaW9tbXVfcGdzaXplX2JpdG1hcCA9IEFNRF9JT01NVV9QR1NJWkVTX1YyOwomIzQzOwkJfSBlbHNlIGlmIChzdHJuY21wKHN0ciwgJiMzNDtnYXBwaSYjMzQ7LCA1KSA9PSAwKSB7CiYjNDM7CQkJYW1kX2lvbW11X2dhcHBpID0gdHJ1ZTsKIAkJfSBlbHNlIHsKIAkJCXByX25vdGljZSgmIzM0O1Vua25vd24gb3B0aW9uIC0gJiMzOTslcyYjMzk7XG4mIzM0Oywgc3RyKTsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvaW9tbXUuYyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmMKaW5kZXggNTdkYzhmYWJjN2Q5YjkuLjQ2OTBjZWNjOWFhN2U0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pb21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmMKQEAgLTM5NTksMTkgJiM0MzszOTU5LDI4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgYW1kX2lyX2RvbWFpbl9vcHMgPSB7CiAJLmRlYWN0aXZhdGUgPSBpcnFfcmVtYXBwaW5nX2RlYWN0aXZhdGUsCiB9OwogCi1zdGF0aWMgdm9pZCBfX2FtZF9pb21tdV91cGRhdGVfZ2Eoc3RydWN0IGlydGVfZ2EgKmVudHJ5LCBpbnQgY3B1LAotCQkJCSAgYm9vbCBnYV9sb2dfaW50cikKJiM0MztzdGF0aWMgdm9pZCBfX2FtZF9pb21tdV91cGRhdGVfZ2Eoc3RydWN0IGlydGVfZ2EgKmVudHJ5LCBpbnQgYXBpY2lkLCBpbnQgZmxhZ3MpCiB7Ci0JaWYgKGNwdSAmZ3Q7PSAwKSB7CiYjNDM7CWlmIChmbGFncyAmYW1wOyBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkcpIHsKIAkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5kZXN0aW5hdGlvbiA9Ci0JCQkJCUFQSUNJRF9UT19JUlRFX0RFU1RfTE8oY3B1KTsKJiM0MzsJCQkJCUFQSUNJRF9UT19JUlRFX0RFU1RfTE8oYXBpY2lkKTsKIAkJZW50cnktJmd0O2hpLmZpZWxkcy5kZXN0aW5hdGlvbiA9Ci0JCQkJCUFQSUNJRF9UT19JUlRFX0RFU1RfSEkoY3B1KTsKJiM0MzsJCQkJCUFQSUNJRF9UT19JUlRFX0RFU1RfSEkoYXBpY2lkKTsKIAkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5pc19ydW4gPSB0cnVlOwogCQllbnRyeS0mZ3Q7bG8uZmllbGRzX3ZhcGljLmdhX2xvZ19pbnRyID0gZmFsc2U7CiAJfSBlbHNlIHsKLQkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTsKLQkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5nYV9sb2dfaW50ciA9IGdhX2xvZ19pbnRyOwomIzQzOwkJYm9vbCBwb3N0ZWRfaW50ciA9ICEhKGZsYWdzICZhbXA7IEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSKTsKJiM0MzsJCWlmIChhbWRfaW9tbXVfZ2FwcGkpIHsKJiM0MzsJCQllbnRyeS0mZ3Q7bG8uZmllbGRzX3ZhcGljLmdhcHBpX2RpcyA9ICFwb3N0ZWRfaW50ciAmYW1wOyZhbXA7CiYjNDM7CQkJCQkJCSAgIGNoZWNrX2ZlYXR1cmUyKEZFQVRVUkVfR0FQUElESVNTVVApOwomIzQzOwkJCWVudHJ5LSZndDtsby5maWVsZHNfdmFwaWMuaXNfcnVuID0gZmFsc2U7CiYjNDM7CQkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5kZXN0aW5hdGlvbiA9CiYjNDM7CQkJCQkJQVBJQ0lEX1RPX0lSVEVfREVTVF9MTyhhcGljaWQpOwomIzQzOwkJCWVudHJ5LSZndDtoaS5maWVsZHMuZGVzdGluYXRpb24gPSBBUElDSURfVE9fSVJURV9ERVNUX0hJKGFwaWNpZCk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJ5LSZndDtsby5maWVsZHNfdmFwaWMuaXNfcnVuID0gZmFsc2U7CiYjNDM7CQkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5nYV9sb2dfaW50ciA9IHBvc3RlZF9pbnRyOwomIzQzOwkJfQogCX0KIH0KIApAQCAtMzk5Miw3ICYjNDM7NDAwMSw3IEBAIHN0YXRpYyB2b2lkIF9fYW1kX2lvbW11X3VwZGF0ZV9nYShzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnksIGludCBjcHUsCiAgKiBhbmQgdGh1cyBkb24mIzM5O3QgcmVxdWlyZSBhbiBpbnZhbGlkYXRpb24gdG8gZW5zdXJlIHRoZSBJT01NVSBjb25zdW1lcyBmcmVzaAogICogaW5mb3JtYXRpb24uCiAgKi8KLWludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpCiYjNDM7aW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKQogewogCXN0cnVjdCBhbWRfaXJfZGF0YSAqaXJfZGF0YSA9IChzdHJ1Y3QgYW1kX2lyX2RhdGEgKilkYXRhOwogCXN0cnVjdCBpcnRlX2dhICplbnRyeSA9IChzdHJ1Y3QgaXJ0ZV9nYSAqKSBpcl9kYXRhLSZndDtlbnRyeTsKQEAgLTQwMDYsMTQgJiM0Mzs0MDE1LDE0IEBAIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpCiAJaWYgKCFpcl9kYXRhLSZndDtpb21tdSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKLQlfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGNwdSwgZ2FfbG9nX2ludHIpOwomIzQzOwlfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGFwaWNpZCwgZmxhZ3MpOwogCiAJcmV0dXJuIF9fbW9kaWZ5X2lydGVfZ2EoaXJfZGF0YS0mZ3Q7aW9tbXUsIGlyX2RhdGEtJmd0O2lycV8yX2lydGUuZGV2aWQsCiAJCQkJaXJfZGF0YS0mZ3Q7aXJxXzJfaXJ0ZS5pbmRleCwgZW50cnkpOwogfQogRVhQT1JUX1NZTUJPTChhbWRfaW9tbXVfdXBkYXRlX2dhKTsKIAotaW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpCiYjNDM7aW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncykKIHsKIAlzdHJ1Y3QgYW1kX2lyX2RhdGEgKmlyX2RhdGEgPSAoc3RydWN0IGFtZF9pcl9kYXRhICopZGF0YTsKIAlzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnkgPSAoc3RydWN0IGlydGVfZ2EgKikgaXJfZGF0YS0mZ3Q7ZW50cnk7CkBAIC00MDM0LDkgJiM0Mzs0MDQzLDEzIEBAIGludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKQogCWVudHJ5LSZndDtsby5maWVsZHNfdmFwaWMuZ3Vlc3RfbW9kZSAgPSAxOwogCWVudHJ5LSZndDtoaS5maWVsZHMuZ2Ffcm9vdF9wdHIgICAgICAgPSBpcl9kYXRhLSZndDtnYV9yb290X3B0cjsKIAllbnRyeS0mZ3Q7aGkuZmllbGRzLnZlY3RvciAgICAgICAgICAgID0gaXJfZGF0YS0mZ3Q7Z2FfdmVjdG9yOwotCWVudHJ5LSZndDtsby5maWVsZHNfdmFwaWMuZ2FfdGFnICAgICAgPSBpcl9kYXRhLSZndDtnYV90YWc7CiAKLQlfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGNwdSwgZ2FfbG9nX2ludHIpOwomIzQzOwlpZiAoYW1kX2lvbW11X2dhcHBpKQomIzQzOwkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5nYV90YWcgPSBQT1NURURfSU5UUl9XQUtFVVBfVkVDVE9SOwomIzQzOwllbHNlCiYjNDM7CQllbnRyeS0mZ3Q7bG8uZmllbGRzX3ZhcGljLmdhX3RhZyA9IGlyX2RhdGEtJmd0O2dhX3RhZzsKJiM0MzsKJiM0MzsJX19hbWRfaW9tbXVfdXBkYXRlX2dhKGVudHJ5LCBhcGljaWQsIGZsYWdzKTsKIAogCXJldHVybiBtb2RpZnlfaXJ0ZV9nYShpcl9kYXRhLSZndDtpb21tdSwgaXJfZGF0YS0mZ3Q7aXJxXzJfaXJ0ZS5kZXZpZCwKIAkJCSAgICAgIGlyX2RhdGEtJmd0O2lycV8yX2lydGUuaW5kZXgsIGVudHJ5KTsKQEAgLTQxMDcsOCAmIzQzOzQxMjAsOCBAQCBzdGF0aWMgaW50IGFtZF9pcl9zZXRfdmNwdV9hZmZpbml0eShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEsIHZvaWQgKmluZm8pCiAJCWlyX2RhdGEtJmd0O2dhX3ZlY3RvciA9IHBpX2RhdGEtJmd0O3ZlY3RvcjsKIAkJaXJfZGF0YS0mZ3Q7Z2FfdGFnID0gcGlfZGF0YS0mZ3Q7Z2FfdGFnOwogCQlpZiAocGlfZGF0YS0mZ3Q7aXNfZ3Vlc3RfbW9kZSkKLQkJCXJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtJmd0O2NwdSwKLQkJCQkJCQkgICAgcGlfZGF0YS0mZ3Q7Z2FfbG9nX2ludHIpOwomIzQzOwkJCXJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtJmd0O2FwaWNpZCwKJiM0MzsJCQkJCQkJICAgIHBpX2RhdGEtJmd0O2ZsYWdzKTsKIAkJZWxzZQogCQkJcmV0ID0gYW1kX2lvbW11X2RlYWN0aXZhdGVfZ3Vlc3RfbW9kZShpcl9kYXRhKTsKIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9hbWQtaW9tbXUuaCBiL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmgKaW5kZXggZWRjZWU5ZjUzMzVhNmYuLjg3ZTc2ZjYxN2VhMTg1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmgKQEAgLTMwLDggJiM0MzszMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbWRfaW9tbXVfZGV0ZWN0KHZvaWQpIHsgfQogLyogSU9NTVUgQVZJQyBGdW5jdGlvbiAqLwogZXh0ZXJuIGludCBhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKGludCAoKm5vdGlmaWVyKSh1MzIpKTsKIAotZXh0ZXJuIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpOwotZXh0ZXJuIGludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKTsKJiM0MztleHRlcm4gaW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKTsKJiM0MztleHRlcm4gaW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncyk7CiBleHRlcm4gaW50IGFtZF9pb21tdV9kZWFjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSk7CiAKICNlbHNlIC8qIGRlZmluZWQoQ09ORklHX0FNRF9JT01NVSkgJmFtcDsmYW1wOyBkZWZpbmVkKENPTkZJR19JUlFfUkVNQVApICovCkBAIC00MiwxMiAmIzQzOzQyLDEyIEBAIGFtZF9pb21tdV9yZWdpc3Rlcl9nYV9sb2dfbm90aWZpZXIoaW50ICgqbm90aWZpZXIpKHUzMikpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cikKJiM0MztzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncykKIHsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cikKJiM0MztzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgYXBpY2lkLCBpbnQgZmxhZ3MpCiB7CiAJcmV0dXJuIDA7CiB9CkBAIC03Niw0ICYjNDM7NzYsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X3NucF9kaXNhYmxlKHZvaWQpIHsgcmV0dXJuIDA7IH0KIHN0YXRpYyBpbmxpbmUgYm9vbCBhbWRfaW9tbXVfc2V2X3Rpb19zdXBwb3J0ZWQodm9pZCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiYjNDM7I2RlZmluZSBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkdfU0hJRlQgMAomIzQzOyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfVkNQVV9SVU5OSU5HICBCSVQoMCkKJiM0MzsKJiM0MzsjZGVmaW5lIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSX1NISUZUIDEKJiM0MzsjZGVmaW5lIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSICBCSVQoMSkKJiM0MzsKJiM0MztleHRlcm4gYm9vbCBhbWRfaW9tbXVfZ2FwcGk7CiAjZW5kaWYgLyogX0FTTV9YODZfQU1EX0lPTU1VX0ggKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzOTgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgRXZhbHVhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgbmVlZCB0byBhc3Nlc3MgaWYgaXQgaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIGZpbGVzIG1vZGlmaWVkIOKAkyBgYXJjaC94ODYva3ZtL3N2bS9hdmljLmNgLCBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AsIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oYCwgYWxvbmcgd2l0aCBzb21lIElPTU1VIGZpbGVzIChgZHJpdmVycy9pb21tdS9hbWQvKmAgYW5kIGBpbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oYCkg4oCTIGltbWVkaWF0ZWx5IGNsdWUgbWUgaW4uIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBHdWVzdCBBUElDIFBvc3RlZCBJbnRlcnJ1cHRzIChHQVBQSSkgc3VwcG9ydCB3aXRoaW4gdGhlIEFNRCBJT01NVSBhbmQgS1ZNIFNWTSBBVklDLiBUaGlzIHNjcmVhbXMgJiMzNDt2aXJ0dWFsaXphdGlvbiYjMzQ7IGFuZCAmIzM0O0lPTU1VLCYjMzQ7IHNvIGl0JiMzOTtzIGEgaGlnaC1wcm9iYWJpbGl0eSB0YXJnZXQuCgpUaGUgbmV4dCBxdWVzdGlvbjogSXMgdGhpcyByZWFjaGFibGUgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQ/IENhbiB3ZSB0cmlnZ2VyIHRoaXMgaW4gc29tZXRoaW5nIGxpa2UgR0NFIG9yIFFFTVU/IEFic29sdXRlbHkuIEtWTSBTVk0g4oCTIEFNRCYjMzk7cyB2aXJ0dWFsaXphdGlvbiDigJMgY2FuIGRlZmluaXRlbHkgYmUgdGVzdGVkIHdpdGggbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBsaWtlIHJ1bm5pbmcgUUVNVSAqd2l0aCogS1ZNLCBvciBldmVuIHdpdGhpbiBHQ0UgaW5zdGFuY2VzIHRoYXQgaGF2ZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW5hYmxlZC4gR29vZCBuZXdzIOKAkyBzeXprYWxsZXIsIHdoaWNoIHdlJiMzOTtyZSB1c2luZywgZG9lcyBydW4gaW4gUUVNVS9HQ0UsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IGNhcGFibGUgb2YgZnV6emluZyBLVk0uIFRoaXMgcGF0Y2ggY2xlYXJseSB0b3VjaGVzIEtWTSBTVk0gYW5kIHRoZSBBTUQgSU9NTVUsIHNvIHRoYXQmIzM5O3MgdHdvIHNlcGFyYXRlIGFyZWFzIHRoYXQgbmVlZCBjaGVja2luZy4KCkhvbGQgb24sIGBhbWRfaW9tbXVfZ2FwcGlgIOKAkyB0aGF0JiMzOTtzIGEgKm5ldyogZmVhdHVyZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgbmVlZGVkLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gdGhpbmtpbmcgYEtWTV9BTURgIGFuZCBgQU1EX0lPTU1VYCBhcmUgdGhlIG9idmlvdXMgY2FuZGlkYXRlcy4gVGltZSB0byBicmVhayBvdXQgYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIHRob3NlIGNvbmZpZyBzeW1ib2xzLiBMZXQmIzM5O3MgZmluZCBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk1fQU1EJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNzEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyB0aGUgYEFNRF9JT01NVWAgY29uZmlndXJhdGlvbjoKCioqQW5hbHl6aW5nIEFNRF9JT01NVSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IHRvIGl0LiBGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgQU1EX0lPTU1VYCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGNydWNpYWwgZm9yIG1hbmFnaW5nIEkvTyBkZXZpY2VzLCBwYXJ0aWN1bGFybHkgaW4gZW52aXJvbm1lbnRzIHdoZXJlIHZpcnR1YWxpemF0aW9uIG9yIGFkdmFuY2VkIGhhcmR3YXJlIGZlYXR1cmVzIGFyZSBpbiBwbGF5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3Mgc2V0IHVwIHRvIGVuc3VyZSBwcm9wZXIgZGV2aWNlIGlzb2xhdGlvbiBhbmQgcGVyZm9ybWFuY2UuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBzcGVjaWZpYyByZWdpc3RlcnMgb3IgY29uZmlndXJhdGlvbiBmaWxlcywgZGVwZW5kaW5nIG9uIHRoZSBzeXN0ZW0gYW5kIGtlcm5lbCB2ZXJzaW9uLCBidXQgdGhlIG9iamVjdGl2ZSByZW1haW5zIHRoZSBzYW1lOiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGN1cnJlbnQgc3RhdGUgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgbWlzY29uZmlndXJhdGlvbnMuIERlcGVuZGluZyBvbiB3aGF0IEkgZmluZCwgSSBtYXkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgc3BlY2lmaWMgQU1EIGNoaXBzZXQgSSYjMzk7bSBkZWFsaW5nIHdpdGguIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBTURfSU9NTVUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0yLSMgQU1EIElPTU1VIHN1cHBvcnRcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6Mzpjb25maWcgQU1EX0lPTU1VXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQtXHRib29sIFwmIzM0O0FNRCBJT01NVSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0zMi1cbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6MzM6Y29uZmlnIEFNRF9JT01NVV9JT01NVUZEXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtFbmFibGUgSU9NTVVGRCBmZWF0dXJlcyBmb3IgQU1EIElPTU1VIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy00Mi1cbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6NDM6Y29uZmlnIEFNRF9JT01NVV9ERUJVR0ZTXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQ0LVx0Ym9vbCBcJiMzNDtFbmFibGUgQU1EIElPTU1VIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4MDcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBTUQgSU9NTVUgR0FQUEkgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBhbWRfaW9tbXVfZ2FwcGlgIGFjdGl2YXRlZCBieSB0aGUgYGFtZF9pb21tdT1nYXBwaWAgYm9vdCBwYXJhbWV0ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtjYW4gdGhpcyBiZSBmdXp6ZWQ/JiMzNDsgVGhlIGFuc3dlciBpcyAqbWF5YmUqLiBTeXprYWxsZXIgd29uJiMzOTt0IHBpY2sgdGhpcyB1cCBvbiBpdHMgb3duIHVubGVzcyBleHBsaWNpdGx5IGluc3RydWN0ZWQsIG1lYW5pbmcgaXQmIzM5O3MgZGVwZW5kZW50IG9uIHRoZSBib290IHBhcmFtZXRlciBiZWluZyBwYXNzZWQuIEhvd2V2ZXIsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgIGFuZCBgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVgIHdoaWNoIGFyZSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIHJlZ2FyZGxlc3MsIHNvIHRoZXJlIGlzIGNlcnRhaW5seSBhIHdheSBpbi4KCkJ1dCB0aGVuLCBob2xkIG9uIGEgc2Vjb25kLiBJdCBhbHNvIGFkZHMgYGF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXJgIGFuZCBhIGNhbGwgdG8gYGt2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXJgIHdpdGggaXQuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmchIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGBrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyYCBpcyBldmVuIGEgdGhpbmcuLi4gbGV0JiMzOTtzIGNoZWNrIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvaW5jbHVkZS9hc20vaXJxLmg9MzA9ZXh0ZXJuIHZvaWQgZml4dXBfaXJxcyh2b2lkKTtcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnEuaC0zMi0jaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxuYXJjaC94ODYvaW5jbHVkZS9hc20vaXJxLmg6MzM6ZXh0ZXJuIHZvaWQga3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcih2b2lkICgqaGFuZGxlcikodm9pZCkpO1xuYXJjaC94ODYvaW5jbHVkZS9hc20vaXJxLmgtMzQtI2VuZGlmXG4tLVxuYXJjaC94ODYva2VybmVsL2lycS5jPTM3Mz1zdGF0aWMgdm9pZCAoKmt2bV9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcikodm9pZCkgPSBkdW1teV9oYW5kbGVyO1xuYXJjaC94ODYva2VybmVsL2lycS5jLTM3NC1cbmFyY2gveDg2L2tlcm5lbC9pcnEuYzozNzU6dm9pZCBrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyKHZvaWQgKCpoYW5kbGVyKSh2b2lkKSlcbmFyY2gveDg2L2tlcm5lbC9pcnEuYy0zNzYte1xuLS1cbmFyY2gveDg2L2tlcm5lbC9pcnEuYy0zODMtfVxuYXJjaC94ODYva2VybmVsL2lycS5jOjM4NDpFWFBPUlRfU1lNQk9MX0ZPUl9LVk0oa3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcik7XG5hcmNoL3g4Ni9rZXJuZWwvaXJxLmMtMzg1LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jPTE0MDI9Ym9vbCBfX2luaXQgYXZpY19oYXJkd2FyZV9zZXR1cCh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTE0MzgtXHRhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKFx1MDAyNmF2aWNfZ2FfbG9nX25vdGlmaWVyKTtcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjE0Mzk6XHRrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyKFx1MDAyNmF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXIpO1xuYXJjaC94ODYva3ZtL3N2bS9hdmljLmMtMTQ0MC1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg0NzY9dm9pZCB2bXhfaGFyZHdhcmVfdW5zZXR1cCh2b2lkKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDc3LXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6ODQ3ODpcdGt2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXIoTlVMTCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg0NzktXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz04NTk4PV9faW5pdCBpbnQgdm14X2hhcmR3YXJlX3NldHVwKHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NzgyLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4NzgzOlx0a3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcihwaV93YWtldXBfaGFuZGxlcik7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg3ODQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwMDQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHQVBQSSBTdXBwb3J0IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgR0FQUEkgc3VwcG9ydC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBjaGFuZ2VzIGFuZCBzZWUgaG93IHRoZXkgYXJlIGltcGxlbWVudGVkLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIHNldmVyYWwga2V5IGZ1bmN0aW9uczogYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgLCBgYXZpY19waV91cGRhdGVfaXJ0ZWAsIGBhbWRfaW9tbXVfdXBkYXRlX2dhYCwgYW5kIGBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZWAuIFRoZXNlIGFyZSBhbGwgZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zLCBzbyBpdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGRldGFpbGVkIHJldmlldy4KCk5vdywgYSBrZXkgcXVlc3Rpb24gaXMgcmVhY2hhYmlsaXR5IOKAkyBjYW4gdGhpcyBuZXcgY29kZSBhY3R1YWxseSBiZSB0cmlnZ2VyZWQgaW4gYSByZWFsLXdvcmxkIHNjZW5hcmlvPyBDb25zaWRlcmluZyB0aGlzIGlzIEtWTS9TVk0vQVZJQyByZWxhdGVkLCBpdCBzaG91bGQgYmUgcmVhY2hhYmxlIHdoZW4gcnVubmluZyBuZXN0ZWQgS1ZNIG9uIEFNRCBoYXJkd2FyZSwgd2hpY2ggaW5jcmVhc2VzIG15IGNvbmZpZGVuY2UuIEFuZCwgYmVjYXVzZSBzeXprYWxsZXIgZnV6emVzIEtWTSwgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgcG90ZW50aWFsIHRhcmdldCBmb3IgZnV6emluZywgYW5kIHNvIEkgc2hvdWxkIGV4dHJhY3QgYSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZXNlIHN5bWJvbHMgZm9yIGNsb3NlciBleGFtaW5hdGlvbjogYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgLCBgYXZpY19waV91cGRhdGVfaXJ0ZWAsIGBhbWRfaW9tbXVfdXBkYXRlX2dhYCwgYGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlYCwgYGF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3RgLCBgYXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0YCwgYW5kIGBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyYC4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgc2NvcGUgb2YgdGhlc2UgZnVuY3Rpb25zLCB0aGlzIGlzIGltcG9ydGFudC4gSXQgbG9va3MgbGlrZSBgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eWAsIGBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0YCwgYGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdGAgYW5kIGBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyYCBhcmUgc3RhdGljLiBgYXZpY19waV91cGRhdGVfaXJ0ZWAgaXMgbm90IHN0YXRpYy4gYGFtZF9pb21tdV91cGRhdGVfZ2FgIGFuZCBgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVgIGFyZSBleHBvcnRlZCwgd2hpY2ggY291bGQgaGF2ZSBpbXBsaWNhdGlvbnMgZm9yIGhvdyB0aGV5IGFyZSB1c2VkIGFuZCBwb3RlbnRpYWxseSBleHBsb2l0ZWQuIEtub3dpbmcgd2hpY2ggZnVuY3Rpb25zIGFyZSBzdGF0aWMgaGVscHMgZGV0ZXJtaW5lIGhvdyBlYXNpbHkgdGhleSBjYW4gYmUgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4KClRoZXJlZm9yZSwgZm9yIGZ1cnRoZXIgYW5hbHlzaXMsIG15IGZvY3VzIGxpc3Qgd2lsbCBiZTogYGF2aWNfcGlfdXBkYXRlX2lydGVgLCBgYW1kX2lvbW11X3VwZGF0ZV9nYWAsIGBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZWAsIGBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5YCwgYGF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3RgLCBgYXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0YCBhbmQgYGF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXJgLgoKRmluYWxseSwgY29uZmlndXJhdGlvbiBpcyBpbXBvcnRhbnQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBLVk1fQU1EYCwgYEFNRF9JT01NVWAsIGFuZCBgSVJRX1JFTUFQYCBhcmUgZW5hYmxlZCBvciwgaWYgbm90LCBpZiB0aGV5IG5lZWQgdG8gYmUuIGBJUlFfUkVNQVBgIGlzIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQsIGJ1dCBpdCYjMzk7cyB3b3J0aCBkb3VibGUtY2hlY2tpbmcgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgc2V0IHVwIGNvcnJlY3RseSBmb3IgdGhpcyBHQVBQSSBzdXBwb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVJRX1JFTUFQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvS2NvbmZpZz0xOTk9c291cmNlIFwmIzM0O2RyaXZlcnMvaW9tbXUvcmlzY3YvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9pb21tdS9LY29uZmlnLTIwMC1cbmRyaXZlcnMvaW9tbXUvS2NvbmZpZzoyMDE6Y29uZmlnIElSUV9SRU1BUFxuZHJpdmVycy9pb21tdS9LY29uZmlnLTIwMi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgSW50ZXJydXB0IFJlbWFwcGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDI0OQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBBTURfSU9NTVUgYW5kIElSUV9SRU1BUCBEZXBlbmRlbmN5KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSB0cnlpbmcgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwIGJldHdlZW4gYEFNRF9JT01NVWAgYW5kIGBJUlFfUkVNQVBgLiBJcyBgQU1EX0lPTU1VYCBhIG5lY2Vzc2FyeSBwcmVyZXF1aXNpdGUgZm9yIGBJUlFfUkVNQVBgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseSB3aXRoIEFNRCBoYXJkd2FyZSwgb3IgaXMgaXQgdGhlIG90aGVyIHdheSBhcm91bmQ/IE9yLCBwZXJoYXBzLCBkbyB0aGV5IHNpbXBseSBjby1leGlzdCBpbiBhIHdheSB3aGVyZSBlbmFibGluZyBvbmUgbmVjZXNzaXRhdGVzIGVuYWJsaW5nIHRoZSBvdGhlciBpbiBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zPyBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgdGhhdCBuZWVkcyB0byBiZSBjbGFyaWZpZWQsIGJlY2F1c2UgbWlzdW5kZXJzdGFuZGluZyB0aGlzIHJlbGF0aW9uc2hpcCBjYW4gbGVhZCB0byBzaWduaWZpY2FudCBoZWFkYWNoZXMgaW4gc3lzdGVtIGNvbmZpZ3VyYXRpb24sIGVzcGVjaWFsbHkgcmVnYXJkaW5nIERNQSByZW1hcHBpbmcgYW5kIHZpcnR1YWxpemF0aW9uIHNldHVwcy4gSSBuZWVkIHRvIG5haWwgZG93biBpZiB0aGUga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3IgcnVudGltZSBpbnRlcmFjdGlvbiBoaW5nZXMgb24gdGhpcy4gVW5kZXJzdGFuZGluZyB0aGUgbGlua2FnZSBiZXR3ZWVuIHRoZXNlIGZlYXR1cmVzIHdpbGwgZGljdGF0ZSBob3cgSSBhcHByb2FjaCBjb25maWd1cmluZyB0aGUgSU9NTVUgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UgYW5kIGNvbXBhdGliaWxpdHkuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlLCByZWxldmFudCBkb2N1bWVudGF0aW9uLCBhbmQgZXhpc3RpbmcgZm9ydW0gZGlzY3Vzc2lvbnMgb3IgYnVnIHJlcG9ydHMgdG8gZ2V0IGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGlzIHJlbGF0aW9uc2hpcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbi4qSVJRX1JFTUFQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWc9NDYwPWNvbmZpZyBYODZfWDJBUElDXG5hcmNoL3g4Ni9LY29uZmlnLTQ2MS1cdGJvb2wgXCYjMzQ7eDJBUElDIGludGVycnVwdCBjb250cm9sbGVyIGFyY2hpdGVjdHVyZSBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjQ2MjpcdGRlcGVuZHMgb24gWDg2X0xPQ0FMX0FQSUMgXHUwMDI2XHUwMDI2IFg4Nl82NCBcdTAwMjZcdTAwMjYgKElSUV9SRU1BUCB8fCBIWVBFUlZJU09SX0dVRVNUKVxuYXJjaC94ODYvS2NvbmZpZy00NjMtXHRkZWZhdWx0IHlcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTQ5Nz1jb25maWcgWDg2X1BPU1RFRF9NU0lcbmFyY2gveDg2L0tjb25maWctNDk4LVx0Ym9vbCBcJiMzNDtFbmFibGUgTVNJIGFuZCBNU0kteCBkZWxpdmVyeSBieSBwb3N0ZWQgaW50ZXJydXB0c1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo0OTk6XHRkZXBlbmRzIG9uIFg4Nl82NCBcdTAwMjZcdTAwMjYgSVJRX1JFTUFQXG5hcmNoL3g4Ni9LY29uZmlnLTUwMC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3NTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBDaGVjayoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgQU1EIElPTU1VIGRyaXZlciBjb25maWd1cmF0aW9uIGlzIHNldCB1cC4gVGhlIGZpcnN0IHBsYWNlIEkmIzM5O20gZ29pbmcgdG8gbG9vayBpcyB0aGUgYGRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciBkcml2ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgdmFyaW91cyBjb21waWxlLXRpbWUgcGFyYW1ldGVycywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBBTUQgSU9NTVUgaW1wbGVtZW50YXRpb24uIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGJhc2VsaW5lIHVuZGVyc3RhbmRpbmcgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlIHdoZXRoZXIgdGhlIGRyaXZlciBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHdoYXQgZmVhdHVyZXMgY2FuIGJlIHRvZ2dsZWQsIHdoYXQgaGFyZHdhcmUgcmV2aXNpb25zIGFyZSBzdXBwb3J0ZWQsIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMuIFRpbWUgdG8gc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBTURfSU9NTVUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0yLSMgQU1EIElPTU1VIHN1cHBvcnRcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6Mzpjb25maWcgQU1EX0lPTU1VXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQtXHRib29sIFwmIzM0O0FNRCBJT01NVSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0zMi1cbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6MzM6Y29uZmlnIEFNRF9JT01NVV9JT01NVUZEXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtFbmFibGUgSU9NTVVGRCBmZWF0dXJlcyBmb3IgQU1EIElPTU1VIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy00Mi1cbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6NDM6Y29uZmlnIEFNRF9JT01NVV9ERUJVR0ZTXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQ0LVx0Ym9vbCBcJiMzNDtFbmFibGUgQU1EIElPTU1VIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTg3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBBTUQgSU9NTVUgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIEFNRCBJT01NVSBjb25maWd1cmF0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdGhhdCBgY29uZmlnIEFNRF9JT01NVWAgYmxvY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBob3cgdGhleSYjMzk7cmUgc3RydWN0dXJlZCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZS4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlLCBvYnZpb3VzbHksIGJ1dCBJJiMzOTttIGxvb2tpbmcgZm9yIGFueXRoaW5nIHVudXN1YWwgb3Igc3VidGxlLCB0aGF0IGlzIG5vdCBpbW1lZGlhdGVseSBhcHBhcmVudC4gSSBuZWVkIHRvIGdldCB0aGUgb3ZlcmFsbCBjb250ZXh0LCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhlIEFNRCBJT01NVS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBhbmQgYXNzb2NpYXRlZCBoZWxwIHRleHQgcmV2ZWFsLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgSU9NTVUgY29uZmlndXJhdGlvbnMgYW5kIHRoZSBicm9hZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmUuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0IyBBTUQgSU9NTVUgc3VwcG9ydFxuICAgMzpcdGNvbmZpZyBBTURfSU9NTVVcbiAgIDQ6XHRcdGJvb2wgXCYjMzQ7QU1EIElPTU1VIHN1cHBvcnRcJiMzNDtcbiAgIDU6XHRcdHNlbGVjdCBTV0lPVExCXG4gICA2Olx0XHRzZWxlY3QgUENJX01TSVxuICAgNzpcdFx0c2VsZWN0IFBDSV9BVFNcbiAgIDg6XHRcdHNlbGVjdCBQQ0lfUFJJXG4gICA5Olx0XHRzZWxlY3QgUENJX1BBU0lEXG4gIDEwOlx0XHRzZWxlY3QgSVJRX01TSV9MSUJcbiAgMTE6XHRcdHNlbGVjdCBNTVVfTk9USUZJRVJcbiAgMTI6XHRcdHNlbGVjdCBJT01NVV9BUElcbiAgMTM6XHRcdHNlbGVjdCBJT01NVV9JT1ZBXG4gIDE0Olx0XHRzZWxlY3QgSU9NTVVfU1ZBXG4gIDE1Olx0XHRzZWxlY3QgSU9NTVVfSU9QRlxuICAxNjpcdFx0c2VsZWN0IElPTU1VRkRfRFJJVkVSIGlmIElPTU1VRkRcbiAgMTc6XHRcdHNlbGVjdCBHRU5FUklDX1BUXG4gIDE4Olx0XHRzZWxlY3QgSU9NTVVfUFRcbiAgMTk6XHRcdHNlbGVjdCBJT01NVV9QVF9BTURWMVxuICAyMDpcdFx0c2VsZWN0IElPTU1VX1BUX1g4Nl82NFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTcxMAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgQU1EIElPTU1VIGFuZCBLVk0gQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgQU1EX0lPTU1VYCBhbmQgYEtWTV9BTURgLiBUaGUgbmFtZXMgYXJlIHByZXR0eSBzZWxmLWV4cGxhbmF0b3J5LCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBzZWUgaWYgYEtWTV9BTURgIGhhcyBhbnkgZGVwZW5kZW5jaWVzLiBJIHdhbnQgdG8ga25vdyBpZiBgS1ZNX0FNRGAgcmVsaWVzIG9uIGFueXRoaW5nIHNwZWNpZmljIHRvIGZ1bmN0aW9uLCBhbmQgaWYgc28sIHdoYXQgdGhvc2UgcHJlcmVxdWlzaXRlcyBhcmUuIEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gZW5zdXJpbmcgcHJvcGVyIHN5c3RlbSBjb25maWd1cmF0aW9uIGFuZCBhdm9pZGluZyBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCYjMzk7cyBhbGwgYWJvdXQgbWFraW5nIHN1cmUgSSYjMzk7bSBzZXR0aW5nIHRoaW5ncyB1cCBjb3JyZWN0bHkgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0NjpcdGNvbmZpZyBLVk1fQU1EXG4gMTQ3Olx0XHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbiAxNDg6XHRcdGRlcGVuZHMgb24gS1ZNIFx1MDAyNlx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcbiAxNDk6XHRcdGhlbHBcbiAxNTA6XHRcdCAgUHJvdmlkZXMgc3VwcG9ydCBmb3IgS1ZNIG9uIEFNRCBwcm9jZXNzb3JzIGVxdWlwcGVkIHdpdGggdGhlIEFNRC1WXG4gMTUxOlx0XHQgIChTVk0pIGV4dGVuc2lvbnMuXG4gMTUyOlx0XG4gMTUzOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDE1NDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBrdm0tYW1kLlxuIDE1NTpcdFxuIDE1NjpcdGNvbmZpZyBLVk1fQU1EX1NFVlxuIDE1NzpcdFx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4gMTU4Olx0XHRkZWZhdWx0IHlcbiAxNTk6XHRcdGRlcGVuZHMgb24gS1ZNX0FNRCBcdTAwMjZcdTAwMjYgWDg2XzY0XG4gMTYwOlx0XHRkZXBlbmRzIG9uIENSWVBUT19ERVZfU1BfUFNQIFx1MDAyNlx1MDAyNiAhKEtWTV9BTUQ9eSBcdTAwMjZcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcbiAxNjE6XHRcdHNlbGVjdCBBUkNIX0hBU19DQ19QTEFURk9STVxuIDE2MjpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXG4gMTYzOlx0XHRzZWxlY3QgSEFWRV9LVk1fQVJDSF9HTUVNX1BSRVBBUkVcbiAxNjQ6XHRcdHNlbGVjdCBIQVZFX0tWTV9BUkNIX0dNRU1fSU5WQUxJREFURVxuIDE2NTpcdFx0c2VsZWN0IEhBVkVfS1ZNX0FSQ0hfR01FTV9QT1BVTEFURVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjI5MAoJCQkJCQkJb3V0cHV0OiAyMzUKCQkJCQkJCXRob3VnaHRzOiA2NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqR0FQUEkgU3VwcG9ydCBmb3IgQU1EIElPTU1VIGFuZCBLVk0gU1ZNIEFWSUMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBpbnRlZ3JhdGVzIEdBUFBJIHN1cHBvcnQgaW50byB0aGUgQU1EIElPTU1VIGFuZCBLVk0gU1ZNIEFWSUMgc2V0dXAuIFRoZSBrZXkgY29uZmlncyBoZXJlIGFyZSBgS1ZNX0FNRGAgYW5kIGBBTURfSU9NTVVgIOKAkyB0aGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIHdlJiMzOTtyZSB3b3JraW5nIHdpdGguCgpJJiMzOTt2ZSBiZWVuIHJldmlld2luZyB0aGUgY29kZSBhbmQgZm9jdXNpbmcgb24gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvOiBgYXZpY19waV91cGRhdGVfaXJ0ZWAsIGBhbWRfaW9tbXVfdXBkYXRlX2dhYCwgYGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlYCwgYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgLCBgYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdGAsIGBhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3RgLCBgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcmAsIGFuZCBgX19hbWRfaW9tbXVfdXBkYXRlX2dhYC4gV2UmIzM5O3JlIHRhbGtpbmcgY29yZSBpbnRlcnJ1cHQgaGFuZGxpbmcsIHZDUFUgYWZmaW5pdHkgbWFuYWdlbWVudCwgYW5kIHRoZSBjcnVjaWFsIGxvZ2ljIGZvciBhY3RpdmF0aW5nIGd1ZXN0IG1vZGUgd2l0aGluIHRoZSBJT01NVS4gVGhlcmUgYXJlIGEgZmV3IG1vZGlmaWVkIGZ1bmN0aW9ucyBJIHNob3VsZCBhbHNvIHRha2UgaW50byBhY2NvdW50OiBgYXZpY19kZXN0cm95X3ZjcHVgLCBgYXZpY19pbml0X3ZjcHVgLCBgc3ZtX2lyX2xpc3RfZGVsYCwgYF9fYXZpY192Y3B1X2xvYWRgLCBgX19hdmljX3ZjcHVfcHV0YCwgYGF2aWNfaGFyZHdhcmVfc2V0dXBgLCBgZW5hYmxlX2lvbW11c192YXBpY2AsIGFuZCBgcGFyc2VfYW1kX2lvbW11X29wdGlvbnNgLgoKVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGNoYW5nZSwgaW1wYWN0aW5nIGhvdyBpbnRlcnJ1cHRzIGFyZSBtYW5hZ2VkIHdpdGhpbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIGRpcmVjdGx5IHRvdWNoZXMgdGhlIElPTU1VLiBUaGUgaW50cm9kdWN0aW9uIG9mIEdBUFBJIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbmV3IHdha2V1cCBsaXN0cyBhbmQgYWx0ZXJlZCBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgdGhhdCByZXF1aXJlcyByaWdvcm91cyB0ZXN0aW5nLiBDb25jdXJyZW5jeSBidWdzIG9yIG1lbW9yeSBjb3JydXB0aW9uIHZ1bG5lcmFiaWxpdGllcyBhcmUgYSBjb25jZXJuIGhlcmUuIEkgdGhpbmsgd2UgbmVlZCB0byBmdXp6IHRoaXMhCgpNeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyB3YXJyYW50cyBmdXp6aW5nLCBhbmQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyB0byB0YXJnZXQgYXJlIHRoZSBvbmVzIEkgbGlzdGVkIGVhcmxpZXIuIFRoZSBjb25maWdzIHRoYXQgYXJlIGVuYWJsZWQgYXJlIGBLVk1fQU1EYCBhbmQgYEFNRF9JT01NVWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk1fQU1EJiMzNDssCiAgICAmIzM0O0FNRF9JT01NVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F2aWNfcGlfdXBkYXRlX2lydGUmIzM0OywKICAgICYjMzQ7YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSYjMzQ7LAogICAgJiMzNDthbWRfaW9tbXVfdXBkYXRlX2dhJiMzNDssCiAgICAmIzM0O2FtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlJiMzNDssCiAgICAmIzM0O2F2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3QmIzM0OywKICAgICYjMzQ7YXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0JiMzNDssCiAgICAmIzM0O2F2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXImIzM0OywKICAgICYjMzQ7X19hbWRfaW9tbXVfdXBkYXRlX2dhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIEdBUFBJIChHdWVzdCBBUElDIFBvc3RlZCBJbnRlcnJ1cHRzKSBzdXBwb3J0IGZvciBBTUQgSU9NTVUgYW5kIEtWTSBTVk0gQVZJQy4gSXQgbW9kaWZpZXMgY29yZSBpbnRlcnJ1cHQgcmVtYXBwaW5nIGFuZCB2Q1BVIGFmZmluaXR5IGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCBuZXN0ZWQgS1ZNIG9uIEFNRCkuIEZ1enppbmcgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGUgbmV3IHdha2V1cCBsaXN0cyBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIGxvZ2ljIGRvIG5vdCBpbnRyb2R1Y2UgY29uY3VycmVuY3kgYnVncyBvciBtZW1vcnkgY29ycnVwdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtBTURfSU9NTVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdmljX3BpX3VwZGF0ZV9pcnRlJiMzNDssCiAgICAmIzM0O2F2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkmIzM0OywKICAgICYjMzQ7YW1kX2lvbW11X3VwZGF0ZV9nYSYjMzQ7LAogICAgJiMzNDthbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSYjMzQ7LAogICAgJiMzNDthdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0JiMzNDssCiAgICAmIzM0O2F2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdCYjMzQ7LAogICAgJiMzNDthdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O19fYW1kX2lvbW11X3VwZGF0ZV9nYSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggaW50cm9kdWNlcyBHQVBQSSAoR3Vlc3QgQVBJQyBQb3N0ZWQgSW50ZXJydXB0cykgc3VwcG9ydCBmb3IgQU1EIElPTU1VIGFuZCBLVk0gU1ZNIEFWSUMuIEl0IG1vZGlmaWVzIGNvcmUgaW50ZXJydXB0IHJlbWFwcGluZyBhbmQgdkNQVSBhZmZpbml0eSBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgbmVzdGVkIEtWTSBvbiBBTUQpLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIG5ldyB3YWtldXAgbGlzdHMgYW5kIGludGVycnVwdCBoYW5kbGluZyBsb2dpYyBkbyBub3QgaW50cm9kdWNlIGNvbmN1cnJlbmN5IGJ1Z3Mgb3IgbWVtb3J5IGNvcnJ1cHRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo1OTozNi43NTYxOTAxM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNjE3MzEwNDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9BTURcIixcbiAgICBcIkFNRF9JT01NVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF2aWNfcGlfdXBkYXRlX2lydGVcIixcbiAgICBcImF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlcIixcbiAgICBcImFtZF9pb21tdV91cGRhdGVfZ2FcIixcbiAgICBcImFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlXCIsXG4gICAgXCJhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0XCIsXG4gICAgXCJhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3RcIixcbiAgICBcImF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXJcIixcbiAgICBcIl9fYW1kX2lvbW11X3VwZGF0ZV9nYVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIEdBUFBJIChHdWVzdCBBUElDIFBvc3RlZCBJbnRlcnJ1cHRzKSBzdXBwb3J0IGZvciBBTUQgSU9NTVUgYW5kIEtWTSBTVk0gQVZJQy4gSXQgbW9kaWZpZXMgY29yZSBpbnRlcnJ1cHQgcmVtYXBwaW5nIGFuZCB2Q1BVIGFmZmluaXR5IGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCBuZXN0ZWQgS1ZNIG9uIEFNRCkuIEZ1enppbmcgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGUgbmV3IHdha2V1cCBsaXN0cyBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIGxvZ2ljIGRvIG5vdCBpbnRyb2R1Y2UgY29uY3VycmVuY3kgYnVncyBvciBtZW1vcnkgY29ycnVwdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTk6MzYuNzU2MjAxMDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTcwNTc2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMDc2ODk5NmVhYWM5NjY0YzE5MTRhNDg1YTVlMjI4NTlhOTZlYjViXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVuIDI2IDIyOjU5OjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaFxcbmluZGV4IDM3Yjk0ZjQ4NGVmMzM4Li40MGEyMjA2YTMzYzA4ZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmhcXG5AQCAtMzUsOCArMzUsOCBAQCBzdHJ1Y3QgYW1kX2lvbW11X3BpX2RhdGEge1xcbiBcXHR1NjQgdmFwaWNfYWRkcjtcXHRcXHQvKiBQaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSB2Q1BVJ3MgdkFQSUMuICovXFxuIFxcdHUzMiBnYV90YWc7XFxuIFxcdHUzMiB2ZWN0b3I7XFx0XFx0LyogR3Vlc3QgdmVjdG9yIG9mIHRoZSBpbnRlcnJ1cHQgKi9cXG4tXFx0aW50IGNwdTtcXG4tXFx0Ym9vbCBnYV9sb2dfaW50cjtcXG4rXFx0aW50IGFwaWNpZDtcXG4rXFx0aW50IGZsYWdzO1xcbiBcXHRib29sIGlzX2d1ZXN0X21vZGU7XFxuIFxcdHZvaWQgKmlyX2RhdGE7XFxuIH07XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jIGIvYXJjaC94ODYva3ZtL3N2bS9hdmljLmNcXG5pbmRleCBjZGQ1YTZkYzY0NmYxMS4uZDIzOGY2NWE4MTcyYmMgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9hdmljLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuY1xcbkBAIC02Myw2ICs2Myw5IEBAXFxuIFxcdGdhX3RhZztcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIH0pXFxuIFxcbitzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGxpc3RfaGVhZCwgZ2FwcGlfdmNwdV93YWtldXBfbGlzdCk7XFxuK3N0YXRpYyBERUZJTkVfUEVSX0NQVShyYXdfc3BpbmxvY2tfdCwgZ2FwcGlfdmNwdV93YWtldXBfbGlzdF9sb2NrKTtcXG4rXFxuIHN0YXRpY19hc3NlcnQoX19BVklDX0dBVEFHKEFWSUNfVk1fSURfTUFTSywgQVZJQ19WQ1BVX0lEWF9NQVNLKSA9PSAtMXUpO1xcbiBcXG4gI2RlZmluZSBBVklDX0FVVE9fTU9ERSAtMVxcbkBAIC04NzQsNiArODc3LDkgQEAgaW50IGF2aWNfaW5pdF92Y3B1KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0KTtcXG4gXFx0cmF3X3NwaW5fbG9ja19pbml0KFxcdTAwMjZzdm0tXFx1MDAzZWlyX2xpc3RfbG9jayk7XFxuIFxcbitcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2c3ZtLVxcdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KTtcXG4rXFx0c3ZtLVxcdTAwM2VnYXBwaV9jcHUgPSAtMTtcXG4rXFxuIFxcdGlmICghZW5hYmxlX2FwaWN2IHx8ICFpcnFjaGlwX2luX2tlcm5lbCh2Y3B1LVxcdTAwM2Vrdm0pKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuQEAgLTg4Niw2ICs4OTIsNDQgQEAgaW50IGF2aWNfaW5pdF92Y3B1KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtLCBpbnQgY3B1KVxcbit7XFxuK1xcdHN0cnVjdCBsaXN0X2hlYWQgKndha2V1cF9saXN0O1xcbitcXHRyYXdfc3BpbmxvY2tfdCAqc3BpbmxvY2s7XFxuK1xcbitcXHRpZiAoV0FSTl9PTihjcHUgXFx1MDAzYyAwKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0d2FrZXVwX2xpc3QgPSBcXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0LCBjcHUpO1xcbitcXHRzcGlubG9jayA9IFxcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KTtcXG4rXFx0cmF3X3NwaW5fbG9jayhzcGlubG9jayk7XFxuK1xcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZzdm0tXFx1MDAzZWdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpKVxcbitcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZzdm0tXFx1MDAzZWdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIHdha2V1cF9saXN0KTtcXG4rXFx0cmF3X3NwaW5fdW5sb2NrKHNwaW5sb2NrKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtLCBpbnQgY3B1KVxcbit7XFxuK1xcdHJhd19zcGlubG9ja190ICpzcGlubG9jaztcXG4rXFxuK1xcdGlmIChXQVJOX09OKGNwdSBcXHUwMDNjIDApKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRzcGlubG9jayA9IFxcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KTtcXG4rXFx0cmF3X3NwaW5fbG9jayhzcGlubG9jayk7XFxuK1xcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2c3ZtLVxcdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KSlcXG4rXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2c3ZtLVxcdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KTtcXG4rXFx0cmF3X3NwaW5fdW5sb2NrKHNwaW5sb2NrKTtcXG4rfVxcbitcXG4rdm9pZCBhdmljX2Rlc3Ryb3lfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4re1xcbitcXHRpZiAoc3ZtLVxcdTAwM2VnYXBwaV9jcHUgIT0gLTEgXFx1MDAyNlxcdTAwMjYgYW1kX2lvbW11X2dhcHBpKSB7XFxuK1xcdFxcdGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS1cXHUwMDNlZ2FwcGlfY3B1KTtcXG4rXFx0XFx0c3ZtLVxcdTAwM2VnYXBwaV9jcHUgPSAtMTtcXG4rXFx0fVxcbit9XFxuK1xcbiB2b2lkIGF2aWNfYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbiBcXHRhdmljX2hhbmRsZV9kZnJfdXBkYXRlKHZjcHUpO1xcbkBAIC04OTYsMTMgKzk0MCwxOCBAQCBzdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxcbiB7XFxuIFxcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IGlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX3ZjcHU7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuK1xcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtO1xcbiBcXG4gXFx0aWYgKCF2Y3B1KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnRvX3N2bSh2Y3B1KS1cXHUwMDNlaXJfbGlzdF9sb2NrLCBmbGFncyk7XFxuK1xcdHN2bSA9IHRvX3N2bSh2Y3B1KTtcXG4rXFxuK1xcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcXG4gXFx0bGlzdF9kZWwoXFx1MDAyNmlycWZkLVxcdTAwM2V2Y3B1X2xpc3QpO1xcbi1cXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2dG9fc3ZtKHZjcHUpLVxcdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcXG4rXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNnN2bS1cXHUwMDNlaXJfbGlzdCkpXFxuK1xcdFxcdGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS1cXHUwMDNlZ2FwcGlfY3B1KTtcXG4rXFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnN2bS1cXHUwMDNlaXJfbGlzdF9sb2NrLCBmbGFncyk7XFxuIH1cXG4gXFxuIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbkBAIC05MzIsNiArOTgxLDggQEAgaW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXFxuIFxcdFxcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtID0gdG9fc3ZtKHZjcHUpO1xcbiBcXHRcXHR1NjQgZW50cnk7XFxuIFxcdFxcdGludCByZXQ7XFxuK1xcdFxcdGludCBwb3N0ZWRfaW50cjtcXG4rXFx0XFx0Ym9vbCBpc192Y3B1X3dhaXRpbmcgPSBmYWxzZTtcXG4gXFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFByZXZlbnQgdGhlIHZDUFUgZnJvbSBiZWluZyBzY2hlZHVsZWQgb3V0IG9yIG1pZ3JhdGVkIHVudGlsXFxuQEAgLTk0OSwxNSArMTAwMCwyMyBAQCBpbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGVudHJ5ID0gc3ZtLVxcdTAwM2VhdmljX3BoeXNpY2FsX2lkX2VudHJ5O1xcbiBcXHRcXHRpZiAoZW50cnkgXFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0lTX1JVTk5JTkdfTUFTSykge1xcbi1cXHRcXHRcXHRwaV9kYXRhLmNwdSA9IGVudHJ5IFxcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9IT1NUX1BIWVNJQ0FMX0lEX01BU0s7XFxuK1xcdFxcdFxcdHBpX2RhdGEuYXBpY2lkID0gZW50cnkgXFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0hPU1RfUEhZU0lDQUxfSURfTUFTSztcXG4rXFx0XFx0XFx0cGlfZGF0YS5mbGFncyA9IEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklORztcXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0cGlfZGF0YS5jcHUgPSAtMTtcXG4tXFx0XFx0XFx0cGlfZGF0YS5nYV9sb2dfaW50ciA9IGVudHJ5IFxcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUjtcXG4rXFx0XFx0XFx0cG9zdGVkX2ludHIgPSAhIShlbnRyeSBcXHUwMDI2IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfR0FfTE9HX0lOVFIpO1xcbitcXHRcXHRcXHRwaV9kYXRhLmZsYWdzID0gcG9zdGVkX2ludHIgXFx1MDAzY1xcdTAwM2MgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFJfU0hJRlQ7XFxuK1xcdFxcdFxcdGlmIChhbWRfaW9tbXVfZ2FwcGkpIHtcXG4rXFx0XFx0XFx0XFx0cGlfZGF0YS5hcGljaWQgPSBrdm1fY3B1X2dldF9hcGljaWQoc3ZtLVxcdTAwM2VnYXBwaV9jcHUpO1xcbitcXHRcXHRcXHRcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0KSkge1xcbitcXHRcXHRcXHRcXHRcXHRhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVxcdTAwM2VnYXBwaV9jcHUpO1xcbitcXHRcXHRcXHRcXHRcXHRpc192Y3B1X3dhaXRpbmcgPSB0cnVlO1xcbitcXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0cmV0ID0gaXJxX3NldF92Y3B1X2FmZmluaXR5KGhvc3RfaXJxLCBcXHUwMDI2cGlfZGF0YSk7XFxuIFxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdFxcdGdvdG8gZ2FwcGlfZXJyX291dDtcXG4gXFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFJldmVydCB0byBsZWdhY3kgbW9kZSBpZiB0aGUgSU9NTVUgZGlkbid0IHByb3ZpZGUgbWV0YWRhdGFcXG5AQCAtOTY2LDEyICsxMDI1LDE3IEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKFdBUk5fT05fT05DRSghcGlfZGF0YS5pcl9kYXRhKSkge1xcbiBcXHRcXHRcXHRpcnFfc2V0X3ZjcHVfYWZmaW5pdHkoaG9zdF9pcnEsIE5VTEwpO1xcbi1cXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0XFx0cmV0ID0gLUVJTztcXG4rXFx0XFx0XFx0Z290byBnYXBwaV9lcnJfb3V0O1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpcnFmZC1cXHUwMDNlaXJxX2J5cGFzc19kYXRhID0gcGlfZGF0YS5pcl9kYXRhO1xcbiBcXHRcXHRsaXN0X2FkZChcXHUwMDI2aXJxZmQtXFx1MDAzZXZjcHVfbGlzdCwgXFx1MDAyNnN2bS1cXHUwMDNlaXJfbGlzdCk7XFxuIFxcdFxcdHJldHVybiAwO1xcbitnYXBwaV9lcnJfb3V0OlxcbitcXHRcXHRpZiAoaXNfdmNwdV93YWl0aW5nKVxcbitcXHRcXHRcXHRhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXFx1MDAzZWdhcHBpX2NwdSk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIGlycV9zZXRfdmNwdV9hZmZpbml0eShob3N0X2lycSwgTlVMTCk7XFxuIH1cXG5AQCAtMTAwNCwxMCArMTA2OCwxNCBAQCBlbnVtIGF2aWNfdmNwdV9hY3Rpb24ge1xcbiBcXHRBVklDX1NUQVJUX0JMT0NLSU5HXFx0PSBCSVQoMSksXFxuIH07XFxuIFxcbi1zdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGVudW0gYXZpY192Y3B1X2FjdGlvbiBhY3Rpb24pXFxuK3N0YXRpYyB2b2lkIGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgYXBpY2lkLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgaW50IGNwdSwgZW51bSBhdmljX3ZjcHVfYWN0aW9uIGFjdGlvbilcXG4ge1xcbi1cXHRib29sIGdhX2xvZ19pbnRyID0gKGFjdGlvbiBcXHUwMDI2IEFWSUNfU1RBUlRfQkxPQ0tJTkcpO1xcbitcXHRpbnQgcG9zdGVkX2ludHIgPSAhIShhY3Rpb24gXFx1MDAyNiBBVklDX1NUQVJUX0JMT0NLSU5HKSBcXHUwMDNjXFx1MDAzY1xcbitcXHRcXHRcXHQgIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSX1NISUZUO1xcbitcXHRpbnQgaXNfdmNwdV9ydW5uaW5nID0gKGFwaWNpZCBcXHUwMDNlPSAwKSBcXHUwMDNjXFx1MDAzY1xcbitcXHRcXHRcXHQgICAgICBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkdfU0hJRlQ7XFxuK1xcdGludCBmbGFncyA9IHBvc3RlZF9pbnRyIHwgaXNfdmNwdV9ydW5uaW5nO1xcbiBcXHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bSA9IHRvX3N2bSh2Y3B1KTtcXG4gXFx0c3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkO1xcbiBcXG5AQCAtMTAxNywxNiArMTA4NSwzMCBAQCBzdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSxcXG4gXFx0ICogSGVyZSwgd2UgZ28gdGhyb3VnaCB0aGUgcGVyLXZjcHUgaXJfbGlzdCB0byB1cGRhdGUgYWxsIGV4aXN0aW5nXFxuIFxcdCAqIGludGVycnVwdCByZW1hcHBpbmcgdGFibGUgZW50cnkgdGFyZ2V0aW5nIHRoaXMgdmNwdS5cXG4gXFx0ICovXFxuLVxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZzdm0tXFx1MDAzZWlyX2xpc3QpKVxcbitcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0KSkge1xcbitcXHRcXHRpZiAoYW1kX2lvbW11X2dhcHBpIFxcdTAwMjZcXHUwMDI2IGNwdSBcXHUwMDNlPSAwKVxcbitcXHRcXHRcXHRzdm0tXFx1MDAzZWdhcHBpX2NwdSA9IGNwdTtcXG4gXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoaXNfdmNwdV9ydW5uaW5nIFxcdTAwMjZcXHUwMDI2IGFtZF9pb21tdV9nYXBwaSkge1xcbitcXHRcXHQvKiBJRiBjb25kaXRpb24gaGFuZGxlcyB0aGUgaW5pdGlhbCBzdGF0ZSAqL1xcbitcXHRcXHRpZiAoc3ZtLVxcdTAwM2VnYXBwaV9jcHUgIT0gLTEpXFxuK1xcdFxcdFxcdGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS1cXHUwMDNlZ2FwcGlfY3B1KTtcXG4rXFxuK1xcdFxcdHN2bS1cXHUwMDNlZ2FwcGlfY3B1ID0gY3B1OyAvKiBTdG9yZSBjcHUgbm8gYXMgdGFyZ2V0IGZvciBHQVBQSSAqL1xcbitcXHR9IGVsc2UgaWYgKGFtZF9pb21tdV9nYXBwaSkge1xcbitcXHRcXHRhcGljaWQgPSBrdm1fY3B1X2dldF9hcGljaWQoc3ZtLVxcdTAwM2VnYXBwaV9jcHUpO1xcbitcXHRcXHRhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVxcdTAwM2VnYXBwaV9jcHUpO1xcbitcXHR9XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGlycWZkLCBcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0LCB2Y3B1X2xpc3QpIHtcXG4gXFx0XFx0dm9pZCAqZGF0YSA9IGlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX2RhdGE7XFxuIFxcbiBcXHRcXHRpZiAoIShhY3Rpb24gXFx1MDAyNiBBVklDX1RPR0dMRV9PTl9PRkYpKVxcbi1cXHRcXHRcXHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X3VwZGF0ZV9nYShkYXRhLCBjcHUsIGdhX2xvZ19pbnRyKSk7XFxuLVxcdFxcdGVsc2UgaWYgKGNwdSBcXHUwMDNlPSAwKVxcbi1cXHRcXHRcXHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoZGF0YSwgY3B1LCBnYV9sb2dfaW50cikpO1xcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X3VwZGF0ZV9nYShkYXRhLCBhcGljaWQsIGZsYWdzKSk7XFxuK1xcdFxcdGVsc2UgaWYgKGlzX3ZjcHVfcnVubmluZylcXG4rXFx0XFx0XFx0V0FSTl9PTl9PTkNFKGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGRhdGEsIGFwaWNpZCwgZmxhZ3MpKTtcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X2RlYWN0aXZhdGVfZ3Vlc3RfbW9kZShkYXRhKSk7XFxuIFxcdH1cXG5AQCAtMTA4MCw3ICsxMTYyLDcgQEAgc3RhdGljIHZvaWQgX19hdmljX3ZjcHVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUsXFxuIFxcbiBcXHRXUklURV9PTkNFKGt2bV9zdm0tXFx1MDAzZWF2aWNfcGh5c2ljYWxfaWRfdGFibGVbdmNwdS1cXHUwMDNldmNwdV9pZF0sIGVudHJ5KTtcXG4gXFxuLVxcdGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkodmNwdSwgaF9waHlzaWNhbF9pZCwgYWN0aW9uKTtcXG4rXFx0YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSh2Y3B1LCBoX3BoeXNpY2FsX2lkLCBjcHUsIGFjdGlvbik7XFxuIFxcbiBcXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcXG4gfVxcbkBAIC0xMTIzLDcgKzEyMDUsNyBAQCBzdGF0aWMgdm9pZCBfX2F2aWNfdmNwdV9wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKVxcbiBcXHQgKi9cXG4gXFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZzdm0tXFx1MDAzZWlyX2xpc3RfbG9jaywgZmxhZ3MpO1xcbiBcXG4tXFx0YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSh2Y3B1LCAtMSwgYWN0aW9uKTtcXG4rXFx0YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSh2Y3B1LCAtMSwgLTEsIGFjdGlvbik7XFxuIFxcbiBcXHRXQVJOX09OX09OQ0UoZW50cnkgXFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0dBX0xPR19JTlRSKTtcXG4gXFxuQEAgLTEyOTYsNiArMTM3OCwyMSBAQCBzdGF0aWMgYm9vbCBfX2luaXQgYXZpY193YW50X2F2aWNfZW5hYmxlZCh2b2lkKVxcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcih2b2lkKVxcbit7XFxuK1xcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XFxuK1xcdHN0cnVjdCBsaXN0X2hlYWQgKnZjcHVfd2FrZXVwX2xpc3QgPSBcXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0LCBjcHUpO1xcbitcXHRyYXdfc3BpbmxvY2tfdCAqc3BpbmxvY2sgPSBcXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7XFxuK1xcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtO1xcbitcXG4rXFx0cmF3X3NwaW5fbG9jayhzcGlubG9jayk7XFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkoc3ZtLCB2Y3B1X3dha2V1cF9saXN0LCBnYXBwaV92Y3B1X3dha2V1cF9saXN0KSB7XFxuK1xcdFxcdGlmIChrdm1fbGFwaWNfZmluZF9oaWdoZXN0X2lycihcXHUwMDI2c3ZtLVxcdTAwM2V2Y3B1KSBcXHUwMDNlPSAwKVxcbitcXHRcXHRcXHRrdm1fdmNwdV93YWtlX3VwKFxcdTAwMjZzdm0tXFx1MDAzZXZjcHUpO1xcbitcXHR9XFxuK1xcdHJhd19zcGluX3VubG9jayhzcGlubG9jayk7XFxuK31cXG4rXFxuIC8qXFxuICAqIE5vdGU6XFxuICAqIC0gVGhlIG1vZHVsZSBwYXJhbSBhdmljIGVuYWJsZSBib3RoIHhBUElDIGFuZCB4MkFQSUMgbW9kZS5cXG5AQCAtMTMwNCwxMiArMTQwMSwxOCBAQCBzdGF0aWMgYm9vbCBfX2luaXQgYXZpY193YW50X2F2aWNfZW5hYmxlZCh2b2lkKVxcbiAgKi9cXG4gYm9vbCBfX2luaXQgYXZpY19oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbiB7XFxuK1xcdGludCBjcHU7XFxuIFxcdGF2aWMgPSBhdmljX3dhbnRfYXZpY19lbmFibGVkKCk7XFxuIFxcdGlmICghYXZpYylcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4gXFx0cHJfaW5mbyhcXFwiQVZJQyBlbmFibGVkXFxcXG5cXFwiKTtcXG4gXFxuK1xcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcXG4rXFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnBlcl9jcHUoZ2FwcGlfdmNwdV93YWtldXBfbGlzdCwgY3B1KSk7XFxuK1xcdFxcdHJhd19zcGluX2xvY2tfaW5pdChcXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSkpO1xcbitcXHR9XFxuK1xcbiBcXHQvKiBBVklDIGlzIGEgcHJlcmVxdWlzaXRlIGZvciB4MkFWSUMuICovXFxuIFxcdHgyYXZpY19lbmFibGVkID0gYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1gyQVZJQyk7XFxuIFxcdGlmICh4MmF2aWNfZW5hYmxlZCkge1xcbkBAIC0xMzMzLDYgKzE0MzYsNyBAQCBib29sIF9faW5pdCBhdmljX2hhcmR3YXJlX3NldHVwKHZvaWQpXFxuIFxcdFxcdGVuYWJsZV9pcGl2ID0gZmFsc2U7XFxuIFxcbiBcXHRhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKFxcdTAwMjZhdmljX2dhX2xvZ19ub3RpZmllcik7XFxuK1xcdGt2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXIoXFx1MDAyNmF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXIpO1xcbiBcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcXG5pbmRleCBlMDJhMzhkYTUyOTZlMy4uYjY4NzEzM2Y4NTI4YmEgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcXG5AQCAtMTM1Niw2ICsxMzU2LDggQEAgc3RhdGljIHZvaWQgc3ZtX3ZjcHVfZnJlZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcbiBcXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXFx1MDAyNnN2bS1cXHUwMDNlaXJfbGlzdCkpO1xcbiBcXG4rXFx0YXZpY19kZXN0cm95X3ZjcHUoc3ZtKTtcXG4rXFxuIFxcdHN2bV9sZWF2ZV9uZXN0ZWQodmNwdSk7XFxuIFxcdHN2bV9mcmVlX25lc3RlZChzdm0pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcXG5pbmRleCA1MTM3NDE2YmU1OTNkNy4uNDdkNWJiNWQ3MTAzZGEgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaFxcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcXG5AQCAtMzYyLDYgKzM2MiwxMCBAQCBzdHJ1Y3QgdmNwdV9zdm0ge1xcbiBcXG4gXFx0LyogR3Vlc3QgR0lGIHZhbHVlLCB1c2VkIHdoZW4gdkdJRiBpcyBub3QgZW5hYmxlZCAqL1xcbiBcXHRib29sIGd1ZXN0X2dpZjtcXG4rXFxuK1xcdC8qIEdBUFBJIHJlbGF0ZWQgZmllbGRzICovXFxuK1xcdHN0cnVjdCBsaXN0X2hlYWQgZ2FwcGlfdmNwdV93YWtldXBfbGlzdDtcXG4rXFx0aW50IGdhcHBpX2NwdTtcXG4gfTtcXG4gXFxuIHN0cnVjdCBzdm1fY3B1X2RhdGEge1xcbkBAIC05MDksNiArOTEzLDcgQEAgdm9pZCBhdmljX2luaXRfdm1jYihzdHJ1Y3QgdmNwdV9zdm0gKnN2bSwgc3RydWN0IHZtY2IgKnZtY2IpO1xcbiBpbnQgYXZpY19pbmNvbXBsZXRlX2lwaV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gaW50IGF2aWNfdW5hY2NlbGVyYXRlZF9hY2Nlc3NfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSk7XFxuK3ZvaWQgYXZpY19kZXN0cm95X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pO1xcbiB2b2lkIGF2aWNfdmNwdV9sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSk7XFxuIHZvaWQgYXZpY192Y3B1X3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiB2b2lkIGF2aWNfYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdS5oIGIvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmhcXG5pbmRleCA4MzRkOGZhYmZiYTM4Ny4uMDQ0MTc5Y2FiMTJlNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmhcXG4rKysgYi9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXUuaFxcbkBAIC00MSw2ICs0MSw3IEBAIGludCBhbWRfaW9tbXVfZW5hYmxlKHZvaWQpO1xcbiB2b2lkIGFtZF9pb21tdV9kaXNhYmxlKHZvaWQpO1xcbiBpbnQgYW1kX2lvbW11X3JlZW5hYmxlKGludCBtb2RlKTtcXG4gaW50IGFtZF9pb21tdV9lbmFibGVfZmF1bHRpbmcodW5zaWduZWQgaW50IGNwdSk7XFxuK2V4dGVybiBib29sIGFtZF9pb21tdV9nYXBwaTtcXG4gZXh0ZXJuIGludCBhbWRfaW9tbXVfZ3Vlc3RfaXI7XFxuIGV4dGVybiBlbnVtIHByb3RlY3Rpb25fZG9tYWluX21vZGUgYW1kX2lvbW11X3BndGFibGU7XFxuIGV4dGVybiBpbnQgYW1kX2lvbW11X2dwdF9sZXZlbDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11X3R5cGVzLmggYi9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaFxcbmluZGV4IGY5ZjcxODA4Nzg5MzAzLi5kZTBiMjMzMDY5NDRiOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaFxcbisrKyBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdV90eXBlcy5oXFxuQEAgLTk0LDYgKzk0LDcgQEBcXG4gI2RlZmluZSBGRUFUVVJFX1gyQVBJQ1xcdFxcdEJJVF9VTEwoMilcXG4gI2RlZmluZSBGRUFUVVJFX05YXFx0XFx0QklUX1VMTCgzKVxcbiAjZGVmaW5lIEZFQVRVUkVfR1RcXHRcXHRCSVRfVUxMKDQpXFxuKyNkZWZpbmUgRkVBVFVSRV9HQVBQSVxcdFxcdEJJVF9VTEwoNSlcXG4gI2RlZmluZSBGRUFUVVJFX0lBXFx0XFx0QklUX1VMTCg2KVxcbiAjZGVmaW5lIEZFQVRVUkVfR0FcXHRcXHRCSVRfVUxMKDcpXFxuICNkZWZpbmUgRkVBVFVSRV9IRVxcdFxcdEJJVF9VTEwoOClcXG5AQCAtMTEzLDYgKzExNCw3IEBAXFxuIC8qIEV4dGVuZGVkIEZlYXR1cmUgMiBCaXRzICovXFxuICNkZWZpbmUgRkVBVFVSRV9TRVZTTlBJT19TVVBcXHRCSVRfVUxMKDEpXFxuICNkZWZpbmUgRkVBVFVSRV9HQ1IzVFJQTU9ERVxcdEJJVF9VTEwoMylcXG4rI2RlZmluZSBGRUFUVVJFX0dBUFBJRElTU1VQXFx0QklUX1VMTCg0KVxcbiAjZGVmaW5lIEZFQVRVUkVfU05QQVZJQ1NVUFxcdEdFTk1BU0tfVUxMKDcsIDUpXFxuICNkZWZpbmUgRkVBVFVSRV9TTlBBVklDU1VQX0dBTSh4KSBcXFxcXFxuIFxcdChGSUVMRF9HRVQoRkVBVFVSRV9TTlBBVklDU1VQLCB4KSA9PSAweDEpXFxuQEAgLTE5MCw2ICsxOTIsNyBAQFxcbiAjZGVmaW5lIENPTlRST0xfRVBIX0VOXFx0XFx0NDVcXG4gI2RlZmluZSBDT05UUk9MX1hUX0VOXFx0XFx0NTBcXG4gI2RlZmluZSBDT05UUk9MX0lOVENBUFhUX0VOXFx0NTFcXG4rI2RlZmluZSBDT05UUk9MX0dBUFBJX0VOXFx0NTVcXG4gI2RlZmluZSBDT05UUk9MX0dDUjNUUlBNT0RFXFx0NThcXG4gI2RlZmluZSBDT05UUk9MX0lSVENBQ0hFRElTXFx0NTlcXG4gI2RlZmluZSBDT05UUk9MX1NOUEFWSUNfRU5cXHQ2MVxcbkBAIC0xMDA0LDcgKzEwMDcsOCBAQCB1bmlvbiBpcnRlX2dhX2xvIHtcXG4gXFx0XFx0ICAgIG5vX2ZhdWx0XFx0OiAxLFxcbiBcXHRcXHQgICAgLyogLS0tLS0tICovXFxuIFxcdFxcdCAgICBnYV9sb2dfaW50clxcdDogMSxcXG4tXFx0XFx0ICAgIHJzdmQxXFx0OiAzLFxcbitcXHRcXHQgICAgcnN2ZDFcXHQ6IDIsXFxuK1xcdFxcdCAgICBnYXBwaV9kaXNcXHQ6IDEsXFxuIFxcdFxcdCAgICBpc19ydW5cXHQ6IDEsXFxuIFxcdFxcdCAgICAvKiAtLS0tLS0gKi9cXG4gXFx0XFx0ICAgIGd1ZXN0X21vZGVcXHQ6IDEsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYW1kL2luaXQuYyBiL2RyaXZlcnMvaW9tbXUvYW1kL2luaXQuY1xcbmluZGV4IDNiZGIzODBkMjNlOWE5Li5iM2UxZDhlZTdlOWQ2MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmNcXG4rKysgYi9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmNcXG5AQCAtMTYwLDYgKzE2MCw5IEBAIHU4IGFtZF9pb21tdV9ocHRfbGV2ZWw7XFxuIC8qIEd1ZXN0IHBhZ2UgdGFibGUgbGV2ZWwgKi9cXG4gaW50IGFtZF9pb21tdV9ncHRfbGV2ZWwgPSBQQUdFX01PREVfNF9MRVZFTDtcXG4gXFxuK2Jvb2wgYW1kX2lvbW11X2dhcHBpO1xcbitFWFBPUlRfU1lNQk9MKGFtZF9pb21tdV9nYXBwaSk7XFxuK1xcbiBpbnQgYW1kX2lvbW11X2d1ZXN0X2lyID0gQU1EX0lPTU1VX0dVRVNUX0lSX1ZBUElDO1xcbiBzdGF0aWMgaW50IGFtZF9pb21tdV94dF9tb2RlID0gSVJRX1JFTUFQX1hBUElDX01PREU7XFxuIFxcbkBAIC0zMDM1LDExICszMDM4LDIwIEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9pb21tdXNfdmFwaWModm9pZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoYW1kX2lvbW11X2dhcHBpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhKGNoZWNrX2ZlYXR1cmUoRkVBVFVSRV9HQVBQSSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICAgQU1EX0lPTU1VX0dVRVNUX0lSX1ZBUElDKGFtZF9pb21tdV9ndWVzdF9pcikpKSB7XFxuK1xcdFxcdHByX3dhcm4oXFxcIkdBUFBJIGlzIG5vdCBzdXBwb3J0ZWQuXFxcXG5cXFwiKTtcXG4rXFx0XFx0YW1kX2lvbW11X2dhcHBpID0gZmFsc2U7XFxuK1xcdH1cXG4rXFxuIFxcdC8qIEVuYWJsaW5nIEdBTSBhbmQgU05QQVZJQyBzdXBwb3J0ICovXFxuIFxcdGZvcl9lYWNoX2lvbW11KGlvbW11KSB7XFxuLVxcdFxcdGlmIChpb21tdV9pbml0X2dhX2xvZyhpb21tdSkgfHxcXG4tXFx0XFx0ICAgIGlvbW11X2dhX2xvZ19lbmFibGUoaW9tbXUpKVxcbi1cXHRcXHRcXHRyZXR1cm47XFxuK1xcdFxcdGlmIChhbWRfaW9tbXVfZ2FwcGkpXFxuK1xcdFxcdFxcdGlvbW11X2ZlYXR1cmVfZW5hYmxlKGlvbW11LCBDT05UUk9MX0dBUFBJX0VOKTtcXG4rXFx0XFx0ZWxzZSBpZiAoaW9tbXVfaW5pdF9nYV9sb2coaW9tbXUpIHx8XFxuK1xcdFxcdFxcdCBpb21tdV9nYV9sb2dfZW5hYmxlKGlvbW11KSlcXG4rXFx0XFx0XFx0IHJldHVybjtcXG4gXFxuIFxcdFxcdGlvbW11X2ZlYXR1cmVfZW5hYmxlKGlvbW11LCBDT05UUk9MX0dBTV9FTik7XFxuIFxcdFxcdGlmIChhbWRfaW9tbXVfc25wX2VuKVxcbkBAIC0zMDQ3LDcgKzMwNTksOCBAQCBzdGF0aWMgdm9pZCBlbmFibGVfaW9tbXVzX3ZhcGljKHZvaWQpXFxuIFxcdH1cXG4gXFxuIFxcdGFtZF9pb21tdV9pcnFfb3BzLmNhcGFiaWxpdHkgfD0gKDEgXFx1MDAzY1xcdTAwM2MgSVJRX1BPU1RJTkdfQ0FQKTtcXG4tXFx0cHJfaW5mbyhcXFwiVmlydHVhbCBBUElDIGVuYWJsZWRcXFxcblxcXCIpO1xcbitcXHRwcl9pbmZvKFxcXCJWaXJ0dWFsIEFQSUMgZW5hYmxlZCB3aXRoICVzXFxcXG5cXFwiLFxcbitcXHRcXHRhbWRfaW9tbXVfZ2FwcGkgPyBcXFwiR0FQUElcXFwiIDogXFxcIkdBTE9HXFxcIik7XFxuICNlbmRpZlxcbiB9XFxuIFxcbkBAIC0zNzM4LDYgKzM3NTEsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBwYXJzZV9hbWRfaW9tbXVfb3B0aW9ucyhjaGFyICpzdHIpXFxuIFxcdFxcdH0gZWxzZSBpZiAoc3RybmNtcChzdHIsIFxcXCJ2Ml9wZ3NpemVzX29ubHlcXFwiLCAxNSkgPT0gMCkge1xcbiBcXHRcXHRcXHRwcl9pbmZvKFxcXCJSZXN0cmljdGluZyBWMSBwYWdlLXNpemVzIHRvIDRLaUIvMk1pQi8xR2lCXFxcIik7XFxuIFxcdFxcdFxcdGFtZF9pb21tdV9wZ3NpemVfYml0bWFwID0gQU1EX0lPTU1VX1BHU0laRVNfVjI7XFxuK1xcdFxcdH0gZWxzZSBpZiAoc3RybmNtcChzdHIsIFxcXCJnYXBwaVxcXCIsIDUpID09IDApIHtcXG4rXFx0XFx0XFx0YW1kX2lvbW11X2dhcHBpID0gdHJ1ZTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0cHJfbm90aWNlKFxcXCJVbmtub3duIG9wdGlvbiAtICclcydcXFxcblxcXCIsIHN0cik7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvaW9tbXUuYyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmNcXG5pbmRleCA1N2RjOGZhYmM3ZDliOS4uNDY5MGNlY2M5YWE3ZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pb21tdS9hbWQvaW9tbXUuY1xcbisrKyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmNcXG5AQCAtMzk1OSwxOSArMzk1OSwyOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGFtZF9pcl9kb21haW5fb3BzID0ge1xcbiBcXHQuZGVhY3RpdmF0ZSA9IGlycV9yZW1hcHBpbmdfZGVhY3RpdmF0ZSxcXG4gfTtcXG4gXFxuLXN0YXRpYyB2b2lkIF9fYW1kX2lvbW11X3VwZGF0ZV9nYShzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnksIGludCBjcHUsXFxuLVxcdFxcdFxcdFxcdCAgYm9vbCBnYV9sb2dfaW50cilcXG4rc3RhdGljIHZvaWQgX19hbWRfaW9tbXVfdXBkYXRlX2dhKHN0cnVjdCBpcnRlX2dhICplbnRyeSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxcbiB7XFxuLVxcdGlmIChjcHUgXFx1MDAzZT0gMCkge1xcbitcXHRpZiAoZmxhZ3MgXFx1MDAyNiBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkcpIHtcXG4gXFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5kZXN0aW5hdGlvbiA9XFxuLVxcdFxcdFxcdFxcdFxcdEFQSUNJRF9UT19JUlRFX0RFU1RfTE8oY3B1KTtcXG4rXFx0XFx0XFx0XFx0XFx0QVBJQ0lEX1RPX0lSVEVfREVTVF9MTyhhcGljaWQpO1xcbiBcXHRcXHRlbnRyeS1cXHUwMDNlaGkuZmllbGRzLmRlc3RpbmF0aW9uID1cXG4tXFx0XFx0XFx0XFx0XFx0QVBJQ0lEX1RPX0lSVEVfREVTVF9ISShjcHUpO1xcbitcXHRcXHRcXHRcXHRcXHRBUElDSURfVE9fSVJURV9ERVNUX0hJKGFwaWNpZCk7XFxuIFxcdFxcdGVudHJ5LVxcdTAwM2Vsby5maWVsZHNfdmFwaWMuaXNfcnVuID0gdHJ1ZTtcXG4gXFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5nYV9sb2dfaW50ciA9IGZhbHNlO1xcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHRlbnRyeS1cXHUwMDNlbG8uZmllbGRzX3ZhcGljLmlzX3J1biA9IGZhbHNlO1xcbi1cXHRcXHRlbnRyeS1cXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX2xvZ19pbnRyID0gZ2FfbG9nX2ludHI7XFxuK1xcdFxcdGJvb2wgcG9zdGVkX2ludHIgPSAhIShmbGFncyBcXHUwMDI2IEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSKTtcXG4rXFx0XFx0aWYgKGFtZF9pb21tdV9nYXBwaSkge1xcbitcXHRcXHRcXHRlbnRyeS1cXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhcHBpX2RpcyA9ICFwb3N0ZWRfaW50ciBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBjaGVja19mZWF0dXJlMihGRUFUVVJFX0dBUFBJRElTU1VQKTtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5kZXN0aW5hdGlvbiA9XFxuK1xcdFxcdFxcdFxcdFxcdFxcdEFQSUNJRF9UT19JUlRFX0RFU1RfTE8oYXBpY2lkKTtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWhpLmZpZWxkcy5kZXN0aW5hdGlvbiA9IEFQSUNJRF9UT19JUlRFX0RFU1RfSEkoYXBpY2lkKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5nYV9sb2dfaW50ciA9IHBvc3RlZF9pbnRyO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMzk5Miw3ICs0MDAxLDcgQEAgc3RhdGljIHZvaWQgX19hbWRfaW9tbXVfdXBkYXRlX2dhKHN0cnVjdCBpcnRlX2dhICplbnRyeSwgaW50IGNwdSxcXG4gICogYW5kIHRodXMgZG9uJ3QgcmVxdWlyZSBhbiBpbnZhbGlkYXRpb24gdG8gZW5zdXJlIHRoZSBJT01NVSBjb25zdW1lcyBmcmVzaFxcbiAgKiBpbmZvcm1hdGlvbi5cXG4gICovXFxuLWludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpXFxuK2ludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcXG4ge1xcbiBcXHRzdHJ1Y3QgYW1kX2lyX2RhdGEgKmlyX2RhdGEgPSAoc3RydWN0IGFtZF9pcl9kYXRhICopZGF0YTtcXG4gXFx0c3RydWN0IGlydGVfZ2EgKmVudHJ5ID0gKHN0cnVjdCBpcnRlX2dhICopIGlyX2RhdGEtXFx1MDAzZWVudHJ5O1xcbkBAIC00MDA2LDE0ICs0MDE1LDE0IEBAIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpXFxuIFxcdGlmICghaXJfZGF0YS1cXHUwMDNlaW9tbXUpXFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiBcXG4tXFx0X19hbWRfaW9tbXVfdXBkYXRlX2dhKGVudHJ5LCBjcHUsIGdhX2xvZ19pbnRyKTtcXG4rXFx0X19hbWRfaW9tbXVfdXBkYXRlX2dhKGVudHJ5LCBhcGljaWQsIGZsYWdzKTtcXG4gXFxuIFxcdHJldHVybiBfX21vZGlmeV9pcnRlX2dhKGlyX2RhdGEtXFx1MDAzZWlvbW11LCBpcl9kYXRhLVxcdTAwM2VpcnFfMl9pcnRlLmRldmlkLFxcbiBcXHRcXHRcXHRcXHRpcl9kYXRhLVxcdTAwM2VpcnFfMl9pcnRlLmluZGV4LCBlbnRyeSk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChhbWRfaW9tbXVfdXBkYXRlX2dhKTtcXG4gXFxuLWludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKVxcbitpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxcbiB7XFxuIFxcdHN0cnVjdCBhbWRfaXJfZGF0YSAqaXJfZGF0YSA9IChzdHJ1Y3QgYW1kX2lyX2RhdGEgKilkYXRhO1xcbiBcXHRzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnkgPSAoc3RydWN0IGlydGVfZ2EgKikgaXJfZGF0YS1cXHUwMDNlZW50cnk7XFxuQEAgLTQwMzQsOSArNDA0MywxMyBAQCBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcXG4gXFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5ndWVzdF9tb2RlICA9IDE7XFxuIFxcdGVudHJ5LVxcdTAwM2VoaS5maWVsZHMuZ2Ffcm9vdF9wdHIgICAgICAgPSBpcl9kYXRhLVxcdTAwM2VnYV9yb290X3B0cjtcXG4gXFx0ZW50cnktXFx1MDAzZWhpLmZpZWxkcy52ZWN0b3IgICAgICAgICAgICA9IGlyX2RhdGEtXFx1MDAzZWdhX3ZlY3RvcjtcXG4tXFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5nYV90YWcgICAgICA9IGlyX2RhdGEtXFx1MDAzZWdhX3RhZztcXG4gXFxuLVxcdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgY3B1LCBnYV9sb2dfaW50cik7XFxuK1xcdGlmIChhbWRfaW9tbXVfZ2FwcGkpXFxuK1xcdFxcdGVudHJ5LVxcdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfdGFnID0gUE9TVEVEX0lOVFJfV0FLRVVQX1ZFQ1RPUjtcXG4rXFx0ZWxzZVxcbitcXHRcXHRlbnRyeS1cXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX3RhZyA9IGlyX2RhdGEtXFx1MDAzZWdhX3RhZztcXG4rXFxuK1xcdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgYXBpY2lkLCBmbGFncyk7XFxuIFxcbiBcXHRyZXR1cm4gbW9kaWZ5X2lydGVfZ2EoaXJfZGF0YS1cXHUwMDNlaW9tbXUsIGlyX2RhdGEtXFx1MDAzZWlycV8yX2lydGUuZGV2aWQsXFxuIFxcdFxcdFxcdCAgICAgIGlyX2RhdGEtXFx1MDAzZWlycV8yX2lydGUuaW5kZXgsIGVudHJ5KTtcXG5AQCAtNDEwNyw4ICs0MTIwLDggQEAgc3RhdGljIGludCBhbWRfaXJfc2V0X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGlycV9kYXRhICpkYXRhLCB2b2lkICppbmZvKVxcbiBcXHRcXHRpcl9kYXRhLVxcdTAwM2VnYV92ZWN0b3IgPSBwaV9kYXRhLVxcdTAwM2V2ZWN0b3I7XFxuIFxcdFxcdGlyX2RhdGEtXFx1MDAzZWdhX3RhZyA9IHBpX2RhdGEtXFx1MDAzZWdhX3RhZztcXG4gXFx0XFx0aWYgKHBpX2RhdGEtXFx1MDAzZWlzX2d1ZXN0X21vZGUpXFxuLVxcdFxcdFxcdHJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtXFx1MDAzZWNwdSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHBpX2RhdGEtXFx1MDAzZWdhX2xvZ19pbnRyKTtcXG4rXFx0XFx0XFx0cmV0ID0gYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoaXJfZGF0YSwgcGlfZGF0YS1cXHUwMDNlYXBpY2lkLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgcGlfZGF0YS1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdHJldCA9IGFtZF9pb21tdV9kZWFjdGl2YXRlX2d1ZXN0X21vZGUoaXJfZGF0YSk7XFxuIFxcdH0gZWxzZSB7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmggYi9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oXFxuaW5kZXggZWRjZWU5ZjUzMzVhNmYuLjg3ZTc2ZjYxN2VhMTg1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oXFxuQEAgLTMwLDggKzMwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGFtZF9pb21tdV9kZXRlY3Qodm9pZCkgeyB9XFxuIC8qIElPTU1VIEFWSUMgRnVuY3Rpb24gKi9cXG4gZXh0ZXJuIGludCBhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKGludCAoKm5vdGlmaWVyKSh1MzIpKTtcXG4gXFxuLWV4dGVybiBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKTtcXG4tZXh0ZXJuIGludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKTtcXG4rZXh0ZXJuIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncyk7XFxuK2V4dGVybiBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKTtcXG4gZXh0ZXJuIGludCBhbWRfaW9tbXVfZGVhY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEpO1xcbiBcXG4gI2Vsc2UgLyogZGVmaW5lZChDT05GSUdfQU1EX0lPTU1VKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19JUlFfUkVNQVApICovXFxuQEAgLTQyLDEyICs0MiwxMiBAQCBhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKGludCAoKm5vdGlmaWVyKSh1MzIpKVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKVxcbitzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcXG4ge1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcXG4rc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxcbiB7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTc2LDQgKzc2LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IGFtZF9pb21tdV9zbnBfZGlzYWJsZSh2b2lkKSB7IHJldHVybiAwOyB9XFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBhbWRfaW9tbXVfc2V2X3Rpb19zdXBwb3J0ZWQodm9pZCkgeyByZXR1cm4gZmFsc2U7IH1cXG4gI2VuZGlmXFxuIFxcbisjZGVmaW5lIEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklOR19TSElGVCAwXFxuKyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfVkNQVV9SVU5OSU5HICBCSVQoMClcXG4rXFxuKyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFJfU0hJRlQgMVxcbisjZGVmaW5lIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSICBCSVQoMSlcXG4rXFxuK2V4dGVybiBib29sIGFtZF9pb21tdV9nYXBwaTtcXG4gI2VuZGlmIC8qIF9BU01fWDg2X0FNRF9JT01NVV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjU5OjM3LjgxNTM3NTE1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE1NTgxMDI3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiLFxuICAgIFwiQU1EX0lPTU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXZpY19waV91cGRhdGVfaXJ0ZVwiLFxuICAgIFwiYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eVwiLFxuICAgIFwiYW1kX2lvbW11X3VwZGF0ZV9nYVwiLFxuICAgIFwiYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVcIixcbiAgICBcImF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3RcIixcbiAgICBcImF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdFwiLFxuICAgIFwiYXZpY19nYXBwaV93YWtldXBfaGFuZGxlclwiLFxuICAgIFwiX19hbWRfaW9tbXVfdXBkYXRlX2dhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIGludHJvZHVjZXMgR0FQUEkgKEd1ZXN0IEFQSUMgUG9zdGVkIEludGVycnVwdHMpIHN1cHBvcnQgZm9yIEFNRCBJT01NVSBhbmQgS1ZNIFNWTSBBVklDLiBJdCBtb2RpZmllcyBjb3JlIGludGVycnVwdCByZW1hcHBpbmcgYW5kIHZDUFUgYWZmaW5pdHkgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIG5lc3RlZCBLVk0gb24gQU1EKS4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBuZXcgd2FrZXVwIGxpc3RzIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgZG8gbm90IGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIG9yIG1lbW9yeSBjb3JydXB0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMwNzY4OTk2ZWFhYzk2NjRjMTkxNGE0ODVhNWUyMjg1OWE5NmViNWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAyMjo1OTozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaFxuaW5kZXggMzdiOTRmNDg0ZWYzMzguLjQwYTIyMDZhMzNjMDhkIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vaXJxX3JlbWFwcGluZy5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmhcbkBAIC0zNSw4ICszNSw4IEBAIHN0cnVjdCBhbWRfaW9tbXVfcGlfZGF0YSB7XG4gXHR1NjQgdmFwaWNfYWRkcjtcdFx0LyogUGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgdkNQVSdzIHZBUElDLiAqL1xuIFx0dTMyIGdhX3RhZztcbiBcdHUzMiB2ZWN0b3I7XHRcdC8qIEd1ZXN0IHZlY3RvciBvZiB0aGUgaW50ZXJydXB0ICovXG4tXHRpbnQgY3B1O1xuLVx0Ym9vbCBnYV9sb2dfaW50cjtcbitcdGludCBhcGljaWQ7XG4rXHRpbnQgZmxhZ3M7XG4gXHRib29sIGlzX2d1ZXN0X21vZGU7XG4gXHR2b2lkICppcl9kYXRhO1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9hdmljLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuY1xuaW5kZXggY2RkNWE2ZGM2NDZmMTEuLmQyMzhmNjVhODE3MmJjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9hdmljLmNcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jXG5AQCAtNjMsNiArNjMsOSBAQFxuIFx0Z2FfdGFnO1x0XHRcdFx0XHRcdFx0XHRcXFxuIH0pXG4gXG4rc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBsaXN0X2hlYWQsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpO1xuK3N0YXRpYyBERUZJTkVfUEVSX0NQVShyYXdfc3BpbmxvY2tfdCwgZ2FwcGlfdmNwdV93YWtldXBfbGlzdF9sb2NrKTtcbitcbiBzdGF0aWNfYXNzZXJ0KF9fQVZJQ19HQVRBRyhBVklDX1ZNX0lEX01BU0ssIEFWSUNfVkNQVV9JRFhfTUFTSykgPT0gLTF1KTtcbiBcbiAjZGVmaW5lIEFWSUNfQVVUT19NT0RFIC0xXG5AQCAtODc0LDYgKzg3Nyw5IEBAIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KTtcbiBcdHJhd19zcGluX2xvY2tfaW5pdChcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdF9sb2NrKTtcbiBcbitcdElOSVRfTElTVF9IRUFEKFx1MDAyNnN2bS1cdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KTtcbitcdHN2bS1cdTAwM2VnYXBwaV9jcHUgPSAtMTtcbitcbiBcdGlmICghZW5hYmxlX2FwaWN2IHx8ICFpcnFjaGlwX2luX2tlcm5lbCh2Y3B1LVx1MDAzZWt2bSkpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTg4Niw2ICs4OTIsNDQgQEAgaW50IGF2aWNfaW5pdF92Y3B1KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSwgaW50IGNwdSlcbit7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkICp3YWtldXBfbGlzdDtcbitcdHJhd19zcGlubG9ja190ICpzcGlubG9jaztcbitcbitcdGlmIChXQVJOX09OKGNwdSBcdTAwM2MgMCkpXG4rXHRcdHJldHVybjtcbitcbitcdHdha2V1cF9saXN0ID0gXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0LCBjcHUpO1xuK1x0c3BpbmxvY2sgPSBcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KTtcbitcdHJhd19zcGluX2xvY2soc3BpbmxvY2spO1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c3ZtLVx1MDAzZWdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpKVxuK1x0XHRsaXN0X2FkZF90YWlsKFx1MDAyNnN2bS1cdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0LCB3YWtldXBfbGlzdCk7XG4rXHRyYXdfc3Bpbl91bmxvY2soc3BpbmxvY2spO1xuK31cbitcbitzdGF0aWMgdm9pZCBhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3RydWN0IHZjcHVfc3ZtICpzdm0sIGludCBjcHUpXG4re1xuK1x0cmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrO1xuK1xuK1x0aWYgKFdBUk5fT04oY3B1IFx1MDAzYyAwKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0c3BpbmxvY2sgPSBcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KTtcbitcdHJhd19zcGluX2xvY2soc3BpbmxvY2spO1xuK1x0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KSlcbitcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZzdm0tXHUwMDNlZ2FwcGlfdmNwdV93YWtldXBfbGlzdCk7XG4rXHRyYXdfc3Bpbl91bmxvY2soc3BpbmxvY2spO1xuK31cbitcbit2b2lkIGF2aWNfZGVzdHJveV92Y3B1KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuK3tcbitcdGlmIChzdm0tXHUwMDNlZ2FwcGlfY3B1ICE9IC0xIFx1MDAyNlx1MDAyNiBhbWRfaW9tbXVfZ2FwcGkpIHtcbitcdFx0YXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4rXHRcdHN2bS1cdTAwM2VnYXBwaV9jcHUgPSAtMTtcbitcdH1cbit9XG4rXG4gdm9pZCBhdmljX2FwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0YXZpY19oYW5kbGVfZGZyX3VwZGF0ZSh2Y3B1KTtcbkBAIC04OTYsMTMgKzk0MCwxOCBAQCBzdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxuIHtcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IGlycWZkLVx1MDAzZWlycV9ieXBhc3NfdmNwdTtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bTtcbiBcbiBcdGlmICghdmNwdSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnRvX3N2bSh2Y3B1KS1cdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcbitcdHN2bSA9IHRvX3N2bSh2Y3B1KTtcbitcbitcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdF9sb2NrLCBmbGFncyk7XG4gXHRsaXN0X2RlbChcdTAwMjZpcnFmZC1cdTAwM2V2Y3B1X2xpc3QpO1xuLVx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2dG9fc3ZtKHZjcHUpLVx1MDAzZWlyX2xpc3RfbG9jaywgZmxhZ3MpO1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3QpKVxuK1x0XHRhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcbiB9XG4gXG4gaW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG5AQCAtOTMyLDYgKzk4MSw4IEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuIFx0XHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bSA9IHRvX3N2bSh2Y3B1KTtcbiBcdFx0dTY0IGVudHJ5O1xuIFx0XHRpbnQgcmV0O1xuK1x0XHRpbnQgcG9zdGVkX2ludHI7XG4rXHRcdGJvb2wgaXNfdmNwdV93YWl0aW5nID0gZmFsc2U7XG4gXG4gXHRcdC8qXG4gXHRcdCAqIFByZXZlbnQgdGhlIHZDUFUgZnJvbSBiZWluZyBzY2hlZHVsZWQgb3V0IG9yIG1pZ3JhdGVkIHVudGlsXG5AQCAtOTQ5LDE1ICsxMDAwLDIzIEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuIFx0XHQgKi9cbiBcdFx0ZW50cnkgPSBzdm0tXHUwMDNlYXZpY19waHlzaWNhbF9pZF9lbnRyeTtcbiBcdFx0aWYgKGVudHJ5IFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0lTX1JVTk5JTkdfTUFTSykge1xuLVx0XHRcdHBpX2RhdGEuY3B1ID0gZW50cnkgXHUwMDI2IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfSE9TVF9QSFlTSUNBTF9JRF9NQVNLO1xuK1x0XHRcdHBpX2RhdGEuYXBpY2lkID0gZW50cnkgXHUwMDI2IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfSE9TVF9QSFlTSUNBTF9JRF9NQVNLO1xuK1x0XHRcdHBpX2RhdGEuZmxhZ3MgPSBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkc7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0cGlfZGF0YS5jcHUgPSAtMTtcbi1cdFx0XHRwaV9kYXRhLmdhX2xvZ19pbnRyID0gZW50cnkgXHUwMDI2IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfR0FfTE9HX0lOVFI7XG4rXHRcdFx0cG9zdGVkX2ludHIgPSAhIShlbnRyeSBcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUik7XG4rXHRcdFx0cGlfZGF0YS5mbGFncyA9IHBvc3RlZF9pbnRyIFx1MDAzY1x1MDAzYyBBTURfSU9NTVVfRkxBR19QT1NURURfSU5UUl9TSElGVDtcbitcdFx0XHRpZiAoYW1kX2lvbW11X2dhcHBpKSB7XG4rXHRcdFx0XHRwaV9kYXRhLmFwaWNpZCA9IGt2bV9jcHVfZ2V0X2FwaWNpZChzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbitcdFx0XHRcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KSkge1xuK1x0XHRcdFx0XHRhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4rXHRcdFx0XHRcdGlzX3ZjcHVfd2FpdGluZyA9IHRydWU7XG4rXHRcdFx0XHR9XG4rXHRcdFx0fVxuIFx0XHR9XG4gXG4gXHRcdHJldCA9IGlycV9zZXRfdmNwdV9hZmZpbml0eShob3N0X2lycSwgXHUwMDI2cGlfZGF0YSk7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0cmV0dXJuIHJldDtcbitcdFx0XHRnb3RvIGdhcHBpX2Vycl9vdXQ7XG4gXG4gXHRcdC8qXG4gXHRcdCAqIFJldmVydCB0byBsZWdhY3kgbW9kZSBpZiB0aGUgSU9NTVUgZGlkbid0IHByb3ZpZGUgbWV0YWRhdGFcbkBAIC05NjYsMTIgKzEwMjUsMTcgQEAgaW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG4gXHRcdCAqL1xuIFx0XHRpZiAoV0FSTl9PTl9PTkNFKCFwaV9kYXRhLmlyX2RhdGEpKSB7XG4gXHRcdFx0aXJxX3NldF92Y3B1X2FmZmluaXR5KGhvc3RfaXJxLCBOVUxMKTtcbi1cdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0XHRyZXQgPSAtRUlPO1xuK1x0XHRcdGdvdG8gZ2FwcGlfZXJyX291dDtcbiBcdFx0fVxuIFxuIFx0XHRpcnFmZC1cdTAwM2VpcnFfYnlwYXNzX2RhdGEgPSBwaV9kYXRhLmlyX2RhdGE7XG4gXHRcdGxpc3RfYWRkKFx1MDAyNmlycWZkLVx1MDAzZXZjcHVfbGlzdCwgXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3QpO1xuIFx0XHRyZXR1cm4gMDtcbitnYXBwaV9lcnJfb3V0OlxuK1x0XHRpZiAoaXNfdmNwdV93YWl0aW5nKVxuK1x0XHRcdGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS1cdTAwM2VnYXBwaV9jcHUpO1xuK1x0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFx0cmV0dXJuIGlycV9zZXRfdmNwdV9hZmZpbml0eShob3N0X2lycSwgTlVMTCk7XG4gfVxuQEAgLTEwMDQsMTAgKzEwNjgsMTQgQEAgZW51bSBhdmljX3ZjcHVfYWN0aW9uIHtcbiBcdEFWSUNfU1RBUlRfQkxPQ0tJTkdcdD0gQklUKDEpLFxuIH07XG4gXG4tc3RhdGljIHZvaWQgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUsXG4tXHRcdFx0XHRcdCAgICBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKVxuK3N0YXRpYyB2b2lkIGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgYXBpY2lkLFxuK1x0XHRcdFx0XHQgICAgaW50IGNwdSwgZW51bSBhdmljX3ZjcHVfYWN0aW9uIGFjdGlvbilcbiB7XG4tXHRib29sIGdhX2xvZ19pbnRyID0gKGFjdGlvbiBcdTAwMjYgQVZJQ19TVEFSVF9CTE9DS0lORyk7XG4rXHRpbnQgcG9zdGVkX2ludHIgPSAhIShhY3Rpb24gXHUwMDI2IEFWSUNfU1RBUlRfQkxPQ0tJTkcpIFx1MDAzY1x1MDAzY1xuK1x0XHRcdCAgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFJfU0hJRlQ7XG4rXHRpbnQgaXNfdmNwdV9ydW5uaW5nID0gKGFwaWNpZCBcdTAwM2U9IDApIFx1MDAzY1x1MDAzY1xuK1x0XHRcdCAgICAgIEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklOR19TSElGVDtcbitcdGludCBmbGFncyA9IHBvc3RlZF9pbnRyIHwgaXNfdmNwdV9ydW5uaW5nO1xuIFx0c3RydWN0IHZjcHVfc3ZtICpzdm0gPSB0b19zdm0odmNwdSk7XG4gXHRzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQ7XG4gXG5AQCAtMTAxNywxNiArMTA4NSwzMCBAQCBzdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSxcbiBcdCAqIEhlcmUsIHdlIGdvIHRocm91Z2ggdGhlIHBlci12Y3B1IGlyX2xpc3QgdG8gdXBkYXRlIGFsbCBleGlzdGluZ1xuIFx0ICogaW50ZXJydXB0IHJlbWFwcGluZyB0YWJsZSBlbnRyeSB0YXJnZXRpbmcgdGhpcyB2Y3B1LlxuIFx0ICovXG4tXHRpZiAobGlzdF9lbXB0eShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdCkpXG4rXHRpZiAobGlzdF9lbXB0eShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdCkpIHtcbitcdFx0aWYgKGFtZF9pb21tdV9nYXBwaSBcdTAwMjZcdTAwMjYgY3B1IFx1MDAzZT0gMClcbitcdFx0XHRzdm0tXHUwMDNlZ2FwcGlfY3B1ID0gY3B1O1xuIFx0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRpZiAoaXNfdmNwdV9ydW5uaW5nIFx1MDAyNlx1MDAyNiBhbWRfaW9tbXVfZ2FwcGkpIHtcbitcdFx0LyogSUYgY29uZGl0aW9uIGhhbmRsZXMgdGhlIGluaXRpYWwgc3RhdGUgKi9cbitcdFx0aWYgKHN2bS1cdTAwM2VnYXBwaV9jcHUgIT0gLTEpXG4rXHRcdFx0YXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4rXG4rXHRcdHN2bS1cdTAwM2VnYXBwaV9jcHUgPSBjcHU7IC8qIFN0b3JlIGNwdSBubyBhcyB0YXJnZXQgZm9yIEdBUFBJICovXG4rXHR9IGVsc2UgaWYgKGFtZF9pb21tdV9nYXBwaSkge1xuK1x0XHRhcGljaWQgPSBrdm1fY3B1X2dldF9hcGljaWQoc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4rXHRcdGF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbitcdH1cbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXJxZmQsIFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0LCB2Y3B1X2xpc3QpIHtcbiBcdFx0dm9pZCAqZGF0YSA9IGlycWZkLVx1MDAzZWlycV9ieXBhc3NfZGF0YTtcbiBcbiBcdFx0aWYgKCEoYWN0aW9uIFx1MDAyNiBBVklDX1RPR0dMRV9PTl9PRkYpKVxuLVx0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfdXBkYXRlX2dhKGRhdGEsIGNwdSwgZ2FfbG9nX2ludHIpKTtcbi1cdFx0ZWxzZSBpZiAoY3B1IFx1MDAzZT0gMClcbi1cdFx0XHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoZGF0YSwgY3B1LCBnYV9sb2dfaW50cikpO1xuK1x0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfdXBkYXRlX2dhKGRhdGEsIGFwaWNpZCwgZmxhZ3MpKTtcbitcdFx0ZWxzZSBpZiAoaXNfdmNwdV9ydW5uaW5nKVxuK1x0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZShkYXRhLCBhcGljaWQsIGZsYWdzKSk7XG4gXHRcdGVsc2VcbiBcdFx0XHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X2RlYWN0aXZhdGVfZ3Vlc3RfbW9kZShkYXRhKSk7XG4gXHR9XG5AQCAtMTA4MCw3ICsxMTYyLDcgQEAgc3RhdGljIHZvaWQgX19hdmljX3ZjcHVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUsXG4gXG4gXHRXUklURV9PTkNFKGt2bV9zdm0tXHUwMDNlYXZpY19waHlzaWNhbF9pZF90YWJsZVt2Y3B1LVx1MDAzZXZjcHVfaWRdLCBlbnRyeSk7XG4gXG4tXHRhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIGhfcGh5c2ljYWxfaWQsIGFjdGlvbik7XG4rXHRhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIGhfcGh5c2ljYWxfaWQsIGNwdSwgYWN0aW9uKTtcbiBcbiBcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcbiB9XG5AQCAtMTEyMyw3ICsxMjA1LDcgQEAgc3RhdGljIHZvaWQgX19hdmljX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZW51bSBhdmljX3ZjcHVfYWN0aW9uIGFjdGlvbilcbiBcdCAqL1xuIFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcbiBcbi1cdGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkodmNwdSwgLTEsIGFjdGlvbik7XG4rXHRhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIC0xLCAtMSwgYWN0aW9uKTtcbiBcbiBcdFdBUk5fT05fT05DRShlbnRyeSBcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUik7XG4gXG5AQCAtMTI5Niw2ICsxMzc4LDIxIEBAIHN0YXRpYyBib29sIF9faW5pdCBhdmljX3dhbnRfYXZpY19lbmFibGVkKHZvaWQpXG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcih2b2lkKVxuK3tcbitcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkICp2Y3B1X3dha2V1cF9saXN0ID0gXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0LCBjcHUpO1xuK1x0cmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrID0gXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7XG4rXHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bTtcbitcbitcdHJhd19zcGluX2xvY2soc3BpbmxvY2spO1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShzdm0sIHZjcHVfd2FrZXVwX2xpc3QsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpIHtcbitcdFx0aWYgKGt2bV9sYXBpY19maW5kX2hpZ2hlc3RfaXJyKFx1MDAyNnN2bS1cdTAwM2V2Y3B1KSBcdTAwM2U9IDApXG4rXHRcdFx0a3ZtX3ZjcHVfd2FrZV91cChcdTAwMjZzdm0tXHUwMDNldmNwdSk7XG4rXHR9XG4rXHRyYXdfc3Bpbl91bmxvY2soc3BpbmxvY2spO1xuK31cbitcbiAvKlxuICAqIE5vdGU6XG4gICogLSBUaGUgbW9kdWxlIHBhcmFtIGF2aWMgZW5hYmxlIGJvdGggeEFQSUMgYW5kIHgyQVBJQyBtb2RlLlxuQEAgLTEzMDQsMTIgKzE0MDEsMTggQEAgc3RhdGljIGJvb2wgX19pbml0IGF2aWNfd2FudF9hdmljX2VuYWJsZWQodm9pZClcbiAgKi9cbiBib29sIF9faW5pdCBhdmljX2hhcmR3YXJlX3NldHVwKHZvaWQpXG4ge1xuK1x0aW50IGNwdTtcbiBcdGF2aWMgPSBhdmljX3dhbnRfYXZpY19lbmFibGVkKCk7XG4gXHRpZiAoIWF2aWMpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByX2luZm8oXCJBVklDIGVuYWJsZWRcXG5cIik7XG4gXG4rXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG4rXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnBlcl9jcHUoZ2FwcGlfdmNwdV93YWtldXBfbGlzdCwgY3B1KSk7XG4rXHRcdHJhd19zcGluX2xvY2tfaW5pdChcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KSk7XG4rXHR9XG4rXG4gXHQvKiBBVklDIGlzIGEgcHJlcmVxdWlzaXRlIGZvciB4MkFWSUMuICovXG4gXHR4MmF2aWNfZW5hYmxlZCA9IGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9YMkFWSUMpO1xuIFx0aWYgKHgyYXZpY19lbmFibGVkKSB7XG5AQCAtMTMzMyw2ICsxNDM2LDcgQEAgYm9vbCBfX2luaXQgYXZpY19oYXJkd2FyZV9zZXR1cCh2b2lkKVxuIFx0XHRlbmFibGVfaXBpdiA9IGZhbHNlO1xuIFxuIFx0YW1kX2lvbW11X3JlZ2lzdGVyX2dhX2xvZ19ub3RpZmllcihcdTAwMjZhdmljX2dhX2xvZ19ub3RpZmllcik7XG4rXHRrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyKFx1MDAyNmF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXIpO1xuIFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCBlMDJhMzhkYTUyOTZlMy4uYjY4NzEzM2Y4NTI4YmEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtMTM1Niw2ICsxMzU2LDggQEAgc3RhdGljIHZvaWQgc3ZtX3ZjcHVfZnJlZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3QpKTtcbiBcbitcdGF2aWNfZGVzdHJveV92Y3B1KHN2bSk7XG4rXG4gXHRzdm1fbGVhdmVfbmVzdGVkKHZjcHUpO1xuIFx0c3ZtX2ZyZWVfbmVzdGVkKHN2bSk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbmluZGV4IDUxMzc0MTZiZTU5M2Q3Li40N2Q1YmI1ZDcxMDNkYSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbkBAIC0zNjIsNiArMzYyLDEwIEBAIHN0cnVjdCB2Y3B1X3N2bSB7XG4gXG4gXHQvKiBHdWVzdCBHSUYgdmFsdWUsIHVzZWQgd2hlbiB2R0lGIGlzIG5vdCBlbmFibGVkICovXG4gXHRib29sIGd1ZXN0X2dpZjtcbitcbitcdC8qIEdBUFBJIHJlbGF0ZWQgZmllbGRzICovXG4rXHRzdHJ1Y3QgbGlzdF9oZWFkIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3Q7XG4rXHRpbnQgZ2FwcGlfY3B1O1xuIH07XG4gXG4gc3RydWN0IHN2bV9jcHVfZGF0YSB7XG5AQCAtOTA5LDYgKzkxMyw3IEBAIHZvaWQgYXZpY19pbml0X3ZtY2Ioc3RydWN0IHZjcHVfc3ZtICpzdm0sIHN0cnVjdCB2bWNiICp2bWNiKTtcbiBpbnQgYXZpY19pbmNvbXBsZXRlX2lwaV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBpbnQgYXZpY191bmFjY2VsZXJhdGVkX2FjY2Vzc19pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBpbnQgYXZpY19pbml0X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pO1xuK3ZvaWQgYXZpY19kZXN0cm95X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pO1xuIHZvaWQgYXZpY192Y3B1X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3B1KTtcbiB2b2lkIGF2aWNfdmNwdV9wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiB2b2lkIGF2aWNfYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmggYi9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXUuaFxuaW5kZXggODM0ZDhmYWJmYmEzODcuLjA0NDE3OWNhYjEyZTRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmhcbisrKyBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdS5oXG5AQCAtNDEsNiArNDEsNyBAQCBpbnQgYW1kX2lvbW11X2VuYWJsZSh2b2lkKTtcbiB2b2lkIGFtZF9pb21tdV9kaXNhYmxlKHZvaWQpO1xuIGludCBhbWRfaW9tbXVfcmVlbmFibGUoaW50IG1vZGUpO1xuIGludCBhbWRfaW9tbXVfZW5hYmxlX2ZhdWx0aW5nKHVuc2lnbmVkIGludCBjcHUpO1xuK2V4dGVybiBib29sIGFtZF9pb21tdV9nYXBwaTtcbiBleHRlcm4gaW50IGFtZF9pb21tdV9ndWVzdF9pcjtcbiBleHRlcm4gZW51bSBwcm90ZWN0aW9uX2RvbWFpbl9tb2RlIGFtZF9pb21tdV9wZ3RhYmxlO1xuIGV4dGVybiBpbnQgYW1kX2lvbW11X2dwdF9sZXZlbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaCBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdV90eXBlcy5oXG5pbmRleCBmOWY3MTgwODc4OTMwMy4uZGUwYjIzMzA2OTQ0YjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaFxuKysrIGIvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11X3R5cGVzLmhcbkBAIC05NCw2ICs5NCw3IEBAXG4gI2RlZmluZSBGRUFUVVJFX1gyQVBJQ1x0XHRCSVRfVUxMKDIpXG4gI2RlZmluZSBGRUFUVVJFX05YXHRcdEJJVF9VTEwoMylcbiAjZGVmaW5lIEZFQVRVUkVfR1RcdFx0QklUX1VMTCg0KVxuKyNkZWZpbmUgRkVBVFVSRV9HQVBQSVx0XHRCSVRfVUxMKDUpXG4gI2RlZmluZSBGRUFUVVJFX0lBXHRcdEJJVF9VTEwoNilcbiAjZGVmaW5lIEZFQVRVUkVfR0FcdFx0QklUX1VMTCg3KVxuICNkZWZpbmUgRkVBVFVSRV9IRVx0XHRCSVRfVUxMKDgpXG5AQCAtMTEzLDYgKzExNCw3IEBAXG4gLyogRXh0ZW5kZWQgRmVhdHVyZSAyIEJpdHMgKi9cbiAjZGVmaW5lIEZFQVRVUkVfU0VWU05QSU9fU1VQXHRCSVRfVUxMKDEpXG4gI2RlZmluZSBGRUFUVVJFX0dDUjNUUlBNT0RFXHRCSVRfVUxMKDMpXG4rI2RlZmluZSBGRUFUVVJFX0dBUFBJRElTU1VQXHRCSVRfVUxMKDQpXG4gI2RlZmluZSBGRUFUVVJFX1NOUEFWSUNTVVBcdEdFTk1BU0tfVUxMKDcsIDUpXG4gI2RlZmluZSBGRUFUVVJFX1NOUEFWSUNTVVBfR0FNKHgpIFxcXG4gXHQoRklFTERfR0VUKEZFQVRVUkVfU05QQVZJQ1NVUCwgeCkgPT0gMHgxKVxuQEAgLTE5MCw2ICsxOTIsNyBAQFxuICNkZWZpbmUgQ09OVFJPTF9FUEhfRU5cdFx0NDVcbiAjZGVmaW5lIENPTlRST0xfWFRfRU5cdFx0NTBcbiAjZGVmaW5lIENPTlRST0xfSU5UQ0FQWFRfRU5cdDUxXG4rI2RlZmluZSBDT05UUk9MX0dBUFBJX0VOXHQ1NVxuICNkZWZpbmUgQ09OVFJPTF9HQ1IzVFJQTU9ERVx0NThcbiAjZGVmaW5lIENPTlRST0xfSVJUQ0FDSEVESVNcdDU5XG4gI2RlZmluZSBDT05UUk9MX1NOUEFWSUNfRU5cdDYxXG5AQCAtMTAwNCw3ICsxMDA3LDggQEAgdW5pb24gaXJ0ZV9nYV9sbyB7XG4gXHRcdCAgICBub19mYXVsdFx0OiAxLFxuIFx0XHQgICAgLyogLS0tLS0tICovXG4gXHRcdCAgICBnYV9sb2dfaW50clx0OiAxLFxuLVx0XHQgICAgcnN2ZDFcdDogMyxcbitcdFx0ICAgIHJzdmQxXHQ6IDIsXG4rXHRcdCAgICBnYXBwaV9kaXNcdDogMSxcbiBcdFx0ICAgIGlzX3J1blx0OiAxLFxuIFx0XHQgICAgLyogLS0tLS0tICovXG4gXHRcdCAgICBndWVzdF9tb2RlXHQ6IDEsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvaW5pdC5jIGIvZHJpdmVycy9pb21tdS9hbWQvaW5pdC5jXG5pbmRleCAzYmRiMzgwZDIzZTlhOS4uYjNlMWQ4ZWU3ZTlkNjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmNcbisrKyBiL2RyaXZlcnMvaW9tbXUvYW1kL2luaXQuY1xuQEAgLTE2MCw2ICsxNjAsOSBAQCB1OCBhbWRfaW9tbXVfaHB0X2xldmVsO1xuIC8qIEd1ZXN0IHBhZ2UgdGFibGUgbGV2ZWwgKi9cbiBpbnQgYW1kX2lvbW11X2dwdF9sZXZlbCA9IFBBR0VfTU9ERV80X0xFVkVMO1xuIFxuK2Jvb2wgYW1kX2lvbW11X2dhcHBpO1xuK0VYUE9SVF9TWU1CT0woYW1kX2lvbW11X2dhcHBpKTtcbitcbiBpbnQgYW1kX2lvbW11X2d1ZXN0X2lyID0gQU1EX0lPTU1VX0dVRVNUX0lSX1ZBUElDO1xuIHN0YXRpYyBpbnQgYW1kX2lvbW11X3h0X21vZGUgPSBJUlFfUkVNQVBfWEFQSUNfTU9ERTtcbiBcbkBAIC0zMDM1LDExICszMDM4LDIwIEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9pb21tdXNfdmFwaWModm9pZClcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuK1x0aWYgKGFtZF9pb21tdV9nYXBwaSBcdTAwMjZcdTAwMjZcbitcdCAgICAhKGNoZWNrX2ZlYXR1cmUoRkVBVFVSRV9HQVBQSSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgICBBTURfSU9NTVVfR1VFU1RfSVJfVkFQSUMoYW1kX2lvbW11X2d1ZXN0X2lyKSkpIHtcbitcdFx0cHJfd2FybihcIkdBUFBJIGlzIG5vdCBzdXBwb3J0ZWQuXFxuXCIpO1xuK1x0XHRhbWRfaW9tbXVfZ2FwcGkgPSBmYWxzZTtcbitcdH1cbitcbiBcdC8qIEVuYWJsaW5nIEdBTSBhbmQgU05QQVZJQyBzdXBwb3J0ICovXG4gXHRmb3JfZWFjaF9pb21tdShpb21tdSkge1xuLVx0XHRpZiAoaW9tbXVfaW5pdF9nYV9sb2coaW9tbXUpIHx8XG4tXHRcdCAgICBpb21tdV9nYV9sb2dfZW5hYmxlKGlvbW11KSlcbi1cdFx0XHRyZXR1cm47XG4rXHRcdGlmIChhbWRfaW9tbXVfZ2FwcGkpXG4rXHRcdFx0aW9tbXVfZmVhdHVyZV9lbmFibGUoaW9tbXUsIENPTlRST0xfR0FQUElfRU4pO1xuK1x0XHRlbHNlIGlmIChpb21tdV9pbml0X2dhX2xvZyhpb21tdSkgfHxcbitcdFx0XHQgaW9tbXVfZ2FfbG9nX2VuYWJsZShpb21tdSkpXG4rXHRcdFx0IHJldHVybjtcbiBcbiBcdFx0aW9tbXVfZmVhdHVyZV9lbmFibGUoaW9tbXUsIENPTlRST0xfR0FNX0VOKTtcbiBcdFx0aWYgKGFtZF9pb21tdV9zbnBfZW4pXG5AQCAtMzA0Nyw3ICszMDU5LDggQEAgc3RhdGljIHZvaWQgZW5hYmxlX2lvbW11c192YXBpYyh2b2lkKVxuIFx0fVxuIFxuIFx0YW1kX2lvbW11X2lycV9vcHMuY2FwYWJpbGl0eSB8PSAoMSBcdTAwM2NcdTAwM2MgSVJRX1BPU1RJTkdfQ0FQKTtcbi1cdHByX2luZm8oXCJWaXJ0dWFsIEFQSUMgZW5hYmxlZFxcblwiKTtcbitcdHByX2luZm8oXCJWaXJ0dWFsIEFQSUMgZW5hYmxlZCB3aXRoICVzXFxuXCIsXG4rXHRcdGFtZF9pb21tdV9nYXBwaSA/IFwiR0FQUElcIiA6IFwiR0FMT0dcIik7XG4gI2VuZGlmXG4gfVxuIFxuQEAgLTM3MzgsNiArMzc1MSw4IEBAIHN0YXRpYyBpbnQgX19pbml0IHBhcnNlX2FtZF9pb21tdV9vcHRpb25zKGNoYXIgKnN0cilcbiBcdFx0fSBlbHNlIGlmIChzdHJuY21wKHN0ciwgXCJ2Ml9wZ3NpemVzX29ubHlcIiwgMTUpID09IDApIHtcbiBcdFx0XHRwcl9pbmZvKFwiUmVzdHJpY3RpbmcgVjEgcGFnZS1zaXplcyB0byA0S2lCLzJNaUIvMUdpQlwiKTtcbiBcdFx0XHRhbWRfaW9tbXVfcGdzaXplX2JpdG1hcCA9IEFNRF9JT01NVV9QR1NJWkVTX1YyO1xuK1x0XHR9IGVsc2UgaWYgKHN0cm5jbXAoc3RyLCBcImdhcHBpXCIsIDUpID09IDApIHtcbitcdFx0XHRhbWRfaW9tbXVfZ2FwcGkgPSB0cnVlO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdHByX25vdGljZShcIlVua25vd24gb3B0aW9uIC0gJyVzJ1xcblwiLCBzdHIpO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvaW9tbXUuYyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmNcbmluZGV4IDU3ZGM4ZmFiYzdkOWI5Li40NjkwY2VjYzlhYTdlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmNcbisrKyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmNcbkBAIC0zOTU5LDE5ICszOTU5LDI4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgYW1kX2lyX2RvbWFpbl9vcHMgPSB7XG4gXHQuZGVhY3RpdmF0ZSA9IGlycV9yZW1hcHBpbmdfZGVhY3RpdmF0ZSxcbiB9O1xuIFxuLXN0YXRpYyB2b2lkIF9fYW1kX2lvbW11X3VwZGF0ZV9nYShzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnksIGludCBjcHUsXG4tXHRcdFx0XHQgIGJvb2wgZ2FfbG9nX2ludHIpXG4rc3RhdGljIHZvaWQgX19hbWRfaW9tbXVfdXBkYXRlX2dhKHN0cnVjdCBpcnRlX2dhICplbnRyeSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxuIHtcbi1cdGlmIChjcHUgXHUwMDNlPSAwKSB7XG4rXHRpZiAoZmxhZ3MgXHUwMDI2IEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklORykge1xuIFx0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZGVzdGluYXRpb24gPVxuLVx0XHRcdFx0XHRBUElDSURfVE9fSVJURV9ERVNUX0xPKGNwdSk7XG4rXHRcdFx0XHRcdEFQSUNJRF9UT19JUlRFX0RFU1RfTE8oYXBpY2lkKTtcbiBcdFx0ZW50cnktXHUwMDNlaGkuZmllbGRzLmRlc3RpbmF0aW9uID1cbi1cdFx0XHRcdFx0QVBJQ0lEX1RPX0lSVEVfREVTVF9ISShjcHUpO1xuK1x0XHRcdFx0XHRBUElDSURfVE9fSVJURV9ERVNUX0hJKGFwaWNpZCk7XG4gXHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSB0cnVlO1xuIFx0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfbG9nX2ludHIgPSBmYWxzZTtcbiBcdH0gZWxzZSB7XG4tXHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcbi1cdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX2xvZ19pbnRyID0gZ2FfbG9nX2ludHI7XG4rXHRcdGJvb2wgcG9zdGVkX2ludHIgPSAhIShmbGFncyBcdTAwMjYgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFIpO1xuK1x0XHRpZiAoYW1kX2lvbW11X2dhcHBpKSB7XG4rXHRcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhcHBpX2RpcyA9ICFwb3N0ZWRfaW50ciBcdTAwMjZcdTAwMjZcbitcdFx0XHRcdFx0XHRcdCAgIGNoZWNrX2ZlYXR1cmUyKEZFQVRVUkVfR0FQUElESVNTVVApO1xuK1x0XHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcbitcdFx0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZGVzdGluYXRpb24gPVxuK1x0XHRcdFx0XHRcdEFQSUNJRF9UT19JUlRFX0RFU1RfTE8oYXBpY2lkKTtcbitcdFx0XHRlbnRyeS1cdTAwM2VoaS5maWVsZHMuZGVzdGluYXRpb24gPSBBUElDSURfVE9fSVJURV9ERVNUX0hJKGFwaWNpZCk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmlzX3J1biA9IGZhbHNlO1xuK1x0XHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5nYV9sb2dfaW50ciA9IHBvc3RlZF9pbnRyO1xuK1x0XHR9XG4gXHR9XG4gfVxuIFxuQEAgLTM5OTIsNyArNDAwMSw3IEBAIHN0YXRpYyB2b2lkIF9fYW1kX2lvbW11X3VwZGF0ZV9nYShzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnksIGludCBjcHUsXG4gICogYW5kIHRodXMgZG9uJ3QgcmVxdWlyZSBhbiBpbnZhbGlkYXRpb24gdG8gZW5zdXJlIHRoZSBJT01NVSBjb25zdW1lcyBmcmVzaFxuICAqIGluZm9ybWF0aW9uLlxuICAqL1xuLWludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpXG4raW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxuIHtcbiBcdHN0cnVjdCBhbWRfaXJfZGF0YSAqaXJfZGF0YSA9IChzdHJ1Y3QgYW1kX2lyX2RhdGEgKilkYXRhO1xuIFx0c3RydWN0IGlydGVfZ2EgKmVudHJ5ID0gKHN0cnVjdCBpcnRlX2dhICopIGlyX2RhdGEtXHUwMDNlZW50cnk7XG5AQCAtNDAwNiwxNCArNDAxNSwxNCBAQCBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKVxuIFx0aWYgKCFpcl9kYXRhLVx1MDAzZWlvbW11KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbi1cdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgY3B1LCBnYV9sb2dfaW50cik7XG4rXHRfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGFwaWNpZCwgZmxhZ3MpO1xuIFxuIFx0cmV0dXJuIF9fbW9kaWZ5X2lydGVfZ2EoaXJfZGF0YS1cdTAwM2Vpb21tdSwgaXJfZGF0YS1cdTAwM2VpcnFfMl9pcnRlLmRldmlkLFxuIFx0XHRcdFx0aXJfZGF0YS1cdTAwM2VpcnFfMl9pcnRlLmluZGV4LCBlbnRyeSk7XG4gfVxuIEVYUE9SVF9TWU1CT0woYW1kX2lvbW11X3VwZGF0ZV9nYSk7XG4gXG4taW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpXG4raW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcbiB7XG4gXHRzdHJ1Y3QgYW1kX2lyX2RhdGEgKmlyX2RhdGEgPSAoc3RydWN0IGFtZF9pcl9kYXRhICopZGF0YTtcbiBcdHN0cnVjdCBpcnRlX2dhICplbnRyeSA9IChzdHJ1Y3QgaXJ0ZV9nYSAqKSBpcl9kYXRhLVx1MDAzZWVudHJ5O1xuQEAgLTQwMzQsOSArNDA0MywxMyBAQCBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbiBcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5ndWVzdF9tb2RlICA9IDE7XG4gXHRlbnRyeS1cdTAwM2VoaS5maWVsZHMuZ2Ffcm9vdF9wdHIgICAgICAgPSBpcl9kYXRhLVx1MDAzZWdhX3Jvb3RfcHRyO1xuIFx0ZW50cnktXHUwMDNlaGkuZmllbGRzLnZlY3RvciAgICAgICAgICAgID0gaXJfZGF0YS1cdTAwM2VnYV92ZWN0b3I7XG4tXHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfdGFnICAgICAgPSBpcl9kYXRhLVx1MDAzZWdhX3RhZztcbiBcbi1cdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgY3B1LCBnYV9sb2dfaW50cik7XG4rXHRpZiAoYW1kX2lvbW11X2dhcHBpKVxuK1x0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfdGFnID0gUE9TVEVEX0lOVFJfV0FLRVVQX1ZFQ1RPUjtcbitcdGVsc2VcbitcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX3RhZyA9IGlyX2RhdGEtXHUwMDNlZ2FfdGFnO1xuK1xuK1x0X19hbWRfaW9tbXVfdXBkYXRlX2dhKGVudHJ5LCBhcGljaWQsIGZsYWdzKTtcbiBcbiBcdHJldHVybiBtb2RpZnlfaXJ0ZV9nYShpcl9kYXRhLVx1MDAzZWlvbW11LCBpcl9kYXRhLVx1MDAzZWlycV8yX2lydGUuZGV2aWQsXG4gXHRcdFx0ICAgICAgaXJfZGF0YS1cdTAwM2VpcnFfMl9pcnRlLmluZGV4LCBlbnRyeSk7XG5AQCAtNDEwNyw4ICs0MTIwLDggQEAgc3RhdGljIGludCBhbWRfaXJfc2V0X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGlycV9kYXRhICpkYXRhLCB2b2lkICppbmZvKVxuIFx0XHRpcl9kYXRhLVx1MDAzZWdhX3ZlY3RvciA9IHBpX2RhdGEtXHUwMDNldmVjdG9yO1xuIFx0XHRpcl9kYXRhLVx1MDAzZWdhX3RhZyA9IHBpX2RhdGEtXHUwMDNlZ2FfdGFnO1xuIFx0XHRpZiAocGlfZGF0YS1cdTAwM2Vpc19ndWVzdF9tb2RlKVxuLVx0XHRcdHJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtXHUwMDNlY3B1LFxuLVx0XHRcdFx0XHRcdFx0ICAgIHBpX2RhdGEtXHUwMDNlZ2FfbG9nX2ludHIpO1xuK1x0XHRcdHJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtXHUwMDNlYXBpY2lkLFxuK1x0XHRcdFx0XHRcdFx0ICAgIHBpX2RhdGEtXHUwMDNlZmxhZ3MpO1xuIFx0XHRlbHNlXG4gXHRcdFx0cmV0ID0gYW1kX2lvbW11X2RlYWN0aXZhdGVfZ3Vlc3RfbW9kZShpcl9kYXRhKTtcbiBcdH0gZWxzZSB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9hbWQtaW9tbXUuaCBiL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmhcbmluZGV4IGVkY2VlOWY1MzM1YTZmLi44N2U3NmY2MTdlYTE4NSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmhcbisrKyBiL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmhcbkBAIC0zMCw4ICszMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbWRfaW9tbXVfZGV0ZWN0KHZvaWQpIHsgfVxuIC8qIElPTU1VIEFWSUMgRnVuY3Rpb24gKi9cbiBleHRlcm4gaW50IGFtZF9pb21tdV9yZWdpc3Rlcl9nYV9sb2dfbm90aWZpZXIoaW50ICgqbm90aWZpZXIpKHUzMikpO1xuIFxuLWV4dGVybiBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKTtcbi1leHRlcm4gaW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpO1xuK2V4dGVybiBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgYXBpY2lkLCBpbnQgZmxhZ3MpO1xuK2V4dGVybiBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKTtcbiBleHRlcm4gaW50IGFtZF9pb21tdV9kZWFjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSk7XG4gXG4gI2Vsc2UgLyogZGVmaW5lZChDT05GSUdfQU1EX0lPTU1VKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfSVJRX1JFTUFQKSAqL1xuQEAgLTQyLDEyICs0MiwxMiBAQCBhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKGludCAoKm5vdGlmaWVyKSh1MzIpKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbitzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcbiB7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbitzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgYXBpY2lkLCBpbnQgZmxhZ3MpXG4ge1xuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTc2LDQgKzc2LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IGFtZF9pb21tdV9zbnBfZGlzYWJsZSh2b2lkKSB7IHJldHVybiAwOyB9XG4gc3RhdGljIGlubGluZSBib29sIGFtZF9pb21tdV9zZXZfdGlvX3N1cHBvcnRlZCh2b2lkKSB7IHJldHVybiBmYWxzZTsgfVxuICNlbmRpZlxuIFxuKyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfVkNQVV9SVU5OSU5HX1NISUZUIDBcbisjZGVmaW5lIEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklORyAgQklUKDApXG4rXG4rI2RlZmluZSBBTURfSU9NTVVfRkxBR19QT1NURURfSU5UUl9TSElGVCAxXG4rI2RlZmluZSBBTURfSU9NTVVfRkxBR19QT1NURURfSU5UUiAgQklUKDEpXG4rXG4rZXh0ZXJuIGJvb2wgYW1kX2lvbW11X2dhcHBpO1xuICNlbmRpZiAvKiBfQVNNX1g4Nl9BTURfSU9NTVVfSCAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTk6MzcuODE1MzgwNTQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI0MjA3Nzk2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBFdmFsdWF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgbmVlZCB0byBhc3Nlc3MgaWYgaXQgaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIGZpbGVzIG1vZGlmaWVkIOKAkyBgYXJjaC94ODYva3ZtL3N2bS9hdmljLmNgLCBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AsIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oYCwgYWxvbmcgd2l0aCBzb21lIElPTU1VIGZpbGVzIChgZHJpdmVycy9pb21tdS9hbWQvKmAgYW5kIGBpbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oYCkg4oCTIGltbWVkaWF0ZWx5IGNsdWUgbWUgaW4uIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIEd1ZXN0IEFQSUMgUG9zdGVkIEludGVycnVwdHMgKEdBUFBJKSBzdXBwb3J0IHdpdGhpbiB0aGUgQU1EIElPTU1VIGFuZCBLVk0gU1ZNIEFWSUMuIFRoaXMgc2NyZWFtcyBcInZpcnR1YWxpemF0aW9uXCIgYW5kIFwiSU9NTVUsXCIgc28gaXQncyBhIGhpZ2gtcHJvYmFiaWxpdHkgdGFyZ2V0LlxuXG5UaGUgbmV4dCBxdWVzdGlvbjogSXMgdGhpcyByZWFjaGFibGUgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQ/IENhbiB3ZSB0cmlnZ2VyIHRoaXMgaW4gc29tZXRoaW5nIGxpa2UgR0NFIG9yIFFFTVU/IEFic29sdXRlbHkuIEtWTSBTVk0g4oCTIEFNRCdzIHZpcnR1YWxpemF0aW9uIOKAkyBjYW4gZGVmaW5pdGVseSBiZSB0ZXN0ZWQgd2l0aCBuZXN0ZWQgdmlydHVhbGl6YXRpb24sIGxpa2UgcnVubmluZyBRRU1VICp3aXRoKiBLVk0sIG9yIGV2ZW4gd2l0aGluIEdDRSBpbnN0YW5jZXMgdGhhdCBoYXZlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBlbmFibGVkLiBHb29kIG5ld3Mg4oCTIHN5emthbGxlciwgd2hpY2ggd2UncmUgdXNpbmcsIGRvZXMgcnVuIGluIFFFTVUvR0NFLCBhbmQgaXQncyBkZWZpbml0ZWx5IGNhcGFibGUgb2YgZnV6emluZyBLVk0uIFRoaXMgcGF0Y2ggY2xlYXJseSB0b3VjaGVzIEtWTSBTVk0gYW5kIHRoZSBBTUQgSU9NTVUsIHNvIHRoYXQncyB0d28gc2VwYXJhdGUgYXJlYXMgdGhhdCBuZWVkIGNoZWNraW5nLlxuXG5Ib2xkIG9uLCBgYW1kX2lvbW11X2dhcHBpYCDigJMgdGhhdCdzIGEgKm5ldyogZmVhdHVyZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgbmVlZGVkLiBMZXQncyBzZWUuLi4gSSdtIHRoaW5raW5nIGBLVk1fQU1EYCBhbmQgYEFNRF9JT01NVWAgYXJlIHRoZSBvYnZpb3VzIGNhbmRpZGF0ZXMuIFRpbWUgdG8gYnJlYWsgb3V0IGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciB0aG9zZSBjb25maWcgc3ltYm9scy4gTGV0J3MgZmluZCBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM5OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjU5OjQ0LjA1NzQ2MzAwM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzAwNTcwNDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1fQU1EXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTk6NTEuNzU4MDUzNjE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQwODc3NDk3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gY2hlY2tpbmcgdGhlIGBBTURfSU9NTVVgIGNvbmZpZ3VyYXRpb246XG5cbioqQW5hbHl6aW5nIEFNRF9JT01NVSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGdldCB0byBpdC4gRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgYEFNRF9JT01NVWAgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBjcnVjaWFsIGZvciBtYW5hZ2luZyBJL08gZGV2aWNlcywgcGFydGljdWxhcmx5IGluIGVudmlyb25tZW50cyB3aGVyZSB2aXJ0dWFsaXphdGlvbiBvciBhZHZhbmNlZCBoYXJkd2FyZSBmZWF0dXJlcyBhcmUgaW4gcGxheS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0J3Mgc2V0IHVwIHRvIGVuc3VyZSBwcm9wZXIgZGV2aWNlIGlzb2xhdGlvbiBhbmQgcGVyZm9ybWFuY2UuIEknbGwgbmVlZCB0byBsb29rIGF0IHNwZWNpZmljIHJlZ2lzdGVycyBvciBjb25maWd1cmF0aW9uIGZpbGVzLCBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBhbmQga2VybmVsIHZlcnNpb24sIGJ1dCB0aGUgb2JqZWN0aXZlIHJlbWFpbnMgdGhlIHNhbWU6IEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgY3VycmVudCBzdGF0ZSBhbmQgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBtaXNjb25maWd1cmF0aW9ucy4gRGVwZW5kaW5nIG9uIHdoYXQgSSBmaW5kLCBJIG1heSBuZWVkIHRvIGRpdmUgZGVlcGVyIGludG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzcGVjaWZpYyBBTUQgY2hpcHNldCBJJ20gZGVhbGluZyB3aXRoLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzcxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTk6NTQuMTY2ODMyOTk2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDc0MDM1MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFNRF9JT01NVVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTItIyBBTUQgSU9NTVUgc3VwcG9ydFxcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6Mzpjb25maWcgQU1EX0lPTU1VXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy00LVxcdGJvb2wgXFxcIkFNRCBJT01NVSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0zMi1cXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnOjMzOmNvbmZpZyBBTURfSU9NTVVfSU9NTVVGRFxcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWctMzQtXFx0Ym9vbCBcXFwiRW5hYmxlIElPTU1VRkQgZmVhdHVyZXMgZm9yIEFNRCBJT01NVSAoRVhQRVJJTUVOVEFMKVxcXCJcXG4tLVxcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWctNDItXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZzo0Mzpjb25maWcgQU1EX0lPTU1VX0RFQlVHRlNcXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQ0LVxcdGJvb2wgXFxcIkVuYWJsZSBBTUQgSU9NTVUgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjU5OjU4LjU3NDI0NzIzOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTQxNjExOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBTUQgSU9NTVUgR0FQUEkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYGFtZF9pb21tdV9nYXBwaWAgYWN0aXZhdGVkIGJ5IHRoZSBgYW1kX2lvbW11PWdhcHBpYCBib290IHBhcmFtZXRlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcImNhbiB0aGlzIGJlIGZ1enplZD9cIiBUaGUgYW5zd2VyIGlzICptYXliZSouIFN5emthbGxlciB3b24ndCBwaWNrIHRoaXMgdXAgb24gaXRzIG93biB1bmxlc3MgZXhwbGljaXRseSBpbnN0cnVjdGVkLCBtZWFuaW5nIGl0J3MgZGVwZW5kZW50IG9uIHRoZSBib290IHBhcmFtZXRlciBiZWluZyBwYXNzZWQuIEhvd2V2ZXIsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgIGFuZCBgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVgIHdoaWNoIGFyZSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIHJlZ2FyZGxlc3MsIHNvIHRoZXJlIGlzIGNlcnRhaW5seSBhIHdheSBpbi5cblxuQnV0IHRoZW4sIGhvbGQgb24gYSBzZWNvbmQuIEl0IGFsc28gYWRkcyBgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcmAgYW5kIGEgY2FsbCB0byBga3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcmAgd2l0aCBpdC4gVGhhdCdzIGludGVyZXN0aW5nISBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBga3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcmAgaXMgZXZlbiBhIHRoaW5nLi4uIGxldCdzIGNoZWNrIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTgwNywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDowMi44Mjg0MTI4MDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwNzk1MDYyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2luY2x1ZGUvYXNtL2lycS5oPTMwPWV4dGVybiB2b2lkIGZpeHVwX2lycXModm9pZCk7XFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnEuaC0zMi0jaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2lycS5oOjMzOmV4dGVybiB2b2lkIGt2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXIodm9pZCAoKmhhbmRsZXIpKHZvaWQpKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnEuaC0zNC0jZW5kaWZcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9pcnEuYz0zNzM9c3RhdGljIHZvaWQgKCprdm1fcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXIpKHZvaWQpID0gZHVtbXlfaGFuZGxlcjtcXG5hcmNoL3g4Ni9rZXJuZWwvaXJxLmMtMzc0LVxcbmFyY2gveDg2L2tlcm5lbC9pcnEuYzozNzU6dm9pZCBrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyKHZvaWQgKCpoYW5kbGVyKSh2b2lkKSlcXG5hcmNoL3g4Ni9rZXJuZWwvaXJxLmMtMzc2LXtcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9pcnEuYy0zODMtfVxcbmFyY2gveDg2L2tlcm5lbC9pcnEuYzozODQ6RVhQT1JUX1NZTUJPTF9GT1JfS1ZNKGt2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXIpO1xcbmFyY2gveDg2L2tlcm5lbC9pcnEuYy0zODUtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYz0xNDAyPWJvb2wgX19pbml0IGF2aWNfaGFyZHdhcmVfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTE0MzgtXFx0YW1kX2lvbW11X3JlZ2lzdGVyX2dhX2xvZ19ub3RpZmllcihcXHUwMDI2YXZpY19nYV9sb2dfbm90aWZpZXIpO1xcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjE0Mzk6XFx0a3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcihcXHUwMDI2YXZpY19nYXBwaV93YWtldXBfaGFuZGxlcik7XFxuYXJjaC94ODYva3ZtL3N2bS9hdmljLmMtMTQ0MC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODQ3Nj12b2lkIHZteF9oYXJkd2FyZV91bnNldHVwKHZvaWQpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDc3LXtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg0Nzg6XFx0a3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcihOVUxMKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg0NzktXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg1OTg9X19pbml0IGludCB2bXhfaGFyZHdhcmVfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODc4Mi1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg3ODM6XFx0a3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcihwaV93YWtldXBfaGFuZGxlcik7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04Nzg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDowNy4yMzYzNzQ5MTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODc1MDYwMjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgR0FQUEkgU3VwcG9ydCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgR0FQUEkgc3VwcG9ydC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBjaGFuZ2VzIGFuZCBzZWUgaG93IHRoZXkgYXJlIGltcGxlbWVudGVkLiBJdCBsb29rcyBsaWtlIGl0J3MgdG91Y2hpbmcgc2V2ZXJhbCBrZXkgZnVuY3Rpb25zOiBgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eWAsIGBhdmljX3BpX3VwZGF0ZV9pcnRlYCwgYGFtZF9pb21tdV91cGRhdGVfZ2FgLCBhbmQgYGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlYC4gVGhlc2UgYXJlIGFsbCBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbnMsIHNvIGl0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBkZXRhaWxlZCByZXZpZXcuXG5cbk5vdywgYSBrZXkgcXVlc3Rpb24gaXMgcmVhY2hhYmlsaXR5IOKAkyBjYW4gdGhpcyBuZXcgY29kZSBhY3R1YWxseSBiZSB0cmlnZ2VyZWQgaW4gYSByZWFsLXdvcmxkIHNjZW5hcmlvPyBDb25zaWRlcmluZyB0aGlzIGlzIEtWTS9TVk0vQVZJQyByZWxhdGVkLCBpdCBzaG91bGQgYmUgcmVhY2hhYmxlIHdoZW4gcnVubmluZyBuZXN0ZWQgS1ZNIG9uIEFNRCBoYXJkd2FyZSwgd2hpY2ggaW5jcmVhc2VzIG15IGNvbmZpZGVuY2UuIEFuZCwgYmVjYXVzZSBzeXprYWxsZXIgZnV6emVzIEtWTSwgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgcG90ZW50aWFsIHRhcmdldCBmb3IgZnV6emluZywgYW5kIHNvIEkgc2hvdWxkIGV4dHJhY3QgYSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuXG5cbkkndmUgaWRlbnRpZmllZCB0aGVzZSBzeW1ib2xzIGZvciBjbG9zZXIgZXhhbWluYXRpb246IGBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5YCwgYGF2aWNfcGlfdXBkYXRlX2lydGVgLCBgYW1kX2lvbW11X3VwZGF0ZV9nYWAsIGBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZWAsIGBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0YCwgYGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdGAsIGFuZCBgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcmAuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgc2NvcGUgb2YgdGhlc2UgZnVuY3Rpb25zLCB0aGlzIGlzIGltcG9ydGFudC4gSXQgbG9va3MgbGlrZSBgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eWAsIGBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0YCwgYGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdGAgYW5kIGBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyYCBhcmUgc3RhdGljLiBgYXZpY19waV91cGRhdGVfaXJ0ZWAgaXMgbm90IHN0YXRpYy4gYGFtZF9pb21tdV91cGRhdGVfZ2FgIGFuZCBgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVgIGFyZSBleHBvcnRlZCwgd2hpY2ggY291bGQgaGF2ZSBpbXBsaWNhdGlvbnMgZm9yIGhvdyB0aGV5IGFyZSB1c2VkIGFuZCBwb3RlbnRpYWxseSBleHBsb2l0ZWQuIEtub3dpbmcgd2hpY2ggZnVuY3Rpb25zIGFyZSBzdGF0aWMgaGVscHMgZGV0ZXJtaW5lIGhvdyBlYXNpbHkgdGhleSBjYW4gYmUgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC5cblxuVGhlcmVmb3JlLCBmb3IgZnVydGhlciBhbmFseXNpcywgbXkgZm9jdXMgbGlzdCB3aWxsIGJlOiBgYXZpY19waV91cGRhdGVfaXJ0ZWAsIGBhbWRfaW9tbXVfdXBkYXRlX2dhYCwgYGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlYCwgYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgLCBgYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdGAsIGBhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3RgIGFuZCBgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcmAuXG5cbkZpbmFsbHksIGNvbmZpZ3VyYXRpb24gaXMgaW1wb3J0YW50LiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBLVk1fQU1EYCwgYEFNRF9JT01NVWAsIGFuZCBgSVJRX1JFTUFQYCBhcmUgZW5hYmxlZCBvciwgaWYgbm90LCBpZiB0aGV5IG5lZWQgdG8gYmUuIGBJUlFfUkVNQVBgIGlzIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQsIGJ1dCBpdCdzIHdvcnRoIGRvdWJsZS1jaGVja2luZyB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5IGZvciB0aGlzIEdBUFBJIHN1cHBvcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDA0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIzOjAwOjE2LjExMTQzOTMxMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQxNjgyNjI0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVJRX1JFTUFQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvS2NvbmZpZz0xOTk9c291cmNlIFxcXCJkcml2ZXJzL2lvbW11L3Jpc2N2L0tjb25maWdcXFwiXFxuZHJpdmVycy9pb21tdS9LY29uZmlnLTIwMC1cXG5kcml2ZXJzL2lvbW11L0tjb25maWc6MjAxOmNvbmZpZyBJUlFfUkVNQVBcXG5kcml2ZXJzL2lvbW11L0tjb25maWctMjAyLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIEludGVycnVwdCBSZW1hcHBpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIzOjAwOjE5LjUyODI3OTgwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM4NDc3NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQU1EX0lPTU1VIGFuZCBJUlFfUkVNQVAgRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gdHJ5aW5nIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBBTURfSU9NTVVgIGFuZCBgSVJRX1JFTUFQYC4gSXMgYEFNRF9JT01NVWAgYSBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlIGZvciBgSVJRX1JFTUFQYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkgd2l0aCBBTUQgaGFyZHdhcmUsIG9yIGlzIGl0IHRoZSBvdGhlciB3YXkgYXJvdW5kPyBPciwgcGVyaGFwcywgZG8gdGhleSBzaW1wbHkgY28tZXhpc3QgaW4gYSB3YXkgd2hlcmUgZW5hYmxpbmcgb25lIG5lY2Vzc2l0YXRlcyBlbmFibGluZyB0aGUgb3RoZXIgaW4gY2VydGFpbiBjb25maWd1cmF0aW9ucz8gVGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50IHRoYXQgbmVlZHMgdG8gYmUgY2xhcmlmaWVkLCBiZWNhdXNlIG1pc3VuZGVyc3RhbmRpbmcgdGhpcyByZWxhdGlvbnNoaXAgY2FuIGxlYWQgdG8gc2lnbmlmaWNhbnQgaGVhZGFjaGVzIGluIHN5c3RlbSBjb25maWd1cmF0aW9uLCBlc3BlY2lhbGx5IHJlZ2FyZGluZyBETUEgcmVtYXBwaW5nIGFuZCB2aXJ0dWFsaXphdGlvbiBzZXR1cHMuIEkgbmVlZCB0byBuYWlsIGRvd24gaWYgdGhlIGtlcm5lbCBidWlsZCBjb25maWd1cmF0aW9uIG9yIHJ1bnRpbWUgaW50ZXJhY3Rpb24gaGluZ2VzIG9uIHRoaXMuIFVuZGVyc3RhbmRpbmcgdGhlIGxpbmthZ2UgYmV0d2VlbiB0aGVzZSBmZWF0dXJlcyB3aWxsIGRpY3RhdGUgaG93IEkgYXBwcm9hY2ggY29uZmlndXJpbmcgdGhlIElPTU1VIGZvciBvcHRpbWFsIHBlcmZvcm1hbmNlIGFuZCBjb21wYXRpYmlsaXR5LiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlLCByZWxldmFudCBkb2N1bWVudGF0aW9uLCBhbmQgZXhpc3RpbmcgZm9ydW0gZGlzY3Vzc2lvbnMgb3IgYnVnIHJlcG9ydHMgdG8gZ2V0IGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGlzIHJlbGF0aW9uc2hpcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyNDksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDoyMi43NjY3ODE2MjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NDg2MDAxNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qSVJRX1JFTUFQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L0tjb25maWc9NDYwPWNvbmZpZyBYODZfWDJBUElDXFxuYXJjaC94ODYvS2NvbmZpZy00NjEtXFx0Ym9vbCBcXFwieDJBUElDIGludGVycnVwdCBjb250cm9sbGVyIGFyY2hpdGVjdHVyZSBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NDYyOlxcdGRlcGVuZHMgb24gWDg2X0xPQ0FMX0FQSUMgXFx1MDAyNlxcdTAwMjYgWDg2XzY0IFxcdTAwMjZcXHUwMDI2IChJUlFfUkVNQVAgfHwgSFlQRVJWSVNPUl9HVUVTVClcXG5hcmNoL3g4Ni9LY29uZmlnLTQ2My1cXHRkZWZhdWx0IHlcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NDk3PWNvbmZpZyBYODZfUE9TVEVEX01TSVxcbmFyY2gveDg2L0tjb25maWctNDk4LVxcdGJvb2wgXFxcIkVuYWJsZSBNU0kgYW5kIE1TSS14IGRlbGl2ZXJ5IGJ5IHBvc3RlZCBpbnRlcnJ1cHRzXFxcIlxcbmFyY2gveDg2L0tjb25maWc6NDk5OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IElSUV9SRU1BUFxcbmFyY2gveDg2L0tjb25maWctNTAwLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjM6MDA6MjguMjE1NDQ1NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU4MTExOTc1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgQ2hlY2sqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgQU1EIElPTU1VIGRyaXZlciBjb25maWd1cmF0aW9uIGlzIHNldCB1cC4gVGhlIGZpcnN0IHBsYWNlIEknbSBnb2luZyB0byBsb29rIGlzIHRoZSBgZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgZHJpdmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgdmFyaW91cyBjb21waWxlLXRpbWUgcGFyYW1ldGVycywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBBTUQgSU9NTVUgaW1wbGVtZW50YXRpb24uIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGJhc2VsaW5lIHVuZGVyc3RhbmRpbmcgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSdtIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2Ugd2hldGhlciB0aGUgZHJpdmVyIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hhdCBmZWF0dXJlcyBjYW4gYmUgdG9nZ2xlZCwgd2hhdCBoYXJkd2FyZSByZXZpc2lvbnMgYXJlIHN1cHBvcnRlZCwgYW5kIGFueSBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cy4gVGltZSB0byBzZWUgd2hhdCdzIGluIHRoZXJlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc1NSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIzOjAwOjMwLjc5NjU5NjM2MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI4MTU2NTk2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQU1EX0lPTU1VXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWctMi0jIEFNRCBJT01NVSBzdXBwb3J0XFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZzozOmNvbmZpZyBBTURfSU9NTVVcXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQtXFx0Ym9vbCBcXFwiQU1EIElPTU1VIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTMyLVxcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6MzM6Y29uZmlnIEFNRF9JT01NVV9JT01NVUZEXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0zNC1cXHRib29sIFxcXCJFbmFibGUgSU9NTVVGRCBmZWF0dXJlcyBmb3IgQU1EIElPTU1VIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnOjQzOmNvbmZpZyBBTURfSU9NTVVfREVCVUdGU1xcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWctNDQtXFx0Ym9vbCBcXFwiRW5hYmxlIEFNRCBJT01NVSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjM6MDA6MzQuMDc4MTczMzk3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTk3Nzg4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgQU1EIElPTU1VIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGUgQU1EIElPTU1VIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0aGF0IGBjb25maWcgQU1EX0lPTU1VYCBibG9jay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIGhvdyB0aGV5J3JlIHN0cnVjdHVyZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IGhhdmUuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgb2J2aW91c2x5LCBidXQgSSdtIGxvb2tpbmcgZm9yIGFueXRoaW5nIHVudXN1YWwgb3Igc3VidGxlLCB0aGF0IGlzIG5vdCBpbW1lZGlhdGVseSBhcHBhcmVudC4gSSBuZWVkIHRvIGdldCB0aGUgb3ZlcmFsbCBjb250ZXh0LCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhlIEFNRCBJT01NVS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFuZCBhc3NvY2lhdGVkIGhlbHAgdGV4dCByZXZlYWwuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIElPTU1VIGNvbmZpZ3VyYXRpb25zIGFuZCB0aGUgYnJvYWRlciBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTg3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjM6MDA6MzYuOTk3OTU4Nzc2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjIEFNRCBJT01NVSBzdXBwb3J0XFxuICAgMzpcXHRjb25maWcgQU1EX0lPTU1VXFxuICAgNDpcXHRcXHRib29sIFxcXCJBTUQgSU9NTVUgc3VwcG9ydFxcXCJcXG4gICA1OlxcdFxcdHNlbGVjdCBTV0lPVExCXFxuICAgNjpcXHRcXHRzZWxlY3QgUENJX01TSVxcbiAgIDc6XFx0XFx0c2VsZWN0IFBDSV9BVFNcXG4gICA4OlxcdFxcdHNlbGVjdCBQQ0lfUFJJXFxuICAgOTpcXHRcXHRzZWxlY3QgUENJX1BBU0lEXFxuICAxMDpcXHRcXHRzZWxlY3QgSVJRX01TSV9MSUJcXG4gIDExOlxcdFxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG4gIDEyOlxcdFxcdHNlbGVjdCBJT01NVV9BUElcXG4gIDEzOlxcdFxcdHNlbGVjdCBJT01NVV9JT1ZBXFxuICAxNDpcXHRcXHRzZWxlY3QgSU9NTVVfU1ZBXFxuICAxNTpcXHRcXHRzZWxlY3QgSU9NTVVfSU9QRlxcbiAgMTY6XFx0XFx0c2VsZWN0IElPTU1VRkRfRFJJVkVSIGlmIElPTU1VRkRcXG4gIDE3OlxcdFxcdHNlbGVjdCBHRU5FUklDX1BUXFxuICAxODpcXHRcXHRzZWxlY3QgSU9NTVVfUFRcXG4gIDE5OlxcdFxcdHNlbGVjdCBJT01NVV9QVF9BTURWMVxcbiAgMjA6XFx0XFx0c2VsZWN0IElPTU1VX1BUX1g4Nl82NFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDozNi45OTgxMzUwMDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwNzI1MTA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEFNRCBJT01NVSBhbmQgS1ZNIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBBTURfSU9NTVVgIGFuZCBgS1ZNX0FNRGAuIFRoZSBuYW1lcyBhcmUgcHJldHR5IHNlbGYtZXhwbGFuYXRvcnksIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciByZWxhdGlvbnNoaXAuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3Mgc2VlIGlmIGBLVk1fQU1EYCBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSB3YW50IHRvIGtub3cgaWYgYEtWTV9BTURgIHJlbGllcyBvbiBhbnl0aGluZyBzcGVjaWZpYyB0byBmdW5jdGlvbiwgYW5kIGlmIHNvLCB3aGF0IHRob3NlIHByZXJlcXVpc2l0ZXMgYXJlLiBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMga2V5IHRvIGVuc3VyaW5nIHByb3BlciBzeXN0ZW0gY29uZmlndXJhdGlvbiBhbmQgYXZvaWRpbmcgYW55IHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS4gSXQncyBhbGwgYWJvdXQgbWFraW5nIHN1cmUgSSdtIHNldHRpbmcgdGhpbmdzIHVwIGNvcnJlY3RseSBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3MTAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIzOjAwOjM5LjkwNTM4OTk3N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ2LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQ2OlxcdGNvbmZpZyBLVk1fQU1EXFxuIDE0NzpcXHRcXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbiAxNDg6XFx0XFx0ZGVwZW5kcyBvbiBLVk0gXFx1MDAyNlxcdTAwMjYgKENQVV9TVVBfQU1EIHx8IENQVV9TVVBfSFlHT04pXFxuIDE0OTpcXHRcXHRoZWxwXFxuIDE1MDpcXHRcXHQgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIEtWTSBvbiBBTUQgcHJvY2Vzc29ycyBlcXVpcHBlZCB3aXRoIHRoZSBBTUQtVlxcbiAxNTE6XFx0XFx0ICAoU1ZNKSBleHRlbnNpb25zLlxcbiAxNTI6XFx0XFxuIDE1MzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAxNTQ6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBrdm0tYW1kLlxcbiAxNTU6XFx0XFxuIDE1NjpcXHRjb25maWcgS1ZNX0FNRF9TRVZcXG4gMTU3OlxcdFxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuIDE1ODpcXHRcXHRkZWZhdWx0IHlcXG4gMTU5OlxcdFxcdGRlcGVuZHMgb24gS1ZNX0FNRCBcXHUwMDI2XFx1MDAyNiBYODZfNjRcXG4gMTYwOlxcdFxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9TUF9QU1AgXFx1MDAyNlxcdTAwMjYgIShLVk1fQU1EPXkgXFx1MDAyNlxcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcXG4gMTYxOlxcdFxcdHNlbGVjdCBBUkNIX0hBU19DQ19QTEFURk9STVxcbiAxNjI6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxuIDE2MzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fQVJDSF9HTUVNX1BSRVBBUkVcXG4gMTY0OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9BUkNIX0dNRU1fSU5WQUxJREFURVxcbiAxNjU6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0FSQ0hfR01FTV9QT1BVTEFURVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDozOS45MDU1NDQ0NDdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI0Mzc0NjQwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipHQVBQSSBTdXBwb3J0IGZvciBBTUQgSU9NTVUgYW5kIEtWTSBTVk0gQVZJQyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBpbnRlZ3JhdGVzIEdBUFBJIHN1cHBvcnQgaW50byB0aGUgQU1EIElPTU1VIGFuZCBLVk0gU1ZNIEFWSUMgc2V0dXAuIFRoZSBrZXkgY29uZmlncyBoZXJlIGFyZSBgS1ZNX0FNRGAgYW5kIGBBTURfSU9NTVVgIOKAkyB0aGF0J3MgdGhlIGZvdW5kYXRpb24gd2UncmUgd29ya2luZyB3aXRoLlxuXG5JJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoZSBjb2RlIGFuZCBmb2N1c2luZyBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLiBNeSBhdHRlbnRpb24gaXMgZHJhd24gdG86IGBhdmljX3BpX3VwZGF0ZV9pcnRlYCwgYGFtZF9pb21tdV91cGRhdGVfZ2FgLCBgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVgLCBgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eWAsIGBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0YCwgYGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdGAsIGBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyYCwgYW5kIGBfX2FtZF9pb21tdV91cGRhdGVfZ2FgLiBXZSdyZSB0YWxraW5nIGNvcmUgaW50ZXJydXB0IGhhbmRsaW5nLCB2Q1BVIGFmZmluaXR5IG1hbmFnZW1lbnQsIGFuZCB0aGUgY3J1Y2lhbCBsb2dpYyBmb3IgYWN0aXZhdGluZyBndWVzdCBtb2RlIHdpdGhpbiB0aGUgSU9NTVUuIFRoZXJlIGFyZSBhIGZldyBtb2RpZmllZCBmdW5jdGlvbnMgSSBzaG91bGQgYWxzbyB0YWtlIGludG8gYWNjb3VudDogYGF2aWNfZGVzdHJveV92Y3B1YCwgYGF2aWNfaW5pdF92Y3B1YCwgYHN2bV9pcl9saXN0X2RlbGAsIGBfX2F2aWNfdmNwdV9sb2FkYCwgYF9fYXZpY192Y3B1X3B1dGAsIGBhdmljX2hhcmR3YXJlX3NldHVwYCwgYGVuYWJsZV9pb21tdXNfdmFwaWNgLCBhbmQgYHBhcnNlX2FtZF9pb21tdV9vcHRpb25zYC5cblxuVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGNoYW5nZSwgaW1wYWN0aW5nIGhvdyBpbnRlcnJ1cHRzIGFyZSBtYW5hZ2VkIHdpdGhpbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIGRpcmVjdGx5IHRvdWNoZXMgdGhlIElPTU1VLiBUaGUgaW50cm9kdWN0aW9uIG9mIEdBUFBJIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBuZXcgd2FrZXVwIGxpc3RzIGFuZCBhbHRlcmVkIGludGVycnVwdCBoYW5kbGluZyBsb2dpYyB0aGF0IHJlcXVpcmVzIHJpZ29yb3VzIHRlc3RpbmcuIENvbmN1cnJlbmN5IGJ1Z3Mgb3IgbWVtb3J5IGNvcnJ1cHRpb24gdnVsbmVyYWJpbGl0aWVzIGFyZSBhIGNvbmNlcm4gaGVyZS4gSSB0aGluayB3ZSBuZWVkIHRvIGZ1enogdGhpcyFcblxuTXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgd2FycmFudHMgZnV6emluZywgYW5kIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZSB0aGUgb25lcyBJIGxpc3RlZCBlYXJsaWVyLiBUaGUgY29uZmlncyB0aGF0IGFyZSBlbmFibGVkIGFyZSBgS1ZNX0FNRGAgYW5kIGBBTURfSU9NTVVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjI5MCwiT3V0cHV0VG9rZW5zIjoyMzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDo0OS4xNDkyOTc3OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDE2ODQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiLFxuICAgIFwiQU1EX0lPTU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXZpY19waV91cGRhdGVfaXJ0ZVwiLFxuICAgIFwiYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eVwiLFxuICAgIFwiYW1kX2lvbW11X3VwZGF0ZV9nYVwiLFxuICAgIFwiYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVcIixcbiAgICBcImF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3RcIixcbiAgICBcImF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdFwiLFxuICAgIFwiYXZpY19nYXBwaV93YWtldXBfaGFuZGxlclwiLFxuICAgIFwiX19hbWRfaW9tbXVfdXBkYXRlX2dhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIGludHJvZHVjZXMgR0FQUEkgKEd1ZXN0IEFQSUMgUG9zdGVkIEludGVycnVwdHMpIHN1cHBvcnQgZm9yIEFNRCBJT01NVSBhbmQgS1ZNIFNWTSBBVklDLiBJdCBtb2RpZmllcyBjb3JlIGludGVycnVwdCByZW1hcHBpbmcgYW5kIHZDUFUgYWZmaW5pdHkgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIG5lc3RlZCBLVk0gb24gQU1EKS4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBuZXcgd2FrZXVwIGxpc3RzIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgZG8gbm90IGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIG9yIG1lbW9yeSBjb3JydXB0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9BTURcIixcbiAgICBcIkFNRF9JT01NVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF2aWNfcGlfdXBkYXRlX2lydGVcIixcbiAgICBcImF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlcIixcbiAgICBcImFtZF9pb21tdV91cGRhdGVfZ2FcIixcbiAgICBcImFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlXCIsXG4gICAgXCJhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0XCIsXG4gICAgXCJhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3RcIixcbiAgICBcImF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXJcIixcbiAgICBcIl9fYW1kX2lvbW11X3VwZGF0ZV9nYVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIEdBUFBJIChHdWVzdCBBUElDIFBvc3RlZCBJbnRlcnJ1cHRzKSBzdXBwb3J0IGZvciBBTUQgSU9NTVUgYW5kIEtWTSBTVk0gQVZJQy4gSXQgbW9kaWZpZXMgY29yZSBpbnRlcnJ1cHQgcmVtYXBwaW5nIGFuZCB2Q1BVIGFmZmluaXR5IGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCBuZXN0ZWQgS1ZNIG9uIEFNRCkuIEZ1enppbmcgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGUgbmV3IHdha2V1cCBsaXN0cyBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIGxvZ2ljIGRvIG5vdCBpbnRyb2R1Y2UgY29uY3VycmVuY3kgYnVncyBvciBtZW1vcnkgY29ycnVwdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowjfl7q[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 22:46:57 +0000 UTC FinishedAt: 2026-06-26 23:00:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD", "AMD_IOMMU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD", "AMD_IOMMU" ], "series_id": "092e598f-3a43-4fcb-8e4c-41e284c494d2" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "avic_pi_update_irte", "avic_update_iommu_vcpu_affinity", "amd_iommu_update_ga", "amd_iommu_activate_guest_mode", "avic_add_vcpu_to_gappi_wakeup_list", "avic_remove_vcpu_from_gappi_wakeup_list", "avic_gappi_wakeup_handler", "__amd_iommu_update_ga" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OywKICAgICYjMzQ7QU1EX0lPTU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXZpY19waV91cGRhdGVfaXJ0ZSYjMzQ7LAogICAgJiMzNDthdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5JiMzNDssCiAgICAmIzM0O2FtZF9pb21tdV91cGRhdGVfZ2EmIzM0OywKICAgICYjMzQ7YW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUmIzM0OywKICAgICYjMzQ7YXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdCYjMzQ7LAogICAgJiMzNDthdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3QmIzM0OywKICAgICYjMzQ7YXZpY19nYXBwaV93YWtldXBfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtfX2FtZF9pb21tdV91cGRhdGVfZ2EmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIGludHJvZHVjZXMgR0FQUEkgKEd1ZXN0IEFQSUMgUG9zdGVkIEludGVycnVwdHMpIHN1cHBvcnQgZm9yIEFNRCBJT01NVSBhbmQgS1ZNIFNWTSBBVklDLiBJdCBtb2RpZmllcyBjb3JlIGludGVycnVwdCByZW1hcHBpbmcgYW5kIHZDUFUgYWZmaW5pdHkgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIG5lc3RlZCBLVk0gb24gQU1EKS4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBuZXcgd2FrZXVwIGxpc3RzIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgZG8gbm90IGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIG9yIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzA3Njg5OTZlYWFjOTY2NGMxOTE0YTQ4NWE1ZTIyODU5YTk2ZWI1YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDIyOjU5OjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaFxuaW5kZXggMzdiOTRmNDg0ZWYzMzguLjQwYTIyMDZhMzNjMDhkIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vaXJxX3JlbWFwcGluZy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmhcbkBAIC0zNSw4ICYjNDM7MzUsOCBAQCBzdHJ1Y3QgYW1kX2lvbW11X3BpX2RhdGEge1xuIFx0dTY0IHZhcGljX2FkZHI7XHRcdC8qIFBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIHZDUFUmIzM5O3MgdkFQSUMuICovXG4gXHR1MzIgZ2FfdGFnO1xuIFx0dTMyIHZlY3RvcjtcdFx0LyogR3Vlc3QgdmVjdG9yIG9mIHRoZSBpbnRlcnJ1cHQgKi9cbi1cdGludCBjcHU7XG4tXHRib29sIGdhX2xvZ19pbnRyO1xuJiM0MztcdGludCBhcGljaWQ7XG4mIzQzO1x0aW50IGZsYWdzO1xuIFx0Ym9vbCBpc19ndWVzdF9tb2RlO1xuIFx0dm9pZCAqaXJfZGF0YTtcbiB9O1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jIGIvYXJjaC94ODYva3ZtL3N2bS9hdmljLmNcbmluZGV4IGNkZDVhNmRjNjQ2ZjExLi5kMjM4ZjY1YTgxNzJiYyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuY1xuQEAgLTYzLDYgJiM0Mzs2Myw5IEBAXG4gXHRnYV90YWc7XHRcdFx0XHRcdFx0XHRcdFxcXG4gfSlcbiBcbiYjNDM7c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBsaXN0X2hlYWQsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpO1xuJiM0MztzdGF0aWMgREVGSU5FX1BFUl9DUFUocmF3X3NwaW5sb2NrX3QsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jayk7XG4mIzQzO1xuIHN0YXRpY19hc3NlcnQoX19BVklDX0dBVEFHKEFWSUNfVk1fSURfTUFTSywgQVZJQ19WQ1BVX0lEWF9NQVNLKSA9PSAtMXUpO1xuIFxuICNkZWZpbmUgQVZJQ19BVVRPX01PREUgLTFcbkBAIC04NzQsNiAmIzQzOzg3Nyw5IEBAIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KTtcbiBcdHJhd19zcGluX2xvY2tfaW5pdChcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdF9sb2NrKTtcbiBcbiYjNDM7XHRJTklUX0xJU1RfSEVBRChcdTAwMjZzdm0tXHUwMDNlZ2FwcGlfdmNwdV93YWtldXBfbGlzdCk7XG4mIzQzO1x0c3ZtLVx1MDAzZWdhcHBpX2NwdSA9IC0xO1xuJiM0MztcbiBcdGlmICghZW5hYmxlX2FwaWN2IHx8ICFpcnFjaGlwX2luX2tlcm5lbCh2Y3B1LVx1MDAzZWt2bSkpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTg4Niw2ICYjNDM7ODkyLDQ0IEBAIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtLCBpbnQgY3B1KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGxpc3RfaGVhZCAqd2FrZXVwX2xpc3Q7XG4mIzQzO1x0cmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrO1xuJiM0MztcbiYjNDM7XHRpZiAoV0FSTl9PTihjcHUgXHUwMDNjIDApKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHR3YWtldXBfbGlzdCA9IFx1MDAyNnBlcl9jcHUoZ2FwcGlfdmNwdV93YWtldXBfbGlzdCwgY3B1KTtcbiYjNDM7XHRzcGlubG9jayA9IFx1MDAyNnBlcl9jcHUoZ2FwcGlfdmNwdV93YWtldXBfbGlzdF9sb2NrLCBjcHUpO1xuJiM0MztcdHJhd19zcGluX2xvY2soc3BpbmxvY2spO1xuJiM0MztcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KSlcbiYjNDM7XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2c3ZtLVx1MDAzZWdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIHdha2V1cF9saXN0KTtcbiYjNDM7XHRyYXdfc3Bpbl91bmxvY2soc3BpbmxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3RydWN0IHZjcHVfc3ZtICpzdm0sIGludCBjcHUpXG4mIzQzO3tcbiYjNDM7XHRyYXdfc3BpbmxvY2tfdCAqc3BpbmxvY2s7XG4mIzQzO1xuJiM0MztcdGlmIChXQVJOX09OKGNwdSBcdTAwM2MgMCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdHNwaW5sb2NrID0gXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7XG4mIzQzO1x0cmF3X3NwaW5fbG9jayhzcGlubG9jayk7XG4mIzQzO1x0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KSlcbiYjNDM7XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2c3ZtLVx1MDAzZWdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpO1xuJiM0MztcdHJhd19zcGluX3VubG9jayhzcGlubG9jayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgYXZpY19kZXN0cm95X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4mIzQzO3tcbiYjNDM7XHRpZiAoc3ZtLVx1MDAzZWdhcHBpX2NwdSAhPSAtMSBcdTAwMjZcdTAwMjYgYW1kX2lvbW11X2dhcHBpKSB7XG4mIzQzO1x0XHRhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbiYjNDM7XHRcdHN2bS1cdTAwM2VnYXBwaV9jcHUgPSAtMTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBhdmljX2FwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0YXZpY19oYW5kbGVfZGZyX3VwZGF0ZSh2Y3B1KTtcbkBAIC04OTYsMTMgJiM0Mzs5NDAsMTggQEAgc3RhdGljIHZvaWQgc3ZtX2lyX2xpc3RfZGVsKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZClcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUgPSBpcnFmZC1cdTAwM2VpcnFfYnlwYXNzX3ZjcHU7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuJiM0MztcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtO1xuIFxuIFx0aWYgKCF2Y3B1KVxuIFx0XHRyZXR1cm47XG4gXG4tXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dG9fc3ZtKHZjcHUpLVx1MDAzZWlyX2xpc3RfbG9jaywgZmxhZ3MpO1xuJiM0MztcdHN2bSA9IHRvX3N2bSh2Y3B1KTtcbiYjNDM7XG4mIzQzO1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcbiBcdGxpc3RfZGVsKFx1MDAyNmlycWZkLVx1MDAzZXZjcHVfbGlzdCk7XG4tXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZ0b19zdm0odmNwdSktXHUwMDNlaXJfbGlzdF9sb2NrLCBmbGFncyk7XG4mIzQzO1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3QpKVxuJiM0MztcdFx0YXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4mIzQzO1x0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3RfbG9jaywgZmxhZ3MpO1xuIH1cbiBcbiBpbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbkBAIC05MzIsNiAmIzQzOzk4MSw4IEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuIFx0XHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bSA9IHRvX3N2bSh2Y3B1KTtcbiBcdFx0dTY0IGVudHJ5O1xuIFx0XHRpbnQgcmV0O1xuJiM0MztcdFx0aW50IHBvc3RlZF9pbnRyO1xuJiM0MztcdFx0Ym9vbCBpc192Y3B1X3dhaXRpbmcgPSBmYWxzZTtcbiBcbiBcdFx0LypcbiBcdFx0ICogUHJldmVudCB0aGUgdkNQVSBmcm9tIGJlaW5nIHNjaGVkdWxlZCBvdXQgb3IgbWlncmF0ZWQgdW50aWxcbkBAIC05NDksMTUgJiM0MzsxMDAwLDIzIEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuIFx0XHQgKi9cbiBcdFx0ZW50cnkgPSBzdm0tXHUwMDNlYXZpY19waHlzaWNhbF9pZF9lbnRyeTtcbiBcdFx0aWYgKGVudHJ5IFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0lTX1JVTk5JTkdfTUFTSykge1xuLVx0XHRcdHBpX2RhdGEuY3B1ID0gZW50cnkgXHUwMDI2IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfSE9TVF9QSFlTSUNBTF9JRF9NQVNLO1xuJiM0MztcdFx0XHRwaV9kYXRhLmFwaWNpZCA9IGVudHJ5IFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0hPU1RfUEhZU0lDQUxfSURfTUFTSztcbiYjNDM7XHRcdFx0cGlfZGF0YS5mbGFncyA9IEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklORztcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRwaV9kYXRhLmNwdSA9IC0xO1xuLVx0XHRcdHBpX2RhdGEuZ2FfbG9nX2ludHIgPSBlbnRyeSBcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUjtcbiYjNDM7XHRcdFx0cG9zdGVkX2ludHIgPSAhIShlbnRyeSBcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUik7XG4mIzQzO1x0XHRcdHBpX2RhdGEuZmxhZ3MgPSBwb3N0ZWRfaW50ciBcdTAwM2NcdTAwM2MgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFJfU0hJRlQ7XG4mIzQzO1x0XHRcdGlmIChhbWRfaW9tbXVfZ2FwcGkpIHtcbiYjNDM7XHRcdFx0XHRwaV9kYXRhLmFwaWNpZCA9IGt2bV9jcHVfZ2V0X2FwaWNpZChzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbiYjNDM7XHRcdFx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdCkpIHtcbiYjNDM7XHRcdFx0XHRcdGF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbiYjNDM7XHRcdFx0XHRcdGlzX3ZjcHVfd2FpdGluZyA9IHRydWU7XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0cmV0ID0gaXJxX3NldF92Y3B1X2FmZmluaXR5KGhvc3RfaXJxLCBcdTAwMjZwaV9kYXRhKTtcbiBcdFx0aWYgKHJldClcbi1cdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0XHRnb3RvIGdhcHBpX2Vycl9vdXQ7XG4gXG4gXHRcdC8qXG4gXHRcdCAqIFJldmVydCB0byBsZWdhY3kgbW9kZSBpZiB0aGUgSU9NTVUgZGlkbiYjMzk7dCBwcm92aWRlIG1ldGFkYXRhXG5AQCAtOTY2LDEyICYjNDM7MTAyNSwxNyBAQCBpbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbiBcdFx0ICovXG4gXHRcdGlmIChXQVJOX09OX09OQ0UoIXBpX2RhdGEuaXJfZGF0YSkpIHtcbiBcdFx0XHRpcnFfc2V0X3ZjcHVfYWZmaW5pdHkoaG9zdF9pcnEsIE5VTEwpO1xuLVx0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0XHRyZXQgPSAtRUlPO1xuJiM0MztcdFx0XHRnb3RvIGdhcHBpX2Vycl9vdXQ7XG4gXHRcdH1cbiBcbiBcdFx0aXJxZmQtXHUwMDNlaXJxX2J5cGFzc19kYXRhID0gcGlfZGF0YS5pcl9kYXRhO1xuIFx0XHRsaXN0X2FkZChcdTAwMjZpcnFmZC1cdTAwM2V2Y3B1X2xpc3QsIFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KTtcbiBcdFx0cmV0dXJuIDA7XG4mIzQzO2dhcHBpX2Vycl9vdXQ6XG4mIzQzO1x0XHRpZiAoaXNfdmNwdV93YWl0aW5nKVxuJiM0MztcdFx0XHRhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXHRyZXR1cm4gaXJxX3NldF92Y3B1X2FmZmluaXR5KGhvc3RfaXJxLCBOVUxMKTtcbiB9XG5AQCAtMTAwNCwxMCAmIzQzOzEwNjgsMTQgQEAgZW51bSBhdmljX3ZjcHVfYWN0aW9uIHtcbiBcdEFWSUNfU1RBUlRfQkxPQ0tJTkdcdD0gQklUKDEpLFxuIH07XG4gXG4tc3RhdGljIHZvaWQgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUsXG4tXHRcdFx0XHRcdCAgICBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKVxuJiM0MztzdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGFwaWNpZCxcbiYjNDM7XHRcdFx0XHRcdCAgICBpbnQgY3B1LCBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKVxuIHtcbi1cdGJvb2wgZ2FfbG9nX2ludHIgPSAoYWN0aW9uIFx1MDAyNiBBVklDX1NUQVJUX0JMT0NLSU5HKTtcbiYjNDM7XHRpbnQgcG9zdGVkX2ludHIgPSAhIShhY3Rpb24gXHUwMDI2IEFWSUNfU1RBUlRfQkxPQ0tJTkcpIFx1MDAzY1x1MDAzY1xuJiM0MztcdFx0XHQgIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSX1NISUZUO1xuJiM0MztcdGludCBpc192Y3B1X3J1bm5pbmcgPSAoYXBpY2lkIFx1MDAzZT0gMCkgXHUwMDNjXHUwMDNjXG4mIzQzO1x0XHRcdCAgICAgIEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklOR19TSElGVDtcbiYjNDM7XHRpbnQgZmxhZ3MgPSBwb3N0ZWRfaW50ciB8IGlzX3ZjcHVfcnVubmluZztcbiBcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtID0gdG9fc3ZtKHZjcHUpO1xuIFx0c3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkO1xuIFxuQEAgLTEwMTcsMTYgJiM0MzsxMDg1LDMwIEBAIHN0YXRpYyB2b2lkIGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3B1LFxuIFx0ICogSGVyZSwgd2UgZ28gdGhyb3VnaCB0aGUgcGVyLXZjcHUgaXJfbGlzdCB0byB1cGRhdGUgYWxsIGV4aXN0aW5nXG4gXHQgKiBpbnRlcnJ1cHQgcmVtYXBwaW5nIHRhYmxlIGVudHJ5IHRhcmdldGluZyB0aGlzIHZjcHUuXG4gXHQgKi9cbi1cdGlmIChsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KSlcbiYjNDM7XHRpZiAobGlzdF9lbXB0eShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdCkpIHtcbiYjNDM7XHRcdGlmIChhbWRfaW9tbXVfZ2FwcGkgXHUwMDI2XHUwMDI2IGNwdSBcdTAwM2U9IDApXG4mIzQzO1x0XHRcdHN2bS1cdTAwM2VnYXBwaV9jcHUgPSBjcHU7XG4gXHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChpc192Y3B1X3J1bm5pbmcgXHUwMDI2XHUwMDI2IGFtZF9pb21tdV9nYXBwaSkge1xuJiM0MztcdFx0LyogSUYgY29uZGl0aW9uIGhhbmRsZXMgdGhlIGluaXRpYWwgc3RhdGUgKi9cbiYjNDM7XHRcdGlmIChzdm0tXHUwMDNlZ2FwcGlfY3B1ICE9IC0xKVxuJiM0MztcdFx0XHRhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbiYjNDM7XG4mIzQzO1x0XHRzdm0tXHUwMDNlZ2FwcGlfY3B1ID0gY3B1OyAvKiBTdG9yZSBjcHUgbm8gYXMgdGFyZ2V0IGZvciBHQVBQSSAqL1xuJiM0MztcdH0gZWxzZSBpZiAoYW1kX2lvbW11X2dhcHBpKSB7XG4mIzQzO1x0XHRhcGljaWQgPSBrdm1fY3B1X2dldF9hcGljaWQoc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4mIzQzO1x0XHRhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4mIzQzO1x0fVxuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcnFmZCwgXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3QsIHZjcHVfbGlzdCkge1xuIFx0XHR2b2lkICpkYXRhID0gaXJxZmQtXHUwMDNlaXJxX2J5cGFzc19kYXRhO1xuIFxuIFx0XHRpZiAoIShhY3Rpb24gXHUwMDI2IEFWSUNfVE9HR0xFX09OX09GRikpXG4tXHRcdFx0V0FSTl9PTl9PTkNFKGFtZF9pb21tdV91cGRhdGVfZ2EoZGF0YSwgY3B1LCBnYV9sb2dfaW50cikpO1xuLVx0XHRlbHNlIGlmIChjcHUgXHUwMDNlPSAwKVxuLVx0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZShkYXRhLCBjcHUsIGdhX2xvZ19pbnRyKSk7XG4mIzQzO1x0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfdXBkYXRlX2dhKGRhdGEsIGFwaWNpZCwgZmxhZ3MpKTtcbiYjNDM7XHRcdGVsc2UgaWYgKGlzX3ZjcHVfcnVubmluZylcbiYjNDM7XHRcdFx0V0FSTl9PTl9PTkNFKGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGRhdGEsIGFwaWNpZCwgZmxhZ3MpKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfZGVhY3RpdmF0ZV9ndWVzdF9tb2RlKGRhdGEpKTtcbiBcdH1cbkBAIC0xMDgwLDcgJiM0MzsxMTYyLDcgQEAgc3RhdGljIHZvaWQgX19hdmljX3ZjcHVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUsXG4gXG4gXHRXUklURV9PTkNFKGt2bV9zdm0tXHUwMDNlYXZpY19waHlzaWNhbF9pZF90YWJsZVt2Y3B1LVx1MDAzZXZjcHVfaWRdLCBlbnRyeSk7XG4gXG4tXHRhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIGhfcGh5c2ljYWxfaWQsIGFjdGlvbik7XG4mIzQzO1x0YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSh2Y3B1LCBoX3BoeXNpY2FsX2lkLCBjcHUsIGFjdGlvbik7XG4gXG4gXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdF9sb2NrLCBmbGFncyk7XG4gfVxuQEAgLTExMjMsNyAmIzQzOzEyMDUsNyBAQCBzdGF0aWMgdm9pZCBfX2F2aWNfdmNwdV9wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKVxuIFx0ICovXG4gXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3RfbG9jaywgZmxhZ3MpO1xuIFxuLVx0YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSh2Y3B1LCAtMSwgYWN0aW9uKTtcbiYjNDM7XHRhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIC0xLCAtMSwgYWN0aW9uKTtcbiBcbiBcdFdBUk5fT05fT05DRShlbnRyeSBcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUik7XG4gXG5AQCAtMTI5Niw2ICYjNDM7MTM3OCwyMSBAQCBzdGF0aWMgYm9vbCBfX2luaXQgYXZpY193YW50X2F2aWNfZW5hYmxlZCh2b2lkKVxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuJiM0MztcdHN0cnVjdCBsaXN0X2hlYWQgKnZjcHVfd2FrZXVwX2xpc3QgPSBcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIGNwdSk7XG4mIzQzO1x0cmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrID0gXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7XG4mIzQzO1x0c3RydWN0IHZjcHVfc3ZtICpzdm07XG4mIzQzO1xuJiM0MztcdHJhd19zcGluX2xvY2soc3BpbmxvY2spO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkoc3ZtLCB2Y3B1X3dha2V1cF9saXN0LCBnYXBwaV92Y3B1X3dha2V1cF9saXN0KSB7XG4mIzQzO1x0XHRpZiAoa3ZtX2xhcGljX2ZpbmRfaGlnaGVzdF9pcnIoXHUwMDI2c3ZtLVx1MDAzZXZjcHUpIFx1MDAzZT0gMClcbiYjNDM7XHRcdFx0a3ZtX3ZjcHVfd2FrZV91cChcdTAwMjZzdm0tXHUwMDNldmNwdSk7XG4mIzQzO1x0fVxuJiM0MztcdHJhd19zcGluX3VubG9jayhzcGlubG9jayk7XG4mIzQzO31cbiYjNDM7XG4gLypcbiAgKiBOb3RlOlxuICAqIC0gVGhlIG1vZHVsZSBwYXJhbSBhdmljIGVuYWJsZSBib3RoIHhBUElDIGFuZCB4MkFQSUMgbW9kZS5cbkBAIC0xMzA0LDEyICYjNDM7MTQwMSwxOCBAQCBzdGF0aWMgYm9vbCBfX2luaXQgYXZpY193YW50X2F2aWNfZW5hYmxlZCh2b2lkKVxuICAqL1xuIGJvb2wgX19pbml0IGF2aWNfaGFyZHdhcmVfc2V0dXAodm9pZClcbiB7XG4mIzQzO1x0aW50IGNwdTtcbiBcdGF2aWMgPSBhdmljX3dhbnRfYXZpY19lbmFibGVkKCk7XG4gXHRpZiAoIWF2aWMpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByX2luZm8oXCYjMzQ7QVZJQyBlbmFibGVkXFxuXCYjMzQ7KTtcbiBcbiYjNDM7XHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG4mIzQzO1x0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIGNwdSkpO1xuJiM0MztcdFx0cmF3X3NwaW5fbG9ja19pbml0KFx1MDAyNnBlcl9jcHUoZ2FwcGlfdmNwdV93YWtldXBfbGlzdF9sb2NrLCBjcHUpKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LyogQVZJQyBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgeDJBVklDLiAqL1xuIFx0eDJhdmljX2VuYWJsZWQgPSBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfWDJBVklDKTtcbiBcdGlmICh4MmF2aWNfZW5hYmxlZCkge1xuQEAgLTEzMzMsNiAmIzQzOzE0MzYsNyBAQCBib29sIF9faW5pdCBhdmljX2hhcmR3YXJlX3NldHVwKHZvaWQpXG4gXHRcdGVuYWJsZV9pcGl2ID0gZmFsc2U7XG4gXG4gXHRhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKFx1MDAyNmF2aWNfZ2FfbG9nX25vdGlmaWVyKTtcbiYjNDM7XHRrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyKFx1MDAyNmF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXIpO1xuIFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCBlMDJhMzhkYTUyOTZlMy4uYjY4NzEzM2Y4NTI4YmEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtMTM1Niw2ICYjNDM7MTM1Niw4IEBAIHN0YXRpYyB2b2lkIHN2bV92Y3B1X2ZyZWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFxuIFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KSk7XG4gXG4mIzQzO1x0YXZpY19kZXN0cm95X3ZjcHUoc3ZtKTtcbiYjNDM7XG4gXHRzdm1fbGVhdmVfbmVzdGVkKHZjcHUpO1xuIFx0c3ZtX2ZyZWVfbmVzdGVkKHN2bSk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbmluZGV4IDUxMzc0MTZiZTU5M2Q3Li40N2Q1YmI1ZDcxMDNkYSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbkBAIC0zNjIsNiAmIzQzOzM2MiwxMCBAQCBzdHJ1Y3QgdmNwdV9zdm0ge1xuIFxuIFx0LyogR3Vlc3QgR0lGIHZhbHVlLCB1c2VkIHdoZW4gdkdJRiBpcyBub3QgZW5hYmxlZCAqL1xuIFx0Ym9vbCBndWVzdF9naWY7XG4mIzQzO1xuJiM0MztcdC8qIEdBUFBJIHJlbGF0ZWQgZmllbGRzICovXG4mIzQzO1x0c3RydWN0IGxpc3RfaGVhZCBnYXBwaV92Y3B1X3dha2V1cF9saXN0O1xuJiM0MztcdGludCBnYXBwaV9jcHU7XG4gfTtcbiBcbiBzdHJ1Y3Qgc3ZtX2NwdV9kYXRhIHtcbkBAIC05MDksNiAmIzQzOzkxMyw3IEBAIHZvaWQgYXZpY19pbml0X3ZtY2Ioc3RydWN0IHZjcHVfc3ZtICpzdm0sIHN0cnVjdCB2bWNiICp2bWNiKTtcbiBpbnQgYXZpY19pbmNvbXBsZXRlX2lwaV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBpbnQgYXZpY191bmFjY2VsZXJhdGVkX2FjY2Vzc19pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBpbnQgYXZpY19pbml0X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pO1xuJiM0Mzt2b2lkIGF2aWNfZGVzdHJveV92Y3B1KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKTtcbiB2b2lkIGF2aWNfdmNwdV9sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSk7XG4gdm9pZCBhdmljX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gdm9pZCBhdmljX2FwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdS5oIGIvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmhcbmluZGV4IDgzNGQ4ZmFiZmJhMzg3Li4wNDQxNzljYWIxMmU0YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXUuaFxuQEAgLTQxLDYgJiM0Mzs0MSw3IEBAIGludCBhbWRfaW9tbXVfZW5hYmxlKHZvaWQpO1xuIHZvaWQgYW1kX2lvbW11X2Rpc2FibGUodm9pZCk7XG4gaW50IGFtZF9pb21tdV9yZWVuYWJsZShpbnQgbW9kZSk7XG4gaW50IGFtZF9pb21tdV9lbmFibGVfZmF1bHRpbmcodW5zaWduZWQgaW50IGNwdSk7XG4mIzQzO2V4dGVybiBib29sIGFtZF9pb21tdV9nYXBwaTtcbiBleHRlcm4gaW50IGFtZF9pb21tdV9ndWVzdF9pcjtcbiBleHRlcm4gZW51bSBwcm90ZWN0aW9uX2RvbWFpbl9tb2RlIGFtZF9pb21tdV9wZ3RhYmxlO1xuIGV4dGVybiBpbnQgYW1kX2lvbW11X2dwdF9sZXZlbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaCBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdV90eXBlcy5oXG5pbmRleCBmOWY3MTgwODc4OTMwMy4uZGUwYjIzMzA2OTQ0YjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11X3R5cGVzLmhcbkBAIC05NCw2ICYjNDM7OTQsNyBAQFxuICNkZWZpbmUgRkVBVFVSRV9YMkFQSUNcdFx0QklUX1VMTCgyKVxuICNkZWZpbmUgRkVBVFVSRV9OWFx0XHRCSVRfVUxMKDMpXG4gI2RlZmluZSBGRUFUVVJFX0dUXHRcdEJJVF9VTEwoNClcbiYjNDM7I2RlZmluZSBGRUFUVVJFX0dBUFBJXHRcdEJJVF9VTEwoNSlcbiAjZGVmaW5lIEZFQVRVUkVfSUFcdFx0QklUX1VMTCg2KVxuICNkZWZpbmUgRkVBVFVSRV9HQVx0XHRCSVRfVUxMKDcpXG4gI2RlZmluZSBGRUFUVVJFX0hFXHRcdEJJVF9VTEwoOClcbkBAIC0xMTMsNiAmIzQzOzExNCw3IEBAXG4gLyogRXh0ZW5kZWQgRmVhdHVyZSAyIEJpdHMgKi9cbiAjZGVmaW5lIEZFQVRVUkVfU0VWU05QSU9fU1VQXHRCSVRfVUxMKDEpXG4gI2RlZmluZSBGRUFUVVJFX0dDUjNUUlBNT0RFXHRCSVRfVUxMKDMpXG4mIzQzOyNkZWZpbmUgRkVBVFVSRV9HQVBQSURJU1NVUFx0QklUX1VMTCg0KVxuICNkZWZpbmUgRkVBVFVSRV9TTlBBVklDU1VQXHRHRU5NQVNLX1VMTCg3LCA1KVxuICNkZWZpbmUgRkVBVFVSRV9TTlBBVklDU1VQX0dBTSh4KSBcXFxuIFx0KEZJRUxEX0dFVChGRUFUVVJFX1NOUEFWSUNTVVAsIHgpID09IDB4MSlcbkBAIC0xOTAsNiAmIzQzOzE5Miw3IEBAXG4gI2RlZmluZSBDT05UUk9MX0VQSF9FTlx0XHQ0NVxuICNkZWZpbmUgQ09OVFJPTF9YVF9FTlx0XHQ1MFxuICNkZWZpbmUgQ09OVFJPTF9JTlRDQVBYVF9FTlx0NTFcbiYjNDM7I2RlZmluZSBDT05UUk9MX0dBUFBJX0VOXHQ1NVxuICNkZWZpbmUgQ09OVFJPTF9HQ1IzVFJQTU9ERVx0NThcbiAjZGVmaW5lIENPTlRST0xfSVJUQ0FDSEVESVNcdDU5XG4gI2RlZmluZSBDT05UUk9MX1NOUEFWSUNfRU5cdDYxXG5AQCAtMTAwNCw3ICYjNDM7MTAwNyw4IEBAIHVuaW9uIGlydGVfZ2FfbG8ge1xuIFx0XHQgICAgbm9fZmF1bHRcdDogMSxcbiBcdFx0ICAgIC8qIC0tLS0tLSAqL1xuIFx0XHQgICAgZ2FfbG9nX2ludHJcdDogMSxcbi1cdFx0ICAgIHJzdmQxXHQ6IDMsXG4mIzQzO1x0XHQgICAgcnN2ZDFcdDogMixcbiYjNDM7XHRcdCAgICBnYXBwaV9kaXNcdDogMSxcbiBcdFx0ICAgIGlzX3J1blx0OiAxLFxuIFx0XHQgICAgLyogLS0tLS0tICovXG4gXHRcdCAgICBndWVzdF9tb2RlXHQ6IDEsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvaW5pdC5jIGIvZHJpdmVycy9pb21tdS9hbWQvaW5pdC5jXG5pbmRleCAzYmRiMzgwZDIzZTlhOS4uYjNlMWQ4ZWU3ZTlkNjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW9tbXUvYW1kL2luaXQuY1xuQEAgLTE2MCw2ICYjNDM7MTYwLDkgQEAgdTggYW1kX2lvbW11X2hwdF9sZXZlbDtcbiAvKiBHdWVzdCBwYWdlIHRhYmxlIGxldmVsICovXG4gaW50IGFtZF9pb21tdV9ncHRfbGV2ZWwgPSBQQUdFX01PREVfNF9MRVZFTDtcbiBcbiYjNDM7Ym9vbCBhbWRfaW9tbXVfZ2FwcGk7XG4mIzQzO0VYUE9SVF9TWU1CT0woYW1kX2lvbW11X2dhcHBpKTtcbiYjNDM7XG4gaW50IGFtZF9pb21tdV9ndWVzdF9pciA9IEFNRF9JT01NVV9HVUVTVF9JUl9WQVBJQztcbiBzdGF0aWMgaW50IGFtZF9pb21tdV94dF9tb2RlID0gSVJRX1JFTUFQX1hBUElDX01PREU7XG4gXG5AQCAtMzAzNSwxMSAmIzQzOzMwMzgsMjAgQEAgc3RhdGljIHZvaWQgZW5hYmxlX2lvbW11c192YXBpYyh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4mIzQzO1x0aWYgKGFtZF9pb21tdV9nYXBwaSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIShjaGVja19mZWF0dXJlKEZFQVRVUkVfR0FQUEkpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgIEFNRF9JT01NVV9HVUVTVF9JUl9WQVBJQyhhbWRfaW9tbXVfZ3Vlc3RfaXIpKSkge1xuJiM0MztcdFx0cHJfd2FybihcJiMzNDtHQVBQSSBpcyBub3Qgc3VwcG9ydGVkLlxcblwmIzM0Oyk7XG4mIzQzO1x0XHRhbWRfaW9tbXVfZ2FwcGkgPSBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LyogRW5hYmxpbmcgR0FNIGFuZCBTTlBBVklDIHN1cHBvcnQgKi9cbiBcdGZvcl9lYWNoX2lvbW11KGlvbW11KSB7XG4tXHRcdGlmIChpb21tdV9pbml0X2dhX2xvZyhpb21tdSkgfHxcbi1cdFx0ICAgIGlvbW11X2dhX2xvZ19lbmFibGUoaW9tbXUpKVxuLVx0XHRcdHJldHVybjtcbiYjNDM7XHRcdGlmIChhbWRfaW9tbXVfZ2FwcGkpXG4mIzQzO1x0XHRcdGlvbW11X2ZlYXR1cmVfZW5hYmxlKGlvbW11LCBDT05UUk9MX0dBUFBJX0VOKTtcbiYjNDM7XHRcdGVsc2UgaWYgKGlvbW11X2luaXRfZ2FfbG9nKGlvbW11KSB8fFxuJiM0MztcdFx0XHQgaW9tbXVfZ2FfbG9nX2VuYWJsZShpb21tdSkpXG4mIzQzO1x0XHRcdCByZXR1cm47XG4gXG4gXHRcdGlvbW11X2ZlYXR1cmVfZW5hYmxlKGlvbW11LCBDT05UUk9MX0dBTV9FTik7XG4gXHRcdGlmIChhbWRfaW9tbXVfc25wX2VuKVxuQEAgLTMwNDcsNyAmIzQzOzMwNTksOCBAQCBzdGF0aWMgdm9pZCBlbmFibGVfaW9tbXVzX3ZhcGljKHZvaWQpXG4gXHR9XG4gXG4gXHRhbWRfaW9tbXVfaXJxX29wcy5jYXBhYmlsaXR5IHw9ICgxIFx1MDAzY1x1MDAzYyBJUlFfUE9TVElOR19DQVApO1xuLVx0cHJfaW5mbyhcJiMzNDtWaXJ0dWFsIEFQSUMgZW5hYmxlZFxcblwmIzM0Oyk7XG4mIzQzO1x0cHJfaW5mbyhcJiMzNDtWaXJ0dWFsIEFQSUMgZW5hYmxlZCB3aXRoICVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0YW1kX2lvbW11X2dhcHBpID8gXCYjMzQ7R0FQUElcJiMzNDsgOiBcJiMzNDtHQUxPR1wmIzM0Oyk7XG4gI2VuZGlmXG4gfVxuIFxuQEAgLTM3MzgsNiAmIzQzOzM3NTEsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBwYXJzZV9hbWRfaW9tbXVfb3B0aW9ucyhjaGFyICpzdHIpXG4gXHRcdH0gZWxzZSBpZiAoc3RybmNtcChzdHIsIFwmIzM0O3YyX3Bnc2l6ZXNfb25seVwmIzM0OywgMTUpID09IDApIHtcbiBcdFx0XHRwcl9pbmZvKFwmIzM0O1Jlc3RyaWN0aW5nIFYxIHBhZ2Utc2l6ZXMgdG8gNEtpQi8yTWlCLzFHaUJcJiMzNDspO1xuIFx0XHRcdGFtZF9pb21tdV9wZ3NpemVfYml0bWFwID0gQU1EX0lPTU1VX1BHU0laRVNfVjI7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHN0cm5jbXAoc3RyLCBcJiMzNDtnYXBwaVwmIzM0OywgNSkgPT0gMCkge1xuJiM0MztcdFx0XHRhbWRfaW9tbXVfZ2FwcGkgPSB0cnVlO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdHByX25vdGljZShcJiMzNDtVbmtub3duIG9wdGlvbiAtICYjMzk7JXMmIzM5O1xcblwmIzM0Oywgc3RyKTtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmMgYi9kcml2ZXJzL2lvbW11L2FtZC9pb21tdS5jXG5pbmRleCA1N2RjOGZhYmM3ZDliOS4uNDY5MGNlY2M5YWE3ZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pb21tdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2lvbW11L2FtZC9pb21tdS5jXG5AQCAtMzk1OSwxOSAmIzQzOzM5NTksMjggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBhbWRfaXJfZG9tYWluX29wcyA9IHtcbiBcdC5kZWFjdGl2YXRlID0gaXJxX3JlbWFwcGluZ19kZWFjdGl2YXRlLFxuIH07XG4gXG4tc3RhdGljIHZvaWQgX19hbWRfaW9tbXVfdXBkYXRlX2dhKHN0cnVjdCBpcnRlX2dhICplbnRyeSwgaW50IGNwdSxcbi1cdFx0XHRcdCAgYm9vbCBnYV9sb2dfaW50cilcbiYjNDM7c3RhdGljIHZvaWQgX19hbWRfaW9tbXVfdXBkYXRlX2dhKHN0cnVjdCBpcnRlX2dhICplbnRyeSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxuIHtcbi1cdGlmIChjcHUgXHUwMDNlPSAwKSB7XG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkcpIHtcbiBcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmRlc3RpbmF0aW9uID1cbi1cdFx0XHRcdFx0QVBJQ0lEX1RPX0lSVEVfREVTVF9MTyhjcHUpO1xuJiM0MztcdFx0XHRcdFx0QVBJQ0lEX1RPX0lSVEVfREVTVF9MTyhhcGljaWQpO1xuIFx0XHRlbnRyeS1cdTAwM2VoaS5maWVsZHMuZGVzdGluYXRpb24gPVxuLVx0XHRcdFx0XHRBUElDSURfVE9fSVJURV9ERVNUX0hJKGNwdSk7XG4mIzQzO1x0XHRcdFx0XHRBUElDSURfVE9fSVJURV9ERVNUX0hJKGFwaWNpZCk7XG4gXHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSB0cnVlO1xuIFx0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfbG9nX2ludHIgPSBmYWxzZTtcbiBcdH0gZWxzZSB7XG4tXHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcbi1cdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX2xvZ19pbnRyID0gZ2FfbG9nX2ludHI7XG4mIzQzO1x0XHRib29sIHBvc3RlZF9pbnRyID0gISEoZmxhZ3MgXHUwMDI2IEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSKTtcbiYjNDM7XHRcdGlmIChhbWRfaW9tbXVfZ2FwcGkpIHtcbiYjNDM7XHRcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhcHBpX2RpcyA9ICFwb3N0ZWRfaW50ciBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICBjaGVja19mZWF0dXJlMihGRUFUVVJFX0dBUFBJRElTU1VQKTtcbiYjNDM7XHRcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmlzX3J1biA9IGZhbHNlO1xuJiM0MztcdFx0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZGVzdGluYXRpb24gPVxuJiM0MztcdFx0XHRcdFx0XHRBUElDSURfVE9fSVJURV9ERVNUX0xPKGFwaWNpZCk7XG4mIzQzO1x0XHRcdGVudHJ5LVx1MDAzZWhpLmZpZWxkcy5kZXN0aW5hdGlvbiA9IEFQSUNJRF9UT19JUlRFX0RFU1RfSEkoYXBpY2lkKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcbiYjNDM7XHRcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX2xvZ19pbnRyID0gcG9zdGVkX2ludHI7XG4mIzQzO1x0XHR9XG4gXHR9XG4gfVxuIFxuQEAgLTM5OTIsNyAmIzQzOzQwMDEsNyBAQCBzdGF0aWMgdm9pZCBfX2FtZF9pb21tdV91cGRhdGVfZ2Eoc3RydWN0IGlydGVfZ2EgKmVudHJ5LCBpbnQgY3B1LFxuICAqIGFuZCB0aHVzIGRvbiYjMzk7dCByZXF1aXJlIGFuIGludmFsaWRhdGlvbiB0byBlbnN1cmUgdGhlIElPTU1VIGNvbnN1bWVzIGZyZXNoXG4gICogaW5mb3JtYXRpb24uXG4gICovXG4taW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbiYjNDM7aW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxuIHtcbiBcdHN0cnVjdCBhbWRfaXJfZGF0YSAqaXJfZGF0YSA9IChzdHJ1Y3QgYW1kX2lyX2RhdGEgKilkYXRhO1xuIFx0c3RydWN0IGlydGVfZ2EgKmVudHJ5ID0gKHN0cnVjdCBpcnRlX2dhICopIGlyX2RhdGEtXHUwMDNlZW50cnk7XG5AQCAtNDAwNiwxNCAmIzQzOzQwMTUsMTQgQEAgaW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbiBcdGlmICghaXJfZGF0YS1cdTAwM2Vpb21tdSlcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXG4tXHRfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGNwdSwgZ2FfbG9nX2ludHIpO1xuJiM0MztcdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgYXBpY2lkLCBmbGFncyk7XG4gXG4gXHRyZXR1cm4gX19tb2RpZnlfaXJ0ZV9nYShpcl9kYXRhLVx1MDAzZWlvbW11LCBpcl9kYXRhLVx1MDAzZWlycV8yX2lydGUuZGV2aWQsXG4gXHRcdFx0XHRpcl9kYXRhLVx1MDAzZWlycV8yX2lydGUuaW5kZXgsIGVudHJ5KTtcbiB9XG4gRVhQT1JUX1NZTUJPTChhbWRfaW9tbXVfdXBkYXRlX2dhKTtcbiBcbi1pbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbiYjNDM7aW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcbiB7XG4gXHRzdHJ1Y3QgYW1kX2lyX2RhdGEgKmlyX2RhdGEgPSAoc3RydWN0IGFtZF9pcl9kYXRhICopZGF0YTtcbiBcdHN0cnVjdCBpcnRlX2dhICplbnRyeSA9IChzdHJ1Y3QgaXJ0ZV9nYSAqKSBpcl9kYXRhLVx1MDAzZWVudHJ5O1xuQEAgLTQwMzQsOSAmIzQzOzQwNDMsMTMgQEAgaW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpXG4gXHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ3Vlc3RfbW9kZSAgPSAxO1xuIFx0ZW50cnktXHUwMDNlaGkuZmllbGRzLmdhX3Jvb3RfcHRyICAgICAgID0gaXJfZGF0YS1cdTAwM2VnYV9yb290X3B0cjtcbiBcdGVudHJ5LVx1MDAzZWhpLmZpZWxkcy52ZWN0b3IgICAgICAgICAgICA9IGlyX2RhdGEtXHUwMDNlZ2FfdmVjdG9yO1xuLVx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX3RhZyAgICAgID0gaXJfZGF0YS1cdTAwM2VnYV90YWc7XG4gXG4tXHRfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGNwdSwgZ2FfbG9nX2ludHIpO1xuJiM0MztcdGlmIChhbWRfaW9tbXVfZ2FwcGkpXG4mIzQzO1x0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfdGFnID0gUE9TVEVEX0lOVFJfV0FLRVVQX1ZFQ1RPUjtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfdGFnID0gaXJfZGF0YS1cdTAwM2VnYV90YWc7XG4mIzQzO1xuJiM0MztcdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgYXBpY2lkLCBmbGFncyk7XG4gXG4gXHRyZXR1cm4gbW9kaWZ5X2lydGVfZ2EoaXJfZGF0YS1cdTAwM2Vpb21tdSwgaXJfZGF0YS1cdTAwM2VpcnFfMl9pcnRlLmRldmlkLFxuIFx0XHRcdCAgICAgIGlyX2RhdGEtXHUwMDNlaXJxXzJfaXJ0ZS5pbmRleCwgZW50cnkpO1xuQEAgLTQxMDcsOCAmIzQzOzQxMjAsOCBAQCBzdGF0aWMgaW50IGFtZF9pcl9zZXRfdmNwdV9hZmZpbml0eShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEsIHZvaWQgKmluZm8pXG4gXHRcdGlyX2RhdGEtXHUwMDNlZ2FfdmVjdG9yID0gcGlfZGF0YS1cdTAwM2V2ZWN0b3I7XG4gXHRcdGlyX2RhdGEtXHUwMDNlZ2FfdGFnID0gcGlfZGF0YS1cdTAwM2VnYV90YWc7XG4gXHRcdGlmIChwaV9kYXRhLVx1MDAzZWlzX2d1ZXN0X21vZGUpXG4tXHRcdFx0cmV0ID0gYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoaXJfZGF0YSwgcGlfZGF0YS1cdTAwM2VjcHUsXG4tXHRcdFx0XHRcdFx0XHQgICAgcGlfZGF0YS1cdTAwM2VnYV9sb2dfaW50cik7XG4mIzQzO1x0XHRcdHJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtXHUwMDNlYXBpY2lkLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBwaV9kYXRhLVx1MDAzZWZsYWdzKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdHJldCA9IGFtZF9pb21tdV9kZWFjdGl2YXRlX2d1ZXN0X21vZGUoaXJfZGF0YSk7XG4gXHR9IGVsc2Uge1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmggYi9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oXG5pbmRleCBlZGNlZTlmNTMzNWE2Zi4uODdlNzZmNjE3ZWExODUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oXG5AQCAtMzAsOCAmIzQzOzMwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGFtZF9pb21tdV9kZXRlY3Qodm9pZCkgeyB9XG4gLyogSU9NTVUgQVZJQyBGdW5jdGlvbiAqL1xuIGV4dGVybiBpbnQgYW1kX2lvbW11X3JlZ2lzdGVyX2dhX2xvZ19ub3RpZmllcihpbnQgKCpub3RpZmllcikodTMyKSk7XG4gXG4tZXh0ZXJuIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpO1xuLWV4dGVybiBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cik7XG4mIzQzO2V4dGVybiBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgYXBpY2lkLCBpbnQgZmxhZ3MpO1xuJiM0MztleHRlcm4gaW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncyk7XG4gZXh0ZXJuIGludCBhbWRfaW9tbXVfZGVhY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEpO1xuIFxuICNlbHNlIC8qIGRlZmluZWQoQ09ORklHX0FNRF9JT01NVSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0lSUV9SRU1BUCkgKi9cbkBAIC00MiwxMiAmIzQzOzQyLDEyIEBAIGFtZF9pb21tdV9yZWdpc3Rlcl9nYV9sb2dfbm90aWZpZXIoaW50ICgqbm90aWZpZXIpKHUzMikpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKVxuJiM0MztzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcbiB7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxuIHtcbiBcdHJldHVybiAwO1xuIH1cbkBAIC03Niw0ICYjNDM7NzYsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X3NucF9kaXNhYmxlKHZvaWQpIHsgcmV0dXJuIDA7IH1cbiBzdGF0aWMgaW5saW5lIGJvb2wgYW1kX2lvbW11X3Nldl90aW9fc3VwcG9ydGVkKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9XG4gI2VuZGlmXG4gXG4mIzQzOyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfVkNQVV9SVU5OSU5HX1NISUZUIDBcbiYjNDM7I2RlZmluZSBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkcgIEJJVCgwKVxuJiM0MztcbiYjNDM7I2RlZmluZSBBTURfSU9NTVVfRkxBR19QT1NURURfSU5UUl9TSElGVCAxXG4mIzQzOyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFIgIEJJVCgxKVxuJiM0MztcbiYjNDM7ZXh0ZXJuIGJvb2wgYW1kX2lvbW11X2dhcHBpO1xuICNlbmRpZiAvKiBfQVNNX1g4Nl9BTURfSU9NTVVfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OywKICAgICYjMzQ7QU1EX0lPTU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXZpY19waV91cGRhdGVfaXJ0ZSYjMzQ7LAogICAgJiMzNDthdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5JiMzNDssCiAgICAmIzM0O2FtZF9pb21tdV91cGRhdGVfZ2EmIzM0OywKICAgICYjMzQ7YW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUmIzM0OywKICAgICYjMzQ7YXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdCYjMzQ7LAogICAgJiMzNDthdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3QmIzM0OywKICAgICYjMzQ7YXZpY19nYXBwaV93YWtldXBfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtfX2FtZF9pb21tdV91cGRhdGVfZ2EmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIGludHJvZHVjZXMgR0FQUEkgKEd1ZXN0IEFQSUMgUG9zdGVkIEludGVycnVwdHMpIHN1cHBvcnQgZm9yIEFNRCBJT01NVSBhbmQgS1ZNIFNWTSBBVklDLiBJdCBtb2RpZmllcyBjb3JlIGludGVycnVwdCByZW1hcHBpbmcgYW5kIHZDUFUgYWZmaW5pdHkgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIG5lc3RlZCBLVk0gb24gQU1EKS4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBuZXcgd2FrZXVwIGxpc3RzIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgZG8gbm90IGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIG9yIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjMDc2ODk5NmVhYWM5NjY0YzE5MTRhNDg1YTVlMjI4NTlhOTZlYjViCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdW4gMjYgMjI6NTk6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmgKaW5kZXggMzdiOTRmNDg0ZWYzMzguLjQwYTIyMDZhMzNjMDhkIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vaXJxX3JlbWFwcGluZy5oCkBAIC0zNSw4ICYjNDM7MzUsOCBAQCBzdHJ1Y3QgYW1kX2lvbW11X3BpX2RhdGEgewogCXU2NCB2YXBpY19hZGRyOwkJLyogUGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgdkNQVSYjMzk7cyB2QVBJQy4gKi8KIAl1MzIgZ2FfdGFnOwogCXUzMiB2ZWN0b3I7CQkvKiBHdWVzdCB2ZWN0b3Igb2YgdGhlIGludGVycnVwdCAqLwotCWludCBjcHU7Ci0JYm9vbCBnYV9sb2dfaW50cjsKJiM0MzsJaW50IGFwaWNpZDsKJiM0MzsJaW50IGZsYWdzOwogCWJvb2wgaXNfZ3Vlc3RfbW9kZTsKIAl2b2lkICppcl9kYXRhOwogfTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jIGIvYXJjaC94ODYva3ZtL3N2bS9hdmljLmMKaW5kZXggY2RkNWE2ZGM2NDZmMTEuLmQyMzhmNjVhODE3MmJjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYwpAQCAtNjMsNiAmIzQzOzYzLDkgQEAKIAlnYV90YWc7CQkJCQkJCQlcCiB9KQogCiYjNDM7c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBsaXN0X2hlYWQsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpOwomIzQzO3N0YXRpYyBERUZJTkVfUEVSX0NQVShyYXdfc3BpbmxvY2tfdCwgZ2FwcGlfdmNwdV93YWtldXBfbGlzdF9sb2NrKTsKJiM0MzsKIHN0YXRpY19hc3NlcnQoX19BVklDX0dBVEFHKEFWSUNfVk1fSURfTUFTSywgQVZJQ19WQ1BVX0lEWF9NQVNLKSA9PSAtMXUpOwogCiAjZGVmaW5lIEFWSUNfQVVUT19NT0RFIC0xCkBAIC04NzQsNiAmIzQzOzg3Nyw5IEBAIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSkKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3N2bS0mZ3Q7aXJfbGlzdCk7CiAJcmF3X3NwaW5fbG9ja19pbml0KCZhbXA7c3ZtLSZndDtpcl9saXN0X2xvY2spOwogCiYjNDM7CUlOSVRfTElTVF9IRUFEKCZhbXA7c3ZtLSZndDtnYXBwaV92Y3B1X3dha2V1cF9saXN0KTsKJiM0MzsJc3ZtLSZndDtnYXBwaV9jcHUgPSAtMTsKJiM0MzsKIAlpZiAoIWVuYWJsZV9hcGljdiB8fCAhaXJxY2hpcF9pbl9rZXJuZWwodmNwdS0mZ3Q7a3ZtKSkKIAkJcmV0dXJuIDA7CiAKQEAgLTg4Niw2ICYjNDM7ODkyLDQ0IEBAIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSkKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHZvaWQgYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSwgaW50IGNwdSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBsaXN0X2hlYWQgKndha2V1cF9saXN0OwomIzQzOwlyYXdfc3BpbmxvY2tfdCAqc3BpbmxvY2s7CiYjNDM7CiYjNDM7CWlmIChXQVJOX09OKGNwdSAmbHQ7IDApKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwl3YWtldXBfbGlzdCA9ICZhbXA7cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0LCBjcHUpOwomIzQzOwlzcGlubG9jayA9ICZhbXA7cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7CiYjNDM7CXJhd19zcGluX2xvY2soc3BpbmxvY2spOwomIzQzOwlpZiAobGlzdF9lbXB0eSgmYW1wO3N2bS0mZ3Q7Z2FwcGlfdmNwdV93YWtldXBfbGlzdCkpCiYjNDM7CQlsaXN0X2FkZF90YWlsKCZhbXA7c3ZtLSZndDtnYXBwaV92Y3B1X3dha2V1cF9saXN0LCB3YWtldXBfbGlzdCk7CiYjNDM7CXJhd19zcGluX3VubG9jayhzcGlubG9jayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSwgaW50IGNwdSkKJiM0Mzt7CiYjNDM7CXJhd19zcGlubG9ja190ICpzcGlubG9jazsKJiM0MzsKJiM0MzsJaWYgKFdBUk5fT04oY3B1ICZsdDsgMCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXNwaW5sb2NrID0gJmFtcDtwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KTsKJiM0MzsJcmF3X3NwaW5fbG9jayhzcGlubG9jayk7CiYjNDM7CWlmICghbGlzdF9lbXB0eSgmYW1wO3N2bS0mZ3Q7Z2FwcGlfdmNwdV93YWtldXBfbGlzdCkpCiYjNDM7CQlsaXN0X2RlbF9pbml0KCZhbXA7c3ZtLSZndDtnYXBwaV92Y3B1X3dha2V1cF9saXN0KTsKJiM0MzsJcmF3X3NwaW5fdW5sb2NrKHNwaW5sb2NrKTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBhdmljX2Rlc3Ryb3lfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSkKJiM0Mzt7CiYjNDM7CWlmIChzdm0tJmd0O2dhcHBpX2NwdSAhPSAtMSAmYW1wOyZhbXA7IGFtZF9pb21tdV9nYXBwaSkgewomIzQzOwkJYXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLSZndDtnYXBwaV9jcHUpOwomIzQzOwkJc3ZtLSZndDtnYXBwaV9jcHUgPSAtMTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHZvaWQgYXZpY19hcGljdl9wb3N0X3N0YXRlX3Jlc3RvcmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCWF2aWNfaGFuZGxlX2Rmcl91cGRhdGUodmNwdSk7CkBAIC04OTYsMTMgJiM0Mzs5NDAsMTggQEAgc3RhdGljIHZvaWQgc3ZtX2lyX2xpc3RfZGVsKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCkKIHsKIAlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUgPSBpcnFmZC0mZ3Q7aXJxX2J5cGFzc192Y3B1OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiYjNDM7CXN0cnVjdCB2Y3B1X3N2bSAqc3ZtOwogCiAJaWYgKCF2Y3B1KQogCQlyZXR1cm47CiAKLQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDt0b19zdm0odmNwdSktJmd0O2lyX2xpc3RfbG9jaywgZmxhZ3MpOwomIzQzOwlzdm0gPSB0b19zdm0odmNwdSk7CiYjNDM7CiYjNDM7CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3N2bS0mZ3Q7aXJfbGlzdF9sb2NrLCBmbGFncyk7CiAJbGlzdF9kZWwoJmFtcDtpcnFmZC0mZ3Q7dmNwdV9saXN0KTsKLQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO3RvX3N2bSh2Y3B1KS0mZ3Q7aXJfbGlzdF9sb2NrLCBmbGFncyk7CiYjNDM7CWlmIChsaXN0X2VtcHR5KCZhbXA7c3ZtLSZndDtpcl9saXN0KSkKJiM0MzsJCWF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS0mZ3Q7Z2FwcGlfY3B1KTsKJiM0MzsJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtzdm0tJmd0O2lyX2xpc3RfbG9jaywgZmxhZ3MpOwogfQogCiBpbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSwKQEAgLTkzMiw2ICYjNDM7OTgxLDggQEAgaW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sCiAJCXN0cnVjdCB2Y3B1X3N2bSAqc3ZtID0gdG9fc3ZtKHZjcHUpOwogCQl1NjQgZW50cnk7CiAJCWludCByZXQ7CiYjNDM7CQlpbnQgcG9zdGVkX2ludHI7CiYjNDM7CQlib29sIGlzX3ZjcHVfd2FpdGluZyA9IGZhbHNlOwogCiAJCS8qCiAJCSAqIFByZXZlbnQgdGhlIHZDUFUgZnJvbSBiZWluZyBzY2hlZHVsZWQgb3V0IG9yIG1pZ3JhdGVkIHVudGlsCkBAIC05NDksMTUgJiM0MzsxMDAwLDIzIEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLAogCQkgKi8KIAkJZW50cnkgPSBzdm0tJmd0O2F2aWNfcGh5c2ljYWxfaWRfZW50cnk7CiAJCWlmIChlbnRyeSAmYW1wOyBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0lTX1JVTk5JTkdfTUFTSykgewotCQkJcGlfZGF0YS5jcHUgPSBlbnRyeSAmYW1wOyBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0hPU1RfUEhZU0lDQUxfSURfTUFTSzsKJiM0MzsJCQlwaV9kYXRhLmFwaWNpZCA9IGVudHJ5ICZhbXA7IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfSE9TVF9QSFlTSUNBTF9JRF9NQVNLOwomIzQzOwkJCXBpX2RhdGEuZmxhZ3MgPSBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkc7CiAJCX0gZWxzZSB7Ci0JCQlwaV9kYXRhLmNwdSA9IC0xOwotCQkJcGlfZGF0YS5nYV9sb2dfaW50ciA9IGVudHJ5ICZhbXA7IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfR0FfTE9HX0lOVFI7CiYjNDM7CQkJcG9zdGVkX2ludHIgPSAhIShlbnRyeSAmYW1wOyBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0dBX0xPR19JTlRSKTsKJiM0MzsJCQlwaV9kYXRhLmZsYWdzID0gcG9zdGVkX2ludHIgJmx0OyZsdDsgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFJfU0hJRlQ7CiYjNDM7CQkJaWYgKGFtZF9pb21tdV9nYXBwaSkgewomIzQzOwkJCQlwaV9kYXRhLmFwaWNpZCA9IGt2bV9jcHVfZ2V0X2FwaWNpZChzdm0tJmd0O2dhcHBpX2NwdSk7CiYjNDM7CQkJCWlmIChsaXN0X2VtcHR5KCZhbXA7c3ZtLSZndDtpcl9saXN0KSkgewomIzQzOwkJCQkJYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS0mZ3Q7Z2FwcGlfY3B1KTsKJiM0MzsJCQkJCWlzX3ZjcHVfd2FpdGluZyA9IHRydWU7CiYjNDM7CQkJCX0KJiM0MzsJCQl9CiAJCX0KIAogCQlyZXQgPSBpcnFfc2V0X3ZjcHVfYWZmaW5pdHkoaG9zdF9pcnEsICZhbXA7cGlfZGF0YSk7CiAJCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwomIzQzOwkJCWdvdG8gZ2FwcGlfZXJyX291dDsKIAogCQkvKgogCQkgKiBSZXZlcnQgdG8gbGVnYWN5IG1vZGUgaWYgdGhlIElPTU1VIGRpZG4mIzM5O3QgcHJvdmlkZSBtZXRhZGF0YQpAQCAtOTY2LDEyICYjNDM7MTAyNSwxNyBAQCBpbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSwKIAkJICovCiAJCWlmIChXQVJOX09OX09OQ0UoIXBpX2RhdGEuaXJfZGF0YSkpIHsKIAkJCWlycV9zZXRfdmNwdV9hZmZpbml0eShob3N0X2lycSwgTlVMTCk7Ci0JCQlyZXR1cm4gLUVJTzsKJiM0MzsJCQlyZXQgPSAtRUlPOwomIzQzOwkJCWdvdG8gZ2FwcGlfZXJyX291dDsKIAkJfQogCiAJCWlycWZkLSZndDtpcnFfYnlwYXNzX2RhdGEgPSBwaV9kYXRhLmlyX2RhdGE7CiAJCWxpc3RfYWRkKCZhbXA7aXJxZmQtJmd0O3ZjcHVfbGlzdCwgJmFtcDtzdm0tJmd0O2lyX2xpc3QpOwogCQlyZXR1cm4gMDsKJiM0MztnYXBwaV9lcnJfb3V0OgomIzQzOwkJaWYgKGlzX3ZjcHVfd2FpdGluZykKJiM0MzsJCQlhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tJmd0O2dhcHBpX2NwdSk7CiYjNDM7CQlyZXR1cm4gcmV0OwogCX0KIAlyZXR1cm4gaXJxX3NldF92Y3B1X2FmZmluaXR5KGhvc3RfaXJxLCBOVUxMKTsKIH0KQEAgLTEwMDQsMTAgJiM0MzsxMDY4LDE0IEBAIGVudW0gYXZpY192Y3B1X2FjdGlvbiB7CiAJQVZJQ19TVEFSVF9CTE9DS0lORwk9IEJJVCgxKSwKIH07CiAKLXN0YXRpYyB2b2lkIGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3B1LAotCQkJCQkgICAgZW51bSBhdmljX3ZjcHVfYWN0aW9uIGFjdGlvbikKJiM0MztzdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGFwaWNpZCwKJiM0MzsJCQkJCSAgICBpbnQgY3B1LCBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKQogewotCWJvb2wgZ2FfbG9nX2ludHIgPSAoYWN0aW9uICZhbXA7IEFWSUNfU1RBUlRfQkxPQ0tJTkcpOwomIzQzOwlpbnQgcG9zdGVkX2ludHIgPSAhIShhY3Rpb24gJmFtcDsgQVZJQ19TVEFSVF9CTE9DS0lORykgJmx0OyZsdDsKJiM0MzsJCQkgIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSX1NISUZUOwomIzQzOwlpbnQgaXNfdmNwdV9ydW5uaW5nID0gKGFwaWNpZCAmZ3Q7PSAwKSAmbHQ7Jmx0OwomIzQzOwkJCSAgICAgIEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklOR19TSElGVDsKJiM0MzsJaW50IGZsYWdzID0gcG9zdGVkX2ludHIgfCBpc192Y3B1X3J1bm5pbmc7CiAJc3RydWN0IHZjcHVfc3ZtICpzdm0gPSB0b19zdm0odmNwdSk7CiAJc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkOwogCkBAIC0xMDE3LDE2ICYjNDM7MTA4NSwzMCBAQCBzdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSwKIAkgKiBIZXJlLCB3ZSBnbyB0aHJvdWdoIHRoZSBwZXItdmNwdSBpcl9saXN0IHRvIHVwZGF0ZSBhbGwgZXhpc3RpbmcKIAkgKiBpbnRlcnJ1cHQgcmVtYXBwaW5nIHRhYmxlIGVudHJ5IHRhcmdldGluZyB0aGlzIHZjcHUuCiAJICovCi0JaWYgKGxpc3RfZW1wdHkoJmFtcDtzdm0tJmd0O2lyX2xpc3QpKQomIzQzOwlpZiAobGlzdF9lbXB0eSgmYW1wO3N2bS0mZ3Q7aXJfbGlzdCkpIHsKJiM0MzsJCWlmIChhbWRfaW9tbXVfZ2FwcGkgJmFtcDsmYW1wOyBjcHUgJmd0Oz0gMCkKJiM0MzsJCQlzdm0tJmd0O2dhcHBpX2NwdSA9IGNwdTsKIAkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChpc192Y3B1X3J1bm5pbmcgJmFtcDsmYW1wOyBhbWRfaW9tbXVfZ2FwcGkpIHsKJiM0MzsJCS8qIElGIGNvbmRpdGlvbiBoYW5kbGVzIHRoZSBpbml0aWFsIHN0YXRlICovCiYjNDM7CQlpZiAoc3ZtLSZndDtnYXBwaV9jcHUgIT0gLTEpCiYjNDM7CQkJYXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLSZndDtnYXBwaV9jcHUpOwomIzQzOwomIzQzOwkJc3ZtLSZndDtnYXBwaV9jcHUgPSBjcHU7IC8qIFN0b3JlIGNwdSBubyBhcyB0YXJnZXQgZm9yIEdBUFBJICovCiYjNDM7CX0gZWxzZSBpZiAoYW1kX2lvbW11X2dhcHBpKSB7CiYjNDM7CQlhcGljaWQgPSBrdm1fY3B1X2dldF9hcGljaWQoc3ZtLSZndDtnYXBwaV9jcHUpOwomIzQzOwkJYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS0mZ3Q7Z2FwcGlfY3B1KTsKJiM0MzsJfQogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShpcnFmZCwgJmFtcDtzdm0tJmd0O2lyX2xpc3QsIHZjcHVfbGlzdCkgewogCQl2b2lkICpkYXRhID0gaXJxZmQtJmd0O2lycV9ieXBhc3NfZGF0YTsKIAogCQlpZiAoIShhY3Rpb24gJmFtcDsgQVZJQ19UT0dHTEVfT05fT0ZGKSkKLQkJCVdBUk5fT05fT05DRShhbWRfaW9tbXVfdXBkYXRlX2dhKGRhdGEsIGNwdSwgZ2FfbG9nX2ludHIpKTsKLQkJZWxzZSBpZiAoY3B1ICZndDs9IDApCi0JCQlXQVJOX09OX09OQ0UoYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoZGF0YSwgY3B1LCBnYV9sb2dfaW50cikpOwomIzQzOwkJCVdBUk5fT05fT05DRShhbWRfaW9tbXVfdXBkYXRlX2dhKGRhdGEsIGFwaWNpZCwgZmxhZ3MpKTsKJiM0MzsJCWVsc2UgaWYgKGlzX3ZjcHVfcnVubmluZykKJiM0MzsJCQlXQVJOX09OX09OQ0UoYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoZGF0YSwgYXBpY2lkLCBmbGFncykpOwogCQllbHNlCiAJCQlXQVJOX09OX09OQ0UoYW1kX2lvbW11X2RlYWN0aXZhdGVfZ3Vlc3RfbW9kZShkYXRhKSk7CiAJfQpAQCAtMTA4MCw3ICYjNDM7MTE2Miw3IEBAIHN0YXRpYyB2b2lkIF9fYXZpY192Y3B1X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3B1LAogCiAJV1JJVEVfT05DRShrdm1fc3ZtLSZndDthdmljX3BoeXNpY2FsX2lkX3RhYmxlW3ZjcHUtJmd0O3ZjcHVfaWRdLCBlbnRyeSk7CiAKLQlhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIGhfcGh5c2ljYWxfaWQsIGFjdGlvbik7CiYjNDM7CWF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkodmNwdSwgaF9waHlzaWNhbF9pZCwgY3B1LCBhY3Rpb24pOwogCiAJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtzdm0tJmd0O2lyX2xpc3RfbG9jaywgZmxhZ3MpOwogfQpAQCAtMTEyMyw3ICYjNDM7MTIwNSw3IEBAIHN0YXRpYyB2b2lkIF9fYXZpY192Y3B1X3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGVudW0gYXZpY192Y3B1X2FjdGlvbiBhY3Rpb24pCiAJICovCiAJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZhbXA7c3ZtLSZndDtpcl9saXN0X2xvY2ssIGZsYWdzKTsKIAotCWF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkodmNwdSwgLTEsIGFjdGlvbik7CiYjNDM7CWF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkodmNwdSwgLTEsIC0xLCBhY3Rpb24pOwogCiAJV0FSTl9PTl9PTkNFKGVudHJ5ICZhbXA7IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfR0FfTE9HX0lOVFIpOwogCkBAIC0xMjk2LDYgJiM0MzsxMzc4LDIxIEBAIHN0YXRpYyBib29sIF9faW5pdCBhdmljX3dhbnRfYXZpY19lbmFibGVkKHZvaWQpCiAJcmV0dXJuIHRydWU7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyKHZvaWQpCiYjNDM7ewomIzQzOwlpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwomIzQzOwlzdHJ1Y3QgbGlzdF9oZWFkICp2Y3B1X3dha2V1cF9saXN0ID0gJmFtcDtwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIGNwdSk7CiYjNDM7CXJhd19zcGlubG9ja190ICpzcGlubG9jayA9ICZhbXA7cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7CiYjNDM7CXN0cnVjdCB2Y3B1X3N2bSAqc3ZtOwomIzQzOwomIzQzOwlyYXdfc3Bpbl9sb2NrKHNwaW5sb2NrKTsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShzdm0sIHZjcHVfd2FrZXVwX2xpc3QsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpIHsKJiM0MzsJCWlmIChrdm1fbGFwaWNfZmluZF9oaWdoZXN0X2lycigmYW1wO3N2bS0mZ3Q7dmNwdSkgJmd0Oz0gMCkKJiM0MzsJCQlrdm1fdmNwdV93YWtlX3VwKCZhbXA7c3ZtLSZndDt2Y3B1KTsKJiM0MzsJfQomIzQzOwlyYXdfc3Bpbl91bmxvY2soc3BpbmxvY2spOwomIzQzO30KJiM0MzsKIC8qCiAgKiBOb3RlOgogICogLSBUaGUgbW9kdWxlIHBhcmFtIGF2aWMgZW5hYmxlIGJvdGggeEFQSUMgYW5kIHgyQVBJQyBtb2RlLgpAQCAtMTMwNCwxMiAmIzQzOzE0MDEsMTggQEAgc3RhdGljIGJvb2wgX19pbml0IGF2aWNfd2FudF9hdmljX2VuYWJsZWQodm9pZCkKICAqLwogYm9vbCBfX2luaXQgYXZpY19oYXJkd2FyZV9zZXR1cCh2b2lkKQogewomIzQzOwlpbnQgY3B1OwogCWF2aWMgPSBhdmljX3dhbnRfYXZpY19lbmFibGVkKCk7CiAJaWYgKCFhdmljKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlwcl9pbmZvKCYjMzQ7QVZJQyBlbmFibGVkXG4mIzM0Oyk7CiAKJiM0MzsJZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkgewomIzQzOwkJSU5JVF9MSVNUX0hFQUQoJmFtcDtwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIGNwdSkpOwomIzQzOwkJcmF3X3NwaW5fbG9ja19pbml0KCZhbXA7cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSkpOwomIzQzOwl9CiYjNDM7CiAJLyogQVZJQyBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgeDJBVklDLiAqLwogCXgyYXZpY19lbmFibGVkID0gYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1gyQVZJQyk7CiAJaWYgKHgyYXZpY19lbmFibGVkKSB7CkBAIC0xMzMzLDYgJiM0MzsxNDM2LDcgQEAgYm9vbCBfX2luaXQgYXZpY19oYXJkd2FyZV9zZXR1cCh2b2lkKQogCQllbmFibGVfaXBpdiA9IGZhbHNlOwogCiAJYW1kX2lvbW11X3JlZ2lzdGVyX2dhX2xvZ19ub3RpZmllcigmYW1wO2F2aWNfZ2FfbG9nX25vdGlmaWVyKTsKJiM0MzsJa3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcigmYW1wO2F2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXIpOwogCiAJcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwppbmRleCBlMDJhMzhkYTUyOTZlMy4uYjY4NzEzM2Y4NTI4YmEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwpAQCAtMTM1Niw2ICYjNDM7MTM1Niw4IEBAIHN0YXRpYyB2b2lkIHN2bV92Y3B1X2ZyZWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiAJV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7c3ZtLSZndDtpcl9saXN0KSk7CiAKJiM0MzsJYXZpY19kZXN0cm95X3ZjcHUoc3ZtKTsKJiM0MzsKIAlzdm1fbGVhdmVfbmVzdGVkKHZjcHUpOwogCXN2bV9mcmVlX25lc3RlZChzdm0pOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uaAppbmRleCA1MTM3NDE2YmU1OTNkNy4uNDdkNWJiNWQ3MTAzZGEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uaApAQCAtMzYyLDYgJiM0MzszNjIsMTAgQEAgc3RydWN0IHZjcHVfc3ZtIHsKIAogCS8qIEd1ZXN0IEdJRiB2YWx1ZSwgdXNlZCB3aGVuIHZHSUYgaXMgbm90IGVuYWJsZWQgKi8KIAlib29sIGd1ZXN0X2dpZjsKJiM0MzsKJiM0MzsJLyogR0FQUEkgcmVsYXRlZCBmaWVsZHMgKi8KJiM0MzsJc3RydWN0IGxpc3RfaGVhZCBnYXBwaV92Y3B1X3dha2V1cF9saXN0OwomIzQzOwlpbnQgZ2FwcGlfY3B1OwogfTsKIAogc3RydWN0IHN2bV9jcHVfZGF0YSB7CkBAIC05MDksNiAmIzQzOzkxMyw3IEBAIHZvaWQgYXZpY19pbml0X3ZtY2Ioc3RydWN0IHZjcHVfc3ZtICpzdm0sIHN0cnVjdCB2bWNiICp2bWNiKTsKIGludCBhdmljX2luY29tcGxldGVfaXBpX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogaW50IGF2aWNfdW5hY2NlbGVyYXRlZF9hY2Nlc3NfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBpbnQgYXZpY19pbml0X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pOwomIzQzO3ZvaWQgYXZpY19kZXN0cm95X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pOwogdm9pZCBhdmljX3ZjcHVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUpOwogdm9pZCBhdmljX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2b2lkIGF2aWNfYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXUuaCBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdS5oCmluZGV4IDgzNGQ4ZmFiZmJhMzg3Li4wNDQxNzljYWIxMmU0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmgKQEAgLTQxLDYgJiM0Mzs0MSw3IEBAIGludCBhbWRfaW9tbXVfZW5hYmxlKHZvaWQpOwogdm9pZCBhbWRfaW9tbXVfZGlzYWJsZSh2b2lkKTsKIGludCBhbWRfaW9tbXVfcmVlbmFibGUoaW50IG1vZGUpOwogaW50IGFtZF9pb21tdV9lbmFibGVfZmF1bHRpbmcodW5zaWduZWQgaW50IGNwdSk7CiYjNDM7ZXh0ZXJuIGJvb2wgYW1kX2lvbW11X2dhcHBpOwogZXh0ZXJuIGludCBhbWRfaW9tbXVfZ3Vlc3RfaXI7CiBleHRlcm4gZW51bSBwcm90ZWN0aW9uX2RvbWFpbl9tb2RlIGFtZF9pb21tdV9wZ3RhYmxlOwogZXh0ZXJuIGludCBhbWRfaW9tbXVfZ3B0X2xldmVsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11X3R5cGVzLmggYi9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaAppbmRleCBmOWY3MTgwODc4OTMwMy4uZGUwYjIzMzA2OTQ0YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdV90eXBlcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdV90eXBlcy5oCkBAIC05NCw2ICYjNDM7OTQsNyBAQAogI2RlZmluZSBGRUFUVVJFX1gyQVBJQwkJQklUX1VMTCgyKQogI2RlZmluZSBGRUFUVVJFX05YCQlCSVRfVUxMKDMpCiAjZGVmaW5lIEZFQVRVUkVfR1QJCUJJVF9VTEwoNCkKJiM0MzsjZGVmaW5lIEZFQVRVUkVfR0FQUEkJCUJJVF9VTEwoNSkKICNkZWZpbmUgRkVBVFVSRV9JQQkJQklUX1VMTCg2KQogI2RlZmluZSBGRUFUVVJFX0dBCQlCSVRfVUxMKDcpCiAjZGVmaW5lIEZFQVRVUkVfSEUJCUJJVF9VTEwoOCkKQEAgLTExMyw2ICYjNDM7MTE0LDcgQEAKIC8qIEV4dGVuZGVkIEZlYXR1cmUgMiBCaXRzICovCiAjZGVmaW5lIEZFQVRVUkVfU0VWU05QSU9fU1VQCUJJVF9VTEwoMSkKICNkZWZpbmUgRkVBVFVSRV9HQ1IzVFJQTU9ERQlCSVRfVUxMKDMpCiYjNDM7I2RlZmluZSBGRUFUVVJFX0dBUFBJRElTU1VQCUJJVF9VTEwoNCkKICNkZWZpbmUgRkVBVFVSRV9TTlBBVklDU1VQCUdFTk1BU0tfVUxMKDcsIDUpCiAjZGVmaW5lIEZFQVRVUkVfU05QQVZJQ1NVUF9HQU0oeCkgXAogCShGSUVMRF9HRVQoRkVBVFVSRV9TTlBBVklDU1VQLCB4KSA9PSAweDEpCkBAIC0xOTAsNiAmIzQzOzE5Miw3IEBACiAjZGVmaW5lIENPTlRST0xfRVBIX0VOCQk0NQogI2RlZmluZSBDT05UUk9MX1hUX0VOCQk1MAogI2RlZmluZSBDT05UUk9MX0lOVENBUFhUX0VOCTUxCiYjNDM7I2RlZmluZSBDT05UUk9MX0dBUFBJX0VOCTU1CiAjZGVmaW5lIENPTlRST0xfR0NSM1RSUE1PREUJNTgKICNkZWZpbmUgQ09OVFJPTF9JUlRDQUNIRURJUwk1OQogI2RlZmluZSBDT05UUk9MX1NOUEFWSUNfRU4JNjEKQEAgLTEwMDQsNyAmIzQzOzEwMDcsOCBAQCB1bmlvbiBpcnRlX2dhX2xvIHsKIAkJICAgIG5vX2ZhdWx0CTogMSwKIAkJICAgIC8qIC0tLS0tLSAqLwogCQkgICAgZ2FfbG9nX2ludHIJOiAxLAotCQkgICAgcnN2ZDEJOiAzLAomIzQzOwkJICAgIHJzdmQxCTogMiwKJiM0MzsJCSAgICBnYXBwaV9kaXMJOiAxLAogCQkgICAgaXNfcnVuCTogMSwKIAkJICAgIC8qIC0tLS0tLSAqLwogCQkgICAgZ3Vlc3RfbW9kZQk6IDEsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmMgYi9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmMKaW5kZXggM2JkYjM4MGQyM2U5YTkuLmIzZTFkOGVlN2U5ZDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pb21tdS9hbWQvaW5pdC5jCkBAIC0xNjAsNiAmIzQzOzE2MCw5IEBAIHU4IGFtZF9pb21tdV9ocHRfbGV2ZWw7CiAvKiBHdWVzdCBwYWdlIHRhYmxlIGxldmVsICovCiBpbnQgYW1kX2lvbW11X2dwdF9sZXZlbCA9IFBBR0VfTU9ERV80X0xFVkVMOwogCiYjNDM7Ym9vbCBhbWRfaW9tbXVfZ2FwcGk7CiYjNDM7RVhQT1JUX1NZTUJPTChhbWRfaW9tbXVfZ2FwcGkpOwomIzQzOwogaW50IGFtZF9pb21tdV9ndWVzdF9pciA9IEFNRF9JT01NVV9HVUVTVF9JUl9WQVBJQzsKIHN0YXRpYyBpbnQgYW1kX2lvbW11X3h0X21vZGUgPSBJUlFfUkVNQVBfWEFQSUNfTU9ERTsKIApAQCAtMzAzNSwxMSAmIzQzOzMwMzgsMjAgQEAgc3RhdGljIHZvaWQgZW5hYmxlX2lvbW11c192YXBpYyh2b2lkKQogCQlyZXR1cm47CiAJfQogCiYjNDM7CWlmIChhbWRfaW9tbXVfZ2FwcGkgJmFtcDsmYW1wOwomIzQzOwkgICAgIShjaGVja19mZWF0dXJlKEZFQVRVUkVfR0FQUEkpICZhbXA7JmFtcDsKJiM0MzsJICAgICAgQU1EX0lPTU1VX0dVRVNUX0lSX1ZBUElDKGFtZF9pb21tdV9ndWVzdF9pcikpKSB7CiYjNDM7CQlwcl93YXJuKCYjMzQ7R0FQUEkgaXMgbm90IHN1cHBvcnRlZC5cbiYjMzQ7KTsKJiM0MzsJCWFtZF9pb21tdV9nYXBwaSA9IGZhbHNlOwomIzQzOwl9CiYjNDM7CiAJLyogRW5hYmxpbmcgR0FNIGFuZCBTTlBBVklDIHN1cHBvcnQgKi8KIAlmb3JfZWFjaF9pb21tdShpb21tdSkgewotCQlpZiAoaW9tbXVfaW5pdF9nYV9sb2coaW9tbXUpIHx8Ci0JCSAgICBpb21tdV9nYV9sb2dfZW5hYmxlKGlvbW11KSkKLQkJCXJldHVybjsKJiM0MzsJCWlmIChhbWRfaW9tbXVfZ2FwcGkpCiYjNDM7CQkJaW9tbXVfZmVhdHVyZV9lbmFibGUoaW9tbXUsIENPTlRST0xfR0FQUElfRU4pOwomIzQzOwkJZWxzZSBpZiAoaW9tbXVfaW5pdF9nYV9sb2coaW9tbXUpIHx8CiYjNDM7CQkJIGlvbW11X2dhX2xvZ19lbmFibGUoaW9tbXUpKQomIzQzOwkJCSByZXR1cm47CiAKIAkJaW9tbXVfZmVhdHVyZV9lbmFibGUoaW9tbXUsIENPTlRST0xfR0FNX0VOKTsKIAkJaWYgKGFtZF9pb21tdV9zbnBfZW4pCkBAIC0zMDQ3LDcgJiM0MzszMDU5LDggQEAgc3RhdGljIHZvaWQgZW5hYmxlX2lvbW11c192YXBpYyh2b2lkKQogCX0KIAogCWFtZF9pb21tdV9pcnFfb3BzLmNhcGFiaWxpdHkgfD0gKDEgJmx0OyZsdDsgSVJRX1BPU1RJTkdfQ0FQKTsKLQlwcl9pbmZvKCYjMzQ7VmlydHVhbCBBUElDIGVuYWJsZWRcbiYjMzQ7KTsKJiM0MzsJcHJfaW5mbygmIzM0O1ZpcnR1YWwgQVBJQyBlbmFibGVkIHdpdGggJXNcbiYjMzQ7LAomIzQzOwkJYW1kX2lvbW11X2dhcHBpID8gJiMzNDtHQVBQSSYjMzQ7IDogJiMzNDtHQUxPRyYjMzQ7KTsKICNlbmRpZgogfQogCkBAIC0zNzM4LDYgJiM0MzszNzUxLDggQEAgc3RhdGljIGludCBfX2luaXQgcGFyc2VfYW1kX2lvbW11X29wdGlvbnMoY2hhciAqc3RyKQogCQl9IGVsc2UgaWYgKHN0cm5jbXAoc3RyLCAmIzM0O3YyX3Bnc2l6ZXNfb25seSYjMzQ7LCAxNSkgPT0gMCkgewogCQkJcHJfaW5mbygmIzM0O1Jlc3RyaWN0aW5nIFYxIHBhZ2Utc2l6ZXMgdG8gNEtpQi8yTWlCLzFHaUImIzM0Oyk7CiAJCQlhbWRfaW9tbXVfcGdzaXplX2JpdG1hcCA9IEFNRF9JT01NVV9QR1NJWkVTX1YyOwomIzQzOwkJfSBlbHNlIGlmIChzdHJuY21wKHN0ciwgJiMzNDtnYXBwaSYjMzQ7LCA1KSA9PSAwKSB7CiYjNDM7CQkJYW1kX2lvbW11X2dhcHBpID0gdHJ1ZTsKIAkJfSBlbHNlIHsKIAkJCXByX25vdGljZSgmIzM0O1Vua25vd24gb3B0aW9uIC0gJiMzOTslcyYjMzk7XG4mIzM0Oywgc3RyKTsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvaW9tbXUuYyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmMKaW5kZXggNTdkYzhmYWJjN2Q5YjkuLjQ2OTBjZWNjOWFhN2U0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pb21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmMKQEAgLTM5NTksMTkgJiM0MzszOTU5LDI4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgYW1kX2lyX2RvbWFpbl9vcHMgPSB7CiAJLmRlYWN0aXZhdGUgPSBpcnFfcmVtYXBwaW5nX2RlYWN0aXZhdGUsCiB9OwogCi1zdGF0aWMgdm9pZCBfX2FtZF9pb21tdV91cGRhdGVfZ2Eoc3RydWN0IGlydGVfZ2EgKmVudHJ5LCBpbnQgY3B1LAotCQkJCSAgYm9vbCBnYV9sb2dfaW50cikKJiM0MztzdGF0aWMgdm9pZCBfX2FtZF9pb21tdV91cGRhdGVfZ2Eoc3RydWN0IGlydGVfZ2EgKmVudHJ5LCBpbnQgYXBpY2lkLCBpbnQgZmxhZ3MpCiB7Ci0JaWYgKGNwdSAmZ3Q7PSAwKSB7CiYjNDM7CWlmIChmbGFncyAmYW1wOyBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkcpIHsKIAkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5kZXN0aW5hdGlvbiA9Ci0JCQkJCUFQSUNJRF9UT19JUlRFX0RFU1RfTE8oY3B1KTsKJiM0MzsJCQkJCUFQSUNJRF9UT19JUlRFX0RFU1RfTE8oYXBpY2lkKTsKIAkJZW50cnktJmd0O2hpLmZpZWxkcy5kZXN0aW5hdGlvbiA9Ci0JCQkJCUFQSUNJRF9UT19JUlRFX0RFU1RfSEkoY3B1KTsKJiM0MzsJCQkJCUFQSUNJRF9UT19JUlRFX0RFU1RfSEkoYXBpY2lkKTsKIAkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5pc19ydW4gPSB0cnVlOwogCQllbnRyeS0mZ3Q7bG8uZmllbGRzX3ZhcGljLmdhX2xvZ19pbnRyID0gZmFsc2U7CiAJfSBlbHNlIHsKLQkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTsKLQkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5nYV9sb2dfaW50ciA9IGdhX2xvZ19pbnRyOwomIzQzOwkJYm9vbCBwb3N0ZWRfaW50ciA9ICEhKGZsYWdzICZhbXA7IEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSKTsKJiM0MzsJCWlmIChhbWRfaW9tbXVfZ2FwcGkpIHsKJiM0MzsJCQllbnRyeS0mZ3Q7bG8uZmllbGRzX3ZhcGljLmdhcHBpX2RpcyA9ICFwb3N0ZWRfaW50ciAmYW1wOyZhbXA7CiYjNDM7CQkJCQkJCSAgIGNoZWNrX2ZlYXR1cmUyKEZFQVRVUkVfR0FQUElESVNTVVApOwomIzQzOwkJCWVudHJ5LSZndDtsby5maWVsZHNfdmFwaWMuaXNfcnVuID0gZmFsc2U7CiYjNDM7CQkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5kZXN0aW5hdGlvbiA9CiYjNDM7CQkJCQkJQVBJQ0lEX1RPX0lSVEVfREVTVF9MTyhhcGljaWQpOwomIzQzOwkJCWVudHJ5LSZndDtoaS5maWVsZHMuZGVzdGluYXRpb24gPSBBUElDSURfVE9fSVJURV9ERVNUX0hJKGFwaWNpZCk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJ5LSZndDtsby5maWVsZHNfdmFwaWMuaXNfcnVuID0gZmFsc2U7CiYjNDM7CQkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5nYV9sb2dfaW50ciA9IHBvc3RlZF9pbnRyOwomIzQzOwkJfQogCX0KIH0KIApAQCAtMzk5Miw3ICYjNDM7NDAwMSw3IEBAIHN0YXRpYyB2b2lkIF9fYW1kX2lvbW11X3VwZGF0ZV9nYShzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnksIGludCBjcHUsCiAgKiBhbmQgdGh1cyBkb24mIzM5O3QgcmVxdWlyZSBhbiBpbnZhbGlkYXRpb24gdG8gZW5zdXJlIHRoZSBJT01NVSBjb25zdW1lcyBmcmVzaAogICogaW5mb3JtYXRpb24uCiAgKi8KLWludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpCiYjNDM7aW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKQogewogCXN0cnVjdCBhbWRfaXJfZGF0YSAqaXJfZGF0YSA9IChzdHJ1Y3QgYW1kX2lyX2RhdGEgKilkYXRhOwogCXN0cnVjdCBpcnRlX2dhICplbnRyeSA9IChzdHJ1Y3QgaXJ0ZV9nYSAqKSBpcl9kYXRhLSZndDtlbnRyeTsKQEAgLTQwMDYsMTQgJiM0Mzs0MDE1LDE0IEBAIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpCiAJaWYgKCFpcl9kYXRhLSZndDtpb21tdSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKLQlfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGNwdSwgZ2FfbG9nX2ludHIpOwomIzQzOwlfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGFwaWNpZCwgZmxhZ3MpOwogCiAJcmV0dXJuIF9fbW9kaWZ5X2lydGVfZ2EoaXJfZGF0YS0mZ3Q7aW9tbXUsIGlyX2RhdGEtJmd0O2lycV8yX2lydGUuZGV2aWQsCiAJCQkJaXJfZGF0YS0mZ3Q7aXJxXzJfaXJ0ZS5pbmRleCwgZW50cnkpOwogfQogRVhQT1JUX1NZTUJPTChhbWRfaW9tbXVfdXBkYXRlX2dhKTsKIAotaW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpCiYjNDM7aW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncykKIHsKIAlzdHJ1Y3QgYW1kX2lyX2RhdGEgKmlyX2RhdGEgPSAoc3RydWN0IGFtZF9pcl9kYXRhICopZGF0YTsKIAlzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnkgPSAoc3RydWN0IGlydGVfZ2EgKikgaXJfZGF0YS0mZ3Q7ZW50cnk7CkBAIC00MDM0LDkgJiM0Mzs0MDQzLDEzIEBAIGludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKQogCWVudHJ5LSZndDtsby5maWVsZHNfdmFwaWMuZ3Vlc3RfbW9kZSAgPSAxOwogCWVudHJ5LSZndDtoaS5maWVsZHMuZ2Ffcm9vdF9wdHIgICAgICAgPSBpcl9kYXRhLSZndDtnYV9yb290X3B0cjsKIAllbnRyeS0mZ3Q7aGkuZmllbGRzLnZlY3RvciAgICAgICAgICAgID0gaXJfZGF0YS0mZ3Q7Z2FfdmVjdG9yOwotCWVudHJ5LSZndDtsby5maWVsZHNfdmFwaWMuZ2FfdGFnICAgICAgPSBpcl9kYXRhLSZndDtnYV90YWc7CiAKLQlfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGNwdSwgZ2FfbG9nX2ludHIpOwomIzQzOwlpZiAoYW1kX2lvbW11X2dhcHBpKQomIzQzOwkJZW50cnktJmd0O2xvLmZpZWxkc192YXBpYy5nYV90YWcgPSBQT1NURURfSU5UUl9XQUtFVVBfVkVDVE9SOwomIzQzOwllbHNlCiYjNDM7CQllbnRyeS0mZ3Q7bG8uZmllbGRzX3ZhcGljLmdhX3RhZyA9IGlyX2RhdGEtJmd0O2dhX3RhZzsKJiM0MzsKJiM0MzsJX19hbWRfaW9tbXVfdXBkYXRlX2dhKGVudHJ5LCBhcGljaWQsIGZsYWdzKTsKIAogCXJldHVybiBtb2RpZnlfaXJ0ZV9nYShpcl9kYXRhLSZndDtpb21tdSwgaXJfZGF0YS0mZ3Q7aXJxXzJfaXJ0ZS5kZXZpZCwKIAkJCSAgICAgIGlyX2RhdGEtJmd0O2lycV8yX2lydGUuaW5kZXgsIGVudHJ5KTsKQEAgLTQxMDcsOCAmIzQzOzQxMjAsOCBAQCBzdGF0aWMgaW50IGFtZF9pcl9zZXRfdmNwdV9hZmZpbml0eShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEsIHZvaWQgKmluZm8pCiAJCWlyX2RhdGEtJmd0O2dhX3ZlY3RvciA9IHBpX2RhdGEtJmd0O3ZlY3RvcjsKIAkJaXJfZGF0YS0mZ3Q7Z2FfdGFnID0gcGlfZGF0YS0mZ3Q7Z2FfdGFnOwogCQlpZiAocGlfZGF0YS0mZ3Q7aXNfZ3Vlc3RfbW9kZSkKLQkJCXJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtJmd0O2NwdSwKLQkJCQkJCQkgICAgcGlfZGF0YS0mZ3Q7Z2FfbG9nX2ludHIpOwomIzQzOwkJCXJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtJmd0O2FwaWNpZCwKJiM0MzsJCQkJCQkJICAgIHBpX2RhdGEtJmd0O2ZsYWdzKTsKIAkJZWxzZQogCQkJcmV0ID0gYW1kX2lvbW11X2RlYWN0aXZhdGVfZ3Vlc3RfbW9kZShpcl9kYXRhKTsKIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9hbWQtaW9tbXUuaCBiL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmgKaW5kZXggZWRjZWU5ZjUzMzVhNmYuLjg3ZTc2ZjYxN2VhMTg1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmgKQEAgLTMwLDggJiM0MzszMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbWRfaW9tbXVfZGV0ZWN0KHZvaWQpIHsgfQogLyogSU9NTVUgQVZJQyBGdW5jdGlvbiAqLwogZXh0ZXJuIGludCBhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKGludCAoKm5vdGlmaWVyKSh1MzIpKTsKIAotZXh0ZXJuIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpOwotZXh0ZXJuIGludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKTsKJiM0MztleHRlcm4gaW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKTsKJiM0MztleHRlcm4gaW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncyk7CiBleHRlcm4gaW50IGFtZF9pb21tdV9kZWFjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSk7CiAKICNlbHNlIC8qIGRlZmluZWQoQ09ORklHX0FNRF9JT01NVSkgJmFtcDsmYW1wOyBkZWZpbmVkKENPTkZJR19JUlFfUkVNQVApICovCkBAIC00MiwxMiAmIzQzOzQyLDEyIEBAIGFtZF9pb21tdV9yZWdpc3Rlcl9nYV9sb2dfbm90aWZpZXIoaW50ICgqbm90aWZpZXIpKHUzMikpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cikKJiM0MztzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncykKIHsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cikKJiM0MztzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgYXBpY2lkLCBpbnQgZmxhZ3MpCiB7CiAJcmV0dXJuIDA7CiB9CkBAIC03Niw0ICYjNDM7NzYsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X3NucF9kaXNhYmxlKHZvaWQpIHsgcmV0dXJuIDA7IH0KIHN0YXRpYyBpbmxpbmUgYm9vbCBhbWRfaW9tbXVfc2V2X3Rpb19zdXBwb3J0ZWQodm9pZCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiYjNDM7I2RlZmluZSBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkdfU0hJRlQgMAomIzQzOyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfVkNQVV9SVU5OSU5HICBCSVQoMCkKJiM0MzsKJiM0MzsjZGVmaW5lIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSX1NISUZUIDEKJiM0MzsjZGVmaW5lIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSICBCSVQoMSkKJiM0MzsKJiM0MztleHRlcm4gYm9vbCBhbWRfaW9tbXVfZ2FwcGk7CiAjZW5kaWYgLyogX0FTTV9YODZfQU1EX0lPTU1VX0ggKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzOTgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgRXZhbHVhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgbmVlZCB0byBhc3Nlc3MgaWYgaXQgaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIGZpbGVzIG1vZGlmaWVkIOKAkyBgYXJjaC94ODYva3ZtL3N2bS9hdmljLmNgLCBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AsIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oYCwgYWxvbmcgd2l0aCBzb21lIElPTU1VIGZpbGVzIChgZHJpdmVycy9pb21tdS9hbWQvKmAgYW5kIGBpbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oYCkg4oCTIGltbWVkaWF0ZWx5IGNsdWUgbWUgaW4uIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBHdWVzdCBBUElDIFBvc3RlZCBJbnRlcnJ1cHRzIChHQVBQSSkgc3VwcG9ydCB3aXRoaW4gdGhlIEFNRCBJT01NVSBhbmQgS1ZNIFNWTSBBVklDLiBUaGlzIHNjcmVhbXMgJiMzNDt2aXJ0dWFsaXphdGlvbiYjMzQ7IGFuZCAmIzM0O0lPTU1VLCYjMzQ7IHNvIGl0JiMzOTtzIGEgaGlnaC1wcm9iYWJpbGl0eSB0YXJnZXQuCgpUaGUgbmV4dCBxdWVzdGlvbjogSXMgdGhpcyByZWFjaGFibGUgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQ/IENhbiB3ZSB0cmlnZ2VyIHRoaXMgaW4gc29tZXRoaW5nIGxpa2UgR0NFIG9yIFFFTVU/IEFic29sdXRlbHkuIEtWTSBTVk0g4oCTIEFNRCYjMzk7cyB2aXJ0dWFsaXphdGlvbiDigJMgY2FuIGRlZmluaXRlbHkgYmUgdGVzdGVkIHdpdGggbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBsaWtlIHJ1bm5pbmcgUUVNVSAqd2l0aCogS1ZNLCBvciBldmVuIHdpdGhpbiBHQ0UgaW5zdGFuY2VzIHRoYXQgaGF2ZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW5hYmxlZC4gR29vZCBuZXdzIOKAkyBzeXprYWxsZXIsIHdoaWNoIHdlJiMzOTtyZSB1c2luZywgZG9lcyBydW4gaW4gUUVNVS9HQ0UsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IGNhcGFibGUgb2YgZnV6emluZyBLVk0uIFRoaXMgcGF0Y2ggY2xlYXJseSB0b3VjaGVzIEtWTSBTVk0gYW5kIHRoZSBBTUQgSU9NTVUsIHNvIHRoYXQmIzM5O3MgdHdvIHNlcGFyYXRlIGFyZWFzIHRoYXQgbmVlZCBjaGVja2luZy4KCkhvbGQgb24sIGBhbWRfaW9tbXVfZ2FwcGlgIOKAkyB0aGF0JiMzOTtzIGEgKm5ldyogZmVhdHVyZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgbmVlZGVkLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gdGhpbmtpbmcgYEtWTV9BTURgIGFuZCBgQU1EX0lPTU1VYCBhcmUgdGhlIG9idmlvdXMgY2FuZGlkYXRlcy4gVGltZSB0byBicmVhayBvdXQgYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIHRob3NlIGNvbmZpZyBzeW1ib2xzLiBMZXQmIzM5O3MgZmluZCBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk1fQU1EJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNzEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyB0aGUgYEFNRF9JT01NVWAgY29uZmlndXJhdGlvbjoKCioqQW5hbHl6aW5nIEFNRF9JT01NVSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IHRvIGl0LiBGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgQU1EX0lPTU1VYCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGNydWNpYWwgZm9yIG1hbmFnaW5nIEkvTyBkZXZpY2VzLCBwYXJ0aWN1bGFybHkgaW4gZW52aXJvbm1lbnRzIHdoZXJlIHZpcnR1YWxpemF0aW9uIG9yIGFkdmFuY2VkIGhhcmR3YXJlIGZlYXR1cmVzIGFyZSBpbiBwbGF5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3Mgc2V0IHVwIHRvIGVuc3VyZSBwcm9wZXIgZGV2aWNlIGlzb2xhdGlvbiBhbmQgcGVyZm9ybWFuY2UuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBzcGVjaWZpYyByZWdpc3RlcnMgb3IgY29uZmlndXJhdGlvbiBmaWxlcywgZGVwZW5kaW5nIG9uIHRoZSBzeXN0ZW0gYW5kIGtlcm5lbCB2ZXJzaW9uLCBidXQgdGhlIG9iamVjdGl2ZSByZW1haW5zIHRoZSBzYW1lOiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGN1cnJlbnQgc3RhdGUgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgbWlzY29uZmlndXJhdGlvbnMuIERlcGVuZGluZyBvbiB3aGF0IEkgZmluZCwgSSBtYXkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgc3BlY2lmaWMgQU1EIGNoaXBzZXQgSSYjMzk7bSBkZWFsaW5nIHdpdGguIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBTURfSU9NTVUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0yLSMgQU1EIElPTU1VIHN1cHBvcnRcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6Mzpjb25maWcgQU1EX0lPTU1VXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQtXHRib29sIFwmIzM0O0FNRCBJT01NVSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0zMi1cbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6MzM6Y29uZmlnIEFNRF9JT01NVV9JT01NVUZEXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtFbmFibGUgSU9NTVVGRCBmZWF0dXJlcyBmb3IgQU1EIElPTU1VIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy00Mi1cbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6NDM6Y29uZmlnIEFNRF9JT01NVV9ERUJVR0ZTXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQ0LVx0Ym9vbCBcJiMzNDtFbmFibGUgQU1EIElPTU1VIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4MDcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBTUQgSU9NTVUgR0FQUEkgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBhbWRfaW9tbXVfZ2FwcGlgIGFjdGl2YXRlZCBieSB0aGUgYGFtZF9pb21tdT1nYXBwaWAgYm9vdCBwYXJhbWV0ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtjYW4gdGhpcyBiZSBmdXp6ZWQ/JiMzNDsgVGhlIGFuc3dlciBpcyAqbWF5YmUqLiBTeXprYWxsZXIgd29uJiMzOTt0IHBpY2sgdGhpcyB1cCBvbiBpdHMgb3duIHVubGVzcyBleHBsaWNpdGx5IGluc3RydWN0ZWQsIG1lYW5pbmcgaXQmIzM5O3MgZGVwZW5kZW50IG9uIHRoZSBib290IHBhcmFtZXRlciBiZWluZyBwYXNzZWQuIEhvd2V2ZXIsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgIGFuZCBgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVgIHdoaWNoIGFyZSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIHJlZ2FyZGxlc3MsIHNvIHRoZXJlIGlzIGNlcnRhaW5seSBhIHdheSBpbi4KCkJ1dCB0aGVuLCBob2xkIG9uIGEgc2Vjb25kLiBJdCBhbHNvIGFkZHMgYGF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXJgIGFuZCBhIGNhbGwgdG8gYGt2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXJgIHdpdGggaXQuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmchIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGBrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyYCBpcyBldmVuIGEgdGhpbmcuLi4gbGV0JiMzOTtzIGNoZWNrIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvaW5jbHVkZS9hc20vaXJxLmg9MzA9ZXh0ZXJuIHZvaWQgZml4dXBfaXJxcyh2b2lkKTtcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnEuaC0zMi0jaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxuYXJjaC94ODYvaW5jbHVkZS9hc20vaXJxLmg6MzM6ZXh0ZXJuIHZvaWQga3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcih2b2lkICgqaGFuZGxlcikodm9pZCkpO1xuYXJjaC94ODYvaW5jbHVkZS9hc20vaXJxLmgtMzQtI2VuZGlmXG4tLVxuYXJjaC94ODYva2VybmVsL2lycS5jPTM3Mz1zdGF0aWMgdm9pZCAoKmt2bV9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcikodm9pZCkgPSBkdW1teV9oYW5kbGVyO1xuYXJjaC94ODYva2VybmVsL2lycS5jLTM3NC1cbmFyY2gveDg2L2tlcm5lbC9pcnEuYzozNzU6dm9pZCBrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyKHZvaWQgKCpoYW5kbGVyKSh2b2lkKSlcbmFyY2gveDg2L2tlcm5lbC9pcnEuYy0zNzYte1xuLS1cbmFyY2gveDg2L2tlcm5lbC9pcnEuYy0zODMtfVxuYXJjaC94ODYva2VybmVsL2lycS5jOjM4NDpFWFBPUlRfU1lNQk9MX0ZPUl9LVk0oa3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcik7XG5hcmNoL3g4Ni9rZXJuZWwvaXJxLmMtMzg1LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jPTE0MDI9Ym9vbCBfX2luaXQgYXZpY19oYXJkd2FyZV9zZXR1cCh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTE0MzgtXHRhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKFx1MDAyNmF2aWNfZ2FfbG9nX25vdGlmaWVyKTtcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjE0Mzk6XHRrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyKFx1MDAyNmF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXIpO1xuYXJjaC94ODYva3ZtL3N2bS9hdmljLmMtMTQ0MC1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg0NzY9dm9pZCB2bXhfaGFyZHdhcmVfdW5zZXR1cCh2b2lkKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDc3LXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6ODQ3ODpcdGt2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXIoTlVMTCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg0NzktXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz04NTk4PV9faW5pdCBpbnQgdm14X2hhcmR3YXJlX3NldHVwKHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NzgyLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4NzgzOlx0a3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcihwaV93YWtldXBfaGFuZGxlcik7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg3ODQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwMDQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHQVBQSSBTdXBwb3J0IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgR0FQUEkgc3VwcG9ydC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBjaGFuZ2VzIGFuZCBzZWUgaG93IHRoZXkgYXJlIGltcGxlbWVudGVkLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIHNldmVyYWwga2V5IGZ1bmN0aW9uczogYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgLCBgYXZpY19waV91cGRhdGVfaXJ0ZWAsIGBhbWRfaW9tbXVfdXBkYXRlX2dhYCwgYW5kIGBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZWAuIFRoZXNlIGFyZSBhbGwgZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zLCBzbyBpdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGRldGFpbGVkIHJldmlldy4KCk5vdywgYSBrZXkgcXVlc3Rpb24gaXMgcmVhY2hhYmlsaXR5IOKAkyBjYW4gdGhpcyBuZXcgY29kZSBhY3R1YWxseSBiZSB0cmlnZ2VyZWQgaW4gYSByZWFsLXdvcmxkIHNjZW5hcmlvPyBDb25zaWRlcmluZyB0aGlzIGlzIEtWTS9TVk0vQVZJQyByZWxhdGVkLCBpdCBzaG91bGQgYmUgcmVhY2hhYmxlIHdoZW4gcnVubmluZyBuZXN0ZWQgS1ZNIG9uIEFNRCBoYXJkd2FyZSwgd2hpY2ggaW5jcmVhc2VzIG15IGNvbmZpZGVuY2UuIEFuZCwgYmVjYXVzZSBzeXprYWxsZXIgZnV6emVzIEtWTSwgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgcG90ZW50aWFsIHRhcmdldCBmb3IgZnV6emluZywgYW5kIHNvIEkgc2hvdWxkIGV4dHJhY3QgYSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZXNlIHN5bWJvbHMgZm9yIGNsb3NlciBleGFtaW5hdGlvbjogYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgLCBgYXZpY19waV91cGRhdGVfaXJ0ZWAsIGBhbWRfaW9tbXVfdXBkYXRlX2dhYCwgYGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlYCwgYGF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3RgLCBgYXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0YCwgYW5kIGBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyYC4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgc2NvcGUgb2YgdGhlc2UgZnVuY3Rpb25zLCB0aGlzIGlzIGltcG9ydGFudC4gSXQgbG9va3MgbGlrZSBgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eWAsIGBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0YCwgYGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdGAgYW5kIGBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyYCBhcmUgc3RhdGljLiBgYXZpY19waV91cGRhdGVfaXJ0ZWAgaXMgbm90IHN0YXRpYy4gYGFtZF9pb21tdV91cGRhdGVfZ2FgIGFuZCBgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVgIGFyZSBleHBvcnRlZCwgd2hpY2ggY291bGQgaGF2ZSBpbXBsaWNhdGlvbnMgZm9yIGhvdyB0aGV5IGFyZSB1c2VkIGFuZCBwb3RlbnRpYWxseSBleHBsb2l0ZWQuIEtub3dpbmcgd2hpY2ggZnVuY3Rpb25zIGFyZSBzdGF0aWMgaGVscHMgZGV0ZXJtaW5lIGhvdyBlYXNpbHkgdGhleSBjYW4gYmUgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4KClRoZXJlZm9yZSwgZm9yIGZ1cnRoZXIgYW5hbHlzaXMsIG15IGZvY3VzIGxpc3Qgd2lsbCBiZTogYGF2aWNfcGlfdXBkYXRlX2lydGVgLCBgYW1kX2lvbW11X3VwZGF0ZV9nYWAsIGBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZWAsIGBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5YCwgYGF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3RgLCBgYXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0YCBhbmQgYGF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXJgLgoKRmluYWxseSwgY29uZmlndXJhdGlvbiBpcyBpbXBvcnRhbnQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBLVk1fQU1EYCwgYEFNRF9JT01NVWAsIGFuZCBgSVJRX1JFTUFQYCBhcmUgZW5hYmxlZCBvciwgaWYgbm90LCBpZiB0aGV5IG5lZWQgdG8gYmUuIGBJUlFfUkVNQVBgIGlzIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQsIGJ1dCBpdCYjMzk7cyB3b3J0aCBkb3VibGUtY2hlY2tpbmcgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgc2V0IHVwIGNvcnJlY3RseSBmb3IgdGhpcyBHQVBQSSBzdXBwb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVJRX1JFTUFQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvS2NvbmZpZz0xOTk9c291cmNlIFwmIzM0O2RyaXZlcnMvaW9tbXUvcmlzY3YvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9pb21tdS9LY29uZmlnLTIwMC1cbmRyaXZlcnMvaW9tbXUvS2NvbmZpZzoyMDE6Y29uZmlnIElSUV9SRU1BUFxuZHJpdmVycy9pb21tdS9LY29uZmlnLTIwMi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgSW50ZXJydXB0IFJlbWFwcGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDI0OQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBBTURfSU9NTVUgYW5kIElSUV9SRU1BUCBEZXBlbmRlbmN5KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSB0cnlpbmcgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwIGJldHdlZW4gYEFNRF9JT01NVWAgYW5kIGBJUlFfUkVNQVBgLiBJcyBgQU1EX0lPTU1VYCBhIG5lY2Vzc2FyeSBwcmVyZXF1aXNpdGUgZm9yIGBJUlFfUkVNQVBgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseSB3aXRoIEFNRCBoYXJkd2FyZSwgb3IgaXMgaXQgdGhlIG90aGVyIHdheSBhcm91bmQ/IE9yLCBwZXJoYXBzLCBkbyB0aGV5IHNpbXBseSBjby1leGlzdCBpbiBhIHdheSB3aGVyZSBlbmFibGluZyBvbmUgbmVjZXNzaXRhdGVzIGVuYWJsaW5nIHRoZSBvdGhlciBpbiBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zPyBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgdGhhdCBuZWVkcyB0byBiZSBjbGFyaWZpZWQsIGJlY2F1c2UgbWlzdW5kZXJzdGFuZGluZyB0aGlzIHJlbGF0aW9uc2hpcCBjYW4gbGVhZCB0byBzaWduaWZpY2FudCBoZWFkYWNoZXMgaW4gc3lzdGVtIGNvbmZpZ3VyYXRpb24sIGVzcGVjaWFsbHkgcmVnYXJkaW5nIERNQSByZW1hcHBpbmcgYW5kIHZpcnR1YWxpemF0aW9uIHNldHVwcy4gSSBuZWVkIHRvIG5haWwgZG93biBpZiB0aGUga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3IgcnVudGltZSBpbnRlcmFjdGlvbiBoaW5nZXMgb24gdGhpcy4gVW5kZXJzdGFuZGluZyB0aGUgbGlua2FnZSBiZXR3ZWVuIHRoZXNlIGZlYXR1cmVzIHdpbGwgZGljdGF0ZSBob3cgSSBhcHByb2FjaCBjb25maWd1cmluZyB0aGUgSU9NTVUgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UgYW5kIGNvbXBhdGliaWxpdHkuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlLCByZWxldmFudCBkb2N1bWVudGF0aW9uLCBhbmQgZXhpc3RpbmcgZm9ydW0gZGlzY3Vzc2lvbnMgb3IgYnVnIHJlcG9ydHMgdG8gZ2V0IGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGlzIHJlbGF0aW9uc2hpcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbi4qSVJRX1JFTUFQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWc9NDYwPWNvbmZpZyBYODZfWDJBUElDXG5hcmNoL3g4Ni9LY29uZmlnLTQ2MS1cdGJvb2wgXCYjMzQ7eDJBUElDIGludGVycnVwdCBjb250cm9sbGVyIGFyY2hpdGVjdHVyZSBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjQ2MjpcdGRlcGVuZHMgb24gWDg2X0xPQ0FMX0FQSUMgXHUwMDI2XHUwMDI2IFg4Nl82NCBcdTAwMjZcdTAwMjYgKElSUV9SRU1BUCB8fCBIWVBFUlZJU09SX0dVRVNUKVxuYXJjaC94ODYvS2NvbmZpZy00NjMtXHRkZWZhdWx0IHlcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTQ5Nz1jb25maWcgWDg2X1BPU1RFRF9NU0lcbmFyY2gveDg2L0tjb25maWctNDk4LVx0Ym9vbCBcJiMzNDtFbmFibGUgTVNJIGFuZCBNU0kteCBkZWxpdmVyeSBieSBwb3N0ZWQgaW50ZXJydXB0c1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo0OTk6XHRkZXBlbmRzIG9uIFg4Nl82NCBcdTAwMjZcdTAwMjYgSVJRX1JFTUFQXG5hcmNoL3g4Ni9LY29uZmlnLTUwMC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3NTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBDaGVjayoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgQU1EIElPTU1VIGRyaXZlciBjb25maWd1cmF0aW9uIGlzIHNldCB1cC4gVGhlIGZpcnN0IHBsYWNlIEkmIzM5O20gZ29pbmcgdG8gbG9vayBpcyB0aGUgYGRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciBkcml2ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgdmFyaW91cyBjb21waWxlLXRpbWUgcGFyYW1ldGVycywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBBTUQgSU9NTVUgaW1wbGVtZW50YXRpb24uIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGJhc2VsaW5lIHVuZGVyc3RhbmRpbmcgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlIHdoZXRoZXIgdGhlIGRyaXZlciBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHdoYXQgZmVhdHVyZXMgY2FuIGJlIHRvZ2dsZWQsIHdoYXQgaGFyZHdhcmUgcmV2aXNpb25zIGFyZSBzdXBwb3J0ZWQsIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMuIFRpbWUgdG8gc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBTURfSU9NTVUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0yLSMgQU1EIElPTU1VIHN1cHBvcnRcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6Mzpjb25maWcgQU1EX0lPTU1VXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQtXHRib29sIFwmIzM0O0FNRCBJT01NVSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0zMi1cbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6MzM6Y29uZmlnIEFNRF9JT01NVV9JT01NVUZEXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtFbmFibGUgSU9NTVVGRCBmZWF0dXJlcyBmb3IgQU1EIElPTU1VIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy00Mi1cbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6NDM6Y29uZmlnIEFNRF9JT01NVV9ERUJVR0ZTXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQ0LVx0Ym9vbCBcJiMzNDtFbmFibGUgQU1EIElPTU1VIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTg3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBBTUQgSU9NTVUgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIEFNRCBJT01NVSBjb25maWd1cmF0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdGhhdCBgY29uZmlnIEFNRF9JT01NVWAgYmxvY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBob3cgdGhleSYjMzk7cmUgc3RydWN0dXJlZCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZS4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlLCBvYnZpb3VzbHksIGJ1dCBJJiMzOTttIGxvb2tpbmcgZm9yIGFueXRoaW5nIHVudXN1YWwgb3Igc3VidGxlLCB0aGF0IGlzIG5vdCBpbW1lZGlhdGVseSBhcHBhcmVudC4gSSBuZWVkIHRvIGdldCB0aGUgb3ZlcmFsbCBjb250ZXh0LCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhlIEFNRCBJT01NVS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBhbmQgYXNzb2NpYXRlZCBoZWxwIHRleHQgcmV2ZWFsLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgSU9NTVUgY29uZmlndXJhdGlvbnMgYW5kIHRoZSBicm9hZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmUuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0IyBBTUQgSU9NTVUgc3VwcG9ydFxuICAgMzpcdGNvbmZpZyBBTURfSU9NTVVcbiAgIDQ6XHRcdGJvb2wgXCYjMzQ7QU1EIElPTU1VIHN1cHBvcnRcJiMzNDtcbiAgIDU6XHRcdHNlbGVjdCBTV0lPVExCXG4gICA2Olx0XHRzZWxlY3QgUENJX01TSVxuICAgNzpcdFx0c2VsZWN0IFBDSV9BVFNcbiAgIDg6XHRcdHNlbGVjdCBQQ0lfUFJJXG4gICA5Olx0XHRzZWxlY3QgUENJX1BBU0lEXG4gIDEwOlx0XHRzZWxlY3QgSVJRX01TSV9MSUJcbiAgMTE6XHRcdHNlbGVjdCBNTVVfTk9USUZJRVJcbiAgMTI6XHRcdHNlbGVjdCBJT01NVV9BUElcbiAgMTM6XHRcdHNlbGVjdCBJT01NVV9JT1ZBXG4gIDE0Olx0XHRzZWxlY3QgSU9NTVVfU1ZBXG4gIDE1Olx0XHRzZWxlY3QgSU9NTVVfSU9QRlxuICAxNjpcdFx0c2VsZWN0IElPTU1VRkRfRFJJVkVSIGlmIElPTU1VRkRcbiAgMTc6XHRcdHNlbGVjdCBHRU5FUklDX1BUXG4gIDE4Olx0XHRzZWxlY3QgSU9NTVVfUFRcbiAgMTk6XHRcdHNlbGVjdCBJT01NVV9QVF9BTURWMVxuICAyMDpcdFx0c2VsZWN0IElPTU1VX1BUX1g4Nl82NFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTcxMAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgQU1EIElPTU1VIGFuZCBLVk0gQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgQU1EX0lPTU1VYCBhbmQgYEtWTV9BTURgLiBUaGUgbmFtZXMgYXJlIHByZXR0eSBzZWxmLWV4cGxhbmF0b3J5LCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBzZWUgaWYgYEtWTV9BTURgIGhhcyBhbnkgZGVwZW5kZW5jaWVzLiBJIHdhbnQgdG8ga25vdyBpZiBgS1ZNX0FNRGAgcmVsaWVzIG9uIGFueXRoaW5nIHNwZWNpZmljIHRvIGZ1bmN0aW9uLCBhbmQgaWYgc28sIHdoYXQgdGhvc2UgcHJlcmVxdWlzaXRlcyBhcmUuIEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gZW5zdXJpbmcgcHJvcGVyIHN5c3RlbSBjb25maWd1cmF0aW9uIGFuZCBhdm9pZGluZyBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCYjMzk7cyBhbGwgYWJvdXQgbWFraW5nIHN1cmUgSSYjMzk7bSBzZXR0aW5nIHRoaW5ncyB1cCBjb3JyZWN0bHkgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0NjpcdGNvbmZpZyBLVk1fQU1EXG4gMTQ3Olx0XHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbiAxNDg6XHRcdGRlcGVuZHMgb24gS1ZNIFx1MDAyNlx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcbiAxNDk6XHRcdGhlbHBcbiAxNTA6XHRcdCAgUHJvdmlkZXMgc3VwcG9ydCBmb3IgS1ZNIG9uIEFNRCBwcm9jZXNzb3JzIGVxdWlwcGVkIHdpdGggdGhlIEFNRC1WXG4gMTUxOlx0XHQgIChTVk0pIGV4dGVuc2lvbnMuXG4gMTUyOlx0XG4gMTUzOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDE1NDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBrdm0tYW1kLlxuIDE1NTpcdFxuIDE1NjpcdGNvbmZpZyBLVk1fQU1EX1NFVlxuIDE1NzpcdFx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4gMTU4Olx0XHRkZWZhdWx0IHlcbiAxNTk6XHRcdGRlcGVuZHMgb24gS1ZNX0FNRCBcdTAwMjZcdTAwMjYgWDg2XzY0XG4gMTYwOlx0XHRkZXBlbmRzIG9uIENSWVBUT19ERVZfU1BfUFNQIFx1MDAyNlx1MDAyNiAhKEtWTV9BTUQ9eSBcdTAwMjZcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcbiAxNjE6XHRcdHNlbGVjdCBBUkNIX0hBU19DQ19QTEFURk9STVxuIDE2MjpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXG4gMTYzOlx0XHRzZWxlY3QgSEFWRV9LVk1fQVJDSF9HTUVNX1BSRVBBUkVcbiAxNjQ6XHRcdHNlbGVjdCBIQVZFX0tWTV9BUkNIX0dNRU1fSU5WQUxJREFURVxuIDE2NTpcdFx0c2VsZWN0IEhBVkVfS1ZNX0FSQ0hfR01FTV9QT1BVTEFURVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjI5MAoJCQkJCQkJb3V0cHV0OiAyMzUKCQkJCQkJCXRob3VnaHRzOiA2NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqR0FQUEkgU3VwcG9ydCBmb3IgQU1EIElPTU1VIGFuZCBLVk0gU1ZNIEFWSUMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBpbnRlZ3JhdGVzIEdBUFBJIHN1cHBvcnQgaW50byB0aGUgQU1EIElPTU1VIGFuZCBLVk0gU1ZNIEFWSUMgc2V0dXAuIFRoZSBrZXkgY29uZmlncyBoZXJlIGFyZSBgS1ZNX0FNRGAgYW5kIGBBTURfSU9NTVVgIOKAkyB0aGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIHdlJiMzOTtyZSB3b3JraW5nIHdpdGguCgpJJiMzOTt2ZSBiZWVuIHJldmlld2luZyB0aGUgY29kZSBhbmQgZm9jdXNpbmcgb24gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvOiBgYXZpY19waV91cGRhdGVfaXJ0ZWAsIGBhbWRfaW9tbXVfdXBkYXRlX2dhYCwgYGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlYCwgYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgLCBgYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdGAsIGBhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3RgLCBgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcmAsIGFuZCBgX19hbWRfaW9tbXVfdXBkYXRlX2dhYC4gV2UmIzM5O3JlIHRhbGtpbmcgY29yZSBpbnRlcnJ1cHQgaGFuZGxpbmcsIHZDUFUgYWZmaW5pdHkgbWFuYWdlbWVudCwgYW5kIHRoZSBjcnVjaWFsIGxvZ2ljIGZvciBhY3RpdmF0aW5nIGd1ZXN0IG1vZGUgd2l0aGluIHRoZSBJT01NVS4gVGhlcmUgYXJlIGEgZmV3IG1vZGlmaWVkIGZ1bmN0aW9ucyBJIHNob3VsZCBhbHNvIHRha2UgaW50byBhY2NvdW50OiBgYXZpY19kZXN0cm95X3ZjcHVgLCBgYXZpY19pbml0X3ZjcHVgLCBgc3ZtX2lyX2xpc3RfZGVsYCwgYF9fYXZpY192Y3B1X2xvYWRgLCBgX19hdmljX3ZjcHVfcHV0YCwgYGF2aWNfaGFyZHdhcmVfc2V0dXBgLCBgZW5hYmxlX2lvbW11c192YXBpY2AsIGFuZCBgcGFyc2VfYW1kX2lvbW11X29wdGlvbnNgLgoKVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGNoYW5nZSwgaW1wYWN0aW5nIGhvdyBpbnRlcnJ1cHRzIGFyZSBtYW5hZ2VkIHdpdGhpbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIGRpcmVjdGx5IHRvdWNoZXMgdGhlIElPTU1VLiBUaGUgaW50cm9kdWN0aW9uIG9mIEdBUFBJIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbmV3IHdha2V1cCBsaXN0cyBhbmQgYWx0ZXJlZCBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgdGhhdCByZXF1aXJlcyByaWdvcm91cyB0ZXN0aW5nLiBDb25jdXJyZW5jeSBidWdzIG9yIG1lbW9yeSBjb3JydXB0aW9uIHZ1bG5lcmFiaWxpdGllcyBhcmUgYSBjb25jZXJuIGhlcmUuIEkgdGhpbmsgd2UgbmVlZCB0byBmdXp6IHRoaXMhCgpNeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyB3YXJyYW50cyBmdXp6aW5nLCBhbmQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyB0byB0YXJnZXQgYXJlIHRoZSBvbmVzIEkgbGlzdGVkIGVhcmxpZXIuIFRoZSBjb25maWdzIHRoYXQgYXJlIGVuYWJsZWQgYXJlIGBLVk1fQU1EYCBhbmQgYEFNRF9JT01NVWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk1fQU1EJiMzNDssCiAgICAmIzM0O0FNRF9JT01NVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F2aWNfcGlfdXBkYXRlX2lydGUmIzM0OywKICAgICYjMzQ7YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSYjMzQ7LAogICAgJiMzNDthbWRfaW9tbXVfdXBkYXRlX2dhJiMzNDssCiAgICAmIzM0O2FtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlJiMzNDssCiAgICAmIzM0O2F2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3QmIzM0OywKICAgICYjMzQ7YXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0JiMzNDssCiAgICAmIzM0O2F2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXImIzM0OywKICAgICYjMzQ7X19hbWRfaW9tbXVfdXBkYXRlX2dhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIEdBUFBJIChHdWVzdCBBUElDIFBvc3RlZCBJbnRlcnJ1cHRzKSBzdXBwb3J0IGZvciBBTUQgSU9NTVUgYW5kIEtWTSBTVk0gQVZJQy4gSXQgbW9kaWZpZXMgY29yZSBpbnRlcnJ1cHQgcmVtYXBwaW5nIGFuZCB2Q1BVIGFmZmluaXR5IGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCBuZXN0ZWQgS1ZNIG9uIEFNRCkuIEZ1enppbmcgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGUgbmV3IHdha2V1cCBsaXN0cyBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIGxvZ2ljIGRvIG5vdCBpbnRyb2R1Y2UgY29uY3VycmVuY3kgYnVncyBvciBtZW1vcnkgY29ycnVwdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtBTURfSU9NTVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdmljX3BpX3VwZGF0ZV9pcnRlJiMzNDssCiAgICAmIzM0O2F2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkmIzM0OywKICAgICYjMzQ7YW1kX2lvbW11X3VwZGF0ZV9nYSYjMzQ7LAogICAgJiMzNDthbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSYjMzQ7LAogICAgJiMzNDthdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0JiMzNDssCiAgICAmIzM0O2F2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdCYjMzQ7LAogICAgJiMzNDthdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O19fYW1kX2lvbW11X3VwZGF0ZV9nYSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggaW50cm9kdWNlcyBHQVBQSSAoR3Vlc3QgQVBJQyBQb3N0ZWQgSW50ZXJydXB0cykgc3VwcG9ydCBmb3IgQU1EIElPTU1VIGFuZCBLVk0gU1ZNIEFWSUMuIEl0IG1vZGlmaWVzIGNvcmUgaW50ZXJydXB0IHJlbWFwcGluZyBhbmQgdkNQVSBhZmZpbml0eSBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgbmVzdGVkIEtWTSBvbiBBTUQpLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIG5ldyB3YWtldXAgbGlzdHMgYW5kIGludGVycnVwdCBoYW5kbGluZyBsb2dpYyBkbyBub3QgaW50cm9kdWNlIGNvbmN1cnJlbmN5IGJ1Z3Mgb3IgbWVtb3J5IGNvcnJ1cHRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo1OTozNi43NTYxOTAxM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNjE3MzEwNDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9BTURcIixcbiAgICBcIkFNRF9JT01NVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF2aWNfcGlfdXBkYXRlX2lydGVcIixcbiAgICBcImF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlcIixcbiAgICBcImFtZF9pb21tdV91cGRhdGVfZ2FcIixcbiAgICBcImFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlXCIsXG4gICAgXCJhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0XCIsXG4gICAgXCJhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3RcIixcbiAgICBcImF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXJcIixcbiAgICBcIl9fYW1kX2lvbW11X3VwZGF0ZV9nYVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIEdBUFBJIChHdWVzdCBBUElDIFBvc3RlZCBJbnRlcnJ1cHRzKSBzdXBwb3J0IGZvciBBTUQgSU9NTVUgYW5kIEtWTSBTVk0gQVZJQy4gSXQgbW9kaWZpZXMgY29yZSBpbnRlcnJ1cHQgcmVtYXBwaW5nIGFuZCB2Q1BVIGFmZmluaXR5IGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCBuZXN0ZWQgS1ZNIG9uIEFNRCkuIEZ1enppbmcgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGUgbmV3IHdha2V1cCBsaXN0cyBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIGxvZ2ljIGRvIG5vdCBpbnRyb2R1Y2UgY29uY3VycmVuY3kgYnVncyBvciBtZW1vcnkgY29ycnVwdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTk6MzYuNzU2MjAxMDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTcwNTc2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMDc2ODk5NmVhYWM5NjY0YzE5MTRhNDg1YTVlMjI4NTlhOTZlYjViXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVuIDI2IDIyOjU5OjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaFxcbmluZGV4IDM3Yjk0ZjQ4NGVmMzM4Li40MGEyMjA2YTMzYzA4ZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmhcXG5AQCAtMzUsOCArMzUsOCBAQCBzdHJ1Y3QgYW1kX2lvbW11X3BpX2RhdGEge1xcbiBcXHR1NjQgdmFwaWNfYWRkcjtcXHRcXHQvKiBQaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSB2Q1BVJ3MgdkFQSUMuICovXFxuIFxcdHUzMiBnYV90YWc7XFxuIFxcdHUzMiB2ZWN0b3I7XFx0XFx0LyogR3Vlc3QgdmVjdG9yIG9mIHRoZSBpbnRlcnJ1cHQgKi9cXG4tXFx0aW50IGNwdTtcXG4tXFx0Ym9vbCBnYV9sb2dfaW50cjtcXG4rXFx0aW50IGFwaWNpZDtcXG4rXFx0aW50IGZsYWdzO1xcbiBcXHRib29sIGlzX2d1ZXN0X21vZGU7XFxuIFxcdHZvaWQgKmlyX2RhdGE7XFxuIH07XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jIGIvYXJjaC94ODYva3ZtL3N2bS9hdmljLmNcXG5pbmRleCBjZGQ1YTZkYzY0NmYxMS4uZDIzOGY2NWE4MTcyYmMgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9hdmljLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuY1xcbkBAIC02Myw2ICs2Myw5IEBAXFxuIFxcdGdhX3RhZztcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIH0pXFxuIFxcbitzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGxpc3RfaGVhZCwgZ2FwcGlfdmNwdV93YWtldXBfbGlzdCk7XFxuK3N0YXRpYyBERUZJTkVfUEVSX0NQVShyYXdfc3BpbmxvY2tfdCwgZ2FwcGlfdmNwdV93YWtldXBfbGlzdF9sb2NrKTtcXG4rXFxuIHN0YXRpY19hc3NlcnQoX19BVklDX0dBVEFHKEFWSUNfVk1fSURfTUFTSywgQVZJQ19WQ1BVX0lEWF9NQVNLKSA9PSAtMXUpO1xcbiBcXG4gI2RlZmluZSBBVklDX0FVVE9fTU9ERSAtMVxcbkBAIC04NzQsNiArODc3LDkgQEAgaW50IGF2aWNfaW5pdF92Y3B1KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0KTtcXG4gXFx0cmF3X3NwaW5fbG9ja19pbml0KFxcdTAwMjZzdm0tXFx1MDAzZWlyX2xpc3RfbG9jayk7XFxuIFxcbitcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2c3ZtLVxcdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KTtcXG4rXFx0c3ZtLVxcdTAwM2VnYXBwaV9jcHUgPSAtMTtcXG4rXFxuIFxcdGlmICghZW5hYmxlX2FwaWN2IHx8ICFpcnFjaGlwX2luX2tlcm5lbCh2Y3B1LVxcdTAwM2Vrdm0pKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuQEAgLTg4Niw2ICs4OTIsNDQgQEAgaW50IGF2aWNfaW5pdF92Y3B1KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtLCBpbnQgY3B1KVxcbit7XFxuK1xcdHN0cnVjdCBsaXN0X2hlYWQgKndha2V1cF9saXN0O1xcbitcXHRyYXdfc3BpbmxvY2tfdCAqc3BpbmxvY2s7XFxuK1xcbitcXHRpZiAoV0FSTl9PTihjcHUgXFx1MDAzYyAwKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0d2FrZXVwX2xpc3QgPSBcXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0LCBjcHUpO1xcbitcXHRzcGlubG9jayA9IFxcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KTtcXG4rXFx0cmF3X3NwaW5fbG9jayhzcGlubG9jayk7XFxuK1xcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZzdm0tXFx1MDAzZWdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpKVxcbitcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZzdm0tXFx1MDAzZWdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QsIHdha2V1cF9saXN0KTtcXG4rXFx0cmF3X3NwaW5fdW5sb2NrKHNwaW5sb2NrKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtLCBpbnQgY3B1KVxcbit7XFxuK1xcdHJhd19zcGlubG9ja190ICpzcGlubG9jaztcXG4rXFxuK1xcdGlmIChXQVJOX09OKGNwdSBcXHUwMDNjIDApKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRzcGlubG9jayA9IFxcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KTtcXG4rXFx0cmF3X3NwaW5fbG9jayhzcGlubG9jayk7XFxuK1xcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2c3ZtLVxcdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KSlcXG4rXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2c3ZtLVxcdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KTtcXG4rXFx0cmF3X3NwaW5fdW5sb2NrKHNwaW5sb2NrKTtcXG4rfVxcbitcXG4rdm9pZCBhdmljX2Rlc3Ryb3lfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4re1xcbitcXHRpZiAoc3ZtLVxcdTAwM2VnYXBwaV9jcHUgIT0gLTEgXFx1MDAyNlxcdTAwMjYgYW1kX2lvbW11X2dhcHBpKSB7XFxuK1xcdFxcdGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS1cXHUwMDNlZ2FwcGlfY3B1KTtcXG4rXFx0XFx0c3ZtLVxcdTAwM2VnYXBwaV9jcHUgPSAtMTtcXG4rXFx0fVxcbit9XFxuK1xcbiB2b2lkIGF2aWNfYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbiBcXHRhdmljX2hhbmRsZV9kZnJfdXBkYXRlKHZjcHUpO1xcbkBAIC04OTYsMTMgKzk0MCwxOCBAQCBzdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxcbiB7XFxuIFxcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IGlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX3ZjcHU7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuK1xcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtO1xcbiBcXG4gXFx0aWYgKCF2Y3B1KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnRvX3N2bSh2Y3B1KS1cXHUwMDNlaXJfbGlzdF9sb2NrLCBmbGFncyk7XFxuK1xcdHN2bSA9IHRvX3N2bSh2Y3B1KTtcXG4rXFxuK1xcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcXG4gXFx0bGlzdF9kZWwoXFx1MDAyNmlycWZkLVxcdTAwM2V2Y3B1X2xpc3QpO1xcbi1cXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2dG9fc3ZtKHZjcHUpLVxcdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcXG4rXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNnN2bS1cXHUwMDNlaXJfbGlzdCkpXFxuK1xcdFxcdGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS1cXHUwMDNlZ2FwcGlfY3B1KTtcXG4rXFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnN2bS1cXHUwMDNlaXJfbGlzdF9sb2NrLCBmbGFncyk7XFxuIH1cXG4gXFxuIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbkBAIC05MzIsNiArOTgxLDggQEAgaW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXFxuIFxcdFxcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtID0gdG9fc3ZtKHZjcHUpO1xcbiBcXHRcXHR1NjQgZW50cnk7XFxuIFxcdFxcdGludCByZXQ7XFxuK1xcdFxcdGludCBwb3N0ZWRfaW50cjtcXG4rXFx0XFx0Ym9vbCBpc192Y3B1X3dhaXRpbmcgPSBmYWxzZTtcXG4gXFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFByZXZlbnQgdGhlIHZDUFUgZnJvbSBiZWluZyBzY2hlZHVsZWQgb3V0IG9yIG1pZ3JhdGVkIHVudGlsXFxuQEAgLTk0OSwxNSArMTAwMCwyMyBAQCBpbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGVudHJ5ID0gc3ZtLVxcdTAwM2VhdmljX3BoeXNpY2FsX2lkX2VudHJ5O1xcbiBcXHRcXHRpZiAoZW50cnkgXFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0lTX1JVTk5JTkdfTUFTSykge1xcbi1cXHRcXHRcXHRwaV9kYXRhLmNwdSA9IGVudHJ5IFxcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9IT1NUX1BIWVNJQ0FMX0lEX01BU0s7XFxuK1xcdFxcdFxcdHBpX2RhdGEuYXBpY2lkID0gZW50cnkgXFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0hPU1RfUEhZU0lDQUxfSURfTUFTSztcXG4rXFx0XFx0XFx0cGlfZGF0YS5mbGFncyA9IEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklORztcXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0cGlfZGF0YS5jcHUgPSAtMTtcXG4tXFx0XFx0XFx0cGlfZGF0YS5nYV9sb2dfaW50ciA9IGVudHJ5IFxcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUjtcXG4rXFx0XFx0XFx0cG9zdGVkX2ludHIgPSAhIShlbnRyeSBcXHUwMDI2IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfR0FfTE9HX0lOVFIpO1xcbitcXHRcXHRcXHRwaV9kYXRhLmZsYWdzID0gcG9zdGVkX2ludHIgXFx1MDAzY1xcdTAwM2MgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFJfU0hJRlQ7XFxuK1xcdFxcdFxcdGlmIChhbWRfaW9tbXVfZ2FwcGkpIHtcXG4rXFx0XFx0XFx0XFx0cGlfZGF0YS5hcGljaWQgPSBrdm1fY3B1X2dldF9hcGljaWQoc3ZtLVxcdTAwM2VnYXBwaV9jcHUpO1xcbitcXHRcXHRcXHRcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0KSkge1xcbitcXHRcXHRcXHRcXHRcXHRhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVxcdTAwM2VnYXBwaV9jcHUpO1xcbitcXHRcXHRcXHRcXHRcXHRpc192Y3B1X3dhaXRpbmcgPSB0cnVlO1xcbitcXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0cmV0ID0gaXJxX3NldF92Y3B1X2FmZmluaXR5KGhvc3RfaXJxLCBcXHUwMDI2cGlfZGF0YSk7XFxuIFxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdFxcdGdvdG8gZ2FwcGlfZXJyX291dDtcXG4gXFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFJldmVydCB0byBsZWdhY3kgbW9kZSBpZiB0aGUgSU9NTVUgZGlkbid0IHByb3ZpZGUgbWV0YWRhdGFcXG5AQCAtOTY2LDEyICsxMDI1LDE3IEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKFdBUk5fT05fT05DRSghcGlfZGF0YS5pcl9kYXRhKSkge1xcbiBcXHRcXHRcXHRpcnFfc2V0X3ZjcHVfYWZmaW5pdHkoaG9zdF9pcnEsIE5VTEwpO1xcbi1cXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0XFx0cmV0ID0gLUVJTztcXG4rXFx0XFx0XFx0Z290byBnYXBwaV9lcnJfb3V0O1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpcnFmZC1cXHUwMDNlaXJxX2J5cGFzc19kYXRhID0gcGlfZGF0YS5pcl9kYXRhO1xcbiBcXHRcXHRsaXN0X2FkZChcXHUwMDI2aXJxZmQtXFx1MDAzZXZjcHVfbGlzdCwgXFx1MDAyNnN2bS1cXHUwMDNlaXJfbGlzdCk7XFxuIFxcdFxcdHJldHVybiAwO1xcbitnYXBwaV9lcnJfb3V0OlxcbitcXHRcXHRpZiAoaXNfdmNwdV93YWl0aW5nKVxcbitcXHRcXHRcXHRhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXFx1MDAzZWdhcHBpX2NwdSk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIGlycV9zZXRfdmNwdV9hZmZpbml0eShob3N0X2lycSwgTlVMTCk7XFxuIH1cXG5AQCAtMTAwNCwxMCArMTA2OCwxNCBAQCBlbnVtIGF2aWNfdmNwdV9hY3Rpb24ge1xcbiBcXHRBVklDX1NUQVJUX0JMT0NLSU5HXFx0PSBCSVQoMSksXFxuIH07XFxuIFxcbi1zdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGVudW0gYXZpY192Y3B1X2FjdGlvbiBhY3Rpb24pXFxuK3N0YXRpYyB2b2lkIGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgYXBpY2lkLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgaW50IGNwdSwgZW51bSBhdmljX3ZjcHVfYWN0aW9uIGFjdGlvbilcXG4ge1xcbi1cXHRib29sIGdhX2xvZ19pbnRyID0gKGFjdGlvbiBcXHUwMDI2IEFWSUNfU1RBUlRfQkxPQ0tJTkcpO1xcbitcXHRpbnQgcG9zdGVkX2ludHIgPSAhIShhY3Rpb24gXFx1MDAyNiBBVklDX1NUQVJUX0JMT0NLSU5HKSBcXHUwMDNjXFx1MDAzY1xcbitcXHRcXHRcXHQgIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSX1NISUZUO1xcbitcXHRpbnQgaXNfdmNwdV9ydW5uaW5nID0gKGFwaWNpZCBcXHUwMDNlPSAwKSBcXHUwMDNjXFx1MDAzY1xcbitcXHRcXHRcXHQgICAgICBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkdfU0hJRlQ7XFxuK1xcdGludCBmbGFncyA9IHBvc3RlZF9pbnRyIHwgaXNfdmNwdV9ydW5uaW5nO1xcbiBcXHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bSA9IHRvX3N2bSh2Y3B1KTtcXG4gXFx0c3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkO1xcbiBcXG5AQCAtMTAxNywxNiArMTA4NSwzMCBAQCBzdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSxcXG4gXFx0ICogSGVyZSwgd2UgZ28gdGhyb3VnaCB0aGUgcGVyLXZjcHUgaXJfbGlzdCB0byB1cGRhdGUgYWxsIGV4aXN0aW5nXFxuIFxcdCAqIGludGVycnVwdCByZW1hcHBpbmcgdGFibGUgZW50cnkgdGFyZ2V0aW5nIHRoaXMgdmNwdS5cXG4gXFx0ICovXFxuLVxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZzdm0tXFx1MDAzZWlyX2xpc3QpKVxcbitcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0KSkge1xcbitcXHRcXHRpZiAoYW1kX2lvbW11X2dhcHBpIFxcdTAwMjZcXHUwMDI2IGNwdSBcXHUwMDNlPSAwKVxcbitcXHRcXHRcXHRzdm0tXFx1MDAzZWdhcHBpX2NwdSA9IGNwdTtcXG4gXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoaXNfdmNwdV9ydW5uaW5nIFxcdTAwMjZcXHUwMDI2IGFtZF9pb21tdV9nYXBwaSkge1xcbitcXHRcXHQvKiBJRiBjb25kaXRpb24gaGFuZGxlcyB0aGUgaW5pdGlhbCBzdGF0ZSAqL1xcbitcXHRcXHRpZiAoc3ZtLVxcdTAwM2VnYXBwaV9jcHUgIT0gLTEpXFxuK1xcdFxcdFxcdGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS1cXHUwMDNlZ2FwcGlfY3B1KTtcXG4rXFxuK1xcdFxcdHN2bS1cXHUwMDNlZ2FwcGlfY3B1ID0gY3B1OyAvKiBTdG9yZSBjcHUgbm8gYXMgdGFyZ2V0IGZvciBHQVBQSSAqL1xcbitcXHR9IGVsc2UgaWYgKGFtZF9pb21tdV9nYXBwaSkge1xcbitcXHRcXHRhcGljaWQgPSBrdm1fY3B1X2dldF9hcGljaWQoc3ZtLVxcdTAwM2VnYXBwaV9jcHUpO1xcbitcXHRcXHRhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVxcdTAwM2VnYXBwaV9jcHUpO1xcbitcXHR9XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGlycWZkLCBcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0LCB2Y3B1X2xpc3QpIHtcXG4gXFx0XFx0dm9pZCAqZGF0YSA9IGlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX2RhdGE7XFxuIFxcbiBcXHRcXHRpZiAoIShhY3Rpb24gXFx1MDAyNiBBVklDX1RPR0dMRV9PTl9PRkYpKVxcbi1cXHRcXHRcXHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X3VwZGF0ZV9nYShkYXRhLCBjcHUsIGdhX2xvZ19pbnRyKSk7XFxuLVxcdFxcdGVsc2UgaWYgKGNwdSBcXHUwMDNlPSAwKVxcbi1cXHRcXHRcXHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoZGF0YSwgY3B1LCBnYV9sb2dfaW50cikpO1xcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X3VwZGF0ZV9nYShkYXRhLCBhcGljaWQsIGZsYWdzKSk7XFxuK1xcdFxcdGVsc2UgaWYgKGlzX3ZjcHVfcnVubmluZylcXG4rXFx0XFx0XFx0V0FSTl9PTl9PTkNFKGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGRhdGEsIGFwaWNpZCwgZmxhZ3MpKTtcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X2RlYWN0aXZhdGVfZ3Vlc3RfbW9kZShkYXRhKSk7XFxuIFxcdH1cXG5AQCAtMTA4MCw3ICsxMTYyLDcgQEAgc3RhdGljIHZvaWQgX19hdmljX3ZjcHVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUsXFxuIFxcbiBcXHRXUklURV9PTkNFKGt2bV9zdm0tXFx1MDAzZWF2aWNfcGh5c2ljYWxfaWRfdGFibGVbdmNwdS1cXHUwMDNldmNwdV9pZF0sIGVudHJ5KTtcXG4gXFxuLVxcdGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkodmNwdSwgaF9waHlzaWNhbF9pZCwgYWN0aW9uKTtcXG4rXFx0YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSh2Y3B1LCBoX3BoeXNpY2FsX2lkLCBjcHUsIGFjdGlvbik7XFxuIFxcbiBcXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2c3ZtLVxcdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcXG4gfVxcbkBAIC0xMTIzLDcgKzEyMDUsNyBAQCBzdGF0aWMgdm9pZCBfX2F2aWNfdmNwdV9wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKVxcbiBcXHQgKi9cXG4gXFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZzdm0tXFx1MDAzZWlyX2xpc3RfbG9jaywgZmxhZ3MpO1xcbiBcXG4tXFx0YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSh2Y3B1LCAtMSwgYWN0aW9uKTtcXG4rXFx0YXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eSh2Y3B1LCAtMSwgLTEsIGFjdGlvbik7XFxuIFxcbiBcXHRXQVJOX09OX09OQ0UoZW50cnkgXFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0dBX0xPR19JTlRSKTtcXG4gXFxuQEAgLTEyOTYsNiArMTM3OCwyMSBAQCBzdGF0aWMgYm9vbCBfX2luaXQgYXZpY193YW50X2F2aWNfZW5hYmxlZCh2b2lkKVxcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcih2b2lkKVxcbit7XFxuK1xcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XFxuK1xcdHN0cnVjdCBsaXN0X2hlYWQgKnZjcHVfd2FrZXVwX2xpc3QgPSBcXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0LCBjcHUpO1xcbitcXHRyYXdfc3BpbmxvY2tfdCAqc3BpbmxvY2sgPSBcXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7XFxuK1xcdHN0cnVjdCB2Y3B1X3N2bSAqc3ZtO1xcbitcXG4rXFx0cmF3X3NwaW5fbG9jayhzcGlubG9jayk7XFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkoc3ZtLCB2Y3B1X3dha2V1cF9saXN0LCBnYXBwaV92Y3B1X3dha2V1cF9saXN0KSB7XFxuK1xcdFxcdGlmIChrdm1fbGFwaWNfZmluZF9oaWdoZXN0X2lycihcXHUwMDI2c3ZtLVxcdTAwM2V2Y3B1KSBcXHUwMDNlPSAwKVxcbitcXHRcXHRcXHRrdm1fdmNwdV93YWtlX3VwKFxcdTAwMjZzdm0tXFx1MDAzZXZjcHUpO1xcbitcXHR9XFxuK1xcdHJhd19zcGluX3VubG9jayhzcGlubG9jayk7XFxuK31cXG4rXFxuIC8qXFxuICAqIE5vdGU6XFxuICAqIC0gVGhlIG1vZHVsZSBwYXJhbSBhdmljIGVuYWJsZSBib3RoIHhBUElDIGFuZCB4MkFQSUMgbW9kZS5cXG5AQCAtMTMwNCwxMiArMTQwMSwxOCBAQCBzdGF0aWMgYm9vbCBfX2luaXQgYXZpY193YW50X2F2aWNfZW5hYmxlZCh2b2lkKVxcbiAgKi9cXG4gYm9vbCBfX2luaXQgYXZpY19oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbiB7XFxuK1xcdGludCBjcHU7XFxuIFxcdGF2aWMgPSBhdmljX3dhbnRfYXZpY19lbmFibGVkKCk7XFxuIFxcdGlmICghYXZpYylcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4gXFx0cHJfaW5mbyhcXFwiQVZJQyBlbmFibGVkXFxcXG5cXFwiKTtcXG4gXFxuK1xcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcXG4rXFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnBlcl9jcHUoZ2FwcGlfdmNwdV93YWtldXBfbGlzdCwgY3B1KSk7XFxuK1xcdFxcdHJhd19zcGluX2xvY2tfaW5pdChcXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSkpO1xcbitcXHR9XFxuK1xcbiBcXHQvKiBBVklDIGlzIGEgcHJlcmVxdWlzaXRlIGZvciB4MkFWSUMuICovXFxuIFxcdHgyYXZpY19lbmFibGVkID0gYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1gyQVZJQyk7XFxuIFxcdGlmICh4MmF2aWNfZW5hYmxlZCkge1xcbkBAIC0xMzMzLDYgKzE0MzYsNyBAQCBib29sIF9faW5pdCBhdmljX2hhcmR3YXJlX3NldHVwKHZvaWQpXFxuIFxcdFxcdGVuYWJsZV9pcGl2ID0gZmFsc2U7XFxuIFxcbiBcXHRhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKFxcdTAwMjZhdmljX2dhX2xvZ19ub3RpZmllcik7XFxuK1xcdGt2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXIoXFx1MDAyNmF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXIpO1xcbiBcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcXG5pbmRleCBlMDJhMzhkYTUyOTZlMy4uYjY4NzEzM2Y4NTI4YmEgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcXG5AQCAtMTM1Niw2ICsxMzU2LDggQEAgc3RhdGljIHZvaWQgc3ZtX3ZjcHVfZnJlZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcbiBcXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXFx1MDAyNnN2bS1cXHUwMDNlaXJfbGlzdCkpO1xcbiBcXG4rXFx0YXZpY19kZXN0cm95X3ZjcHUoc3ZtKTtcXG4rXFxuIFxcdHN2bV9sZWF2ZV9uZXN0ZWQodmNwdSk7XFxuIFxcdHN2bV9mcmVlX25lc3RlZChzdm0pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcXG5pbmRleCA1MTM3NDE2YmU1OTNkNy4uNDdkNWJiNWQ3MTAzZGEgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaFxcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcXG5AQCAtMzYyLDYgKzM2MiwxMCBAQCBzdHJ1Y3QgdmNwdV9zdm0ge1xcbiBcXG4gXFx0LyogR3Vlc3QgR0lGIHZhbHVlLCB1c2VkIHdoZW4gdkdJRiBpcyBub3QgZW5hYmxlZCAqL1xcbiBcXHRib29sIGd1ZXN0X2dpZjtcXG4rXFxuK1xcdC8qIEdBUFBJIHJlbGF0ZWQgZmllbGRzICovXFxuK1xcdHN0cnVjdCBsaXN0X2hlYWQgZ2FwcGlfdmNwdV93YWtldXBfbGlzdDtcXG4rXFx0aW50IGdhcHBpX2NwdTtcXG4gfTtcXG4gXFxuIHN0cnVjdCBzdm1fY3B1X2RhdGEge1xcbkBAIC05MDksNiArOTEzLDcgQEAgdm9pZCBhdmljX2luaXRfdm1jYihzdHJ1Y3QgdmNwdV9zdm0gKnN2bSwgc3RydWN0IHZtY2IgKnZtY2IpO1xcbiBpbnQgYXZpY19pbmNvbXBsZXRlX2lwaV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gaW50IGF2aWNfdW5hY2NlbGVyYXRlZF9hY2Nlc3NfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSk7XFxuK3ZvaWQgYXZpY19kZXN0cm95X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pO1xcbiB2b2lkIGF2aWNfdmNwdV9sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSk7XFxuIHZvaWQgYXZpY192Y3B1X3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiB2b2lkIGF2aWNfYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdS5oIGIvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmhcXG5pbmRleCA4MzRkOGZhYmZiYTM4Ny4uMDQ0MTc5Y2FiMTJlNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmhcXG4rKysgYi9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXUuaFxcbkBAIC00MSw2ICs0MSw3IEBAIGludCBhbWRfaW9tbXVfZW5hYmxlKHZvaWQpO1xcbiB2b2lkIGFtZF9pb21tdV9kaXNhYmxlKHZvaWQpO1xcbiBpbnQgYW1kX2lvbW11X3JlZW5hYmxlKGludCBtb2RlKTtcXG4gaW50IGFtZF9pb21tdV9lbmFibGVfZmF1bHRpbmcodW5zaWduZWQgaW50IGNwdSk7XFxuK2V4dGVybiBib29sIGFtZF9pb21tdV9nYXBwaTtcXG4gZXh0ZXJuIGludCBhbWRfaW9tbXVfZ3Vlc3RfaXI7XFxuIGV4dGVybiBlbnVtIHByb3RlY3Rpb25fZG9tYWluX21vZGUgYW1kX2lvbW11X3BndGFibGU7XFxuIGV4dGVybiBpbnQgYW1kX2lvbW11X2dwdF9sZXZlbDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11X3R5cGVzLmggYi9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaFxcbmluZGV4IGY5ZjcxODA4Nzg5MzAzLi5kZTBiMjMzMDY5NDRiOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaFxcbisrKyBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdV90eXBlcy5oXFxuQEAgLTk0LDYgKzk0LDcgQEBcXG4gI2RlZmluZSBGRUFUVVJFX1gyQVBJQ1xcdFxcdEJJVF9VTEwoMilcXG4gI2RlZmluZSBGRUFUVVJFX05YXFx0XFx0QklUX1VMTCgzKVxcbiAjZGVmaW5lIEZFQVRVUkVfR1RcXHRcXHRCSVRfVUxMKDQpXFxuKyNkZWZpbmUgRkVBVFVSRV9HQVBQSVxcdFxcdEJJVF9VTEwoNSlcXG4gI2RlZmluZSBGRUFUVVJFX0lBXFx0XFx0QklUX1VMTCg2KVxcbiAjZGVmaW5lIEZFQVRVUkVfR0FcXHRcXHRCSVRfVUxMKDcpXFxuICNkZWZpbmUgRkVBVFVSRV9IRVxcdFxcdEJJVF9VTEwoOClcXG5AQCAtMTEzLDYgKzExNCw3IEBAXFxuIC8qIEV4dGVuZGVkIEZlYXR1cmUgMiBCaXRzICovXFxuICNkZWZpbmUgRkVBVFVSRV9TRVZTTlBJT19TVVBcXHRCSVRfVUxMKDEpXFxuICNkZWZpbmUgRkVBVFVSRV9HQ1IzVFJQTU9ERVxcdEJJVF9VTEwoMylcXG4rI2RlZmluZSBGRUFUVVJFX0dBUFBJRElTU1VQXFx0QklUX1VMTCg0KVxcbiAjZGVmaW5lIEZFQVRVUkVfU05QQVZJQ1NVUFxcdEdFTk1BU0tfVUxMKDcsIDUpXFxuICNkZWZpbmUgRkVBVFVSRV9TTlBBVklDU1VQX0dBTSh4KSBcXFxcXFxuIFxcdChGSUVMRF9HRVQoRkVBVFVSRV9TTlBBVklDU1VQLCB4KSA9PSAweDEpXFxuQEAgLTE5MCw2ICsxOTIsNyBAQFxcbiAjZGVmaW5lIENPTlRST0xfRVBIX0VOXFx0XFx0NDVcXG4gI2RlZmluZSBDT05UUk9MX1hUX0VOXFx0XFx0NTBcXG4gI2RlZmluZSBDT05UUk9MX0lOVENBUFhUX0VOXFx0NTFcXG4rI2RlZmluZSBDT05UUk9MX0dBUFBJX0VOXFx0NTVcXG4gI2RlZmluZSBDT05UUk9MX0dDUjNUUlBNT0RFXFx0NThcXG4gI2RlZmluZSBDT05UUk9MX0lSVENBQ0hFRElTXFx0NTlcXG4gI2RlZmluZSBDT05UUk9MX1NOUEFWSUNfRU5cXHQ2MVxcbkBAIC0xMDA0LDcgKzEwMDcsOCBAQCB1bmlvbiBpcnRlX2dhX2xvIHtcXG4gXFx0XFx0ICAgIG5vX2ZhdWx0XFx0OiAxLFxcbiBcXHRcXHQgICAgLyogLS0tLS0tICovXFxuIFxcdFxcdCAgICBnYV9sb2dfaW50clxcdDogMSxcXG4tXFx0XFx0ICAgIHJzdmQxXFx0OiAzLFxcbitcXHRcXHQgICAgcnN2ZDFcXHQ6IDIsXFxuK1xcdFxcdCAgICBnYXBwaV9kaXNcXHQ6IDEsXFxuIFxcdFxcdCAgICBpc19ydW5cXHQ6IDEsXFxuIFxcdFxcdCAgICAvKiAtLS0tLS0gKi9cXG4gXFx0XFx0ICAgIGd1ZXN0X21vZGVcXHQ6IDEsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYW1kL2luaXQuYyBiL2RyaXZlcnMvaW9tbXUvYW1kL2luaXQuY1xcbmluZGV4IDNiZGIzODBkMjNlOWE5Li5iM2UxZDhlZTdlOWQ2MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmNcXG4rKysgYi9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmNcXG5AQCAtMTYwLDYgKzE2MCw5IEBAIHU4IGFtZF9pb21tdV9ocHRfbGV2ZWw7XFxuIC8qIEd1ZXN0IHBhZ2UgdGFibGUgbGV2ZWwgKi9cXG4gaW50IGFtZF9pb21tdV9ncHRfbGV2ZWwgPSBQQUdFX01PREVfNF9MRVZFTDtcXG4gXFxuK2Jvb2wgYW1kX2lvbW11X2dhcHBpO1xcbitFWFBPUlRfU1lNQk9MKGFtZF9pb21tdV9nYXBwaSk7XFxuK1xcbiBpbnQgYW1kX2lvbW11X2d1ZXN0X2lyID0gQU1EX0lPTU1VX0dVRVNUX0lSX1ZBUElDO1xcbiBzdGF0aWMgaW50IGFtZF9pb21tdV94dF9tb2RlID0gSVJRX1JFTUFQX1hBUElDX01PREU7XFxuIFxcbkBAIC0zMDM1LDExICszMDM4LDIwIEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9pb21tdXNfdmFwaWModm9pZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoYW1kX2lvbW11X2dhcHBpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhKGNoZWNrX2ZlYXR1cmUoRkVBVFVSRV9HQVBQSSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICAgQU1EX0lPTU1VX0dVRVNUX0lSX1ZBUElDKGFtZF9pb21tdV9ndWVzdF9pcikpKSB7XFxuK1xcdFxcdHByX3dhcm4oXFxcIkdBUFBJIGlzIG5vdCBzdXBwb3J0ZWQuXFxcXG5cXFwiKTtcXG4rXFx0XFx0YW1kX2lvbW11X2dhcHBpID0gZmFsc2U7XFxuK1xcdH1cXG4rXFxuIFxcdC8qIEVuYWJsaW5nIEdBTSBhbmQgU05QQVZJQyBzdXBwb3J0ICovXFxuIFxcdGZvcl9lYWNoX2lvbW11KGlvbW11KSB7XFxuLVxcdFxcdGlmIChpb21tdV9pbml0X2dhX2xvZyhpb21tdSkgfHxcXG4tXFx0XFx0ICAgIGlvbW11X2dhX2xvZ19lbmFibGUoaW9tbXUpKVxcbi1cXHRcXHRcXHRyZXR1cm47XFxuK1xcdFxcdGlmIChhbWRfaW9tbXVfZ2FwcGkpXFxuK1xcdFxcdFxcdGlvbW11X2ZlYXR1cmVfZW5hYmxlKGlvbW11LCBDT05UUk9MX0dBUFBJX0VOKTtcXG4rXFx0XFx0ZWxzZSBpZiAoaW9tbXVfaW5pdF9nYV9sb2coaW9tbXUpIHx8XFxuK1xcdFxcdFxcdCBpb21tdV9nYV9sb2dfZW5hYmxlKGlvbW11KSlcXG4rXFx0XFx0XFx0IHJldHVybjtcXG4gXFxuIFxcdFxcdGlvbW11X2ZlYXR1cmVfZW5hYmxlKGlvbW11LCBDT05UUk9MX0dBTV9FTik7XFxuIFxcdFxcdGlmIChhbWRfaW9tbXVfc25wX2VuKVxcbkBAIC0zMDQ3LDcgKzMwNTksOCBAQCBzdGF0aWMgdm9pZCBlbmFibGVfaW9tbXVzX3ZhcGljKHZvaWQpXFxuIFxcdH1cXG4gXFxuIFxcdGFtZF9pb21tdV9pcnFfb3BzLmNhcGFiaWxpdHkgfD0gKDEgXFx1MDAzY1xcdTAwM2MgSVJRX1BPU1RJTkdfQ0FQKTtcXG4tXFx0cHJfaW5mbyhcXFwiVmlydHVhbCBBUElDIGVuYWJsZWRcXFxcblxcXCIpO1xcbitcXHRwcl9pbmZvKFxcXCJWaXJ0dWFsIEFQSUMgZW5hYmxlZCB3aXRoICVzXFxcXG5cXFwiLFxcbitcXHRcXHRhbWRfaW9tbXVfZ2FwcGkgPyBcXFwiR0FQUElcXFwiIDogXFxcIkdBTE9HXFxcIik7XFxuICNlbmRpZlxcbiB9XFxuIFxcbkBAIC0zNzM4LDYgKzM3NTEsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBwYXJzZV9hbWRfaW9tbXVfb3B0aW9ucyhjaGFyICpzdHIpXFxuIFxcdFxcdH0gZWxzZSBpZiAoc3RybmNtcChzdHIsIFxcXCJ2Ml9wZ3NpemVzX29ubHlcXFwiLCAxNSkgPT0gMCkge1xcbiBcXHRcXHRcXHRwcl9pbmZvKFxcXCJSZXN0cmljdGluZyBWMSBwYWdlLXNpemVzIHRvIDRLaUIvMk1pQi8xR2lCXFxcIik7XFxuIFxcdFxcdFxcdGFtZF9pb21tdV9wZ3NpemVfYml0bWFwID0gQU1EX0lPTU1VX1BHU0laRVNfVjI7XFxuK1xcdFxcdH0gZWxzZSBpZiAoc3RybmNtcChzdHIsIFxcXCJnYXBwaVxcXCIsIDUpID09IDApIHtcXG4rXFx0XFx0XFx0YW1kX2lvbW11X2dhcHBpID0gdHJ1ZTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0cHJfbm90aWNlKFxcXCJVbmtub3duIG9wdGlvbiAtICclcydcXFxcblxcXCIsIHN0cik7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvaW9tbXUuYyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmNcXG5pbmRleCA1N2RjOGZhYmM3ZDliOS4uNDY5MGNlY2M5YWE3ZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pb21tdS9hbWQvaW9tbXUuY1xcbisrKyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmNcXG5AQCAtMzk1OSwxOSArMzk1OSwyOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGFtZF9pcl9kb21haW5fb3BzID0ge1xcbiBcXHQuZGVhY3RpdmF0ZSA9IGlycV9yZW1hcHBpbmdfZGVhY3RpdmF0ZSxcXG4gfTtcXG4gXFxuLXN0YXRpYyB2b2lkIF9fYW1kX2lvbW11X3VwZGF0ZV9nYShzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnksIGludCBjcHUsXFxuLVxcdFxcdFxcdFxcdCAgYm9vbCBnYV9sb2dfaW50cilcXG4rc3RhdGljIHZvaWQgX19hbWRfaW9tbXVfdXBkYXRlX2dhKHN0cnVjdCBpcnRlX2dhICplbnRyeSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxcbiB7XFxuLVxcdGlmIChjcHUgXFx1MDAzZT0gMCkge1xcbitcXHRpZiAoZmxhZ3MgXFx1MDAyNiBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkcpIHtcXG4gXFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5kZXN0aW5hdGlvbiA9XFxuLVxcdFxcdFxcdFxcdFxcdEFQSUNJRF9UT19JUlRFX0RFU1RfTE8oY3B1KTtcXG4rXFx0XFx0XFx0XFx0XFx0QVBJQ0lEX1RPX0lSVEVfREVTVF9MTyhhcGljaWQpO1xcbiBcXHRcXHRlbnRyeS1cXHUwMDNlaGkuZmllbGRzLmRlc3RpbmF0aW9uID1cXG4tXFx0XFx0XFx0XFx0XFx0QVBJQ0lEX1RPX0lSVEVfREVTVF9ISShjcHUpO1xcbitcXHRcXHRcXHRcXHRcXHRBUElDSURfVE9fSVJURV9ERVNUX0hJKGFwaWNpZCk7XFxuIFxcdFxcdGVudHJ5LVxcdTAwM2Vsby5maWVsZHNfdmFwaWMuaXNfcnVuID0gdHJ1ZTtcXG4gXFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5nYV9sb2dfaW50ciA9IGZhbHNlO1xcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHRlbnRyeS1cXHUwMDNlbG8uZmllbGRzX3ZhcGljLmlzX3J1biA9IGZhbHNlO1xcbi1cXHRcXHRlbnRyeS1cXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX2xvZ19pbnRyID0gZ2FfbG9nX2ludHI7XFxuK1xcdFxcdGJvb2wgcG9zdGVkX2ludHIgPSAhIShmbGFncyBcXHUwMDI2IEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSKTtcXG4rXFx0XFx0aWYgKGFtZF9pb21tdV9nYXBwaSkge1xcbitcXHRcXHRcXHRlbnRyeS1cXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhcHBpX2RpcyA9ICFwb3N0ZWRfaW50ciBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBjaGVja19mZWF0dXJlMihGRUFUVVJFX0dBUFBJRElTU1VQKTtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5kZXN0aW5hdGlvbiA9XFxuK1xcdFxcdFxcdFxcdFxcdFxcdEFQSUNJRF9UT19JUlRFX0RFU1RfTE8oYXBpY2lkKTtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWhpLmZpZWxkcy5kZXN0aW5hdGlvbiA9IEFQSUNJRF9UT19JUlRFX0RFU1RfSEkoYXBpY2lkKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5nYV9sb2dfaW50ciA9IHBvc3RlZF9pbnRyO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMzk5Miw3ICs0MDAxLDcgQEAgc3RhdGljIHZvaWQgX19hbWRfaW9tbXVfdXBkYXRlX2dhKHN0cnVjdCBpcnRlX2dhICplbnRyeSwgaW50IGNwdSxcXG4gICogYW5kIHRodXMgZG9uJ3QgcmVxdWlyZSBhbiBpbnZhbGlkYXRpb24gdG8gZW5zdXJlIHRoZSBJT01NVSBjb25zdW1lcyBmcmVzaFxcbiAgKiBpbmZvcm1hdGlvbi5cXG4gICovXFxuLWludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpXFxuK2ludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcXG4ge1xcbiBcXHRzdHJ1Y3QgYW1kX2lyX2RhdGEgKmlyX2RhdGEgPSAoc3RydWN0IGFtZF9pcl9kYXRhICopZGF0YTtcXG4gXFx0c3RydWN0IGlydGVfZ2EgKmVudHJ5ID0gKHN0cnVjdCBpcnRlX2dhICopIGlyX2RhdGEtXFx1MDAzZWVudHJ5O1xcbkBAIC00MDA2LDE0ICs0MDE1LDE0IEBAIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpXFxuIFxcdGlmICghaXJfZGF0YS1cXHUwMDNlaW9tbXUpXFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiBcXG4tXFx0X19hbWRfaW9tbXVfdXBkYXRlX2dhKGVudHJ5LCBjcHUsIGdhX2xvZ19pbnRyKTtcXG4rXFx0X19hbWRfaW9tbXVfdXBkYXRlX2dhKGVudHJ5LCBhcGljaWQsIGZsYWdzKTtcXG4gXFxuIFxcdHJldHVybiBfX21vZGlmeV9pcnRlX2dhKGlyX2RhdGEtXFx1MDAzZWlvbW11LCBpcl9kYXRhLVxcdTAwM2VpcnFfMl9pcnRlLmRldmlkLFxcbiBcXHRcXHRcXHRcXHRpcl9kYXRhLVxcdTAwM2VpcnFfMl9pcnRlLmluZGV4LCBlbnRyeSk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChhbWRfaW9tbXVfdXBkYXRlX2dhKTtcXG4gXFxuLWludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKVxcbitpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxcbiB7XFxuIFxcdHN0cnVjdCBhbWRfaXJfZGF0YSAqaXJfZGF0YSA9IChzdHJ1Y3QgYW1kX2lyX2RhdGEgKilkYXRhO1xcbiBcXHRzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnkgPSAoc3RydWN0IGlydGVfZ2EgKikgaXJfZGF0YS1cXHUwMDNlZW50cnk7XFxuQEAgLTQwMzQsOSArNDA0MywxMyBAQCBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcXG4gXFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5ndWVzdF9tb2RlICA9IDE7XFxuIFxcdGVudHJ5LVxcdTAwM2VoaS5maWVsZHMuZ2Ffcm9vdF9wdHIgICAgICAgPSBpcl9kYXRhLVxcdTAwM2VnYV9yb290X3B0cjtcXG4gXFx0ZW50cnktXFx1MDAzZWhpLmZpZWxkcy52ZWN0b3IgICAgICAgICAgICA9IGlyX2RhdGEtXFx1MDAzZWdhX3ZlY3RvcjtcXG4tXFx0ZW50cnktXFx1MDAzZWxvLmZpZWxkc192YXBpYy5nYV90YWcgICAgICA9IGlyX2RhdGEtXFx1MDAzZWdhX3RhZztcXG4gXFxuLVxcdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgY3B1LCBnYV9sb2dfaW50cik7XFxuK1xcdGlmIChhbWRfaW9tbXVfZ2FwcGkpXFxuK1xcdFxcdGVudHJ5LVxcdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfdGFnID0gUE9TVEVEX0lOVFJfV0FLRVVQX1ZFQ1RPUjtcXG4rXFx0ZWxzZVxcbitcXHRcXHRlbnRyeS1cXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX3RhZyA9IGlyX2RhdGEtXFx1MDAzZWdhX3RhZztcXG4rXFxuK1xcdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgYXBpY2lkLCBmbGFncyk7XFxuIFxcbiBcXHRyZXR1cm4gbW9kaWZ5X2lydGVfZ2EoaXJfZGF0YS1cXHUwMDNlaW9tbXUsIGlyX2RhdGEtXFx1MDAzZWlycV8yX2lydGUuZGV2aWQsXFxuIFxcdFxcdFxcdCAgICAgIGlyX2RhdGEtXFx1MDAzZWlycV8yX2lydGUuaW5kZXgsIGVudHJ5KTtcXG5AQCAtNDEwNyw4ICs0MTIwLDggQEAgc3RhdGljIGludCBhbWRfaXJfc2V0X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGlycV9kYXRhICpkYXRhLCB2b2lkICppbmZvKVxcbiBcXHRcXHRpcl9kYXRhLVxcdTAwM2VnYV92ZWN0b3IgPSBwaV9kYXRhLVxcdTAwM2V2ZWN0b3I7XFxuIFxcdFxcdGlyX2RhdGEtXFx1MDAzZWdhX3RhZyA9IHBpX2RhdGEtXFx1MDAzZWdhX3RhZztcXG4gXFx0XFx0aWYgKHBpX2RhdGEtXFx1MDAzZWlzX2d1ZXN0X21vZGUpXFxuLVxcdFxcdFxcdHJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtXFx1MDAzZWNwdSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHBpX2RhdGEtXFx1MDAzZWdhX2xvZ19pbnRyKTtcXG4rXFx0XFx0XFx0cmV0ID0gYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoaXJfZGF0YSwgcGlfZGF0YS1cXHUwMDNlYXBpY2lkLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgcGlfZGF0YS1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdHJldCA9IGFtZF9pb21tdV9kZWFjdGl2YXRlX2d1ZXN0X21vZGUoaXJfZGF0YSk7XFxuIFxcdH0gZWxzZSB7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmggYi9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oXFxuaW5kZXggZWRjZWU5ZjUzMzVhNmYuLjg3ZTc2ZjYxN2VhMTg1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oXFxuQEAgLTMwLDggKzMwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGFtZF9pb21tdV9kZXRlY3Qodm9pZCkgeyB9XFxuIC8qIElPTU1VIEFWSUMgRnVuY3Rpb24gKi9cXG4gZXh0ZXJuIGludCBhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKGludCAoKm5vdGlmaWVyKSh1MzIpKTtcXG4gXFxuLWV4dGVybiBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKTtcXG4tZXh0ZXJuIGludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKTtcXG4rZXh0ZXJuIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncyk7XFxuK2V4dGVybiBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKTtcXG4gZXh0ZXJuIGludCBhbWRfaW9tbXVfZGVhY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEpO1xcbiBcXG4gI2Vsc2UgLyogZGVmaW5lZChDT05GSUdfQU1EX0lPTU1VKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19JUlFfUkVNQVApICovXFxuQEAgLTQyLDEyICs0MiwxMiBAQCBhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKGludCAoKm5vdGlmaWVyKSh1MzIpKVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKVxcbitzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcXG4ge1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcXG4rc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxcbiB7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTc2LDQgKzc2LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IGFtZF9pb21tdV9zbnBfZGlzYWJsZSh2b2lkKSB7IHJldHVybiAwOyB9XFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBhbWRfaW9tbXVfc2V2X3Rpb19zdXBwb3J0ZWQodm9pZCkgeyByZXR1cm4gZmFsc2U7IH1cXG4gI2VuZGlmXFxuIFxcbisjZGVmaW5lIEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklOR19TSElGVCAwXFxuKyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfVkNQVV9SVU5OSU5HICBCSVQoMClcXG4rXFxuKyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFJfU0hJRlQgMVxcbisjZGVmaW5lIEFNRF9JT01NVV9GTEFHX1BPU1RFRF9JTlRSICBCSVQoMSlcXG4rXFxuK2V4dGVybiBib29sIGFtZF9pb21tdV9nYXBwaTtcXG4gI2VuZGlmIC8qIF9BU01fWDg2X0FNRF9JT01NVV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjU5OjM3LjgxNTM3NTE1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE1NTgxMDI3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiLFxuICAgIFwiQU1EX0lPTU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXZpY19waV91cGRhdGVfaXJ0ZVwiLFxuICAgIFwiYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eVwiLFxuICAgIFwiYW1kX2lvbW11X3VwZGF0ZV9nYVwiLFxuICAgIFwiYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVcIixcbiAgICBcImF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3RcIixcbiAgICBcImF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdFwiLFxuICAgIFwiYXZpY19nYXBwaV93YWtldXBfaGFuZGxlclwiLFxuICAgIFwiX19hbWRfaW9tbXVfdXBkYXRlX2dhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIGludHJvZHVjZXMgR0FQUEkgKEd1ZXN0IEFQSUMgUG9zdGVkIEludGVycnVwdHMpIHN1cHBvcnQgZm9yIEFNRCBJT01NVSBhbmQgS1ZNIFNWTSBBVklDLiBJdCBtb2RpZmllcyBjb3JlIGludGVycnVwdCByZW1hcHBpbmcgYW5kIHZDUFUgYWZmaW5pdHkgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIG5lc3RlZCBLVk0gb24gQU1EKS4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBuZXcgd2FrZXVwIGxpc3RzIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgZG8gbm90IGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIG9yIG1lbW9yeSBjb3JydXB0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMwNzY4OTk2ZWFhYzk2NjRjMTkxNGE0ODVhNWUyMjg1OWE5NmViNWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAyMjo1OTozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycV9yZW1hcHBpbmcuaFxuaW5kZXggMzdiOTRmNDg0ZWYzMzguLjQwYTIyMDZhMzNjMDhkIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vaXJxX3JlbWFwcGluZy5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFfcmVtYXBwaW5nLmhcbkBAIC0zNSw4ICszNSw4IEBAIHN0cnVjdCBhbWRfaW9tbXVfcGlfZGF0YSB7XG4gXHR1NjQgdmFwaWNfYWRkcjtcdFx0LyogUGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgdkNQVSdzIHZBUElDLiAqL1xuIFx0dTMyIGdhX3RhZztcbiBcdHUzMiB2ZWN0b3I7XHRcdC8qIEd1ZXN0IHZlY3RvciBvZiB0aGUgaW50ZXJydXB0ICovXG4tXHRpbnQgY3B1O1xuLVx0Ym9vbCBnYV9sb2dfaW50cjtcbitcdGludCBhcGljaWQ7XG4rXHRpbnQgZmxhZ3M7XG4gXHRib29sIGlzX2d1ZXN0X21vZGU7XG4gXHR2b2lkICppcl9kYXRhO1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9hdmljLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuY1xuaW5kZXggY2RkNWE2ZGM2NDZmMTEuLmQyMzhmNjVhODE3MmJjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9hdmljLmNcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jXG5AQCAtNjMsNiArNjMsOSBAQFxuIFx0Z2FfdGFnO1x0XHRcdFx0XHRcdFx0XHRcXFxuIH0pXG4gXG4rc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBsaXN0X2hlYWQsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpO1xuK3N0YXRpYyBERUZJTkVfUEVSX0NQVShyYXdfc3BpbmxvY2tfdCwgZ2FwcGlfdmNwdV93YWtldXBfbGlzdF9sb2NrKTtcbitcbiBzdGF0aWNfYXNzZXJ0KF9fQVZJQ19HQVRBRyhBVklDX1ZNX0lEX01BU0ssIEFWSUNfVkNQVV9JRFhfTUFTSykgPT0gLTF1KTtcbiBcbiAjZGVmaW5lIEFWSUNfQVVUT19NT0RFIC0xXG5AQCAtODc0LDYgKzg3Nyw5IEBAIGludCBhdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KTtcbiBcdHJhd19zcGluX2xvY2tfaW5pdChcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdF9sb2NrKTtcbiBcbitcdElOSVRfTElTVF9IRUFEKFx1MDAyNnN2bS1cdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KTtcbitcdHN2bS1cdTAwM2VnYXBwaV9jcHUgPSAtMTtcbitcbiBcdGlmICghZW5hYmxlX2FwaWN2IHx8ICFpcnFjaGlwX2luX2tlcm5lbCh2Y3B1LVx1MDAzZWt2bSkpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTg4Niw2ICs4OTIsNDQgQEAgaW50IGF2aWNfaW5pdF92Y3B1KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSwgaW50IGNwdSlcbit7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkICp3YWtldXBfbGlzdDtcbitcdHJhd19zcGlubG9ja190ICpzcGlubG9jaztcbitcbitcdGlmIChXQVJOX09OKGNwdSBcdTAwM2MgMCkpXG4rXHRcdHJldHVybjtcbitcbitcdHdha2V1cF9saXN0ID0gXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0LCBjcHUpO1xuK1x0c3BpbmxvY2sgPSBcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KTtcbitcdHJhd19zcGluX2xvY2soc3BpbmxvY2spO1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c3ZtLVx1MDAzZWdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpKVxuK1x0XHRsaXN0X2FkZF90YWlsKFx1MDAyNnN2bS1cdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0LCB3YWtldXBfbGlzdCk7XG4rXHRyYXdfc3Bpbl91bmxvY2soc3BpbmxvY2spO1xuK31cbitcbitzdGF0aWMgdm9pZCBhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3RydWN0IHZjcHVfc3ZtICpzdm0sIGludCBjcHUpXG4re1xuK1x0cmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrO1xuK1xuK1x0aWYgKFdBUk5fT04oY3B1IFx1MDAzYyAwKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0c3BpbmxvY2sgPSBcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KTtcbitcdHJhd19zcGluX2xvY2soc3BpbmxvY2spO1xuK1x0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2VnYXBwaV92Y3B1X3dha2V1cF9saXN0KSlcbitcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZzdm0tXHUwMDNlZ2FwcGlfdmNwdV93YWtldXBfbGlzdCk7XG4rXHRyYXdfc3Bpbl91bmxvY2soc3BpbmxvY2spO1xuK31cbitcbit2b2lkIGF2aWNfZGVzdHJveV92Y3B1KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuK3tcbitcdGlmIChzdm0tXHUwMDNlZ2FwcGlfY3B1ICE9IC0xIFx1MDAyNlx1MDAyNiBhbWRfaW9tbXVfZ2FwcGkpIHtcbitcdFx0YXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4rXHRcdHN2bS1cdTAwM2VnYXBwaV9jcHUgPSAtMTtcbitcdH1cbit9XG4rXG4gdm9pZCBhdmljX2FwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0YXZpY19oYW5kbGVfZGZyX3VwZGF0ZSh2Y3B1KTtcbkBAIC04OTYsMTMgKzk0MCwxOCBAQCBzdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxuIHtcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IGlycWZkLVx1MDAzZWlycV9ieXBhc3NfdmNwdTtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bTtcbiBcbiBcdGlmICghdmNwdSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnRvX3N2bSh2Y3B1KS1cdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcbitcdHN2bSA9IHRvX3N2bSh2Y3B1KTtcbitcbitcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdF9sb2NrLCBmbGFncyk7XG4gXHRsaXN0X2RlbChcdTAwMjZpcnFmZC1cdTAwM2V2Y3B1X2xpc3QpO1xuLVx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2dG9fc3ZtKHZjcHUpLVx1MDAzZWlyX2xpc3RfbG9jaywgZmxhZ3MpO1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3QpKVxuK1x0XHRhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcbiB9XG4gXG4gaW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG5AQCAtOTMyLDYgKzk4MSw4IEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuIFx0XHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bSA9IHRvX3N2bSh2Y3B1KTtcbiBcdFx0dTY0IGVudHJ5O1xuIFx0XHRpbnQgcmV0O1xuK1x0XHRpbnQgcG9zdGVkX2ludHI7XG4rXHRcdGJvb2wgaXNfdmNwdV93YWl0aW5nID0gZmFsc2U7XG4gXG4gXHRcdC8qXG4gXHRcdCAqIFByZXZlbnQgdGhlIHZDUFUgZnJvbSBiZWluZyBzY2hlZHVsZWQgb3V0IG9yIG1pZ3JhdGVkIHVudGlsXG5AQCAtOTQ5LDE1ICsxMDAwLDIzIEBAIGludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuIFx0XHQgKi9cbiBcdFx0ZW50cnkgPSBzdm0tXHUwMDNlYXZpY19waHlzaWNhbF9pZF9lbnRyeTtcbiBcdFx0aWYgKGVudHJ5IFx1MDAyNiBBVklDX1BIWVNJQ0FMX0lEX0VOVFJZX0lTX1JVTk5JTkdfTUFTSykge1xuLVx0XHRcdHBpX2RhdGEuY3B1ID0gZW50cnkgXHUwMDI2IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfSE9TVF9QSFlTSUNBTF9JRF9NQVNLO1xuK1x0XHRcdHBpX2RhdGEuYXBpY2lkID0gZW50cnkgXHUwMDI2IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfSE9TVF9QSFlTSUNBTF9JRF9NQVNLO1xuK1x0XHRcdHBpX2RhdGEuZmxhZ3MgPSBBTURfSU9NTVVfRkxBR19WQ1BVX1JVTk5JTkc7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0cGlfZGF0YS5jcHUgPSAtMTtcbi1cdFx0XHRwaV9kYXRhLmdhX2xvZ19pbnRyID0gZW50cnkgXHUwMDI2IEFWSUNfUEhZU0lDQUxfSURfRU5UUllfR0FfTE9HX0lOVFI7XG4rXHRcdFx0cG9zdGVkX2ludHIgPSAhIShlbnRyeSBcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUik7XG4rXHRcdFx0cGlfZGF0YS5mbGFncyA9IHBvc3RlZF9pbnRyIFx1MDAzY1x1MDAzYyBBTURfSU9NTVVfRkxBR19QT1NURURfSU5UUl9TSElGVDtcbitcdFx0XHRpZiAoYW1kX2lvbW11X2dhcHBpKSB7XG4rXHRcdFx0XHRwaV9kYXRhLmFwaWNpZCA9IGt2bV9jcHVfZ2V0X2FwaWNpZChzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbitcdFx0XHRcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0KSkge1xuK1x0XHRcdFx0XHRhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4rXHRcdFx0XHRcdGlzX3ZjcHVfd2FpdGluZyA9IHRydWU7XG4rXHRcdFx0XHR9XG4rXHRcdFx0fVxuIFx0XHR9XG4gXG4gXHRcdHJldCA9IGlycV9zZXRfdmNwdV9hZmZpbml0eShob3N0X2lycSwgXHUwMDI2cGlfZGF0YSk7XG4gXHRcdGlmIChyZXQpXG4tXHRcdFx0cmV0dXJuIHJldDtcbitcdFx0XHRnb3RvIGdhcHBpX2Vycl9vdXQ7XG4gXG4gXHRcdC8qXG4gXHRcdCAqIFJldmVydCB0byBsZWdhY3kgbW9kZSBpZiB0aGUgSU9NTVUgZGlkbid0IHByb3ZpZGUgbWV0YWRhdGFcbkBAIC05NjYsMTIgKzEwMjUsMTcgQEAgaW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG4gXHRcdCAqL1xuIFx0XHRpZiAoV0FSTl9PTl9PTkNFKCFwaV9kYXRhLmlyX2RhdGEpKSB7XG4gXHRcdFx0aXJxX3NldF92Y3B1X2FmZmluaXR5KGhvc3RfaXJxLCBOVUxMKTtcbi1cdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0XHRyZXQgPSAtRUlPO1xuK1x0XHRcdGdvdG8gZ2FwcGlfZXJyX291dDtcbiBcdFx0fVxuIFxuIFx0XHRpcnFmZC1cdTAwM2VpcnFfYnlwYXNzX2RhdGEgPSBwaV9kYXRhLmlyX2RhdGE7XG4gXHRcdGxpc3RfYWRkKFx1MDAyNmlycWZkLVx1MDAzZXZjcHVfbGlzdCwgXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3QpO1xuIFx0XHRyZXR1cm4gMDtcbitnYXBwaV9lcnJfb3V0OlxuK1x0XHRpZiAoaXNfdmNwdV93YWl0aW5nKVxuK1x0XHRcdGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdChzdm0sIHN2bS1cdTAwM2VnYXBwaV9jcHUpO1xuK1x0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFx0cmV0dXJuIGlycV9zZXRfdmNwdV9hZmZpbml0eShob3N0X2lycSwgTlVMTCk7XG4gfVxuQEAgLTEwMDQsMTAgKzEwNjgsMTQgQEAgZW51bSBhdmljX3ZjcHVfYWN0aW9uIHtcbiBcdEFWSUNfU1RBUlRfQkxPQ0tJTkdcdD0gQklUKDEpLFxuIH07XG4gXG4tc3RhdGljIHZvaWQgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUsXG4tXHRcdFx0XHRcdCAgICBlbnVtIGF2aWNfdmNwdV9hY3Rpb24gYWN0aW9uKVxuK3N0YXRpYyB2b2lkIGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgYXBpY2lkLFxuK1x0XHRcdFx0XHQgICAgaW50IGNwdSwgZW51bSBhdmljX3ZjcHVfYWN0aW9uIGFjdGlvbilcbiB7XG4tXHRib29sIGdhX2xvZ19pbnRyID0gKGFjdGlvbiBcdTAwMjYgQVZJQ19TVEFSVF9CTE9DS0lORyk7XG4rXHRpbnQgcG9zdGVkX2ludHIgPSAhIShhY3Rpb24gXHUwMDI2IEFWSUNfU1RBUlRfQkxPQ0tJTkcpIFx1MDAzY1x1MDAzY1xuK1x0XHRcdCAgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFJfU0hJRlQ7XG4rXHRpbnQgaXNfdmNwdV9ydW5uaW5nID0gKGFwaWNpZCBcdTAwM2U9IDApIFx1MDAzY1x1MDAzY1xuK1x0XHRcdCAgICAgIEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklOR19TSElGVDtcbitcdGludCBmbGFncyA9IHBvc3RlZF9pbnRyIHwgaXNfdmNwdV9ydW5uaW5nO1xuIFx0c3RydWN0IHZjcHVfc3ZtICpzdm0gPSB0b19zdm0odmNwdSk7XG4gXHRzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQ7XG4gXG5AQCAtMTAxNywxNiArMTA4NSwzMCBAQCBzdGF0aWMgdm9pZCBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSxcbiBcdCAqIEhlcmUsIHdlIGdvIHRocm91Z2ggdGhlIHBlci12Y3B1IGlyX2xpc3QgdG8gdXBkYXRlIGFsbCBleGlzdGluZ1xuIFx0ICogaW50ZXJydXB0IHJlbWFwcGluZyB0YWJsZSBlbnRyeSB0YXJnZXRpbmcgdGhpcyB2Y3B1LlxuIFx0ICovXG4tXHRpZiAobGlzdF9lbXB0eShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdCkpXG4rXHRpZiAobGlzdF9lbXB0eShcdTAwMjZzdm0tXHUwMDNlaXJfbGlzdCkpIHtcbitcdFx0aWYgKGFtZF9pb21tdV9nYXBwaSBcdTAwMjZcdTAwMjYgY3B1IFx1MDAzZT0gMClcbitcdFx0XHRzdm0tXHUwMDNlZ2FwcGlfY3B1ID0gY3B1O1xuIFx0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRpZiAoaXNfdmNwdV9ydW5uaW5nIFx1MDAyNlx1MDAyNiBhbWRfaW9tbXVfZ2FwcGkpIHtcbitcdFx0LyogSUYgY29uZGl0aW9uIGhhbmRsZXMgdGhlIGluaXRpYWwgc3RhdGUgKi9cbitcdFx0aWYgKHN2bS1cdTAwM2VnYXBwaV9jcHUgIT0gLTEpXG4rXHRcdFx0YXZpY19yZW1vdmVfdmNwdV9mcm9tX2dhcHBpX3dha2V1cF9saXN0KHN2bSwgc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4rXG4rXHRcdHN2bS1cdTAwM2VnYXBwaV9jcHUgPSBjcHU7IC8qIFN0b3JlIGNwdSBubyBhcyB0YXJnZXQgZm9yIEdBUFBJICovXG4rXHR9IGVsc2UgaWYgKGFtZF9pb21tdV9nYXBwaSkge1xuK1x0XHRhcGljaWQgPSBrdm1fY3B1X2dldF9hcGljaWQoc3ZtLVx1MDAzZWdhcHBpX2NwdSk7XG4rXHRcdGF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3Qoc3ZtLCBzdm0tXHUwMDNlZ2FwcGlfY3B1KTtcbitcdH1cbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXJxZmQsIFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0LCB2Y3B1X2xpc3QpIHtcbiBcdFx0dm9pZCAqZGF0YSA9IGlycWZkLVx1MDAzZWlycV9ieXBhc3NfZGF0YTtcbiBcbiBcdFx0aWYgKCEoYWN0aW9uIFx1MDAyNiBBVklDX1RPR0dMRV9PTl9PRkYpKVxuLVx0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfdXBkYXRlX2dhKGRhdGEsIGNwdSwgZ2FfbG9nX2ludHIpKTtcbi1cdFx0ZWxzZSBpZiAoY3B1IFx1MDAzZT0gMClcbi1cdFx0XHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUoZGF0YSwgY3B1LCBnYV9sb2dfaW50cikpO1xuK1x0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfdXBkYXRlX2dhKGRhdGEsIGFwaWNpZCwgZmxhZ3MpKTtcbitcdFx0ZWxzZSBpZiAoaXNfdmNwdV9ydW5uaW5nKVxuK1x0XHRcdFdBUk5fT05fT05DRShhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZShkYXRhLCBhcGljaWQsIGZsYWdzKSk7XG4gXHRcdGVsc2VcbiBcdFx0XHRXQVJOX09OX09OQ0UoYW1kX2lvbW11X2RlYWN0aXZhdGVfZ3Vlc3RfbW9kZShkYXRhKSk7XG4gXHR9XG5AQCAtMTA4MCw3ICsxMTYyLDcgQEAgc3RhdGljIHZvaWQgX19hdmljX3ZjcHVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUsXG4gXG4gXHRXUklURV9PTkNFKGt2bV9zdm0tXHUwMDNlYXZpY19waHlzaWNhbF9pZF90YWJsZVt2Y3B1LVx1MDAzZXZjcHVfaWRdLCBlbnRyeSk7XG4gXG4tXHRhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIGhfcGh5c2ljYWxfaWQsIGFjdGlvbik7XG4rXHRhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIGhfcGh5c2ljYWxfaWQsIGNwdSwgYWN0aW9uKTtcbiBcbiBcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcbiB9XG5AQCAtMTEyMyw3ICsxMjA1LDcgQEAgc3RhdGljIHZvaWQgX19hdmljX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZW51bSBhdmljX3ZjcHVfYWN0aW9uIGFjdGlvbilcbiBcdCAqL1xuIFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnN2bS1cdTAwM2Vpcl9saXN0X2xvY2ssIGZsYWdzKTtcbiBcbi1cdGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHkodmNwdSwgLTEsIGFjdGlvbik7XG4rXHRhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5KHZjcHUsIC0xLCAtMSwgYWN0aW9uKTtcbiBcbiBcdFdBUk5fT05fT05DRShlbnRyeSBcdTAwMjYgQVZJQ19QSFlTSUNBTF9JRF9FTlRSWV9HQV9MT0dfSU5UUik7XG4gXG5AQCAtMTI5Niw2ICsxMzc4LDIxIEBAIHN0YXRpYyBib29sIF9faW5pdCBhdmljX3dhbnRfYXZpY19lbmFibGVkKHZvaWQpXG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcih2b2lkKVxuK3tcbitcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkICp2Y3B1X3dha2V1cF9saXN0ID0gXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0LCBjcHUpO1xuK1x0cmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrID0gXHUwMDI2cGVyX2NwdShnYXBwaV92Y3B1X3dha2V1cF9saXN0X2xvY2ssIGNwdSk7XG4rXHRzdHJ1Y3QgdmNwdV9zdm0gKnN2bTtcbitcbitcdHJhd19zcGluX2xvY2soc3BpbmxvY2spO1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShzdm0sIHZjcHVfd2FrZXVwX2xpc3QsIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3QpIHtcbitcdFx0aWYgKGt2bV9sYXBpY19maW5kX2hpZ2hlc3RfaXJyKFx1MDAyNnN2bS1cdTAwM2V2Y3B1KSBcdTAwM2U9IDApXG4rXHRcdFx0a3ZtX3ZjcHVfd2FrZV91cChcdTAwMjZzdm0tXHUwMDNldmNwdSk7XG4rXHR9XG4rXHRyYXdfc3Bpbl91bmxvY2soc3BpbmxvY2spO1xuK31cbitcbiAvKlxuICAqIE5vdGU6XG4gICogLSBUaGUgbW9kdWxlIHBhcmFtIGF2aWMgZW5hYmxlIGJvdGggeEFQSUMgYW5kIHgyQVBJQyBtb2RlLlxuQEAgLTEzMDQsMTIgKzE0MDEsMTggQEAgc3RhdGljIGJvb2wgX19pbml0IGF2aWNfd2FudF9hdmljX2VuYWJsZWQodm9pZClcbiAgKi9cbiBib29sIF9faW5pdCBhdmljX2hhcmR3YXJlX3NldHVwKHZvaWQpXG4ge1xuK1x0aW50IGNwdTtcbiBcdGF2aWMgPSBhdmljX3dhbnRfYXZpY19lbmFibGVkKCk7XG4gXHRpZiAoIWF2aWMpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByX2luZm8oXCJBVklDIGVuYWJsZWRcXG5cIik7XG4gXG4rXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG4rXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnBlcl9jcHUoZ2FwcGlfdmNwdV93YWtldXBfbGlzdCwgY3B1KSk7XG4rXHRcdHJhd19zcGluX2xvY2tfaW5pdChcdTAwMjZwZXJfY3B1KGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3RfbG9jaywgY3B1KSk7XG4rXHR9XG4rXG4gXHQvKiBBVklDIGlzIGEgcHJlcmVxdWlzaXRlIGZvciB4MkFWSUMuICovXG4gXHR4MmF2aWNfZW5hYmxlZCA9IGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9YMkFWSUMpO1xuIFx0aWYgKHgyYXZpY19lbmFibGVkKSB7XG5AQCAtMTMzMyw2ICsxNDM2LDcgQEAgYm9vbCBfX2luaXQgYXZpY19oYXJkd2FyZV9zZXR1cCh2b2lkKVxuIFx0XHRlbmFibGVfaXBpdiA9IGZhbHNlO1xuIFxuIFx0YW1kX2lvbW11X3JlZ2lzdGVyX2dhX2xvZ19ub3RpZmllcihcdTAwMjZhdmljX2dhX2xvZ19ub3RpZmllcik7XG4rXHRrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyKFx1MDAyNmF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXIpO1xuIFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCBlMDJhMzhkYTUyOTZlMy4uYjY4NzEzM2Y4NTI4YmEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtMTM1Niw2ICsxMzU2LDggQEAgc3RhdGljIHZvaWQgc3ZtX3ZjcHVfZnJlZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2c3ZtLVx1MDAzZWlyX2xpc3QpKTtcbiBcbitcdGF2aWNfZGVzdHJveV92Y3B1KHN2bSk7XG4rXG4gXHRzdm1fbGVhdmVfbmVzdGVkKHZjcHUpO1xuIFx0c3ZtX2ZyZWVfbmVzdGVkKHN2bSk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbmluZGV4IDUxMzc0MTZiZTU5M2Q3Li40N2Q1YmI1ZDcxMDNkYSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbkBAIC0zNjIsNiArMzYyLDEwIEBAIHN0cnVjdCB2Y3B1X3N2bSB7XG4gXG4gXHQvKiBHdWVzdCBHSUYgdmFsdWUsIHVzZWQgd2hlbiB2R0lGIGlzIG5vdCBlbmFibGVkICovXG4gXHRib29sIGd1ZXN0X2dpZjtcbitcbitcdC8qIEdBUFBJIHJlbGF0ZWQgZmllbGRzICovXG4rXHRzdHJ1Y3QgbGlzdF9oZWFkIGdhcHBpX3ZjcHVfd2FrZXVwX2xpc3Q7XG4rXHRpbnQgZ2FwcGlfY3B1O1xuIH07XG4gXG4gc3RydWN0IHN2bV9jcHVfZGF0YSB7XG5AQCAtOTA5LDYgKzkxMyw3IEBAIHZvaWQgYXZpY19pbml0X3ZtY2Ioc3RydWN0IHZjcHVfc3ZtICpzdm0sIHN0cnVjdCB2bWNiICp2bWNiKTtcbiBpbnQgYXZpY19pbmNvbXBsZXRlX2lwaV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBpbnQgYXZpY191bmFjY2VsZXJhdGVkX2FjY2Vzc19pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBpbnQgYXZpY19pbml0X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pO1xuK3ZvaWQgYXZpY19kZXN0cm95X3ZjcHUoc3RydWN0IHZjcHVfc3ZtICpzdm0pO1xuIHZvaWQgYXZpY192Y3B1X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3B1KTtcbiB2b2lkIGF2aWNfdmNwdV9wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiB2b2lkIGF2aWNfYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmggYi9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXUuaFxuaW5kZXggODM0ZDhmYWJmYmEzODcuLjA0NDE3OWNhYjEyZTRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11LmhcbisrKyBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdS5oXG5AQCAtNDEsNiArNDEsNyBAQCBpbnQgYW1kX2lvbW11X2VuYWJsZSh2b2lkKTtcbiB2b2lkIGFtZF9pb21tdV9kaXNhYmxlKHZvaWQpO1xuIGludCBhbWRfaW9tbXVfcmVlbmFibGUoaW50IG1vZGUpO1xuIGludCBhbWRfaW9tbXVfZW5hYmxlX2ZhdWx0aW5nKHVuc2lnbmVkIGludCBjcHUpO1xuK2V4dGVybiBib29sIGFtZF9pb21tdV9nYXBwaTtcbiBleHRlcm4gaW50IGFtZF9pb21tdV9ndWVzdF9pcjtcbiBleHRlcm4gZW51bSBwcm90ZWN0aW9uX2RvbWFpbl9tb2RlIGFtZF9pb21tdV9wZ3RhYmxlO1xuIGV4dGVybiBpbnQgYW1kX2lvbW11X2dwdF9sZXZlbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaCBiL2RyaXZlcnMvaW9tbXUvYW1kL2FtZF9pb21tdV90eXBlcy5oXG5pbmRleCBmOWY3MTgwODc4OTMwMy4uZGUwYjIzMzA2OTQ0YjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9hbWRfaW9tbXVfdHlwZXMuaFxuKysrIGIvZHJpdmVycy9pb21tdS9hbWQvYW1kX2lvbW11X3R5cGVzLmhcbkBAIC05NCw2ICs5NCw3IEBAXG4gI2RlZmluZSBGRUFUVVJFX1gyQVBJQ1x0XHRCSVRfVUxMKDIpXG4gI2RlZmluZSBGRUFUVVJFX05YXHRcdEJJVF9VTEwoMylcbiAjZGVmaW5lIEZFQVRVUkVfR1RcdFx0QklUX1VMTCg0KVxuKyNkZWZpbmUgRkVBVFVSRV9HQVBQSVx0XHRCSVRfVUxMKDUpXG4gI2RlZmluZSBGRUFUVVJFX0lBXHRcdEJJVF9VTEwoNilcbiAjZGVmaW5lIEZFQVRVUkVfR0FcdFx0QklUX1VMTCg3KVxuICNkZWZpbmUgRkVBVFVSRV9IRVx0XHRCSVRfVUxMKDgpXG5AQCAtMTEzLDYgKzExNCw3IEBAXG4gLyogRXh0ZW5kZWQgRmVhdHVyZSAyIEJpdHMgKi9cbiAjZGVmaW5lIEZFQVRVUkVfU0VWU05QSU9fU1VQXHRCSVRfVUxMKDEpXG4gI2RlZmluZSBGRUFUVVJFX0dDUjNUUlBNT0RFXHRCSVRfVUxMKDMpXG4rI2RlZmluZSBGRUFUVVJFX0dBUFBJRElTU1VQXHRCSVRfVUxMKDQpXG4gI2RlZmluZSBGRUFUVVJFX1NOUEFWSUNTVVBcdEdFTk1BU0tfVUxMKDcsIDUpXG4gI2RlZmluZSBGRUFUVVJFX1NOUEFWSUNTVVBfR0FNKHgpIFxcXG4gXHQoRklFTERfR0VUKEZFQVRVUkVfU05QQVZJQ1NVUCwgeCkgPT0gMHgxKVxuQEAgLTE5MCw2ICsxOTIsNyBAQFxuICNkZWZpbmUgQ09OVFJPTF9FUEhfRU5cdFx0NDVcbiAjZGVmaW5lIENPTlRST0xfWFRfRU5cdFx0NTBcbiAjZGVmaW5lIENPTlRST0xfSU5UQ0FQWFRfRU5cdDUxXG4rI2RlZmluZSBDT05UUk9MX0dBUFBJX0VOXHQ1NVxuICNkZWZpbmUgQ09OVFJPTF9HQ1IzVFJQTU9ERVx0NThcbiAjZGVmaW5lIENPTlRST0xfSVJUQ0FDSEVESVNcdDU5XG4gI2RlZmluZSBDT05UUk9MX1NOUEFWSUNfRU5cdDYxXG5AQCAtMTAwNCw3ICsxMDA3LDggQEAgdW5pb24gaXJ0ZV9nYV9sbyB7XG4gXHRcdCAgICBub19mYXVsdFx0OiAxLFxuIFx0XHQgICAgLyogLS0tLS0tICovXG4gXHRcdCAgICBnYV9sb2dfaW50clx0OiAxLFxuLVx0XHQgICAgcnN2ZDFcdDogMyxcbitcdFx0ICAgIHJzdmQxXHQ6IDIsXG4rXHRcdCAgICBnYXBwaV9kaXNcdDogMSxcbiBcdFx0ICAgIGlzX3J1blx0OiAxLFxuIFx0XHQgICAgLyogLS0tLS0tICovXG4gXHRcdCAgICBndWVzdF9tb2RlXHQ6IDEsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvaW5pdC5jIGIvZHJpdmVycy9pb21tdS9hbWQvaW5pdC5jXG5pbmRleCAzYmRiMzgwZDIzZTlhOS4uYjNlMWQ4ZWU3ZTlkNjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pbml0LmNcbisrKyBiL2RyaXZlcnMvaW9tbXUvYW1kL2luaXQuY1xuQEAgLTE2MCw2ICsxNjAsOSBAQCB1OCBhbWRfaW9tbXVfaHB0X2xldmVsO1xuIC8qIEd1ZXN0IHBhZ2UgdGFibGUgbGV2ZWwgKi9cbiBpbnQgYW1kX2lvbW11X2dwdF9sZXZlbCA9IFBBR0VfTU9ERV80X0xFVkVMO1xuIFxuK2Jvb2wgYW1kX2lvbW11X2dhcHBpO1xuK0VYUE9SVF9TWU1CT0woYW1kX2lvbW11X2dhcHBpKTtcbitcbiBpbnQgYW1kX2lvbW11X2d1ZXN0X2lyID0gQU1EX0lPTU1VX0dVRVNUX0lSX1ZBUElDO1xuIHN0YXRpYyBpbnQgYW1kX2lvbW11X3h0X21vZGUgPSBJUlFfUkVNQVBfWEFQSUNfTU9ERTtcbiBcbkBAIC0zMDM1LDExICszMDM4LDIwIEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9pb21tdXNfdmFwaWModm9pZClcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuK1x0aWYgKGFtZF9pb21tdV9nYXBwaSBcdTAwMjZcdTAwMjZcbitcdCAgICAhKGNoZWNrX2ZlYXR1cmUoRkVBVFVSRV9HQVBQSSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgICBBTURfSU9NTVVfR1VFU1RfSVJfVkFQSUMoYW1kX2lvbW11X2d1ZXN0X2lyKSkpIHtcbitcdFx0cHJfd2FybihcIkdBUFBJIGlzIG5vdCBzdXBwb3J0ZWQuXFxuXCIpO1xuK1x0XHRhbWRfaW9tbXVfZ2FwcGkgPSBmYWxzZTtcbitcdH1cbitcbiBcdC8qIEVuYWJsaW5nIEdBTSBhbmQgU05QQVZJQyBzdXBwb3J0ICovXG4gXHRmb3JfZWFjaF9pb21tdShpb21tdSkge1xuLVx0XHRpZiAoaW9tbXVfaW5pdF9nYV9sb2coaW9tbXUpIHx8XG4tXHRcdCAgICBpb21tdV9nYV9sb2dfZW5hYmxlKGlvbW11KSlcbi1cdFx0XHRyZXR1cm47XG4rXHRcdGlmIChhbWRfaW9tbXVfZ2FwcGkpXG4rXHRcdFx0aW9tbXVfZmVhdHVyZV9lbmFibGUoaW9tbXUsIENPTlRST0xfR0FQUElfRU4pO1xuK1x0XHRlbHNlIGlmIChpb21tdV9pbml0X2dhX2xvZyhpb21tdSkgfHxcbitcdFx0XHQgaW9tbXVfZ2FfbG9nX2VuYWJsZShpb21tdSkpXG4rXHRcdFx0IHJldHVybjtcbiBcbiBcdFx0aW9tbXVfZmVhdHVyZV9lbmFibGUoaW9tbXUsIENPTlRST0xfR0FNX0VOKTtcbiBcdFx0aWYgKGFtZF9pb21tdV9zbnBfZW4pXG5AQCAtMzA0Nyw3ICszMDU5LDggQEAgc3RhdGljIHZvaWQgZW5hYmxlX2lvbW11c192YXBpYyh2b2lkKVxuIFx0fVxuIFxuIFx0YW1kX2lvbW11X2lycV9vcHMuY2FwYWJpbGl0eSB8PSAoMSBcdTAwM2NcdTAwM2MgSVJRX1BPU1RJTkdfQ0FQKTtcbi1cdHByX2luZm8oXCJWaXJ0dWFsIEFQSUMgZW5hYmxlZFxcblwiKTtcbitcdHByX2luZm8oXCJWaXJ0dWFsIEFQSUMgZW5hYmxlZCB3aXRoICVzXFxuXCIsXG4rXHRcdGFtZF9pb21tdV9nYXBwaSA/IFwiR0FQUElcIiA6IFwiR0FMT0dcIik7XG4gI2VuZGlmXG4gfVxuIFxuQEAgLTM3MzgsNiArMzc1MSw4IEBAIHN0YXRpYyBpbnQgX19pbml0IHBhcnNlX2FtZF9pb21tdV9vcHRpb25zKGNoYXIgKnN0cilcbiBcdFx0fSBlbHNlIGlmIChzdHJuY21wKHN0ciwgXCJ2Ml9wZ3NpemVzX29ubHlcIiwgMTUpID09IDApIHtcbiBcdFx0XHRwcl9pbmZvKFwiUmVzdHJpY3RpbmcgVjEgcGFnZS1zaXplcyB0byA0S2lCLzJNaUIvMUdpQlwiKTtcbiBcdFx0XHRhbWRfaW9tbXVfcGdzaXplX2JpdG1hcCA9IEFNRF9JT01NVV9QR1NJWkVTX1YyO1xuK1x0XHR9IGVsc2UgaWYgKHN0cm5jbXAoc3RyLCBcImdhcHBpXCIsIDUpID09IDApIHtcbitcdFx0XHRhbWRfaW9tbXVfZ2FwcGkgPSB0cnVlO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdHByX25vdGljZShcIlVua25vd24gb3B0aW9uIC0gJyVzJ1xcblwiLCBzdHIpO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvaW9tbXUuYyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmNcbmluZGV4IDU3ZGM4ZmFiYzdkOWI5Li40NjkwY2VjYzlhYTdlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmNcbisrKyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmNcbkBAIC0zOTU5LDE5ICszOTU5LDI4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgYW1kX2lyX2RvbWFpbl9vcHMgPSB7XG4gXHQuZGVhY3RpdmF0ZSA9IGlycV9yZW1hcHBpbmdfZGVhY3RpdmF0ZSxcbiB9O1xuIFxuLXN0YXRpYyB2b2lkIF9fYW1kX2lvbW11X3VwZGF0ZV9nYShzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnksIGludCBjcHUsXG4tXHRcdFx0XHQgIGJvb2wgZ2FfbG9nX2ludHIpXG4rc3RhdGljIHZvaWQgX19hbWRfaW9tbXVfdXBkYXRlX2dhKHN0cnVjdCBpcnRlX2dhICplbnRyeSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxuIHtcbi1cdGlmIChjcHUgXHUwMDNlPSAwKSB7XG4rXHRpZiAoZmxhZ3MgXHUwMDI2IEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklORykge1xuIFx0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZGVzdGluYXRpb24gPVxuLVx0XHRcdFx0XHRBUElDSURfVE9fSVJURV9ERVNUX0xPKGNwdSk7XG4rXHRcdFx0XHRcdEFQSUNJRF9UT19JUlRFX0RFU1RfTE8oYXBpY2lkKTtcbiBcdFx0ZW50cnktXHUwMDNlaGkuZmllbGRzLmRlc3RpbmF0aW9uID1cbi1cdFx0XHRcdFx0QVBJQ0lEX1RPX0lSVEVfREVTVF9ISShjcHUpO1xuK1x0XHRcdFx0XHRBUElDSURfVE9fSVJURV9ERVNUX0hJKGFwaWNpZCk7XG4gXHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSB0cnVlO1xuIFx0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfbG9nX2ludHIgPSBmYWxzZTtcbiBcdH0gZWxzZSB7XG4tXHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcbi1cdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX2xvZ19pbnRyID0gZ2FfbG9nX2ludHI7XG4rXHRcdGJvb2wgcG9zdGVkX2ludHIgPSAhIShmbGFncyBcdTAwMjYgQU1EX0lPTU1VX0ZMQUdfUE9TVEVEX0lOVFIpO1xuK1x0XHRpZiAoYW1kX2lvbW11X2dhcHBpKSB7XG4rXHRcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhcHBpX2RpcyA9ICFwb3N0ZWRfaW50ciBcdTAwMjZcdTAwMjZcbitcdFx0XHRcdFx0XHRcdCAgIGNoZWNrX2ZlYXR1cmUyKEZFQVRVUkVfR0FQUElESVNTVVApO1xuK1x0XHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5pc19ydW4gPSBmYWxzZTtcbitcdFx0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZGVzdGluYXRpb24gPVxuK1x0XHRcdFx0XHRcdEFQSUNJRF9UT19JUlRFX0RFU1RfTE8oYXBpY2lkKTtcbitcdFx0XHRlbnRyeS1cdTAwM2VoaS5maWVsZHMuZGVzdGluYXRpb24gPSBBUElDSURfVE9fSVJURV9ERVNUX0hJKGFwaWNpZCk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmlzX3J1biA9IGZhbHNlO1xuK1x0XHRcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5nYV9sb2dfaW50ciA9IHBvc3RlZF9pbnRyO1xuK1x0XHR9XG4gXHR9XG4gfVxuIFxuQEAgLTM5OTIsNyArNDAwMSw3IEBAIHN0YXRpYyB2b2lkIF9fYW1kX2lvbW11X3VwZGF0ZV9nYShzdHJ1Y3QgaXJ0ZV9nYSAqZW50cnksIGludCBjcHUsXG4gICogYW5kIHRodXMgZG9uJ3QgcmVxdWlyZSBhbiBpbnZhbGlkYXRpb24gdG8gZW5zdXJlIHRoZSBJT01NVSBjb25zdW1lcyBmcmVzaFxuICAqIGluZm9ybWF0aW9uLlxuICAqL1xuLWludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpXG4raW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKVxuIHtcbiBcdHN0cnVjdCBhbWRfaXJfZGF0YSAqaXJfZGF0YSA9IChzdHJ1Y3QgYW1kX2lyX2RhdGEgKilkYXRhO1xuIFx0c3RydWN0IGlydGVfZ2EgKmVudHJ5ID0gKHN0cnVjdCBpcnRlX2dhICopIGlyX2RhdGEtXHUwMDNlZW50cnk7XG5AQCAtNDAwNiwxNCArNDAxNSwxNCBAQCBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKVxuIFx0aWYgKCFpcl9kYXRhLVx1MDAzZWlvbW11KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbi1cdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgY3B1LCBnYV9sb2dfaW50cik7XG4rXHRfX2FtZF9pb21tdV91cGRhdGVfZ2EoZW50cnksIGFwaWNpZCwgZmxhZ3MpO1xuIFxuIFx0cmV0dXJuIF9fbW9kaWZ5X2lydGVfZ2EoaXJfZGF0YS1cdTAwM2Vpb21tdSwgaXJfZGF0YS1cdTAwM2VpcnFfMl9pcnRlLmRldmlkLFxuIFx0XHRcdFx0aXJfZGF0YS1cdTAwM2VpcnFfMl9pcnRlLmluZGV4LCBlbnRyeSk7XG4gfVxuIEVYUE9SVF9TWU1CT0woYW1kX2lvbW11X3VwZGF0ZV9nYSk7XG4gXG4taW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpXG4raW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcbiB7XG4gXHRzdHJ1Y3QgYW1kX2lyX2RhdGEgKmlyX2RhdGEgPSAoc3RydWN0IGFtZF9pcl9kYXRhICopZGF0YTtcbiBcdHN0cnVjdCBpcnRlX2dhICplbnRyeSA9IChzdHJ1Y3QgaXJ0ZV9nYSAqKSBpcl9kYXRhLVx1MDAzZWVudHJ5O1xuQEAgLTQwMzQsOSArNDA0MywxMyBAQCBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbiBcdGVudHJ5LVx1MDAzZWxvLmZpZWxkc192YXBpYy5ndWVzdF9tb2RlICA9IDE7XG4gXHRlbnRyeS1cdTAwM2VoaS5maWVsZHMuZ2Ffcm9vdF9wdHIgICAgICAgPSBpcl9kYXRhLVx1MDAzZWdhX3Jvb3RfcHRyO1xuIFx0ZW50cnktXHUwMDNlaGkuZmllbGRzLnZlY3RvciAgICAgICAgICAgID0gaXJfZGF0YS1cdTAwM2VnYV92ZWN0b3I7XG4tXHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfdGFnICAgICAgPSBpcl9kYXRhLVx1MDAzZWdhX3RhZztcbiBcbi1cdF9fYW1kX2lvbW11X3VwZGF0ZV9nYShlbnRyeSwgY3B1LCBnYV9sb2dfaW50cik7XG4rXHRpZiAoYW1kX2lvbW11X2dhcHBpKVxuK1x0XHRlbnRyeS1cdTAwM2Vsby5maWVsZHNfdmFwaWMuZ2FfdGFnID0gUE9TVEVEX0lOVFJfV0FLRVVQX1ZFQ1RPUjtcbitcdGVsc2VcbitcdFx0ZW50cnktXHUwMDNlbG8uZmllbGRzX3ZhcGljLmdhX3RhZyA9IGlyX2RhdGEtXHUwMDNlZ2FfdGFnO1xuK1xuK1x0X19hbWRfaW9tbXVfdXBkYXRlX2dhKGVudHJ5LCBhcGljaWQsIGZsYWdzKTtcbiBcbiBcdHJldHVybiBtb2RpZnlfaXJ0ZV9nYShpcl9kYXRhLVx1MDAzZWlvbW11LCBpcl9kYXRhLVx1MDAzZWlycV8yX2lydGUuZGV2aWQsXG4gXHRcdFx0ICAgICAgaXJfZGF0YS1cdTAwM2VpcnFfMl9pcnRlLmluZGV4LCBlbnRyeSk7XG5AQCAtNDEwNyw4ICs0MTIwLDggQEAgc3RhdGljIGludCBhbWRfaXJfc2V0X3ZjcHVfYWZmaW5pdHkoc3RydWN0IGlycV9kYXRhICpkYXRhLCB2b2lkICppbmZvKVxuIFx0XHRpcl9kYXRhLVx1MDAzZWdhX3ZlY3RvciA9IHBpX2RhdGEtXHUwMDNldmVjdG9yO1xuIFx0XHRpcl9kYXRhLVx1MDAzZWdhX3RhZyA9IHBpX2RhdGEtXHUwMDNlZ2FfdGFnO1xuIFx0XHRpZiAocGlfZGF0YS1cdTAwM2Vpc19ndWVzdF9tb2RlKVxuLVx0XHRcdHJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtXHUwMDNlY3B1LFxuLVx0XHRcdFx0XHRcdFx0ICAgIHBpX2RhdGEtXHUwMDNlZ2FfbG9nX2ludHIpO1xuK1x0XHRcdHJldCA9IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKGlyX2RhdGEsIHBpX2RhdGEtXHUwMDNlYXBpY2lkLFxuK1x0XHRcdFx0XHRcdFx0ICAgIHBpX2RhdGEtXHUwMDNlZmxhZ3MpO1xuIFx0XHRlbHNlXG4gXHRcdFx0cmV0ID0gYW1kX2lvbW11X2RlYWN0aXZhdGVfZ3Vlc3RfbW9kZShpcl9kYXRhKTtcbiBcdH0gZWxzZSB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9hbWQtaW9tbXUuaCBiL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmhcbmluZGV4IGVkY2VlOWY1MzM1YTZmLi44N2U3NmY2MTdlYTE4NSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmhcbisrKyBiL2luY2x1ZGUvbGludXgvYW1kLWlvbW11LmhcbkBAIC0zMCw4ICszMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbWRfaW9tbXVfZGV0ZWN0KHZvaWQpIHsgfVxuIC8qIElPTU1VIEFWSUMgRnVuY3Rpb24gKi9cbiBleHRlcm4gaW50IGFtZF9pb21tdV9yZWdpc3Rlcl9nYV9sb2dfbm90aWZpZXIoaW50ICgqbm90aWZpZXIpKHUzMikpO1xuIFxuLWV4dGVybiBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgY3B1LCBib29sIGdhX2xvZ19pbnRyKTtcbi1leHRlcm4gaW50IGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlKHZvaWQgKmRhdGEsIGludCBjcHUsIGJvb2wgZ2FfbG9nX2ludHIpO1xuK2V4dGVybiBpbnQgYW1kX2lvbW11X3VwZGF0ZV9nYSh2b2lkICpkYXRhLCBpbnQgYXBpY2lkLCBpbnQgZmxhZ3MpO1xuK2V4dGVybiBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGFwaWNpZCwgaW50IGZsYWdzKTtcbiBleHRlcm4gaW50IGFtZF9pb21tdV9kZWFjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSk7XG4gXG4gI2Vsc2UgLyogZGVmaW5lZChDT05GSUdfQU1EX0lPTU1VKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfSVJRX1JFTUFQKSAqL1xuQEAgLTQyLDEyICs0MiwxMiBAQCBhbWRfaW9tbXVfcmVnaXN0ZXJfZ2FfbG9nX25vdGlmaWVyKGludCAoKm5vdGlmaWVyKSh1MzIpKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IGFtZF9pb21tdV91cGRhdGVfZ2Eodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbitzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfdXBkYXRlX2dhKHZvaWQgKmRhdGEsIGludCBhcGljaWQsIGludCBmbGFncylcbiB7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBpbnQgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGUodm9pZCAqZGF0YSwgaW50IGNwdSwgYm9vbCBnYV9sb2dfaW50cilcbitzdGF0aWMgaW5saW5lIGludCBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZSh2b2lkICpkYXRhLCBpbnQgYXBpY2lkLCBpbnQgZmxhZ3MpXG4ge1xuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTc2LDQgKzc2LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IGFtZF9pb21tdV9zbnBfZGlzYWJsZSh2b2lkKSB7IHJldHVybiAwOyB9XG4gc3RhdGljIGlubGluZSBib29sIGFtZF9pb21tdV9zZXZfdGlvX3N1cHBvcnRlZCh2b2lkKSB7IHJldHVybiBmYWxzZTsgfVxuICNlbmRpZlxuIFxuKyNkZWZpbmUgQU1EX0lPTU1VX0ZMQUdfVkNQVV9SVU5OSU5HX1NISUZUIDBcbisjZGVmaW5lIEFNRF9JT01NVV9GTEFHX1ZDUFVfUlVOTklORyAgQklUKDApXG4rXG4rI2RlZmluZSBBTURfSU9NTVVfRkxBR19QT1NURURfSU5UUl9TSElGVCAxXG4rI2RlZmluZSBBTURfSU9NTVVfRkxBR19QT1NURURfSU5UUiAgQklUKDEpXG4rXG4rZXh0ZXJuIGJvb2wgYW1kX2lvbW11X2dhcHBpO1xuICNlbmRpZiAvKiBfQVNNX1g4Nl9BTURfSU9NTVVfSCAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTk6MzcuODE1MzgwNTQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI0MjA3Nzk2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBFdmFsdWF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgbmVlZCB0byBhc3Nlc3MgaWYgaXQgaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIGZpbGVzIG1vZGlmaWVkIOKAkyBgYXJjaC94ODYva3ZtL3N2bS9hdmljLmNgLCBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AsIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oYCwgYWxvbmcgd2l0aCBzb21lIElPTU1VIGZpbGVzIChgZHJpdmVycy9pb21tdS9hbWQvKmAgYW5kIGBpbmNsdWRlL2xpbnV4L2FtZC1pb21tdS5oYCkg4oCTIGltbWVkaWF0ZWx5IGNsdWUgbWUgaW4uIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIEd1ZXN0IEFQSUMgUG9zdGVkIEludGVycnVwdHMgKEdBUFBJKSBzdXBwb3J0IHdpdGhpbiB0aGUgQU1EIElPTU1VIGFuZCBLVk0gU1ZNIEFWSUMuIFRoaXMgc2NyZWFtcyBcInZpcnR1YWxpemF0aW9uXCIgYW5kIFwiSU9NTVUsXCIgc28gaXQncyBhIGhpZ2gtcHJvYmFiaWxpdHkgdGFyZ2V0LlxuXG5UaGUgbmV4dCBxdWVzdGlvbjogSXMgdGhpcyByZWFjaGFibGUgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQ/IENhbiB3ZSB0cmlnZ2VyIHRoaXMgaW4gc29tZXRoaW5nIGxpa2UgR0NFIG9yIFFFTVU/IEFic29sdXRlbHkuIEtWTSBTVk0g4oCTIEFNRCdzIHZpcnR1YWxpemF0aW9uIOKAkyBjYW4gZGVmaW5pdGVseSBiZSB0ZXN0ZWQgd2l0aCBuZXN0ZWQgdmlydHVhbGl6YXRpb24sIGxpa2UgcnVubmluZyBRRU1VICp3aXRoKiBLVk0sIG9yIGV2ZW4gd2l0aGluIEdDRSBpbnN0YW5jZXMgdGhhdCBoYXZlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBlbmFibGVkLiBHb29kIG5ld3Mg4oCTIHN5emthbGxlciwgd2hpY2ggd2UncmUgdXNpbmcsIGRvZXMgcnVuIGluIFFFTVUvR0NFLCBhbmQgaXQncyBkZWZpbml0ZWx5IGNhcGFibGUgb2YgZnV6emluZyBLVk0uIFRoaXMgcGF0Y2ggY2xlYXJseSB0b3VjaGVzIEtWTSBTVk0gYW5kIHRoZSBBTUQgSU9NTVUsIHNvIHRoYXQncyB0d28gc2VwYXJhdGUgYXJlYXMgdGhhdCBuZWVkIGNoZWNraW5nLlxuXG5Ib2xkIG9uLCBgYW1kX2lvbW11X2dhcHBpYCDigJMgdGhhdCdzIGEgKm5ldyogZmVhdHVyZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgbmVlZGVkLiBMZXQncyBzZWUuLi4gSSdtIHRoaW5raW5nIGBLVk1fQU1EYCBhbmQgYEFNRF9JT01NVWAgYXJlIHRoZSBvYnZpb3VzIGNhbmRpZGF0ZXMuIFRpbWUgdG8gYnJlYWsgb3V0IGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciB0aG9zZSBjb25maWcgc3ltYm9scy4gTGV0J3MgZmluZCBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM5OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjU5OjQ0LjA1NzQ2MzAwM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzAwNTcwNDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1fQU1EXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTk6NTEuNzU4MDUzNjE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQwODc3NDk3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gY2hlY2tpbmcgdGhlIGBBTURfSU9NTVVgIGNvbmZpZ3VyYXRpb246XG5cbioqQW5hbHl6aW5nIEFNRF9JT01NVSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGdldCB0byBpdC4gRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgYEFNRF9JT01NVWAgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBjcnVjaWFsIGZvciBtYW5hZ2luZyBJL08gZGV2aWNlcywgcGFydGljdWxhcmx5IGluIGVudmlyb25tZW50cyB3aGVyZSB2aXJ0dWFsaXphdGlvbiBvciBhZHZhbmNlZCBoYXJkd2FyZSBmZWF0dXJlcyBhcmUgaW4gcGxheS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0J3Mgc2V0IHVwIHRvIGVuc3VyZSBwcm9wZXIgZGV2aWNlIGlzb2xhdGlvbiBhbmQgcGVyZm9ybWFuY2UuIEknbGwgbmVlZCB0byBsb29rIGF0IHNwZWNpZmljIHJlZ2lzdGVycyBvciBjb25maWd1cmF0aW9uIGZpbGVzLCBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBhbmQga2VybmVsIHZlcnNpb24sIGJ1dCB0aGUgb2JqZWN0aXZlIHJlbWFpbnMgdGhlIHNhbWU6IEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgY3VycmVudCBzdGF0ZSBhbmQgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBtaXNjb25maWd1cmF0aW9ucy4gRGVwZW5kaW5nIG9uIHdoYXQgSSBmaW5kLCBJIG1heSBuZWVkIHRvIGRpdmUgZGVlcGVyIGludG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzcGVjaWZpYyBBTUQgY2hpcHNldCBJJ20gZGVhbGluZyB3aXRoLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzcxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTk6NTQuMTY2ODMyOTk2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDc0MDM1MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFNRF9JT01NVVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTItIyBBTUQgSU9NTVUgc3VwcG9ydFxcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6Mzpjb25maWcgQU1EX0lPTU1VXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy00LVxcdGJvb2wgXFxcIkFNRCBJT01NVSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0zMi1cXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnOjMzOmNvbmZpZyBBTURfSU9NTVVfSU9NTVVGRFxcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWctMzQtXFx0Ym9vbCBcXFwiRW5hYmxlIElPTU1VRkQgZmVhdHVyZXMgZm9yIEFNRCBJT01NVSAoRVhQRVJJTUVOVEFMKVxcXCJcXG4tLVxcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWctNDItXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZzo0Mzpjb25maWcgQU1EX0lPTU1VX0RFQlVHRlNcXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQ0LVxcdGJvb2wgXFxcIkVuYWJsZSBBTUQgSU9NTVUgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjU5OjU4LjU3NDI0NzIzOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTQxNjExOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBTUQgSU9NTVUgR0FQUEkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYGFtZF9pb21tdV9nYXBwaWAgYWN0aXZhdGVkIGJ5IHRoZSBgYW1kX2lvbW11PWdhcHBpYCBib290IHBhcmFtZXRlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcImNhbiB0aGlzIGJlIGZ1enplZD9cIiBUaGUgYW5zd2VyIGlzICptYXliZSouIFN5emthbGxlciB3b24ndCBwaWNrIHRoaXMgdXAgb24gaXRzIG93biB1bmxlc3MgZXhwbGljaXRseSBpbnN0cnVjdGVkLCBtZWFuaW5nIGl0J3MgZGVwZW5kZW50IG9uIHRoZSBib290IHBhcmFtZXRlciBiZWluZyBwYXNzZWQuIEhvd2V2ZXIsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgIGFuZCBgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVgIHdoaWNoIGFyZSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIHJlZ2FyZGxlc3MsIHNvIHRoZXJlIGlzIGNlcnRhaW5seSBhIHdheSBpbi5cblxuQnV0IHRoZW4sIGhvbGQgb24gYSBzZWNvbmQuIEl0IGFsc28gYWRkcyBgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcmAgYW5kIGEgY2FsbCB0byBga3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcmAgd2l0aCBpdC4gVGhhdCdzIGludGVyZXN0aW5nISBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBga3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcmAgaXMgZXZlbiBhIHRoaW5nLi4uIGxldCdzIGNoZWNrIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTgwNywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDowMi44Mjg0MTI4MDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwNzk1MDYyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2luY2x1ZGUvYXNtL2lycS5oPTMwPWV4dGVybiB2b2lkIGZpeHVwX2lycXModm9pZCk7XFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnEuaC0zMi0jaWYgSVNfRU5BQkxFRChDT05GSUdfS1ZNKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2lycS5oOjMzOmV4dGVybiB2b2lkIGt2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXIodm9pZCAoKmhhbmRsZXIpKHZvaWQpKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnEuaC0zNC0jZW5kaWZcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9pcnEuYz0zNzM9c3RhdGljIHZvaWQgKCprdm1fcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXIpKHZvaWQpID0gZHVtbXlfaGFuZGxlcjtcXG5hcmNoL3g4Ni9rZXJuZWwvaXJxLmMtMzc0LVxcbmFyY2gveDg2L2tlcm5lbC9pcnEuYzozNzU6dm9pZCBrdm1fc2V0X3Bvc3RlZF9pbnRyX3dha2V1cF9oYW5kbGVyKHZvaWQgKCpoYW5kbGVyKSh2b2lkKSlcXG5hcmNoL3g4Ni9rZXJuZWwvaXJxLmMtMzc2LXtcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9pcnEuYy0zODMtfVxcbmFyY2gveDg2L2tlcm5lbC9pcnEuYzozODQ6RVhQT1JUX1NZTUJPTF9GT1JfS1ZNKGt2bV9zZXRfcG9zdGVkX2ludHJfd2FrZXVwX2hhbmRsZXIpO1xcbmFyY2gveDg2L2tlcm5lbC9pcnEuYy0zODUtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYz0xNDAyPWJvb2wgX19pbml0IGF2aWNfaGFyZHdhcmVfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTE0MzgtXFx0YW1kX2lvbW11X3JlZ2lzdGVyX2dhX2xvZ19ub3RpZmllcihcXHUwMDI2YXZpY19nYV9sb2dfbm90aWZpZXIpO1xcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjE0Mzk6XFx0a3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcihcXHUwMDI2YXZpY19nYXBwaV93YWtldXBfaGFuZGxlcik7XFxuYXJjaC94ODYva3ZtL3N2bS9hdmljLmMtMTQ0MC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODQ3Nj12b2lkIHZteF9oYXJkd2FyZV91bnNldHVwKHZvaWQpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDc3LXtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg0Nzg6XFx0a3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcihOVUxMKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg0NzktXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg1OTg9X19pbml0IGludCB2bXhfaGFyZHdhcmVfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODc4Mi1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg3ODM6XFx0a3ZtX3NldF9wb3N0ZWRfaW50cl93YWtldXBfaGFuZGxlcihwaV93YWtldXBfaGFuZGxlcik7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04Nzg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDowNy4yMzYzNzQ5MTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODc1MDYwMjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgR0FQUEkgU3VwcG9ydCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgR0FQUEkgc3VwcG9ydC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBjaGFuZ2VzIGFuZCBzZWUgaG93IHRoZXkgYXJlIGltcGxlbWVudGVkLiBJdCBsb29rcyBsaWtlIGl0J3MgdG91Y2hpbmcgc2V2ZXJhbCBrZXkgZnVuY3Rpb25zOiBgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eWAsIGBhdmljX3BpX3VwZGF0ZV9pcnRlYCwgYGFtZF9pb21tdV91cGRhdGVfZ2FgLCBhbmQgYGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlYC4gVGhlc2UgYXJlIGFsbCBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbnMsIHNvIGl0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBkZXRhaWxlZCByZXZpZXcuXG5cbk5vdywgYSBrZXkgcXVlc3Rpb24gaXMgcmVhY2hhYmlsaXR5IOKAkyBjYW4gdGhpcyBuZXcgY29kZSBhY3R1YWxseSBiZSB0cmlnZ2VyZWQgaW4gYSByZWFsLXdvcmxkIHNjZW5hcmlvPyBDb25zaWRlcmluZyB0aGlzIGlzIEtWTS9TVk0vQVZJQyByZWxhdGVkLCBpdCBzaG91bGQgYmUgcmVhY2hhYmxlIHdoZW4gcnVubmluZyBuZXN0ZWQgS1ZNIG9uIEFNRCBoYXJkd2FyZSwgd2hpY2ggaW5jcmVhc2VzIG15IGNvbmZpZGVuY2UuIEFuZCwgYmVjYXVzZSBzeXprYWxsZXIgZnV6emVzIEtWTSwgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgcG90ZW50aWFsIHRhcmdldCBmb3IgZnV6emluZywgYW5kIHNvIEkgc2hvdWxkIGV4dHJhY3QgYSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuXG5cbkkndmUgaWRlbnRpZmllZCB0aGVzZSBzeW1ib2xzIGZvciBjbG9zZXIgZXhhbWluYXRpb246IGBhdmljX3VwZGF0ZV9pb21tdV92Y3B1X2FmZmluaXR5YCwgYGF2aWNfcGlfdXBkYXRlX2lydGVgLCBgYW1kX2lvbW11X3VwZGF0ZV9nYWAsIGBhbWRfaW9tbXVfYWN0aXZhdGVfZ3Vlc3RfbW9kZWAsIGBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0YCwgYGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdGAsIGFuZCBgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcmAuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgc2NvcGUgb2YgdGhlc2UgZnVuY3Rpb25zLCB0aGlzIGlzIGltcG9ydGFudC4gSXQgbG9va3MgbGlrZSBgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eWAsIGBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0YCwgYGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdGAgYW5kIGBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyYCBhcmUgc3RhdGljLiBgYXZpY19waV91cGRhdGVfaXJ0ZWAgaXMgbm90IHN0YXRpYy4gYGFtZF9pb21tdV91cGRhdGVfZ2FgIGFuZCBgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVgIGFyZSBleHBvcnRlZCwgd2hpY2ggY291bGQgaGF2ZSBpbXBsaWNhdGlvbnMgZm9yIGhvdyB0aGV5IGFyZSB1c2VkIGFuZCBwb3RlbnRpYWxseSBleHBsb2l0ZWQuIEtub3dpbmcgd2hpY2ggZnVuY3Rpb25zIGFyZSBzdGF0aWMgaGVscHMgZGV0ZXJtaW5lIGhvdyBlYXNpbHkgdGhleSBjYW4gYmUgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC5cblxuVGhlcmVmb3JlLCBmb3IgZnVydGhlciBhbmFseXNpcywgbXkgZm9jdXMgbGlzdCB3aWxsIGJlOiBgYXZpY19waV91cGRhdGVfaXJ0ZWAsIGBhbWRfaW9tbXVfdXBkYXRlX2dhYCwgYGFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlYCwgYGF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlgLCBgYXZpY19hZGRfdmNwdV90b19nYXBwaV93YWtldXBfbGlzdGAsIGBhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3RgIGFuZCBgYXZpY19nYXBwaV93YWtldXBfaGFuZGxlcmAuXG5cbkZpbmFsbHksIGNvbmZpZ3VyYXRpb24gaXMgaW1wb3J0YW50LiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBLVk1fQU1EYCwgYEFNRF9JT01NVWAsIGFuZCBgSVJRX1JFTUFQYCBhcmUgZW5hYmxlZCBvciwgaWYgbm90LCBpZiB0aGV5IG5lZWQgdG8gYmUuIGBJUlFfUkVNQVBgIGlzIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQsIGJ1dCBpdCdzIHdvcnRoIGRvdWJsZS1jaGVja2luZyB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5IGZvciB0aGlzIEdBUFBJIHN1cHBvcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDA0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIzOjAwOjE2LjExMTQzOTMxMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQxNjgyNjI0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVJRX1JFTUFQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvS2NvbmZpZz0xOTk9c291cmNlIFxcXCJkcml2ZXJzL2lvbW11L3Jpc2N2L0tjb25maWdcXFwiXFxuZHJpdmVycy9pb21tdS9LY29uZmlnLTIwMC1cXG5kcml2ZXJzL2lvbW11L0tjb25maWc6MjAxOmNvbmZpZyBJUlFfUkVNQVBcXG5kcml2ZXJzL2lvbW11L0tjb25maWctMjAyLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIEludGVycnVwdCBSZW1hcHBpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIzOjAwOjE5LjUyODI3OTgwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM4NDc3NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQU1EX0lPTU1VIGFuZCBJUlFfUkVNQVAgRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gdHJ5aW5nIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBBTURfSU9NTVVgIGFuZCBgSVJRX1JFTUFQYC4gSXMgYEFNRF9JT01NVWAgYSBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlIGZvciBgSVJRX1JFTUFQYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkgd2l0aCBBTUQgaGFyZHdhcmUsIG9yIGlzIGl0IHRoZSBvdGhlciB3YXkgYXJvdW5kPyBPciwgcGVyaGFwcywgZG8gdGhleSBzaW1wbHkgY28tZXhpc3QgaW4gYSB3YXkgd2hlcmUgZW5hYmxpbmcgb25lIG5lY2Vzc2l0YXRlcyBlbmFibGluZyB0aGUgb3RoZXIgaW4gY2VydGFpbiBjb25maWd1cmF0aW9ucz8gVGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50IHRoYXQgbmVlZHMgdG8gYmUgY2xhcmlmaWVkLCBiZWNhdXNlIG1pc3VuZGVyc3RhbmRpbmcgdGhpcyByZWxhdGlvbnNoaXAgY2FuIGxlYWQgdG8gc2lnbmlmaWNhbnQgaGVhZGFjaGVzIGluIHN5c3RlbSBjb25maWd1cmF0aW9uLCBlc3BlY2lhbGx5IHJlZ2FyZGluZyBETUEgcmVtYXBwaW5nIGFuZCB2aXJ0dWFsaXphdGlvbiBzZXR1cHMuIEkgbmVlZCB0byBuYWlsIGRvd24gaWYgdGhlIGtlcm5lbCBidWlsZCBjb25maWd1cmF0aW9uIG9yIHJ1bnRpbWUgaW50ZXJhY3Rpb24gaGluZ2VzIG9uIHRoaXMuIFVuZGVyc3RhbmRpbmcgdGhlIGxpbmthZ2UgYmV0d2VlbiB0aGVzZSBmZWF0dXJlcyB3aWxsIGRpY3RhdGUgaG93IEkgYXBwcm9hY2ggY29uZmlndXJpbmcgdGhlIElPTU1VIGZvciBvcHRpbWFsIHBlcmZvcm1hbmNlIGFuZCBjb21wYXRpYmlsaXR5LiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlLCByZWxldmFudCBkb2N1bWVudGF0aW9uLCBhbmQgZXhpc3RpbmcgZm9ydW0gZGlzY3Vzc2lvbnMgb3IgYnVnIHJlcG9ydHMgdG8gZ2V0IGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGlzIHJlbGF0aW9uc2hpcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyNDksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDoyMi43NjY3ODE2MjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NDg2MDAxNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qSVJRX1JFTUFQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L0tjb25maWc9NDYwPWNvbmZpZyBYODZfWDJBUElDXFxuYXJjaC94ODYvS2NvbmZpZy00NjEtXFx0Ym9vbCBcXFwieDJBUElDIGludGVycnVwdCBjb250cm9sbGVyIGFyY2hpdGVjdHVyZSBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NDYyOlxcdGRlcGVuZHMgb24gWDg2X0xPQ0FMX0FQSUMgXFx1MDAyNlxcdTAwMjYgWDg2XzY0IFxcdTAwMjZcXHUwMDI2IChJUlFfUkVNQVAgfHwgSFlQRVJWSVNPUl9HVUVTVClcXG5hcmNoL3g4Ni9LY29uZmlnLTQ2My1cXHRkZWZhdWx0IHlcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NDk3PWNvbmZpZyBYODZfUE9TVEVEX01TSVxcbmFyY2gveDg2L0tjb25maWctNDk4LVxcdGJvb2wgXFxcIkVuYWJsZSBNU0kgYW5kIE1TSS14IGRlbGl2ZXJ5IGJ5IHBvc3RlZCBpbnRlcnJ1cHRzXFxcIlxcbmFyY2gveDg2L0tjb25maWc6NDk5OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IElSUV9SRU1BUFxcbmFyY2gveDg2L0tjb25maWctNTAwLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjM6MDA6MjguMjE1NDQ1NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU4MTExOTc1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgQ2hlY2sqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgQU1EIElPTU1VIGRyaXZlciBjb25maWd1cmF0aW9uIGlzIHNldCB1cC4gVGhlIGZpcnN0IHBsYWNlIEknbSBnb2luZyB0byBsb29rIGlzIHRoZSBgZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgZHJpdmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgdmFyaW91cyBjb21waWxlLXRpbWUgcGFyYW1ldGVycywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBBTUQgSU9NTVUgaW1wbGVtZW50YXRpb24uIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGJhc2VsaW5lIHVuZGVyc3RhbmRpbmcgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSdtIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2Ugd2hldGhlciB0aGUgZHJpdmVyIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hhdCBmZWF0dXJlcyBjYW4gYmUgdG9nZ2xlZCwgd2hhdCBoYXJkd2FyZSByZXZpc2lvbnMgYXJlIHN1cHBvcnRlZCwgYW5kIGFueSBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cy4gVGltZSB0byBzZWUgd2hhdCdzIGluIHRoZXJlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc1NSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIzOjAwOjMwLjc5NjU5NjM2MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI4MTU2NTk2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQU1EX0lPTU1VXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWctMi0jIEFNRCBJT01NVSBzdXBwb3J0XFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZzozOmNvbmZpZyBBTURfSU9NTVVcXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTQtXFx0Ym9vbCBcXFwiQU1EIElPTU1VIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTMyLVxcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6MzM6Y29uZmlnIEFNRF9JT01NVV9JT01NVUZEXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0zNC1cXHRib29sIFxcXCJFbmFibGUgSU9NTVVGRCBmZWF0dXJlcyBmb3IgQU1EIElPTU1VIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnOjQzOmNvbmZpZyBBTURfSU9NTVVfREVCVUdGU1xcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWctNDQtXFx0Ym9vbCBcXFwiRW5hYmxlIEFNRCBJT01NVSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjM6MDA6MzQuMDc4MTczMzk3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTk3Nzg4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgQU1EIElPTU1VIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGUgQU1EIElPTU1VIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0aGF0IGBjb25maWcgQU1EX0lPTU1VYCBibG9jay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIGhvdyB0aGV5J3JlIHN0cnVjdHVyZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IGhhdmUuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgb2J2aW91c2x5LCBidXQgSSdtIGxvb2tpbmcgZm9yIGFueXRoaW5nIHVudXN1YWwgb3Igc3VidGxlLCB0aGF0IGlzIG5vdCBpbW1lZGlhdGVseSBhcHBhcmVudC4gSSBuZWVkIHRvIGdldCB0aGUgb3ZlcmFsbCBjb250ZXh0LCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhlIEFNRCBJT01NVS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFuZCBhc3NvY2lhdGVkIGhlbHAgdGV4dCByZXZlYWwuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIElPTU1VIGNvbmZpZ3VyYXRpb25zIGFuZCB0aGUgYnJvYWRlciBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTg3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjM6MDA6MzYuOTk3OTU4Nzc2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjIEFNRCBJT01NVSBzdXBwb3J0XFxuICAgMzpcXHRjb25maWcgQU1EX0lPTU1VXFxuICAgNDpcXHRcXHRib29sIFxcXCJBTUQgSU9NTVUgc3VwcG9ydFxcXCJcXG4gICA1OlxcdFxcdHNlbGVjdCBTV0lPVExCXFxuICAgNjpcXHRcXHRzZWxlY3QgUENJX01TSVxcbiAgIDc6XFx0XFx0c2VsZWN0IFBDSV9BVFNcXG4gICA4OlxcdFxcdHNlbGVjdCBQQ0lfUFJJXFxuICAgOTpcXHRcXHRzZWxlY3QgUENJX1BBU0lEXFxuICAxMDpcXHRcXHRzZWxlY3QgSVJRX01TSV9MSUJcXG4gIDExOlxcdFxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG4gIDEyOlxcdFxcdHNlbGVjdCBJT01NVV9BUElcXG4gIDEzOlxcdFxcdHNlbGVjdCBJT01NVV9JT1ZBXFxuICAxNDpcXHRcXHRzZWxlY3QgSU9NTVVfU1ZBXFxuICAxNTpcXHRcXHRzZWxlY3QgSU9NTVVfSU9QRlxcbiAgMTY6XFx0XFx0c2VsZWN0IElPTU1VRkRfRFJJVkVSIGlmIElPTU1VRkRcXG4gIDE3OlxcdFxcdHNlbGVjdCBHRU5FUklDX1BUXFxuICAxODpcXHRcXHRzZWxlY3QgSU9NTVVfUFRcXG4gIDE5OlxcdFxcdHNlbGVjdCBJT01NVV9QVF9BTURWMVxcbiAgMjA6XFx0XFx0c2VsZWN0IElPTU1VX1BUX1g4Nl82NFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDozNi45OTgxMzUwMDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwNzI1MTA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEFNRCBJT01NVSBhbmQgS1ZNIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBBTURfSU9NTVVgIGFuZCBgS1ZNX0FNRGAuIFRoZSBuYW1lcyBhcmUgcHJldHR5IHNlbGYtZXhwbGFuYXRvcnksIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciByZWxhdGlvbnNoaXAuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3Mgc2VlIGlmIGBLVk1fQU1EYCBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSB3YW50IHRvIGtub3cgaWYgYEtWTV9BTURgIHJlbGllcyBvbiBhbnl0aGluZyBzcGVjaWZpYyB0byBmdW5jdGlvbiwgYW5kIGlmIHNvLCB3aGF0IHRob3NlIHByZXJlcXVpc2l0ZXMgYXJlLiBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMga2V5IHRvIGVuc3VyaW5nIHByb3BlciBzeXN0ZW0gY29uZmlndXJhdGlvbiBhbmQgYXZvaWRpbmcgYW55IHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS4gSXQncyBhbGwgYWJvdXQgbWFraW5nIHN1cmUgSSdtIHNldHRpbmcgdGhpbmdzIHVwIGNvcnJlY3RseSBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3MTAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIzOjAwOjM5LjkwNTM4OTk3N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ2LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQ2OlxcdGNvbmZpZyBLVk1fQU1EXFxuIDE0NzpcXHRcXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbiAxNDg6XFx0XFx0ZGVwZW5kcyBvbiBLVk0gXFx1MDAyNlxcdTAwMjYgKENQVV9TVVBfQU1EIHx8IENQVV9TVVBfSFlHT04pXFxuIDE0OTpcXHRcXHRoZWxwXFxuIDE1MDpcXHRcXHQgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIEtWTSBvbiBBTUQgcHJvY2Vzc29ycyBlcXVpcHBlZCB3aXRoIHRoZSBBTUQtVlxcbiAxNTE6XFx0XFx0ICAoU1ZNKSBleHRlbnNpb25zLlxcbiAxNTI6XFx0XFxuIDE1MzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAxNTQ6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBrdm0tYW1kLlxcbiAxNTU6XFx0XFxuIDE1NjpcXHRjb25maWcgS1ZNX0FNRF9TRVZcXG4gMTU3OlxcdFxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuIDE1ODpcXHRcXHRkZWZhdWx0IHlcXG4gMTU5OlxcdFxcdGRlcGVuZHMgb24gS1ZNX0FNRCBcXHUwMDI2XFx1MDAyNiBYODZfNjRcXG4gMTYwOlxcdFxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9TUF9QU1AgXFx1MDAyNlxcdTAwMjYgIShLVk1fQU1EPXkgXFx1MDAyNlxcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcXG4gMTYxOlxcdFxcdHNlbGVjdCBBUkNIX0hBU19DQ19QTEFURk9STVxcbiAxNjI6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxuIDE2MzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fQVJDSF9HTUVNX1BSRVBBUkVcXG4gMTY0OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9BUkNIX0dNRU1fSU5WQUxJREFURVxcbiAxNjU6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0FSQ0hfR01FTV9QT1BVTEFURVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDozOS45MDU1NDQ0NDdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI0Mzc0NjQwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipHQVBQSSBTdXBwb3J0IGZvciBBTUQgSU9NTVUgYW5kIEtWTSBTVk0gQVZJQyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBpbnRlZ3JhdGVzIEdBUFBJIHN1cHBvcnQgaW50byB0aGUgQU1EIElPTU1VIGFuZCBLVk0gU1ZNIEFWSUMgc2V0dXAuIFRoZSBrZXkgY29uZmlncyBoZXJlIGFyZSBgS1ZNX0FNRGAgYW5kIGBBTURfSU9NTVVgIOKAkyB0aGF0J3MgdGhlIGZvdW5kYXRpb24gd2UncmUgd29ya2luZyB3aXRoLlxuXG5JJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoZSBjb2RlIGFuZCBmb2N1c2luZyBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLiBNeSBhdHRlbnRpb24gaXMgZHJhd24gdG86IGBhdmljX3BpX3VwZGF0ZV9pcnRlYCwgYGFtZF9pb21tdV91cGRhdGVfZ2FgLCBgYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVgLCBgYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eWAsIGBhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0YCwgYGF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdGAsIGBhdmljX2dhcHBpX3dha2V1cF9oYW5kbGVyYCwgYW5kIGBfX2FtZF9pb21tdV91cGRhdGVfZ2FgLiBXZSdyZSB0YWxraW5nIGNvcmUgaW50ZXJydXB0IGhhbmRsaW5nLCB2Q1BVIGFmZmluaXR5IG1hbmFnZW1lbnQsIGFuZCB0aGUgY3J1Y2lhbCBsb2dpYyBmb3IgYWN0aXZhdGluZyBndWVzdCBtb2RlIHdpdGhpbiB0aGUgSU9NTVUuIFRoZXJlIGFyZSBhIGZldyBtb2RpZmllZCBmdW5jdGlvbnMgSSBzaG91bGQgYWxzbyB0YWtlIGludG8gYWNjb3VudDogYGF2aWNfZGVzdHJveV92Y3B1YCwgYGF2aWNfaW5pdF92Y3B1YCwgYHN2bV9pcl9saXN0X2RlbGAsIGBfX2F2aWNfdmNwdV9sb2FkYCwgYF9fYXZpY192Y3B1X3B1dGAsIGBhdmljX2hhcmR3YXJlX3NldHVwYCwgYGVuYWJsZV9pb21tdXNfdmFwaWNgLCBhbmQgYHBhcnNlX2FtZF9pb21tdV9vcHRpb25zYC5cblxuVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGNoYW5nZSwgaW1wYWN0aW5nIGhvdyBpbnRlcnJ1cHRzIGFyZSBtYW5hZ2VkIHdpdGhpbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYW5kIGRpcmVjdGx5IHRvdWNoZXMgdGhlIElPTU1VLiBUaGUgaW50cm9kdWN0aW9uIG9mIEdBUFBJIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBuZXcgd2FrZXVwIGxpc3RzIGFuZCBhbHRlcmVkIGludGVycnVwdCBoYW5kbGluZyBsb2dpYyB0aGF0IHJlcXVpcmVzIHJpZ29yb3VzIHRlc3RpbmcuIENvbmN1cnJlbmN5IGJ1Z3Mgb3IgbWVtb3J5IGNvcnJ1cHRpb24gdnVsbmVyYWJpbGl0aWVzIGFyZSBhIGNvbmNlcm4gaGVyZS4gSSB0aGluayB3ZSBuZWVkIHRvIGZ1enogdGhpcyFcblxuTXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgd2FycmFudHMgZnV6emluZywgYW5kIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZSB0aGUgb25lcyBJIGxpc3RlZCBlYXJsaWVyLiBUaGUgY29uZmlncyB0aGF0IGFyZSBlbmFibGVkIGFyZSBgS1ZNX0FNRGAgYW5kIGBBTURfSU9NTVVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjI5MCwiT3V0cHV0VG9rZW5zIjoyMzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMzowMDo0OS4xNDkyOTc3OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDE2ODQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiLFxuICAgIFwiQU1EX0lPTU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXZpY19waV91cGRhdGVfaXJ0ZVwiLFxuICAgIFwiYXZpY191cGRhdGVfaW9tbXVfdmNwdV9hZmZpbml0eVwiLFxuICAgIFwiYW1kX2lvbW11X3VwZGF0ZV9nYVwiLFxuICAgIFwiYW1kX2lvbW11X2FjdGl2YXRlX2d1ZXN0X21vZGVcIixcbiAgICBcImF2aWNfYWRkX3ZjcHVfdG9fZ2FwcGlfd2FrZXVwX2xpc3RcIixcbiAgICBcImF2aWNfcmVtb3ZlX3ZjcHVfZnJvbV9nYXBwaV93YWtldXBfbGlzdFwiLFxuICAgIFwiYXZpY19nYXBwaV93YWtldXBfaGFuZGxlclwiLFxuICAgIFwiX19hbWRfaW9tbXVfdXBkYXRlX2dhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIGludHJvZHVjZXMgR0FQUEkgKEd1ZXN0IEFQSUMgUG9zdGVkIEludGVycnVwdHMpIHN1cHBvcnQgZm9yIEFNRCBJT01NVSBhbmQgS1ZNIFNWTSBBVklDLiBJdCBtb2RpZmllcyBjb3JlIGludGVycnVwdCByZW1hcHBpbmcgYW5kIHZDUFUgYWZmaW5pdHkgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIG5lc3RlZCBLVk0gb24gQU1EKS4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBuZXcgd2FrZXVwIGxpc3RzIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgZG8gbm90IGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzIG9yIG1lbW9yeSBjb3JydXB0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9BTURcIixcbiAgICBcIkFNRF9JT01NVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF2aWNfcGlfdXBkYXRlX2lydGVcIixcbiAgICBcImF2aWNfdXBkYXRlX2lvbW11X3ZjcHVfYWZmaW5pdHlcIixcbiAgICBcImFtZF9pb21tdV91cGRhdGVfZ2FcIixcbiAgICBcImFtZF9pb21tdV9hY3RpdmF0ZV9ndWVzdF9tb2RlXCIsXG4gICAgXCJhdmljX2FkZF92Y3B1X3RvX2dhcHBpX3dha2V1cF9saXN0XCIsXG4gICAgXCJhdmljX3JlbW92ZV92Y3B1X2Zyb21fZ2FwcGlfd2FrZXVwX2xpc3RcIixcbiAgICBcImF2aWNfZ2FwcGlfd2FrZXVwX2hhbmRsZXJcIixcbiAgICBcIl9fYW1kX2lvbW11X3VwZGF0ZV9nYVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIEdBUFBJIChHdWVzdCBBUElDIFBvc3RlZCBJbnRlcnJ1cHRzKSBzdXBwb3J0IGZvciBBTUQgSU9NTVUgYW5kIEtWTSBTVk0gQVZJQy4gSXQgbW9kaWZpZXMgY29yZSBpbnRlcnJ1cHQgcmVtYXBwaW5nIGFuZCB2Q1BVIGFmZmluaXR5IGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCBuZXN0ZWQgS1ZNIG9uIEFNRCkuIEZ1enppbmcgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGUgbmV3IHdha2V1cCBsaXN0cyBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIGxvZ2ljIGRvIG5vdCBpbnRyb2R1Y2UgY29uY3VycmVuY3kgYnVncyBvciBtZW1vcnkgY29ycnVwdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowjfl7q[1] Phase: Succeeded StartedAt: 2026-06-26 23:01:57 +0000 UTC FinishedAt: 2026-06-26 23:01:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 23:01:57 +0000 UTC FinishedAt: 2026-06-26 23:01:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2] Phase: Succeeded StartedAt: 2026-06-26 23:01:57 +0000 UTC FinishedAt: 2026-06-27 00:42:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-26 23:01:57 +0000 UTC FinishedAt: 2026-06-27 00:42:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-26 23:01:57 +0000 UTC FinishedAt: 2026-06-26 23:03:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-26 23:01:57 +0000 UTC FinishedAt: 2026-06-26 23:02:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjfl7q/series-workflowjfl7q-convert-artifact-574391127/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-26 23:03:28 +0000 UTC FinishedAt: 2026-06-26 23:34:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-26 23:03:28 +0000 UTC FinishedAt: 2026-06-26 23:34:46 +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:*444dbd7d-afb4-4b68-af65-4eb6bd0066a8,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-workflowjfl7q/series-workflowjfl7q-convert-artifact-574391127/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": "888ad2c5-1462-4af3-9310-34eab92add10", "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-workflowjfl7q/series-workflowjfl7q-build-action-1754596269/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-26 23:03:28 +0000 UTC FinishedAt: 2026-06-26 23:32:44 +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:*444dbd7d-afb4-4b68-af65-4eb6bd0066a8,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-workflowjfl7q/series-workflowjfl7q-convert-artifact-574391127/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": "888ad2c5-1462-4af3-9310-34eab92add10", "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-workflowjfl7q/series-workflowjfl7q-build-action-1754596269/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-26 23:34:46 +0000 UTC FinishedAt: 2026-06-26 23:34:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-26 23:34:46 +0000 UTC FinishedAt: 2026-06-26 23:34:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-26 23:34:46 +0000 UTC FinishedAt: 2026-06-26 23:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-26 23:34:46 +0000 UTC FinishedAt: 2026-06-26 23:34:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjfl7q/series-workflowjfl7q-convert-artifact-961528710/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-26 23:35:07 +0000 UTC FinishedAt: 2026-06-26 23:37:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-26 23:35:07 +0000 UTC FinishedAt: 2026-06-26 23:37:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*888ad2c5-1462-4af3-9310-34eab92add10,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-workflowjfl7q/series-workflowjfl7q-build-action-1754596269/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-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-26 23:37:46 +0000 UTC FinishedAt: 2026-06-26 23:37:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-26 23:37:46 +0000 UTC FinishedAt: 2026-06-26 23:37:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-26 23:37:46 +0000 UTC FinishedAt: 2026-06-27 00:04:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-26 23:37:46 +0000 UTC FinishedAt: 2026-06-27 00:04:56 +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:*444dbd7d-afb4-4b68-af65-4eb6bd0066a8,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-workflowjfl7q/series-workflowjfl7q-convert-artifact-961528710/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": "3a6c6492-3ee0-4500-b861-66799ce21865", "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-workflowjfl7q/series-workflowjfl7q-build-action-4074707402/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-26 23:37:46 +0000 UTC FinishedAt: 2026-06-27 00:03: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:*444dbd7d-afb4-4b68-af65-4eb6bd0066a8,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-workflowjfl7q/series-workflowjfl7q-convert-artifact-961528710/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": "3a6c6492-3ee0-4500-b861-66799ce21865", "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-workflowjfl7q/series-workflowjfl7q-build-action-4074707402/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-27 00:04:56 +0000 UTC FinishedAt: 2026-06-27 00:04:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-27 00:04:56 +0000 UTC FinishedAt: 2026-06-27 00:04:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-27 00:04:56 +0000 UTC FinishedAt: 2026-06-27 00:07:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-27 00:04:56 +0000 UTC FinishedAt: 2026-06-27 00:06:59 +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:*3a6c6492-3ee0-4500-b861-66799ce21865,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-workflowjfl7q/series-workflowjfl7q-build-action-4074707402/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-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-27 00:07:09 +0000 UTC FinishedAt: 2026-06-27 00:42:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-27 00:07:09 +0000 UTC FinishedAt: 2026-06-27 00:42:18 +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":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"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:*888ad2c5-1462-4af3-9310-34eab92add10,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3a6c6492-3ee0-4500-b861-66799ce21865,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-workflowjfl7q/series-workflowjfl7q-build-action-1754596269/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-workflowjfl7q/series-workflowjfl7q-build-action-4074707402/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-27 00:07:09 +0000 UTC FinishedAt: 2026-06-27 00:07:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-27 00:07:09 +0000 UTC FinishedAt: 2026-06-27 00:07:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"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-workflowjfl7q/series-workflowjfl7q-convert-artifact-2462913355/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-27 00:07:09 +0000 UTC FinishedAt: 2026-06-27 00:07:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-27 00:07:09 +0000 UTC FinishedAt: 2026-06-27 00:07:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-27 00:07:10 +0000 UTC FinishedAt: 2026-06-27 00:07:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-27 00:07:35 +0000 UTC FinishedAt: 2026-06-27 00:42:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["avic_pi_update_irte","avic_update_iommu_vcpu_affinity","amd_iommu_update_ga","amd_iommu_activate_guest_mode","avic_add_vcpu_to_gappi_wakeup_list","avic_remove_vcpu_from_gappi_wakeup_list","avic_gappi_wakeup_handler","__amd_iommu_update_ga"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD","AMD_IOMMU"],"series_id":"092e598f-3a43-4fcb-8e4c-41e284c494d2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-27 00:07:35 +0000 UTC FinishedAt: 2026-06-27 00:42:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*888ad2c5-1462-4af3-9310-34eab92add10,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3a6c6492-3ee0-4500-b861-66799ce21865,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-workflowjfl7q/series-workflowjfl7q-build-action-1754596269/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-workflowjfl7q/series-workflowjfl7q-build-action-4074707402/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-workflowjfl7q/series-workflowjfl7q-convert-artifact-2462913355/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,}