From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Meneghel Rodrigues Subject: [PATCH] KVM test: KSM overcommit test v4 Date: Mon, 22 Feb 2010 17:29:14 -0300 Message-ID: <1266870554-16915-1-git-send-email-lmr@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: kvm@vger.kernel.org To: autotest@test.kernel.org Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: autotest-bounces@test.kernel.org Errors-To: autotest-bounces@test.kernel.org List-Id: kvm.vger.kernel.org VGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBLU00gdGVzdGluZy4gVGhlIGJhc2ljIGlkZWEg YmVoaW5kIHRoZQp0ZXN0IGlzIHRvIHN0YXJ0IGd1ZXN0cywgY29weSB0aGUgc2NyaXB0IGFsbG9j YXRvci5weSB0byB0aGVtLiBPbmNlCmV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBhY2NlcHRzIGlucHV0 IGNvbW1hbmRzIG9uIGl0cyBtYWluIGxvb3AuCgpUaGUgc2NyaXB0IHdpbGwgYWxsb3cgdG8gZmls bCB1cCBtZW1vcnkgcGFnZXMgb2YgdGhlIGd1ZXN0cywgYWNjb3JkaW5nCnRvIHBhdHRlcm5zLCB0 aGlzIHdheSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSBsYXJnZSBwb3J0aW9uIG9mIGd1ZXN0cwpt ZW1vcnkgZXhhY3RseSB0aGUgc2FtZSwgc28gS1NNIGNhbiBkbyBtZW1vcnkgbWVyZ2UuCgpUaGVu IHdlIGNhbiBlYXNpbHkgc3BsaXQgbWVtb3J5IGJ5IGZpbGxpbmcgbWVtb3J5IG9mIHNvbWUgZ3Vl c3RzIHdpdGgKb3RoZXIgdmFsdWVzLCBhbmQgdmVyaWZ5IGhvdyBLU00gYmVoYXZlcyBhY2NvcmRp bmcgdG8gZWFjaCBvcGVyYXRpb24uCgogVGVzdCA6CiAgYV0gc2VyaWFsCiAgIDEpIGluaXRpYWxp emUsIG1lcmdlIGFsbCBtZW0gdG8gc2luZ2xlIHBhZ2UKICAgMikgc2VwYXJhdGUgZmlyc3QgZ3Vz ZXQgbWVtCiAgIDMpIHNlcGFyYXRlIHJlc3Qgb2YgZ3Vlc3QgdXAgdG8gZmlsbCBhbGwgbWVtCiAg IDQpIGtpbGwgYWxsIGd1ZXN0cyBleGNlcHQgZm9yIHRoZSBsYXN0CiAgIDUpIGNoZWNrIGlmIG1l bSBvZiBsYXN0IGd1ZXN0IGlzIG9rCiAgIDYpIGtpbGwgZ3Vlc3QKCiAgYl0gcGFyYWxsZWwKICAg MSkgaW5pdGlhbGl6ZSwgbWVyZ2UgYWxsIG1lbSB0byBzaW5nbGUgcGFnZQogICAyKSBzZXBhcmF0 ZSBtZW0gb2YgZ3Vlc3QKICAgMykgdmVyaWZpY2F0aW9uIG9mIGd1ZXN0IG1lbQogICA0KSBtZXJn ZSBtZW0gdG8gb25lIGJsb2NrCiAgIDUpIHZlcmlmaWNhdGlvbiBvZiBndWVzdHMgbWVtCiAgIDYp IHNlcGFyYXRlIG1lbSBvZiBndWVzdHMgYnkgOTZCCiAgIDcpIGNoZWNrIGlmIG1lbSBpcyBhbGwg cmlnaHQKICAgOCkga2lsbCBndWVzdAoKIGFsbG9jYXRvci5weSAoY2xpZW50IHNpZGUgc2NyaXB0 KQogICBBZnRlciBzdGFydCB0aGV5IHdhaXQgZm9yIGNvbW1hbmQgd2l0Y2ggdGhleSBtYWtlIGlu IGNsaWVudCBzaWRlLgogICBtZW1fZmlsbCBjbGFzcyBpbXBsZW1lbnQgY29tbWFuZHMgdG8gZmls bCwgY2hlY2sgbWVtIGFuZCByZXR1cm4KICAgZXJyb3IgdG8gaG9zdC4KCk5vdGVzOgpKaXJpIGFu ZCBMdWvDocWhLCBwbGVhc2UgdmVyaWZ5IHRoaXMgbGFzdCB2ZXJzaW9uLCB3ZSBhcmUgY2xvc2UK dG8gY29tbWl0aW5nIHRoaXMgdGVzdCwgYXQgbGFzdC4KCkNoYW5nZWxvZzoKCnY0IC0gQ2xlYW51 cCBhbmQgYnVnZml4aW5nIGZvciB0aGUgdGVzdCwgYWZ0ZXIgYSBnb29kIHJvdW5kIG9mCnRlc3Rp bmc6CiAgKiBNb3ZlZCB0aGUgaG9zdF9yZXNlcnZlX21lbW9yeSBhbmQgZ3Vlc3RfcmVzZXJ2ZV9t ZW1vcnkgdG8KdGhlIGNvbmZpZyBmaWxlLCBpbiBvcmRlciB0byBoYXZlIG1vcmUgZmxleGliaWxp dHkuIFRoZSAyNTZNQgpkZWZhdWx0IG1lbW9yeSByZXNlcnZlIGZvciBndWVzdHMgd2FzIG1ha2lu ZyBndWVzdHMgdG8gcnVuIG91dApvZiBtZW1vcnkgYW5kIHRyaWdnZXIgdGhlIGtlcm5lbCBPT00g a2lsbGVyLCBmcmVxdWVudGx5IGtpbGxpbmcKdGhlIHNzaCBkYWVtb24gYW5kIHJ1aW5pbmcgdGhl IHRlc3QsIG9uIGEgYmFyZSBib25lcyBGZWRvcmEgMTIKZ3Vlc3QuCiAgKiBGaXhlZCB1cCBkZWJ1 ZyBhbmQgaW5mbyBtZXNzYWdlcyBpbiBnZW5lcmFsIHRvIGJlIG1vcmUgY2xlYXIKYW5kIGNvbnNp c3RlbnQKICAqIFRoZSBwYXJhbGxlbCB0ZXN0IGhhZCAyIHJlcGVhdGVkIG9wZXJhdGlvbnMsIG1l bV9maWxsKHZhbHVlKQphbmQgYW5vdGhlciBtZW1fZmlsbCh2YWx1ZSkuIEZyb20gdGhlIGxvZ2dp bmcgbWVzc2FnZXMsIGl0CmJlY2FtZSBjbGVhciB0aGUgYXV0aG9yIG1lYW50IGEgbWVtX2ZpbGwo dmFsdWUpIGZvbGxvd2VkIGJ5IGEKbWVtX2NoZWNrKHZhbHVlKQogICogTWFkZSBNZW1GaWxsLmNo ZWNrX3ZhbHVlKCkgdG8gYWNjZXB0IGEgdmFsdWUsIHN1aXRhYmxlIGZvcgp0ZXN0aW5nIG1lbW9y eSBjb250ZW50cyB0aGF0IHdlcmUgbm90IGZpbGxlZCBieSB0aGUgZGVmYXVsdApzdGF0aWMgdmFs dWUKICAqIEZhY3RvcmVkIGFsbG9jYXRvci5weSBvcGVyYXRpb25zIHRvIGEgZnVuY3Rpb24sIHNh dmVkIHVwIGEKZ29vZCBkZWFsIG9mIGNvZGUuCiAgKiBHZW5lcmFsIGNvZGUgY2xlYW51cCBhbmQg Y29kaW5nIHN0eWxlCgpTaWduZWQtb2ZmLWJ5OiBKaXJpIFp1cGthIDxqenVwa2FAcmVkaGF0LmNv bT4KU2lnbmVkLW9mZi1ieTogTHVrw6HFoSBEb2t0b3I8bGRva3RvckByZWRoYXQuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBMdWNhcyBNZW5lZ2hlbCBSb2RyaWd1ZXMgPGxtckByZWRoYXQuY29tPgotLS0K IGNsaWVudC90ZXN0cy9rdm0va3ZtX3Rlc3RfdXRpbHMucHkgICAgICAgfCAgIDM2ICsrLQogY2xp ZW50L3Rlc3RzL2t2bS9rdm1fdXRpbHMucHkgICAgICAgICAgICB8ICAgMTYgKwogY2xpZW50L3Rl c3RzL2t2bS9rdm1fdm0ucHkgICAgICAgICAgICAgICB8ICAgMTcgKwogY2xpZW50L3Rlc3RzL2t2 bS9zY3JpcHRzL2FsbG9jYXRvci5weSAgICB8ICAyMzQgKysrKysrKysrKysrKwogY2xpZW50L3Rl c3RzL2t2bS90ZXN0cy9rc21fb3ZlcmNvbW1pdC5weSB8ICA1NTkgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBjbGllbnQvdGVzdHMva3ZtL3Rlc3RzX2Jhc2UuY2ZnLnNhbXBsZSAgIHwg ICAyMyArKwogNiBmaWxlcyBjaGFuZ2VkLCA4ODQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjbGllbnQvdGVzdHMva3ZtL3NjcmlwdHMvYWxsb2NhdG9y LnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgY2xpZW50L3Rlc3RzL2t2bS90ZXN0cy9rc21fb3ZlcmNv bW1pdC5weQoKZGlmZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9rdm0va3ZtX3Rlc3RfdXRpbHMucHkg Yi9jbGllbnQvdGVzdHMva3ZtL2t2bV90ZXN0X3V0aWxzLnB5CmluZGV4IDAyZWMwY2YuLjdkOTZk NmUgMTAwNjQ0Ci0tLSBhL2NsaWVudC90ZXN0cy9rdm0va3ZtX3Rlc3RfdXRpbHMucHkKKysrIGIv Y2xpZW50L3Rlc3RzL2t2bS9rdm1fdGVzdF91dGlscy5weQpAQCAtMjIsNyArMjIsOCBAQCBNb3Jl IHNwZWNpZmljYWxseToKICIiIgogCiBpbXBvcnQgdGltZSwgb3MsIGxvZ2dpbmcsIHJlLCBjb21t YW5kcwotZnJvbSBhdXRvdGVzdF9saWIuY2xpZW50LmNvbW1vbl9saWIgaW1wb3J0IHV0aWxzLCBl cnJvcgorZnJvbSBhdXRvdGVzdF9saWIuY2xpZW50LmNvbW1vbl9saWIgaW1wb3J0IGVycm9yCitm cm9tIGF1dG90ZXN0X2xpYi5jbGllbnQuYmluIGltcG9ydCB1dGlscwogaW1wb3J0IGt2bV91dGls cywga3ZtX3ZtLCBrdm1fc3VicHJvY2VzcwogCiAKQEAgLTIwMywzICsyMDQsMzYgQEAgZGVmIGdl dF90aW1lKHNlc3Npb24sIHRpbWVfY29tbWFuZCwgdGltZV9maWx0ZXJfcmUsIHRpbWVfZm9ybWF0 KToKICAgICBzID0gcmUuZmluZGFsbCh0aW1lX2ZpbHRlcl9yZSwgcylbMF0KICAgICBndWVzdF90 aW1lID0gdGltZS5ta3RpbWUodGltZS5zdHJwdGltZShzLCB0aW1lX2Zvcm1hdCkpCiAgICAgcmV0 dXJuIChob3N0X3RpbWUsIGd1ZXN0X3RpbWUpCisKKworZGVmIGdldF9tZW1vcnlfaW5mbyhsdm1z KToKKyAgICAiIiIKKyAgICBHZXQgbWVtb3J5IGluZm9ybWF0aW9uIGZyb20gaG9zdCBhbmQgZ3Vl c3RzIGluIGZvcm1hdDoKKyAgICBIb3N0OiBtZW1mcmVlID0gWFhYTTsgR3Vlc3RzIG1lbXNoID0g e1hYWCxYWFgsLi4ufQorCisgICAgQHBhcmFtcyBsdm1zOiBMaXN0IG9mIFZNIG9iamVjdHMKKyAg ICBAcmV0dXJuOiBTdHJpbmcgd2l0aCBtZW1vcnkgaW5mbyByZXBvcnQKKyAgICAiIiIKKyAgICBp ZiBub3QgaXNpbnN0YW5jZShsdm1zLCBsaXN0KToKKyAgICAgICAgcmFpc2UgZXJyb3IuVGVzdEVy cm9yKCJJbnZhbGlkIGxpc3QgcGFzc2VkIHRvIGdldF9zdGF0OiAlcyAiICUgbHZtcykKKworICAg IHRyeToKKyAgICAgICAgbWVtaW5mbyA9ICJIb3N0OiBtZW1mcmVlID0gIgorICAgICAgICBtZW1p bmZvICs9IHN0cihpbnQodXRpbHMuZnJlZW1lbXRvdGFsKCkpIC8gMTAyNCkgKyAiTTsgIgorICAg ICAgICBtZW1pbmZvICs9ICJzd2FwZnJlZSA9ICIKKyAgICAgICAgbWYgPSBpbnQodXRpbHMucmVh ZF9mcm9tX21lbWluZm8oIlN3YXBGcmVlIikpIC8gMTAyNAorICAgICAgICBtZW1pbmZvICs9IHN0 cihtZikgKyAiTTsgIgorICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgIHJhaXNlIGVy cm9yLlRlc3RGYWlsKCJDb3VsZCBub3QgZmV0Y2ggaG9zdCBmcmVlIG1lbW9yeSBpbmZvLCAiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFzb246ICVzIiAlIGUpCisKKyAgICBtZW1p bmZvICs9ICJHdWVzdHMgbWVtc2ggPSB7IgorICAgIGZvciB2bSBpbiBsdm1zOgorICAgICAgICBz aG0gPSB2bS5nZXRfc2hhcmVkX21lbWluZm8oKQorICAgICAgICBpZiBzaG0gaXMgTm9uZToKKyAg ICAgICAgICAgIHJhaXNlIGVycm9yLlRlc3RFcnJvcigiQ291bGQgbm90IGdldCBzaGFyZWQgbWVt aW5mbyBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVk0gJXMiICUg dm0pCisgICAgICAgIG1lbWluZm8gKz0gIiVkTTsgIiAlIHNobQorICAgIG1lbWluZm8gPSBtZW1p bmZvWzA6LTJdICsgIn0iCisKKyAgICByZXR1cm4gbWVtaW5mbwpkaWZmIC0tZ2l0IGEvY2xpZW50 L3Rlc3RzL2t2bS9rdm1fdXRpbHMucHkgYi9jbGllbnQvdGVzdHMva3ZtL2t2bV91dGlscy5weQpp bmRleCBlMTU1OTUxLi40NTY1ZGMxIDEwMDY0NAotLS0gYS9jbGllbnQvdGVzdHMva3ZtL2t2bV91 dGlscy5weQorKysgYi9jbGllbnQvdGVzdHMva3ZtL2t2bV91dGlscy5weQpAQCAtNjk2LDYgKzY5 NiwyMiBAQCBkZWYgZ2VuZXJhdGVfcmFuZG9tX3N0cmluZyhsZW5ndGgpOgogICAgIHJldHVybiBz dHIKIAogCitkZWYgZ2VuZXJhdGVfdG1wX2ZpbGVfbmFtZShmaWxlLCBleHQ9Tm9uZSwgZGlyPScv dG1wLycpOgorICAgICIiIgorICAgIFJldHVybnMgYSB0ZW1wb3JhcnkgZmlsZSBuYW1lLiBUaGUg ZmlsZSBpcyBub3QgY3JlYXRlZC4KKyAgICAiIiIKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBm aWxlX25hbWUgPSAoZmlsZSArICctJyArIHRpbWUuc3RyZnRpbWUoIiVZJW0lZC0lSCVNJVMtIikg KworICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfcmFuZG9tX3N0cmluZyg0KSkKKyAgICAg ICAgaWYgZXh0OgorICAgICAgICAgICAgZmlsZV9uYW1lICs9ICcuJyArIGV4dAorICAgICAgICBm aWxlX25hbWUgPSBvcy5wYXRoLmpvaW4oZGlyLCBmaWxlX25hbWUpCisgICAgICAgIGlmIG5vdCBv cy5wYXRoLmV4aXN0cyhmaWxlX25hbWUpOgorICAgICAgICAgICAgYnJlYWsKKworICAgIHJldHVy biBmaWxlX25hbWUKKworCiBkZWYgZm9ybWF0X3N0cl9mb3JfbWVzc2FnZShzdHIpOgogICAgICIi IgogICAgIEZvcm1hdCBzdHIgc28gdGhhdCBpdCBjYW4gYmUgYXBwZW5kZWQgdG8gYSBtZXNzYWdl LgpkaWZmIC0tZ2l0IGEvY2xpZW50L3Rlc3RzL2t2bS9rdm1fdm0ucHkgYi9jbGllbnQvdGVzdHMv a3ZtL2t2bV92bS5weQppbmRleCBjMTY2YWM5Li45MjE0MTRkIDEwMDc1NQotLS0gYS9jbGllbnQv dGVzdHMva3ZtL2t2bV92bS5weQorKysgYi9jbGllbnQvdGVzdHMva3ZtL2t2bV92bS5weQpAQCAt NzQ4LDYgKzc0OCwyMyBAQCBjbGFzcyBWTToKICAgICAgICAgcmV0dXJuIHNlbGYucHJvY2Vzcy5n ZXRfcGlkKCkKIAogCisgICAgZGVmIGdldF9zaGFyZWRfbWVtaW5mbyhzZWxmKToKKyAgICAgICAg IiIiCisgICAgICAgIFJldHVybnMgdGhlIFZNJ3Mgc2hhcmVkIG1lbW9yeSBpbmZvcm1hdGlvbi4K KworICAgICAgICBAcmV0dXJuOiBTaGFyZWQgbWVtb3J5IHVzZWQgYnkgVk0gKE1CKQorICAgICAg ICAiIiIKKyAgICAgICAgaWYgc2VsZi5pc19kZWFkKCk6CisgICAgICAgICAgICBsb2dnaW5nLmVy cm9yKCJDb3VsZCBub3QgZ2V0IHNoYXJlZCBtZW1vcnkgaW5mbyBmcm9tIGRlYWQgVk0uIikKKyAg ICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgY21kID0gImNhdCAvcHJvYy8lZC9zdGF0 bSIgJSBzZWxmLnBhcmFtcy5nZXQoJ3BpZF8nICsgc2VsZi5uYW1lKQorICAgICAgICBzaG0gPSBp bnQob3MucG9wZW4oY21kKS5yZWFkbGluZSgpLnNwbGl0KClbMl0pCisgICAgICAgICMgc3RhdG0g c3RvcmVzIGluZm9ybWF0aW9ucyBpbiBwYWdlcywgdHJhbnNsYXRlIGl0IHRvIE1CCisgICAgICAg IHNobSA9IHNobSAqIDQgLyAxMDI0CisgICAgICAgIHJldHVybiBzaG0KKworCiAgICAgZGVmIHJl bW90ZV9sb2dpbihzZWxmLCBuaWNfaW5kZXg9MCwgdGltZW91dD0xMCk6CiAgICAgICAgICIiIgog ICAgICAgICBMb2cgaW50byB0aGUgZ3Vlc3QgdmlhIFNTSC9UZWxuZXQvTmV0Y2F0LgpkaWZmIC0t Z2l0IGEvY2xpZW50L3Rlc3RzL2t2bS9zY3JpcHRzL2FsbG9jYXRvci5weSBiL2NsaWVudC90ZXN0 cy9rdm0vc2NyaXB0cy9hbGxvY2F0b3IucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMTAzNjg5MwotLS0gL2Rldi9udWxsCisrKyBiL2NsaWVudC90ZXN0cy9rdm0vc2NyaXB0 cy9hbGxvY2F0b3IucHkKQEAgLTAsMCArMSwyMzQgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjIC0q LSBjb2Rpbmc6IHV0Zi04IC0qLQorIiIiCitBdXhpbGlhcnkgc2NyaXB0IHVzZWQgdG8gYWxsb2Nh dGUgbWVtb3J5IG9uIGd1ZXN0cy4KKworQGNvcHlyaWdodDogMjAwOC0yMDA5IFJlZCBIYXQgSW5j LgorQGF1dGhvcjogSmlyaSBadXBrYSAoanp1cGthQHJlZGhhdC5jb20pCisiIiIKKworCitpbXBv cnQgb3MsIGFycmF5LCBzeXMsIHN0cnVjdCwgcmFuZG9tLCBjb3B5LCBpbnNwZWN0LCB0ZW1wZmls ZSwgZGF0ZXRpbWUKKworUEFHRV9TSVpFID0gNDA5NiAjIG1hY2hpbmUgcGFnZSBzaXplCisKKwor Y2xhc3MgTWVtRmlsbChvYmplY3QpOgorICAgICIiIgorICAgIEZpbGxzIGd1ZXN0IG1lbW9yeSBh Y2NvcmRpbmcgdG8gY2VydGFpbiBwYXR0ZXJucy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18o c2VsZiwgbWVtLCBzdGF0aWNfdmFsdWUsIHJhbmRvbV9rZXkpOgorICAgICAgICAiIiIKKyAgICAg ICAgQ29uc3RydWN0b3Igb2YgTWVtRmlsbCBjbGFzcy4KKworICAgICAgICBAcGFyYW0gbWVtOiBB bW91bnQgb2YgdGVzdCBtZW1vcnkgaW4gTUIuCisgICAgICAgIEBwYXJhbSByYW5kb21fa2V5OiBT ZWVkIG9mIHJhbmRvbSBzZXJpZXMgdXNlZCBmb3IgZmlsbCB1cCBtZW1vcnkuCisgICAgICAgIEBw YXJhbSBzdGF0aWNfdmFsdWU6IFZhbHVlIHVzZWQgdG8gZmlsbCBhbGwgbWVtb3J5LgorICAgICAg ICAiIiIKKyAgICAgICAgaWYgKHN0YXRpY192YWx1ZSA8IDAgb3Igc3RhdGljX3ZhbHVlID4gMjU1 KToKKyAgICAgICAgICAgIHByaW50ICgiRkFJTDogSW5pdGlhbGl6YXRpb24gc3RhdGljIHZhbHVl IgorICAgICAgICAgICAgICAgICAgICJjYW4gYmUgb25seSBpbiByYW5nZSAoMC4uMjU1KSIpCisg ICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLnRtcGRwID0gdGVtcGZpbGUubWtkdGVt cCgpCisgICAgICAgIHJldF9jb2RlID0gb3Muc3lzdGVtKCJtb3VudCAtbyBzaXplPSVkTSB0bXBm cyAlcyAtdCB0bXBmcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbSArIDI1 KSwgc2VsZi50bXBkcCkpCisgICAgICAgIGlmIHJldF9jb2RlICE9IDA6CisgICAgICAgICAgICBp ZiBvcy5nZXR1aWQoKSAhPSAwOgorICAgICAgICAgICAgICAgIHByaW50ICgiRkFJTDogVW5hYmxl IHRvIG1vdW50IHRtcGZzICIKKyAgICAgICAgICAgICAgICAgICAgICAgIihsaWtlbHkgY2F1c2U6 IHlvdSBhcmUgbm90IHJvb3QpIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg cHJpbnQgIkZBSUw6IFVuYWJsZSB0byBtb3VudCB0bXBmcyIKKyAgICAgICAgZWxzZToKKyAgICAg ICAgICAgIHNlbGYuZiA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUocHJlZml4PSdtZW0nLCBkaXI9 c2VsZi50bXBkcCkKKyAgICAgICAgICAgIHNlbGYuYWxsb2NhdGVfYnkgPSAnTCcKKyAgICAgICAg ICAgIHNlbGYubnBhZ2VzID0gKG1lbSAqIDEwMjQgKiAxMDI0KSAvIFBBR0VfU0laRQorICAgICAg ICAgICAgc2VsZi5yYW5kb21fa2V5ID0gcmFuZG9tX2tleQorICAgICAgICAgICAgc2VsZi5zdGF0 aWNfdmFsdWUgPSBzdGF0aWNfdmFsdWUKKyAgICAgICAgICAgIHByaW50ICJQQVNTOiBJbml0aWFs aXphdGlvbiIKKworCisgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgIGlmIG9zLnBhdGgu aXNtb3VudChzZWxmLnRtcGRwKToKKyAgICAgICAgICAgIHNlbGYuZi5jbG9zZSgpCisgICAgICAg ICAgICBvcy5zeXN0ZW0oInVtb3VudCAlcyIgJSAoc2VsZi50bXBkcCkpCisKKworICAgIGRlZiBj b21wYXJlX3BhZ2Uoc2VsZiwgb3JpZ2luYWwsIGlubWVtKToKKyAgICAgICAgIiIiCisgICAgICAg IENvbXBhcmUgcGFnZXMgb2YgbWVtb3J5IGFuZCBwcmludCB0aGUgZGlmZmVyZW5jZXMgZm91bmQu CisKKyAgICAgICAgQHBhcmFtIG9yaWdpbmFsOiBEYXRhIHRoYXQgd2FzIGV4cGVjdGVkIHRvIGJl IGluIG1lbW9yeS4KKyAgICAgICAgQHBhcmFtIGlubWVtOiBEYXRhIGluIG1lbW9yeS4KKyAgICAg ICAgIiIiCisgICAgICAgIGZvciBpcCBpbiByYW5nZShQQUdFX1NJWkUgLyBvcmlnaW5hbC5pdGVt c2l6ZSk6CisgICAgICAgICAgICBpZiAobm90IG9yaWdpbmFsW2lwXSA9PSBpbm1lbVtpcF0pOiAj IGZpbmQgd2hpY2ggaXRlbSBpcyB3cm9uZworICAgICAgICAgICAgICAgIG9yaWdpbmFscCA9IGFy cmF5LmFycmF5KCJCIikKKyAgICAgICAgICAgICAgICBpbm1lbXAgPSBhcnJheS5hcnJheSgiQiIp CisgICAgICAgICAgICAgICAgb3JpZ2luYWxwLmZyb21zdHJpbmcob3JpZ2luYWxbaXA6aXArMV0u dG9zdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBpbm1lbXAuZnJvbXN0cmluZyhpbm1lbVtpcDpp cCsxXS50b3N0cmluZygpKQorICAgICAgICAgICAgICAgIGZvciBpYiBpbiByYW5nZShsZW4ob3Jp Z2luYWxwKSk6ICMgZmluZCB3cm9uZyBieXRlIGluIGl0ZW0KKyAgICAgICAgICAgICAgICAgICAg aWYgbm90IChvcmlnaW5hbHBbaWJdID09IGlubWVtcFtpYl0pOgorICAgICAgICAgICAgICAgICAg ICAgICAgcG9zaXRpb24gPSAoc2VsZi5mLnRlbGwoKSAtIFBBR0VfU0laRSArIGlwICoKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsLml0ZW1zaXplICsgaWIpCisg ICAgICAgICAgICAgICAgICAgICAgICBwcmludCAoIk1lbSBlcnJvciBvbiBwb3NpdGlvbiAlZCB3 YW50ZWQgMHglTHggYW5kIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMHgl THgiICUgKHBvc2l0aW9uLCBvcmlnaW5hbHBbaWJdLCBpbm1lbXBbaWJdKSkKKworCisgICAgZGVm IHZhbHVlX3BhZ2Uoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIHBh Z2UgZmlsbGVkIGJ5IHZhbHVlLgorCisgICAgICAgIEBwYXJhbSB2YWx1ZTogU3RyaW5nIHdlIHdh bnQgdG8gZmlsbCB0aGUgcGFnZSB3aXRoLgorICAgICAgICBAcmV0dXJuOiByZXR1cm4gYXJyYXkg b2YgYnl0ZXMgc2l6ZSBQQUdFX1NJWkUuCisgICAgICAgICIiIgorICAgICAgICBhID0gYXJyYXku YXJyYXkoIkIiKQorICAgICAgICBmb3IgaSBpbiByYW5nZShQQUdFX1NJWkUgLyBhLml0ZW1zaXpl KToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhLmFwcGVuZCh2YWx1ZSkKKyAg ICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwcmludCAiRkFJTDogVmFsdWUgY2Fu IGJlIG9ubHkgaW4gcmFuZ2UgKDAuLjI1NSkiCisgICAgICAgIHJldHVybiBhCisKKworICAgIGRl ZiByYW5kb21fcGFnZShzZWxmLCBzZWVkKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBw YWdlIGZpbGxlZCBieSBzdGF0aWMgcmFuZG9tIHNlcmllcy4KKworICAgICAgICBAcGFyYW0gc2Vl ZDogU2VlZCBvZiByYW5kb20gc2VyaWVzLgorICAgICAgICBAcmV0dXJuOiBTdGF0aWMgcmFuZG9t IGFycmF5IHNlcmllcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJhbmRvbS5zZWVkKHNlZWQpCisg ICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLmFsbG9jYXRlX2J5KQorICAgICAgICBmb3IgaSBp biByYW5nZShQQUdFX1NJWkUgLyBhLml0ZW1zaXplKToKKyAgICAgICAgICAgIGEuYXBwZW5kKHJh bmRvbS5yYW5kcmFuZ2UoMCwgc3lzLm1heGludCkpCisgICAgICAgIHJldHVybiBhCisKKworICAg IGRlZiB2YWx1ZV9maWxsKHNlbGYsIHZhbHVlPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAg RmlsbCBtZW1vcnkgcGFnZSBieSBwYWdlLCB3aXRoIHZhbHVlIGdlbmVyYXRlZCB3aXRoIHZhbHVl X3BhZ2UuCisKKyAgICAgICAgQHBhcmFtIHZhbHVlOiBQYXJhbWV0ZXIgdG8gYmUgcGFzc2VkIHRv IHZhbHVlX3BhZ2UuIE5vbmUgdG8ganVzdCB1c2UKKyAgICAgICAgICAgICAgICB3aGF0J3Mgb24g dGhlIGF0dHJpYnV0ZSBzdGF0aWNfdmFsdWUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmYu c2VlaygwKQorICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgdmFsdWUgPSBz ZWxmLnN0YXRpY192YWx1ZQorICAgICAgICBwYWdlID0gc2VsZi52YWx1ZV9wYWdlKHZhbHVlKQor ICAgICAgICBmb3IgcGFnZXMgaW4gcmFuZ2Uoc2VsZi5ucGFnZXMpOgorICAgICAgICAgICAgcGFn ZS50b2ZpbGUoc2VsZi5mKQorICAgICAgICBwcmludCAiUEFTUzogTWVtIHZhbHVlIGZpbGwiCisK KworICAgIGRlZiB2YWx1ZV9jaGVjayhzZWxmLCB2YWx1ZT1Ob25lKToKKyAgICAgICAgIiIiCisg ICAgICAgIENoZWNrIG1lbW9yeSB0byBzZWUgaWYgZGF0YSBpcyBjb3JyZWN0LgorCisgICAgICAg IEBwYXJhbSB2YWx1ZTogUGFyYW1ldGVyIHRvIGJlIHBhc3NlZCB0byB2YWx1ZV9wYWdlLiBOb25l IHRvIGp1c3QgdXNlCisgICAgICAgICAgICAgICAgd2hhdCdzIG9uIHRoZSBhdHRyaWJ1dGUgc3Rh dGljX3ZhbHVlLgorICAgICAgICBAcmV0dXJuOiBpZiBkYXRhIGluIG1lbW9yeSBpcyBjb3JyZWN0 IHJldHVybiBQQVNTCisgICAgICAgICAgICAgICAgZWxzZSBwcmludCBzb21lIHdyb25nIGRhdGEg YW5kIHJldHVybiBGQUlMCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmYuc2VlaygwKQorICAg ICAgICBlID0gMgorICAgICAgICBmYWlsdXJlID0gRmFsc2UKKyAgICAgICAgaWYgdmFsdWUgaXMg Tm9uZToKKyAgICAgICAgICAgIHZhbHVlID0gc2VsZi5zdGF0aWNfdmFsdWUKKyAgICAgICAgcGFn ZSA9IHNlbGYudmFsdWVfcGFnZSh2YWx1ZSkKKyAgICAgICAgZm9yIHBhZ2VzIGluIHJhbmdlKHNl bGYubnBhZ2VzKToKKyAgICAgICAgICAgIHBmID0gYXJyYXkuYXJyYXkoIkIiKQorICAgICAgICAg ICAgcGYuZnJvbWZpbGUoc2VsZi5mLCBQQUdFX1NJWkUgLyBwZi5pdGVtc2l6ZSkKKyAgICAgICAg ICAgIGlmIG5vdCAocGFnZSA9PSBwZik6CisgICAgICAgICAgICAgICAgZmFpbHVyZSA9IFRydWUK KyAgICAgICAgICAgICAgICBzZWxmLmNvbXBhcmVfcGFnZShwYWdlLCBwZikKKyAgICAgICAgICAg ICAgICBlID0gZSAtIDEKKyAgICAgICAgICAgICAgICBpZiBlID09IDA6CisgICAgICAgICAgICAg ICAgICAgIGJyZWFrCisgICAgICAgIGlmIGZhaWx1cmU6CisgICAgICAgICAgICBwcmludCAiRkFJ TDogdmFsdWUgdmVyaWZpY2F0aW9uIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQg IlBBU1M6IHZhbHVlIHZlcmlmaWNhdGlvbiIKKworCisgICAgZGVmIHN0YXRpY19yYW5kb21fZmls bChzZWxmLCBuX2J5dGVzX29uX2VuZD1QQUdFX1NJWkUpOgorICAgICAgICAiIiIKKyAgICAgICAg RmlsbCBtZW1vcnkgYnkgcGFnZSB3aXRoIHN0YXRpYyByYW5kb20gc2VyaWVzIHdpdGggYWRkZWQg c3BlY2lhbCB2YWx1ZQorICAgICAgICBvbiByYW5kb20gcGxhY2UgaW4gcGFnZXMuCisKKyAgICAg ICAgQHBhcmFtIG5fYnl0ZXNfb25fZW5kOiBob3cgbWFueSBieXRlcyBvbiB0aGUgZW5kIG9mIHBh Z2UgY2FuIGJlIGNoYW5nZWQuCisgICAgICAgIEByZXR1cm46IFBBU1MuCisgICAgICAgICIiIgor ICAgICAgICBzZWxmLmYuc2VlaygwKQorICAgICAgICBwYWdlID0gc2VsZi5yYW5kb21fcGFnZShz ZWxmLnJhbmRvbV9rZXkpCisgICAgICAgIHJhbmRvbS5zZWVkKHNlbGYucmFuZG9tX2tleSkKKyAg ICAgICAgcCA9IGNvcHkuY29weShwYWdlKQorCisgICAgICAgIHRfc3RhcnQgPSBkYXRldGltZS5k YXRldGltZS5ub3coKQorICAgICAgICBmb3IgcGFnZXMgaW4gcmFuZ2Uoc2VsZi5ucGFnZXMpOgor ICAgICAgICAgICAgcmFuZCA9IHJhbmRvbS5yYW5kaW50KCgoUEFHRV9TSVpFIC8gcGFnZS5pdGVt c2l6ZSkgLSAxKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5fYnl0ZXNf b25fZW5kIC8gcGFnZS5pdGVtc2l6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKFBBR0VfU0laRS9wYWdlLml0ZW1zaXplKSAtIDEpCisgICAgICAgICAgICBwW3JhbmRdID0g cGFnZXMKKyAgICAgICAgICAgIHAudG9maWxlKHNlbGYuZikKKyAgICAgICAgICAgIHBbcmFuZF0g PSBwYWdlW3JhbmRdCisKKyAgICAgICAgdF9lbmQgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQor ICAgICAgICBkZWx0YSA9IHRfZW5kIC0gdF9zdGFydAorICAgICAgICBtaWxpc2VjID0gZGVsdGEu bWljcm9zZWNvbmRzIC8gMWUzICsgZGVsdGEuc2Vjb25kcyAqIDFlMworICAgICAgICBwcmludCAi UEFTUzogZmlsbGluZyBkdXJhdGlvbiA9ICVMZCBtcyIgJSBtaWxpc2VjCisKKworICAgIGRlZiBz dGF0aWNfcmFuZG9tX3ZlcmlmeShzZWxmLCBuX2J5dGVzX29uX2VuZD1QQUdFX1NJWkUpOgorICAg ICAgICAiIiIKKyAgICAgICAgQ2hlY2sgbWVtb3J5IHRvIHNlZSBpZiBpdCBjb250YWlucyBjb3Jy ZWN0IGNvbnRlbnRzLgorCisgICAgICAgIEByZXR1cm46IGlmIGRhdGEgaW4gbWVtb3J5IGlzIGNv cnJlY3QgcmV0dXJuIFBBU1MKKyAgICAgICAgICAgICAgICBlbHNlIHByaW50IHNvbWUgd3Jvbmcg ZGF0YSBhbmQgcmV0dXJuIEZBSUwuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmYuc2Vlaygw KQorICAgICAgICBlID0gMgorICAgICAgICBwYWdlID0gc2VsZi5yYW5kb21fcGFnZShzZWxmLnJh bmRvbV9rZXkpCisgICAgICAgIHJhbmRvbS5zZWVkKHNlbGYucmFuZG9tX2tleSkKKyAgICAgICAg cCA9IGNvcHkuY29weShwYWdlKQorICAgICAgICBmYWlsdXJlID0gRmFsc2UKKyAgICAgICAgZm9y IHBhZ2VzIGluIHJhbmdlKHNlbGYubnBhZ2VzKToKKyAgICAgICAgICAgIHJhbmQgPSByYW5kb20u cmFuZGludCgoKFBBR0VfU0laRS9wYWdlLml0ZW1zaXplKSAtIDEpIC0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobl9ieXRlc19vbl9lbmQvcGFnZS5pdGVtc2l6ZSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBBR0VfU0laRS9wYWdlLml0ZW1zaXplKSAt IDEpCisgICAgICAgICAgICBwW3JhbmRdID0gcGFnZXMKKyAgICAgICAgICAgIHBmID0gYXJyYXku YXJyYXkoc2VsZi5hbGxvY2F0ZV9ieSkKKyAgICAgICAgICAgIHBmLmZyb21maWxlKHNlbGYuZiwg UEFHRV9TSVpFIC8gcGYuaXRlbXNpemUpCisgICAgICAgICAgICBpZiBub3QgKHAgPT0gcGYpOgor ICAgICAgICAgICAgICAgIGZhaWx1cmUgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5jb21w YXJlX3BhZ2UocCwgcGYpCisgICAgICAgICAgICAgICAgZSA9IGUgLSAxCisgICAgICAgICAgICAg ICAgaWYgZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcFty YW5kXSA9IHBhZ2VbcmFuZF0KKyAgICAgICAgaWYgZmFpbHVyZToKKyAgICAgICAgICAgIHByaW50 ICJGQUlMOiBSYW5kb20gc2VyaWVzIHZlcmlmaWNhdGlvbiIKKyAgICAgICAgZWxzZToKKyAgICAg ICAgICAgIHByaW50ICJQQVNTOiBSYW5kb20gc2VyaWVzIHZlcmlmaWNhdGlvbiIKKworCitkZWYg ZGllKCk6CisgICAgIiIiCisgICAgUXVpdCBhbGxvY2F0b3IuCisgICAgIiIiCisgICAgZXhpdCgw KQorCisKK2RlZiBtYWluKCk6CisgICAgIiIiCisgICAgTWFpbiAoaW5maW5pdGUpIGxvb3Agb2Yg YWxsb2NhdG9yLgorICAgICIiIgorICAgIHByaW50ICJQQVNTOiBTdGFydCIKKyAgICBlbmQgPSBG YWxzZQorICAgIHdoaWxlIG5vdCBlbmQ6CisgICAgICAgIHN0ciA9IHJhd19pbnB1dCgpCisgICAg ICAgIGV4ZWMgc3RyCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkK ZGlmZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9rdm0vdGVzdHMva3NtX292ZXJjb21taXQucHkgYi9j bGllbnQvdGVzdHMva3ZtL3Rlc3RzL2tzbV9vdmVyY29tbWl0LnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjJkZDQ2YzQKLS0tIC9kZXYvbnVsbAorKysgYi9jbGllbnQvdGVz dHMva3ZtL3Rlc3RzL2tzbV9vdmVyY29tbWl0LnB5CkBAIC0wLDAgKzEsNTU5IEBACitpbXBvcnQg bG9nZ2luZywgdGltZSwgcmFuZG9tLCBzdHJpbmcsIG1hdGgsIG9zLCB0ZW1wZmlsZQorZnJvbSBh dXRvdGVzdF9saWIuY2xpZW50LmNvbW1vbl9saWIgaW1wb3J0IGVycm9yCitmcm9tIGF1dG90ZXN0 X2xpYi5jbGllbnQuYmluIGltcG9ydCB1dGlscworaW1wb3J0IGt2bV9zdWJwcm9jZXNzLCBrdm1f dGVzdF91dGlscywga3ZtX3V0aWxzLCBrdm1fcHJlcHJvY2Vzc2luZworCisKK2RlZiBydW5fa3Nt X292ZXJjb21taXQodGVzdCwgcGFyYW1zLCBlbnYpOgorICAgICIiIgorICAgIFRlc3QgaG93IEtT TSAoS2VybmVsIFNoYXJlZCBNZW1vcnkpIGFjdCB3aGVuIG1vcmUgdGhhbiBwaHlzaWNhbCBtZW1v cnkgaXMKKyAgICB1c2VkLiBJbiBzZWNvbmQgcGFydCB3ZSBhbHNvIHRlc3QgaG93IEtWTSBoYW5k bGVzIGEgc2l0dWF0aW9uIHdoZW4gdGhlIGhvc3QKKyAgICBydW5zIG91dCBvZiBtZW1vcnkgKGl0 IGlzIGV4cGVjdGVkIHRvIHBhdXNlIHRoZSBndWVzdCBzeXN0ZW0sIHdhaXQgdW50aWwKKyAgICBz b21lIHByb2Nlc3MgcmV0dXJucyBtZW1vcnkgYW5kIGJyaW5nIHRoZSBndWVzdCBiYWNrIHRvIGxp ZmUpCisKKyAgICBAcGFyYW0gdGVzdDoga3ZtIHRlc3Qgb2JqZWN0LgorICAgIEBwYXJhbSBwYXJh bXM6IERpY3Rpb25hcnkgd2l0aCB0ZXN0IHBhcmFtZXRlcnMuCisgICAgQHBhcmFtIGVudjogRGlj dGlvbmFyeSB3aXRoIHRoZSB0ZXN0IHdudmlyb25tZW50LgorICAgICIiIgorCisgICAgZGVmIF9z dGFydF9hbGxvY2F0b3Iodm0sIHNlc3Npb24sIHRpbWVvdXQpOgorICAgICAgICAiIiIKKyAgICAg ICAgRXhlY3V0ZSBhbGxvY2F0b3IucHkgb24gYSBndWVzdCwgd2FpdCB1bnRpbCBpdCBpcyBpbml0 aWFsaXplZC4KKworICAgICAgICBAcGFyYW0gdm06IFZNIG9iamVjdC4KKyAgICAgICAgQHBhcmFt IHNlc3Npb246IFJlbW90ZSBzZXNzaW9uIHRvIGEgVk0gb2JqZWN0LgorICAgICAgICBAcGFyYW0g dGltZW91dDogVGltZW91dCB0aGF0IHdpbGwgYmUgdXNlZCB0byB2ZXJpZnkgaWYgYWxsb2NhdG9y LnB5CisgICAgICAgICAgICAgICAgc3RhcnRlZCBwcm9wZXJseS4KKyAgICAgICAgIiIiCisgICAg ICAgIGxvZ2dpbmcuZGVidWcoIlN0YXJ0aW5nIGFsbG9jYXRvci5weSBvbiBndWVzdCAlcyIsIHZt Lm5hbWUpCisgICAgICAgIHNlc3Npb24uc2VuZGxpbmUoInB5dGhvbiAvdG1wL2FsbG9jYXRvci5w eSIpCisgICAgICAgIChtYXRjaCwgZGF0YSkgPSBzZXNzaW9uLnJlYWRfdW50aWxfbGFzdF9saW5l X21hdGNoZXMoWyJQQVNTOiIsICJGQUlMOiJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQpCisgICAgICAgIGlmIG1h dGNoID09IDEgb3IgbWF0Y2ggaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIGVycm9yLlRlc3RG YWlsKCJDb21tYW5kIGFsbG9jYXRvci5weSBvbiBndWVzdCAlcyBmYWlsZWQuXG4iCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIGNvZGU6ICVzXG4gb3V0cHV0OlxuJXMi ICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2bS5uYW1lLCBtYXRjaCwgZGF0 YSkpCisKKworICAgIGRlZiBfZXhlY3V0ZV9hbGxvY2F0b3IoY29tbWFuZCwgdm0sIHNlc3Npb24s IHRpbWVvdXQpOgorICAgICAgICAiIiIKKyAgICAgICAgRXhlY3V0ZSBhIGdpdmVuIGNvbW1hbmQg b24gYWxsb2NhdG9yLnB5IG1haW4gbG9vcCwgaW5kaWNhdGluZyB0aGUgdm0KKyAgICAgICAgdGhl IGNvbW1hbmQgd2FzIGV4ZWN1dGVkIG9uLgorCisgICAgICAgIEBwYXJhbSBjb21tYW5kOiBDb21t YW5kIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4KKyAgICAgICAgQHBhcmFtIHZtOiBWTSBvYmplY3Qu CisgICAgICAgIEBwYXJhbSBzZXNzaW9uOiBSZW1vdGUgc2Vzc2lvbiB0byBWTSBvYmplY3QuCisg ICAgICAgIEBwYXJhbSB0aW1lb3V0OiBUaW1lb3V0IHVzZWQgdG8gdmVyaWZ5IGV4cGVjdGVkIG91 dHB1dC4KKworICAgICAgICBAcmV0dXJuOiBUdXBsZSAobWF0Y2ggaW5kZXgsIGRhdGEpCisgICAg ICAgICIiIgorICAgICAgICBsb2dnaW5nLmRlYnVnKCJFeGVjdXRpbmcgJyVzJyBvbiBhbGxvY2F0 b3IucHkgbG9vcCwgdm06ICVzLCB0aW1lb3V0OiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAg Y29tbWFuZCwgdm0ubmFtZSwgdGltZW91dCkKKyAgICAgICAgc2Vzc2lvbi5zZW5kbGluZShjb21t YW5kKQorICAgICAgICAobWF0Y2gsIGRhdGEpID0gc2Vzc2lvbi5yZWFkX3VudGlsX2xhc3RfbGlu ZV9tYXRjaGVzKFsiUEFTUzoiLCJGQUlMOiJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQpCisgICAgICAgIGlmIG1h dGNoID09IDEgb3IgbWF0Y2ggaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIGVycm9yLlRlc3RG YWlsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnJXMnIG9uIGFsbG9jYXRvci5weSwgIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInZtOiAlcywgb3V0cHV0OlxuJXMiICUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb21tYW5kLCB2bS5uYW1lLCBkYXRhKSkKKyAgICAg ICAgcmV0dXJuIChtYXRjaCwgZGF0YSkKKworCisgICAgZGVmIGluaXRpYWxpemVfZ3Vlc3RzKCk6 CisgICAgICAgICIiIgorICAgICAgICBJbml0aWFsaXplIGd1ZXN0cyAoZmlsbCB0aGVpciBtZW1v cmllcyB3aXRoIHNwZWNpZmllZCBwYXR0ZXJucykuCisgICAgICAgICIiIgorICAgICAgICBsb2dn aW5nLmluZm8oIlBoYXNlIDE6IGZpbGxpbmcgZ3Vlc3QgbWVtb3J5IHBhZ2VzIikKKyAgICAgICAg Zm9yIHNlc3Npb24gaW4gbHNlc3Npb25zOgorICAgICAgICAgICAgdm0gPSBsdm1zW2xzZXNzaW9u cy5pbmRleChzZXNzaW9uKV0KKworICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygiVHVybmluZyBv ZmYgc3dhcCBvbiB2bSAlcyIgJSB2bS5uYW1lKQorICAgICAgICAgICAgcmV0ID0gc2Vzc2lvbi5n ZXRfY29tbWFuZF9zdGF0dXMoInN3YXBvZmYgLWEiLCB0aW1lb3V0PTMwMCkKKyAgICAgICAgICAg IGlmIHJldCBpcyBOb25lIG9yIHJldDoKKyAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5UZXN0 RmFpbCgiRmFpbGVkIHRvIHN3YXBvZmYgb24gVk0gJXMiICUgdm0ubmFtZSkKKworICAgICAgICAg ICAgIyBTdGFydCB0aGUgYWxsb2NhdG9yCisgICAgICAgICAgICBfc3RhcnRfYWxsb2NhdG9yKHZt LCBzZXNzaW9uLCA2MCAqIHBlcmZfcmF0aW8pCisKKyAgICAgICAgIyBFeGVjdXRlIGFsbG9jYXRv ciBvbiBndWVzdHMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgdm1zYyk6CisgICAgICAgICAg ICB2bSA9IGx2bXNbaV0KKworICAgICAgICAgICAgYV9jbWQgPSAibWVtID0gTWVtRmlsbCglZCwg JXMsICVzKSIgJSAoa3NtX3NpemUsIHNrZXlzW2ldLCBka2V5c1tpXSkKKyAgICAgICAgICAgIF9l eGVjdXRlX2FsbG9jYXRvcihhX2NtZCwgdm0sIGxzZXNzaW9uc1tpXSwgNjAgKiBwZXJmX3JhdGlv KQorCisgICAgICAgICAgICBhX2NtZCA9ICJtZW0udmFsdWVfZmlsbCglZCkiICUgc2tleXNbMF0K KyAgICAgICAgICAgIF9leGVjdXRlX2FsbG9jYXRvcihhX2NtZCwgdm0sIGxzZXNzaW9uc1tpXSwg MTIwICogcGVyZl9yYXRpbykKKworICAgICAgICAgICAgIyBMZXQgYWxsb2NhdG9yLnB5IGRvIGl0 cyBqb2IKKyAgICAgICAgICAgICMgKHVudGlsIHNoYXJlZCBtZW0gcmVhY2hlcyBleHBlY3RlZCB2 YWx1ZSkKKyAgICAgICAgICAgIHNobSA9IDAKKyAgICAgICAgICAgIGkgPSAwCisgICAgICAgICAg ICBsb2dnaW5nLmRlYnVnKCJUYXJnZXQgc2hhcmVkIG1lbWluZm8gZm9yIGd1ZXN0ICVzOiAlcyIs IHZtLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGtzbV9zaXplKQorICAgICAgICAg ICAgd2hpbGUgc2htIDwga3NtX3NpemU6CisgICAgICAgICAgICAgICAgaWYgaSA+IDY0OgorICAg ICAgICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKGt2bV90ZXN0X3V0aWxzLmdldF9tZW1vcnlf aW5mbyhsdm1zKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuVGVzdEVycm9yKCJT SE0gZGlkbid0IG1lcmdlIHRoZSBtZW1vcnkgdW50aWwgIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgInRoZSBETCBvbiBndWVzdDogJXMiICUgdm0ubmFtZSkKKyAg ICAgICAgICAgICAgICBzdCA9IGtzbV9zaXplIC8gMjAwICogcGVyZl9yYXRpbworICAgICAgICAg ICAgICAgIGxvZ2dpbmcuZGVidWcoIldhaXRpbmcgJWRzIGJlZm9yZSBwcm9jZWVkaW5nLi4uIiAl IHN0KQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoc3QpCisgICAgICAgICAgICAgICAgc2ht ID0gdm0uZ2V0X3NoYXJlZF9tZW1pbmZvKCkKKyAgICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVn KCJTaGFyZWQgbWVtaW5mbyBmb3IgZ3Vlc3QgJXMgYWZ0ZXIgIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIml0ZXJhdGlvbiAlczogJXMiLCB2bS5uYW1lLCBpLCBzaG0pCisgICAgICAg ICAgICAgICAgaSArPSAxCisKKyAgICAgICAgIyBLZWVwIHNvbWUgcmVzZXJ2ZQorICAgICAgICBy dCA9IGtzbV9zaXplIC8gMjAwICogcGVyZl9yYXRpbworICAgICAgICBsb2dnaW5nLmRlYnVnKCJX YWl0aW5nICVkcyBiZWZvcmUgcHJvY2VlZGluZy4uLiIsIHJ0KQorICAgICAgICB0aW1lLnNsZWVw KHJ0KQorCisgICAgICAgIGxvZ2dpbmcuZGVidWcoa3ZtX3Rlc3RfdXRpbHMuZ2V0X21lbW9yeV9p bmZvKGx2bXMpKQorICAgICAgICBsb2dnaW5nLmluZm8oIlBoYXNlIDE6IFBBU1MiKQorCisKKyAg ICBkZWYgc2VwYXJhdGVfZmlyc3RfZ3Vlc3QoKToKKyAgICAgICAgIiIiCisgICAgICAgIFNlcGFy YXRlIG1lbW9yeSBvZiB0aGUgZmlyc3QgZ3Vlc3QgYnkgZ2VuZXJhdGluZyBzcGVjaWFsIHJhbmRv bSBzZXJpZXMKKyAgICAgICAgIiIiCisgICAgICAgIGxvZ2dpbmcuaW5mbygiUGhhc2UgMjogU3Bs aXQgdGhlIHBhZ2VzIG9uIHRoZSBmaXJzdCBndWVzdCIpCisKKyAgICAgICAgYV9jbWQgPSAibWVt LnN0YXRpY19yYW5kb21fZmlsbCgpIgorICAgICAgICAobWF0Y2gsIGRhdGEpID0gX2V4ZWN1dGVf YWxsb2NhdG9yKGFfY21kLCBsdm1zWzBdLCBsc2Vzc2lvbnNbMF0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIwICogcGVyZl9yYXRpbykKKworICAgICAgICBy X21zZyA9IGRhdGEuc3BsaXRsaW5lcygpWy0xXQorICAgICAgICBsb2dnaW5nLmRlYnVnKCJSZXR1 cm4gbWVzc2FnZSBvZiBzdGF0aWNfcmFuZG9tX2ZpbGw6ICVzIiwgcl9tc2cpCisgICAgICAgIG91 dCA9IGludChyX21zZy5zcGxpdCgpWzRdKQorICAgICAgICBsb2dnaW5nLmRlYnVnKCJQZXJmb3Jt YW5jZTogJWRNQiAqIDEwMDAgLyAlZG1zID0gJWRNQi9zIiwga3NtX3NpemUsIG91dCwKKyAgICAg ICAgICAgICAgICAgICAgIChrc21fc2l6ZSAqIDEwMDAgLyBvdXQpKQorICAgICAgICBsb2dnaW5n LmRlYnVnKGt2bV90ZXN0X3V0aWxzLmdldF9tZW1vcnlfaW5mbyhsdm1zKSkKKyAgICAgICAgbG9n Z2luZy5kZWJ1ZygiUGhhc2UgMjogUEFTUyIpCisKKworICAgIGRlZiBzcGxpdF9ndWVzdCgpOgor ICAgICAgICAiIiIKKyAgICAgICAgU2VxdWVudGlhbCBzcGxpdCBvZiBwYWdlcyBvbiBndWVzdHMg dXAgdG8gbWVtb3J5IGxpbWl0CisgICAgICAgICIiIgorICAgICAgICBsb2dnaW5nLmluZm8oIlBo YXNlIDNhOiBTZXF1ZW50aWFsIHNwbGl0IG9mIHBhZ2VzIG9uIGd1ZXN0cyB1cCB0byAiCisgICAg ICAgICAgICAgICAgICAgICAibWVtb3J5IGxpbWl0IikKKyAgICAgICAgbGFzdF92bSA9IDAKKyAg ICAgICAgc2Vzc2lvbiA9IE5vbmUKKyAgICAgICAgdm0gPSBOb25lCisgICAgICAgIGZvciBpIGlu IHJhbmdlKDEsIHZtc2MpOgorICAgICAgICAgICAgdm0gPSBsdm1zW2ldCisgICAgICAgICAgICBz ZXNzaW9uID0gbHNlc3Npb25zW2ldCisgICAgICAgICAgICBhX2NtZCA9ICJtZW0uc3RhdGljX3Jh bmRvbV9maWxsKCkiCisgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCJFeGVjdXRpbmcgJXMgb24g YWxsb2NhdG9yLnB5IGxvb3AsIHZtOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFf Y21kLCB2bS5uYW1lKQorICAgICAgICAgICAgc2Vzc2lvbi5zZW5kbGluZShhX2NtZCkKKworICAg ICAgICAgICAgb3V0ID0gIiIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsb2dn aW5nLmRlYnVnKCJXYXRjaGluZyBob3N0IG1lbW9yeSB3aGlsZSBmaWxsaW5nIHZtICVzIG1lbW9y eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS5uYW1lKQorICAgICAgICAgICAg ICAgIHdoaWxlIG5vdCBvdXQuc3RhcnRzd2l0aCgiUEFTUyIpIGFuZCBub3Qgb3V0LnN0YXJ0c3dp dGgoIkZBSUwiKToKKyAgICAgICAgICAgICAgICAgICAgZnJlZV9tZW0gPSBpbnQodXRpbHMucmVh ZF9mcm9tX21lbWluZm8oIk1lbUZyZWUiKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGtzbV9z d2FwKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyZWVfbWVtID0gKGZyZWVfbWVtICsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCh1dGlscy5yZWFkX2Zyb21fbWVt aW5mbygiU3dhcEZyZWUiKSkpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dpbmcuZGVidWcoIkZy ZWUgbWVtb3J5IG9uIGhvc3Q6ICVkIiAlIChmcmVlX21lbSkpCisKKyAgICAgICAgICAgICAgICAg ICAgIyBXZSBuZWVkIHRvIGtlZXAgc29tZSBtZW1vcnkgZm9yIHB5dGhvbiB0byBydW4uCisgICAg ICAgICAgICAgICAgICAgIGlmIChmcmVlX21lbSA8IDY0MDAwKSBvciAoa3NtX3N3YXAgYW5kCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9tZW0gPCAo NDUwMDAwICogcGVyZl9yYXRpbykpOgorICAgICAgICAgICAgICAgICAgICAgICAgdm0uc2VuZF9t b25pdG9yX2NtZCgnc3RvcCcpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5n ZSgwLCBpKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsdm1zW2pdLmRlc3Ryb3koZ3Jh Y2VmdWxseSA9IEZhbHNlKQorICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgyMCkK KyAgICAgICAgICAgICAgICAgICAgICAgIHZtLnNlbmRfbW9uaXRvcl9jbWQoJ2MnKQorICAgICAg ICAgICAgICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygiT25seSAlcyBmcmVlIG1lbW9yeSwga2ls bGluZyAlZCBndWVzdHMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGZyZWVfbWVtLCAoaS0xKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3ZtID0gaQor ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgb3V0ID0g c2Vzc2lvbi5yZWFkX25vbmJsb2NraW5nKDAuMSkKKyAgICAgICAgICAgICAgICAgICAgdGltZS5z bGVlcCgyKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IsIChlcnIpOgorICAgICAgICAgICAg ICAgIGxvZ2dpbmcuZGVidWcoIk9ubHkgJXMgaG9zdCBmcmVlIG1lbW9yeSwga2lsbGluZyAlZCBn dWVzdHMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcmVlX21lbSwgKGkgLSAx KSkpCisgICAgICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygiU3RvcHBpbmcgJXMiLCB2bS5uYW1l KQorICAgICAgICAgICAgICAgIHZtLnNlbmRfbW9uaXRvcl9jbWQoJ3N0b3AnKQorICAgICAgICAg ICAgICAgIGZvciBqIGluIHJhbmdlKDAsIGkpOgorICAgICAgICAgICAgICAgICAgICBsb2dnaW5n LmRlYnVnKCJEZXN0cm95aW5nICVzIiwgbHZtc1tqXS5uYW1lKQorICAgICAgICAgICAgICAgICAg ICBsdm1zW2pdLmRlc3Ryb3koZ3JhY2VmdWxseSA9IEZhbHNlKQorICAgICAgICAgICAgICAgIHRp bWUuc2xlZXAoMjApCisgICAgICAgICAgICAgICAgdm0uc2VuZF9tb25pdG9yX2NtZCgnYycpCisg ICAgICAgICAgICAgICAgbGFzdF92bSA9IGkKKworICAgICAgICAgICAgaWYgbGFzdF92bSAhPSAw OgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCJNZW1v cnkgZmlsbGVkIGZvciBndWVzdCAlcyIgJSAodm0ubmFtZSkpCisKKyAgICAgICAgbG9nZ2luZy5p bmZvKCJQaGFzZSAzYTogUEFTUyIpCisKKyAgICAgICAgbG9nZ2luZy5pbmZvKCJQaGFzZSAzYjog Q2hlY2sgaWYgbWVtb3J5IGluIG1heCBsb2FkaW5nIGd1ZXN0IGlzIHJpZ2h0IikKKyAgICAgICAg Zm9yIGkgaW4gcmFuZ2UobGFzdF92bSArIDEsIHZtc2MpOgorICAgICAgICAgICAgbHNlc3Npb25z W2ldLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIGkgPT0gKHZtc2MgLSAxKToKKyAgICAgICAgICAg ICAgICBsb2dnaW5nLmRlYnVnKGt2bV90ZXN0X3V0aWxzLmdldF9tZW1vcnlfaW5mbyhbbHZtc1tp XV0pKQorICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygiRGVzdHJveWluZyBndWVzdCAlcyIgJSBs dm1zW2ldLm5hbWUpCisgICAgICAgICAgICBsdm1zW2ldLmRlc3Ryb3koZ3JhY2VmdWxseSA9IEZh bHNlKQorCisgICAgICAgICMgVmVyaWZ5IGxhc3QgbWFjaGluZSB3aXRoIHJhbmRvbWx5IGdlbmVy YXRlZCBtZW1vcnkKKyAgICAgICAgYV9jbWQgPSAibWVtLnN0YXRpY19yYW5kb21fdmVyaWZ5KCki CisgICAgICAgIF9leGVjdXRlX2FsbG9jYXRvcihhX2NtZCwgbHZtc1tsYXN0X3ZtXSwgc2Vzc2lv biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW0gLyAyMDAgKiA1MCAqIHBlcmZfcmF0 aW8pKQorICAgICAgICBsb2dnaW5nLmRlYnVnKGt2bV90ZXN0X3V0aWxzLmdldF9tZW1vcnlfaW5m byhbbHZtc1tsYXN0X3ZtXV0pKQorCisgICAgICAgIChzdGF0dXMsIGRhdGEpID0gbHNlc3Npb25z W2ldLmdldF9jb21tYW5kX3N0YXR1c19vdXRwdXQoImRpZSgpIiwgMjApCisgICAgICAgIGx2bXNb bGFzdF92bV0uZGVzdHJveShncmFjZWZ1bGx5ID0gRmFsc2UpCisgICAgICAgIGxvZ2dpbmcuaW5m bygiUGhhc2UgM2I6IFBBU1MiKQorCisKKyAgICBkZWYgc3BsaXRfcGFyYWxsZWwoKToKKyAgICAg ICAgIiIiCisgICAgICAgIFBhcmFsbGVsIHBhZ2Ugc3BsaXRpbmcKKyAgICAgICAgIiIiCisgICAg ICAgIGxvZ2dpbmcuaW5mbygiUGhhc2UgMTogcGFyYWxsZWwgcGFnZSBzcGxpdGluZyIpCisgICAg ICAgICMgV2UgaGF2ZSB0byB3YWl0IHVudGlsIGFsbG9jYXRvciBpcyBmaW5pc2hlZCAoaXQgd2Fp dHMgNSBzZWNvbmRzIHRvCisgICAgICAgICMgY2xlYW4gdGhlIHNvY2tldAorCisgICAgICAgIHNl c3Npb24gPSBsc2Vzc2lvbnNbMF0KKyAgICAgICAgdm0gPSBsdm1zWzBdCisgICAgICAgIGZvciBp IGluIHJhbmdlKDEsIG1heF9hbGxvYyk6CisgICAgICAgICAgICBsc2Vzc2lvbnMuYXBwZW5kKGt2 bV91dGlscy53YWl0X2Zvcih2bS5yZW1vdGVfbG9naW4sIDM2MCwgMCwgMikpCisgICAgICAgICAg ICBpZiBub3QgbHNlc3Npb25zW2ldOgorICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yLlRlc3RG YWlsKCJDb3VsZCBub3QgbG9nIGludG8gZ3Vlc3QgJXMiICUKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2bS5uYW1lKQorCisgICAgICAgIHJldCA9IHNlc3Npb24uZ2V0X2Nv bW1hbmRfc3RhdHVzKCJzd2Fwb2ZmIC1hIiwgdGltZW91dD0zMDApCisgICAgICAgIGlmIHJldCAh PSAwOgorICAgICAgICAgICAgcmFpc2UgZXJyb3IuVGVzdEZhaWwoIkZhaWxlZCB0byB0dXJuIG9m ZiBzd2FwIG9uICVzIiAlIHZtLm5hbWUpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbWF4 X2FsbG9jKToKKyAgICAgICAgICAgICMgU3RhcnQgdGhlIGFsbG9jYXRvcgorICAgICAgICAgICAg X3N0YXJ0X2FsbG9jYXRvcih2bSwgbHNlc3Npb25zW2ldLCA2MCAqIHBlcmZfcmF0aW8pCisKKyAg ICAgICAgbG9nZ2luZy5pbmZvKCJQaGFzZSAxOiBQQVNTIikKKworICAgICAgICBsb2dnaW5nLmlu Zm8oIlBoYXNlIDJhOiBTaW11bHRhbmVvdXMgbWVyZ2luZyIpCisgICAgICAgIGxvZ2dpbmcuZGVi dWcoIk1lbW9yeSB1c2VkIGJ5IGFsbG9jYXRvciBvbiBndWVzdHMgPSAlZE1CIiAlCisgICAgICAg ICAgICAgICAgICAgICAoa3NtX3NpemUgLyBtYXhfYWxsb2MpKQorCisgICAgICAgIGZvciBpIGlu IHJhbmdlKDAsIG1heF9hbGxvYyk6CisgICAgICAgICAgICBhX2NtZCA9ICJtZW0gPSBNZW1GaWxs KCVkLCAlcywgJXMpIiAlICgoa3NtX3NpemUgLyBtYXhfYWxsb2MpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tleXNbaV0sIGRrZXlzW2ldKQor ICAgICAgICAgICAgX2V4ZWN1dGVfYWxsb2NhdG9yKGFfY21kLCB2bSwgbHNlc3Npb25zW2ldLCA2 MCAqIHBlcmZfcmF0aW8pCisKKyAgICAgICAgICAgIGFfY21kID0gIm1lbS52YWx1ZV9maWxsKCVk KSIgJSAoc2tleXNbMF0pCisgICAgICAgICAgICBfZXhlY3V0ZV9hbGxvY2F0b3IoYV9jbWQsIHZt LCBsc2Vzc2lvbnNbaV0sIDkwICogcGVyZl9yYXRpbykKKworICAgICAgICAjIFdhaXQgdW50aWwg YWxsb2NhdG9yLnB5IG1lcmdlcyB0aGUgcGFnZXMgKDMgKiBrc21fc2l6ZSAvIDMpCisgICAgICAg IHNobSA9IDAKKyAgICAgICAgaSA9IDAKKyAgICAgICAgbG9nZ2luZy5kZWJ1ZygiVGFyZ2V0IHNo YXJlZCBtZW1vcnkgc2l6ZTogJXMiLCBrc21fc2l6ZSkKKyAgICAgICAgd2hpbGUgc2htIDwga3Nt X3NpemU6CisgICAgICAgICAgICBpZiBpID4gNjQ6CisgICAgICAgICAgICAgICAgbG9nZ2luZy5k ZWJ1Zyhrdm1fdGVzdF91dGlscy5nZXRfbWVtb3J5X2luZm8obHZtcykpCisgICAgICAgICAgICAg ICAgcmFpc2UgZXJyb3IuVGVzdEVycm9yKCJTSE0gZGlkbid0IG1lcmdlIHRoZSBtZW1vcnkgdW50 aWwgREwiKQorICAgICAgICAgICAgd3QgPSBrc21fc2l6ZSAvIDIwMCAqIHBlcmZfcmF0aW8KKyAg ICAgICAgICAgIGxvZ2dpbmcuZGVidWcoIldhaXRpbmcgJWRzIGJlZm9yZSBwcm9jZWVkLi4uIiwg d3QpCisgICAgICAgICAgICB0aW1lLnNsZWVwKHd0KQorICAgICAgICAgICAgc2htID0gdm0uZ2V0 X3NoYXJlZF9tZW1pbmZvKCkKKyAgICAgICAgICAgIGxvZ2dpbmcuZGVidWcoIlNoYXJlZCBtZW1p bmZvIGFmdGVyIGF0dGVtcHQgJXM6ICVzIiwgaSwgc2htKQorICAgICAgICAgICAgaSArPSAxCisK KyAgICAgICAgbG9nZ2luZy5kZWJ1Zyhrdm1fdGVzdF91dGlscy5nZXRfbWVtb3J5X2luZm8oW3Zt XSkpCisgICAgICAgIGxvZ2dpbmcuaW5mbygiUGhhc2UgMmE6IFBBU1MiKQorCisgICAgICAgIGxv Z2dpbmcuaW5mbygiUGhhc2UgMmI6IFNpbXVsdGFuZW91cyBzcGxpdGluZyIpCisgICAgICAgICMg QWN0dWFsIHNwbGl0dGluZworICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBtYXhfYWxsb2MpOgor ICAgICAgICAgICAgYV9jbWQgPSAibWVtLnN0YXRpY19yYW5kb21fZmlsbCgpIgorICAgICAgICAg ICAgKG1hdGNoLCBkYXRhKSA9IF9leGVjdXRlX2FsbG9jYXRvcihhX2NtZCwgdm0sIGxzZXNzaW9u c1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTAg KiBwZXJmX3JhdGlvKQorCisgICAgICAgICAgICBkYXRhID0gZGF0YS5zcGxpdGxpbmVzKClbLTFd CisgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKGRhdGEpCisgICAgICAgICAgICBvdXQgPSBpbnQo ZGF0YS5zcGxpdCgpWzRdKQorICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygiUGVyZm9ybWFuY2U6 ICVkTUIgKiAxMDAwIC8gJWRtcyA9ICVkTUIvcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAg ICgoa3NtX3NpemUgLyBtYXhfYWxsb2MpLCBvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg IChrc21fc2l6ZSAqIDEwMDAgLyBvdXQgLyBtYXhfYWxsb2MpKSkKKyAgICAgICAgbG9nZ2luZy5k ZWJ1Zyhrdm1fdGVzdF91dGlscy5nZXRfbWVtb3J5X2luZm8oW3ZtXSkpCisgICAgICAgIGxvZ2dp bmcuaW5mbygiUGhhc2UgMmI6IFBBU1MiKQorCisgICAgICAgIGxvZ2dpbmcuaW5mbygiUGhhc2Ug MmM6IFNpbXVsdGFuZW91cyB2ZXJpZmljYXRpb24iKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgw LCBtYXhfYWxsb2MpOgorICAgICAgICAgICAgYV9jbWQgPSAibWVtLnN0YXRpY19yYW5kb21fdmVy aWZ5KCkiCisgICAgICAgICAgICAobWF0Y2gsIGRhdGEpID0gX2V4ZWN1dGVfYWxsb2NhdG9yKGFf Y21kLCB2bSwgbHNlc3Npb25zW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobWVtIC8gMjAwICogNTAgKiBwZXJmX3JhdGlvKSkKKyAgICAgICAgbG9n Z2luZy5pbmZvKCJQaGFzZSAyYzogUEFTUyIpCisKKyAgICAgICAgbG9nZ2luZy5pbmZvKCJQaGFz ZSAyZDogU2ltdWx0YW5lb3VzIG1lcmdpbmciKQorICAgICAgICAjIEFjdHVhbCBzcGxpdHRpbmcK KyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbWF4X2FsbG9jKToKKyAgICAgICAgICAgIGFfY21k ID0gIm1lbS52YWx1ZV9maWxsKCVkKSIgJSBza2V5c1swXQorICAgICAgICAgICAgKG1hdGNoLCBk YXRhKSA9IF9leGVjdXRlX2FsbG9jYXRvcihhX2NtZCwgdm0sIGxzZXNzaW9uc1tpXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIwICogcGVyZl9yYXRp bykKKyAgICAgICAgbG9nZ2luZy5kZWJ1Zyhrdm1fdGVzdF91dGlscy5nZXRfbWVtb3J5X2luZm8o W3ZtXSkpCisgICAgICAgIGxvZ2dpbmcuaW5mbygiUGhhc2UgMmQ6IFBBU1MiKQorCisgICAgICAg IGxvZ2dpbmcuaW5mbygiUGhhc2UgMmU6IFNpbXVsdGFuZW91cyB2ZXJpZmljYXRpb24iKQorICAg ICAgICBmb3IgaSBpbiByYW5nZSgwLCBtYXhfYWxsb2MpOgorICAgICAgICAgICAgYV9jbWQgPSAi bWVtLnZhbHVlX2NoZWNrKCVkKSIgJSBza2V5c1swXQorICAgICAgICAgICAgKG1hdGNoLCBkYXRh KSA9IF9leGVjdXRlX2FsbG9jYXRvcihhX2NtZCwgdm0sIGxzZXNzaW9uc1tpXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbSAvIDIwMCAqIDUwICog cGVyZl9yYXRpbykpCisgICAgICAgIGxvZ2dpbmcuaW5mbygiUGhhc2UgMmU6IFBBU1MiKQorCisg ICAgICAgIGxvZ2dpbmcuaW5mbygiUGhhc2UgMmY6IFNpbXVsdGFuZW91cyBzcGxpdGluZyBsYXN0 IDk2QiIpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIG1heF9hbGxvYyk6CisgICAgICAgICAg ICBhX2NtZCA9ICJtZW0uc3RhdGljX3JhbmRvbV9maWxsKDk2KSIKKyAgICAgICAgICAgIChtYXRj aCwgZGF0YSkgPSBfZXhlY3V0ZV9hbGxvY2F0b3IoYV9jbWQsIHZtLCBsc2Vzc2lvbnNbaV0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwICogcGVyZl9y YXRpbykKKworICAgICAgICAgICAgZGF0YSA9IGRhdGEuc3BsaXRsaW5lcygpWy0xXQorICAgICAg ICAgICAgb3V0ID0gaW50KGRhdGEuc3BsaXQoKVs0XSkKKyAgICAgICAgICAgIGxvZ2dpbmcuZGVi dWcoIlBlcmZvcm1hbmNlOiAlZE1CICogMTAwMCAvICVkbXMgPSAlZE1CL3MiLAorICAgICAgICAg ICAgICAgICAgICAgICAgIGtzbV9zaXplL21heF9hbGxvYywgb3V0LAorICAgICAgICAgICAgICAg ICAgICAgICAgIChrc21fc2l6ZSAqIDEwMDAgLyBvdXQgLyBtYXhfYWxsb2MpKQorCisgICAgICAg IGxvZ2dpbmcuZGVidWcoa3ZtX3Rlc3RfdXRpbHMuZ2V0X21lbW9yeV9pbmZvKFt2bV0pKQorICAg ICAgICBsb2dnaW5nLmluZm8oIlBoYXNlIDJmOiBQQVNTIikKKworICAgICAgICBsb2dnaW5nLmlu Zm8oIlBoYXNlIDJnOiBTaW11bHRhbmVvdXMgdmVyaWZpY2F0aW9uIGxhc3QgOTZCIikKKyAgICAg ICAgZm9yIGkgaW4gcmFuZ2UoMCwgbWF4X2FsbG9jKToKKyAgICAgICAgICAgIGFfY21kID0gIm1l bS5zdGF0aWNfcmFuZG9tX3ZlcmlmeSg5NikiCisgICAgICAgICAgICAobWF0Y2gsIGRhdGEpID0g X2V4ZWN1dGVfYWxsb2NhdG9yKGFfY21kLCB2bSwgbHNlc3Npb25zW2ldLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtIC8gMjAwICogNTAgKiBwZXJm X3JhdGlvKSkKKyAgICAgICAgbG9nZ2luZy5kZWJ1Zyhrdm1fdGVzdF91dGlscy5nZXRfbWVtb3J5 X2luZm8oW3ZtXSkpCisgICAgICAgIGxvZ2dpbmcuaW5mbygiUGhhc2UgMmc6IFBBU1MiKQorCisg ICAgICAgIGxvZ2dpbmcuZGVidWcoIkNsZWFuaW5nIHVwLi4uIikKKyAgICAgICAgZm9yIGkgaW4g cmFuZ2UoMCwgbWF4X2FsbG9jKToKKyAgICAgICAgICAgIGxzZXNzaW9uc1tpXS5nZXRfY29tbWFu ZF9zdGF0dXNfb3V0cHV0KCJkaWUoKSIsIDIwKQorICAgICAgICBzZXNzaW9uLmNsb3NlKCkKKyAg ICAgICAgdm0uZGVzdHJveShncmFjZWZ1bGx5ID0gRmFsc2UpCisKKworICAgICMgTWFpbiB0ZXN0 IGNvZGUKKyAgICBsb2dnaW5nLmluZm8oIlN0YXJ0aW5nIHBoYXNlIDA6IEluaXRpYWxpemF0aW9u IikKKyAgICAjIGhvc3RfcmVzZXJ2ZTogbWVtIHJlc2VydmUga2VwdCBmb3IgdGhlIGhvc3Qgc3lz dGVtIHRvIHJ1bgorICAgIGhvc3RfcmVzZXJ2ZSA9IGludChwYXJhbXMuZ2V0KCJrc21faG9zdF9y ZXNlcnZlIiwgNTEyKSkKKyAgICAjIGd1ZXN0X3Jlc2VydmU6IG1lbSByZXNlcnZlIGtlcHQgdG8g YXZvaWQgZ3Vlc3QgT1MgdG8ga2lsbCBwcm9jZXNzZXMKKyAgICBndWVzdF9yZXNlcnZlID0gaW50 KHBhcmFtcy5nZXQoImtzbV9ndWVzdF9yZXNlcnZlIiwgMTAyNCkpCisgICAgbG9nZ2luZy5kZWJ1 ZygiTWVtb3J5IHJlc2VydmVkIGZvciBob3N0IHRvIHJ1bjogJWQiLCBob3N0X3Jlc2VydmUpCisg ICAgbG9nZ2luZy5kZWJ1ZygiTWVtb3J5IHJlc2VydmVkIGZvciBndWVzdCB0byBydW46ICVkIiwg Z3Vlc3RfcmVzZXJ2ZSkKKworICAgIG1heF92bXMgPSBpbnQocGFyYW1zLmdldCgibWF4X3ZtcyIs IDIpKQorICAgIG92ZXJjb21taXQgPSBmbG9hdChwYXJhbXMuZ2V0KCJrc21fb3ZlcmNvbW1pdF9y YXRpbyIsIDIuMCkpCisgICAgbWF4X2FsbG9jID0gaW50KHBhcmFtcy5nZXQoImtzbV9wYXJhbGxl bF9yYXRpbyIsIDEpKQorCisgICAgIyB2bXNjOiBjb3VudCBvZiBhbGwgdXNlZCBWTXMKKyAgICB2 bXNjID0gaW50KG92ZXJjb21taXQpICsgMQorICAgIHZtc2MgPSBtYXgodm1zYywgbWF4X3ZtcykK KworICAgIGlmIChwYXJhbXNbJ2tzbV9tb2RlJ10gPT0gInNlcmlhbCIpOgorICAgICAgICBtYXhf YWxsb2MgPSB2bXNjCisKKyAgICBob3N0X21lbSA9IChpbnQodXRpbHMubWVtdG90YWwoKSkgLyAx MDI0IC0gaG9zdF9yZXNlcnZlKQorCisgICAga3NtX3N3YXAgPSBGYWxzZQorICAgIGlmIHBhcmFt cy5nZXQoImtzbV9zd2FwIikgPT0gInllcyI6CisgICAgICAgIGtzbV9zd2FwID0gVHJ1ZQorCisg ICAgIyBQZXJmb3JtYW5jZSByYXRpbworICAgIHBlcmZfcmF0aW8gPSBwYXJhbXMuZ2V0KCJrc21f cGVyZl9yYXRpbyIpCisgICAgaWYgcGVyZl9yYXRpbzoKKyAgICAgICAgcGVyZl9yYXRpbyA9IGZs b2F0KHBlcmZfcmF0aW8pCisgICAgZWxzZToKKyAgICAgICAgcGVyZl9yYXRpbyA9IDEKKworICAg IGlmIChwYXJhbXNbJ2tzbV9tb2RlJ10gPT0gInBhcmFsbGVsIik6CisgICAgICAgIHZtc2MgPSAx CisgICAgICAgIG92ZXJjb21taXQgPSAxCisgICAgICAgIG1lbSA9IGhvc3RfbWVtCisgICAgICAg ICMgMzJiaXQgc3lzdGVtIGFkanVzdG1lbnQKKyAgICAgICAgaWYgbm90IHBhcmFtc1snaW1hZ2Vf bmFtZSddLmVuZHN3aXRoKCI2NCIpOgorICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygiUHJvYmFi bHkgaTM4NiBndWVzdCBhcmNoaXRlY3R1cmUsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg Im1heCBhbGxvY2F0b3IgbWVtID0gMkciKQorICAgICAgICAgICAgIyBHdWVzdCBjYW4gaGF2ZSBt b3JlIHRoYW4gMkcgYnV0CisgICAgICAgICAgICAjIGt2bSBtZW0gKyAxTUIgKGFsbG9jYXRvciBp dHNlbGYpIGNhbid0CisgICAgICAgICAgICBpZiAoaG9zdF9tZW0gPiAzMTAwKToKKyAgICAgICAg ICAgICAgICBtZW0gPSAzMTAwCisKKyAgICAgICAgaWYgb3MucG9wZW4oInVuYW1lIC1pIikucmVh ZGxpbmUoKS5zdGFydHN3aXRoKCJpMzg2Iik6CisgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCJI b3N0IGlzIGkzODYgYXJjaGl0ZWN0dXJlLCBtYXggZ3Vlc3QgbWVtIGlzIDJHIikKKyAgICAgICAg ICAgICMgR3Vlc3Qgc3lzdGVtIHdpdGggcWVtdSBvdmVyaGVhZCAoNjRNKSBjYW4ndCBoYXZlIG1v cmUgdGhhbiAyRworICAgICAgICAgICAgaWYgbWVtID4gMzEwMCAtIDY0OgorICAgICAgICAgICAg ICAgIG1lbSA9IDMxMDAgLSA2NAorCisgICAgZWxzZToKKyAgICAgICAgIyBtZW06IE1lbW9yeSBv ZiB0aGUgZ3Vlc3Qgc3lzdGVtcy4gTWF4aW11bSBtdXN0IGJlIGxlc3MgdGhhbgorICAgICAgICAj IGhvc3QncyBwaHlzaWNhbCByYW0KKyAgICAgICAgbWVtID0gaW50KG92ZXJjb21taXQgKiBob3N0 X21lbSAvIHZtc2MpCisKKyAgICAgICAgIyAzMmJpdCBzeXN0ZW0gYWRqdXN0bWVudAorICAgICAg ICBpZiBub3QgcGFyYW1zWydpbWFnZV9uYW1lJ10uZW5kc3dpdGgoIjY0Iik6CisgICAgICAgICAg ICBsb2dnaW5nLmRlYnVnKCJQcm9iYWJseSBpMzg2IGd1ZXN0IGFyY2hpdGVjdHVyZSwgIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAibWF4IGFsbG9jYXRvciBtZW0gPSAyRyIpCisgICAgICAg ICAgICAjIEd1ZXN0IGNhbiBoYXZlIG1vcmUgdGhhbiAyRyBidXQKKyAgICAgICAgICAgICMga3Zt IG1lbSArIDFNQiAoYWxsb2NhdG9yIGl0c2VsZikgY2FuJ3QKKyAgICAgICAgICAgIGlmIG1lbSAt IGd1ZXN0X3Jlc2VydmUgLSAxID4gMzEwMDoKKyAgICAgICAgICAgICAgICB2bXNjID0gaW50KG1h dGguY2VpbCgoaG9zdF9tZW0gKiBvdmVyY29tbWl0KSAvCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKDMxMDAgKyBndWVzdF9yZXNlcnZlKSkpCisgICAgICAgICAgICAgICAg bWVtID0gaW50KG1hdGguZmxvb3IoaG9zdF9tZW0gKiBvdmVyY29tbWl0IC8gdm1zYykpCisKKyAg ICAgICAgaWYgb3MucG9wZW4oInVuYW1lIC1pIikucmVhZGxpbmUoKS5zdGFydHN3aXRoKCJpMzg2 Iik6CisgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCJIb3N0IGlzIGkzODYgYXJjaGl0ZWN0dXJl LCBtYXggZ3Vlc3QgbWVtIGlzIDJHIikKKyAgICAgICAgICAgICMgR3Vlc3Qgc3lzdGVtIHdpdGgg cWVtdSBvdmVyaGVhZCAoNjRNKSBjYW4ndCBoYXZlIG1vcmUgdGhhbiAyRworICAgICAgICAgICAg aWYgbWVtID4gMzEwMCAtIDY0OgorICAgICAgICAgICAgICAgIHZtc2MgPSBpbnQobWF0aC5jZWls KChob3N0X21lbSAqIG92ZXJjb21taXQpIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoMzEwMCAtIDY0LjApKSkKKyAgICAgICAgICAgICAgICBtZW0gPSBpbnQobWF0aC5m bG9vcihob3N0X21lbSAqIG92ZXJjb21taXQgLyB2bXNjKSkKKworICAgIGxvZ2dpbmcuZGVidWco IkNoZWNraW5nIEtTTSBzdGF0dXMuLi4iKQorICAgIGtzbV9mbGFnID0gMAorICAgIGZvciBsaW5l IGluIG9zLnBvcGVuKCdrc21jdGwgaW5mbycpLnJlYWRsaW5lcygpOgorICAgICAgICBpZiBsaW5l LnN0YXJ0c3dpdGgoJ2ZsYWdzJyk6CisgICAgICAgICAgICBrc21fZmxhZyA9IGludChsaW5lLnNw bGl0KCcgJylbMV0uc3BsaXQoJywnKVswXSkKKyAgICBpZiBpbnQoa3NtX2ZsYWcpICE9IDE6Cisg ICAgICAgIGxvZ2dpbmcuaW5mbygiS1NNIG1vZHVsZSBpcyBub3QgbG9hZGVkISBUcnlpbmcgdG8g bG9hZCBtb2R1bGUgYW5kICIKKyAgICAgICAgICAgICAgICAgICAgICJzdGFydCBrc21jdGwuLi4i KQorICAgICAgICB0cnk6CisgICAgICAgICAgICB1dGlscy5ydW4oIm1vZHByb2JlIGtzbSIpCisg ICAgICAgICAgICB1dGlscy5ydW4oImtzbWN0bCBzdGFydCA1MDAwIDEwMCIpCisgICAgICAgIGV4 Y2VwdCBlcnJvci5DbWRFcnJvciwgZToKKyAgICAgICAgICAgIHJhaXNlIGVycm9yLlRlc3RGYWls KCJGYWlsZWQgdG8gbG9hZCBLU006ICVzIiAlIGUpCisgICAgbG9nZ2luZy5kZWJ1ZygiS1NNIG1v ZHVsZSBsb2FkZWQgYW5kIGtzbWN0bCBzdGFydGVkIikKKworICAgIHN3YXAgPSBpbnQodXRpbHMu cmVhZF9mcm9tX21lbWluZm8oIlN3YXBUb3RhbCIpKSAvIDEwMjQKKworICAgIGxvZ2dpbmcuZGVi dWcoIk92ZXJjb21taXQgPSAlZiIsIG92ZXJjb21taXQpCisgICAgbG9nZ2luZy5kZWJ1ZygiVHJ1 ZSBvdmVyY29tbWl0ID0gJWYgIiwgKGZsb2F0KHZtc2MgKiBtZW0pIC8KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQoaG9zdF9tZW0pKSkKKyAgICBsb2dn aW5nLmRlYnVnKCJIb3N0IG1lbW9yeSA9ICVkTSIsIGhvc3RfbWVtKQorICAgIGxvZ2dpbmcuZGVi dWcoIkd1ZXN0IG1lbW9yeSA9ICVkTSIsIG1lbSkKKyAgICBsb2dnaW5nLmRlYnVnKCJVc2luZyBz d2FwID0gJXMiLCBrc21fc3dhcCkKKyAgICBsb2dnaW5nLmRlYnVnKCJTd2FwID0gJWRNIiwgc3dh cCkKKyAgICBsb2dnaW5nLmRlYnVnKCJtYXhfdm1zID0gJWQiLCBtYXhfdm1zKQorICAgIGxvZ2dp bmcuZGVidWcoIkNvdW50IG9mIGFsbCB1c2VkIFZNcyA9ICVkIiwgdm1zYykKKyAgICBsb2dnaW5n LmRlYnVnKCJQZXJmb3JtYW5jZV9yYXRpbyA9ICVmIiwgcGVyZl9yYXRpbykKKworICAgICMgR2Vu ZXJhdGUgdW5pcXVlIGtleXMgZm9yIHJhbmRvbSBzZXJpZXMKKyAgICBza2V5cyA9IFtdCisgICAg ZGtleXMgPSBbXQorICAgIGZvciBpIGluIHJhbmdlKDAsIG1heCh2bXNjLCBtYXhfYWxsb2MpKToK KyAgICAgICAga2V5ID0gcmFuZG9tLnJhbmRyYW5nZSgwLCAyNTUpCisgICAgICAgIHdoaWxlIGtl eSBpbiBza2V5czoKKyAgICAgICAgICAgIGtleSA9IHJhbmRvbS5yYW5kcmFuZ2UoMCwgMjU1KQor ICAgICAgICBza2V5cy5hcHBlbmQoa2V5KQorCisgICAgICAgIGtleSA9IHJhbmRvbS5yYW5kcmFu Z2UoMCwgOTk5KQorICAgICAgICB3aGlsZSBrZXkgaW4gZGtleXM6CisgICAgICAgICAgICBrZXkg PSByYW5kb20ucmFuZHJhbmdlKDAsIDk5OSkKKyAgICAgICAgZGtleXMuYXBwZW5kKGtleSkKKwor ICAgIGxvZ2dpbmcuZGVidWcoInNrZXlzOiAlcyIgJSBza2V5cykKKyAgICBsb2dnaW5nLmRlYnVn KCJka2V5czogJXMiICUgZGtleXMpCisKKyAgICBsdm1zID0gW10KKyAgICBsc2Vzc2lvbnMgPSBb XQorCisgICAgIyBBcyB3ZSBkb24ndCBrbm93IHRoZSBudW1iZXIgYW5kIG1lbW9yeSBhbW91bnQg b2YgVk1zIGluIGFkdmFuY2UsCisgICAgIyB3ZSBuZWVkIHRvIHNwZWNpZnkgYW5kIGNyZWF0ZSB0 aGVtIGhlcmUgKEZJWE1FOiBub3QgYSBuaWNlIHRoaW5nKQorICAgIHZtX25hbWUgPSBwYXJhbXMu Z2V0KCJtYWluX3ZtIikKKyAgICBwYXJhbXNbJ21lbSddID0gbWVtCisgICAgcGFyYW1zWyd2bXMn XSA9IHZtX25hbWUKKyAgICAjIEFzc29jaWF0ZSBwaWRmaWxlIG5hbWUKKyAgICBwYXJhbXNbJ3Bp ZF8nICsgdm1fbmFtZV0gPSBrdm1fdXRpbHMuZ2VuZXJhdGVfdG1wX2ZpbGVfbmFtZSh2bV9uYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdwaWQnKQorICAgIGlmIG5vdCBwYXJhbXMuZ2V0KCdleHRyYV9wYXJhbXMnKToK KyAgICAgICAgcGFyYW1zWydleHRyYV9wYXJhbXMnXSA9ICcgJworICAgIHBhcmFtc1snZXh0cmFf cGFyYW1zXycgKyB2bV9uYW1lXSA9IHBhcmFtcy5nZXQoJ2V4dHJhX3BhcmFtcycpCisgICAgcGFy YW1zWydleHRyYV9wYXJhbXNfJyArIHZtX25hbWVdICs9ICgiIC1waWRmaWxlICVzIiAlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1zLmdldCgncGlkXycg KyB2bV9uYW1lKSkpCisgICAgcGFyYW1zWydleHRyYV9wYXJhbXMnXSA9IHBhcmFtcy5nZXQoJ2V4 dHJhX3BhcmFtc18nK3ZtX25hbWUpCisKKyAgICAjIGtzbV9zaXplOiBhbW91bnQgb2YgbWVtb3J5 IHVzZWQgYnkgYWxsb2NhdG9yCisgICAga3NtX3NpemUgPSBtZW0gLSBndWVzdF9yZXNlcnZlCisg ICAgbG9nZ2luZy5kZWJ1ZygiTWVtb3J5IHVzZWQgYnkgYWxsb2NhdG9yIG9uIGd1ZXN0cyA9ICVk TSIgJSAoa3NtX3NpemUpKQorCisgICAgIyBDcmVhdGluZyB0aGUgZmlyc3QgZ3Vlc3QKKyAgICBr dm1fcHJlcHJvY2Vzc2luZy5wcmVwcm9jZXNzX3ZtKHRlc3QsIHBhcmFtcywgZW52LCB2bV9uYW1l KQorICAgIGx2bXMuYXBwZW5kKGt2bV91dGlscy5lbnZfZ2V0X3ZtKGVudiwgdm1fbmFtZSkpCisg ICAgaWYgbm90IGx2bXNbMF06CisgICAgICAgIHJhaXNlIGVycm9yLlRlc3RFcnJvcigiVk0gb2Jq ZWN0IG5vdCBmb3VuZCBpbiBlbnZpcm9ubWVudCIpCisgICAgaWYgbm90IGx2bXNbMF0uaXNfYWxp dmUoKToKKyAgICAgICAgcmFpc2UgZXJyb3IuVGVzdEVycm9yKCJWTSBzZWVtcyB0byBiZSBkZWFk OyBUZXN0IHJlcXVpcmVzIGEgbGl2aW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJWTSIpCisKKyAgICBsb2dnaW5nLmRlYnVnKCJCb290aW5nIGZpcnN0IGd1ZXN0ICVzIiwgbHZt c1swXS5uYW1lKQorCisgICAgbHNlc3Npb25zLmFwcGVuZChrdm1fdXRpbHMud2FpdF9mb3IobHZt c1swXS5yZW1vdGVfbG9naW4sIDM2MCwgMCwgMikpCisgICAgaWYgbm90IGxzZXNzaW9uc1swXToK KyAgICAgICAgcmFpc2UgZXJyb3IuVGVzdEZhaWwoIkNvdWxkIG5vdCBsb2cgaW50byBmaXJzdCBn dWVzdCIpCisgICAgIyBBc3NvY2lhdGUgdm0gUElECisgICAgdHJ5OgorICAgICAgICB0bXAgPSBv cGVuKHBhcmFtcy5nZXQoJ3BpZF8nICsgdm1fbmFtZSksICdyJykKKyAgICAgICAgcGFyYW1zWydw aWRfJyArIHZtX25hbWVdID0gaW50KHRtcC5yZWFkbGluZSgpKQorICAgIGV4Y2VwdDoKKyAgICAg ICAgcmFpc2UgZXJyb3IuVGVzdEZhaWwoIkNvdWxkIG5vdCBnZXQgUElEIG9mICVzIiAlICh2bV9u YW1lKSkKKworICAgICMgQ3JlYXRpbmcgb3RoZXIgZ3Vlc3Qgc3lzdGVtcworICAgIGZvciBpIGlu IHJhbmdlKDEsIHZtc2MpOgorICAgICAgICB2bV9uYW1lID0gInZtIiArIHN0cihpICsgMSkKKyAg ICAgICAgcGFyYW1zWydwaWRfJyArIHZtX25hbWVdID0ga3ZtX3V0aWxzLmdlbmVyYXRlX3RtcF9m aWxlX25hbWUodm1fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpZCcpCisgICAgICAgIHBhcmFtc1snZXh0 cmFfcGFyYW1zXycgKyB2bV9uYW1lXSA9IHBhcmFtcy5nZXQoJ2V4dHJhX3BhcmFtcycpCisgICAg ICAgIHBhcmFtc1snZXh0cmFfcGFyYW1zXycgKyB2bV9uYW1lXSArPSAoIiAtcGlkZmlsZSAlcyIg JQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtcy5n ZXQoJ3BpZF8nICsgdm1fbmFtZSkpKQorICAgICAgICBwYXJhbXNbJ2V4dHJhX3BhcmFtcyddID0g cGFyYW1zLmdldCgnZXh0cmFfcGFyYW1zXycgKyB2bV9uYW1lKQorCisgICAgICAgICMgTGFzdCBW TSBpcyBsYXRlciB1c2VkIHRvIHJ1biBtb3JlIGFsbG9jYXRvcnMgc2ltdWx0YW5lb3VzbHkKKyAg ICAgICAgbHZtcy5hcHBlbmQobHZtc1swXS5jbG9uZSh2bV9uYW1lLCBwYXJhbXMpKQorICAgICAg ICBrdm1fdXRpbHMuZW52X3JlZ2lzdGVyX3ZtKGVudiwgdm1fbmFtZSwgbHZtc1tpXSkKKyAgICAg ICAgcGFyYW1zWyd2bXMnXSArPSAiICIgKyB2bV9uYW1lCisKKyAgICAgICAgbG9nZ2luZy5kZWJ1 ZygiQm9vdGluZyBndWVzdCAlcyIgJSBsdm1zW2ldLm5hbWUpCisgICAgICAgIGlmIG5vdCBsdm1z W2ldLmNyZWF0ZSgpOgorICAgICAgICAgICAgcmFpc2UgZXJyb3IuVGVzdEZhaWwoIkNhbm5vdCBj cmVhdGUgVk0gJXMiICUgbHZtc1tpXS5uYW1lKQorICAgICAgICBpZiBub3QgbHZtc1tpXS5pc19h bGl2ZSgpOgorICAgICAgICAgICAgcmFpc2UgZXJyb3IuVGVzdEVycm9yKCJWTSAlcyBzZWVtcyB0 byBiZSBkZWFkOyBUZXN0IHJlcXVpcmVzIGEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImxpdmluZyBWTSIgJSBsdm1zW2ldLm5hbWUpCisKKyAgICAgICAgbHNlc3Npb25zLmFw cGVuZChrdm1fdXRpbHMud2FpdF9mb3IobHZtc1tpXS5yZW1vdGVfbG9naW4sIDM2MCwgMCwgMikp CisgICAgICAgIGlmIG5vdCBsc2Vzc2lvbnNbaV06CisgICAgICAgICAgICByYWlzZSBlcnJvci5U ZXN0RmFpbCgiQ291bGQgbm90IGxvZyBpbnRvIGd1ZXN0ICVzIiAlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsdm1zW2ldLm5hbWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg IHRtcCA9IG9wZW4ocGFyYW1zLmdldCgncGlkXycgKyB2bV9uYW1lKSwgJ3InKQorICAgICAgICAg ICAgcGFyYW1zWydwaWRfJyArIHZtX25hbWVdID0gaW50KHRtcC5yZWFkbGluZSgpKQorICAgICAg ICBleGNlcHQ6CisgICAgICAgICAgICByYWlzZSBlcnJvci5UZXN0RmFpbCgiQ291bGQgbm90IGdl dCBQSUQgb2YgJXMiICUgKHZtX25hbWUpKQorCisgICAgIyBMZXQgZ3Vlc3RzIHJlc3QgYSBsaXR0 bGUgYml0IDotKQorICAgIHN0ID0gdm1zYyAqIDIgKiBwZXJmX3JhdGlvCisgICAgbG9nZ2luZy5k ZWJ1ZygiV2FpdGluZyAlZHMgYmVmb3JlIHByb2NlZWQiLCBzdCkKKyAgICB0aW1lLnNsZWVwKHZt c2MgKiAyICogcGVyZl9yYXRpbykKKyAgICBsb2dnaW5nLmRlYnVnKGt2bV90ZXN0X3V0aWxzLmdl dF9tZW1vcnlfaW5mbyhsdm1zKSkKKworICAgICMgQ29weSBhbGxvY2F0b3IucHkgaW50byBndWVz dHMKKyAgICBwd2QgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnQVVUT0RJUiddLCd0ZXN0cy9r dm0nKQorICAgIHZrc21kX3NyYyA9IG9zLnBhdGguam9pbihwd2QsICJzY3JpcHRzL2FsbG9jYXRv ci5weSIpCisgICAgZHN0X2RpciA9ICIvdG1wIgorICAgIGZvciB2bSBpbiBsdm1zOgorICAgICAg ICBpZiBub3Qgdm0uY29weV9maWxlc190byh2a3NtZF9zcmMsIGRzdF9kaXIpOgorICAgICAgICAg ICAgcmFpc2UgZXJyb3IuVGVzdEZhaWwoImNvcHlfZmlsZXNfdG8gZmFpbGVkICVzIiAlIHZtLm5h bWUpCisgICAgbG9nZ2luZy5pbmZvKCJQaGFzZSAwOiBQQVNTIikKKworICAgIGlmIHBhcmFtc1sn a3NtX21vZGUnXSA9PSAicGFyYWxsZWwiOgorICAgICAgICBsb2dnaW5nLmluZm8oIlN0YXJ0aW5n IEtTTSB0ZXN0IHBhcmFsbGVsIG1vZGUiKQorICAgICAgICBzcGxpdF9wYXJhbGxlbCgpCisgICAg ICAgIGxvZ2dpbmcuaW5mbygiS1NNIHRlc3QgcGFyYWxsZWwgbW9kZTogUEFTUyIpCisgICAgZWxp ZiBwYXJhbXNbJ2tzbV9tb2RlJ10gPT0gInNlcmlhbCI6CisgICAgICAgIGxvZ2dpbmcuaW5mbygi U3RhcnRpbmcgS1NNIHRlc3Qgc2VyaWFsIG1vZGUiKQorICAgICAgICBpbml0aWFsaXplX2d1ZXN0 cygpCisgICAgICAgIHNlcGFyYXRlX2ZpcnN0X2d1ZXN0KCkKKyAgICAgICAgc3BsaXRfZ3Vlc3Qo KQorICAgICAgICBsb2dnaW5nLmluZm8oIktTTSB0ZXN0IHNlcmlhbCBtb2RlOiBQQVNTIikKZGlm ZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9rdm0vdGVzdHNfYmFzZS5jZmcuc2FtcGxlIGIvY2xpZW50 L3Rlc3RzL2t2bS90ZXN0c19iYXNlLmNmZy5zYW1wbGUKaW5kZXggZTlmZGQwNS4uNDUxNmVkMCAx MDA2NDQKLS0tIGEvY2xpZW50L3Rlc3RzL2t2bS90ZXN0c19iYXNlLmNmZy5zYW1wbGUKKysrIGIv Y2xpZW50L3Rlc3RzL2t2bS90ZXN0c19iYXNlLmNmZy5zYW1wbGUKQEAgLTI1NSw2ICsyNTUsMjgg QEAgdmFyaWFudHM6CiAgICAgICAgIHR5cGUgPSBwaHlzaWNhbF9yZXNvdXJjZXNfY2hlY2sKICAg ICAgICAgY2F0Y2hfdXVpZF9jbWQgPSBkbWlkZWNvZGUgfCBhd2sgLUY6ICcvVVVJRC8ge3ByaW50 ICQyfScKIAorICAgIC0ga3NtX292ZXJjb21taXQ6CisgICAgICAgICMgRG9uJ3QgcHJlcHJvY2Vz cyBhbnkgdm1zIGFzIHdlIG5lZWQgdG8gY2hhbmdlIGl0cyBwYXJhbXMKKyAgICAgICAgdm1zID0g JycKKyAgICAgICAgaW1hZ2Vfc25hcHNob3QgPSB5ZXMKKyAgICAgICAga2lsbF92bV9ncmFjZWZ1 bGx5ID0gbm8KKyAgICAgICAgdHlwZSA9IGtzbV9vdmVyY29tbWl0CisgICAgICAgICMgTWFrZSBo b3N0IHVzZSBzd2FwIChhIHZhbHVlIG9mICdubycgd2lsbCB0dXJuIG9mZiBob3N0IHN3YXApCisg ICAgICAgIGtzbV9zd2FwID0geWVzCisgICAgICAgIG5vIGh1Z2VwYWdlcworICAgICAgICAjIE92 ZXJjb21taXQgb2YgaG9zdCBtZW1tb3J5CisgICAgICAgIGtzbV9vdmVyY29tbWl0X3JhdGlvID0g MworICAgICAgICAjIE1heCBwYXJhbGVsIHJ1bnMgbWFjaGluZQorICAgICAgICBrc21fcGFyYWxs ZWxfcmF0aW8gPSA0CisgICAgICAgICMgSG9zdCBtZW1vcnkgcmVzZXJ2ZQorICAgICAgICBrc21f aG9zdF9yZXNlcnZlID0gNTEyCisgICAgICAgIGtzbV9ndWVzdF9yZXNlcnZlID0gMTAyNAorICAg ICAgICB2YXJpYW50czoKKyAgICAgICAgICAgIC0ga3NtX3NlcmlhbAorICAgICAgICAgICAgICAg IGtzbV9tb2RlID0gInNlcmlhbCIKKyAgICAgICAgICAgIC0ga3NtX3BhcmFsbGVsCisgICAgICAg ICAgICAgICAga3NtX21vZGUgPSAicGFyYWxsZWwiCisKICAgICAjIHN5c3RlbV9wb3dlcmRvd24s IHN5c3RlbV9yZXNldCBhbmQgc2h1dGRvd24gKm11c3QqIGJlIHRoZSBsYXN0IG9uZXMKICAgICAj IGRlZmluZWQgKGluIHRoaXMgb3JkZXIpLCBzaW5jZSB0aGUgZWZmZWN0IG9mIHN1Y2ggdGVzdHMg Y2FuIGxlYXZlCiAgICAgIyB0aGUgVk0gb24gYSBiYWQgc3RhdGUuCkBAIC0yNzgsNiArMzAwLDcg QEAgdmFyaWFudHM6CiAgICAgICAgIGtpbGxfdm1fZ3JhY2VmdWxseSA9IG5vCiAgICAgIyBEbyBu b3QgZGVmaW5lIHRlc3QgdmFyaWFudHMgYmVsb3cgc2h1dGRvd24KIAorCiAjIE5JQ3MKIHZhcmlh bnRzOgogICAgIC0gQHJ0bDgxMzk6Ci0tIAoxLjYuNi4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpBdXRvdGVzdCBtYWlsaW5nIGxpc3QKQXV0b3Rlc3RA dGVzdC5rZXJuZWwub3JnCmh0dHA6Ly90ZXN0Lmtlcm5lbC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xp c3RpbmZvL2F1dG90ZXN0Cg==