From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v6 35/42] x86emul: support AVX512PF insns Date: Thu, 06 Dec 2018 03:09:18 -0700 Message-ID: <5C08F54E02000078002038B1@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5C08EFAE020000780020373E@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gUqaw-0007J9-Es for xen-devel@lists.xenproject.org; Thu, 06 Dec 2018 10:09:22 +0000 In-Reply-To: <5C08EFAE020000780020373E@prv1-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper , Wei Liu , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org U29tZSBhZGp1c3RtZW50cyBhcmUgbmVjZXNzYXJ5IHRvIHRoZSBFVkVYIERpc3A4IHNjYWxpbmcg dGVzdCBjb2RlIHRvCmFjY291bnQgZm9yIHRoZSB6ZXJvIGJ5dGUgcmVhZHMvd3JpdGVzLiBJIGhh dmUgdG8gYWRtaXQgdGhvdWdoIHRoYXQgSSdtCm5vdCBmdWxseSBjb252aW5jZWQgdGhlIFNETSBk ZXNjcmliZXMgdGhlIGZhdWx0aW5nIGJlaGF2aW9yIGNvcnJlY3RseToKT3RoZXIgcHJlZmV0Y2gg aW5zbnMsIGluY2x1ZGluZyB0aGUgWGVvbiBQaGkgQ29wcm9jZXNzb3IgUy9HIG9uZXMsIGRvbid0 CnByb2R1Y2UgI0dQLyNTUy4gVW50aWwgcHJvdmVuIG90aGVyd2lzZSB0aGlzIGdldHMgaW1wbGVt ZW50ZWQgYXMKc3BlY2lmaWVkLCBub3QgdGhlIGxlYXN0IGJlY2F1c2UgdGhlIHJlc3BlY3RpdmUg ZXhjZXB0aW9uIHNwZWNpZmljYXRpb24KdGFibGUsIGJlc2lkZXMgbGlzdGluZyAjR1AgYW5kICNT UywgYWxzbyBleHBsaWNpdGx5IHNheXMgIkVWRVgtZW5jb2RlZApwcmVmZXRjaCBpbnN0cnVjdGlv bnMgdGhhdCBkbyBub3QgY2F1c2UgI1BGIGZvbGxvdyBleGNlcHRpb24gY2xhc3MgLi4uIi4KClNp Z25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCnY2OiBOZXcu CgotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvZXZleC1kaXNwOC5jCisrKyBiL3Rvb2xz L3Rlc3RzL3g4Nl9lbXVsYXRvci9ldmV4LWRpc3A4LmMKQEAgLTUyMCw2ICs1MjAsMTcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCB0ZXN0IGF2eDUxMmVyXzUxMltdCiAgICAgSU5TTihyc3FydDI4LCA2 NiwgMGYzOCwgY2QsIGVsLCBzZCwgZWwpLAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0 IGF2eDUxMnBmXzUxMltdID0geworICAgIElOU05YKGdhdGhlcnBmMGQsICA2NiwgMGYzOCwgYzYs IDEsIHZsLCBzZCwgZWwpLAorICAgIElOU05YKGdhdGhlcnBmMHEsICA2NiwgMGYzOCwgYzcsIDEs IHZsLCBzZCwgZWwpLAorICAgIElOU05YKGdhdGhlcnBmMWQsICA2NiwgMGYzOCwgYzYsIDIsIHZs LCBzZCwgZWwpLAorICAgIElOU05YKGdhdGhlcnBmMXEsICA2NiwgMGYzOCwgYzcsIDIsIHZsLCBz ZCwgZWwpLAorICAgIElOU05YKHNjYXR0ZXJwZjBkLCA2NiwgMGYzOCwgYzYsIDUsIHZsLCBzZCwg ZWwpLAorICAgIElOU05YKHNjYXR0ZXJwZjBxLCA2NiwgMGYzOCwgYzcsIDUsIHZsLCBzZCwgZWwp LAorICAgIElOU05YKHNjYXR0ZXJwZjFkLCA2NiwgMGYzOCwgYzYsIDYsIHZsLCBzZCwgZWwpLAor ICAgIElOU05YKHNjYXR0ZXJwZjFxLCA2NiwgMGYzOCwgYzcsIDYsIHZsLCBzZCwgZWwpLAorfTsK Kwogc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0IGF2eDUxMl92Ym1pX2FsbFtdID0gewogICAgIElO U04ocGVybWIsICAgICAgICAgNjYsIDBmMzgsIDhkLCB2bCwgYiwgdmwpLAogICAgIElOU04ocGVy bWkyYiwgICAgICAgNjYsIDBmMzgsIDc1LCB2bCwgYiwgdmwpLApAQCAtNTgwLDcgKzU5MSw3IEBA IHN0YXRpYyBib29sIHJlY29yZF9hY2Nlc3MoZW51bSB4ODZfc2VnbWUKIHN0YXRpYyBpbnQgcmVh ZChlbnVtIHg4Nl9zZWdtZW50IHNlZywgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHZvaWQgKnBfZGF0 YSwKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXMsIHN0cnVjdCB4ODZfZW11bGF0 ZV9jdHh0ICpjdHh0KQogewotICAgIGlmICggIXJlY29yZF9hY2Nlc3Moc2VnLCBvZmZzZXQsIGJ5 dGVzKSApCisgICAgaWYgKCAhcmVjb3JkX2FjY2VzcyhzZWcsIG9mZnNldCwgYnl0ZXMgKyAhYnl0 ZXMpICkKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogICAgIG1lbXNldChw X2RhdGEsIDAsIGJ5dGVzKTsKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwpAQCAtNTg5LDcgKzYw MCw3IEBAIHN0YXRpYyBpbnQgcmVhZChlbnVtIHg4Nl9zZWdtZW50IHNlZywgdW4KIHN0YXRpYyBp bnQgd3JpdGUoZW51bSB4ODZfc2VnbWVudCBzZWcsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB2b2lk ICpwX2RhdGEsCiAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBieXRlcywgc3RydWN0IHg4 Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiB7Ci0gICAgaWYgKCAhcmVjb3JkX2FjY2VzcyhzZWcsIG9m ZnNldCwgYnl0ZXMpICkKKyAgICBpZiAoICFyZWNvcmRfYWNjZXNzKHNlZywgb2Zmc2V0LCBieXRl cyArICFieXRlcykgKQogICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CiAgICAg cmV0dXJuIFg4NkVNVUxfT0tBWTsKIH0KQEAgLTU5Nyw3ICs2MDgsNyBAQCBzdGF0aWMgaW50IHdy aXRlKGVudW0geDg2X3NlZ21lbnQgc2VnLCB1CiBzdGF0aWMgdm9pZCB0ZXN0X29uZShjb25zdCBz dHJ1Y3QgdGVzdCAqdGVzdCwgZW51bSB2bCB2bCwKICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGNoYXIgKmluc3RyLCBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKLSAgICB1 bnNpZ25lZCBpbnQgdnN6LCBlc3osIGk7CisgICAgdW5zaWduZWQgaW50IHZzeiwgZXN6LCBpLCBu OwogICAgIGludCByYzsKICAgICBib29sIHNnID0gc3Ryc3RyKHRlc3QtPm1uZW1vbmljLCAiZ2F0 aGVyIikgfHwKICAgICAgICAgICAgICAgc3Ryc3RyKHRlc3QtPm1uZW1vbmljLCAic2NhdHRlciIp OwpAQCAtNzI1LDEwICs3MzYsMjAgQEAgc3RhdGljIHZvaWQgdGVzdF9vbmUoY29uc3Qgc3RydWN0 IHRlc3QgKgogICAgIGZvciAoIGkgPSAwOyBpIDwgKHRlc3QtPnNjYWxlID09IFNDX3ZsID8gdnN6 IDogZXN6KTsgKytpICkKICAgICAgICAgIGlmICggYWNjZXNzZWRbaV0gKQogICAgICAgICAgICAg IGdvdG8gZmFpbDsKLSAgICBmb3IgKCA7IGkgPCAodGVzdC0+c2NhbGUgPT0gU0NfdmwgPyB2c3og OiBlc3opICsgKHNnID8gZXN6IDogdnN6KTsgKytpICkKKworICAgIG4gPSB0ZXN0LT5zY2FsZSA9 PSBTQ192bCA/IHZzeiA6IGVzejsKKyAgICBpZiAoICFzZyApCisgICAgICAgIG4gKz0gdnN6Owor ICAgIGVsc2UgaWYgKCAhc3Ryc3RyKHRlc3QtPm1uZW1vbmljLCAicGYiKSApCisgICAgICAgIG4g Kz0gZXN6OworICAgIGVsc2UKKyAgICAgICAgKytuOworCisgICAgZm9yICggOyBpIDwgbjsgKytp ICkKICAgICAgICAgIGlmICggYWNjZXNzZWRbaV0gIT0gKHNnID8gKHZzeiAvIGVzeikgPj4gKHRl c3QtPm9wYyAmIDEgJiAhZXZleC53KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OiAxKSApCiAgICAgICAgICAgICAgZ290byBmYWlsOworCiAgICAgZm9yICggOyBpIDwgQVJSQVlf U0laRShhY2Nlc3NlZCk7ICsraSApCiAgICAgICAgICBpZiAoIGFjY2Vzc2VkW2ldICkKICAgICAg ICAgICAgICBnb3RvIGZhaWw7CkBAIC04ODcsNiArOTA4LDggQEAgdm9pZCBldmV4X2Rpc3A4X3Rl c3Qodm9pZCAqaW5zdHIsIHN0cnVjdAogICAgIFJVTihhdng1MTJkcSwgbm8xMjgpOwogICAgIFJV Tihhdng1MTJkcSwgNTEyKTsKICAgICBSVU4oYXZ4NTEyZXIsIDUxMik7CisjZGVmaW5lIGNwdV9o YXNfYXZ4NTEycGYgY3B1X2hhc19hdng1MTJmCisgICAgUlVOKGF2eDUxMnBmLCA1MTIpOwogICAg IFJVTihhdng1MTJfdmJtaSwgYWxsKTsKICAgICBSVU4oYXZ4NTEyX3ZibWkyLCBhbGwpOwogfQot LS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IveDg2LWVtdWxhdGUuYworKysgYi90b29scy90 ZXN0cy94ODZfZW11bGF0b3IveDg2LWVtdWxhdGUuYwpAQCAtMTM1LDEyICsxMzUsMTIgQEAgaW50 IGVtdWxfdGVzdF9jcHVpZCgKICAgICAgICAgcmVzLT5jIHw9IDFVIDw8IDIyOwogCiAgICAgLyoK LSAgICAgKiBUaGUgZW11bGF0b3IgZG9lc24ndCBpdHNlbGYgdXNlIEFEQ1gvQURPWC9SRFBJRCwg c28gd2UgY2FuIGFsd2F5cyBydW4KLSAgICAgKiB0aGUgcmVzcGVjdGl2ZSB0ZXN0cy4KKyAgICAg KiBUaGUgZW11bGF0b3IgZG9lc24ndCBpdHNlbGYgdXNlIEFEQ1gvQURPWC9SRFBJRCBub3IgdGhl IFMvRyBwcmVmZXRjaAorICAgICAqIGluc25zLCBzbyB3ZSBjYW4gYWx3YXlzIHJ1biB0aGUgcmVz cGVjdGl2ZSB0ZXN0cy4KICAgICAgKi8KICAgICBpZiAoIGxlYWYgPT0gNyAmJiBzdWJsZWFmID09 IDAgKQogICAgIHsKLSAgICAgICAgcmVzLT5iIHw9IDFVIDw8IDE5OworICAgICAgICByZXMtPmIg fD0gKDFVIDw8IDE5KSB8ICgxVSA8PCAyNik7CiAgICAgICAgIHJlcy0+YyB8PSAxVSA8PCAyMjsK ICAgICB9CiAKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKKysr IGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKQEAgLTUyNSw2ICs1MjUs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV4dDBmMzhfdGFibGUgewogICAgIFsweGJkXSA9IHsg LnNpbWRfc2l6ZSA9IHNpbWRfc2NhbGFyX3ZleHcsIC5kOHMgPSBkOHNfZHEgfSwKICAgICBbMHhi ZV0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9mcCwgLmQ4cyA9IGQ4c192bCB9LAogICAg IFsweGJmXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfc2NhbGFyX3ZleHcsIC5kOHMgPSBkOHNfZHEg fSwKKyAgICBbMHhjNiAuLi4gMHhjN10gPSB7IC5zaW1kX3NpemUgPSBzaW1kX290aGVyLCAudnNp YiA9IDEsIC5kOHMgPSBkOHNfZHEgfSwKICAgICBbMHhjOF0gPSB7IC5zaW1kX3NpemUgPSBzaW1k X3BhY2tlZF9mcCwgLnR3b19vcCA9IDEsIC5kOHMgPSBkOHNfdmwgfSwKICAgICBbMHhjOV0gPSB7 IC5zaW1kX3NpemUgPSBzaW1kX290aGVyIH0sCiAgICAgWzB4Y2FdID0geyAuc2ltZF9zaXplID0g c2ltZF9wYWNrZWRfZnAsIC50d29fb3AgPSAxLCAuZDhzID0gZDhzX3ZsIH0sCkBAIC0xOTAzLDYg KzE5MDQsNyBAQCBzdGF0aWMgYm9vbCB2Y3B1X2hhcygKICNkZWZpbmUgdmNwdV9oYXNfc21hcCgp ICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDIwLCBjdHh0LCBvcHMpCiAjZGVmaW5l IHZjcHVfaGFzX2NsZmx1c2hvcHQoKSAgdmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAyMywgY3R4 dCwgb3BzKQogI2RlZmluZSB2Y3B1X2hhc19jbHdiKCkgICAgICAgIHZjcHVfaGFzKCAgICAgICAg IDcsIEVCWCwgMjQsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfYXZ4NTEycGYoKSAgICB2 Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDI2LCBjdHh0LCBvcHMpCiAjZGVmaW5lIHZjcHVfaGFz X2F2eDUxMmVyKCkgICAgdmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAyNywgY3R4dCwgb3BzKQog I2RlZmluZSB2Y3B1X2hhc19zaGEoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVCWCwg MjksIGN0eHQsIG9wcykKICNkZWZpbmUgdmNwdV9oYXNfYXZ4NTEyYncoKSAgICB2Y3B1X2hhcygg ICAgICAgICA3LCBFQlgsIDMwLCBjdHh0LCBvcHMpCkBAIC05Mzc3LDYgKzkzNzksODAgQEAgeDg2 X2VtdWxhdGUoCiAKICAgICAgICAgc3RhdGUtPnNpbWRfc2l6ZSA9IHNpbWRfbm9uZTsKICAgICAg ICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwg MHhjNik6CisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHhjNyk6CisgICAg eworICAgICAgICB0eXBlb2YoZXZleCkgKnBldmV4OworICAgICAgICB1bmlvbiB7CisgICAgICAg ICAgICBpbnQzMl90IGR3WzE2XTsKKyAgICAgICAgICAgIGludDY0X3QgcXdbOF07CisgICAgICAg IH0gaW5kZXg7CisKKyAgICAgICAgQVNTRVJUKGVhLnR5cGUgPT0gT1BfTUVNKTsKKyAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKCghY3B1X2hhc19hdng1MTJmIHx8ICFldmV4Lm9wbXNrIHx8 IGV2ZXguYnIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmV4LnogfHwgZXZl eC5yZWcgIT0gMHhmIHx8IGV2ZXgubHIgIT0gMiksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFWENfVUQpOworICAgICAgICB2Y3B1X211c3RfaGF2ZShhdng1MTJwZik7CisKKyAgICAg ICAgc3dpdGNoICggbW9kcm1fcmVnICYgNyApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSAxOiAv KiB2Z2F0aGVycGYwe2QscX1we2Qsc30gbWVte2t9ICovCisgICAgICAgIGNhc2UgMjogLyogdmdh dGhlcnBmMXtkLHF9cHtkLHN9IG1lbXtrfSAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg IGNhc2UgNTogLyogdnNjYXR0ZXJwZjB7ZCxxfXB7ZCxzfSBtZW17a30gKi8KKyAgICAgICAgY2Fz ZSA2OiAvKiB2c2NhdHRlcnBmMXtkLHF9cHtkLHN9IG1lbXtrfSAqLworICAgICAgICAgICAgZmFp bF9pZighb3BzLT53cml0ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK KyAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbihFWENfVUQpOworICAgICAgICB9CisKKyAg ICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV96bW0pOworCisgICAgICAgIC8qIFJlYWQgaW5kZXgg cmVnaXN0ZXIuICovCisgICAgICAgIG9wYyA9IGluaXRfZXZleChzdHViKTsKKyAgICAgICAgcGV2 ZXggPSBjb3B5X0VWRVgob3BjLCBldmV4KTsKKyAgICAgICAgcGV2ZXgtPm9wY3ggPSB2ZXhfMGY7 CisgICAgICAgIC8qIHZtb3ZkcXV7MzIsNjR9ICovCisgICAgICAgIG9wY1swXSA9IDB4N2Y7Cisg ICAgICAgIHBldmV4LT5wZnggPSB2ZXhfZjM7CisgICAgICAgIHBldmV4LT53ID0gYiAmIDE7Cisg ICAgICAgIC8qIFVzZSAoJXJheCkgYXMgZGVzdGluYXRpb24gYW5kIHNpYl9pbmRleCBhcyBzb3Vy Y2UuICovCisgICAgICAgIHBldmV4LT5iID0gMTsKKyAgICAgICAgb3BjWzFdID0gKHN0YXRlLT5z aWJfaW5kZXggJiA3KSA8PCAzOworICAgICAgICBwZXZleC0+ciA9ICFtb2RlXzY0Yml0KCkgfHwg IShzdGF0ZS0+c2liX2luZGV4ICYgMHgwOCk7CisgICAgICAgIHBldmV4LT5SID0gIW1vZGVfNjRi aXQoKSB8fCAhKHN0YXRlLT5zaWJfaW5kZXggJiAweDEwKTsKKyAgICAgICAgcGV2ZXgtPlJYID0g MTsKKyAgICAgICAgb3BjWzJdID0gMHhjMzsKKworICAgICAgICBpbnZva2Vfc3R1YigiIiwgIiIs ICI9bSIgKGluZGV4KSA6ICJhIiAoJmluZGV4KSk7CisgICAgICAgIHB1dF9zdHViKHN0dWIpOwor CisgICAgICAgIC8qIENsZWFyIHVudG91Y2hlZCBwYXJ0cyBvZiB0aGUgbWFzayB2YWx1ZS4gKi8K KyAgICAgICAgbiA9IDEgPDwgKDQgLSAoKGIgJiAxKSB8IGV2ZXgudykpOworICAgICAgICBvcF9t YXNrICY9ICgxIDw8IG4pIC0gMTsKKworICAgICAgICBmb3IgKCBpID0gMDsgcmMgPT0gWDg2RU1V TF9PS0FZICYmIG9wX21hc2s7ICsraSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpZ25lZCBs b25nIGlkeCA9IGIgJiAxID8gaW5kZXgucXdbaV0gOiBpbmRleC5kd1tpXTsKKworICAgICAgICAg ICAgaWYgKCAhKG9wX21hc2sgJiAoMSA8PCBpKSkgKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl OworCisgICAgICAgICAgICByYyA9IChtb2RybV9yZWcgJiA0CisgICAgICAgICAgICAgICAgICA/ IG9wcy0+d3JpdGUKKyAgICAgICAgICAgICAgICAgIDogb3BzLT5yZWFkKShlYS5tZW0uc2VnLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydW5jYXRlX2VhKGVhLm1lbS5vZmYgKwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZHggPDwgc3RhdGUt PnNpYl9zY2FsZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIGN0 eHQpOworCisgICAgICAgICAgICBvcF9tYXNrICY9IH4oMSA8PCBpKTsKKyAgICAgICAgfQorCisg ICAgICAgIHN0YXRlLT5zaW1kX3NpemUgPSBzaW1kX25vbmU7CisgICAgICAgIGJyZWFrOwogICAg IH0KIAogICAgIGNhc2UgWDg2RU1VTF9PUEMoMHgwZjM4LCAweGM4KTogICAgIC8qIHNoYTFuZXh0 ZSB4bW0vbTEyOCx4bW0gKi8KCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94 ZW4tZGV2ZWw=