From mboxrd@z Thu Jan 1 00:00:00 1970 From: Corneliu ZUZU Subject: [PATCH 14/16] x86/monitor: clarify separation between monitor subsys and vm-event as a whole Date: Sat, 9 Jul 2016 07:22:23 +0300 Message-ID: <1468038143-7071-1-git-send-email-czuzu@bitdefender.com> References: <1468037509-6428-1-git-send-email-czuzu@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1468037509-6428-1-git-send-email-czuzu@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Tamas K Lengyel , Razvan Cojocaru , George Dunlap , Andrew Cooper , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org TW92ZSBmaWVsZHMgaW4gYXJjaF92bV9ldmVudCBpbiBhIHN0cnVjdHVyZSBjYWxsZWQgYXJjaF92 bV9ldmVudF9tb25pdG9yIGFuZApyZWZhY3RvciBhcmNoX3ZtX2V2ZW50IHRvIG9ubHkgaG9sZCBh IHBvaW50ZXIgdG8gYW4gaW5zdGFuY2Ugb2YgdGhlCmFmb3JlbWVudGlvbmVkLgoKRG9uZSBmb3Ig YSBudW1iZXIgb2YgcmVhc29uczoKCiogdG8gbWFrZSB0aGUgc2VwYXJhdGlvbiBvZiBtb25pdG9y IHJlc291cmNlcyBmcm9tIG90aGVyIHZtLWV2ZW50IHJlc291cmNlcwogIGNsZWFybHkgdmlzaWJs ZQoKKiB0byBiZSBhYmxlIHRvIHNlbGVjdGl2ZWx5IGFsbG9jYXRlL2ZyZWUgbW9uaXRvci1vbmx5 IHJlc291cmNlcyBpbiBtb25pdG9yCiAgaW5pdCAmIGNsZWFudXAgc3R1YnMKCiogZGlkIF9ub3Rf IGRvIGEgdi0+YXJjaC52bV9ldmVudCAtdG8tIHYtPmFyY2gubW9uaXRvciB0cmFuc2Zvcm1hdGlv biBiZWNhdXNlIHdlCiAgd2FudCB0aGUgZ3VhcmFudGVlIG9mIG5vdCBvY2N1cHlpbmcgbW9yZSB0 aGFuIDEgcG9pbnRlciBpbiBhcmNoX3ZjcHUsIGkuZS4gaWYKICBpbiB0aGUgZnV0dXJlIGUuZy4g cGFnaW5nIHZtLWV2ZW50cyB3b3VsZCBuZWVkIHBlci12Y3B1IHJlc291cmNlcywgb25lIHdvdWxk CiAgbWFrZSBhbiBhcmNoX3ZtX2V2ZW50X3BhZ2luZyBzdHJ1Y3R1cmUgYW5kIGFkZCBhIHBvaW50 ZXIgdG8gYW4gaW5zdGFuY2Ugb2YgaXQKICBhcyBhIGFyY2hfdm1fZXZlbnQucGFnaW5nIGZpZWxk LCBpbiB3aGljaCBjYXNlIHdlIHdpbGwgc3RpbGwgaGF2ZSBvbmx5IDEKICBwb2ludGVyIChhcmNo X3ZtX2V2ZW50KSBjb25zdW1pbmcgbWVtb3J5IGluIGFyY2hfdmNwdSBmb3Igdm0tZXZlbnQgcmVz b3VyY2VzCgpOb3RlIGFsc28gdGhhdCB0aGlzIGJyZWFrcyB0aGUgb2xkIGltcGxpY2F0aW9uICd2 bS1ldmVudCBpbml0aWFsaXplZCAtPiBtb25pdG9yCnJlc291cmNlcyAod2hpY2ggd2VyZSBpbiBh cmNoX3ZtX2V2ZW50KSBpbml0aWFsaXplZCcsIHNvIDIgZXh0cmEgY2hlY2tzIG9uCm1vbml0b3Jf ZG9tYWluX2luaXRpYWxpc2VkKCkgaGFkIHRvIGJlIGFkZGVkOgoKaSkgaW4gdm1fZXZlbnRfcmVz dW1lKCkgYmVmb3JlIGNhbGxpbmcgbW9uaXRvcl9jdHJscmVnX3dyaXRlX3Jlc3VtZSgpLAogICAg YWxzbyBhbiBBU1NFUlQgaW4gbW9uaXRvcl9jdHJscmVnX3dyaXRlX3Jlc3VtZSgpCmlpKSBpbiB2 bV9ldmVudF9yZXN1bWUoKSBiZWZvcmUgY2FsbGluZyBtZW1fYWNjZXNzX3Jlc3VtZSgpLAogICAg YWxzbyBhbiBBU1NFUlQgb24gdGhhdCBjb2RlLXBhdGggaW4gcDJtX21lbV9hY2Nlc3NfZW11bGF0 ZV9jaGVjaygpCgpGaW5hbGx5LCBhbHNvIG5vdGUgdGhhdCB0aGUgZGVmaW5pdGlvbiBvZiBhcmNo X3ZtX2V2ZW50IGhhZCB0byBiZSBtb3ZlZCB0bwphc20teDg2L2RvbWFpbi5oIGR1ZSB0byBhIGN5 Y2xpYyBoZWFkZXIgZGVwZW5kZW5jeSBpdCBjYXVzZWQgYmV0d2Vlbgphc20teDg2L3ZtX2V2ZW50 LmggYW5kIGFzbS14ODYvbW9uaXRvci5oLgoKU2lnbmVkLW9mZi1ieTogQ29ybmVsaXUgWlVaVSA8 Y3p1enVAYml0ZGVmZW5kZXIuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jICAg ICB8ICA4ICsrKy0tLQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgIHwgMzEgKysrKysr KysrKysrLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvbW0vcDJtLmMgICAgICAgICAgfCAgNyAr KysrLS0KIHhlbi9hcmNoL3g4Ni9tb25pdG9yLmMgICAgICAgICB8IDU1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogeGVuL2FyY2gveDg2L3ZtX2V2ZW50LmMgICAg ICAgIHwgMTcgKysrKysrKysrKystLQogeGVuL2NvbW1vbi92bV9ldmVudC5jICAgICAgICAgIHwg MTcgKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaCAgIHwgMTUgKysr KysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L21vbml0b3IuaCAgfCAgNyArKysrKysKIHhl bi9pbmNsdWRlL2FzbS14ODYvdm1fZXZlbnQuaCB8IDEzICsrKy0tLS0tLS0KIDkgZmlsZXMgY2hh bmdlZCwgMTI4IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKaW5k ZXggYTAwOTRlOS4uN2E5YzZhZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRl LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKQEAgLTc2LDEwICs3NiwxMCBAQCBz dGF0aWMgaW50IHNldF9jb250ZXh0X2RhdGEodm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgc2l6 ZSkKIAogICAgIGlmICggdW5saWtlbHkobW9uaXRvcl9kb21haW5faW5pdGlhbGlzZWQoY3Vyci0+ ZG9tYWluKSkgKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNhZmVfc2l6ZSA9Ci0gICAg ICAgICAgICBtaW4oc2l6ZSwgY3Vyci0+YXJjaC52bV9ldmVudC0+ZW11bF9yZWFkX2RhdGEuc2l6 ZSk7CisgICAgICAgIHN0cnVjdCBhcmNoX3ZtX2V2ZW50X21vbml0b3IgKnZlbSA9IGN1cnItPmFy Y2gudm1fZXZlbnQtPm1vbml0b3I7CisgICAgICAgIHVuc2lnbmVkIGludCBzYWZlX3NpemUgPSBt aW4oc2l6ZSwgdmVtLT5lbXVsX3JlYWRfZGF0YS5zaXplKTsKIAotICAgICAgICBtZW1jcHkoYnVm ZmVyLCBjdXJyLT5hcmNoLnZtX2V2ZW50LT5lbXVsX3JlYWRfZGF0YS5kYXRhLCBzYWZlX3NpemUp OworICAgICAgICBtZW1jcHkoYnVmZmVyLCB2ZW0tPmVtdWxfcmVhZF9kYXRhLmRhdGEsIHNhZmVf c2l6ZSk7CiAgICAgICAgIG1lbXNldChidWZmZXIgKyBzYWZlX3NpemUsIDAsIHNpemUgLSBzYWZl X3NpemUpOwogICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogICAgIH0KQEAgLTUyNCw3ICs1 MjQsNyBAQCBzdGF0aWMgaW50IGh2bWVtdWxfdmlydHVhbF90b19saW5lYXIoCiAgICAgICogdm1f ZXZlbnQgYmVpbmcgdHJpZ2dlcmVkIGZvciByZXBlYXRlZCB3cml0ZXMgdG8gYSB3aG9sZSBwYWdl LgogICAgICAqLwogICAgIGlmICggdW5saWtlbHkoY3VycmVudC0+ZG9tYWluLT5hcmNoLm1lbV9h Y2Nlc3NfZW11bGF0ZV9lYWNoX3JlcCkgJiYKLSAgICAgICAgIGN1cnJlbnQtPmFyY2gudm1fZXZl bnQtPmVtdWxhdGVfZmxhZ3MgIT0gMCApCisgICAgICAgICBjdXJyZW50LT5hcmNoLnZtX2V2ZW50 LT5tb25pdG9yLT5lbXVsYXRlX2ZsYWdzICE9IDAgKQogICAgICAgIG1heF9yZXBzID0gMTsKIAog ICAgIC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2 L2h2bS9odm0uYwppbmRleCA0NmZlZDMzLi4xYmZkOWQ0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvaHZtL2h2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTY1LDcgKzY1LDYg QEAKICNpbmNsdWRlIDxhc20vYWx0cDJtLmg+CiAjaW5jbHVkZSA8YXNtL210cnIuaD4KICNpbmNs dWRlIDxhc20vYXBpYy5oPgotI2luY2x1ZGUgPGFzbS92bV9ldmVudC5oPgogI2luY2x1ZGUgPHB1 YmxpYy9zY2hlZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9odm0vaW9yZXEuaD4KICNpbmNsdWRlIDxw dWJsaWMvdmVyc2lvbi5oPgpAQCAtNDczLDIxICs0NzIsMjEgQEAgdm9pZCBodm1fZG9fcmVzdW1l KHN0cnVjdCB2Y3B1ICp2KQogCiAgICAgaWYgKCB1bmxpa2VseShtb25pdG9yX2RvbWFpbl9pbml0 aWFsaXNlZCh2LT5kb21haW4pKSApCiAgICAgewotICAgICAgICBpZiAoIHVubGlrZWx5KHYtPmFy Y2gudm1fZXZlbnQtPmVtdWxhdGVfZmxhZ3MpICkKKyAgICAgICAgc3RydWN0IGFyY2hfdm1fZXZl bnRfbW9uaXRvciAqdmVtID0gdi0+YXJjaC52bV9ldmVudC0+bW9uaXRvcjsKKworICAgICAgICBp ZiAoIHVubGlrZWx5KHZlbS0+ZW11bGF0ZV9mbGFncykgKQogICAgICAgICB7CiAgICAgICAgICAg ICBlbnVtIGVtdWxfa2luZCBraW5kID0gRU1VTF9LSU5EX05PUk1BTDsKIAotICAgICAgICAgICAg aWYgKCB2LT5hcmNoLnZtX2V2ZW50LT5lbXVsYXRlX2ZsYWdzICYKLSAgICAgICAgICAgICAgICAg Vk1fRVZFTlRfRkxBR19TRVRfRU1VTF9SRUFEX0RBVEEgKQorICAgICAgICAgICAgaWYgKCB2ZW0t PmVtdWxhdGVfZmxhZ3MgJiBWTV9FVkVOVF9GTEFHX1NFVF9FTVVMX1JFQURfREFUQSApCiAgICAg ICAgICAgICAgICAga2luZCA9IEVNVUxfS0lORF9TRVRfQ09OVEVYVDsKLSAgICAgICAgICAgIGVs c2UgaWYgKCB2LT5hcmNoLnZtX2V2ZW50LT5lbXVsYXRlX2ZsYWdzICYKLSAgICAgICAgICAgICAg ICAgICAgICBWTV9FVkVOVF9GTEFHX0VNVUxBVEVfTk9XUklURSApCisgICAgICAgICAgICBlbHNl IGlmICggdmVtLT5lbXVsYXRlX2ZsYWdzICYgVk1fRVZFTlRfRkxBR19FTVVMQVRFX05PV1JJVEUg KQogICAgICAgICAgICAgICAgIGtpbmQgPSBFTVVMX0tJTkRfTk9XUklURTsKIAogICAgICAgICAg ICAgaHZtX21lbV9hY2Nlc3NfZW11bGF0ZV9vbmUoa2luZCwgVFJBUF9pbnZhbGlkX29wLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFZNX0RFTElWRVJfTk9fRVJST1Jf Q09ERSk7CiAKLSAgICAgICAgICAgIHYtPmFyY2gudm1fZXZlbnQtPmVtdWxhdGVfZmxhZ3MgPSAw OworICAgICAgICAgICAgdmVtLT5lbXVsYXRlX2ZsYWdzID0gMDsKICAgICAgICAgfQogCiAgICAg ICAgIG1vbml0b3JfY3RybHJlZ193cml0ZV9kYXRhKHYpOwpAQCAtMjE4NCw4ICsyMTgzLDggQEAg aW50IGh2bV9zZXRfY3IwKHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2xfdCBtYXlfZGVmZXIpCiAg ICAgICAgICAgICAgKiBUaGUgYWN0dWFsIHdyaXRlIHdpbGwgb2NjdXIgaW4gbW9uaXRvcl9jdHJs cmVnX3dyaXRlX2RhdGEoKSwgaWYKICAgICAgICAgICAgICAqIHBlcm1pdHRlZC4KICAgICAgICAg ICAgICAqLwotICAgICAgICAgICAgdi0+YXJjaC52bV9ldmVudC0+d3JpdGVfZGF0YS5kb193cml0 ZS5jcjAgPSAxOwotICAgICAgICAgICAgdi0+YXJjaC52bV9ldmVudC0+d3JpdGVfZGF0YS5jcjAg PSB2YWx1ZTsKKyAgICAgICAgICAgIHYtPmFyY2gudm1fZXZlbnQtPm1vbml0b3ItPndyaXRlX2Rh dGEuZG9fd3JpdGUuY3IwID0gMTsKKyAgICAgICAgICAgIHYtPmFyY2gudm1fZXZlbnQtPm1vbml0 b3ItPndyaXRlX2RhdGEuY3IwID0gdmFsdWU7CiAKICAgICAgICAgICAgIHJldHVybiBYODZFTVVM X09LQVk7CiAgICAgICAgIH0KQEAgLTIyODksOCArMjI4OCw4IEBAIGludCBodm1fc2V0X2NyMyh1 bnNpZ25lZCBsb25nIHZhbHVlLCBib29sX3QgbWF5X2RlZmVyKQogICAgICAgICAgICAgICogVGhl IGFjdHVhbCB3cml0ZSB3aWxsIG9jY3VyIGluIG1vbml0b3JfY3RybHJlZ193cml0ZV9kYXRhKCks IGlmCiAgICAgICAgICAgICAgKiBwZXJtaXR0ZWQuCiAgICAgICAgICAgICAgKi8KLSAgICAgICAg ICAgIHYtPmFyY2gudm1fZXZlbnQtPndyaXRlX2RhdGEuZG9fd3JpdGUuY3IzID0gMTsKLSAgICAg ICAgICAgIHYtPmFyY2gudm1fZXZlbnQtPndyaXRlX2RhdGEuY3IzID0gdmFsdWU7CisgICAgICAg ICAgICB2LT5hcmNoLnZtX2V2ZW50LT5tb25pdG9yLT53cml0ZV9kYXRhLmRvX3dyaXRlLmNyMyA9 IDE7CisgICAgICAgICAgICB2LT5hcmNoLnZtX2V2ZW50LT5tb25pdG9yLT53cml0ZV9kYXRhLmNy MyA9IHZhbHVlOwogCiAgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogICAgICAgICB9 CkBAIC0yMzcyLDggKzIzNzEsOCBAQCBpbnQgaHZtX3NldF9jcjQodW5zaWduZWQgbG9uZyB2YWx1 ZSwgYm9vbF90IG1heV9kZWZlcikKICAgICAgICAgICAgICAqIFRoZSBhY3R1YWwgd3JpdGUgd2ls bCBvY2N1ciBpbiBtb25pdG9yX2N0cmxyZWdfd3JpdGVfZGF0YSgpLCBpZgogICAgICAgICAgICAg ICogcGVybWl0dGVkLgogICAgICAgICAgICAgICovCi0gICAgICAgICAgICB2LT5hcmNoLnZtX2V2 ZW50LT53cml0ZV9kYXRhLmRvX3dyaXRlLmNyNCA9IDE7Ci0gICAgICAgICAgICB2LT5hcmNoLnZt X2V2ZW50LT53cml0ZV9kYXRhLmNyNCA9IHZhbHVlOworICAgICAgICAgICAgdi0+YXJjaC52bV9l dmVudC0+bW9uaXRvci0+d3JpdGVfZGF0YS5kb193cml0ZS5jcjQgPSAxOworICAgICAgICAgICAg di0+YXJjaC52bV9ldmVudC0+bW9uaXRvci0+d3JpdGVfZGF0YS5jcjQgPSB2YWx1ZTsKIAogICAg ICAgICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKICAgICAgICAgfQpAQCAtMzc1NCw5ICszNzUz LDkgQEAgaW50IGh2bV9tc3Jfd3JpdGVfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2 NF90IG1zcl9jb250ZW50LAogICAgICAgICAgKiBUaGUgYWN0dWFsIHdyaXRlIHdpbGwgb2NjdXIg aW4gbW9uaXRvcl9jdHJscmVnX3dyaXRlX2RhdGEoKSwgaWYKICAgICAgICAgICogcGVybWl0dGVk LgogICAgICAgICAgKi8KLSAgICAgICAgdi0+YXJjaC52bV9ldmVudC0+d3JpdGVfZGF0YS5kb193 cml0ZS5tc3IgPSAxOwotICAgICAgICB2LT5hcmNoLnZtX2V2ZW50LT53cml0ZV9kYXRhLm1zciA9 IG1zcjsKLSAgICAgICAgdi0+YXJjaC52bV9ldmVudC0+d3JpdGVfZGF0YS52YWx1ZSA9IG1zcl9j b250ZW50OworICAgICAgICB2LT5hcmNoLnZtX2V2ZW50LT5tb25pdG9yLT53cml0ZV9kYXRhLmRv X3dyaXRlLm1zciA9IDE7CisgICAgICAgIHYtPmFyY2gudm1fZXZlbnQtPm1vbml0b3ItPndyaXRl X2RhdGEubXNyID0gbXNyOworICAgICAgICB2LT5hcmNoLnZtX2V2ZW50LT5tb25pdG9yLT53cml0 ZV9kYXRhLnZhbHVlID0gbXNyX2NvbnRlbnQ7CiAKICAgICAgICAgaHZtX21vbml0b3JfbXNyKG1z ciwgbXNyX2NvbnRlbnQpOwogICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5jCmluZGV4IDE2 NzMzYTQuLjkyYzA1NzYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYworKysgYi94 ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAgLTE1OTEsMTIgKzE1OTEsMTUgQEAgdm9pZCBwMm1fbWVt X3BhZ2luZ19yZXN1bWUoc3RydWN0IGRvbWFpbiAqZCwgdm1fZXZlbnRfcmVzcG9uc2VfdCAqcnNw KQogdm9pZCBwMm1fbWVtX2FjY2Vzc19lbXVsYXRlX2NoZWNrKHN0cnVjdCB2Y3B1ICp2LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZtX2V2ZW50X3Jlc3BvbnNlX3Qg KnJzcCkKIHsKKyAgICBBU1NFUlQobW9uaXRvcl9kb21haW5faW5pdGlhbGlzZWQodi0+ZG9tYWlu KSk7CisKICAgICAvKiBNYXJrIHZjcHUgZm9yIHNraXBwaW5nIG9uZSBpbnN0cnVjdGlvbiB1cG9u IHJlc2NoZWR1bGluZy4gKi8KICAgICBpZiAoIHJzcC0+ZmxhZ3MgJiBWTV9FVkVOVF9GTEFHX0VN VUxBVEUgKQogICAgIHsKICAgICAgICAgeGVubWVtX2FjY2Vzc190IGFjY2VzczsKICAgICAgICAg Ym9vbF90IHZpb2xhdGlvbiA9IDE7CiAgICAgICAgIGNvbnN0IHN0cnVjdCB2bV9ldmVudF9tZW1f YWNjZXNzICpkYXRhID0gJnJzcC0+dS5tZW1fYWNjZXNzOworICAgICAgICBzdHJ1Y3QgYXJjaF92 bV9ldmVudF9tb25pdG9yICp2ZW0gPSB2LT5hcmNoLnZtX2V2ZW50LT5tb25pdG9yOwogCiAgICAg ICAgIGlmICggcDJtX2dldF9tZW1fYWNjZXNzKHYtPmRvbWFpbiwgX2dmbihkYXRhLT5nZm4pLCAm YWNjZXNzKSA9PSAwICkKICAgICAgICAgewpAQCAtMTYzOSwxMCArMTY0MiwxMCBAQCB2b2lkIHAy bV9tZW1fYWNjZXNzX2VtdWxhdGVfY2hlY2soc3RydWN0IHZjcHUgKnYsCiAgICAgICAgICAgICB9 CiAgICAgICAgIH0KIAotICAgICAgICB2LT5hcmNoLnZtX2V2ZW50LT5lbXVsYXRlX2ZsYWdzID0g dmlvbGF0aW9uID8gcnNwLT5mbGFncyA6IDA7CisgICAgICAgIHZlbS0+ZW11bGF0ZV9mbGFncyA9 IHZpb2xhdGlvbiA/IHJzcC0+ZmxhZ3MgOiAwOwogCiAgICAgICAgIGlmICggKHJzcC0+ZmxhZ3Mg JiBWTV9FVkVOVF9GTEFHX1NFVF9FTVVMX1JFQURfREFUQSkgKQotICAgICAgICAgICAgdi0+YXJj aC52bV9ldmVudC0+ZW11bF9yZWFkX2RhdGEgPSByc3AtPmRhdGEuZW11bF9yZWFkX2RhdGE7Cisg ICAgICAgICAgICB2ZW0tPmVtdWxfcmVhZF9kYXRhID0gcnNwLT5kYXRhLmVtdWxfcmVhZF9kYXRh OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21vbml0b3IuYyBiL3hlbi9h cmNoL3g4Ni9tb25pdG9yLmMKaW5kZXggMDc2M2VkNy4uYzMxMjNiYyAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L21vbml0b3IuYworKysgYi94ZW4vYXJjaC94ODYvbW9uaXRvci5jCkBAIC0yMSw3 ICsyMSw2IEBACiAKICNpbmNsdWRlIDxhc20vaHZtL3ZteC92bXguaD4KICNpbmNsdWRlIDxhc20v bW9uaXRvci5oPgotI2luY2x1ZGUgPGFzbS92bV9ldmVudC5oPgogI2luY2x1ZGUgPHB1YmxpYy92 bV9ldmVudC5oPgogCiBzdGF0aWMgaW5saW5lCkBAIC01NSwxNiArNTQsNDMgQEAgc3RhdGljIGlu bGluZSB2b2lkIG1vbml0b3JfY3RybHJlZ19kaXNhYmxlX3RyYXBzKHN0cnVjdCBkb21haW4gKmQp CiAvKiBJbXBsaWNpdGx5IHNlcmlhbGl6ZWQgYnkgdGhlIGRvbWN0bCBsb2NrLiAqLwogaW50IG1v bml0b3JfaW5pdF9kb21haW4oc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAgICBpZiAoIGxpa2VseSgh ZC0+YXJjaC5tb25pdG9yLm1zcl9iaXRtYXApICkKKyAgICBpbnQgcmMgPSAwOworICAgIHN0cnVj dCB2Y3B1ICp2OworCisgICAgLyogQWxyZWFkeSBpbml0aWFsaXNlZD8gKi8KKyAgICBpZiAoIHVu bGlrZWx5KG1vbml0b3JfZG9tYWluX2luaXRpYWxpc2VkKGQpKSApCisgICAgICAgIHJldHVybiAw OworCisgICAgLyogUGVyLXZjcHUgaW5pdGlhbGl6YXRpb25zLiAqLworICAgIGZvcl9lYWNoX3Zj cHUoZCwgdikKKyAgICB7CisgICAgICAgIEFTU0VSVCh2LT5hcmNoLnZtX2V2ZW50KTsKKyAgICAg ICAgQVNTRVJUKCF2LT5hcmNoLnZtX2V2ZW50LT5tb25pdG9yKTsKKworICAgICAgICB2LT5hcmNo LnZtX2V2ZW50LT5tb25pdG9yID0geHphbGxvYyhzdHJ1Y3QgYXJjaF92bV9ldmVudF9tb25pdG9y KTsKKyAgICAgICAgaWYgKCB1bmxpa2VseSghdi0+YXJjaC52bV9ldmVudC0+bW9uaXRvcikgKQor ICAgICAgICB7CisgICAgICAgICAgICByYyA9IC1FTk9NRU07CisgICAgICAgICAgICBnb3RvIGVy cjsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVCghZC0+YXJjaC5tb25pdG9yLm1zcl9i aXRtYXApOworICAgIGQtPmFyY2gubW9uaXRvci5tc3JfYml0bWFwID0geHphbGxvYyhzdHJ1Y3Qg bW9uaXRvcl9tc3JfYml0bWFwKTsKKyAgICBpZiAoIHVubGlrZWx5KCFkLT5hcmNoLm1vbml0b3Iu bXNyX2JpdG1hcCkgKQogICAgIHsKLSAgICAgICAgZC0+YXJjaC5tb25pdG9yLm1zcl9iaXRtYXAg PSB4emFsbG9jKHN0cnVjdCBtb25pdG9yX21zcl9iaXRtYXApOwotICAgICAgICBpZiAoIHVubGlr ZWx5KCFkLT5hcmNoLm1vbml0b3IubXNyX2JpdG1hcCkgKQotICAgICAgICAgICAgcmV0dXJuIC1F Tk9NRU07CisgICAgICAgIHJjID0gLUVOT01FTTsKKyAgICAgICAgZ290byBlcnI7CiAgICAgfQog CiAgICAgZC0+bW9uaXRvci5pbml0aWFsaXNlZCA9IDE7CiAKLSAgICByZXR1cm4gMDsKK2VycjoK KyAgICBpZiAoIHVubGlrZWx5KHJjKSApCisgICAgICAgIC8qIE9uIGZhaWwgY2xlYW51cCB3aGF0 ZXZlciByZXNvdXJjZXMgaGF2ZSBiZWVuIHBhcnRpYWxseSBhbGxvY2F0ZWQuICovCisgICAgICAg IG1vbml0b3JfY2xlYW51cF9kb21haW4oZCk7CisKKyAgICByZXR1cm4gcmM7CiB9CiAKIC8qCkBA IC03Myw5ICs5OSwyMCBAQCBpbnQgbW9uaXRvcl9pbml0X2RvbWFpbihzdHJ1Y3QgZG9tYWluICpk KQogICovCiB2b2lkIG1vbml0b3JfY2xlYW51cF9kb21haW4oc3RydWN0IGRvbWFpbiAqZCkKIHsK KyAgICBzdHJ1Y3QgdmNwdSAqdjsKKwogICAgIHhmcmVlKGQtPmFyY2gubW9uaXRvci5tc3JfYml0 bWFwKTsKICAgICBkLT5hcmNoLm1vbml0b3IubXNyX2JpdG1hcCA9IE5VTEw7CiAKKyAgICBmb3Jf ZWFjaF92Y3B1KGQsIHYpCisgICAgeworICAgICAgICBpZiAoIHVubGlrZWx5KCF2LT5hcmNoLnZt X2V2ZW50IHx8ICF2LT5hcmNoLnZtX2V2ZW50LT5tb25pdG9yKSApCisgICAgICAgICAgICBjb250 aW51ZTsKKworICAgICAgICB4ZnJlZSh2LT5hcmNoLnZtX2V2ZW50LT5tb25pdG9yKTsKKyAgICAg ICAgdi0+YXJjaC52bV9ldmVudC0+bW9uaXRvciA9IE5VTEw7CisgICAgfQorCiAgICAgbW9uaXRv cl9jdHJscmVnX2Rpc2FibGVfdHJhcHMoZCk7CiAKICAgICBtZW1zZXQoJmQtPmFyY2gubW9uaXRv ciwgMCwgc2l6ZW9mKGQtPmFyY2gubW9uaXRvcikpOwpAQCAtODgsNiArMTI1LDggQEAgdm9pZCBt b25pdG9yX2NsZWFudXBfZG9tYWluKHN0cnVjdCBkb21haW4gKmQpCiAKIHZvaWQgbW9uaXRvcl9j dHJscmVnX3dyaXRlX3Jlc3VtZShzdHJ1Y3QgdmNwdSAqdiwgdm1fZXZlbnRfcmVzcG9uc2VfdCAq cnNwKQogeworICAgIEFTU0VSVChtb25pdG9yX2RvbWFpbl9pbml0aWFsaXNlZCh2LT5kb21haW4p KTsKKwogICAgIGlmICggcnNwLT5mbGFncyAmIFZNX0VWRU5UX0ZMQUdfREVOWSApCiAgICAgewog ICAgICAgICBzdHJ1Y3QgbW9uaXRvcl93cml0ZV9kYXRhICp3OwpAQCAtOTgsNyArMTM3LDcgQEAg dm9pZCBtb25pdG9yX2N0cmxyZWdfd3JpdGVfcmVzdW1lKHN0cnVjdCB2Y3B1ICp2LCB2bV9ldmVu dF9yZXNwb25zZV90ICpyc3ApCiAgICAgICAgIGlmICggIWF0b21pY19yZWFkKCZ2LT52bV9ldmVu dF9wYXVzZV9jb3VudCkgKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHcgPSAmdi0+ YXJjaC52bV9ldmVudC0+d3JpdGVfZGF0YTsKKyAgICAgICAgdyA9ICZ2LT5hcmNoLnZtX2V2ZW50 LT5tb25pdG9yLT53cml0ZV9kYXRhOwogCiAgICAgICAgIHN3aXRjaCAoIHJzcC0+cmVhc29uICkK ICAgICAgICAgewpAQCAtMTI1LDcgKzE2NCw3IEBAIHZvaWQgbW9uaXRvcl9jdHJscmVnX3dyaXRl X3Jlc3VtZShzdHJ1Y3QgdmNwdSAqdiwgdm1fZXZlbnRfcmVzcG9uc2VfdCAqcnNwKQogCiB2b2lk IG1vbml0b3JfY3RybHJlZ193cml0ZV9kYXRhKHN0cnVjdCB2Y3B1ICp2KQogewotICAgIHN0cnVj dCBtb25pdG9yX3dyaXRlX2RhdGEgKncgPSAmdi0+YXJjaC52bV9ldmVudC0+d3JpdGVfZGF0YTsK KyAgICBzdHJ1Y3QgbW9uaXRvcl93cml0ZV9kYXRhICp3ID0gJnYtPmFyY2gudm1fZXZlbnQtPm1v bml0b3ItPndyaXRlX2RhdGE7CiAKICAgICBpZiAoIGxpa2VseSghdy0+d3JpdGVzX3BlbmRpbmcp ICkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3ZtX2V2ZW50LmMg Yi94ZW4vYXJjaC94ODYvdm1fZXZlbnQuYwppbmRleCBlMmIyNThiLi4yMGNiMWIwIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvdm1fZXZlbnQuYworKysgYi94ZW4vYXJjaC94ODYvdm1fZXZlbnQu YwpAQCAtNjUsOSArNjUsMjIgQEAgdm9pZCB2bV9ldmVudF9jbGVhbnVwX2RvbWFpbihzdHJ1Y3Qg ZG9tYWluICpkLCBzdHJ1Y3Qgdm1fZXZlbnRfZG9tYWluICp2ZWQpCiAgICAgaWYgKCAmZC0+dm1f ZXZlbnQtPm1vbml0b3IgPT0gdmVkICkKICAgICAgICAgbW9uaXRvcl9jbGVhbnVwX2RvbWFpbihk KTsKIAotICAgIC8qIFBlci12Y3B1IHVuaW5pdGlhbGl6YXRpb25zLiAqLworICAgIC8qCisgICAg ICogUGVyLXZDUFU6IGlmIGFsbCByZXNvdXJjZXMgb2YgYWxsIHZtLWV2ZW50IHN1YnN5c3RlbXMg d2VyZSBmcmVlZCwKKyAgICAgKiBhbHNvIGZyZWUgdi0+YXJjaC52bV9ldmVudC4KKyAgICAgKi8K ICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCi0gICAgICAgIHZtX2V2ZW50X2NsZWFudXBfdmNw dV9kZXN0cm95KHYpOworICAgIHsKKyAgICAgICAgaWYgKCB1bmxpa2VseSghdi0+YXJjaC52bV9l dmVudCkgKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLyogQXJlIHRoZXJlIHJl c291cmNlcyBvZiB2bS1ldmVudCBzdWJzeXN0ZW1zIGxlZnQgdW5mcmVlZD8gKi8KKyAgICAgICAg aWYgKCB1bmxpa2VseSh2LT5hcmNoLnZtX2V2ZW50LT5tb25pdG9yKSApCisgICAgICAgICAgICBj b250aW51ZTsKKworICAgICAgICB4ZnJlZSh2LT5hcmNoLnZtX2V2ZW50KTsKKyAgICAgICAgdi0+ YXJjaC52bV9ldmVudCA9IE5VTEw7CisgICAgfQogfQogCiB2b2lkIHZtX2V2ZW50X3RvZ2dsZV9z aW5nbGVzdGVwKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQpkaWZmIC0tZ2l0IGEv eGVuL2NvbW1vbi92bV9ldmVudC5jIGIveGVuL2NvbW1vbi92bV9ldmVudC5jCmluZGV4IGRhZmU3 YmYuLmM0MDliODAgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vdm1fZXZlbnQuYworKysgYi94ZW4v Y29tbW9uL3ZtX2V2ZW50LmMKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgPHhlbi9zY2hl ZC5oPgogI2luY2x1ZGUgPHhlbi9ldmVudC5oPgorI2luY2x1ZGUgPHhlbi9tb25pdG9yLmg+CiAj aW5jbHVkZSA8eGVuL3dhaXQuaD4KICNpbmNsdWRlIDx4ZW4vdm1fZXZlbnQuaD4KICNpbmNsdWRl IDx4ZW4vbWVtX2FjY2Vzcy5oPgpAQCAtMzk3LDExICszOTgsMjcgQEAgdm9pZCB2bV9ldmVudF9y ZXN1bWUoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZtX2V2ZW50X2RvbWFpbiAqdmVkKQogICAg ICAgICBjYXNlIFZNX0VWRU5UX1JFQVNPTl9NT1ZfVE9fTVNSOgogI2VuZGlmCiAgICAgICAgIGNh c2UgVk1fRVZFTlRfUkVBU09OX1dSSVRFX0NUUkxSRUc6CisgICAgICAgICAgICBpZiAoIHVubGlr ZWx5KCFtb25pdG9yX2RvbWFpbl9pbml0aWFsaXNlZChkKSkgKQorICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfR19XQVJOSU5HICJWbS1ldmVudCBtb25pdG9yIHN1 YnN5c3RlbSBub3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlu aXRpYWxpemVkLCBjci13cml0ZSByaW5nIHJlc3BvbnNlIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJpZ25vcmVkIChoaW50OiBoYXZlIHlvdSBjYWxsZWQiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhjX21vbml0b3JfZW5hYmxlKCk/ KS5cbiIpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAg ICAgICAgbW9uaXRvcl9jdHJscmVnX3dyaXRlX3Jlc3VtZSh2LCAmcnNwKTsKICAgICAgICAgICAg IGJyZWFrOwogCiAjaWZkZWYgQ09ORklHX0hBU19NRU1fQUNDRVNTCiAgICAgICAgIGNhc2UgVk1f RVZFTlRfUkVBU09OX01FTV9BQ0NFU1M6CisgICAgICAgICAgICBpZiAoIHVubGlrZWx5KCFtb25p dG9yX2RvbWFpbl9pbml0aWFsaXNlZChkKSkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIHByaW50ayhYRU5MT0dfR19XQVJOSU5HICJWbS1ldmVudCBtb25pdG9yIHN1YnN5c3RlbSBu b3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluaXRpYWxpemVk LCBtZW0tYWNjZXNzIHJpbmcgcmVzcG9uc2UiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImlnbm9yZWQgKGhpbnQ6IGhhdmUgeW91IGNhbGxlZCIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieGNfbW9uaXRvcl9lbmFibGUoKT8pLlxuIik7 CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBt ZW1fYWNjZXNzX3Jlc3VtZSh2LCAmcnNwKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9kb21haW4uaAppbmRleCBhZTFkY2I0Li43NjYzZGEyIDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L2RvbWFpbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgK QEAgLTksNiArOSw3IEBACiAjaW5jbHVkZSA8YXNtL2U4MjAuaD4KICNpbmNsdWRlIDxhc20vbWNl Lmg+CiAjaW5jbHVkZSA8cHVibGljL3ZjcHUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvdm1fZXZlbnQu aD4KICNpbmNsdWRlIDxwdWJsaWMvaHZtL2h2bV9pbmZvX3RhYmxlLmg+CiAKICNkZWZpbmUgaGFz XzMyYml0X3NoaW5mbyhkKSAgICAoKGQpLT5hcmNoLmhhc18zMmJpdF9zaGluZm8pCkBAIC01MDMs NiArNTA0LDIwIEBAIHR5cGVkZWYgZW51bSBfX3BhY2tlZCB7CiAgICAgU01BUF9DSEVDS19ESVNB QkxFRCwgICAgICAgIC8qIGRpc2FibGUgdGhlIGNoZWNrICovCiB9IHNtYXBfY2hlY2tfcG9saWN5 X3Q7CiAKKy8qCisgKiBTaG91bGQgd2UgZW11bGF0ZSB0aGUgbmV4dCBtYXRjaGluZyBpbnN0cnVj dGlvbiBvbiBWQ1BVIHJlc3VtZQorICogYWZ0ZXIgYSB2bV9ldmVudD8KKyAqLworc3RydWN0IGFy Y2hfdm1fZXZlbnRfbW9uaXRvciB7CisgICAgdWludDMyX3QgZW11bGF0ZV9mbGFnczsKKyAgICBz dHJ1Y3Qgdm1fZXZlbnRfZW11bF9yZWFkX2RhdGEgZW11bF9yZWFkX2RhdGE7CisgICAgc3RydWN0 IG1vbml0b3Jfd3JpdGVfZGF0YSB3cml0ZV9kYXRhOworfTsKKworc3RydWN0IGFyY2hfdm1fZXZl bnQgeworICAgIHN0cnVjdCBhcmNoX3ZtX2V2ZW50X21vbml0b3IgKm1vbml0b3I7Cit9OworCiBz dHJ1Y3QgYXJjaF92Y3B1CiB7CiAgICAgLyoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvbW9uaXRvci5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tb25pdG9yLmgKaW5kZXggNDAxNGY4 ZC4uMTE0OTdlZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tb25pdG9yLmgKKysr IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tb25pdG9yLmgKQEAgLTkwLDYgKzkwLDEzIEBAIGludCBt b25pdG9yX2luaXRfZG9tYWluKHN0cnVjdCBkb21haW4gKmQpOwogCiB2b2lkIG1vbml0b3JfY2xl YW51cF9kb21haW4oc3RydWN0IGRvbWFpbiAqZCk7CiAKKy8qIENhbGxlZCBvbiB2Q1BVIGRlc3Ry b3kuICovCitzdGF0aWMgaW5saW5lIHZvaWQgbW9uaXRvcl9jbGVhbnVwX3ZjcHVfZGVzdHJveShz dHJ1Y3QgdmNwdSAqdikKK3sKKyAgICBBU1NFUlQodi0+YXJjaC52bV9ldmVudCk7CisgICAgeGZy ZWUodi0+YXJjaC52bV9ldmVudC0+bW9uaXRvcik7Cit9CisKIHZvaWQgbW9uaXRvcl9jdHJscmVn X3dyaXRlX3Jlc3VtZShzdHJ1Y3QgdmNwdSAqdiwgdm1fZXZlbnRfcmVzcG9uc2VfdCAqcnNwKTsK IAogdm9pZCBtb25pdG9yX2N0cmxyZWdfd3JpdGVfZGF0YShzdHJ1Y3QgdmNwdSAqdik7CmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3ZtX2V2ZW50LmggYi94ZW4vaW5jbHVkZS9hc20t eDg2L3ZtX2V2ZW50LmgKaW5kZXggYzFiODJhYi4uM2MxNGQ0ZiAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni92bV9ldmVudC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvdm1fZXZl bnQuaApAQCAtMjAsMTYgKzIwLDcgQEAKICNkZWZpbmUgX19BU01fWDg2X1ZNX0VWRU5UX0hfXwog CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+Ci0KLS8qCi0gKiBTaG91bGQgd2UgZW11bGF0ZSB0aGUg bmV4dCBtYXRjaGluZyBpbnN0cnVjdGlvbiBvbiBWQ1BVIHJlc3VtZQotICogYWZ0ZXIgYSB2bV9l dmVudD8KLSAqLwotc3RydWN0IGFyY2hfdm1fZXZlbnQgewotICAgIHVpbnQzMl90IGVtdWxhdGVf ZmxhZ3M7Ci0gICAgc3RydWN0IHZtX2V2ZW50X2VtdWxfcmVhZF9kYXRhIGVtdWxfcmVhZF9kYXRh OwotICAgIHN0cnVjdCBtb25pdG9yX3dyaXRlX2RhdGEgd3JpdGVfZGF0YTsKLX07CisjaW5jbHVk ZSA8YXNtL21vbml0b3IuaD4KIAogaW50IHZtX2V2ZW50X2luaXRfZG9tYWluKHN0cnVjdCBkb21h aW4gKmQsIHN0cnVjdCB2bV9ldmVudF9kb21haW4gKnZlZCk7CiAKQEAgLTQxLDYgKzMyLDggQEAg c3RhdGljIGlubGluZSB2b2lkIHZtX2V2ZW50X2NsZWFudXBfdmNwdV9kZXN0cm95KHN0cnVjdCB2 Y3B1ICp2KQogICAgIGlmICggbGlrZWx5KCF2LT5hcmNoLnZtX2V2ZW50KSApCiAgICAgICAgIHJl dHVybjsKIAorICAgIG1vbml0b3JfY2xlYW51cF92Y3B1X2Rlc3Ryb3kodik7CisKICAgICB4ZnJl ZSh2LT5hcmNoLnZtX2V2ZW50KTsKICAgICB2LT5hcmNoLnZtX2V2ZW50ID0gTlVMTDsKIH0KLS0g CjIuNS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==