From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH RESEND v5 22/24] tools: L2 CAT: support show cbm for L2 CAT. Date: Thu, 19 Jan 2017 14:01:24 +0800 Message-ID: <1484805686-7249-23-git-send-email-yi.y.sun@linux.intel.com> References: <1484805686-7249-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cU5ou-0007RI-0N for xen-devel@lists.xenproject.org; Thu, 19 Jan 2017 06:03:36 +0000 In-Reply-To: <1484805686-7249-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: wei.liu2@citrix.com, konrad.wilk@oracle.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGNoYW5nZXMgaW4geGwveGMgY2hhbmdlcyB0byBzdXBwb3J0 CnNob3dpbmcgQ0JNIG9mIEwyIENBVC4KClRoZSBuZXcgbGV2ZWwgb3B0aW9uIGlzIGludHJvZHVj ZWQgdG8gb3JpZ2luYWwgQ0FUIHNob3dpbmcKY29tbWFuZCBpbiBvcmRlciB0byBzaG93IENCTSBm b3Igc3BlY2lmaWVkIGxldmVsIENBVC4KLSAneGwgcHNyLWNhdC1zaG93JyBpcyB1cGRhdGVkIHRv IHNob3cgQ0JNIG9mIGEgZG9tYWluCiAgYWNjb3JkaW5nIHRvIGlucHV0IGNhY2hlIGxldmVsLgoK RXhhbXBsZXM6CnJvb3RAOn4kIHhsIHBzci1jYXQtc2hvdyAtbDIgMQpTb2NrZXQgSUQgICAgICAg OiAwCkRlZmF1bHQgQ0JNICAgICA6IDB4ZmYKICAgSUQgICAgICAgICAgICAgICAgICAgICBOQU1F ICAgICAgICAgICAgIENCTQogICAgMSAgICAgICAgICAgICAgICAgdWJ1bnR1MTQgICAgICAgICAg ICAweDdmCgpTaWduZWQtb2ZmLWJ5OiBIZSBDaGVuIDxoZS5jaGVuQGxpbnV4LmludGVsLmNvbT4K U2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5jb20+Ci0tLQp2NToK ICAgIC0gcmVtb3ZlICdMMl9DQk0nIGluIGlkbCBiZWNhdXNlIGl0IGhhcyBiZWVuIG1vdmVkIHRv IHBhdGNoIDIxLgotLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIHwgIDEgKwogdG9v bHMvbGlieGMveGNfcHNyLmMgICAgICAgICAgfCAgMyArKwogdG9vbHMvbGlieGwveGxfY21kaW1w bC5jICAgICAgfCA4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t CiB0b29scy9saWJ4bC94bF9jbWR0YWJsZS5jICAgICB8ICAzICstCiA0IGZpbGVzIGNoYW5nZWQs IDU5IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhjL2luY2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5k ZXggN2VhMGM5Mi4uYTAwOTYyNSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5j dHJsLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAgLTI2MDIsNiArMjYw Miw3IEBAIGVudW0geGNfcHNyX2NhdF90eXBlIHsKICAgICBYQ19QU1JfQ0FUX0wzX0NCTSAgICAg ID0gMSwKICAgICBYQ19QU1JfQ0FUX0wzX0NCTV9DT0RFID0gMiwKICAgICBYQ19QU1JfQ0FUX0wz X0NCTV9EQVRBID0gMywKKyAgICBYQ19QU1JfQ0FUX0wyX0NCTSAgICAgID0gNCwKIH07CiB0eXBl ZGVmIGVudW0geGNfcHNyX2NhdF90eXBlIHhjX3Bzcl9jYXRfdHlwZTsKIApkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGMveGNfcHNyLmMgYi90b29scy9saWJ4Yy94Y19wc3IuYwppbmRleCA2YzYxYWE1 Li5mMGFlZDJkIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19wc3IuYworKysgYi90b29scy9s aWJ4Yy94Y19wc3IuYwpAQCAtMjk5LDYgKzI5OSw5IEBAIGludCB4Y19wc3JfY2F0X2dldF9kb21h aW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgY2FzZSBYQ19Q U1JfQ0FUX0wzX0NCTV9EQVRBOgogICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1Bf R0VUX0wzX0RBVEE7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgWENfUFNSX0NBVF9MMl9DQk06 CisgICAgICAgIGNtZCA9IFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDJfQ0JNOworICAgICAg ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAg cmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jIGIvdG9vbHMv bGlieGwveGxfY21kaW1wbC5jCmluZGV4IDQyZDY4MjcuLmNkY2VlNWYgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2xpYnhsL3hsX2NtZGltcGwuYworKysgYi90b29scy9saWJ4bC94bF9jbWRpbXBsLmMKQEAg LTkzNzksNyArOTM3OSw3IEBAIHN0YXRpYyB2b2lkIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9j Ym1fdHlwZSh1aW50MzJfdCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQsCiB9CiAKIHN0YXRpYyB2 b2lkIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0odWludDMyX3QgZG9taWQsIHVpbnQzMl90 IHNvY2tldGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s IGNkcF9lbmFibGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sIGNkcF9lbmFibGVkLCB1bnNpZ25lZCBpbnQgbHZsKQogewogICAgIGNoYXIgKmRvbWFpbl9u YW1lOwogCkBAIC05Mzg3LDI3ICs5Mzg3LDM4IEBAIHN0YXRpYyB2b2lkIHBzcl9jYXRfcHJpbnRf b25lX2RvbWFpbl9jYm0odWludDMyX3QgZG9taWQsIHVpbnQzMl90IHNvY2tldGlkLAogICAgIHBy aW50ZigiJTVkJTI1cyIsIGRvbWlkLCBkb21haW5fbmFtZSk7CiAgICAgZnJlZShkb21haW5fbmFt ZSk7CiAKLSAgICBpZiAoIWNkcF9lbmFibGVkKSB7Ci0gICAgICAgIHBzcl9jYXRfcHJpbnRfb25l X2RvbWFpbl9jYm1fdHlwZShkb21pZCwgc29ja2V0aWQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNKTsKLSAgICB9IGVs c2UgewotICAgICAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQsIHNv Y2tldGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExf UFNSX0NCTV9UWVBFX0wzX0NCTV9DT0RFKTsKKyAgICBzd2l0Y2ggKGx2bCkgeworICAgIGNhc2Ug MzoKKyAgICAgICAgaWYgKCFjZHBfZW5hYmxlZCkgeworICAgICAgICAgICAgcHNyX2NhdF9wcmlu dF9vbmVfZG9tYWluX2NibV90eXBlKGRvbWlkLCBzb2NrZXRpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNKTsK KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9j Ym1fdHlwZShkb21pZCwgc29ja2V0aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTElCWExfUFNSX0NCTV9UWVBFX0wzX0NCTV9DT0RFKTsKKyAgICAgICAg ICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZShkb21pZCwgc29ja2V0aWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfUFNSX0NC TV9UWVBFX0wzX0NCTV9EQVRBKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNl IDI6CiAgICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZShkb21pZCwgc29j a2V0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9Q U1JfQ0JNX1RZUEVfTDNfQ0JNX0RBVEEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTElCWExfUFNSX0NCTV9UWVBFX0wyX0NCTSk7CisgICAgICAgIGJyZWFrOwor ICAgIGRlZmF1bHQ6CisgICAgICAgIHByaW50ZigiSW5wdXQgbHZsICVkIGlzIHdyb25nISIsIGx2 bCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHByaW50ZigiXG4iKTsKIH0KIAogc3Rh dGljIGludCBwc3JfY2F0X3ByaW50X2RvbWFpbl9jYm0odWludDMyX3QgZG9taWQsIHVpbnQzMl90 IHNvY2tldGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjZHBf ZW5hYmxlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2RwX2Vu YWJsZWQsIHVuc2lnbmVkIGludCBsdmwpCiB7CiAgICAgaW50IGksIG5yX2RvbWFpbnM7CiAgICAg bGlieGxfZG9taW5mbyAqbGlzdDsKIAogICAgIGlmIChkb21pZCAhPSBJTlZBTElEX0RPTUlEKSB7 Ci0gICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0oZG9taWQsIHNvY2tldGlkLCBj ZHBfZW5hYmxlZCk7CisgICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0oZG9taWQs IHNvY2tldGlkLCBjZHBfZW5hYmxlZCwgbHZsKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog CkBAIC05NDE3LDQ5ICs5NDI4LDU1IEBAIHN0YXRpYyBpbnQgcHNyX2NhdF9wcmludF9kb21haW5f Y2JtKHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwKICAgICB9CiAKICAgICBmb3Ig KGkgPSAwOyBpIDwgbnJfZG9tYWluczsgaSsrKQotICAgICAgICBwc3JfY2F0X3ByaW50X29uZV9k b21haW5fY2JtKGxpc3RbaV0uZG9taWQsIHNvY2tldGlkLCBjZHBfZW5hYmxlZCk7CisgICAgICAg IHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0obGlzdFtpXS5kb21pZCwgc29ja2V0aWQsIGNk cF9lbmFibGVkLCBsdmwpOwogICAgIGxpYnhsX2RvbWluZm9fbGlzdF9mcmVlKGxpc3QsIG5yX2Rv bWFpbnMpOwogCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgcHNyX2NhdF9wcmludF9z b2NrZXQodWludDMyX3QgZG9taWQsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbykKK3N0YXRpYyBp bnQgcHNyX2NhdF9wcmludF9zb2NrZXQodWludDMyX3QgZG9taWQsIGxpYnhsX3Bzcl9jYXRfaW5m byAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGx2 bCkKIHsKICAgICBpbnQgcmM7CiAgICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKIAotICAgIHJj ID0gbGlieGxfcHNyX2NtdF9nZXRfbDNfY2FjaGVfc2l6ZShjdHgsIGluZm8tPmlkLCAmbDNfY2Fj aGVfc2l6ZSk7Ci0gICAgaWYgKHJjKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVk IHRvIGdldCBsMyBjYWNoZSBzaXplIGZvciBzb2NrZXQ6JWRcbiIsCi0gICAgICAgICAgICAgICAg aW5mby0+aWQpOwotICAgICAgICByZXR1cm4gLTE7CisgICAgcHJpbnRmKCIlLTE2czogJXVcbiIs ICJTb2NrZXQgSUQiLCBpbmZvLT5pZCk7CisKKyAgICAvKiBTbyBmYXIsIENNVCBvbmx5IHN1cHBv cnRzIEwzIGNhY2hlLiAqLworICAgIGlmIChsdmwgPT0gMykKKyAgICB7CisgICAgICAgIHJjID0g bGlieGxfcHNyX2NtdF9nZXRfbDNfY2FjaGVfc2l6ZShjdHgsIGluZm8tPmlkLCAmbDNfY2FjaGVf c2l6ZSk7CisgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJG YWlsZWQgdG8gZ2V0IGwzIGNhY2hlIHNpemUgZm9yIHNvY2tldDolZFxuIiwKKyAgICAgICAgICAg ICAgICAgICAgaW5mby0+aWQpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9Cisg ICAgICAgIHByaW50ZigiJS0xNnM6ICV1S0JcbiIsICJMMyBDYWNoZSIsIGwzX2NhY2hlX3NpemUp OwogICAgIH0KIAotICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAiU29ja2V0IElEIiwgaW5mby0+ aWQpOwotICAgIHByaW50ZigiJS0xNnM6ICV1S0JcbiIsICJMMyBDYWNoZSIsIGwzX2NhY2hlX3Np emUpOwogICAgIHByaW50ZigiJS0xNnM6ICUjbGx4XG4iLCAiRGVmYXVsdCBDQk0iLCAoMXVsbCA8 PCBpbmZvLT5jYm1fbGVuKSAtIDEpOwogICAgIGlmIChpbmZvLT5jZHBfZW5hYmxlZCkKICAgICAg ICAgcHJpbnRmKCIlNXMlMjVzJTE2cyUxNnNcbiIsICJJRCIsICJOQU1FIiwgIkNCTSAoY29kZSki LCAiQ0JNIChkYXRhKSIpOwogICAgIGVsc2UKICAgICAgICAgcHJpbnRmKCIlNXMlMjVzJTE2c1xu IiwgIklEIiwgIk5BTUUiLCAiQ0JNIik7CiAKLSAgICByZXR1cm4gcHNyX2NhdF9wcmludF9kb21h aW5fY2JtKGRvbWlkLCBpbmZvLT5pZCwgaW5mby0+Y2RwX2VuYWJsZWQpOworICAgIHJldHVybiBw c3JfY2F0X3ByaW50X2RvbWFpbl9jYm0oZG9taWQsIGluZm8tPmlkLCBpbmZvLT5jZHBfZW5hYmxl ZCwgbHZsKTsKIH0KIAotc3RhdGljIGludCBwc3JfY2F0X3Nob3codWludDMyX3QgZG9taWQpCitz dGF0aWMgaW50IHBzcl9jYXRfc2hvdyh1aW50MzJfdCBkb21pZCwgdW5zaWduZWQgaW50IGx2bCkK IHsKICAgICBpbnQgaSwgbnI7CiAgICAgaW50IHJjOwogICAgIGxpYnhsX3Bzcl9jYXRfaW5mbyAq aW5mbzsKIAotICAgIHJjID0gbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhjdHgsICZpbmZvLCAmbnIs IDMpOworICAgIHJjID0gbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhjdHgsICZpbmZvLCAmbnIsIGx2 bCk7CiAgICAgaWYgKHJjKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdl dCBjYXQgaW5mb1xuIik7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCAl cyBjYXQgaW5mb1xuIiwgKGx2bCA9PSAzKT8iTDMiOiJMMiIpOwogICAgICAgICByZXR1cm4gcmM7 CiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IG5yOyBpKyspIHsKLSAgICAgICAgcmMgPSBw c3JfY2F0X3ByaW50X3NvY2tldChkb21pZCwgaW5mbyArIGkpOworICAgICAgICByYyA9IHBzcl9j YXRfcHJpbnRfc29ja2V0KGRvbWlkLCBpbmZvICsgaSwgbHZsKTsKICAgICAgICAgaWYgKHJjKQog ICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgfQpAQCAtOTU3MCwxMSArOTU4NywxOSBAQCBpbnQg bWFpbl9wc3JfY2F0X2NibV9zZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiBpbnQgbWFpbl9w c3JfY2F0X3Nob3coaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewotICAgIGludCBvcHQ7CisgICAg aW50IG9wdCA9IDA7CiAgICAgdWludDMyX3QgZG9taWQ7CisgICAgdW5zaWduZWQgaW50IGx2bCA9 IDM7CiAKLSAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiIiwgTlVMTCwgInBzci1jYXQtc2hv dyIsIDApIHsKLSAgICAgICAgLyogTm8gb3B0aW9ucyAqLworICAgIHN0YXRpYyBzdHJ1Y3Qgb3B0 aW9uIG9wdHNbXSA9IHsKKyAgICAgICAgeyJsZXZlbCIsIDEsIDAsICdsJ30sCisgICAgICAgIENP TU1PTl9MT05HX09QVFMKKyAgICB9OworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgImw6 Iiwgb3B0cywgInBzci1jYXQtc2hvdyIsIDApIHsKKyAgICBjYXNlICdsJzoKKyAgICAgICAgbHZs ID0gYXRvaShvcHRhcmcpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAob3B0aW5k ID49IGFyZ2MpCkBAIC05NTg2LDcgKzk2MTEsNyBAQCBpbnQgbWFpbl9wc3JfY2F0X3Nob3coaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICByZXR1cm4gMjsKICAgICB9CiAKLSAgICByZXR1 cm4gcHNyX2NhdF9zaG93KGRvbWlkKTsKKyAgICByZXR1cm4gcHNyX2NhdF9zaG93KGRvbWlkLCBs dmwpOwogfQogCiBpbnQgbWFpbl9wc3JfaHdpbmZvKGludCBhcmdjLCBjaGFyICoqYXJndikKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMgYi90b29scy9saWJ4bC94bF9jbWR0 YWJsZS5jCmluZGV4IDU4OGQ1ZDkuLmM1ZmJhZDQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hs X2NtZHRhYmxlLmMKKysrIGIvdG9vbHMvbGlieGwveGxfY21kdGFibGUuYwpAQCAtNTU2LDcgKzU1 Niw4IEBAIHN0cnVjdCBjbWRfc3BlYyBjbWRfdGFibGVbXSA9IHsKICAgICB7ICJwc3ItY2F0LXNo b3ciLAogICAgICAgJm1haW5fcHNyX2NhdF9zaG93LCAwLCAxLAogICAgICAgIlNob3cgQ2FjaGUg QWxsb2NhdGlvbiBUZWNobm9sb2d5IGluZm9ybWF0aW9uIiwKLSAgICAgICI8RG9tYWluPiIsCisg ICAgICAiW29wdGlvbnNdIDxEb21haW4+IiwKKyAgICAgICItbCA8bGV2ZWw+ICAgICAgICBTcGVj aWZ5IHRoZSBjYWNoZSBsZXZlbCB0byBwcm9jZXNzLCBvdGhlcndpc2UgTDMgY2FjaGUgaXMgcHJv Y2Vzc2VkXG4iCiAgICAgfSwKIAogI2VuZGlmCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=