From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [RFC PATCH 5/8] gcov: userspace tools to extract and split gcov data Date: Thu, 6 Oct 2016 15:37:35 +0100 Message-ID: <1475764658-30809-6-git-send-email-wei.liu2@citrix.com> References: <1475764658-30809-1-git-send-email-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bs9ns-00010T-BZ for xen-devel@lists.xenproject.org; Thu, 06 Oct 2016 14:37:44 +0000 In-Reply-To: <1475764658-30809-1-git-send-email-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Wei Liu , philippe.gabriel@citrix.com, Ian Jackson List-Id: xen-devel@lists.xenproject.org UHJvdmlkZSB0d28gdG9vbHM6IGEgc21hbGwgQyBwcm9ncmFtIHRvIGV4dHJhY3QgZGF0YSBmcm9t IGh5cGVydmlzb3IgYW5kCmEgcHl0aG9uIHNjcmlwdCB0byBzcGxpdCBkYXRhIGludG8gbXVsdGlw bGUgZmlsZXMuCgpUaGUgZmlsZSB4ZW5jb3YuYyBpcyBzYWx2YWdlZCBhbmQgbW9kaWZpZWQgZnJv bSB0aGUgb3JpZ2luYWwgeGVuY292LmMuCgpTaWduZWQtb2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1 MkBjaXRyaXguY29tPgotLS0KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXgu Y29tPgotLS0KIHRvb2xzL21pc2MvTWFrZWZpbGUgICAgIHwgICA2ICsrCiB0b29scy9taXNjL3hl bmNvdi5jICAgICB8IDE0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIHRvb2xzL21pc2MveGVuY292X3NwbGl0IHwgMTAwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDI1NCBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgdG9vbHMvbWlzYy94ZW5jb3YuYwogY3JlYXRlIG1vZGUgMTAwNzU1IHRv b2xzL21pc2MveGVuY292X3NwbGl0CgpkaWZmIC0tZ2l0IGEvdG9vbHMvbWlzYy9NYWtlZmlsZSBi L3Rvb2xzL21pc2MvTWFrZWZpbGUKaW5kZXggNWJhNjY3Mi4uYzAyOTQwMSAxMDA2NDQKLS0tIGEv dG9vbHMvbWlzYy9NYWtlZmlsZQorKysgYi90b29scy9taXNjL01ha2VmaWxlCkBAIC0xMyw2ICsx Myw3IEBAIENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5zdG9yZSkKIElOU1RBTExfQklOLSQoQ09O RklHX1g4NikgICAgICArPSB4ZW4tY3B1aWQKIElOU1RBTExfQklOLSQoQ09ORklHX1g4NikgICAg ICArPSB4ZW4tZGV0ZWN0CiBJTlNUQUxMX0JJTiAgICAgICAgICAgICAgICAgICAgKz0geGVuY29u cworSU5TVEFMTC1CSU4gICAgICAgICAgICAgICAgICAgICs9IHhlbmNvdl9zcGxpdAogSU5TVEFM TF9CSU4gKz0gJChJTlNUQUxMX0JJTi15KQogCiAjIEV2ZXJ5dGhpbmcgdG8gYmUgaW5zdGFsbGVk IGluIHJlZ3VsYXIgc2Jpbi8KQEAgLTI0LDYgKzI1LDcgQEAgSU5TVEFMTF9TQklOLSQoQ09ORklH X1g4NikgICAgICs9IHhlbi1sb3dtZW1kCiBJTlNUQUxMX1NCSU4tJChDT05GSUdfWDg2KSAgICAg Kz0geGVuLW1mbmR1bXAKIElOU1RBTExfU0JJTiAgICAgICAgICAgICAgICAgICArPSB4ZW4tcmlu Z3dhdGNoCiBJTlNUQUxMX1NCSU4gICAgICAgICAgICAgICAgICAgKz0geGVuLXRtZW0tbGlzdC1w YXJzZQorSU5TVEFMTF9TQklOICAgICAgICAgICAgICAgICAgICs9IHhlbmNvdgogSU5TVEFMTF9T QklOICAgICAgICAgICAgICAgICAgICs9IHhlbmxvY2twcm9mCiBJTlNUQUxMX1NCSU4gICAgICAg ICAgICAgICAgICAgKz0geGVucGVyZgogSU5TVEFMTF9TQklOICAgICAgICAgICAgICAgICAgICs9 IHhlbnBtCkBAIC00MSw2ICs0Myw3IEBAIFRBUkdFVFNfQUxMIDo9ICQoSU5TVEFMTF9CSU4pICQo SU5TVEFMTF9TQklOKSAkKElOU1RBTExfUFJJVkJJTikKIFRBUkdFVFNfQ09QWSArPSB4ZW4tYnVn dG9vbAogVEFSR0VUU19DT1BZICs9IHhlbi1yaW5nd2F0Y2gKIFRBUkdFVFNfQ09QWSArPSB4ZW5j b25zCitUQVJHRVRTX0NPUFkgKz0geGVuY292X3NwbGl0CiBUQVJHRVRTX0NPUFkgKz0geGVucHZu ZXRib290CiAKICMgRXZlcnl0aGluZyB3aGljaCBuZWVkcyB0byBiZSBidWlsdApAQCAtMTAyLDQg KzEwNSw3IEBAIHhlbi1saXZlcGF0Y2g6IHhlbi1saXZlcGF0Y2gubwogeGVuLWxvd21lbWQ6IHhl bi1sb3dtZW1kLm8KIAkkKENDKSAkKExERkxBR1MpIC1vICRAICQ8ICQoTERMSUJTX2xpYnhlbmV2 dGNobikgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVuc3RvcmUpICQoQVBQRU5E X0xERkxBR1MpCiAKK3hlbmNvdjogeGVuY292Lm8KKwkkKENDKSAkKExERkxBR1MpIC1vICRAICQ8 ICQoTERMSUJTX2xpYnhlbmN0cmwpICQoQVBQRU5EX0xERkxBR1MpCisKIC1pbmNsdWRlICQoREVQ UykKZGlmZiAtLWdpdCBhL3Rvb2xzL21pc2MveGVuY292LmMgYi90b29scy9taXNjL3hlbmNvdi5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4M2JjNjYKLS0tIC9kZXYvbnVs bAorKysgYi90b29scy9taXNjL3hlbmNvdi5jCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogeGVu Y292OiBleHRyYWN0IHRlc3QgY292ZXJhZ2UgaW5mb3JtYXRpb24gZnJvbSBYZW4uCisgKgorICog Q29weXJpZ2h0IChjKSAyMDEzLCAyMDE2LCBDaXRyaXggU3lzdGVtcyBSJkQgTHRkLgorICoKKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisg KiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJD SEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAq CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8ZXJyLmg+Cisj aW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5o PgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHhl bmN0cmwuaD4KKworc3RhdGljIHhjX2ludGVyZmFjZSAqeGNoID0gTlVMTDsKKworaW50IGdjb3Zf c3lzY3RsKGludCBvcCwgc3RydWN0IHhlbl9zeXNjdGwgKnN5c2N0bCwKKyAgICAgICAgICAgICAg ICBzdHJ1Y3QgeGNfaHlwZXJjYWxsX2J1ZmZlciAqYnVmLCB1aW50MzJfdCBidWZfc2l6ZSkKK3sK KyAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVJfQVJHVU1FTlQoYnVmKTsKKworICAgIG1lbXNl dChzeXNjdGwsIDAsIHNpemVvZigqc3lzY3RsKSk7CisgICAgc3lzY3RsLT5jbWQgPSBYRU5fU1lT Q1RMX2djb3Zfb3A7CisKKyAgICBzeXNjdGwtPnUuZ2Nvdl9vcC5jbWQgPSBvcDsKKyAgICBzeXNj dGwtPnUuZ2Nvdl9vcC5zaXplID0gYnVmX3NpemU7CisgICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUo c3lzY3RsLT51Lmdjb3Zfb3AuYnVmZmVyLCBidWYpOworCisgICAgcmV0dXJuIHhjX3N5c2N0bCh4 Y2gsIHN5c2N0bCk7Cit9CisKK3N0YXRpYyB2b2lkIGdjb3ZfcmVhZChjb25zdCBjaGFyICpmbikK K3sKKyAgICBzdHJ1Y3QgeGVuX3N5c2N0bCBzeXM7CisgICAgdWludDMyX3QgdG90YWxfbGVuOwor ICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih1aW50OF90LCBwKTsKKyAgICBGSUxFICpmOwor CisgICAgaWYgKGdjb3Zfc3lzY3RsKFhFTl9TWVNDVExfR0NPVl9nZXRfc2l6ZSwgJnN5cywgTlVM TCwgMCkgPCAwKQorICAgICAgICBlcnIoMSwgImdldHRpbmcgdG90YWwgbGVuZ3RoIik7CisgICAg dG90YWxfbGVuID0gc3lzLnUuZ2Nvdl9vcC5zaXplOworCisgICAgLyogU2hvdWxkbid0IGV4Y2Vl ZCBhIGZldyBodW5kcmVkIGtpbG9ieXRlcyAqLworICAgIGlmICh0b3RhbF9sZW4gPiA4dSAqIDEw MjR1ICogMTAyNHUpCisgICAgICAgIGVycngoMSwgImdjb3YgZGF0YSB0b28gYmlnICV1IGJ5dGVz XG4iLCB0b3RhbF9sZW4pOworCisgICAgcCA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNo LCBwLCB0b3RhbF9sZW4pOworICAgIGlmICghcCkKKyAgICAgICAgZXJyKDEsICJhbGxvY2F0aW5n IGJ1ZmZlciIpOworCisgICAgbWVtc2V0KHAsIDAsIHRvdGFsX2xlbik7CisgICAgaWYgKGdjb3Zf c3lzY3RsKFhFTl9TWVNDVExfR0NPVl9yZWFkLCAmc3lzLCBIWVBFUkNBTExfQlVGRkVSKHApLAor ICAgICAgICAgICAgICAgICAgICB0b3RhbF9sZW4pIDwgMCkKKyAgICAgICAgZXJyKDEsICJnZXR0 aW5nIGdjb3YgZGF0YSIpOworCisgICAgaWYgKCFzdHJjbXAoZm4sICItIikpCisgICAgICAgIGYg PSBzdGRvdXQ7CisgICAgZWxzZQorICAgICAgICBmID0gZm9wZW4oZm4sICJ3Iik7CisKKyAgICBp ZiAoIWYpCisgICAgICAgIGVycigxLCAib3BlbmluZyBvdXRwdXQgZmlsZSIpOworCisgICAgaWYg KGZ3cml0ZShwLCAxLCB0b3RhbF9sZW4sIGYpICE9IHRvdGFsX2xlbikKKyAgICAgICAgZXJyKDEs ICJ3cml0aW5nIGdjb3YgZGF0YSB0byBmaWxlIik7CisKKyAgICBpZiAoZiAhPSBzdGRvdXQpCisg ICAgICAgIGZjbG9zZShmKTsKKworICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIHAp OworfQorCitzdGF0aWMgdm9pZCBnY292X3Jlc2V0KHZvaWQpCit7CisgICAgc3RydWN0IHhlbl9z eXNjdGwgc3lzOworCisgICAgaWYgKGdjb3Zfc3lzY3RsKFhFTl9TWVNDVExfR0NPVl9yZXNldCwg JnN5cywgTlVMTCwgMCkgPCAwKQorICAgICAgICBlcnIoMSwgInJlc2V0dGluZyBnY292IGluZm9y bWF0aW9uIik7Cit9CisKK3N0YXRpYyB2b2lkIHVzYWdlKGludCBleGl0X2NvZGUpCit7CisgICAg RklMRSAqb3V0ID0gZXhpdF9jb2RlID8gc3RkZXJyIDogc3Rkb3V0OworCisgICAgZnByaW50Zihv dXQsICJ4ZW5jb3Yge3Jlc2V0fHJlYWR9IFs8ZmlsZW5hbWU+XVxuIgorICAgICAgICAiXHRyZXNl dCAgICAgICByZXNldCBpbmZvcm1hdGlvblxuIgorICAgICAgICAiXHRyZWFkICAgICAgICByZWFk IGluZm9ybWF0aW9uIGZyb20geGVuIHRvIGZpbGVuYW1lXG4iCisgICAgICAgICJcdGZpbGVuYW1l ICAgIG9wdGlvbmFsIGZpbGVuYW1lIChkZWZhdWx0IG91dHB1dClcbiIKKyAgICAgICAgKTsKKyAg ICBleGl0KGV4aXRfY29kZSk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK K3sKKyAgICBpbnQgb3B0OworCisgICAgd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwg ImgiKSkgIT0gLTEpIHsKKyAgICAgICAgc3dpdGNoIChvcHQpIHsKKyAgICAgICAgY2FzZSAnaCc6 CisgICAgICAgICAgICB1c2FnZSgwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh dWx0OgorICAgICAgICAgICAgdXNhZ2UoMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhcmd2 ICs9IG9wdGluZDsKKyAgICBhcmdjIC09IG9wdGluZDsKKyAgICBpZiAoYXJnYyA8PSAwKQorICAg ICAgICB1c2FnZSgxKTsKKworICAgIHhjaCA9IHhjX2ludGVyZmFjZV9vcGVuKE5VTEwsIE5VTEws IDApOworICAgIGlmICgheGNoKQorICAgICAgICBlcnIoMSwgIm9wZW5pbmcgeGMgaW50ZXJmYWNl Iik7CisKKyAgICBpZiAoc3RyY21wKGFyZ3ZbMF0sICJyZXNldCIpID09IDApCisgICAgICAgIGdj b3ZfcmVzZXQoKTsKKyAgICBlbHNlIGlmICggc3RyY21wKGFyZ3ZbMF0sICJyZWFkIikgPT0gMCAp CisgICAgICAgIGdjb3ZfcmVhZChhcmdjID4gMSA/IGFyZ3ZbMV0gOiAiLSIpOworICAgIGVsc2UK KyAgICAgICAgdXNhZ2UoMSk7CisKKyAgICB4Y19pbnRlcmZhY2VfY2xvc2UoeGNoKTsKKworICAg IHJldHVybiAwOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICog Yy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDog NAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rv b2xzL21pc2MveGVuY292X3NwbGl0IGIvdG9vbHMvbWlzYy94ZW5jb3Zfc3BsaXQKbmV3IGZpbGUg bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmMwNmY0OQotLS0gL2Rldi9udWxsCisrKyBiL3Rv b2xzL21pc2MveGVuY292X3NwbGl0CkBAIC0wLDAgKzEsMTAwIEBACisjIS91c3IvYmluL3B5dGhv bgorCitpbXBvcnQgc3lzLCBvcywgb3MucGF0aCBhcyBwYXRoLCBzdHJ1Y3QsIGVycm5vCitmcm9t IG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKKworZGVmIHhlbmNvdl9zcGxpdChvcHRzKToK KyAgICAiIiJTcGxpdCBpbnB1dCBpbnRvIG11bHRpcGxlIGdjZGEgZmlsZXMiIiIKKworICAgICMg Q2hlY2sgbmF0aXZlIGJ5dGUgb3JkZXIgYW5kIGV4cGxpY2l0bHkgc3BlY2lmeSBpdC4gIFRoZSAi bmF0aXZlIgorICAgICMgYnl0ZSBvcmRlciBpbiBzdHJ1Y3QgbW9kdWxlIHRha2VzIGludG8gYWNj b3VudCBwYWRkaW5nIHdoaWxlIHRoZQorICAgICMgZGF0YSBpcyBhbHdheXMgcGFja2VkLgorICAg IGlmIHN5cy5ieXRlb3JkZXIgPT0gJ2xpdHRsZSc6CisgICAgICAgIGJvX3ByZWZpeCA9ICc8Jwor ICAgIGVsc2U6CisgICAgICAgIGJvX3ByZWZpeCA9ICc+JworCisgICAgaW5wdXRfZmlsZSA9IG9w dHMuYXJnc1swXQorCisgICAgZiA9IG9wZW4oaW5wdXRfZmlsZSkKKworICAgICMgTWFnaWMgbnVt YmVyCisgICAgcyA9IGYucmVhZCg0KQorICAgIG1hZ2ljLCA9IHN0cnVjdC51bnBhY2soYm9fcHJl Zml4ICsgIkkiLCBzKQorICAgICMgU2VlIHB1YmxpYy9zeXNjdGwuaCBmb3IgbWFnaWMgbnVtYmVy IC0tICJYQ09WIgorICAgIGlmIG1hZ2ljICE9IDB4NTg0MzRmNTY6CisgICAgICAgIHJhaXNlIEV4 Y2VwdGlvbigiSW52YWxpZCBtYWdpYyBudW1iZXIiKQorCisgICAgIyBUaGUgcmVzdCBpcyB6ZXJv IG9yIG1vcmUgcmVjb3JkcworICAgIGNvbnRlbnQgPSBmLnJlYWQoKQorCisgICAgZi5jbG9zZSgp CisKKyAgICB3aGlsZSBjb250ZW50OgorICAgICAgICBvZmYgPSBjb250ZW50LmZpbmQoJ1x4MDAn KQorICAgICAgICBmbXQgPSBib19wcmVmaXggKyBzdHIob2ZmKSArICdzJworICAgICAgICBmbiwg PSBzdHJ1Y3QudW5wYWNrX2Zyb20oZm10LCBjb250ZW50KQorICAgICAgICBjb250ZW50ID0gY29u dGVudFtvZmYrMTpdCisKKyAgICAgICAgZm10ID0gYm9fcHJlZml4ICsgJ0knCisgICAgICAgIHN6 LCA9IHN0cnVjdC51bnBhY2tfZnJvbShmbXQsIGNvbnRlbnQpCisgICAgICAgIGNvbnRlbnQgPSBj b250ZW50W3N0cnVjdC5jYWxjc2l6ZShmbXQpOl0KKworICAgICAgICBmbXQgPSBib19wcmVmaXgg KyBzdHIoc3opICsgJ3MnCisgICAgICAgIHBheWxvYWQsID0gc3RydWN0LnVucGFja19mcm9tKGZt dCwgY29udGVudCkKKyAgICAgICAgY29udGVudCA9IGNvbnRlbnRbc3o6XQorCisgICAgICAgICMg Q3JlYXRlIGFuZCBzdG9yZSBmaWxlcworICAgICAgICBpZiBvcHRzLm91dHB1dF9kaXIgPT0gJy4n OgorICAgICAgICAgICAgb3B0cy5vdXRwdXRfZGlyID0gb3MuZ2V0Y3dkKCkKKworICAgICAgICBk aXIgPSBvcHRzLm91dHB1dF9kaXIgKyBwYXRoLmRpcm5hbWUoZm4pCisgICAgICAgIHRyeToKKyAg ICAgICAgICAgIG9zLm1ha2VkaXJzKGRpcikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6Cisg ICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVFWElTVCBhbmQgb3MucGF0aC5pc2Rpcihk aXIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg ICAgICAgcmFpc2UKKworICAgICAgICBmdWxsX3BhdGggPSBkaXIgKyAnLycgKyBwYXRoLmJhc2Vu YW1lKGZuKQorICAgICAgICBmID0gb3BlbihmdWxsX3BhdGgsICJ3IikKKyAgICAgICAgZi53cml0 ZShwYXlsb2FkKQorICAgICAgICBmLmNsb3NlKCkKKworZGVmIG1haW4oKToKKyAgICAiIiIgTWFp biBlbnRyeXBvaW50ICIiIgorCisgICAgIyBDaGFuZ2Ugc3Rkb3V0IHRvIGJlIGxpbmUtYnVmZmVy ZWQuCisgICAgc3lzLnN0ZG91dCA9IG9zLmZkb3BlbihzeXMuc3Rkb3V0LmZpbGVubygpLCAndycs IDEpCisKKyAgICAjIE5vcm1hbGlzZSAkQ1dEIHRvIHRoZSBkaXJlY3RvcnkgdGhpcyBzY3JpcHQg aXMgaW4KKyAgICAjIG9zLmNoZGlyKHBhdGguZGlybmFtZShwYXRoLmFic3BhdGgoc3lzLmFyZ3Zb MF0pKSkKKworICAgIHBhcnNlciA9IE9wdGlvblBhcnNlcigKKyAgICAgICAgdXNhZ2UgPSAiJXBy b2cgW09QVElPTlNdIDxJTlBVVD4iLAorICAgICAgICBkZXNjcmlwdGlvbiA9ICJVdGlsaXR5IHRv IHNwbGl0IHhlbmNvdiBkYXRhIGZpbGUiLAorICAgICAgICApCisKKyAgICBwYXJzZXIuYWRkX29w dGlvbigiLS1vdXRwdXQtZGlyIiwgYWN0aW9uID0gInN0b3JlIiwKKyAgICAgICAgICAgICAgICAg ICAgICBkZXN0ID0gIm91dHB1dF9kaXIiLCBkZWZhdWx0ID0gIi4iLAorICAgICAgICAgICAgICAg ICAgICAgIHR5cGUgPSAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwID0gKCdT cGVjaWZ5IHRoZSBkaXJlY3RvcnkgdG8gcGxhY2Ugb3V0cHV0IGZpbGVzLCAnCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG8gY3VycmVudCBkaXJlY3RvcnknKSwKKyAg ICAgICAgICAgICAgICAgICAgICApCisKKyAgICBvcHRzLCBhcmdzID0gcGFyc2VyLnBhcnNlX2Fy Z3MoKQorICAgIG9wdHMuYXJncyA9IGFyZ3MKKworICAgIHhlbmNvdl9zcGxpdChvcHRzKQorCisK K2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdHJ5OgorICAgICAgICBzeXMuZXhpdCht YWluKCkpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgcHJpbnQgPj5zeXMuc3Rk ZXJyLCAiRXJyb3I6IiwgZQorICAgICAgICBzeXMuZXhpdCgxKQorICAgIGV4Y2VwdCBLZXlib2Fy ZEludGVycnVwdDoKKyAgICAgICAgc3lzLmV4aXQoMSkKKwotLSAKMi4xLjQKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK