From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v8 29/50] x86emul: support AVX512DQ floating point manipulation insns Date: Fri, 15 Mar 2019 04:56:28 -0600 Message-ID: <5C8B84DC020000780021F245@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5C8B7EC0020000780021F10B@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 1h4kVv-0007PF-53 for xen-devel@lists.xenproject.org; Fri, 15 Mar 2019 10:56:35 +0000 In-Reply-To: <5C8B7EC0020000780021F10B@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 VGhpcyBjb21wbGV0ZXMgc3VwcG9ydCBvZiBBVlg1MTJEUSBpbiB0aGUgaW5zbiBlbXVsYXRvci4K ClNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCnY3OiBG aXggdmVjdG9yIGxlbmd0aCBjaGVjayBmb3Igc2NhbGFyIGluc25zLiBSZS1iYXNlLgp2NTogTmV3 LgoKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL2V2ZXgtZGlzcDguYworKysgYi90b29s cy90ZXN0cy94ODZfZW11bGF0b3IvZXZleC1kaXNwOC5jCkBAIC00NTcsMTEgKzQ1NywxNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyZHFfYWxsW10KICAgICBJTlNOKGN2dHRwczJ1 cXEsICAgICA2NiwgICAwZiwgNzgsIHZsXzIsICBkLCB2bCksCiAgICAgSU5TTihjdnR1cXEycGQs ICAgICAgZjMsICAgMGYsIDdhLCAgIHZsLCAgcSwgdmwpLAogICAgIElOU04oY3Z0dXFxMnBzLCAg ICAgIGYyLCAgIDBmLCA3YSwgICB2bCwgIHEsIHZsKSwKKyAgICBJTlNOKGZwY2xhc3MsICAgICAg ICA2NiwgMGYzYSwgNjYsICAgdmwsIHNkLCB2bCksCisgICAgSU5TTihmcGNsYXNzLCAgICAgICAg NjYsIDBmM2EsIDY3LCAgIGVsLCBzZCwgZWwpLAogICAgIElOU05fUEZQKG9yLCAgICAgICAgICAg ICAgIDBmLCA1NiksCiAvLyAgICAgICBwbW92ZDJtLCAgICAgICAgZjMsIDBmMzgsIDM5LCAgICAg ICAgZAogLy8gICAgICAgcG1vdm0yLCAgICAgICAgIGYzLCAwZjM4LCAzOCwgICAgICAgZHEKIC8v ICAgICAgIHBtb3ZxMm0sICAgICAgICBmMywgMGYzOCwgMzksICAgICAgICBxCiAgICAgSU5TTihw bXVsbHEsICAgICAgICAgNjYsIDBmMzgsIDQwLCAgIHZsLCAgcSwgdmwpLAorICAgIElOU04ocmFu Z2UsICAgICAgICAgIDY2LCAwZjNhLCA1MCwgICB2bCwgc2QsIHZsKSwKKyAgICBJTlNOKHJhbmdl LCAgICAgICAgICA2NiwgMGYzYSwgNTEsICAgZWwsIHNkLCBlbCksCisgICAgSU5TTihyZWR1Y2Us ICAgICAgICAgNjYsIDBmM2EsIDU2LCAgIHZsLCBzZCwgdmwpLAorICAgIElOU04ocmVkdWNlLCAg ICAgICAgIDY2LCAwZjNhLCA1NywgICBlbCwgc2QsIGVsKSwKICAgICBJTlNOX1BGUCh4b3IsICAg ICAgICAgICAgICAwZiwgNTcpLAogfTsKIAotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3Iv c2ltZC5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmMKQEAgLTI4NSwxMCAr Mjg1LDE4IEBAIHN0YXRpYyBpbmxpbmUgdmVjX3QgbW92bGhwcyh2ZWNfdCB4LCB2ZWMKICMgICBk ZWZpbmUgYnJvYWRjYXN0X29jdGV0KHgpIEIoYnJvYWRjYXN0ZjMyeDhfLCBfbWFzaywgeCwgdW5k ZWYoKSwgfjApCiAjICAgZGVmaW5lIGluc2VydF9vY3RldCh4LCB5LCBwKSBCKGluc2VydGYzMng4 XywgX21hc2ssIHgsIHksIHAsIHVuZGVmKCksIH4wKQogIyAgZW5kaWYKKyMgIGlmZGVmIF9fQVZY NTEyRFFfXworIyAgIGRlZmluZSBmcmFjKHgpIEIocmVkdWNlcHMsIF9tYXNrLCB4LCAwYjAwMDAx MDExLCB1bmRlZigpLCB+MCkKKyMgIGVuZGlmCiAjICBkZWZpbmUgZ2V0ZXhwKHgpIEJSKGdldGV4 cHBzLCBfbWFzaywgeCwgdW5kZWYoKSwgfjApCiAjICBkZWZpbmUgZ2V0bWFudCh4KSBCUihnZXRt YW50cHMsIF9tYXNrLCB4LCAwLCB1bmRlZigpLCB+MCkKLSMgIGRlZmluZSBtYXgoeCwgeSkgQlJf KG1heHBzLCBfbWFzaywgeCwgeSwgdW5kZWYoKSwgfjApCi0jICBkZWZpbmUgbWluKHgsIHkpIEJS XyhtaW5wcywgX21hc2ssIHgsIHksIHVuZGVmKCksIH4wKQorIyAgaWZkZWYgX19BVlg1MTJEUV9f CisjICAgZGVmaW5lIG1heCh4LCB5KSBCUihyYW5nZXBzLCBfbWFzaywgeCwgeSwgMGIwMTAxLCB1 bmRlZigpLCB+MCkKKyMgICBkZWZpbmUgbWluKHgsIHkpIEJSKHJhbmdlcHMsIF9tYXNrLCB4LCB5 LCAwYjAxMDAsIHVuZGVmKCksIH4wKQorIyAgZWxzZQorIyAgIGRlZmluZSBtYXgoeCwgeSkgQlJf KG1heHBzLCBfbWFzaywgeCwgeSwgdW5kZWYoKSwgfjApCisjICAgZGVmaW5lIG1pbih4LCB5KSBC Ul8obWlucHMsIF9tYXNrLCB4LCB5LCB1bmRlZigpLCB+MCkKKyMgIGVuZGlmCiAjICBkZWZpbmUg bWl4KHgsIHkpIEIobW92YXBzLCBfbWFzaywgeCwgeSwgKDBiMDEwMTAxMDEwMTAxMDEwMSAmIEFM TF9UUlVFKSkKICMgIGRlZmluZSBzY2FsZSh4LCB5KSBCUihzY2FsZWZwcywgX21hc2ssIHgsIHks IHVuZGVmKCksIH4wKQogIyAgaWYgVkVDX1NJWkUgPT0gNjQgJiYgZGVmaW5lZChfX0FWWDUxMkVS X18pCkBAIC0zNTAsMTAgKzM1OCwxOCBAQCBzdGF0aWMgaW5saW5lIHZlY190IG1vdmxocHModmVj X3QgeCwgdmVjCiAjICAgZGVmaW5lIGJyb2FkY2FzdF9xdWFydGV0KHgpIEIoYnJvYWRjYXN0ZjY0 eDRfLCAsIHgsIHVuZGVmKCksIH4wKQogIyAgIGRlZmluZSBpbnNlcnRfcXVhcnRldCh4LCB5LCBw KSBCKGluc2VydGY2NHg0XywgX21hc2ssIHgsIHksIHAsIHVuZGVmKCksIH4wKQogIyAgZW5kaWYK KyMgIGlmZGVmIF9fQVZYNTEyRFFfXworIyAgIGRlZmluZSBmcmFjKHgpIEIocmVkdWNlcGQsIF9t YXNrLCB4LCAwYjAwMDAxMDExLCB1bmRlZigpLCB+MCkKKyMgIGVuZGlmCiAjICBkZWZpbmUgZ2V0 ZXhwKHgpIEJSKGdldGV4cHBkLCBfbWFzaywgeCwgdW5kZWYoKSwgfjApCiAjICBkZWZpbmUgZ2V0 bWFudCh4KSBCUihnZXRtYW50cGQsIF9tYXNrLCB4LCAwLCB1bmRlZigpLCB+MCkKLSMgIGRlZmlu ZSBtYXgoeCwgeSkgQlJfKG1heHBkLCBfbWFzaywgeCwgeSwgdW5kZWYoKSwgfjApCi0jICBkZWZp bmUgbWluKHgsIHkpIEJSXyhtaW5wZCwgX21hc2ssIHgsIHksIHVuZGVmKCksIH4wKQorIyAgaWZk ZWYgX19BVlg1MTJEUV9fCisjICAgZGVmaW5lIG1heCh4LCB5KSBCUihyYW5nZXBkLCBfbWFzaywg eCwgeSwgMGIwMTAxLCB1bmRlZigpLCB+MCkKKyMgICBkZWZpbmUgbWluKHgsIHkpIEJSKHJhbmdl cGQsIF9tYXNrLCB4LCB5LCAwYjAxMDAsIHVuZGVmKCksIH4wKQorIyAgZWxzZQorIyAgIGRlZmlu ZSBtYXgoeCwgeSkgQlJfKG1heHBkLCBfbWFzaywgeCwgeSwgdW5kZWYoKSwgfjApCisjICAgZGVm aW5lIG1pbih4LCB5KSBCUl8obWlucGQsIF9tYXNrLCB4LCB5LCB1bmRlZigpLCB+MCkKKyMgIGVu ZGlmCiAjICBkZWZpbmUgbWl4KHgsIHkpIEIobW92YXBkLCBfbWFzaywgeCwgeSwgMGIwMTAxMDEw MSkKICMgIGRlZmluZSBzY2FsZSh4LCB5KSBCUihzY2FsZWZwZCwgX21hc2ssIHgsIHksIHVuZGVm KCksIH4wKQogIyAgaWYgVkVDX1NJWkUgPT0gNjQgJiYgZGVmaW5lZChfX0FWWDUxMkVSX18pCi0t LSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCisrKyBiL3Rv b2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCkBAIC0zOTYyLDYgKzM5 NjIsMzkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIGVsc2UKICAgICAg ICAgcHJpbnRmKCJza2lwcGVkXG4iKTsKIAorCisgICAgcHJpbnRmKCIlLTQwcyIsICJUZXN0aW5n IHZmcGNsYXNzcHN6ICQweDQ2LDY0KCVlZHgpLCVrMi4uLiIpOworICAgIGlmICggc3RhY2tfZXhl YyAmJiBjcHVfaGFzX2F2eDUxMmRxICkKKyAgICB7CisgICAgICAgIGRlY2xfaW5zbih2ZnBjbGFz c3BzKTsKKworICAgICAgICBhc20gdm9sYXRpbGUgKCBwdXRfaW5zbih2ZnBjbGFzc3BzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAweDQ2OiBjaGVjayBmb3IgKy8tIDAgYW5k IG5lZy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZmcGNsYXNzcHN6ICQw eDQ2LCA2NCglMCksICUlazIiKQorICAgICAgICAgICAgICAgICAgICAgICA6OiAiZCIgKE5VTEwp ICk7CisKKyAgICAgICAgc2V0X2luc24odmZwY2xhc3Nwcyk7CisgICAgICAgIGZvciAoIGkgPSAw OyBpIDwgMzsgKytpICkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzWzE2ICsgaSAqIDUgKyAw XSA9IDB4MDAwMDAwMDA7IC8qICswICovCisgICAgICAgICAgICByZXNbMTYgKyBpICogNSArIDFd ID0gMHg4MDAwMDAwMDsgLyogLTAgKi8KKyAgICAgICAgICAgIHJlc1sxNiArIGkgKiA1ICsgMl0g PSAweDgwMDAwMDAxOyAvKiAtREVOICovCisgICAgICAgICAgICByZXNbMTYgKyBpICogNSArIDNd ID0gMHhmZjAwMDAwMDsgLyogLUZJTiAqLworICAgICAgICAgICAgcmVzWzE2ICsgaSAqIDUgKyA0 XSA9IDB4N2YwMDAwMDA7IC8qICtGSU4gKi8KKyAgICAgICAgfQorICAgICAgICByZXNbMzFdID0g MDsKKyAgICAgICAgcmVncy5lZHggPSAodW5zaWduZWQgbG9uZylyZXM7CisgICAgICAgIHJjID0g eDg2X2VtdWxhdGUoJmN0eHQsICZlbXVsb3BzKTsKKyAgICAgICAgaWYgKCByYyAhPSBYODZFTVVM X09LQVkgfHwgIWNoZWNrX2VpcCh2ZnBjbGFzc3BzKSApCisgICAgICAgICAgICBnb3RvIGZhaWw7 CisgICAgICAgIGFzbSB2b2xhdGlsZSAoICJrbW92dyAlJWsyLCAlMCIgOiAiPWciIChyYykgKTsK KyAgICAgICAgaWYgKCByYyAhPSAweGJkZWYgKQorICAgICAgICAgICAgZ290byBmYWlsOworICAg ICAgICBwcmludGYoIm9rYXlcbiIpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHByaW50Zigi c2tpcHBlZFxuIik7CisKICN1bmRlZiBkZWNsX2luc24KICN1bmRlZiBwdXRfaW5zbgogI3VuZGVm IHNldF9pbnNuCi0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisr KyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC01ODIsMTAgKzU4 MiwxNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV4dDBmM2FfdGFibGUgewogICAgIFsweDQ4IC4u LiAweDQ5XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ZwLCAuZm91cl9vcCA9IDEgfSwK ICAgICBbMHg0YSAuLi4gMHg0Yl0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9mcCwgLmZv dXJfb3AgPSAxIH0sCiAgICAgWzB4NGNdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50 LCAuZm91cl9vcCA9IDEgfSwKKyAgICBbMHg1MF0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tl ZF9mcCwgLmQ4cyA9IGQ4c192bCB9LAorICAgIFsweDUxXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRf c2NhbGFyX3ZleHcsIC5kOHMgPSBkOHNfZHEgfSwKICAgICBbMHg1NF0gPSB7IC5zaW1kX3NpemUg PSBzaW1kX3BhY2tlZF9mcCwgLmQ4cyA9IGQ4c192bCB9LAogICAgIFsweDU1XSA9IHsgLnNpbWRf c2l6ZSA9IHNpbWRfc2NhbGFyX3ZleHcsIC5kOHMgPSBkOHNfZHEgfSwKKyAgICBbMHg1Nl0gPSB7 IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9mcCwgLnR3b19vcCA9IDEsIC5kOHMgPSBkOHNfdmwg fSwKKyAgICBbMHg1N10gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3NjYWxhcl92ZXh3LCAuZDhzID0g ZDhzX2RxIH0sCiAgICAgWzB4NWMgLi4uIDB4NWZdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNr ZWRfZnAsIC5mb3VyX29wID0gMSB9LAogICAgIFsweDYwIC4uLiAweDYzXSA9IHsgLnNpbWRfc2l6 ZSA9IHNpbWRfcGFja2VkX2ludCwgLnR3b19vcCA9IDEgfSwKKyAgICBbMHg2Nl0gPSB7IC5zaW1k X3NpemUgPSBzaW1kX3BhY2tlZF9mcCwgLnR3b19vcCA9IDEsIC5kOHMgPSBkOHNfdmwgfSwKKyAg ICBbMHg2N10gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3NjYWxhcl92ZXh3LCAudHdvX29wID0gMSwg LmQ4cyA9IGQ4c19kcSB9LAogICAgIFsweDY4IC4uLiAweDY5XSA9IHsgLnNpbWRfc2l6ZSA9IHNp bWRfcGFja2VkX2ZwLCAuZm91cl9vcCA9IDEgfSwKICAgICBbMHg2YSAuLi4gMHg2Yl0gPSB7IC5z aW1kX3NpemUgPSBzaW1kX3NjYWxhcl9vcGMsIC5mb3VyX29wID0gMSB9LAogICAgIFsweDZjIC4u LiAweDZkXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ZwLCAuZm91cl9vcCA9IDEgfSwK QEAgLTk2OTYsNiArOTcwMiwxMCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgb3BfYnl0ZXMgPSA0 OwogICAgICAgICBnb3RvIHNpbWRfaW1tOF96bW07CiAKKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VW RVhfNjYoMHgwZjNhLCAweDUwKTogLyogdnJhbmdlcHtzLGR9ICRpbW04LFt4eXpdbW0vbWVtLFt4 eXpdbW0sW3h5el1tbXtrfSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmM2Es IDB4NTYpOiAvKiB2cmVkdWNlcHtzLGR9ICRpbW04LFt4eXpdbW0vbWVtLFt4eXpdbW17a30gKi8K KyAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoYXZ4NTEyZHEpOworICAgICAgICAvKiBm YWxsIHRocm91Z2ggKi8KICAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjNhLCAweDI2 KTogLyogdmdldG1hbnRwe3MsZH0gJGltbTgsW3h5el1tbS9tZW0sW3h5el1tbXtrfSAqLwogICAg IGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmM2EsIDB4NTQpOiAvKiB2Zml4dXBpbW1we3Ms ZH0gJGltbTgsW3h5el1tbS9tZW0sW3h5el1tbSxbeHl6XW1te2t9ICovCiAgICAgICAgIGhvc3Rf YW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmYpOwpAQCAtOTcwMyw2ICs5NzEzLDEwIEBAIHg4Nl9l bXVsYXRlKAogICAgICAgICAgICAgYXZ4NTEyX3ZsZW5fY2hlY2soZmFsc2UpOwogICAgICAgICBn b3RvIHNpbWRfaW1tOF96bW07CiAKKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjNh LCAweDUxKTogLyogdnJhbmdlc3tzLGR9ICRpbW04LHhtbS9tZW0seG1tLHhtbXtrfSAqLworICAg IGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmM2EsIDB4NTcpOiAvKiB2cmVkdWNlc3tzLGR9 ICRpbW04LHhtbS9tZW0seG1tLHhtbXtrfSAqLworICAgICAgICBob3N0X2FuZF92Y3B1X211c3Rf aGF2ZShhdng1MTJkcSk7CisgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGNhc2UgWDg2 RU1VTF9PUENfRVZFWF82NigweDBmM2EsIDB4MjcpOiAvKiB2Z2V0bWFudHN7cyxkfSAkaW1tOCx4 bW0vbWVtLHhtbSx4bW17a30gKi8KICAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjNh LCAweDU1KTogLyogdmZpeHVwaW1tc3tzLGR9ICRpbW04LHhtbS9tZW0seG1tLHhtbXtrfSAqLwog ICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJmKTsKQEAgLTk4NTgsNiArOTg3 MiwxNiBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgZHN0LnR5cGUgPSBPUF9OT05FOwogICAgICAg ICBicmVhazsKIAorICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmM2EsIDB4NjYpOiAv KiB2ZnBjbGFzc3B7cyxkfSAkaW1tOCxbeHl6XW1tL21lbSxre2t9ICovCisgICAgY2FzZSBYODZF TVVMX09QQ19FVkVYXzY2KDB4MGYzYSwgMHg2Nyk6IC8qIHZmcGNsYXNzc3tzLGR9ICRpbW04LFt4 eXpdbW0vbWVtLGt7a30gKi8KKyAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoYXZ4NTEy ZHEpOworICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIWV2ZXguciB8fCAhZXZleC5SIHx8 IGV2ZXgueiwgRVhDX1VEKTsKKyAgICAgICAgaWYgKCAhKGIgJiAxKSApCisgICAgICAgICAgICBn b3RvIGF2eDUxMmZfaW1tOF9ub19zYWU7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihl dmV4LmJycywgRVhDX1VEKTsKKyAgICAgICAgYXZ4NTEyX3ZsZW5fY2hlY2sodHJ1ZSk7CisgICAg ICAgIGdvdG8gc2ltZF9pbW04X3ptbTsKKwogICAgIGNhc2UgWDg2RU1VTF9PUEMoMHgwZjNhLCAw eGNjKTogICAgIC8qIHNoYTFybmRzNCAkaW1tOCx4bW0vbTEyOCx4bW0gKi8KICAgICAgICAgaG9z dF9hbmRfdmNwdV9tdXN0X2hhdmUoc2hhKTsKICAgICAgICAgb3BfYnl0ZXMgPSAxNjsKCgoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=