From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v12 21/23] tools: L2 CAT: support show cbm for L2 CAT. Date: Wed, 14 Jun 2017 09:12:54 +0800 Message-ID: <1497402776-22348-22-git-send-email-yi.y.sun@linux.intel.com> References: <1497402776-22348-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dKx4d-00088w-Gu for xen-devel@lists.xenproject.org; Wed, 14 Jun 2017 01:26:19 +0000 In-Reply-To: <1497402776-22348-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: kevin.tian@intel.com, wei.liu2@citrix.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, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGNoYW5nZXMgaW4geGwveGMgY2hhbmdlcyB0byBzdXBwb3J0 CnNob3dpbmcgQ0JNIG9mIEwyIENBVC4KClRoZSBuZXcgbGV2ZWwgb3B0aW9uIGlzIGludHJvZHVj ZWQgdG8gb3JpZ2luYWwgQ0FUIHNob3dpbmcKY29tbWFuZCBpbiBvcmRlciB0byBzaG93IENCTSBm b3Igc3BlY2lmaWVkIGxldmVsIENBVC4KLSAneGwgcHNyLWNhdC1zaG93JyBpcyB1cGRhdGVkIHRv IHNob3cgQ0JNIG9mIGEgZG9tYWluCiAgYWNjb3JkaW5nIHRvIGlucHV0IGNhY2hlIGxldmVsLgoK RXhhbXBsZXM6CnJvb3RAOn4kIHhsIHBzci1jYXQtc2hvdyAtbDIgMQpTb2NrZXQgSUQgICAgICAg OiAwCkRlZmF1bHQgQ0JNICAgICA6IDB4ZmYKICAgSUQgICAgICAgICAgICAgICAgICAgICBOQU1F ICAgICAgICAgICAgIENCTQogICAgMSAgICAgICAgICAgICAgICAgdWJ1bnR1MTQgICAgICAgICAg ICAweDdmCgpTaWduZWQtb2ZmLWJ5OiBIZSBDaGVuIDxoZS5jaGVuQGxpbnV4LmludGVsLmNvbT4K U2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5jb20+CkFja2VkLWJ5 OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0Kdjk6CiAgICAtIG1vdmUgeGxfY21k aW1wbC5jIGNoYW5nZXMgaW50byB4bC94bF9wc3IuYy4KICAgIC0gbW92ZSB4bF9jbWR0YWJsZS5j IGNoYW5nZXMgaW50byB4bC94bF9jbWR0YWJsZS5jLgp2NjoKICAgIC0gY2hlY2sgaWYgaW5wdXQg bGV2ZWwgaXMgY29ycmVjdC4KICAgIC0gYWRqdXN0ICd7JyBwb3N0aW9uIGZvciAnaWYnLgogICAg ICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCnY1OgogICAgLSByZW1vdmUgJ0wyX0NCTScgaW4gaWRs IGJlY2F1c2UgaXQgaGFzIGJlZW4gbW92ZWQgdG8gcGF0Y2ggMjE6CiAgICAgICJ0b29sczogTDIg Q0FUOiBzdXBwb3J0IGdldCBIVyBpbmZvIGZvciBMMiBDQVQiLgogICAgICAoc3VnZ2VzdGVkIGJ5 IFdlaSBMaXUpCnY0OgogICAgLSBjcmVhdGUgdGhpcyBwYXRjaCBiZWNhdXNlIG9mIGNvZGVzIGFy Y2hpdGVjdHVyZSBjaGFuZ2UuCi0tLQotLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5o IHwgIDEgKwogdG9vbHMvbGlieGMveGNfcHNyLmMgICAgICAgICAgfCAgMyArKwogdG9vbHMveGwv eGxfY21kdGFibGUuYyAgICAgICAgfCAgMyArLQogdG9vbHMveGwveGxfcHNyLmMgICAgICAgICAg ICAgfCA4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiA0IGZp bGVzIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94 ZW5jdHJsLmgKaW5kZXggM2ZiY2Q3MC4uMDk1MmY3NSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMv aW5jbHVkZS94ZW5jdHJsLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAg LTI0NDQsNiArMjQ0NCw3IEBAIGVudW0geGNfcHNyX2NhdF90eXBlIHsKICAgICBYQ19QU1JfQ0FU X0wzX0NCTSAgICAgID0gMSwKICAgICBYQ19QU1JfQ0FUX0wzX0NCTV9DT0RFID0gMiwKICAgICBY Q19QU1JfQ0FUX0wzX0NCTV9EQVRBID0gMywKKyAgICBYQ19QU1JfQ0FUX0wyX0NCTSAgICAgID0g NCwKIH07CiB0eXBlZGVmIGVudW0geGNfcHNyX2NhdF90eXBlIHhjX3Bzcl9jYXRfdHlwZTsKIApk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfcHNyLmMgYi90b29scy9saWJ4Yy94Y19wc3IuYwpp bmRleCA4NGEwOGM0Li4wNGY1OTI3IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19wc3IuYwor KysgYi90b29scy9saWJ4Yy94Y19wc3IuYwpAQCAtMjk5LDYgKzI5OSw5IEBAIGludCB4Y19wc3Jf Y2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAg ICAgY2FzZSBYQ19QU1JfQ0FUX0wzX0NCTV9EQVRBOgogICAgICAgICBjbWQgPSBYRU5fRE9NQ1RM X1BTUl9DQVRfT1BfR0VUX0wzX0RBVEE7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgWENfUFNS X0NBVF9MMl9DQk06CisgICAgICAgIGNtZCA9IFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDJf Q0JNOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBlcnJubyA9IEVJTlZB TDsKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfY21kdGFibGUu YyBiL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKaW5kZXggMzBlYjkzYy4uNTM5Y2I2NCAxMDA2NDQK LS0tIGEvdG9vbHMveGwveGxfY21kdGFibGUuYworKysgYi90b29scy94bC94bF9jbWR0YWJsZS5j CkBAIC01NTcsNyArNTU3LDggQEAgc3RydWN0IGNtZF9zcGVjIGNtZF90YWJsZVtdID0gewogICAg IHsgInBzci1jYXQtc2hvdyIsCiAgICAgICAmbWFpbl9wc3JfY2F0X3Nob3csIDAsIDEsCiAgICAg ICAiU2hvdyBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgaW5mb3JtYXRpb24iLAotICAgICAg IjxEb21haW4+IiwKKyAgICAgICJbb3B0aW9uc10gPERvbWFpbj4iLAorICAgICAgIi1sIDxsZXZl bD4gICAgICAgIFNwZWNpZnkgdGhlIGNhY2hlIGxldmVsIHRvIHByb2Nlc3MsIG90aGVyd2lzZSBM MyBjYWNoZSBpcyBwcm9jZXNzZWRcbiIKICAgICB9LAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Rv b2xzL3hsL3hsX3Bzci5jIGIvdG9vbHMveGwveGxfcHNyLmMKaW5kZXggMjcxYjg4Zi4uNTc1ZjRh MCAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGxfcHNyLmMKKysrIGIvdG9vbHMveGwveGxfcHNyLmMK QEAgLTM0Miw3ICszNDIsNyBAQCBzdGF0aWMgdm9pZCBwc3JfY2F0X3ByaW50X29uZV9kb21haW5f Y2JtX3R5cGUodWludDMyX3QgZG9taWQsIHVpbnQzMl90IHNvY2tldGlkLAogfQogCiBzdGF0aWMg dm9pZCBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtKHVpbnQzMl90IGRvbWlkLCB1aW50MzJf dCBzb2NrZXRpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v bCBjZHBfZW5hYmxlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ym9vbCBjZHBfZW5hYmxlZCwgdW5zaWduZWQgaW50IGx2bCkKIHsKICAgICBjaGFyICpkb21haW5f bmFtZTsKIApAQCAtMzUwLDI3ICszNTAsMzggQEAgc3RhdGljIHZvaWQgcHNyX2NhdF9wcmludF9v bmVfZG9tYWluX2NibSh1aW50MzJfdCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQsCiAgICAgcHJp bnRmKCIlNWQlMjVzIiwgZG9taWQsIGRvbWFpbl9uYW1lKTsKICAgICBmcmVlKGRvbWFpbl9uYW1l KTsKIAotICAgIGlmICghY2RwX2VuYWJsZWQpIHsKLSAgICAgICAgcHNyX2NhdF9wcmludF9vbmVf ZG9tYWluX2NibV90eXBlKGRvbWlkLCBzb2NrZXRpZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk0pOwotICAgIH0gZWxz ZSB7Ci0gICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZShkb21pZCwgc29j a2V0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9Q U1JfQ0JNX1RZUEVfTDNfQ0JNX0NPREUpOworICAgIHN3aXRjaCAobHZsKSB7CisgICAgY2FzZSAz OgorICAgICAgICBpZiAoIWNkcF9lbmFibGVkKSB7CisgICAgICAgICAgICBwc3JfY2F0X3ByaW50 X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQsIHNvY2tldGlkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk0pOwor ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2Ni bV90eXBlKGRvbWlkLCBzb2NrZXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNX0NPREUpOworICAgICAgICAg ICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibV90eXBlKGRvbWlkLCBzb2NrZXRpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9QU1JfQ0JN X1RZUEVfTDNfQ0JNX0RBVEEpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug MjoKICAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibV90eXBlKGRvbWlkLCBzb2Nr ZXRpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX1BT Ul9DQk1fVFlQRV9MM19DQk1fREFUQSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMSUJYTF9QU1JfQ0JNX1RZUEVfTDJfQ0JNKTsKKyAgICAgICAgYnJlYWs7Cisg ICAgZGVmYXVsdDoKKyAgICAgICAgcHJpbnRmKCJJbnB1dCBsdmwgJWQgaXMgd3JvbmchIiwgbHZs KTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcHJpbnRmKCJcbiIpOwogfQogCiBzdGF0 aWMgaW50IHBzcl9jYXRfcHJpbnRfZG9tYWluX2NibSh1aW50MzJfdCBkb21pZCwgdWludDMyX3Qg c29ja2V0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNkcF9l bmFibGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjZHBfZW5h YmxlZCwgdW5zaWduZWQgaW50IGx2bCkKIHsKICAgICBpbnQgaSwgbnJfZG9tYWluczsKICAgICBs aWJ4bF9kb21pbmZvICpsaXN0OwogCiAgICAgaWYgKGRvbWlkICE9IElOVkFMSURfRE9NSUQpIHsK LSAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibShkb21pZCwgc29ja2V0aWQsIGNk cF9lbmFibGVkKTsKKyAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibShkb21pZCwg c29ja2V0aWQsIGNkcF9lbmFibGVkLCBsdmwpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK QEAgLTM4MCw0OSArMzkxLDU5IEBAIHN0YXRpYyBpbnQgcHNyX2NhdF9wcmludF9kb21haW5fY2Jt KHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwKICAgICB9CiAKICAgICBmb3IgKGkg PSAwOyBpIDwgbnJfZG9tYWluczsgaSsrKQotICAgICAgICBwc3JfY2F0X3ByaW50X29uZV9kb21h aW5fY2JtKGxpc3RbaV0uZG9taWQsIHNvY2tldGlkLCBjZHBfZW5hYmxlZCk7CisgICAgICAgIHBz cl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0obGlzdFtpXS5kb21pZCwgc29ja2V0aWQsIGNkcF9l bmFibGVkLCBsdmwpOwogICAgIGxpYnhsX2RvbWluZm9fbGlzdF9mcmVlKGxpc3QsIG5yX2RvbWFp bnMpOwogCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgcHNyX2NhdF9wcmludF9zb2Nr ZXQodWludDMyX3QgZG9taWQsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbykKK3N0YXRpYyBpbnQg cHNyX2NhdF9wcmludF9zb2NrZXQodWludDMyX3QgZG9taWQsIGxpYnhsX3Bzcl9jYXRfaW5mbyAq aW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGx2bCkK IHsKICAgICBpbnQgcmM7CiAgICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKIAotICAgIHJjID0g bGlieGxfcHNyX2NtdF9nZXRfbDNfY2FjaGVfc2l6ZShjdHgsIGluZm8tPmlkLCAmbDNfY2FjaGVf c2l6ZSk7Ci0gICAgaWYgKHJjKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRv IGdldCBsMyBjYWNoZSBzaXplIGZvciBzb2NrZXQ6JWRcbiIsCi0gICAgICAgICAgICAgICAgaW5m by0+aWQpOwotICAgICAgICByZXR1cm4gLTE7CisgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJT b2NrZXQgSUQiLCBpbmZvLT5pZCk7CisKKyAgICAvKiBTbyBmYXIsIENNVCBvbmx5IHN1cHBvcnRz IEwzIGNhY2hlLiAqLworICAgIGlmIChsdmwgPT0gMykgeworICAgICAgICByYyA9IGxpYnhsX3Bz cl9jbXRfZ2V0X2wzX2NhY2hlX3NpemUoY3R4LCBpbmZvLT5pZCwgJmwzX2NhY2hlX3NpemUpOwor ICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRv IGdldCBsMyBjYWNoZSBzaXplIGZvciBzb2NrZXQ6JWRcbiIsCisgICAgICAgICAgICAgICAgICAg IGluZm8tPmlkKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBw cmludGYoIiUtMTZzOiAldUtCXG4iLCAiTDMgQ2FjaGUiLCBsM19jYWNoZV9zaXplKTsKICAgICB9 CiAKLSAgICBwcmludGYoIiUtMTZzOiAldVxuIiwgIlNvY2tldCBJRCIsIGluZm8tPmlkKTsKLSAg ICBwcmludGYoIiUtMTZzOiAldUtCXG4iLCAiTDMgQ2FjaGUiLCBsM19jYWNoZV9zaXplKTsKICAg ICBwcmludGYoIiUtMTZzOiAlI2xseFxuIiwgIkRlZmF1bHQgQ0JNIiwgKDF1bGwgPDwgaW5mby0+ Y2JtX2xlbikgLSAxKTsKICAgICBpZiAoaW5mby0+Y2RwX2VuYWJsZWQpCiAgICAgICAgIHByaW50 ZigiJTVzJTI1cyUxNnMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJDQk0gKGNvZGUpIiwgIkNCTSAo ZGF0YSkiKTsKICAgICBlbHNlCiAgICAgICAgIHByaW50ZigiJTVzJTI1cyUxNnNcbiIsICJJRCIs ICJOQU1FIiwgIkNCTSIpOwogCi0gICAgcmV0dXJuIHBzcl9jYXRfcHJpbnRfZG9tYWluX2NibShk b21pZCwgaW5mby0+aWQsIGluZm8tPmNkcF9lbmFibGVkKTsKKyAgICByZXR1cm4gcHNyX2NhdF9w cmludF9kb21haW5fY2JtKGRvbWlkLCBpbmZvLT5pZCwgaW5mby0+Y2RwX2VuYWJsZWQsIGx2bCk7 CiB9CiAKLXN0YXRpYyBpbnQgcHNyX2NhdF9zaG93KHVpbnQzMl90IGRvbWlkKQorc3RhdGljIGlu dCBwc3JfY2F0X3Nob3codWludDMyX3QgZG9taWQsIHVuc2lnbmVkIGludCBsdmwpCiB7CiAgICAg aW50IGksIG5yOwogICAgIGludCByYzsKICAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87CiAK LSAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5yLCAzKTsKKyAg ICBpZiAobHZsICE9IDIgJiYgbHZsICE9IDMpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJJ bnB1dCBsdmwgJWQgaXMgd3JvbmdcbiIsIGx2bCk7CisgICAgICAgIHJldHVybiBFWElUX0ZBSUxV UkU7CisgICAgfQorCisgICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGN0eCwgJmluZm8s ICZuciwgbHZsKTsKICAgICBpZiAocmMpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWls ZWQgdG8gZ2V0IGNhdCBpbmZvXG4iKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQg dG8gZ2V0ICVzIGNhdCBpbmZvXG4iLCAobHZsID09IDMpPyJMMyI6IkwyIik7CiAgICAgICAgIHJl dHVybiByYzsKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykgewotICAgICAg ICByYyA9IHBzcl9jYXRfcHJpbnRfc29ja2V0KGRvbWlkLCBpbmZvICsgaSk7CisgICAgICAgIHJj ID0gcHNyX2NhdF9wcmludF9zb2NrZXQoZG9taWQsIGluZm8gKyBpLCBsdmwpOwogICAgICAgICBp ZiAocmMpCiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC01MzMsMTEgKzU1NCwxOSBA QCBpbnQgbWFpbl9wc3JfY2F0X2NibV9zZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiBpbnQg bWFpbl9wc3JfY2F0X3Nob3coaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewotICAgIGludCBvcHQ7 CisgICAgaW50IG9wdCA9IDA7CiAgICAgdWludDMyX3QgZG9taWQ7CisgICAgdW5zaWduZWQgaW50 IGx2bCA9IDM7CiAKLSAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiIiwgTlVMTCwgInBzci1j YXQtc2hvdyIsIDApIHsKLSAgICAgICAgLyogTm8gb3B0aW9ucyAqLworICAgIHN0YXRpYyBzdHJ1 Y3Qgb3B0aW9uIG9wdHNbXSA9IHsKKyAgICAgICAgeyJsZXZlbCIsIDEsIDAsICdsJ30sCisgICAg ICAgIENPTU1PTl9MT05HX09QVFMKKyAgICB9OworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9w dCwgImw6Iiwgb3B0cywgInBzci1jYXQtc2hvdyIsIDApIHsKKyAgICBjYXNlICdsJzoKKyAgICAg ICAgbHZsID0gYXRvaShvcHRhcmcpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAo b3B0aW5kID49IGFyZ2MpCkBAIC01NDksNyArNTc4LDcgQEAgaW50IG1haW5fcHNyX2NhdF9zaG93 KGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgcmV0dXJuIDI7CiAgICAgfQogCi0gICAg cmV0dXJuIHBzcl9jYXRfc2hvdyhkb21pZCk7CisgICAgcmV0dXJuIHBzcl9jYXRfc2hvdyhkb21p ZCwgbHZsKTsKIH0KIAogaW50IG1haW5fcHNyX2h3aW5mbyhpbnQgYXJnYywgY2hhciAqKmFyZ3Yp Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=