Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bsUqT-0001V9-Pq for pgadmin-hackers@arkaria.postgresql.org; Fri, 07 Oct 2016 13:05:50 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bsUqT-0006ks-2h for pgadmin-hackers@arkaria.postgresql.org; Fri, 07 Oct 2016 13:05:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bsUUq-0008QM-Is for pgadmin-hackers@postgresql.org; Fri, 07 Oct 2016 12:43:28 +0000 Received: from mail-qk0-x22d.google.com ([2607:f8b0:400d:c09::22d]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1bsUUl-0006e0-6t for pgadmin-hackers@postgresql.org; Fri, 07 Oct 2016 12:43:27 +0000 Received: by mail-qk0-x22d.google.com with SMTP id n189so41812846qke.0 for ; Fri, 07 Oct 2016 05:43:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to:cc; bh=hvEiONg0n1VkSH3rc+urghhUWiRuacdmhApCiHedbcI=; b=NJAE2Pxu08Vx5RAqdFXFLAILSODEUCf+GiPJSSJUB4m6UR/jRaKNy065XLY1lbCLNq 6torhmM7SYzU1AVC1wskibUD/AACCW6OtOUy4jGPCQmJMqGl91oC0rPXgNa9/NqAtOQN 1vGHPqX8HjXxo8+9ob05sLMyWKCCamnVJTcN4vJuQGIr4g9oO76R1ARXmWcPtti0vDLy GsQ7trLkWgLdoQybWizXh103PI4Sj61MHafWjcnha48Chxf3tSI8K/6WQ90sdIdfFNOT UwwhmD0tqartgh2juyVGvp8WrRZn8dC3ImiIcFqzuZLxZRbOubpGNCJZG9wJeL/+9U+R NLCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=hvEiONg0n1VkSH3rc+urghhUWiRuacdmhApCiHedbcI=; b=IYkP7z97k+u6GhDwvVQIh2Ot41eKCqeVxHKUifCxwMeO57IG3kCT4VW9genSBLkQxR LpVlkTiwelfUwRvWFqg8L9S3HR2KlFmT4uMqqIuSJjU8lTqhL9ohEwlwwehLjnoXfT7a dPr8hfFAEVL5b7S9h+ewIEjHxn9UdihUTu5f/758NEQMGDnlU45+t6Ru9ZQzeW5TXBVb c0jNzD3mMhZdb6Zl4K+EvBK6CVHjPaHvjDZY1KH9SS0cMR+ICUUHWn1c29lx19ub3WpB YUcuYYrQ7+/Rjb1cDcQSmJq/Ivmv6eavgXb054+o4CVXmY7k8s1Hh7ng+FTNtxyusKPc jvZA== X-Gm-Message-State: AA6/9RmUkIZ2aXAIZlq6ByG+/R7KfWX2aHAOWDdbWvU2lQMPc+xp3qYfcFS3YVKpNZG8DVonx1zbHd4q6Yhhg+TJ X-Received: by 10.55.175.1 with SMTP id y1mr18702897qke.150.1475844200373; Fri, 07 Oct 2016 05:43:20 -0700 (PDT) MIME-Version: 1.0 Received: by 10.200.41.68 with HTTP; Fri, 7 Oct 2016 05:43:19 -0700 (PDT) From: Navnath Gadakh Date: Fri, 7 Oct 2016 18:13:19 +0530 Message-ID: Subject: pgAdminIV : Regression tests code cleanup To: Dave Page Cc: pgadmin-hackers , Kanchan Mohitey Content-Type: multipart/mixed; boundary=94eb2c06fb044f26bd053e45c1b3 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --94eb2c06fb044f26bd053e45c1b3 Content-Type: multipart/alternative; boundary=94eb2c06fb044f26b8053e45c1b1 --94eb2c06fb044f26b8053e45c1b1 Content-Type: text/plain; charset=UTF-8 Hi Dave, Please find the patch of test framework, which contains 1. Code changes (due to drop objects functionality). 2. Quoting for database names in drop databases. 3. Code changes for import errors for pickle_path and advanced_config variables. *Run test suite by this command:* python runtests.py Thanks. -- Regards, Navnath Gadakh EnterpriseDB Corporation The Enterprise PostgreSQL Company --94eb2c06fb044f26b8053e45c1b1 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Dave,
=C2=A0 =C2=A0 Please find the patch of test f= ramework, which contains
1. Code changes (due to=C2= =A0drop objects functionality).
2. Quoti= ng for database names in drop databases.
3. Code changes for impo= rt errors=C2=A0for pickle_path and advanced_config variables.
Run test suite=C2=A0by this command= :
=C2=A0=C2=A0python runt= ests.py

Thanks.
--
Regards,
Navnath Gadakh

EnterpriseDB Corporation
The Enterpr= ise PostgreSQL Company


--94eb2c06fb044f26b8053e45c1b1-- --94eb2c06fb044f26bd053e45c1b3 Content-Type: application/octet-stream; name="regression_code_cleanup.patch" Content-Disposition: attachment; filename="regression_code_cleanup.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_itzrgwg40 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZXN0cy9fX2luaXRfXy5weSBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9jYXN0cy90ZXN0cy9fX2luaXRfXy5weQppbmRleCBiZmIwMjYz Li5iODZiMjA4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVzdHMvX19p bml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3Rlc3RzL19faW5pdF9fLnB5 CkBAIC0xMyw0ICsxMyw0IEBAIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBp bXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKIGNsYXNzIENhc3RUZXN0R2VuZXJh dG9yKEJhc2VUZXN0R2VuZXJhdG9yKToKIAogICAgIGRlZiBydW5UZXN0KHNl bGYpOgotICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gW10KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZXN0cy90ZXN0X2Nhc3RfYWRkLnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL2Nhc3RzL3Rlc3RzL3Rlc3RfY2FzdF9hZGQucHkKaW5kZXgg MGRmZjMzMC4uZWM3OGMxNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3Rl c3RzL3Rlc3RfY2FzdF9hZGQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3Rlc3Rz L3Rlc3RfY2FzdF9hZGQucHkKQEAgLTYsMTMgKzYsMTUgQEAKICMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworZnJvbSBfX2Z1dHVy ZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgoraW1wb3J0IGpzb24KIAogZnJv bSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRv cgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0CiBm cm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKIGZy b20gLiBpbXBvcnQgdXRpbHMgYXMgY2FzdF91dGlscwogZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0 cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIGRhdGFiYXNlX3V0aWxzCi1mcm9t IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMg aW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwogCiAKIGNsYXNzIENhc3Rz QWRkVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgpAQCAtMjEsNDUgKzIz LDM1IEBAIGNsYXNzIENhc3RzQWRkVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0 b3IpOgogICAgICAgICAoJ0NoZWNrIENhc3QgTm9kZScsIGRpY3QodXJsPScv YnJvd3Nlci9jYXN0L29iai8nKSkKICAgICBdCiAKLSAgICBAY2xhc3NtZXRo b2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAiIiIKLSAg ICAgICAgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHRh c2tzOgotICAgICAgICAgICAgICAxLiBBZGQgYW5kIGNvbm5lY3QgdG8gdGhl IHRlc3Qgc2VydmVyKHMpCi0gICAgICAgICAgICAgIDIuIEFkZCBkYXRhYmFz ZShzKSBjb25uZWN0ZWQgdG8gc2VydmVyKHMpCi0KLSAgICAgICAgOnJldHVy bjogTm9uZQotICAgICAgICAiIiIKLQotICAgICAgICAjIEFkZCB0aGUgc2Vy dmVyCi0gICAgICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKGNscy50ZXN0 ZXIpCi0KLSAgICAgICAgIyBDb25uZWN0IHRvIHNlcnZlcgotICAgICAgICBj bHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAs IGNscy5zZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgc2VydmVyX3V0aWxz LmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgaWYgbGVu KGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKLSAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0 byBhZGQgdGhlIGRhdGFiYXNlISEhIikKLQotICAgICAgICAjIEFkZCBkYXRh YmFzZQotICAgICAgICBkYXRhYmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xz LnRlc3RlciwgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMp Ci0KICAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgIiIiIFRoaXMg ZnVuY3Rpb24gd2lsbCBhZGQgY2FzdCB1bmRlciBkYXRhYmFzZSBub2RlLiAi IiIKLQotICAgICAgICBjYXN0X3V0aWxzLmFkZF9jYXN0KHNlbGYudGVzdGVy KQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3Mo Y2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gZGVs ZXRlcyB0aGUgYWRkZWQgY2FzdCwgZGF0YWJhc2UsIHNlcnZlciBhbmQgdGhl Ci0gICAgICAgICdwYXJlbnRfaWQucGtsJyBmaWxlIHdoaWNoIGlzIGNyZWF0 ZWQgaW4gc2V0VXBDbGFzcy4KLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0g ICAgICAgICIiIgotCi0gICAgICAgIGNhc3RfdXRpbHMuZGVsZXRlX2Nhc3Qo Y2xzLnRlc3RlcikKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGVsZXRlX2Rh dGFiYXNlKGNscy50ZXN0ZXIpCi0gICAgICAgIHNlcnZlcl91dGlscy5kZWxl dGVfc2VydmVyKGNscy50ZXN0ZXIpCi0gICAgICAgIHV0aWxzLmRlbGV0ZV9w YXJlbnRfaWRfZmlsZSgpCisgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdp bGwgYWRkIGNhc3QgdW5kZXIgdGVzdCBkYXRhYmFzZS4gIiIiCisgICAgICAg IHNlbGYuc2VydmVyX2RhdGEgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFz ZSJdWy0xXQorICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHNlbGYuc2VydmVy X2RhdGFbInNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYuZGJfaWQgPSBzZWxm LnNlcnZlcl9kYXRhWydkYl9pZCddCisgICAgICAgIGRiX2NvbiA9IGRhdGFi YXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlscy5T RVJWRVJfR1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5k Yl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2NvblsiaW5mbyJdID09ICJEYXRh YmFzZSBjb25uZWN0ZWQuIjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv bigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UuIikKKworICAgICAg ICBzZWxmLmRhdGEgPSBjYXN0X3V0aWxzLmdldF9jYXN0X2RhdGEoKQorICAg ICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QoCisgICAgICAgICAg ICBzZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsK KyAgICAgICAgICAgIHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBzdHIo CisgICAgICAgICAgICAgICAgc2VsZi5kYl9pZCkgKyAnLycsCisgICAgICAg ICAgICBkYXRhPWpzb24uZHVtcHMoc2VsZi5kYXRhKSwKKyAgICAgICAgICAg IGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKworICAgIGRl ZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBk aXNjb25uZWN0IHRoZSB0ZXN0IGRhdGFiYXNlIGFuZCBkcm9wIGFkZGVkIGNh c3QuIiIiCisgICAgICAgIGNvbm5lY3Rpb24gPSB1dGlscy5nZXRfZGJfY29u bmVjdGlvbihzZWxmLnNlcnZlcl9kYXRhWydkYl9uYW1lJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNl cnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCdd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10p CisgICAgICAgIGNhc3RfdXRpbHMuZHJvcF9jYXN0KGNvbm5lY3Rpb24sIHNl bGYuZGF0YVsic3JjdHlwIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuZGF0YVsidHJndHlwIl0pCisgICAgICAgIGRhdGFiYXNlX3V0 aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5kYl9pZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZXN0cy90 ZXN0X2Nhc3RfZGVsZXRlLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3Rlc3RzL3Rlc3Rf Y2FzdF9kZWxldGUucHkKaW5kZXggZjNhOTJjOS4uMjdmMTY5ZSAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2Nhc3RzL3Rlc3RzL3Rlc3RfY2FzdF9kZWxldGUucHkK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2Nhc3RzL3Rlc3RzL3Rlc3RfY2FzdF9kZWxldGUucHkK QEAgLTEsMTAyICsxLDY2IEBACi0jICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LSMgIwotIyAjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLSMgIwot IyAjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KLSMgIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk IHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKLSMgIwotIyAjICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotCisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj CisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJp Z2h0IChDKSAyMDEzIC0gMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQ b3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiAKIGZy b20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0 b3IKIGZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGls cwotZnJvbSByZWdyZXNzaW9uLnRlc3RfdXRpbHMgaW1wb3J0IGdldF9pZHMK K2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAogZnJv bSAuIGltcG9ydCB1dGlscyBhcyBjYXN0X3V0aWxzCi1mcm9tIHBnYWRtaW4u YnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0 aWxzIGFzIHNlcnZlcl91dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2Vy dmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgXAog ICAgIHV0aWxzIGFzIGRhdGFiYXNlX3V0aWxzCi1mcm9tIHJlZ3Jlc3Npb24u dGVzdF9zZXR1cCBpbXBvcnQgYWR2YW5jZWRfY29uZmlnX2RhdGEKLWltcG9y dCBqc29uCiAKIAogY2xhc3MgQ2FzdHNEZWxldGVUZXN0Q2FzZShCYXNlVGVz dEdlbmVyYXRvcik6Ci0gICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCBmZXRjaCB0 aGUgY2FzdCBub2RlIGFkZGVkIHVuZGVyIGRhdGFiYXNlIG5vZGUuICIiIgot CisgICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCBkZWxldGUgdGhlIGNhc3Qgbm9k ZSBhZGRlZCB1bmRlciBkYXRhYmFzZSBub2RlLiAiIiIKICAgICBzY2VuYXJp b3MgPSBbCiAgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGNh c3Qgbm9kZS4KICAgICAgICAgKCdDaGVjayBDYXN0IE5vZGUnLCBkaWN0KHVy bD0nL2Jyb3dzZXIvY2FzdC9vYmovJykpCiAgICAgXQogCi0gICAgQGNsYXNz bWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIiIi Ci0gICAgICAgICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm0gdGhlIGZvbGxvd2lu ZyB0YXNrczoKLSAgICAgICAgICAgICAgMS4gQWRkIGFuZCBjb25uZWN0IHRv IHRoZSB0ZXN0IHNlcnZlcihzKQotICAgICAgICAgICAgICAyLiBBZGQgZGF0 YWJhc2UocykgY29ubmVjdGVkIHRvIHNlcnZlcihzKQotICAgICAgICAgICAg ICAzLiBBZGQgY2FzdChzKSB0byBkYXRhYmFzZXMKLQotICAgICAgICA6cmV0 dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgICMgQWRkIHRoZSBz ZXJ2ZXIKLSAgICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2ZXIoY2xzLnRl c3RlcikKLQotICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVyCi0gICAgICAg IGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZlcl9ncm91 cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0gICAgICAgICAgICBzZXJ2ZXJfdXRp bHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKLQotICAgICAgICBpZiBs ZW4oY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAgICAg ICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVjdGVk IHRvIGFkZCB0aGUgZGF0YWJhc2UhISEiKQotCi0gICAgICAgICMgQWRkIGRh dGFiYXNlCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmFkZF9kYXRhYmFzZShj bHMudGVzdGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2VydmVyX2lk cykKLQotICAgICAgICAjIEFkZCBjYXN0KHMpIHRvIGRhdGFiYXNlKHMpCi0g ICAgICAgIGNhc3RfdXRpbHMuYWRkX2Nhc3QoY2xzLnRlc3RlcikKKyAgICBk ZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGVmYXVsdF9kYiA9IHNl bGYuc2VydmVyWyJkYiJdCisgICAgICAgIHNlbGYuZGF0YWJhc2VfaW5mbyA9 IHBhcmVudF9ub2RlX2RpY3RbJ2RhdGFiYXNlJ11bLTFdCisgICAgICAgIHNl bGYuZGJfbmFtZSA9IHNlbGYuZGF0YWJhc2VfaW5mb1snZGJfbmFtZSddCisg ICAgICAgIHNlbGYuc2VydmVyWyJkYiJdID0gc2VsZi5kYl9uYW1lCisgICAg ICAgIHNlbGYuc291cmNlX3R5cGUgPSAnY2lyY2xlJworICAgICAgICBzZWxm LnRhcmdldF90eXBlID0gJ2xpbmUnCisgICAgICAgIHNlbGYuY2FzdF9pZCA9 IGNhc3RfdXRpbHMuY3JlYXRlX2Nhc3Qoc2VsZi5zZXJ2ZXIsIHNlbGYuc291 cmNlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi50YXJnZXRfdHlwZSkKIAogICAgIGRlZiBydW5U ZXN0KHNlbGYpOgotICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGRl bGV0ZSBhZGRlZCBjYXN0KHMpLiIiIgotCi0gICAgICAgIGFsbF9pZCA9IGdl dF9pZHMoKQotICAgICAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQot ICAgICAgICBkYl9pZHNfZGljdCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAgICAg ICAgY2FzdF9pZHNfZGljdCA9IGFsbF9pZFsiY2lkIl1bMF0KLQotICAgICAg ICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAgICAgICBk Yl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAg ICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMudmVyaWZ5X2RhdGFiYXNlKHNl bGYudGVzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZXJ2ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGJfaWQpCi0gICAgICAgICAgICBpZiBs ZW4oZGJfY29uKSA9PSAwOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbigiTm8gZGF0YWJhc2UocykgdG8gZGVsZXRlIGZvciBzZXJ2ZXIgaWQg JXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgc2VydmVy X2lkKQotICAgICAgICAgICAgY2FzdF9pZCA9IGNhc3RfaWRzX2RpY3Rbc2Vy dmVyX2lkXQotICAgICAgICAgICAgY2FzdF9nZXRfZGF0YSA9IGNhc3RfdXRp bHMudmVyaWZ5X2Nhc3Qoc2VsZi50ZXN0ZXIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlscy5TRVJW RVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYl9pZCwgY2Fz dF9pZCkKLQotICAgICAgICAgICAgaWYgY2FzdF9nZXRfZGF0YS5zdGF0dXNf Y29kZSA9PSAyMDA6Ci0KLSAgICAgICAgICAgICAgICBkZWxldGVfcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5kZWxldGUoCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJf R1JPVVApICsgJy8nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsgc3RyKGRiX2lkKSArCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLycgKyBzdHIo Y2FzdF9pZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCi0gICAgICAgICAgICAgICAgcmVz cG9uc2VfZGF0YSA9IGpzb24ubG9hZHMoZGVsZXRlX3Jlc3BvbnNlLmRhdGEu ZGVjb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0 VHJ1ZShyZXNwb25zZV9kYXRhWydzdWNjZXNzJ10sIDEpCi0KLSAgICBAY2xh c3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAg ICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxldGUgdGhlIGFkZGVk IGNhc3QsIGRhdGFiYXNlLCBzZXJ2ZXIgYW5kIHRoZQotICAgICAgICAncGFy ZW50X2lkLnBrbCcgZmlsZSB3aGljaCBpcyBjcmVhdGVkIGluIHNldFVwQ2xh c3MuCi0KLSAgICAgICAgOnJldHVybjogTm9uZQotICAgICAgICAiIiIKLQot ICAgICAgICBkYXRhYmFzZV91dGlscy5kZWxldGVfZGF0YWJhc2UoY2xzLnRl c3RlcikKLSAgICAgICAgc2VydmVyX3V0aWxzLmRlbGV0ZV9zZXJ2ZXIoY2xz LnRlc3RlcikKLSAgICAgICAgdXRpbHMuZGVsZXRlX3BhcmVudF9pZF9maWxl KCkKKyAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBkZWxldGUgYWRk ZWQgY2FzdC4iIiIKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBzZWxmLmRh dGFiYXNlX2luZm9bInNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYuZGJfaWQg PSBzZWxmLmRhdGFiYXNlX2luZm9bJ2RiX2lkJ10KKyAgICAgICAgZGJfY29u ID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLmRiX2lkKQorICAgICAgICBpZiBub3QgZGJfY29uWyJpbmZvIl0g PT0gIkRhdGFiYXNlIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgcmFpc2Ug RXhjZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZS4iKQor ICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24o c2VsZi5zZXJ2ZXJbJ2RiJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2hv c3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10pCisgICAgICAgIHJlc3BvbnNl ID0gY2FzdF91dGlscy52ZXJpZnlfY2FzdChjb25uZWN0aW9uLCBzZWxmLnNv dXJjZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi50YXJnZXRfdHlwZSkKKyAgICAgICAgaWYgbGVuKHJl c3BvbnNlKSA9PSAwOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJD b3VsZCBub3QgZmluZCBjYXN0LiIpCisgICAgICAgIGRlbGV0ZV9yZXNwb25z ZSA9IHNlbGYudGVzdGVyLmRlbGV0ZSgKKyAgICAgICAgICAgIHNlbGYudXJs ICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKworICAgICAgICAg ICAgc3RyKHNlbGYuc2VydmVyX2lkKSArICcvJyArIHN0cihzZWxmLmRiX2lk KSArCisgICAgICAgICAgICAnLycgKyBzdHIoc2VsZi5jYXN0X2lkKSwKKyAg ICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKKyAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMoZGVsZXRlX3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAy MDApCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIlRo aXMgZnVuY3Rpb24gd2lsbCBkaXNjb25uZWN0IHRlc3QgZGF0YWJhc2UuIiIi CisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uo c2VsZiwgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9pZCkKKyAgICAgICAgc2Vs Zi5zZXJ2ZXJbJ2RiJ10gPSBzZWxmLmRlZmF1bHRfZGIKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9jYXN0cy90ZXN0cy90ZXN0X2Nhc3RfZ2V0LnB5IGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L2Nhc3RzL3Rlc3RzL3Rlc3RfY2FzdF9nZXQucHkKaW5kZXggMjA3MDJlMS4u OWY0MzQ5NCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3Rlc3RzL3Rlc3Rf Y2FzdF9nZXQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3Rlc3RzL3Rlc3RfY2Fz dF9nZXQucHkKQEAgLTEsODcgKzEsNjcgQEAKLSMgIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwogIyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCiAjCiAjIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KICMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCiAjCi0jICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1 bmN0aW9uCiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VU ZXN0R2VuZXJhdG9yCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRp bHMgYXMgdXRpbHMKLWZyb20gcmVncmVzc2lvbi50ZXN0X3V0aWxzIGltcG9y dCBnZXRfaWRzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2Rl X2RpY3QKIGZyb20gLiBpbXBvcnQgdXRpbHMgYXMgY2FzdF91dGlscwotZnJv bSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3Rz IGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKIGZyb20gcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMg aW1wb3J0IFwKICAgICB1dGlscyBhcyBkYXRhYmFzZV91dGlscworaW1wb3J0 IG9zCitpbXBvcnQgc3lzCiAKIAogY2xhc3MgQ2FzdHNHZXRUZXN0Q2FzZShC YXNlVGVzdEdlbmVyYXRvcik6CiAgICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCBm ZXRjaCB0aGUgY2FzdCBub2RlIGFkZGVkIHVuZGVyIGRhdGFiYXNlIG5vZGUu ICIiIgotCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIEZldGNoaW5n IGRlZmF1bHQgVVJMIGZvciBjYXN0IG5vZGUuCiAgICAgICAgICgnQ2hlY2sg Q2FzdCBOb2RlJywgZGljdCh1cmw9Jy9icm93c2VyL2Nhc3Qvb2JqLycpKQog ICAgIF0KIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNz KGNscyk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIHVz ZWQgdG8gYWRkIHRoZSBzZXZlciwgZGF0YWJhc2UsIGFuZCBjYXN0Ci0KLSAg ICAgICAgOnJldHVybjogTm9uZQotICAgICAgICAiIiIKLQotICAgICAgICAj IEFkZCB0aGUgc2VydmVyCi0gICAgICAgIHNlcnZlcl91dGlscy5hZGRfc2Vy dmVyKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgIyBDb25uZWN0IHRvIHNlcnZl cgotICAgICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5z ZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAg c2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAg ICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0g MDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMp IGNvbm5lY3RlZCB0byBhZGQgdGhlIGRhdGFiYXNlISEhIikKLQotICAgICAg ICAjIEFkZCBkYXRhYmFzZQotICAgICAgICBkYXRhYmFzZV91dGlscy5hZGRf ZGF0YWJhc2UoY2xzLnRlc3RlciwgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3Bv bnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xz LnNlcnZlcl9pZHMpCi0KLSAgICAgICAgY2FzdF91dGlscy5hZGRfY2FzdChj bHMudGVzdGVyKQorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIiIi IFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgY2FzdC4iIiIKKyAgICAgICAg c2VsZi5kZWZhdWx0X2RiID0gc2VsZi5zZXJ2ZXJbImRiIl0KKyAgICAgICAg c2VsZi5kYXRhYmFzZV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsnZGF0YWJh c2UnXVstMV0KKyAgICAgICAgc2VsZi5kYl9uYW1lID0gc2VsZi5kYXRhYmFz ZV9pbmZvWydkYl9uYW1lJ10KKyAgICAgICAgc2VsZi5zZXJ2ZXJbImRiIl0g PSBzZWxmLmRiX25hbWUKKyAgICAgICAgc2VsZi5zb3VyY2VfdHlwZSA9ICdt b25leScKKyAgICAgICAgc2VsZi50YXJnZXRfdHlwZSA9ICdiaWdpbnQnCisg ICAgICAgIHNlbGYuY2FzdF9pZCA9IGNhc3RfdXRpbHMuY3JlYXRlX2Nhc3Qo c2VsZi5zZXJ2ZXIsIHNlbGYuc291cmNlX3R5cGUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXJnZXRf dHlwZSkKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgotICAgICAgICAiIiIg VGhpcyBmdW5jdGlvbiB3aWxsIGdldCBhZGRlZCBjYXN0LiIiIgotCi0gICAg ICAgIGFsbF9pZCA9IGdldF9pZHMoKQotICAgICAgICBzZXJ2ZXJfaWRzID0g YWxsX2lkWyJzaWQiXQotICAgICAgICBkYl9pZHNfZGljdCA9IGFsbF9pZFsi ZGlkIl1bMF0KLSAgICAgICAgY2FzdF9pZHNfZGljdCA9IGFsbF9pZFsiY2lk Il1bMF0KLQotICAgICAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6 Ci0gICAgICAgICAgICBkYl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJf aWQpXQotICAgICAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMudmVy aWZ5X2RhdGFiYXNlKHNlbGYudGVzdGVyLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLlNFUlZF Ul9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJfaWQpCi0g ICAgICAgICAgICBpZiBsZW4oZGJfY29uKSA9PSAwOgotICAgICAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gZGF0YWJhc2UocykgdG8gZGVsZXRl IGZvciBzZXJ2ZXIgaWQgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICUgc2VydmVyX2lkKQotICAgICAgICAgICAgY2FzdF9pZCA9IGNh c3RfaWRzX2RpY3Rbc2VydmVyX2lkXQotICAgICAgICAgICAgY2FzdF9nZXRf ZGF0YSA9IGNhc3RfdXRpbHMudmVyaWZ5X2Nhc3Qoc2VsZi50ZXN0ZXIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYl9pZCwgY2FzdF9pZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWxzKGNhc3RfZ2V0X2RhdGEuc3RhdHVzX2NvZGUsIDIwMCkKLQotICAg IEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0g ICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhl IGFkZGVkIGNhc3QsIGRhdGFiYXNlLCBzZXJ2ZXIgYW5kIHRoZQotICAgICAg ICAncGFyZW50X2lkLnBrbCcgZmlsZSB3aGljaCBpcyBjcmVhdGVkIGluIHNl dHVwKCkgZnVuY3Rpb24uCi0KLSAgICAgICAgOnJldHVybjogTm9uZQotICAg ICAgICAiIiIKLQotICAgICAgICBjYXN0X3V0aWxzLmRlbGV0ZV9jYXN0KGNs cy50ZXN0ZXIpCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmRlbGV0ZV9kYXRh YmFzZShjbHMudGVzdGVyKQotICAgICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRl X3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICB1dGlscy5kZWxldGVfcGFy ZW50X2lkX2ZpbGUoKQorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxs IGZldGNoIGFkZGVkIGNhc3QuIiIiCisgICAgICAgIHNlbGYuc2VydmVyX2lk ID0gc2VsZi5kYXRhYmFzZV9pbmZvWyJzZXJ2ZXJfaWQiXQorICAgICAgICBz ZWxmLmRiX2lkID0gc2VsZi5kYXRhYmFzZV9pbmZvWydkYl9pZCddCisgICAg ICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uo c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5kYl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2Nv blsiaW5mbyJdID09ICJEYXRhYmFzZSBjb25uZWN0ZWQuIjoKKyAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0 YWJhc2UuIikKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5nZXQo CisgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JP VVApICsgJy8nICsgc3RyKAorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVy X2lkKSArICcvJyArCisgICAgICAgICAgICBzdHIoc2VsZi5kYl9pZCkgKyAn LycgKyBzdHIoc2VsZi5jYXN0X2lkKSwKKyAgICAgICAgICAgIGNvbnRlbnRf dHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo cmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKworICAgIGRlZiB0ZWFyRG93 bihzZWxmKToKKyAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBkaXNjb25uZWN0 IHRoZSB0ZXN0IGRhdGFiYXNlIGFuZCBkcm9wIGFkZGVkIGNhc3QuIiIiCisg ICAgICAgIGNvbm5lY3Rpb24gPSB1dGlscy5nZXRfZGJfY29ubmVjdGlvbihz ZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2VybmFtZSddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9z dCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSkKKyAgICAgICAgY2FzdF91dGls cy5kcm9wX2Nhc3QoY29ubmVjdGlvbiwgc2VsZi5zb3VyY2VfdHlwZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXJnZXRfdHlwZSkK KyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShz ZWxmLCBzZWxmLnNlcnZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLmRiX2lkKQorICAgICAgICBzZWxm LnNlcnZlclsnZGInXSA9IHNlbGYuZGVmYXVsdF9kYgpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2Nhc3RzL3Rlc3RzL3Rlc3RfY2FzdF9wdXQucHkgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv Y2FzdHMvdGVzdHMvdGVzdF9jYXN0X3B1dC5weQppbmRleCBlYTY3Yzc3Li40 MDc3ZjNjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVzdHMvdGVzdF9j YXN0X3B1dC5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVzdHMvdGVzdF9jYXN0 X3B1dC5weQpAQCAtNiwxMDIgKzYsNzYgQEAKICMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAjCiAj ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworZnJvbSBfX2Z1dHVyZV9fIGltcG9y dCBwcmludF9mdW5jdGlvbgoraW1wb3J0IGpzb24KIAogZnJvbSBwZ2FkbWlu LnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSBy ZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHJl Z3Jlc3Npb24udGVzdF91dGlscyBpbXBvcnQgZ2V0X2lkcworZnJvbSByZWdy ZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0CiBmcm9tIC4gaW1wb3J0 IHV0aWxzIGFzIGNhc3RfdXRpbHMKLWZyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgc2Vy dmVyX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCBcCiAgICAgdXRpbHMg YXMgZGF0YWJhc2VfdXRpbHMKLWZyb20gcmVncmVzc2lvbi50ZXN0X3NldHVw IGltcG9ydCBhZHZhbmNlZF9jb25maWdfZGF0YQotaW1wb3J0IGpzb24KIAog CiBjbGFzcyBDYXN0c1B1dFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToK ICAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIGZldGNoIHRoZSBjYXN0IG5vZGUg YWRkZWQgdW5kZXIgZGF0YWJhc2Ugbm9kZS4gIiIiCi0KICAgICBzY2VuYXJp b3MgPSBbCiAgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGNh c3Qgbm9kZS4KICAgICAgICAgKCdDaGVjayBDYXN0IE5vZGUnLCBkaWN0KHVy bD0nL2Jyb3dzZXIvY2FzdC9vYmovJykpCiAgICAgXQogCi0gICAgQGNsYXNz bWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIiIi Ci0gICAgICAgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybSB0aGUgZm9sbG93aW5n IHRhc2tzOgotICAgICAgICAgICAgICAxLiBBZGQgYW5kIGNvbm5lY3QgdG8g dGhlIHRlc3Qgc2VydmVyKHMpCi0gICAgICAgICAgICAgIDIuIEFkZCBkYXRh YmFzZShzKSBjb25uZWN0ZWQgdG8gc2VydmVyKHMpCi0gICAgICAgICAgICAg IDMuIEFkZCBjYXN0KHMpIHRvIGRhdGFiYXNlcwotCi0gICAgICAgIDpyZXR1 cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBBZGQgdGhlIHNl cnZlcgotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVz dGVyKQotICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVyCi0gICAgICAgIGNs cy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZlcl9ncm91cCwg Y2xzLnNlcnZlcl9pZHMgPSBcCi0gICAgICAgICAgICBzZXJ2ZXJfdXRpbHMu Y29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKLQotICAgICAgICBpZiBsZW4o Y2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAgICAgICAg ICAgcmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVjdGVkIHRv IGFkZCB0aGUgZGF0YWJhc2UhISEiKQotCi0gICAgICAgICMgQWRkIGRhdGFi YXNlCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmFkZF9kYXRhYmFzZShjbHMu dGVzdGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2VydmVyX2lkcykK LQotICAgICAgICBjYXN0X3V0aWxzLmFkZF9jYXN0KGNscy50ZXN0ZXIpCisg ICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlv biB3aWxsIGNyZWF0ZSBjYXN0LiIiIgorICAgICAgICBzZWxmLmRlZmF1bHRf ZGIgPSBzZWxmLnNlcnZlclsiZGIiXQorICAgICAgICBzZWxmLmRhdGFiYXNl X2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WydkYXRhYmFzZSddWy0xXQorICAg ICAgICBzZWxmLmRiX25hbWUgPSBzZWxmLmRhdGFiYXNlX2luZm9bJ2RiX25h bWUnXQorICAgICAgICBzZWxmLnNlcnZlclsiZGIiXSA9IHNlbGYuZGJfbmFt ZQorICAgICAgICBzZWxmLnNvdXJjZV90eXBlID0gJ2NoYXJhY3RlcicKKyAg ICAgICAgc2VsZi50YXJnZXRfdHlwZSA9ICdjaWRyJworICAgICAgICBzZWxm LmNhc3RfaWQgPSBjYXN0X3V0aWxzLmNyZWF0ZV9jYXN0KHNlbGYuc2VydmVy LCBzZWxmLnNvdXJjZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0X3R5cGUpCiAKICAg ICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgIiIiIFRoaXMgZnVuY3Rp b24gd2lsbCB1cGRhdGUgYWRkZWQgY2FzdC4iIiIKLQotICAgICAgICBhbGxf aWQgPSBnZXRfaWRzKCkKLSAgICAgICAgc2VydmVyX2lkcyA9IGFsbF9pZFsi c2lkIl0KLSAgICAgICAgZGJfaWRzX2RpY3QgPSBhbGxfaWRbImRpZCJdWzBd Ci0gICAgICAgIGNhc3RfaWRzX2RpY3QgPSBhbGxfaWRbImNpZCJdWzBdCi0K LSAgICAgICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2ZXJfaWRzOgotICAgICAg ICAgICAgZGJfaWQgPSBkYl9pZHNfZGljdFtpbnQoc2VydmVyX2lkKV0KLSAg ICAgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLnZlcmlmeV9kYXRh YmFzZShzZWxmLnRlc3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VydmVyX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiX2lkKQotICAgICAgICAg ICAgaWYgbGVuKGRiX2NvbikgPT0gMDoKLSAgICAgICAgICAgICAgICByYWlz ZSBFeGNlcHRpb24oIk5vIGRhdGFiYXNlKHMpIHRvIGRlbGV0ZSBmb3Igc2Vy dmVyIGlkICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAl IHNlcnZlcl9pZCkKLSAgICAgICAgICAgIGNhc3RfaWQgPSBjYXN0X2lkc19k aWN0W3NlcnZlcl9pZF0KLSAgICAgICAgICAgIGNhc3RfZ2V0X2RhdGEgPSBj YXN0X3V0aWxzLnZlcmlmeV9jYXN0KHNlbGYudGVzdGVyLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRp bHMuU0VSVkVSX0dST1VQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJf aWQsIGNhc3RfaWQpCi0KLSAgICAgICAgICAgIGlmIGNhc3RfZ2V0X2RhdGEu c3RhdHVzX2NvZGUgPT0gMjAwOgotCi0gICAgICAgICAgICAgICAgZGF0YSA9 IHsKLSAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogYWR2YW5j ZWRfY29uZmlnX2RhdGFbImNhc3RfdXBkYXRlX2RhdGEiXQotICAgICAgICAg ICAgICAgICAgICBbImNvbW1lbnQiXSwKLSAgICAgICAgICAgICAgICAgICAg ImlkIjogY2FzdF9pZAotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg ICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dCgKLSAgICAg ICAgICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dS T1VQKSArICcvJyArCi0gICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJf aWQpICsgJy8nICsgc3RyKAotICAgICAgICAgICAgICAgICAgICAgICAgZGJf aWQpICsKLSAgICAgICAgICAgICAgICAgICAgJy8nICsgc3RyKGNhc3RfaWQp LAotICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoZGF0YSks Ci0gICAgICAgICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkK LSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwdXRfcmVzcG9u c2Uuc3RhdHVzX2NvZGUsIDIwMCkKLQotICAgIEBjbGFzc21ldGhvZAotICAg IGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgICIiIgotICAgICAg ICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIGNhc3QsIGRhdGFi YXNlLCBzZXJ2ZXIgYW5kIHRoZQotICAgICAgICAncGFyZW50X2lkLnBrbCcg ZmlsZSB3aGljaCBpcyBjcmVhdGVkIGluIHNldFVwQ2xhc3MuCi0KLSAgICAg ICAgOnJldHVybjogTm9uZQotICAgICAgICAiIiIKLQotICAgICAgICBjYXN0 X3V0aWxzLmRlbGV0ZV9jYXN0KGNscy50ZXN0ZXIpCi0gICAgICAgIGRhdGFi YXNlX3V0aWxzLmRlbGV0ZV9kYXRhYmFzZShjbHMudGVzdGVyKQotICAgICAg ICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihjbHMudGVzdGVyKQotICAg ICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQorICAgICAgICBz ZWxmLnNlcnZlcl9pZCA9IHNlbGYuZGF0YWJhc2VfaW5mb1sic2VydmVyX2lk Il0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNlbGYuZGF0YWJhc2VfaW5mb1sn ZGJfaWQnXQorICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25u ZWN0X2RhdGFiYXNlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdXRpbHMuU0VSVkVSX0dST1VQLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuc2VydmVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfaWQpCisgICAgICAg IGlmIG5vdCBkYl9jb25bImluZm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVk LiI6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBj b25uZWN0IHRvIGRhdGFiYXNlLiIpCisgICAgICAgIGNvbm5lY3Rpb24gPSB1 dGlscy5nZXRfZGJfY29ubmVjdGlvbihzZWxmLnNlcnZlclsnZGInXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3 b3JkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3Bv cnQnXSkKKyAgICAgICAgcmVzcG9uc2UgPSBjYXN0X3V0aWxzLnZlcmlmeV9j YXN0KGNvbm5lY3Rpb24sIHNlbGYuc291cmNlX3R5cGUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhcmdldF90 eXBlKQorICAgICAgICBpZiBsZW4ocmVzcG9uc2UpID09IDA6CisgICAgICAg ICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIGNhc3QuIikK KyAgICAgICAgZGF0YSA9IHsKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6 ICJUaGlzIGlzIGNhc3QgdXBkYXRlIGNvbW1lbnQiLAorICAgICAgICAgICAg ImlkIjogc2VsZi5jYXN0X2lkCisgICAgICAgIH0KKyAgICAgICAgcHV0X3Jl c3BvbnNlID0gc2VsZi50ZXN0ZXIucHV0KAorICAgICAgICAgICAgc2VsZi51 cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCisgICAgICAg ICAgICBzdHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsgc3RyKAorICAgICAg ICAgICAgICAgIHNlbGYuZGJfaWQpICsKKyAgICAgICAgICAgICcvJyArIHN0 cihzZWxmLmNhc3RfaWQpLAorICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBz KGRhdGEpLAorICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQor ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwdXRfcmVzcG9uc2Uuc3RhdHVz X2NvZGUsIDIwMCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAg ICAgIiIiVGhpcyBmdW5jdGlvbiBkaXNjb25uZWN0IHRoZSB0ZXN0IGRhdGFi YXNlIGFuZCBkcm9wIGFkZGVkIGNhc3QuIiIiCisgICAgICAgIGNvbm5lY3Rp b24gPSB1dGlscy5nZXRfZGJfY29ubmVjdGlvbihzZWxmLnNlcnZlclsnZGIn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2Ri X3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJbJ3BvcnQnXSkKKyAgICAgICAgY2FzdF91dGlscy5kcm9wX2Nhc3QoY29u bmVjdGlvbiwgc2VsZi5zb3VyY2VfdHlwZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi50YXJnZXRfdHlwZSkKKyAgICAgICAgZGF0YWJh c2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZl cl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmRiX2lkKQorICAgICAgICBzZWxmLnNlcnZlclsnZGInXSA9 IHNlbGYuZGVmYXVsdF9kYgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3Rl c3RzL3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3Rlc3RzL3V0aWxzLnB5Cmlu ZGV4IDBlODk1MTMuLjRiNTBhNDggMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0 cy90ZXN0cy91dGlscy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVzdHMvdXRp bHMucHkKQEAgLTYsMTQwICs2LDk2IEBACiAjIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQogIwogIyAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQg cHJpbnRfZnVuY3Rpb24KK2ltcG9ydCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sK IAotaW1wb3J0IG9zCi1pbXBvcnQgcGlja2xlCi1pbXBvcnQganNvbgotZnJv bSByZWdyZXNzaW9uLnRlc3Rfc2V0dXAgaW1wb3J0IGFkdmFuY2VkX2NvbmZp Z19kYXRhLCBwaWNrbGVfcGF0aAotZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0 ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2 ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCBcCi0g ICAgdXRpbHMgYXMgZGF0YWJhc2VfdXRpbHMKLWZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMg YXMgc2VydmVyX3V0aWxzCitmcm9tIHJlZ3Jlc3Npb24udGVzdF91dGlscyBp bXBvcnQgZ2V0X2RiX2Nvbm5lY3Rpb24KIAotQ0FTVF9VUkwgPSAnL2Jyb3dz ZXIvY2FzdC9vYmovJwotCi0KLWRlZiBnZXRfY2FzdF9jb25maWdfZGF0YShz ZXJ2ZXJfY29ubmVjdF9kYXRhKToKLQotICAgIGFkdl9jb25maWdfZGF0YSA9 IE5vbmUKLSAgICBkYl91c2VyID0gc2VydmVyX2Nvbm5lY3RfZGF0YVsnZGF0 YSddWyd1c2VyJ11bJ25hbWUnXQotCi0gICAgIyBHZXQgdGhlIGNvbmZpZyBk YXRhIG9mIGFwcHJvcHJpYXRlIGRiIHVzZXIKLSAgICBmb3IgY29uZmlnX3Rl c3RfZGF0YSBpbiBhZHZhbmNlZF9jb25maWdfZGF0YVsnY2FzdHNfY3JlZGVu dGlhbHMnXToKLSAgICAgICAgaWYgZGJfdXNlciA9PSBjb25maWdfdGVzdF9k YXRhWydvd25lciddOgotICAgICAgICAgICAgYWR2X2NvbmZpZ19kYXRhID0g Y29uZmlnX3Rlc3RfZGF0YQogCitkZWYgZ2V0X2Nhc3RfZGF0YSgpOgogICAg IGRhdGEgPSB7Ci0gICAgICAgICJjYXN0Y29udGV4dCI6IGFkdl9jb25maWdf ZGF0YQotICAgICAgICBbJ2Nhc3RfY29udGV4dCddLAotICAgICAgICAiZW5j b2RpbmciOiBhZHZfY29uZmlnX2RhdGEKLSAgICAgICAgWydlbmNvZGluZydd LAotICAgICAgICAibmFtZSI6IGFkdl9jb25maWdfZGF0YQotICAgICAgICBb J25hbWUnXSwKLSAgICAgICAgInNyY3R5cCI6IGFkdl9jb25maWdfZGF0YQot ICAgICAgICBbJ3NvdXJjZV90eXBlJ10sCi0gICAgICAgICJ0cmd0eXAiOiBh ZHZfY29uZmlnX2RhdGEKLSAgICAgICAgWyd0YXJnZXRfdHlwZSddCi0gICAg ICAgIH0KKyAgICAgICAgImNhc3Rjb250ZXh0IjogIklNUExJQ0lUIiwKKyAg ICAgICAgImVuY29kaW5nIjogIlVURjgiLAorICAgICAgICAibmFtZSI6ICJt b25leS0+YmlnaW50IiwKKyAgICAgICAgInNyY3R5cCI6ICJtb25leSIsCisg ICAgICAgICJ0cmd0eXAiOiAiYmlnaW50IiwKKyAgICB9CiAgICAgcmV0dXJu IGRhdGEKIAogCi1kZWYgYWRkX2Nhc3QodGVzdGVyKToKK2RlZiBjcmVhdGVf Y2FzdChzZXJ2ZXIsIHNvdXJjZV90eXBlLCB0YXJnZXRfdHlwZSk6CiAgICAg IiIiCi0gICAgVGhpcyBmdW5jdGlvbiBhZGQgdGhlIGNhc3QgaW4gdGhlIGV4 aXN0aW5nIGRhdGFiYXNlCi0KLSAgICA6cGFyYW0gdGVzdGVyOiB0ZXN0IG9i amVjdAotICAgIDp0eXBlIHRlc3RlcjogZmxhc2sgdGVzdCBvYmplY3QKLSAg ICA6cmV0dXJuOk5vbmUKKyAgICBUaGlzIGZ1bmN0aW9uIGFkZCBhIGNhc3Qg aW50byBkYXRhYmFzZQorICAgIDpwYXJhbSBzZXJ2ZXI6IHNlcnZlciBkZXRh aWxzCisgICAgOnR5cGUgc2VydmVyOiBkaWN0CisgICAgOnBhcmFtIHNvdXJj ZV90eXBlOiBzb3VyY2UgdHlwZSBmb3IgY2FzdCB0byBiZSBhZGRlZAorICAg IDp0eXBlIHNvdXJjZV90eXBlOiBzdHIKKyAgICA6cGFyYW0gdGFyZ2V0X3R5 cGU6IHRhcmdldCB0eXBlIGZvciBjYXN0IHRvIGJlIGFkZGVkCisgICAgOnR5 cGUgdGFyZ2V0X3R5cGU6IHN0cgorICAgIDpyZXR1cm4gY2FzdCBpZAorICAg IDpydHlwZTogaW50CiAgICAgIiIiCi0KLSAgICBhbGxfaWQgPSB1dGlscy5n ZXRfaWRzKCkKLSAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAg IGRiX2lkc19kaWN0ID0gYWxsX2lkWyJkaWQiXVswXQotICAgIHNlcnZlcl9n cm91cCA9IHV0aWxzLmNvbmZpZ19kYXRhWydzZXJ2ZXJfZ3JvdXAnXQotCi0g ICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2ZXJfaWRzOgotICAgICAgICBkYl9p ZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICBkYl9j b24gPSBkYXRhYmFzZV91dGlscy52ZXJpZnlfZGF0YWJhc2UodGVzdGVyLCBz ZXJ2ZXJfZ3JvdXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRiX2lkKQotICAgICAgICBp ZiBkYl9jb25bJ2RhdGEnXVsnY29ubmVjdGVkJ106Ci0gICAgICAgICAgICBz ZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSA9IHNlcnZlcl91dGlscy52ZXJpZnlf c2VydmVyKAotICAgICAgICAgICAgICAgIHRlc3Rlciwgc2VydmVyX2dyb3Vw LCBzZXJ2ZXJfaWQpCi0KLSAgICAgICAgICAgIGRhdGEgPSBnZXRfY2FzdF9j b25maWdfZGF0YShzZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkKLQotICAgICAg ICAgICAgcmVzcG9uc2UgPSB0ZXN0ZXIucG9zdChDQVNUX1VSTCArIHN0cihz ZXJ2ZXJfZ3JvdXApICsgJy8nICsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKyBzdHIoCi0gICAg ICAgICAgICAgICAgZGJfaWQpICsgJy8nLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoZGF0YSksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0n aHRtbC9qc29uJykKLQotICAgICAgICAgICAgYXNzZXJ0IHJlc3BvbnNlLnN0 YXR1c19jb2RlID09IDIwMAotICAgICAgICAgICAgcmVzcG9uc2VfZGF0YSA9 IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCi0g ICAgICAgICAgICB3cml0ZV9jYXN0X2luZm8ocmVzcG9uc2VfZGF0YSwgc2Vy dmVyX2lkKQotCi0KLWRlZiB3cml0ZV9jYXN0X2luZm8ocmVzcG9uc2VfZGF0 YSwgc2VydmVyX2lkKToKLSAgICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIHdy aXRlcyB0aGUgc2VydmVyJ3MgZGV0YWlscyB0byBmaWxlIHBhcmVudF9pZC5w a2wKLQotICAgIDpwYXJhbSByZXNwb25zZV9kYXRhOiBzZXJ2ZXIncyBkYXRh Ci0gICAgOnR5cGUgcmVzcG9uc2VfZGF0YTogbGlzdCBvZiBkaWN0aW9uYXJ5 Ci0gICAgOnBhcmFtIHBpY2tsZV9pZF9kaWN0OiBjb250YWlucyBpZHMgb2Yg c2VydmVyLGRhdGFiYXNlLHRhYmxlcyBldGMuCi0gICAgOnR5cGUgcGlja2xl X2lkX2RpY3Q6IGRpY3QKLSAgICA6cmV0dXJuOiBOb25lCi0gICAgIiIiCi0K LSAgICBjYXN0X2lkID0gcmVzcG9uc2VfZGF0YVsnbm9kZSddWydfaWQnXQot ICAgIHBpY2tsZV9pZF9kaWN0ID0gdXRpbHMuZ2V0X3BpY2tsZV9pZF9kaWN0 KCkKLSAgICBpZiBvcy5wYXRoLmlzZmlsZShwaWNrbGVfcGF0aCk6Ci0gICAg ICAgIGV4aXN0aW5nX3NlcnZlcl9pZCA9IG9wZW4ocGlja2xlX3BhdGgsICdy YicpCi0gICAgICAgIHRvbF9zZXJ2ZXJfaWQgPSBwaWNrbGUubG9hZChleGlz dGluZ19zZXJ2ZXJfaWQpCi0gICAgICAgIHBpY2tsZV9pZF9kaWN0ID0gdG9s X3NlcnZlcl9pZAotICAgIGlmICdjaWQnIGluIHBpY2tsZV9pZF9kaWN0Ogot ICAgICAgICBpZiBwaWNrbGVfaWRfZGljdFsnY2lkJ106Ci0gICAgICAgICAg ICAjIEFkZCB0aGUgY2FzdF9pZCBhcyB2YWx1ZSBpbiBkaWN0Ci0gICAgICAg ICAgICBwaWNrbGVfaWRfZGljdFsiY2lkIl1bMF0udXBkYXRlKHtzZXJ2ZXJf aWQ6IGNhc3RfaWR9KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBD cmVhdGUgbmV3IGRpY3Qgd2l0aCBzZXJ2ZXJfaWQgYW5kIGNhc3RfaWQKLSAg ICAgICAgICAgIHBpY2tsZV9pZF9kaWN0WyJjaWQiXS5hcHBlbmQoe3NlcnZl cl9pZDogY2FzdF9pZH0pCi0gICAgY2FzdF9vdXRwdXQgPSBvcGVuKHBpY2ts ZV9wYXRoLCAnd2InKQotICAgIHBpY2tsZS5kdW1wKHBpY2tsZV9pZF9kaWN0 LCBjYXN0X291dHB1dCkKLSAgICBjYXN0X291dHB1dC5jbG9zZSgpCi0KLQot ZGVmIHZlcmlmeV9jYXN0KHRlc3Rlciwgc2VydmVyX2dyb3VwLCBzZXJ2ZXJf aWQsIGRiX2lkLCBjYXN0X2lkKToKLQotICAgIGNhc3RfcmVzcG9uc2UgPSB0 ZXN0ZXIuZ2V0KENBU1RfVVJMICsgc3RyKHNlcnZlcl9ncm91cCkgKyAnLycg KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJf aWQpICsgJy8nICsgc3RyKGRiX2lkKSArCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJy8nICsgc3RyKGNhc3RfaWQpLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykK LSAgICByZXR1cm4gY2FzdF9yZXNwb25zZQotCi0KLWRlZiBkZWxldGVfY2Fz dCh0ZXN0ZXIpOgotICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQotICAg IHNlcnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCi0gICAgZGJfaWRzX2RpY3Qg PSBhbGxfaWRbImRpZCJdWzBdCi0gICAgY2FzdF9pZHNfZGljdCA9IGFsbF9p ZFsiY2lkIl1bMF0KLQotICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lk czoKLSAgICAgICAgZGJfaWQgPSBkYl9pZHNfZGljdFtpbnQoc2VydmVyX2lk KV0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMudmVyaWZ5X2Rh dGFiYXNlKHRlc3RlciwgdXRpbHMuU0VSVkVSX0dST1VQLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGJfaWQpCi0gICAgICAgIGlmIGxlbihkYl9jb24pID09IDA6 Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5vIGRhdGFiYXNlKHMp IHRvIGRlbGV0ZSBmb3Igc2VydmVyIGlkICVzIgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICUgc2VydmVyX2lkKQotICAgICAgICBjYXN0X2lkID0g Y2FzdF9pZHNfZGljdFtzZXJ2ZXJfaWRdCi0gICAgICAgIGNhc3RfZ2V0X2Rh dGEgPSB2ZXJpZnlfY2FzdCh0ZXN0ZXIsIHV0aWxzLlNFUlZFUl9HUk9VUCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9p ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiX2lk LCBjYXN0X2lkKQotCi0gICAgICAgIGlmIGNhc3RfZ2V0X2RhdGEuc3RhdHVz X2NvZGUgPT0gMjAwOgotICAgICAgICAgICAgZGVsZXRlX3Jlc3BvbnNlID0g dGVzdGVyLmRlbGV0ZSgKLSAgICAgICAgICAgICAgICBDQVNUX1VSTCArIHN0 cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKLSAgICAgICAgICAgICAg ICBzdHIoc2VydmVyX2lkKSArICcvJyArIHN0cihkYl9pZCkgKwotICAgICAg ICAgICAgICAgICcvJyArIHN0cihjYXN0X2lkKSwKLSAgICAgICAgICAgICAg ICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCi0gICAgICAgICAgICByZXR1cm4g ZGVsZXRlX3Jlc3BvbnNlCisgICAgdHJ5OgorICAgICAgICBjb25uZWN0aW9u ID0gZ2V0X2RiX2Nvbm5lY3Rpb24oc2VydmVyWydkYiddLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWyd1c2VybmFt ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyWydob3N0J10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3BvcnQnXSkK KyAgICAgICAgb2xkX2lzb2xhdGlvbl9sZXZlbCA9IGNvbm5lY3Rpb24uaXNv bGF0aW9uX2xldmVsCisgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xhdGlv bl9sZXZlbCgwKQorICAgICAgICBwZ19jdXJzb3IgPSBjb25uZWN0aW9uLmN1 cnNvcigpCisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKCJDUkVBVEUgQ0FT VCAoJXMgQVMgJXMpIFdJVEhPVVQiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICIgRlVOQ1RJT04gQVMgSU1QTElDSVQiICUgKHNvdXJjZV90eXBlLCB0 YXJnZXRfdHlwZSkpCisgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xhdGlv bl9sZXZlbChvbGRfaXNvbGF0aW9uX2xldmVsKQorICAgICAgICBjb25uZWN0 aW9uLmNvbW1pdCgpCisKKyAgICAgICAgIyBHZXQgJ29pZCcgZnJvbSBuZXds eSBjcmVhdGVkIGNhc3QKKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoCisg ICAgICAgICAgICAiU0VMRUNUIGNhLm9pZCBGUk9NIHBnX2Nhc3QgY2EgV0hF UkUgY2EuY2FzdHNvdXJjZSA9ICIKKyAgICAgICAgICAgICIoU0VMRUNUIHQu b2lkIEZST00gcGdfdHlwZSB0IFdIRVJFIGZvcm1hdF90eXBlKHQub2lkLCBO VUxMKT0nJXMnKSAiCisgICAgICAgICAgICAiQU5EIGNhLmNhc3R0YXJnZXQg PSAoU0VMRUNUIHQub2lkIEZST00gcGdfdHlwZSB0IFdIRVJFICIKKyAgICAg ICAgICAgICJmb3JtYXRfdHlwZSh0Lm9pZCwgTlVMTCkgPSAnJXMnKSIgJSAo c291cmNlX3R5cGUsIHRhcmdldF90eXBlKSkKKyAgICAgICAgb2lkID0gcGdf Y3Vyc29yLmZldGNob25lKCkKKyAgICAgICAgY2FzdF9pZCA9ICcnCisgICAg ICAgIGlmIG9pZDoKKyAgICAgICAgICAgIGNhc3RfaWQgPSBvaWRbMF0KKyAg ICAgICAgY29ubmVjdGlvbi5jbG9zZSgpCisgICAgICAgIHJldHVybiBjYXN0 X2lkCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgdHJhY2ViYWNr LnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisKKworZGVmIHZlcmlmeV9j YXN0KGNvbm5lY3Rpb24sIHNvdXJjZV90eXBlLCB0YXJnZXRfdHlwZSk6Cisg ICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCB2ZXJpZnkgY3VycmVudCBjYXN0 LiIiIgorICAgIHRyeToKKyAgICAgICAgcGdfY3Vyc29yID0gY29ubmVjdGlv bi5jdXJzb3IoKQorICAgICAgICBwZ19jdXJzb3IuZXhlY3V0ZSgKKyAgICAg ICAgICAgICJTRUxFQ1QgKiBGUk9NIHBnX2Nhc3QgY2EgV0hFUkUgY2EuY2Fz dHNvdXJjZSA9ICIKKyAgICAgICAgICAgICIoU0VMRUNUIHQub2lkIEZST00g cGdfdHlwZSB0IFdIRVJFIGZvcm1hdF90eXBlKHQub2lkLCBOVUxMKT0nJXMn KSAiCisgICAgICAgICAgICAiQU5EIGNhLmNhc3R0YXJnZXQgPSAoU0VMRUNU IHQub2lkIEZST00gcGdfdHlwZSB0IFdIRVJFICIKKyAgICAgICAgICAgICJm b3JtYXRfdHlwZSh0Lm9pZCwgTlVMTCkgPSAnJXMnKSIgJSAoc291cmNlX3R5 cGUsIHRhcmdldF90eXBlKSkKKyAgICAgICAgY2FzdHMgPSBwZ19jdXJzb3Iu ZmV0Y2hhbGwoKQorICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkKKyAgICAg ICAgcmV0dXJuIGNhc3RzCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAg ICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisKKwor ZGVmIGRyb3BfY2FzdChjb25uZWN0aW9uLCBzb3VyY2VfdHlwZSwgdGFyZ2V0 X3R5cGUpOgorICAgICIiIlRoaXMgZnVuY3Rpb24gdXNlZCB0byBkcm9wIHRo ZSBjYXN0IiIiCisKKyAgICB0cnk6CisgICAgICAgIHBnX2N1cnNvciA9IGNv bm5lY3Rpb24uY3Vyc29yKCkKKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUo CisgICAgICAgICAgICAiU0VMRUNUICogRlJPTSBwZ19jYXN0IGNhIFdIRVJF IGNhLmNhc3Rzb3VyY2UgPSAiCisgICAgICAgICAgICAiKFNFTEVDVCB0Lm9p ZCBGUk9NIHBnX3R5cGUgdCBXSEVSRSBmb3JtYXRfdHlwZSh0Lm9pZCwgTlVM TCk9JyVzJykgIgorICAgICAgICAgICAgIkFORCBjYS5jYXN0dGFyZ2V0ID0g KFNFTEVDVCB0Lm9pZCBGUk9NIHBnX3R5cGUgdCBXSEVSRSAiCisgICAgICAg ICAgICAiZm9ybWF0X3R5cGUodC5vaWQsIE5VTEwpID0gJyVzJykiICUgKHNv dXJjZV90eXBlLCB0YXJnZXRfdHlwZSkpCisgICAgICAgIGlmIHBnX2N1cnNv ci5mZXRjaGFsbCgpOgorICAgICAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUo CisgICAgICAgICAgICAgICAgIkRST1AgQ0FTVCAoJXMgQVMgJXMpIENBU0NB REUiICUgKHNvdXJjZV90eXBlLCB0YXJnZXRfdHlwZSkpCisgICAgICAgICAg ICBjb25uZWN0aW9uLmNvbW1pdCgpCisgICAgICAgICAgICBjb25uZWN0aW9u LmNsb3NlKCkKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICB0cmFj ZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9ldmVudF90cmlnZ2Vycy90ZXN0cy90ZXN0X2V2ZW50X3RyaWdn ZXJfYWRkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL2V2ZW50X3RyaWdnZXJzL3Rlc3RzL3Rlc3Rf ZXZlbnRfdHJpZ2dlcl9hZGQucHkKaW5kZXggZGJkOTM1My4uODIyZTI0ZSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL2V2ZW50X3RyaWdnZXJzL3Rlc3RzL3Rlc3Rf ZXZlbnRfdHJpZ2dlcl9hZGQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V2ZW50X3RyaWdn ZXJzL3Rlc3RzL3Rlc3RfZXZlbnRfdHJpZ2dlcl9hZGQucHkKQEAgLTcsNzMg KzcsNzMgQEAKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKK2ltcG9y dCB1dWlkCitpbXBvcnQganNvbgorCiBmcm9tIHBnYWRtaW4udXRpbHMucm91 dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCi1mcm9tIHJlZ3Jlc3Npb24g aW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKIGZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1w b3J0IFwKICAgICB1dGlscyBhcyBkYXRhYmFzZV91dGlscwotZnJvbSBwZ2Fk bWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9y dCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93c2Vy LnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50ZXN0 cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIHNjaGVtYV91dGlscwotZnJvbSBw Z2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNl cy5zY2hlbWFzLmZ1bmN0aW9ucy50ZXN0cyBcCi0gICAgaW1wb3J0IHV0aWxz IGFzIGZ1bmNfdXRpbHMKLWZyb20gLiBpbXBvcnQgdXRpbHMgYXMgZXZlbnRf dHJpZ2dlcl91dGlscworZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0 aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9u b2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgdHJpZ2dlcl9mdW5j c191dGlscwogCiAKIGNsYXNzIEV2ZW50VHJpZ2dlckFkZFRlc3RDYXNlKEJh c2VUZXN0R2VuZXJhdG9yKToKLSAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIGFk ZCBuZXcgZXZlbnQgdHJpZ2dlciB1bmRlciBzY2hlbWEgbm9kZS4gIiIiCi0K KyAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIGFkZCBuZXcgZXZlbnQgdHJpZ2dl ciB1bmRlciB0ZXN0IHNjaGVtYS4gIiIiCiAgICAgc2NlbmFyaW9zID0gWwog ICAgICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciBldmVudCB0cmln Z2VyIG5vZGUuCiAgICAgICAgICgnRmV0Y2ggRXZlbnQgVHJpZ2dlciBOb2Rl IFVSTCcsCiAgICAgICAgICBkaWN0KHVybD0nL2Jyb3dzZXIvZXZlbnRfdHJp Z2dlci9vYmovJykpCiAgICAgXQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAg ZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgICAg ICAgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHRhc2tz OgotICAgICAgICAgICAgICAxLiBBZGQgYW5kIGNvbm5lY3QgdG8gdGhlIHRl c3Qgc2VydmVyKHMpCi0gICAgICAgICAgICAgIDIuIEFkZCBkYXRhYmFzZShz KSBjb25uZWN0ZWQgdG8gc2VydmVyKHMpCi0gICAgICAgICAgICAgIDMuIEFk ZCBzY2hlbWFzIHRvIGNvbm5lY3RlZCBkYXRhYmFzZShzKQotICAgICAgICAg ICAgICA0LiBBZGQgdHJpZ2dlciBmdW5jdGlvbihzKSB0byBzY2hlbWEocykK LQotICAgICAgICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0K LSAgICAgICAgIyBBZGQgdGhlIHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRp bHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQotCi0gICAgICAgICMgQ29ubmVj dCB0byBzZXJ2ZXJzCi0gICAgICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNw b25zZSwgY2xzLnNlcnZlcl9ncm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0g ICAgICAgICAgICBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRl c3RlcikKLQotICAgICAgICBpZiBsZW4oY2xzLnNlcnZlcl9jb25uZWN0X3Jl c3BvbnNlKSA9PSAwOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJO byBTZXJ2ZXIocykgY29ubmVjdGVkIHRvIGFkZCB0aGUgZGF0YWJhc2UhISEi KQotCi0gICAgICAgICMgQWRkIGRhdGFiYXNlcyB0byBjb25uZWN0ZWQgc2Vy dmVycwotICAgICAgICBkYXRhYmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xz LnRlc3RlciwgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMp Ci0KLSAgICAgICAgc2NoZW1hX3V0aWxzLmFkZF9zY2hlbWFzKGNscy50ZXN0 ZXIpCi0KLSAgICAgICAgZnVuY191dGlscy5hZGRfdHJpZ2dlcl9mdW5jdGlv bihjbHMudGVzdGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNl cnZlcl9pZHMpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxm LnNjaGVtYV9kYXRhID0gcGFyZW50X25vZGVfZGljdFsnc2NoZW1hJ11bLTFd CisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gc2VsZi5zY2hlbWFfZGF0YVsn c2VydmVyX2lkJ10KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNlbGYuc2NoZW1h X2RhdGFbJ2RiX2lkJ10KKyAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHNl bGYuc2NoZW1hX2RhdGFbJ3NjaGVtYV9uYW1lJ10KKyAgICAgICAgc2VsZi5z Y2hlbWFfaWQgPSBzZWxmLnNjaGVtYV9kYXRhWydzY2hlbWFfaWQnXQorICAg ICAgICBzZWxmLmV4dGVuc2lvbl9uYW1lID0gInBvc3RncmVzX2ZkdyIKKyAg ICAgICAgc2VsZi5kYl9uYW1lID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJh c2UiXVstMV1bImRiX25hbWUiXQorICAgICAgICBzZWxmLmZ1bmNfbmFtZSA9 ICJ0cmlnZ2VyX2Z1bmNfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo2XQor ICAgICAgICBzZWxmLmRiX3VzZXIgPSBzZWxmLnNlcnZlclsidXNlcm5hbWUi XQorICAgICAgICBzZWxmLmZ1bmN0aW9uX2luZm8gPSB0cmlnZ2VyX2Z1bmNz X3V0aWxzLmNyZWF0ZV90cmlnZ2VyX2Z1bmN0aW9uKAorICAgICAgICAgICAg c2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwgc2VsZi5zY2hlbWFfbmFtZSwg c2VsZi5mdW5jX25hbWUpCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAg ICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBhZGQgZXZlbnQgdHJpZ2dl ciB1bmRlciBkYXRhYmFzZSBub2RlLiAiIiIKLSAgICAgICAgZXZlbnRfdHJp Z2dlcl91dGlscy5hZGRfZXZlbnRfdHJpZ2dlcihzZWxmLnRlc3RlcikKLQot ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6 Ci0gICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQg c2NoZW1hLCBkYXRhYmFzZSwgc2VydmVyIGFuZCBwYXJlbnQKLSAgICAgICAg aWQgZmlsZQotCi0gICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIi Ci0KLSAgICAgICAgZXZlbnRfdHJpZ2dlcl91dGlscy5kZWxldGVfZXZlbnRf dHJpZ2dlcihjbHMudGVzdGVyKQotICAgICAgICBmdW5jX3V0aWxzLmRlbGV0 ZV90cmlnZ2VyX2Z1bmN0aW9uKGNscy50ZXN0ZXIpCi0gICAgICAgIHNjaGVt YV91dGlscy5kZWxldGVfc2NoZW1hKGNscy50ZXN0ZXIpCi0gICAgICAgIGRh dGFiYXNlX3V0aWxzLmRlbGV0ZV9kYXRhYmFzZShjbHMudGVzdGVyKQotICAg ICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihjbHMudGVzdGVyKQot ICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQorICAgICAg ICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCBldmVudCB0cmlnZ2VyIHVu ZGVyIHRlc3QgZGF0YWJhc2UuICIiIgorICAgICAgICBkYl9jb24gPSBkYXRh YmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYsIHV0aWxzLlNFUlZF Ul9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKKyAg ICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKKyAg ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3Qg dG8gZGF0YWJhc2UuIikKKyAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2No ZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKHNlbGYuc2VydmVyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSkK KyAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25zZToKKyAgICAgICAgICAg IHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVtYS4i KQorICAgICAgICBmdW5jX25hbWUgPSBzZWxmLmZ1bmN0aW9uX2luZm9bMV0K KyAgICAgICAgZnVuY19yZXNwb25zZSA9IHRyaWdnZXJfZnVuY3NfdXRpbHMu dmVyaWZ5X3RyaWdnZXJfZnVuY3Rpb24oCisgICAgICAgICAgICBzZWxmLnNl cnZlciwKKyAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAg IGZ1bmNfbmFtZSkKKyAgICAgICAgaWYgbm90IGZ1bmNfcmVzcG9uc2U6Cisg ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRo ZSB0cmlnZ2VyIGZ1bmN0aW9uLiIpCisgICAgICAgIGRhdGEgPSB7CisgICAg ICAgICAgICAiZW5hYmxlZCI6ICJPIiwKKyAgICAgICAgICAgICJldmVudGZ1 bm5hbWUiOiAiJXMuJXMiICUgKHNlbGYuc2NoZW1hX25hbWUsIHNlbGYuZnVu Y19uYW1lKSwKKyAgICAgICAgICAgICJldmVudG5hbWUiOiAiRERMX0NPTU1B TkRfRU5EIiwKKyAgICAgICAgICAgICJldmVudG93bmVyIjogc2VsZi5kYl91 c2VyLAorICAgICAgICAgICAgIm5hbWUiOiAiZXZlbnRfdHJpZ2dlcl9hZGRf JXMiICUgKHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0pLAorICAgICAgICAgICAg InByb3ZpZGVycyI6IFtdCisgICAgICAgIH0KKyAgICAgICAgcmVzcG9uc2Ug PSBzZWxmLnRlc3Rlci5wb3N0KAorICAgICAgICAgICAgc2VsZi51cmwgKyBz dHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCisgICAgICAgICAgICBz dHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsgc3RyKHNlbGYuZGJfaWQpICsK KyAgICAgICAgICAgICcvJywgZGF0YT1qc29uLmR1bXBzKGRhdGEpLAorICAg ICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICBz ZWxmLmFzc2VydEFsbW9zdEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwg MjAwKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIERp c2Nvbm5lY3QgZGF0YWJhc2UKKyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlz Y29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5k Yl9pZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9ldmVudF90cmlnZ2Vycy90ZXN0 cy90ZXN0X2V2ZW50X3RyaWdnZXJfZGVsZXRlLnB5IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V2ZW50 X3RyaWdnZXJzL3Rlc3RzL3Rlc3RfZXZlbnRfdHJpZ2dlcl9kZWxldGUucHkK aW5kZXggODVjMjFlMy4uYmJiY2NhNyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V2 ZW50X3RyaWdnZXJzL3Rlc3RzL3Rlc3RfZXZlbnRfdHJpZ2dlcl9kZWxldGUu cHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL2V2ZW50X3RyaWdnZXJzL3Rlc3RzL3Rlc3RfZXZl bnRfdHJpZ2dlcl9kZWxldGUucHkKQEAgLTcsODIgKzcsNzYgQEAKICMKICMg IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKK2ltcG9ydCB1dWlkCisKIGZyb20g cGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IK LWZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwog ZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRh dGFiYXNlcy50ZXN0cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIGRhdGFiYXNl X3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwogZnJv bSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFi YXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCiAgICAgdXRpbHMgYXMgc2No ZW1hX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMuZnVuY3Rpb25zLnRlc3RzIFwK LSAgICBpbXBvcnQgdXRpbHMgYXMgZnVuY191dGlscworZnJvbSByZWdyZXNz aW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Np b24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbiBp bXBvcnQgdHJpZ2dlcl9mdW5jc191dGlscwogZnJvbSAuIGltcG9ydCB1dGls cyBhcyBldmVudF90cmlnZ2VyX3V0aWxzCi1pbXBvcnQganNvbgogCiAKIGNs YXNzIEV2ZW50VHJpZ2dlckRlbGV0ZVRlc3RDYXNlKEJhc2VUZXN0R2VuZXJh dG9yKToKLSAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIGZldGNoIGFkZGVkIGV2 ZW50IHRyaWdnZXIgdW5kZXIgZGF0YWJhc2Ugbm9kZS4gIiIiCi0KKyAgICAi IiIgVGhpcyBjbGFzcyB3aWxsIGRlbGV0ZSBhZGRlZCBldmVudCB0cmlnZ2Vy IHVuZGVyIHRlc3QgZGF0YWJhc2UuICIiIgogICAgIHNjZW5hcmlvcyA9IFsK ICAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3IgZXZlbnQgdHJp Z2dlciAgbm9kZS4KICAgICAgICAgKCdGZXRjaCBFdmVudCBUcmlnZ2VyIE5v ZGUgVVJMJywKICAgICAgICAgIGRpY3QodXJsPScvYnJvd3Nlci9ldmVudF90 cmlnZ2VyL29iai8nKSkKICAgICBdCiAKLSAgICBAY2xhc3NtZXRob2QKLSAg ICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAiIiIKLSAgICAgICAg ICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgdGFz a3M6Ci0gICAgICAgICAgICAgIDEuIEFkZCBhbmQgY29ubmVjdCB0byB0aGUg dGVzdCBzZXJ2ZXIocykKLSAgICAgICAgICAgICAgMi4gQWRkIGRhdGFiYXNl KHMpIGNvbm5lY3RlZCB0byBzZXJ2ZXIocykKLSAgICAgICAgICAgICAgMy4g QWRkIHNjaGVtYXMgdG8gY29ubmVjdGVkIGRhdGFiYXNlKHMpCi0gICAgICAg ICAgICAgIDQuIEFkZCB0cmlnZ2VyIGZ1bmN0aW9uKHMpIHRvIHNjaGVtYShz KQotICAgICAgICAgICAgICA1LiBBZGQgZXZlbnQgdHJpZ2dlcihzKSB0byBk YXRhYmFzZShzKQotCi0gICAgICAgICAgICAgOnJldHVybjogTm9uZQotICAg ICAgICAiIiIKLQotICAgICAgICAjIEFkZCB0aGUgc2VydmVyCi0gICAgICAg IHNlcnZlcl91dGlscy5hZGRfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAg ICAgIyBDb25uZWN0IHRvIHNlcnZlcnMKLSAgICAgICAgY2xzLnNlcnZlcl9j b25uZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3VwLCBjbHMuc2VydmVy X2lkcyA9IFwKLSAgICAgICAgICAgIHNlcnZlcl91dGlscy5jb25uZWN0X3Nl cnZlcihjbHMudGVzdGVyKQotCi0gICAgICAgIGlmIGxlbihjbHMuc2VydmVy X2Nvbm5lY3RfcmVzcG9uc2UpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBF eGNlcHRpb24oIk5vIFNlcnZlcihzKSBjb25uZWN0ZWQgdG8gYWRkIHRoZSBk YXRhYmFzZSEhISIpCi0KLSAgICAgICAgIyBBZGQgZGF0YWJhc2VzIHRvIGNv bm5lY3RlZCBzZXJ2ZXJzCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmFkZF9k YXRhYmFzZShjbHMudGVzdGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9u c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMu c2VydmVyX2lkcykKLQotICAgICAgICBzY2hlbWFfdXRpbHMuYWRkX3NjaGVt YXMoY2xzLnRlc3RlcikKLQotICAgICAgICBmdW5jX3V0aWxzLmFkZF90cmln Z2VyX2Z1bmN0aW9uKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9y ZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjbHMuc2VydmVyX2lkcykKLQotICAgICAgICBldmVudF90cmlnZ2Vy X3V0aWxzLmFkZF9ldmVudF90cmlnZ2VyKGNscy50ZXN0ZXIpCisgICAgZGVm IHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNjaGVtYV9kYXRhID0gcGFy ZW50X25vZGVfZGljdFsnc2NoZW1hJ11bLTFdCisgICAgICAgIHNlbGYuc2Vy dmVyX2lkID0gc2VsZi5zY2hlbWFfZGF0YVsnc2VydmVyX2lkJ10KKyAgICAg ICAgc2VsZi5kYl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ2RiX2lkJ10KKyAg ICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHNlbGYuc2NoZW1hX2RhdGFbJ3Nj aGVtYV9uYW1lJ10KKyAgICAgICAgc2VsZi5zY2hlbWFfaWQgPSBzZWxmLnNj aGVtYV9kYXRhWydzY2hlbWFfaWQnXQorICAgICAgICBzZWxmLmV4dGVuc2lv bl9uYW1lID0gInBvc3RncmVzX2ZkdyIKKyAgICAgICAgc2VsZi5kYl9uYW1l ID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUi XQorICAgICAgICBzZWxmLmRiX3VzZXIgPSBzZWxmLnNlcnZlclsidXNlcm5h bWUiXQorICAgICAgICBzZWxmLmZ1bmNfbmFtZSA9ICJ0cmlnZ2VyX2Z1bmNf JXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo2XQorICAgICAgICBzZWxmLnRy aWdnZXJfbmFtZSA9ICJldmVudF90cmlnZ2VyX2RlbGV0ZV8lcyIgJSAoCisg ICAgICAgIHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0pCisgICAgICAgIHNlbGYu ZnVuY3Rpb25faW5mbyA9IHRyaWdnZXJfZnVuY3NfdXRpbHMuY3JlYXRlX3Ry aWdnZXJfZnVuY3Rpb24oCisgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2Vs Zi5kYl9uYW1lLCBzZWxmLnNjaGVtYV9uYW1lLCBzZWxmLmZ1bmNfbmFtZSkK KyAgICAgICAgc2VsZi5ldmVudF90cmlnZ2VyX2lkID0gZXZlbnRfdHJpZ2dl cl91dGlscy5jcmVhdGVfZXZlbnRfdHJpZ2dlcigKKyAgICAgICAgICAgIHNl bGYuc2VydmVyLCBzZWxmLmRiX25hbWUsIHNlbGYuc2NoZW1hX25hbWUsIHNl bGYuZnVuY19uYW1lLAorICAgICAgICAgICAgc2VsZi50cmlnZ2VyX25hbWUp CiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgIiIiIFRoaXMg ZnVuY3Rpb24gd2lsbCBkZWxldGUgZXZlbnQgdHJpZ2dlciB1bmRlciBkYXRh YmFzZSBub2RlLiAiIiIKLQotICAgICAgICBkZWxfcmVzcG9uc2UgPSBldmVu dF90cmlnZ2VyX3V0aWxzLmRlbGV0ZV9ldmVudF90cmlnZ2VyKHNlbGYudGVz dGVyKQotCi0gICAgICAgIGRlbF9yZXNwZGF0YSA9IGpzb24ubG9hZHMoZGVs X3Jlc3BvbnNlLmRhdGEuZGVjb2RlKCJ1dGYtOCIpKQotCi0gICAgICAgIHNl bGYuYXNzZXJ0VHJ1ZShkZWxfcmVzcGRhdGFbJ3N1Y2Nlc3MnXSwgMSkKLQot ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6 Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZSB0 aGUgYWRkZWQgc2NoZW1hLCBkYXRhYmFzZSwgc2VydmVyIGFuZCBwYXJlbnQK LSAgICAgICAgaWQgZmlsZQotCi0gICAgICAgIDpyZXR1cm46IE5vbmUKLSAg ICAgICAgIiIiCi0KLSAgICAgICAgZnVuY191dGlscy5kZWxldGVfdHJpZ2dl cl9mdW5jdGlvbihjbHMudGVzdGVyKQotICAgICAgICBzY2hlbWFfdXRpbHMu ZGVsZXRlX3NjaGVtYShjbHMudGVzdGVyKQotICAgICAgICBkYXRhYmFzZV91 dGlscy5kZWxldGVfZGF0YWJhc2UoY2xzLnRlc3RlcikKLSAgICAgICAgc2Vy dmVyX3V0aWxzLmRlbGV0ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAg dXRpbHMuZGVsZXRlX3BhcmVudF9pZF9maWxlKCkKKyAgICAgICAgIiIiIFRo aXMgZnVuY3Rpb24gd2lsbCBkZWxldGUgZXZlbnQgdHJpZ2dlciB1bmRlciB0 ZXN0IGRhdGFiYXNlLiAiIiIKKyAgICAgICAgZGJfY29uID0gZGF0YWJhc2Vf dXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLCB1dGlscy5TRVJWRVJfR1JP VVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCisgICAgICAg IGlmIG5vdCBkYl9jb25bJ2RhdGEnXVsiY29ubmVjdGVkIl06CisgICAgICAg ICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRh dGFiYXNlLiIpCisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91 dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCisgICAg ICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlz ZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEuIikKKyAg ICAgICAgZnVuY19uYW1lID0gc2VsZi5mdW5jdGlvbl9pbmZvWzFdCisgICAg ICAgIGZ1bmNfcmVzcG9uc2UgPSB0cmlnZ2VyX2Z1bmNzX3V0aWxzLnZlcmlm eV90cmlnZ2VyX2Z1bmN0aW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIs CisgICAgICAgICAgICBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICBmdW5j X25hbWUpCisgICAgICAgIGlmIG5vdCBmdW5jX3Jlc3BvbnNlOgorICAgICAg ICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCB0aGUgdHJp Z2dlciBmdW5jdGlvbi4iKQorICAgICAgICB0cmlnZ2VyX3Jlc3BvbnNlID0g ZXZlbnRfdHJpZ2dlcl91dGlscy52ZXJpZnlfZXZlbnRfdHJpZ2dlcigKKyAg ICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAgICAg ICAgICBzZWxmLnRyaWdnZXJfbmFtZSkKKyAgICAgICAgaWYgbm90IHRyaWdn ZXJfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNv dWxkIG5vdCBmaW5kIGV2ZW50IHRyaWdnZXIuIikKKyAgICAgICAgZGVsX3Jl c3BvbnNlID0gc2VsZi50ZXN0ZXIuZGVsZXRlKAorICAgICAgICAgICAgc2Vs Zi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCisgICAg ICAgICAgICBzdHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsKKyAgICAgICAg ICAgIHN0cihzZWxmLmRiX2lkKSArICcvJyArCisgICAgICAgICAgICBzdHIo c2VsZi5ldmVudF90cmlnZ2VyX2lkKSwKKyAgICAgICAgICAgIGZvbGxvd19y ZWRpcmVjdHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZGVs X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisKKyAgICBkZWYgdGVhckRv d24oc2VsZik6CisgICAgICAgICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UK KyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShz ZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9ldmVudF90cmlnZ2Vycy90ZXN0cy90ZXN0X2V2ZW50X3RyaWdn ZXJfZ2V0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL2V2ZW50X3RyaWdnZXJzL3Rlc3RzL3Rlc3Rf ZXZlbnRfdHJpZ2dlcl9nZXQucHkKaW5kZXggZjE0NzhlNi4uYmFkNjk4ZiAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL2V2ZW50X3RyaWdnZXJzL3Rlc3RzL3Rlc3Rf ZXZlbnRfdHJpZ2dlcl9nZXQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V2ZW50X3RyaWdn ZXJzL3Rlc3RzL3Rlc3RfZXZlbnRfdHJpZ2dlcl9nZXQucHkKQEAgLTcsOTEg KzcsNzAgQEAKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKK2ltcG9y dCB1dWlkCisKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFz ZVRlc3RHZW5lcmF0b3IKLWZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91 dGlscyBhcyB1dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dy b3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgXAogICAgIHV0 aWxzIGFzIGRhdGFiYXNlX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNl cnZlcl91dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydFwKK2Zy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMuc2NoZW1hcy50ZXN0cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIHNj aGVtYV91dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLmZ1bmN0aW9ucy50ZXN0cyBc Ci0gICAgaW1wb3J0IHV0aWxzIGFzIGZ1bmNfdXRpbHMKK2Zyb20gcmVncmVz c2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSByZWdyZXNz aW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jlc3Npb24g aW1wb3J0IHRyaWdnZXJfZnVuY3NfdXRpbHMKIGZyb20gLiBpbXBvcnQgdXRp bHMgYXMgZXZlbnRfdHJpZ2dlcl91dGlscwogCiAKIGNsYXNzIEV2ZW50VHJp Z2dlckdldFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKLSAgICAiIiIg VGhpcyBjbGFzcyB3aWxsIGZldGNoIGFkZGVkIGV2ZW50IHRyaWdnZXIgdW5k ZXIgc2NoZW1hIG5vZGUuICIiIgotCisgICAgIiIiIFRoaXMgY2xhc3Mgd2ls bCBmZXRjaCBhZGRlZCBldmVudCB0cmlnZ2VyIHVuZGVyIHRlc3QgZGF0YWJh c2UuICIiIgogICAgIHNjZW5hcmlvcyA9IFsKICAgICAgICAgIyBGZXRjaGlu ZyBkZWZhdWx0IFVSTCBmb3IgZXZlbnQgdHJpZ2dlciAgbm9kZS4KICAgICAg ICAgKCdGZXRjaCBFdmVudCBUcmlnZ2VyIE5vZGUgVVJMJywKICAgICAgICAg IGRpY3QodXJsPScvYnJvd3Nlci9ldmVudF90cmlnZ2VyL29iai8nKSkKLSAg ICAgICAgXQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xh c3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgICAgICAgIFRoaXMgZnVu Y3Rpb24gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHRhc2tzOgotICAgICAgICAg ICAgICAxLiBBZGQgYW5kIGNvbm5lY3QgdG8gdGhlIHRlc3Qgc2VydmVyKHMp Ci0gICAgICAgICAgICAgIDIuIEFkZCBkYXRhYmFzZShzKSBjb25uZWN0ZWQg dG8gc2VydmVyKHMpCi0gICAgICAgICAgICAgIDMuIEFkZCBzY2hlbWFzIHRv IGNvbm5lY3RlZCBkYXRhYmFzZShzKQotICAgICAgICAgICAgICA0LiBBZGQg dHJpZ2dlciBmdW5jdGlvbihzKSB0byBzY2hlbWEocykKLSAgICAgICAgICAg ICAgNS4gQWRkIGV2ZW50IHRyaWdnZXIocykgdG8gZGF0YWJhc2UocykKLQot ICAgICAgICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAg ICAgICAgIyBBZGQgdGhlIHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRpbHMu YWRkX3NlcnZlcihjbHMudGVzdGVyKQotCi0gICAgICAgICMgQ29ubmVjdCB0 byBzZXJ2ZXJzCi0gICAgICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25z ZSwgY2xzLnNlcnZlcl9ncm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0gICAg ICAgICAgICBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3Rl cikKLQotICAgICAgICBpZiBsZW4oY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3Bv bnNlKSA9PSAwOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBT ZXJ2ZXIocykgY29ubmVjdGVkIHRvIGFkZCB0aGUgZGF0YWJhc2UhISEiKQot Ci0gICAgICAgICMgQWRkIGRhdGFiYXNlcyB0byBjb25uZWN0ZWQgc2VydmVy cwotICAgICAgICBkYXRhYmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRl c3RlciwgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCi0K LSAgICAgICAgc2NoZW1hX3V0aWxzLmFkZF9zY2hlbWFzKGNscy50ZXN0ZXIp Ci0KLSAgICAgICAgZnVuY191dGlscy5hZGRfdHJpZ2dlcl9mdW5jdGlvbihj bHMudGVzdGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZl cl9pZHMpCi0KLSAgICAgICAgZXZlbnRfdHJpZ2dlcl91dGlscy5hZGRfZXZl bnRfdHJpZ2dlcihjbHMudGVzdGVyKQorICAgIF0KKworICAgIGRlZiBzZXRV cChzZWxmKToKKyAgICAgICAgc2VsZi5zY2hlbWFfZGF0YSA9IHBhcmVudF9u b2RlX2RpY3RbJ3NjaGVtYSddWy0xXQorICAgICAgICBzZWxmLnNlcnZlcl9p ZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ3NlcnZlcl9pZCddCisgICAgICAgIHNl bGYuZGJfaWQgPSBzZWxmLnNjaGVtYV9kYXRhWydkYl9pZCddCisgICAgICAg IHNlbGYuc2NoZW1hX25hbWUgPSBzZWxmLnNjaGVtYV9kYXRhWydzY2hlbWFf bmFtZSddCisgICAgICAgIHNlbGYuc2NoZW1hX2lkID0gc2VsZi5zY2hlbWFf ZGF0YVsnc2NoZW1hX2lkJ10KKyAgICAgICAgc2VsZi5leHRlbnNpb25fbmFt ZSA9ICJwb3N0Z3Jlc19mZHciCisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBh cmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAg ICAgICAgc2VsZi5kYl91c2VyID0gc2VsZi5zZXJ2ZXJbInVzZXJuYW1lIl0K KyAgICAgICAgc2VsZi5mdW5jX25hbWUgPSAidHJpZ2dlcl9mdW5jXyVzIiAl IHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0KKyAgICAgICAgc2VsZi50cmlnZ2Vy X25hbWUgPSAiZXZlbnRfdHJpZ2dlcl9nZXRfJXMiICUgKHN0cih1dWlkLnV1 aWQ0KCkpWzE6Nl0pCisgICAgICAgIHNlbGYuZnVuY3Rpb25faW5mbyA9IHRy aWdnZXJfZnVuY3NfdXRpbHMuY3JlYXRlX3RyaWdnZXJfZnVuY3Rpb24oCisg ICAgICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLCBzZWxmLnNj aGVtYV9uYW1lLCBzZWxmLmZ1bmNfbmFtZSkKKyAgICAgICAgc2VsZi5ldmVu dF90cmlnZ2VyX2lkID0gZXZlbnRfdHJpZ2dlcl91dGlscy5jcmVhdGVfZXZl bnRfdHJpZ2dlcigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLmRi X25hbWUsIHNlbGYuc2NoZW1hX25hbWUsIHNlbGYuZnVuY19uYW1lLAorICAg ICAgICAgICAgc2VsZi50cmlnZ2VyX25hbWUpCiAKICAgICBkZWYgcnVuVGVz dChzZWxmKToKLSAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRj aCBldmVudCB0cmlnZ2VyIHVuZGVyIGRhdGFiYXNlIG5vZGUuICIiIgotCi0g ICAgICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQotICAgICAgICBzZXJ2 ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAgICAgICBkYl9pZHNfZGljdCA9 IGFsbF9pZFsiZGlkIl1bMF0KLSAgICAgICAgZXZlbnRfdHJpZ2dlcl9pZHNf ZGljdCA9IGFsbF9pZFsiZXRpZCJdWzBdCi0KLSAgICAgICAgZm9yIHNlcnZl cl9pZCBpbiBzZXJ2ZXJfaWRzOgotICAgICAgICAgICAgZGJfaWQgPSBkYl9p ZHNfZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgICAgIGV2ZW50X3Ry aWdnZXJfaWQgPSBldmVudF90cmlnZ2VyX2lkc19kaWN0W3NlcnZlcl9pZF0K LQotICAgICAgICAgICAgcmVzcG9uc2UgPSBldmVudF90cmlnZ2VyX3V0aWxz LnZlcmlmeV9ldmVudF90cmlnZ2VyKAotICAgICAgICAgICAgICAgIHNlbGYu dGVzdGVyLCB1dGlscy5TRVJWRVJfR1JPVVAsIHNlcnZlcl9pZCwgZGJfaWQs Ci0gICAgICAgICAgICAgICAgZXZlbnRfdHJpZ2dlcl9pZCkKLQotICAgICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUs IDIwMCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNs YXNzKGNscyk6Ci0gICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0 aGUgYWRkZWQgc2NoZW1hLCBkYXRhYmFzZSwgc2VydmVyIGFuZCBwYXJlbnQK LSAgICAgICAgaWQgZmlsZQotCi0gICAgICAgIDpyZXR1cm46IE5vbmUKKyAg ICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBhZGRlZCBldmVu dCB0cmlnZ2VyIHVuZGVyIHRlc3QgZGF0YWJhc2UuCiAgICAgICAgICIiIgot Ci0gICAgICAgIGV2ZW50X3RyaWdnZXJfdXRpbHMuZGVsZXRlX2V2ZW50X3Ry aWdnZXIoY2xzLnRlc3RlcikKLSAgICAgICAgZnVuY191dGlscy5kZWxldGVf dHJpZ2dlcl9mdW5jdGlvbihjbHMudGVzdGVyKQotICAgICAgICBzY2hlbWFf dXRpbHMuZGVsZXRlX3NjaGVtYShjbHMudGVzdGVyKQotICAgICAgICBkYXRh YmFzZV91dGlscy5kZWxldGVfZGF0YWJhc2UoY2xzLnRlc3RlcikKLSAgICAg ICAgc2VydmVyX3V0aWxzLmRlbGV0ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAg ICAgICAgdXRpbHMuZGVsZXRlX3BhcmVudF9pZF9maWxlKCkKLQorICAgICAg ICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNl bGYsIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwg c2VsZi5kYl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJj b25uZWN0ZWQiXToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291 bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UuIikKKyAgICAgICAgc2NoZW1h X3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKHNlbGYu c2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zY2hlbWFfbmFtZSkKKyAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25z ZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZp bmQgdGhlIHNjaGVtYS4iKQorICAgICAgICBmdW5jX25hbWUgPSBzZWxmLmZ1 bmN0aW9uX2luZm9bMV0KKyAgICAgICAgZnVuY19yZXNwb25zZSA9IHRyaWdn ZXJfZnVuY3NfdXRpbHMudmVyaWZ5X3RyaWdnZXJfZnVuY3Rpb24oCisgICAg ICAgICAgICBzZWxmLnNlcnZlciwKKyAgICAgICAgICAgIHNlbGYuZGJfbmFt ZSwKKyAgICAgICAgICAgIGZ1bmNfbmFtZSkKKyAgICAgICAgaWYgbm90IGZ1 bmNfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNv dWxkIG5vdCBmaW5kIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uLiIpCisgICAgICAg IHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIuZ2V0KAorICAgICAgICAgICAgc2Vs Zi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJworICAgICAg ICAgICAgKyBzdHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsgc3RyKHNlbGYu ZGJfaWQpICsgJy8nICsKKyAgICAgICAgICAgIHN0cihzZWxmLmV2ZW50X3Ry aWdnZXJfaWQpLAorICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pz b24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0 dXNfY29kZSwgMjAwKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAg ICAgICAjIERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCisgICAgICAgIGRhdGFi YXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2 ZXJfaWQsIHNlbGYuZGJfaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXZlbnRf dHJpZ2dlcnMvdGVzdHMvdGVzdF9ldmVudF90cmlnZ2VyX3B1dC5weSBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9ldmVudF90cmlnZ2Vycy90ZXN0cy90ZXN0X2V2ZW50X3RyaWdnZXJf cHV0LnB5CmluZGV4IDMxZDNlNTUuLjJlOWMxYmIgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9ldmVudF90cmlnZ2Vycy90ZXN0cy90ZXN0X2V2ZW50X3RyaWdnZXJf cHV0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9ldmVudF90cmlnZ2Vycy90ZXN0cy90ZXN0 X2V2ZW50X3RyaWdnZXJfcHV0LnB5CkBAIC02LDEwOSArNiw4MCBAQAogIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQg dXVpZAoraW1wb3J0IGpzb24KIAogZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRl IGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgotZnJvbSByZWdyZXNzaW9uIGlt cG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9y dCBcCiAgICAgdXRpbHMgYXMgZGF0YWJhc2VfdXRpbHMKLWZyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQg dXRpbHMgYXMgc2VydmVyX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGVzdHMg aW1wb3J0IFwKICAgICB1dGlscyBhcyBzY2hlbWFfdXRpbHMKLWZyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu c2NoZW1hcy5mdW5jdGlvbnMudGVzdHMgXAotICAgIGltcG9ydCB1dGlscyBh cyBmdW5jX3V0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRp bHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25v ZGVfZGljdAorZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0cmlnZ2VyX2Z1bmNz X3V0aWxzCiBmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIGV2ZW50X3RyaWdnZXJf dXRpbHMKLWltcG9ydCBqc29uCi1mcm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1 cCBpbXBvcnQgYWR2YW5jZWRfY29uZmlnX2RhdGEKIAogCiBjbGFzcyBFdmVu dFRyaWdnZXJQdXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6Ci0gICAg IiIiIFRoaXMgY2xhc3Mgd2lsbCBmZXRjaCBhZGRlZCBldmVudCB0cmlnZ2Vy IHVuZGVyIGRhdGFiYXNlIG5vZGUuICIiIgotCisgICAgIiIiIFRoaXMgY2xh c3Mgd2lsbCBmZXRjaCBhZGRlZCBldmVudCB0cmlnZ2VyIHVuZGVyIHRlc3Qg ZGF0YWJhc2UuICIiIgogICAgIHNjZW5hcmlvcyA9IFsKICAgICAgICAgIyBG ZXRjaGluZyBkZWZhdWx0IFVSTCBmb3IgZXZlbnQgdHJpZ2dlciAgbm9kZS4K ICAgICAgICAgKCdGZXRjaCBFdmVudCBUcmlnZ2VyIE5vZGUgVVJMJywKICAg ICAgICAgIGRpY3QodXJsPScvYnJvd3Nlci9ldmVudF90cmlnZ2VyL29iai8n KSkKICAgICBdCiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBD bGFzcyhjbHMpOgotICAgICAgICAiIiIKLSAgICAgICAgICAgICAgVGhpcyBm dW5jdGlvbiBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgdGFza3M6Ci0gICAgICAg ICAgICAgIDEuIEFkZCBhbmQgY29ubmVjdCB0byB0aGUgdGVzdCBzZXJ2ZXIo cykKLSAgICAgICAgICAgICAgMi4gQWRkIGRhdGFiYXNlKHMpIGNvbm5lY3Rl ZCB0byBzZXJ2ZXIocykKLSAgICAgICAgICAgICAgMy4gQWRkIHNjaGVtYXMg dG8gY29ubmVjdGVkIGRhdGFiYXNlKHMpCi0gICAgICAgICAgICAgIDQuIEFk ZCB0cmlnZ2VyIGZ1bmN0aW9uKHMpIHRvIHNjaGVtYShzKQotICAgICAgICAg ICAgICA1LiBBZGQgZXZlbnQgdHJpZ2dlcihzKSB0byBkYXRhYmFzZShzKQot Ci0gICAgICAgICAgICAgOnJldHVybjogTm9uZQotICAgICAgICAiIiIKLQot ICAgICAgICAjIEFkZCB0aGUgc2VydmVyCi0gICAgICAgIHNlcnZlcl91dGls cy5hZGRfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgIyBDb25uZWN0 IHRvIHNlcnZlcnMKLSAgICAgICAgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3Bv bnNlLCBjbHMuc2VydmVyX2dyb3VwLCBjbHMuc2VydmVyX2lkcyA9IFwKLSAg ICAgICAgICAgIHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihjbHMudGVz dGVyKQotCi0gICAgICAgIGlmIGxlbihjbHMuc2VydmVyX2Nvbm5lY3RfcmVz cG9uc2UpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5v IFNlcnZlcihzKSBjb25uZWN0ZWQgdG8gYWRkIHRoZSBkYXRhYmFzZSEhISIp Ci0KLSAgICAgICAgIyBBZGQgZGF0YWJhc2VzIHRvIGNvbm5lY3RlZCBzZXJ2 ZXJzCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmFkZF9kYXRhYmFzZShjbHMu dGVzdGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2VydmVyX2lkcykK LQotICAgICAgICBzY2hlbWFfdXRpbHMuYWRkX3NjaGVtYXMoY2xzLnRlc3Rl cikKLQotICAgICAgICBmdW5jX3V0aWxzLmFkZF90cmlnZ2VyX2Z1bmN0aW9u KGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2Vy dmVyX2lkcykKLQotICAgICAgICBldmVudF90cmlnZ2VyX3V0aWxzLmFkZF9l dmVudF90cmlnZ2VyKGNscy50ZXN0ZXIpCisgICAgZGVmIHNldFVwKHNlbGYp OgorICAgICAgICBzZWxmLnNjaGVtYV9kYXRhID0gcGFyZW50X25vZGVfZGlj dFsnc2NoZW1hJ11bLTFdCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gc2Vs Zi5zY2hlbWFfZGF0YVsnc2VydmVyX2lkJ10KKyAgICAgICAgc2VsZi5kYl9p ZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ2RiX2lkJ10KKyAgICAgICAgc2VsZi5z Y2hlbWFfbmFtZSA9IHNlbGYuc2NoZW1hX2RhdGFbJ3NjaGVtYV9uYW1lJ10K KyAgICAgICAgc2VsZi5zY2hlbWFfaWQgPSBzZWxmLnNjaGVtYV9kYXRhWydz Y2hlbWFfaWQnXQorICAgICAgICBzZWxmLmV4dGVuc2lvbl9uYW1lID0gInBv c3RncmVzX2ZkdyIKKyAgICAgICAgc2VsZi5kYl9uYW1lID0gcGFyZW50X25v ZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQorICAgICAgICBz ZWxmLmRiX3VzZXIgPSBzZWxmLnNlcnZlclsidXNlcm5hbWUiXQorICAgICAg ICBzZWxmLmZ1bmNfbmFtZSA9ICJ0cmlnZ2VyX2Z1bmNfJXMiICUgc3RyKHV1 aWQudXVpZDQoKSlbMTo2XQorICAgICAgICBzZWxmLnRyaWdnZXJfbmFtZSA9 ICJldmVudF90cmlnZ2VyX3B1dF8lcyIgJSAoc3RyKHV1aWQudXVpZDQoKSlb MTo2XSkKKyAgICAgICAgc2VsZi5mdW5jdGlvbl9pbmZvID0gdHJpZ2dlcl9m dW5jc191dGlscy5jcmVhdGVfdHJpZ2dlcl9mdW5jdGlvbigKKyAgICAgICAg ICAgIHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUsIHNlbGYuc2NoZW1hX25h bWUsIHNlbGYuZnVuY19uYW1lKQorICAgICAgICBzZWxmLmV2ZW50X3RyaWdn ZXJfaWQgPSBldmVudF90cmlnZ2VyX3V0aWxzLmNyZWF0ZV9ldmVudF90cmln Z2VyKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwg c2VsZi5zY2hlbWFfbmFtZSwgc2VsZi5mdW5jX25hbWUsCisgICAgICAgICAg ICBzZWxmLnRyaWdnZXJfbmFtZSkKIAogICAgIGRlZiBydW5UZXN0KHNlbGYp OgotICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSBldmVu dCB0cmlnZ2VyIHVuZGVyIGRhdGFiYXNlIG5vZGUuICIiIgotCi0gICAgICAg IGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQotICAgICAgICBzZXJ2ZXJfaWRz ID0gYWxsX2lkWyJzaWQiXQotICAgICAgICBkYl9pZHNfZGljdCA9IGFsbF9p ZFsiZGlkIl1bMF0KLSAgICAgICAgZXZlbnRfdHJpZ2dlcl9pZHNfZGljdCA9 IGFsbF9pZFsiZXRpZCJdWzBdCi0KLSAgICAgICAgZm9yIHNlcnZlcl9pZCBp biBzZXJ2ZXJfaWRzOgotICAgICAgICAgICAgZGJfaWQgPSBkYl9pZHNfZGlj dFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgICAgIGV2ZW50X3RyaWdnZXJf aWQgPSBldmVudF90cmlnZ2VyX2lkc19kaWN0W3NlcnZlcl9pZF0KLQotICAg ICAgICAgICAgcmVzcG9uc2UgPSBldmVudF90cmlnZ2VyX3V0aWxzLnZlcmlm eV9ldmVudF90cmlnZ2VyKAotICAgICAgICAgICAgICAgIHNlbGYudGVzdGVy LCB1dGlscy5TRVJWRVJfR1JPVVAsIHNlcnZlcl9pZCwgZGJfaWQsCi0gICAg ICAgICAgICAgICAgZXZlbnRfdHJpZ2dlcl9pZCkKLQotICAgICAgICAgICAg aWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwOgotICAgICAgICAgICAg ICAgIGRhdGEgPSBcCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg ICAgICAgICAgICAgICAgICJjb21tZW50IjoKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhZHZhbmNlZF9jb25maWdfZGF0YVsnZXZlbnRfdHJpZ2dl cl91cGRhdGVfZGF0YSddCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg Wydjb21tZW50J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAiaWQiOiBl dmVudF90cmlnZ2VyX2lkCi0gICAgICAgICAgICAgICAgICAgIH0KLQotICAg ICAgICAgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dCgK LSAgICAgICAgICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMuU0VS VkVSX0dST1VQKSArICcvJyArCi0gICAgICAgICAgICAgICAgICAgIHN0cihz ZXJ2ZXJfaWQpICsgJy8nICsgc3RyKGRiX2lkKSArCi0gICAgICAgICAgICAg ICAgICAgICcvJyArIHN0cihldmVudF90cmlnZ2VyX2lkKSwKLSAgICAgICAg ICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRhdGEpLAotICAgICAgICAg ICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCi0KLSAgICAgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwdXRfcmVzcG9uc2Uuc3RhdHVz X2NvZGUsIDIwMCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFy RG93bkNsYXNzKGNscyk6Ci0gICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGVs ZXRlcyB0aGUgYWRkZWQgc2NoZW1hLCBkYXRhYmFzZSwgc2VydmVyIGFuZCBw YXJlbnQKLSAgICAgICAgaWQgZmlsZQotCi0gICAgICAgIDpyZXR1cm46IE5v bmUKLSAgICAgICAgIiIiCisgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdp bGwgdXBkYXRlIGV2ZW50IHRyaWdnZXIgdW5kZXIgdGVzdCBkYXRhYmFzZS4g IiIiCisgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3Rf ZGF0YWJhc2Uoc2VsZiwgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c2VydmVyX2lkLCBzZWxmLmRiX2lkKQorICAgICAgICBpZiBub3QgZGJfY29u WydkYXRhJ11bImNvbm5lY3RlZCJdOgorICAgICAgICAgICAgcmFpc2UgRXhj ZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZS4iKQorICAg ICAgICBzY2hlbWFfcmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3Nj aGVtYXMoc2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRiX25hbWUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLnNjaGVtYV9uYW1lKQorICAgICAgICBpZiBub3Qgc2No ZW1hX3Jlc3BvbnNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJD b3VsZCBub3QgZmluZCB0aGUgc2NoZW1hLiIpCisgICAgICAgIGZ1bmNfbmFt ZSA9IHNlbGYuZnVuY3Rpb25faW5mb1sxXQorICAgICAgICBmdW5jX3Jlc3Bv bnNlID0gdHJpZ2dlcl9mdW5jc191dGlscy52ZXJpZnlfdHJpZ2dlcl9mdW5j dGlvbigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLAorICAgICAgICAgICAg c2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgZnVuY19uYW1lKQorICAgICAg ICBpZiBub3QgZnVuY19yZXNwb25zZToKKyAgICAgICAgICAgIHJhaXNlIEV4 Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgdGhlIHRyaWdnZXIgZnVuY3Rpb24u IikKKyAgICAgICAgdHJpZ2dlcl9yZXNwb25zZSA9IGV2ZW50X3RyaWdnZXJf dXRpbHMudmVyaWZ5X2V2ZW50X3RyaWdnZXIoCisgICAgICAgICAgICBzZWxm LnNlcnZlciwgc2VsZi5kYl9uYW1lLCBzZWxmLnRyaWdnZXJfbmFtZSkKKyAg ICAgICAgaWYgbm90IHRyaWdnZXJfcmVzcG9uc2U6CisgICAgICAgICAgICBy YWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIGV2ZW50IHRyaWdnZXIu IikKKyAgICAgICAgZGF0YSA9IHsKKyAgICAgICAgICAgICAgICAiY29tbWVu dCI6ICJUaGlzIGlzIGV2ZW50IHRyaWdnZXIgdXBkYXRlIGNvbW1lbnQiLAor ICAgICAgICAgICAgICAgICJpZCI6IHNlbGYuZXZlbnRfdHJpZ2dlcl9pZAor ICAgICAgICAgICAgfQorICAgICAgICBwdXRfcmVzcG9uc2UgPSBzZWxmLnRl c3Rlci5wdXQoCisgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1dGlscy5T RVJWRVJfR1JPVVApICsgJy8nICsKKyAgICAgICAgICAgIHN0cihzZWxmLnNl cnZlcl9pZCkgKyAnLycgKyBzdHIoc2VsZi5kYl9pZCkgKworICAgICAgICAg ICAgJy8nICsgc3RyKHNlbGYuZXZlbnRfdHJpZ2dlcl9pZCksCisgICAgICAg ICAgICBkYXRhPWpzb24uZHVtcHMoZGF0YSksCisgICAgICAgICAgICBmb2xs b3dfcmVkaXJlY3RzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KHB1dF9yZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorCisgICAgZGVmIHRl YXJEb3duKHNlbGYpOgorICAgICAgICAjIERpc2Nvbm5lY3QgdGhlIGRhdGFi YXNlCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJh c2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCiAKLSAgICAg ICAgZXZlbnRfdHJpZ2dlcl91dGlscy5kZWxldGVfZXZlbnRfdHJpZ2dlcihj bHMudGVzdGVyKQotICAgICAgICBmdW5jX3V0aWxzLmRlbGV0ZV90cmlnZ2Vy X2Z1bmN0aW9uKGNscy50ZXN0ZXIpCi0gICAgICAgIHNjaGVtYV91dGlscy5k ZWxldGVfc2NoZW1hKGNscy50ZXN0ZXIpCi0gICAgICAgIGRhdGFiYXNlX3V0 aWxzLmRlbGV0ZV9kYXRhYmFzZShjbHMudGVzdGVyKQotICAgICAgICBzZXJ2 ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICB1 dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2V2ZW50X3RyaWdnZXJzL3Rlc3RzL3V0aWxzLnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V2 ZW50X3RyaWdnZXJzL3Rlc3RzL3V0aWxzLnB5CmluZGV4IDFmY2VjYjcuLjk1 NjcxYzIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9ldmVudF90cmlnZ2Vycy90ZXN0 cy91dGlscy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXZlbnRfdHJpZ2dlcnMvdGVzdHMv dXRpbHMucHkKQEAgLTYsMTQzICs2LDgyIEBACiAjIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQogIwog IyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2Zyb20gX19mdXR1cmVfXyBpbXBv cnQgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCBzeXMKK2ltcG9ydCB0cmFjZWJh Y2sKIAotaW1wb3J0IG9zCi1pbXBvcnQgcGlja2xlCi1pbXBvcnQganNvbgot aW1wb3J0IHV1aWQKLWZyb20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9y dCBhZHZhbmNlZF9jb25maWdfZGF0YSwgcGlja2xlX3BhdGgKLWZyb20gcmVn cmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwotZnJvbSBwZ2Fk bWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50 ZXN0cyBpbXBvcnQgXAotICAgIHV0aWxzIGFzIGRhdGFiYXNlX3V0aWxzCi1m cm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVz dHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwotZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hl bWFzLmZ1bmN0aW9ucy50ZXN0cyBcCi0gICAgaW1wb3J0IHV0aWxzIGFzIGZ1 bmNfdXRpbHMKK2Zyb20gcmVncmVzc2lvbi50ZXN0X3V0aWxzIGltcG9ydCBn ZXRfZGJfY29ubmVjdGlvbgogCi1FVkVOVF9UUklHR0VSX1VSTCA9ICcvYnJv d3Nlci9ldmVudF90cmlnZ2VyL29iai8nCiAKLQotZGVmIGdldF9ldmVudF90 cmlnZ2VyX2NvbmZpZ19kYXRhKHNjaGVtYV9uYW1lLCBzZXJ2ZXJfY29ubmVj dF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy aWdnZXJfZnVuY19uYW1lKToKLSAgICBhZHZfY29uZmlnX2RhdGEgPSBOb25l Ci0gICAgZGJfdXNlciA9IHNlcnZlcl9jb25uZWN0X2RhdGFbJ2RhdGEnXVsn dXNlciddWyduYW1lJ10KLQotICAgICMgR2V0IHRoZSBjb25maWcgZGF0YSBv ZiBhcHByb3ByaWF0ZSBkYiB1c2VyCi0gICAgZm9yIGNvbmZpZ190ZXN0X2Rh dGEgaW4gYWR2YW5jZWRfY29uZmlnX2RhdGFbJ2V2ZW50X3RyaWdnZXJfY3Jl ZGVudGlhbHMnXToKLSAgICAgICAgaWYgZGJfdXNlciA9PSBjb25maWdfdGVz dF9kYXRhWydvd25lciddOgotICAgICAgICAgICAgYWR2X2NvbmZpZ19kYXRh ID0gY29uZmlnX3Rlc3RfZGF0YQotCi0gICAgZGF0YSA9IHsKLSAgICAgICAg ImVuYWJsZWQiOiBhZHZfY29uZmlnX2RhdGFbJ2VuYWJsZSddLAotICAgICAg ICAiZXZlbnRmdW5uYW1lIjogInswfS57MX0iLmZvcm1hdChzY2hlbWFfbmFt ZSwgdHJpZ2dlcl9mdW5jX25hbWUpLAotICAgICAgICAiZXZlbnRuYW1lIjog YWR2X2NvbmZpZ19kYXRhWydldmVudF9uYW1lJ10sCi0gICAgICAgICJldmVu dG93bmVyIjogYWR2X2NvbmZpZ19kYXRhWydvd25lciddLAotICAgICAgICAi bmFtZSI6ICJldmVudF90cmlnZ2VyX3t9Ii5mb3JtYXQoc3RyKHV1aWQudXVp ZDQoKSlbMTo0XSksCi0gICAgICAgICJwcm92aWRlcnMiOiBhZHZfY29uZmln X2RhdGFbJ3Byb3ZpZGVyJ10KLSAgICB9Ci0gICAgcmV0dXJuIGRhdGEKLQot Ci1kZWYgYWRkX2V2ZW50X3RyaWdnZXIodGVzdGVyKToKLSAgICBhbGxfaWQg PSB1dGlscy5nZXRfaWRzKCkKLSAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJz aWQiXQotICAgIGRiX2lkc19kaWN0ID0gYWxsX2lkWyJkaWQiXVswXQotICAg IHNjaGVtYV9pbmZvX2RpY3QgPSBhbGxfaWRbInNjaWQiXVswXQotICAgIHRy aWdnZXJfZnVuY19pbmZvX2RpY3QgPSBhbGxfaWRbInRmbmlkIl1bMF0KLQot ICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKLSAgICAgICAgZGJf aWQgPSBkYl9pZHNfZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgZGJf Y29uID0gZGF0YWJhc2VfdXRpbHMudmVyaWZ5X2RhdGFiYXNlKHRlc3Rlciwg dXRpbHMuU0VSVkVSX0dST1VQLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkLCBkYl9pZCkKLSAg ICAgICAgaWYgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgotICAgICAg ICAgICAgc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMu dmVyaWZ5X3NlcnZlcigKLSAgICAgICAgICAgICAgICB0ZXN0ZXIsIHV0aWxz LlNFUlZFUl9HUk9VUCwgc2VydmVyX2lkKQotCi0gICAgICAgICAgICBzY2hl bWFfaW5mbyA9IHNjaGVtYV9pbmZvX2RpY3RbaW50KHNlcnZlcl9pZCldCi0g ICAgICAgICAgICB0cmlnZ2VyX2Z1bmNfbGlzdCA9IHRyaWdnZXJfZnVuY19p bmZvX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAgICAgICB0cmlnZ2Vy X2Z1bmNfaW5mbyA9IFwKLSAgICAgICAgICAgICAgICBmaWx0ZXIobGFtYmRh IHg6IHhbMl0gPT0gImV2ZW50X3RyaWdnZXIiLCB0cmlnZ2VyX2Z1bmNfbGlz dClbMF0KLSAgICAgICAgICAgIHRyaWdnZXJfZnVuY19uYW1lID0gdHJpZ2dl cl9mdW5jX2luZm9bMV0ucmVwbGFjZSgiKCkiLCAiIikKLSAgICAgICAgICAg IHRyaWdnZXJfZnVuY19pZCA9IHRyaWdnZXJfZnVuY19pbmZvWzBdCi0KLSAg ICAgICAgICAgIHRyaWdnZXJfZnVuY19yZXNwb25zZSA9IFwKLSAgICAgICAg ICAgICAgICBmdW5jX3V0aWxzLnZlcmlmeV90cmlnZ2VyX2Z1bmN0aW9uKHRl c3Rlciwgc2VydmVyX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGJfaWQsIHNjaGVtYV9pbmZvWzBd LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHJpZ2dlcl9mdW5jX2lkKQotICAgICAgICAgICAgaWYgdHJp Z2dlcl9mdW5jX3Jlc3BvbnNlLnN0YXR1c19jb2RlID09IDIwMDoKLSAgICAg ICAgICAgICAgICBkYXRhID0gZ2V0X2V2ZW50X3RyaWdnZXJfY29uZmlnX2Rh dGEoCi0gICAgICAgICAgICAgICAgICAgIHNjaGVtYV9pbmZvWzFdLAotICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgdHJp Z2dlcl9mdW5jX25hbWUpCi0KLSAgICAgICAgICAgICAgICByZXNwb25zZSA9 IHRlc3Rlci5wb3N0KAotICAgICAgICAgICAgICAgICAgICBFVkVOVF9UUklH R0VSX1VSTCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKLSAg ICAgICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKyBzdHIo ZGJfaWQpICsKLSAgICAgICAgICAgICAgICAgICAgJy8nLCBkYXRhPWpzb24u ZHVtcHMoZGF0YSksCi0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlw ZT0naHRtbC9qc29uJykKLSAgICAgICAgICAgIGFzc2VydCByZXNwb25zZS5z dGF0dXNfY29kZSA9PSAyMDAKLSAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEg PSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQot ICAgICAgICAgICAgd3JpdGVfZXZlbnRfdHJpZ2dlcl9pbmZvKHJlc3BvbnNl X2RhdGEsIHNlcnZlcl9pZCkKLQotCi1kZWYgd3JpdGVfZXZlbnRfdHJpZ2dl cl9pbmZvKHJlc3BvbnNlX2RhdGEsIHNlcnZlcl9pZCk6CitkZWYgY3JlYXRl X2V2ZW50X3RyaWdnZXIoc2VydmVyLCBkYl9uYW1lLCBzY2hlbWFfbmFtZSwg ZnVuY19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJf bmFtZSk6CiAgICAgIiIiCi0gICAgVGhpcyBmdW5jdGlvbiB3cml0ZXMgdGhl IHNjaGVtYSBpZCBpbnRvIHBhcmVudF9pZC5wa2wKLQotICAgIDpwYXJhbSBy ZXNwb25zZV9kYXRhOiBleHRlbnNpb24gYWRkIHJlc3BvbnNlIGRhdGEKLSAg ICA6dHlwZSByZXNwb25zZV9kYXRhOiBkaWN0Ci0gICAgOnBhcmFtIHNlcnZl cl9pZDogc2VydmVyIGlkCi0gICAgOnR5cGUgc2VydmVyX2lkOiBzdHIKLSAg ICA6cmV0dXJuOiBOb25lCisgICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIHRo ZSBldmVudCB0cmlnZ2VyIGludG8gdGVzdCBkYXRhYmFzZS4KKyAgICA6cGFy YW0gc2VydmVyOiBzZXJ2ZXIgZGV0YWlscworICAgIDp0eXBlIHNlcnZlcjog ZGljdAorICAgIDpwYXJhbSBkYl9uYW1lOiBkYXRhYmFzZSBuYW1lCisgICAg OnR5cGUgZGJfbmFtZTogc3RyCisgICAgOnBhcmFtIHNjaGVtYV9uYW1lOiBz Y2hlbWEgbmFtZQorICAgIDp0eXBlIHNjaGVtYV9uYW1lOiBzdHIKKyAgICA6 cGFyYW0gZnVuY19uYW1lOiBmdW5jdGlvbiBuYW1lCisgICAgOnR5cGUgZnVu Y19uYW1lOiBzdHIKKyAgICA6cGFyYW0gdHJpZ2dlcl9uYW1lOiB0cmlnZ2Vy IG5hbWUKKyAgICA6dHlwZSB0cmlnZ2VyX25hbWU6IHN0cgorICAgIDpyZXR1 cm4gdHJpZ2dlcl9pZDogdHJpZ2dlciBpZAorICAgIDpydHlwZTogaW50CiAg ICAgIiIiCi0KLSAgICBldmVudF90cmlnZ2VyX2lkID0gcmVzcG9uc2VfZGF0 YVsnbm9kZSddWydfaWQnXQotICAgIHBpY2tsZV9pZF9kaWN0ID0gdXRpbHMu Z2V0X3BpY2tsZV9pZF9kaWN0KCkKLSAgICBpZiBvcy5wYXRoLmlzZmlsZShw aWNrbGVfcGF0aCk6Ci0gICAgICAgIGV4aXN0aW5nX3NlcnZlcl9pZCA9IG9w ZW4ocGlja2xlX3BhdGgsICdyYicpCi0gICAgICAgIHRvbF9zZXJ2ZXJfaWQg PSBwaWNrbGUubG9hZChleGlzdGluZ19zZXJ2ZXJfaWQpCi0gICAgICAgIHBp Y2tsZV9pZF9kaWN0ID0gdG9sX3NlcnZlcl9pZAotICAgIGlmICdldGlkJyBp biBwaWNrbGVfaWRfZGljdDoKLSAgICAgICAgaWYgcGlja2xlX2lkX2RpY3Rb J2V0aWQnXToKLSAgICAgICAgICAgICMgQWRkIHRoZSBldmVudF90cmlnZ2Vy X2lkIGFzIHZhbHVlIGluIGRpY3QKLSAgICAgICAgICAgIHBpY2tsZV9pZF9k aWN0WyJldGlkIl1bMF0udXBkYXRlKHtzZXJ2ZXJfaWQ6IGV2ZW50X3RyaWdn ZXJfaWR9KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBDcmVhdGUg bmV3IGRpY3Qgd2l0aCBzZXJ2ZXJfaWQgYW5kIGV2ZW50X3RyaWdnZXJfaWQK LSAgICAgICAgICAgIHBpY2tsZV9pZF9kaWN0WyJldGlkIl0uYXBwZW5kKHtz ZXJ2ZXJfaWQ6IGV2ZW50X3RyaWdnZXJfaWR9KQotICAgIGV2ZW50X3RyaWdn ZXJfb3V0cHV0ID0gb3BlbihwaWNrbGVfcGF0aCwgJ3diJykKLSAgICBwaWNr bGUuZHVtcChwaWNrbGVfaWRfZGljdCwgZXZlbnRfdHJpZ2dlcl9vdXRwdXQp Ci0gICAgZXZlbnRfdHJpZ2dlcl9vdXRwdXQuY2xvc2UoKQotCi0KLWRlZiB2 ZXJpZnlfZXZlbnRfdHJpZ2dlcih0ZXN0ZXIsIHNlcnZlcl9ncm91cCwgc2Vy dmVyX2lkLCBkYl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBldmVu dF90cmlnZ2VyX2lkKToKLSAgICByZXNwb25zZSA9IHRlc3Rlci5nZXQoRVZF TlRfVFJJR0dFUl9VUkwgKyBzdHIoc2VydmVyX2dyb3VwKSArICcvJyArCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8n ICsgc3RyKGRiX2lkKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcv JyArIHN0cihldmVudF90cmlnZ2VyX2lkKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQotICAgIHJldHVy biByZXNwb25zZQotCi0KLWRlZiBkZWxldGVfZXZlbnRfdHJpZ2dlcih0ZXN0 ZXIpOgotICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQotICAgIHNlcnZl cl9pZHMgPSBhbGxfaWRbInNpZCJdCi0gICAgZGJfaWRzX2RpY3QgPSBhbGxf aWRbImRpZCJdWzBdCi0gICAgZXZlbnRfdHJpZ2dlcl9pZHNfZGljdCA9IGFs bF9pZFsiZXRpZCJdWzBdCi0KLSAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZl cl9pZHM6Ci0gICAgICAgIGRiX2lkID0gZGJfaWRzX2RpY3RbaW50KHNlcnZl cl9pZCldCi0gICAgICAgIGV2ZW50X3RyaWdnZXJfaWQgPSBldmVudF90cmln Z2VyX2lkc19kaWN0W3NlcnZlcl9pZF0KLQotICAgICAgICByZXNwb25zZSA9 IHZlcmlmeV9ldmVudF90cmlnZ2VyKHRlc3RlciwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vy dmVyX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRiX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGV2ZW50X3RyaWdnZXJfaWQpCi0gICAgICAgIGlmIHJlc3BvbnNl LnN0YXR1c19jb2RlID09IDIwMDoKLSAgICAgICAgICAgIGRlbF9yZXNwb25z ZSA9IHRlc3Rlci5kZWxldGUoCi0gICAgICAgICAgICAgICAgRVZFTlRfVFJJ R0dFUl9VUkwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCi0g ICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKwotICAgICAg ICAgICAgICAgIHN0cihkYl9pZCkgKyAnLycgKwotICAgICAgICAgICAgICAg IHN0cihldmVudF90cmlnZ2VyX2lkKSwKLSAgICAgICAgICAgICAgICBmb2xs b3dfcmVkaXJlY3RzPVRydWUpCi0KLSAgICAgICAgICAgIHJldHVybiBkZWxf cmVzcG9uc2UKKyAgICB0cnk6CisgICAgICAgIGNvbm5lY3Rpb24gPSBnZXRf ZGJfY29ubmVjdGlvbihkYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyWyd1c2VybmFtZSddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydkYl9w YXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3BvcnQnXSkKKyAgICAgICAgb2xk X2lzb2xhdGlvbl9sZXZlbCA9IGNvbm5lY3Rpb24uaXNvbGF0aW9uX2xldmVs CisgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xhdGlvbl9sZXZlbCgwKQor ICAgICAgICBwZ19jdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCisgICAg ICAgIHBnX2N1cnNvci5leGVjdXRlKCcnJ0NSRUFURSBFVkVOVCBUUklHR0VS ICIlcyIgT04gRERMX0NPTU1BTkRfRU5ECisgICAgICAgICBFWEVDVVRFIFBS T0NFRFVSRSAiJXMiLiIlcyIoKScnJyAlICh0cmlnZ2VyX25hbWUsIHNjaGVt YV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZnVuY19uYW1lKSkKKyAgICAgICAgY29ubmVjdGlvbi5zZXRf aXNvbGF0aW9uX2xldmVsKG9sZF9pc29sYXRpb25fbGV2ZWwpCisgICAgICAg IGNvbm5lY3Rpb24uY29tbWl0KCkKKyAgICAgICAgIyBHZXQgJ29pZCcgZnJv bSBuZXdseSBjcmVhdGVkIGV2ZW50IHRyaWdnZXIKKyAgICAgICAgcGdfY3Vy c29yLmV4ZWN1dGUoCisgICAgICAgICAgICAiU0VMRUNUIG9pZCBGUk9NIHBn X2V2ZW50X3RyaWdnZXIgV0hFUkUgZXZ0bmFtZSA9ICclcyciCisgICAgICAg ICAgICAlIHRyaWdnZXJfbmFtZSkKKyAgICAgICAgb2lkID0gcGdfY3Vyc29y LmZldGNob25lKCkKKyAgICAgICAgdHJpZ2dlcl9pZCA9ICcnCisgICAgICAg IGlmIG9pZDoKKyAgICAgICAgICAgIHRyaWdnZXJfaWQgPSBvaWRbMF0KKyAg ICAgICAgY29ubmVjdGlvbi5jbG9zZSgpCisgICAgICAgIHJldHVybiB0cmln Z2VyX2lkCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgdHJhY2Vi YWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisKKworZGVmIHZlcmlm eV9ldmVudF90cmlnZ2VyKHNlcnZlciwgZGJfbmFtZSwgdHJpZ2dlcl9uYW1l KToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBl dmVudCB0cmlnZ2VyIGlzIHByZXNlbnQgaW4gdGhlIGRhdGFiYXNlCisgICAg OnBhcmFtIHNlcnZlcjogc2VydmVyIGRldGFpbHMKKyAgICA6dHlwZSBzZXJ2 ZXI6IGRpY3QKKyAgICA6cGFyYW0gZGJfbmFtZTogZGF0YWJhc2UgbmFtZQor ICAgIDp0eXBlIGRiX25hbWU6IHN0cgorICAgIDpwYXJhbSB0cmlnZ2VyX25h bWU6IHRyaWdnZXIgbmFtZSB0byBiZSB2ZXJpZmllZAorICAgIDp0eXBlIHRy aWdnZXJfbmFtZTogc3RyCisgICAgOnJldHVybiBldmVudF90cmlnZ2VyOiBl dmVudCB0cmlnZ2VyJ3MgZGV0YWlscworICAgIDpydHlwZSBldmVudF90cmln Z2VyOiB0dXBsZQorICAgICIiIgorICAgIHRyeToKKyAgICAgICAgY29ubmVj dGlvbiA9IGdldF9kYl9jb25uZWN0aW9uKGRiX25hbWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3VzZXJuYW1l J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsncG9ydCddKQor ICAgICAgICBwZ19jdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCisgICAg ICAgIHBnX2N1cnNvci5leGVjdXRlKAorICAgICAgICAgICAgIlNFTEVDVCBv aWQgRlJPTSBwZ19ldmVudF90cmlnZ2VyIFdIRVJFIGV2dG5hbWUgPSAnJXMn IgorICAgICAgICAgICAgJSB0cmlnZ2VyX25hbWUpCisgICAgICAgIGV2ZW50 X3RyaWdnZXIgPSBwZ19jdXJzb3IuZmV0Y2hvbmUoKQorICAgICAgICBjb25u ZWN0aW9uLmNsb3NlKCkKKyAgICAgICAgcmV0dXJuIGV2ZW50X3RyaWdnZXIK KyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICB0cmFjZWJhY2sucHJp bnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9l eHRlbnNpb25zL3Rlc3RzL3Rlc3RfZXh0ZW5zaW9uX2FkZC5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9leHRlbnNpb25zL3Rlc3RzL3Rlc3RfZXh0ZW5zaW9uX2FkZC5weQppbmRl eCA3ZTM0ODZlLi4zZmFjOTk3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5z aW9ucy90ZXN0cy90ZXN0X2V4dGVuc2lvbl9hZGQucHkKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L2V4dGVuc2lvbnMvdGVzdHMvdGVzdF9leHRlbnNpb25fYWRkLnB5CkBAIC02 LDY3ICs2LDQ5IEBACiAjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQogIwogIyAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rp b24KK2ltcG9ydCBqc29uCiAKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBp bXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBv cnQgcGFyZW50X25vZGVfZGljdAogZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0 ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIC4gaW1wb3J0IHV0aWxzIGFzIGV4 dGVuc2lvbl91dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dy b3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgXAogICAgIHV0 aWxzIGFzIGRhdGFiYXNlX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNl cnZlcl91dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydFwKLSAg ICB1dGlscyBhcyBzY2hlbWFfdXRpbHMKLQorZnJvbSAuIGltcG9ydCB1dGls cyBhcyBleHRlbnNpb25fdXRpbHMKIAogCiBjbGFzcyBFeHRlbnNpb25zQWRk VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgotCiAgICAgc2NlbmFyaW9z ID0gWwotICAgICAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3Ig ZXh0ZW5zaW9uIG5vZGUuCi0gICAgICAgICAgICAoJ0NoZWNrIEV4dGVuc2lv biBOb2RlJywgZGljdCh1cmw9Jy9icm93c2VyL2V4dGVuc2lvbi9vYmovJykp Ci0gICAgICAgIF0KLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRV cENsYXNzKGNscyk6Ci0gICAgICAgICIiIgotICAgICAgICAgICAgICBUaGlz IGZ1bmN0aW9uIHBlcmZvcm0gdGhlIGZvbGxvd2luZyB0YXNrczoKLSAgICAg ICAgICAgICAgMS4gQWRkIGFuZCBjb25uZWN0IHRvIHRoZSB0ZXN0IHNlcnZl cihzKQotICAgICAgICAgICAgICAyLiBBZGQgZGF0YWJhc2UocykgY29ubmVj dGVkIHRvIHNlcnZlcihzKQotICAgICAgICAgICAgICAzLiBBZGQgc2NoZW1h cyB0byBjb25uZWN0ZWQgZGF0YWJhc2UocykKLQotICAgICAgICAgICAgIDpy ZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBBZGQgdGhl IHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMu dGVzdGVyKQotCi0gICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXJzCi0gICAg ICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZlcl9n cm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0gICAgICAgICAgICBzZXJ2ZXJf dXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKLQotICAgICAgICBp ZiBsZW4oY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAg ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVj dGVkIHRvIGFkZCB0aGUgZGF0YWJhc2UhISEiKQotCi0gICAgICAgICMgQWRk IGRhdGFiYXNlcyB0byBjb25uZWN0ZWQgc2VydmVycwotICAgICAgICBkYXRh YmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRlc3RlciwgY2xzLnNlcnZl cl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCi0KLSAgICAgICAgc2NoZW1h X3V0aWxzLmFkZF9zY2hlbWFzKGNscy50ZXN0ZXIpCisgICAgICAgICMgRmV0 Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGV4dGVuc2lvbiBub2RlLgorICAgICAg ICAoJ0NoZWNrIEV4dGVuc2lvbiBOb2RlJywgZGljdCh1cmw9Jy9icm93c2Vy L2V4dGVuc2lvbi9vYmovJykpCisgICAgXQogCiAgICAgZGVmIHJ1blRlc3Qo c2VsZik6Ci0gICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWRkIGV4 dGVuc2lvbiB1bmRlciAxc3Qgc2VydmVyIG9mIHRyZWUgbm9kZS4gIiIiCi0K LSAgICAgICAgZXh0ZW5zaW9uX3V0aWxzLmFkZF9leHRlbnNpb25zKHNlbGYu dGVzdGVyKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3du Q2xhc3MoY2xzKToKLSAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBkZWxldGVz IHRoZSBhZGRlZCBzY2hlbWEsIGRhdGFiYXNlLCBzZXJ2ZXIgYW5kIHBhcmVu dAotICAgICAgICBpZCBmaWxlCi0KLSAgICAgICAgOnJldHVybjogTm9uZQor ICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCBleHRlbnNpb24g dW5kZXIgdGVzdCBzY2hlbWEuICIiIgorICAgICAgICBzZWxmLnNjaGVtYV9k YXRhID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCisgICAgICAg IHNlbGYuc2VydmVyX2lkID0gc2VsZi5zY2hlbWFfZGF0YVsic2VydmVyX2lk Il0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ2Ri X2lkJ10KKyAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHNlbGYuc2NoZW1h X2RhdGFbJ3NjaGVtYV9uYW1lJ10KKyAgICAgICAgZGJfY29uID0gZGF0YWJh c2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLlNF UlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRi X2lkKQorCisgICAgICAgIGlmIG5vdCBkYl9jb25bImluZm8iXSA9PSAiRGF0 YWJhc2UgY29ubmVjdGVkLiI6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRp b24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlLiIpCisgICAgICAg IHNlbGYuZGF0YSA9IGV4dGVuc2lvbl91dGlscy5nZXRfZXh0ZW5zaW9uX2Rh dGEoc2VsZi5zY2hlbWFfbmFtZSkKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxm LnRlc3Rlci5wb3N0KAorICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRp bHMuU0VSVkVSX0dST1VQKSArICcvJyArCisgICAgICAgICAgICBzdHIoc2Vs Zi5zZXJ2ZXJfaWQpICsgJy8nICsgc3RyKAorICAgICAgICAgICAgICAgIHNl bGYuZGJfaWQpICsgJy8nLAorICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBz KHNlbGYuZGF0YSksCisgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwv anNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0 YXR1c19jb2RlLCAyMDApCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6Cisg ICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGlzY29ubmVjdCB0aGUgdGVzdCBk YXRhYmFzZSBhbmQgZHJvcCBhZGRlZCBleHRlbnNpb24uCiAgICAgICAgICIi IgotCi0gICAgICAgIGV4dGVuc2lvbl91dGlscy5kZWxldGVfZXh0ZW5zaW9u KGNscy50ZXN0ZXIpCi0gICAgICAgIHNjaGVtYV91dGlscy5kZWxldGVfc2No ZW1hKGNscy50ZXN0ZXIpCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmRlbGV0 ZV9kYXRhYmFzZShjbHMudGVzdGVyKQotICAgICAgICBzZXJ2ZXJfdXRpbHMu ZGVsZXRlX3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICB1dGlscy5kZWxl dGVfcGFyZW50X2lkX2ZpbGUoKQorICAgICAgICBkYl9uYW1lID0gcGFyZW50 X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bJ2RiX25hbWUnXQorICAgICAg ICBleHRlbnNpb25fdXRpbHMuZHJvcF9leHRlbnNpb24oc2VsZi5zZXJ2ZXIs IGRiX25hbWUsIHNlbGYuZGF0YVsnbmFtZSddKQorICAgICAgICBkYXRhYmFz ZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVy X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuZGJfaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9u cy90ZXN0cy90ZXN0X2V4dGVuc2lvbl9kZWxldGUucHkgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0 ZW5zaW9ucy90ZXN0cy90ZXN0X2V4dGVuc2lvbl9kZWxldGUucHkKaW5kZXgg ZTkxNjRjZC4uYjU4MmU2NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lv bnMvdGVzdHMvdGVzdF9leHRlbnNpb25fZGVsZXRlLnB5CisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9leHRlbnNpb25zL3Rlc3RzL3Rlc3RfZXh0ZW5zaW9uX2RlbGV0ZS5weQpA QCAtMSwzICsxLDExIEBACisjICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg IworIyAjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMgIworIyAj IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKyMgIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVu ZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMgIworIyAjICMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwogIyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCkBAIC02LDY5ICsxNCw1MiBA QAogIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitm cm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiAKLWltcG9y dCBqc29uCiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VU ZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9u b2RlX2RpY3QKIGZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBh cyB1dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCi0gICAg dXRpbHMgYXMgc2NoZW1hX3V0aWxzCi1mcm9tIC4gaW1wb3J0IHV0aWxzIGFz IGV4dGVuc2lvbl91dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVy X2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgXAogICAg IHV0aWxzIGFzIGRhdGFiYXNlX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFz IHNlcnZlcl91dGlscworZnJvbSAuIGltcG9ydCB1dGlscyBhcyBleHRlbnNp b25fdXRpbHMKIAogCiBjbGFzcyBFeHRlbnNpb25zRGVsZXRlVGVzdENhc2Uo QmFzZVRlc3RHZW5lcmF0b3IpOgotCiAgICAgc2NlbmFyaW9zID0gWwotICAg ICAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3IgZXh0ZW5zaW9u IG5vZGUuCi0gICAgICAgICAgICAoJ0NoZWNrIEV4dGVuc2lvbiBOb2RlJywg ZGljdCh1cmw9Jy9icm93c2VyL2V4dGVuc2lvbi9vYmovJykpCi0gICAgICAg IF0KLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNs cyk6Ci0gICAgICAgICIiIgotICAgICAgICAgVGhpcyBmdW5jdGlvbiBwZXJm b3JtIHRoZSBmb2xsb3dpbmcgdGFza3M6Ci0gICAgICAgICAxLiBBZGQgYW5k IGNvbm5lY3QgdG8gdGhlIHRlc3Qgc2VydmVyKHMpCi0gICAgICAgICAyLiBB ZGQgZGF0YWJhc2UocykgY29ubmVjdGVkIHRvIHNlcnZlcihzKQotICAgICAg ICAgMy4gQWRkIHNjaGVtYXMgdG8gY29ubmVjdGVkIGRhdGFiYXNlKHMpCi0g ICAgICAgICA0LiBBZGQgZXh0ZW5zaW9uKHMpIHRvIHNjaGVtYShzKQotCi0g ICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAg IyBBZGQgdGhlIHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3Nl cnZlcihjbHMudGVzdGVyKQotCi0gICAgICAgICMgQ29ubmVjdCB0byBzZXJ2 ZXJzCi0gICAgICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xz LnNlcnZlcl9ncm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0gICAgICAgICAg ICBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKLQot ICAgICAgICBpZiBsZW4oY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9 PSAwOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIo cykgY29ubmVjdGVkIHRvIGFkZCB0aGUgZGF0YWJhc2UhISEiKQotCi0gICAg ICAgICMgQWRkIGRhdGFiYXNlcyB0byBjb25uZWN0ZWQgc2VydmVycwotICAg ICAgICBkYXRhYmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRlc3Rlciwg Y2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCi0KLSAgICAg ICAgIyBBZGQgc2NoZW1hKHMpIHRvIGRhdGFiYXNlKHMpCi0gICAgICAgIHNj aGVtYV91dGlscy5hZGRfc2NoZW1hcyhjbHMudGVzdGVyKQotCi0gICAgICAg ICMgQWRkIGV4dGVuc2lvbihzKSB0byBzY2hlbWEocykKLSAgICAgICAgZXh0 ZW5zaW9uX3V0aWxzLmFkZF9leHRlbnNpb25zKGNscy50ZXN0ZXIpCisgICAg ICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGV4dGVuc2lvbiBub2Rl LgorICAgICAgICAoJ0NoZWNrIEV4dGVuc2lvbiBOb2RlJywgZGljdCh1cmw9 Jy9icm93c2VyL2V4dGVuc2lvbi9vYmovJykpCisgICAgXQorCisgICAgZGVm IHNldFVwKHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxs IGNyZWF0ZSBleHRlbnNpb24uIiIiCisgICAgICAgIHNlbGYuc2NoZW1hX2Rh dGEgPSBwYXJlbnRfbm9kZV9kaWN0WydzY2hlbWEnXVstMV0KKyAgICAgICAg c2VsZi5zZXJ2ZXJfaWQgPSBzZWxmLnNjaGVtYV9kYXRhWydzZXJ2ZXJfaWQn XQorICAgICAgICBzZWxmLmRiX2lkID0gc2VsZi5zY2hlbWFfZGF0YVsnZGJf aWQnXQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2VsZi5zY2hlbWFf ZGF0YVsnc2NoZW1hX25hbWUnXQorICAgICAgICBzZWxmLmV4dGVuc2lvbl9u YW1lID0gInBvc3RncmVzX2ZkdyIKKyAgICAgICAgc2VsZi5kYl9uYW1lID0g cGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQor ICAgICAgICBzZWxmLmV4dGVuc2lvbl9pZCA9IGV4dGVuc2lvbl91dGlscy5j cmVhdGVfZXh0ZW5zaW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIsIHNl bGYuZGJfbmFtZSwgc2VsZi5leHRlbnNpb25fbmFtZSwgc2VsZi5zY2hlbWFf bmFtZSkKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgotICAgICAgICAiIiIg VGhpcyBmdW5jdGlvbiB3aWxsIGFkZCBleHRlbnNpb24gdW5kZXIgMXN0IHNl cnZlciBvZiB0cmVlIG5vZGUuICIiIgotCi0gICAgICAgIGRlbGV0ZV9yZXNw ZGF0YSA9IGV4dGVuc2lvbl91dGlscy5kZWxldGVfZXh0ZW5zaW9uKHNlbGYu dGVzdGVyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZGVsZXRlX3Jlc3Bk YXRhWydzdWNjZXNzJ10sIDEpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk ZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICAiIiJUaGlzIGZ1bmN0 aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIHNjaGVtYSwgZGF0YWJhc2UsIHNlcnZl ciBhbmQgcGFyZW50Ci0gICAgICAgIGlkIGZpbGUKLSAgICAgICAgIiIiCi0K LSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGVsZXRlX2RhdGFiYXNlKGNscy50 ZXN0ZXIpCi0gICAgICAgIHNlcnZlcl91dGlscy5kZWxldGVfc2VydmVyKGNs cy50ZXN0ZXIpCi0gICAgICAgIHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmls ZSgpCisgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgZGVsZXRlIGV4 dGVuc2lvbiBhZGRlZCB0ZXN0IGRhdGFiYXNlLiAiIiIKKyAgICAgICAgZGJf Y29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmRiX2lkKQorICAgICAgICBpZiBub3QgZGJfY29uWyJpbmZv Il0gPT0gIkRhdGFiYXNlIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZS4i KQorICAgICAgICByZXNwb25zZSA9IGV4dGVuc2lvbl91dGlscy52ZXJpZnlf ZXh0ZW5zaW9uKHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5leHRlbnNpb25fbmFtZSkKKyAgICAgICAgaWYgbm90IHJlc3BvbnNl OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgZmlu ZCBleHRlbnNpb24uIikKKyAgICAgICAgZGVsZXRlX3Jlc3BvbnNlID0gc2Vs Zi50ZXN0ZXIuZGVsZXRlKAorICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIo dXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCisgICAgICAgICAgICBzdHIo c2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsgc3RyKHNlbGYuZGJfaWQpICsKKyAg ICAgICAgICAgICcvJyArIHN0cihzZWxmLmV4dGVuc2lvbl9pZCksCisgICAg ICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWxzKGRlbGV0ZV9yZXNwb25zZS5zdGF0dXNfY29kZSwgMjAw KQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJUaGlz IGZ1bmN0aW9uIGRpc2Nvbm5lY3QgdGhlIHRlc3QgZGF0YWJhc2UuICIiIgor ICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNl bGYsIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvdGVzdHMvdGVzdF9leHRlbnNpb25fZ2V0LnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVzdHMvdGVzdF9leHRlbnNpb25fZ2V0 LnB5CmluZGV4IDc2NGJjNmMuLjZiZWUzYzEgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9leHRlbnNpb25zL3Rlc3RzL3Rlc3RfZXh0ZW5zaW9uX2dldC5weQorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvZXh0ZW5zaW9ucy90ZXN0cy90ZXN0X2V4dGVuc2lvbl9nZXQu cHkKQEAgLTEsODcgKzEsNTcgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0K LSMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIyAjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogIwotIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0jIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQotCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgIyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCisjICMKKyMgIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjICMgVGhpcyBzb2Z0 d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CisjCisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworZnJvbSBfX2Z1dHVyZV9f IGltcG9ydCBwcmludF9mdW5jdGlvbgogCi1pbXBvcnQganNvbgogZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgor ZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0CiBmcm9t IHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZyb20g cGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFz ZXMuc2NoZW1hcy50ZXN0cyBpbXBvcnQgXAotICAgIHV0aWxzIGFzIHNjaGVt YV91dGlscwotZnJvbSAuIGltcG9ydCB1dGlscyBhcyBleHRlbnNpb25fdXRp bHMKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVy cy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IFwKICAgICB1dGlscyBhcyBkYXRh YmFzZV91dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMK K2Zyb20gLiBpbXBvcnQgdXRpbHMgYXMgZXh0ZW5zaW9uX3V0aWxzCiAKIAog Y2xhc3MgRXh0ZW5zaW9uc0dldFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9y KToKLQogICAgIHNjZW5hcmlvcyA9IFsKLSAgICAgICAgICAgICMgRmV0Y2hp bmcgZGVmYXVsdCBVUkwgZm9yIGV4dGVuc2lvbiBub2RlLgotICAgICAgICAg ICAgKCdDaGVjayBFeHRlbnNpb24gTm9kZScsIGRpY3QodXJsPScvYnJvd3Nl ci9leHRlbnNpb24vb2JqLycpKQotICAgICAgICBdCi0KLSAgICBAY2xhc3Nt ZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAiIiIK LSAgICAgICAgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybSB0aGUgZm9sbG93aW5n IHRhc2tzOgotICAgICAgICAgMS4gQWRkIGFuZCBjb25uZWN0IHRvIHRoZSB0 ZXN0IHNlcnZlcihzKQotICAgICAgICAgMi4gQWRkIGRhdGFiYXNlKHMpIGNv bm5lY3RlZCB0byBzZXJ2ZXIocykKLSAgICAgICAgIDMuIEFkZCBzY2hlbWFz IHRvIGNvbm5lY3RlZCBkYXRhYmFzZShzKQotICAgICAgICAgNC4gQWRkIGV4 dGVuc2lvbihzKSB0byBzY2hlbWEocykKLQotICAgICAgICA6cmV0dXJuOiBO b25lCi0gICAgICAgICIiIgotCi0gICAgICAgICMgQWRkIHRoZSBzZXJ2ZXIK LSAgICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2ZXIoY2xzLnRlc3RlcikK LQotICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVycwotICAgICAgICBjbHMu c2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNs cy5zZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgc2VydmVyX3V0aWxzLmNv bm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgaWYgbGVuKGNs cy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKLSAgICAgICAgICAg IHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0byBh ZGQgdGhlIGRhdGFiYXNlISEhIikKLQotICAgICAgICAjIEFkZCBkYXRhYmFz ZXMgdG8gY29ubmVjdGVkIHNlcnZlcnMKLSAgICAgICAgZGF0YWJhc2VfdXRp bHMuYWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVj dF9yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNscy5zZXJ2ZXJfaWRzKQotCi0gICAgICAgIHNjaGVtYV91dGlscy5h ZGRfc2NoZW1hcyhjbHMudGVzdGVyKQotCi0gICAgICAgIGV4dGVuc2lvbl91 dGlscy5hZGRfZXh0ZW5zaW9ucyhjbHMudGVzdGVyKQorICAgICAgICAjIEZl dGNoaW5nIGRlZmF1bHQgVVJMIGZvciBleHRlbnNpb24gbm9kZS4KKyAgICAg ICAgKCdDaGVjayBFeHRlbnNpb24gTm9kZScsIGRpY3QodXJsPScvYnJvd3Nl ci9leHRlbnNpb24vb2JqLycpKQorICAgIF0KKworICAgIGRlZiBzZXRVcChz ZWxmKToKKyAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUg ZXh0ZW5zaW9uLiIiIgorICAgICAgICBzZWxmLnNjaGVtYV9kYXRhID0gcGFy ZW50X25vZGVfZGljdFsnc2NoZW1hJ11bLTFdCisgICAgICAgIHNlbGYuc2Vy dmVyX2lkID0gc2VsZi5zY2hlbWFfZGF0YVsnc2VydmVyX2lkJ10KKyAgICAg ICAgc2VsZi5kYl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ2RiX2lkJ10KKyAg ICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHNlbGYuc2NoZW1hX2RhdGFbJ3Nj aGVtYV9uYW1lJ10KKyAgICAgICAgc2VsZi5leHRlbnNpb25fbmFtZSA9ICJw b3N0Z3Jlc19mZHciCisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9u b2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICAgICAg c2VsZi5leHRlbnNpb25faWQgPSBleHRlbnNpb25fdXRpbHMuY3JlYXRlX2V4 dGVuc2lvbigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLmRiX25h bWUsIHNlbGYuZXh0ZW5zaW9uX25hbWUsIHNlbGYuc2NoZW1hX25hbWUpCiAK ICAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgIiIiIFRoaXMgZnVu Y3Rpb24gd2lsbCBhZGQgZXh0ZW5zaW9uIHVuZGVyIDFzdCBzZXJ2ZXIgb2Yg dHJlZSBub2RlLiAiIiIKLQotICAgICAgICBhbGxfaWQgPSB1dGlscy5nZXRf aWRzKCkKLSAgICAgICAgc2VydmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KLSAg ICAgICAgZGJfaWRzX2RpY3QgPSBhbGxfaWRbImRpZCJdWzBdCi0gICAgICAg IGV4dGVuc2lvbl9pZHNfZGljdCA9IGFsbF9pZFsiZWlkIl1bMF0KLQotICAg ICAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAgICAg ICBkYl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAg ICAgICAgZXh0ZW5zaW9uX2lkID0gZXh0ZW5zaW9uX2lkc19kaWN0W3NlcnZl cl9pZF0KLQotICAgICAgICAgICAgcmVzcG9uc2UgPSBleHRlbnNpb25fdXRp bHMudmVyaWZ5X2V4dGVuc2lvbnMoc2VsZi50ZXN0ZXIsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQs IGRiX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX2lkKQotCi0gICAgICAg ICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwg MjAwKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xh c3MoY2xzKToKLSAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBkZWxldGVzIHRo ZSBhZGRlZCBzY2hlbWEsIGRhdGFiYXNlLCBzZXJ2ZXIgYW5kIHBhcmVudAot ICAgICAgICBpZCBmaWxlCi0gICAgICAgICIiIgotCi0gICAgICAgIGV4dGVu c2lvbl91dGlscy5kZWxldGVfZXh0ZW5zaW9uKGNscy50ZXN0ZXIpCi0gICAg ICAgIHNjaGVtYV91dGlscy5kZWxldGVfc2NoZW1hKGNscy50ZXN0ZXIpCi0g ICAgICAgIGRhdGFiYXNlX3V0aWxzLmRlbGV0ZV9kYXRhYmFzZShjbHMudGVz dGVyKQotICAgICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihjbHMu dGVzdGVyKQotICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUo KQorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIGFkZGVk IGV4dGVuc2lvbiB1bmRlciBkYXRhYmFzZSBuYW1lLiAiIiIKKyAgICAgICAg ZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxm LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLmRiX2lkKQorICAgICAgICBpZiBub3QgZGJfY29uWyJp bmZvIl0gPT0gIkRhdGFiYXNlIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAg cmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFz ZS4iKQorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmdldCgKKyAg ICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkg KyAnLycgKyBzdHIoCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQp ICsgJy8nICsKKyAgICAgICAgICAgIHN0cihzZWxmLmRiX2lkKSArICcvJyAr IHN0cihzZWxmLmV4dGVuc2lvbl9pZCksCisgICAgICAgICAgICBjb250ZW50 X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisKKyAgICBkZWYgdGVhckRv d24oc2VsZik6CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGlzY29ubmVj dCB0aGUgdGVzdCBkYXRhYmFzZSBhbmQgZHJvcCBhZGRlZAorICAgICAgICAg ZXh0ZW5zaW9uLiIiIgorICAgICAgICBleHRlbnNpb25fdXRpbHMuZHJvcF9l eHRlbnNpb24oc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0ZW5zaW9u X25hbWUpCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0 YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9pZCkKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3Rlc3RzL3Rlc3RfZXh0ZW5zaW9u X3B1dC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3Rlc3RzL3Rlc3RfZXh0ZW5z aW9uX3B1dC5weQppbmRleCA3YTExZWQ1Li40ZTRkMmYzIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvZXh0ZW5zaW9ucy90ZXN0cy90ZXN0X2V4dGVuc2lvbl9wdXQu cHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVzdHMvdGVzdF9leHRlbnNp b25fcHV0LnB5CkBAIC02LDk5ICs2LDYyIEBACiAjIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQogIwog IyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotCitmcm9tIF9fZnV0dXJlX18g aW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQganNvbgorCiBmcm9tIHBn YWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitm cm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKIGZyb20g cmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwotZnJvbSBw Z2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNl cy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCi0gICAgdXRpbHMgYXMgc2NoZW1h X3V0aWxzCi1mcm9tIC4gaW1wb3J0IHV0aWxzIGFzIGV4dGVuc2lvbl91dGls cwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJz LmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIGRhdGFi YXNlX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwor ZnJvbSAuIGltcG9ydCB1dGlscyBhcyBleHRlbnNpb25fdXRpbHMKIAogCiBj bGFzcyBFeHRlbnNpb25zUHV0VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3Ip OgotCiAgICAgc2NlbmFyaW9zID0gWwotICAgICAgICAgICAgIyBGZXRjaGlu ZyBkZWZhdWx0IFVSTCBmb3IgZXh0ZW5zaW9uIG5vZGUuCi0gICAgICAgICAg ICAoJ0NoZWNrIEV4dGVuc2lvbiBOb2RlJywgZGljdCh1cmw9Jy9icm93c2Vy L2V4dGVuc2lvbi9vYmovJykpCi0gICAgICAgIF0KLQotICAgIEBjbGFzc21l dGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgICIiIgot ICAgICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSBmb2xsb3dpbmcg dGFza3M6Ci0gICAgICAgICAxLiBBZGQgYW5kIGNvbm5lY3QgdG8gdGhlIHRl c3Qgc2VydmVyKHMpCi0gICAgICAgICAyLiBBZGQgZGF0YWJhc2UocykgY29u bmVjdGVkIHRvIHNlcnZlcihzKQotICAgICAgICAgMy4gQWRkIHNjaGVtYXMg dG8gY29ubmVjdGVkIGRhdGFiYXNlKHMpCi0gICAgICAgICA0LiBBZGQgZXh0 ZW5zaW9uKHMpIHRvIHNjaGVtYShzKQotCi0gICAgICAgIDpyZXR1cm46IE5v bmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBBZGQgdGhlIHNlcnZlcgot ICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQot Ci0gICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXJzCi0gICAgICAgIGNscy5z ZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZlcl9ncm91cCwgY2xz LnNlcnZlcl9pZHMgPSBcCi0gICAgICAgICAgICBzZXJ2ZXJfdXRpbHMuY29u bmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKLQotICAgICAgICBpZiBsZW4oY2xz LnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAgICAgICAgICAg cmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVjdGVkIHRvIGFk ZCB0aGUgZGF0YWJhc2UhISEiKQotCi0gICAgICAgICMgQWRkIGRhdGFiYXNl cyB0byBjb25uZWN0ZWQgc2VydmVycwotICAgICAgICBkYXRhYmFzZV91dGls cy5hZGRfZGF0YWJhc2UoY2xzLnRlc3RlciwgY2xzLnNlcnZlcl9jb25uZWN0 X3Jlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2xzLnNlcnZlcl9pZHMpCi0KLSAgICAgICAgc2NoZW1hX3V0aWxzLmFk ZF9zY2hlbWFzKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgZXh0ZW5zaW9uX3V0 aWxzLmFkZF9leHRlbnNpb25zKGNscy50ZXN0ZXIpCisgICAgICAgICMgRmV0 Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGV4dGVuc2lvbiBub2RlLgorICAgICAg ICAoJ0NoZWNrIEV4dGVuc2lvbiBOb2RlJywgZGljdCh1cmw9Jy9icm93c2Vy L2V4dGVuc2lvbi9vYmovJykpCisgICAgXQorCisgICAgZGVmIHNldFVwKHNl bGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBl eHRlbnNpb24uIiIiCisgICAgICAgIHNlbGYuc2NoZW1hX2RhdGEgPSBwYXJl bnRfbm9kZV9kaWN0WydzY2hlbWEnXVstMV0KKyAgICAgICAgc2VsZi5zZXJ2 ZXJfaWQgPSBzZWxmLnNjaGVtYV9kYXRhWydzZXJ2ZXJfaWQnXQorICAgICAg ICBzZWxmLmRiX2lkID0gc2VsZi5zY2hlbWFfZGF0YVsnZGJfaWQnXQorICAg ICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2VsZi5zY2hlbWFfZGF0YVsnc2No ZW1hX25hbWUnXQorICAgICAgICBzZWxmLmV4dGVuc2lvbl9uYW1lID0gInBv c3RncmVzX2ZkdyIKKyAgICAgICAgc2VsZi5kYl9uYW1lID0gcGFyZW50X25v ZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQorICAgICAgICBz ZWxmLmV4dGVuc2lvbl9pZCA9IGV4dGVuc2lvbl91dGlscy5jcmVhdGVfZXh0 ZW5zaW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFt ZSwgc2VsZi5leHRlbnNpb25fbmFtZSwgc2VsZi5zY2hlbWFfbmFtZSkKIAog ICAgIGRlZiBydW5UZXN0KHNlbGYpOgotICAgICAgICAiIiIgVGhpcyBmdW5j dGlvbiB3aWxsIGFkZCBleHRlbnNpb24gdW5kZXIgMXN0IHNlcnZlciBvZiB0 cmVlIG5vZGUuICIiIgotCi0gICAgICAgIGFsbF9pZCA9IHV0aWxzLmdldF9p ZHMoKQotICAgICAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAg ICAgICBkYl9pZHNfZGljdCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAgICAgICAg ZXh0ZW5zaW9uX2lkc19kaWN0ID0gYWxsX2lkWyJlaWQiXVswXQotICAgICAg ICBzY2hlbWFfaW5mb19kaWN0ID0gYWxsX2lkWyJzY2lkIl1bMF0KLQotICAg ICAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAgICAg ICBkYl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAg ICAgICAgZXh0ZW5zaW9uX2lkID0gZXh0ZW5zaW9uX2lkc19kaWN0W3NlcnZl cl9pZF0KLQotICAgICAgICAgICAgcmVzcG9uc2UgPSBleHRlbnNpb25fdXRp bHMudmVyaWZ5X2V4dGVuc2lvbnMoc2VsZi50ZXN0ZXIsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQs IGRiX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX2lkKQotCi0gICAgICAg ICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDA6Ci0gICAgICAg ICAgICAgICAgc2NoZW1hX25hbWUgPSBzY2hlbWFfaW5mb19kaWN0W2ludChz ZXJ2ZXJfaWQpXVsxXQotCi0gICAgICAgICAgICAgICAgZGF0YSA9IFwKLSAg ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg ImlkIjogZXh0ZW5zaW9uX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAg InNjaGVtYSI6IHNjaGVtYV9uYW1lCi0gICAgICAgICAgICAgICAgICAgIH0K LQotICAgICAgICAgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVy LnB1dCgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRp bHMuU0VSVkVSX0dST1VQKSArICcvJyArCi0gICAgICAgICAgICAgICAgICAg IHN0cihzZXJ2ZXJfaWQpICsgJy8nICsgc3RyKGRiX2lkKSArCi0gICAgICAg ICAgICAgICAgICAgICcvJyArIHN0cihleHRlbnNpb25faWQpLAotICAgICAg ICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoZGF0YSksCi0gICAgICAg ICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKLQotICAgICAg ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHB1dF9yZXNwb25zZS5zdGF0 dXNfY29kZSwgMjAwKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRl YXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBk ZWxldGVzIHRoZSBhZGRlZCBzY2hlbWEsIGRhdGFiYXNlLCBzZXJ2ZXIgYW5k IHBhcmVudAotICAgICAgICBpZCBmaWxlCi0gICAgICAgICIiIgotICAgICAg ICBleHRlbnNpb25fdXRpbHMuZGVsZXRlX2V4dGVuc2lvbihjbHMudGVzdGVy KQotICAgICAgICBzY2hlbWFfdXRpbHMuZGVsZXRlX3NjaGVtYShjbHMudGVz dGVyKQotICAgICAgICBkYXRhYmFzZV91dGlscy5kZWxldGVfZGF0YWJhc2Uo Y2xzLnRlc3RlcikKLSAgICAgICAgc2VydmVyX3V0aWxzLmRlbGV0ZV9zZXJ2 ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgdXRpbHMuZGVsZXRlX3BhcmVudF9p ZF9maWxlKCkKKyAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRh dGUgZXh0ZW5zaW9uIGFkZGVkIHVuZGVyIHRlc3QgZGF0YWJhc2UuICIiIgor ICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFi YXNlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c2VydmVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuZGJfaWQpCisgICAgICAgIGlmIG5vdCBk Yl9jb25bImluZm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6CisgICAg ICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRv IGRhdGFiYXNlLiIpCisgICAgICAgIHJlc3BvbnNlID0gZXh0ZW5zaW9uX3V0 aWxzLnZlcmlmeV9leHRlbnNpb24oc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFt ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLmV4dGVuc2lvbl9uYW1lKQorICAgICAgICBpZiBu b3QgcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNv dWxkIG5vdCBmaW5kIGV4dGVuc2lvbi4iKQorICAgICAgICBkYXRhID0gewor ICAgICAgICAgICAgInNjaGVtYSI6ICJwdWJsaWMiLAorICAgICAgICAgICAg ImlkIjogc2VsZi5leHRlbnNpb25faWQKKyAgICAgICAgfQorICAgICAgICBw dXRfcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wdXQoCisgICAgICAgICAgICBz ZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAg ICAgICAgICAgIHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBzdHIoCisg ICAgICAgICAgICAgICAgc2VsZi5kYl9pZCkgKworICAgICAgICAgICAgJy8n ICsgc3RyKHNlbGYuZXh0ZW5zaW9uX2lkKSwKKyAgICAgICAgICAgIGRhdGE9 anNvbi5kdW1wcyhkYXRhKSwKKyAgICAgICAgICAgIGZvbGxvd19yZWRpcmVj dHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHV0X3Jlc3Bv bnNlLnN0YXR1c19jb2RlLCAyMDApCisKKyAgICBkZWYgdGVhckRvd24oc2Vs Zik6CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGlzY29ubmVjdCB0aGUg dGVzdCBkYXRhYmFzZSBhbmQgZHJvcCBhZGRlZAorICAgICAgICBleHRlbnNp b24uIiIiCisgICAgICAgIGV4dGVuc2lvbl91dGlscy5kcm9wX2V4dGVuc2lv bihzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRlbnNpb25fbmFtZSkK KyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShz ZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9leHRlbnNpb25zL3Rlc3RzL3V0aWxzLnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4 dGVuc2lvbnMvdGVzdHMvdXRpbHMucHkKaW5kZXggZTViMTA4ZC4uMTRjN2Vh YiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVzdHMvdXRpbHMu cHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVzdHMvdXRpbHMucHkKQEAg LTYsMTI5ICs2LDExOSBAQAogIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk IHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKICMKICMgIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1 bmN0aW9uCitpbXBvcnQgc3lzCitpbXBvcnQgdHJhY2ViYWNrCiAKK2Zyb20g cmVncmVzc2lvbi50ZXN0X3V0aWxzIGltcG9ydCBnZXRfZGJfY29ubmVjdGlv bgogCi1pbXBvcnQgb3MKLWltcG9ydCBwaWNrbGUKLWltcG9ydCBqc29uCi1m cm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBpbXBvcnQgYWR2YW5jZWRfY29u ZmlnX2RhdGEsIHBpY2tsZV9wYXRoCi1mcm9tIHJlZ3Jlc3Npb24gaW1wb3J0 IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IFwK LSAgICB1dGlscyBhcyBkYXRhYmFzZV91dGlscwotZnJvbSBwZ2FkbWluLmJy b3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGls cyBhcyBzZXJ2ZXJfdXRpbHMKLQotCi1FWFRFTlNJT05fVVJMID0gJy9icm93 c2VyL2V4dGVuc2lvbi9vYmovJwotCi0KLWRlZiBnZXRfZXh0ZW5zaW9uX2Nv bmZpZ19kYXRhKHNjaGVtYV9uYW1lLCBzZXJ2ZXJfY29ubmVjdF9kYXRhKToK LSAgICBhZHZfY29uZmlnX2RhdGEgPSBOb25lCi0gICAgZGJfdXNlciA9IHNl cnZlcl9jb25uZWN0X2RhdGFbJ2RhdGEnXVsndXNlciddWyduYW1lJ10KLQot ICAgICMgR2V0IHRoZSBjb25maWcgZGF0YSBvZiBhcHByb3ByaWF0ZSBkYiB1 c2VyCi0gICAgZm9yIGNvbmZpZ190ZXN0X2RhdGEgaW4gYWR2YW5jZWRfY29u ZmlnX2RhdGFbJ2V4dGVuc2lvbl9jcmVkZW50aWFscyddOgotICAgICAgICBp ZiBkYl91c2VyID09IGNvbmZpZ190ZXN0X2RhdGFbJ293bmVyJ106Ci0gICAg ICAgICAgICBhZHZfY29uZmlnX2RhdGEgPSBjb25maWdfdGVzdF9kYXRhCiAK K2RlZiBnZXRfZXh0ZW5zaW9uX2RhdGEoc2NoZW1hX25hbWUpOgogICAgIGRh dGEgPSB7Ci0gICAgICAgICJuYW1lIjogYWR2X2NvbmZpZ19kYXRhWyduYW1l J10sCi0gICAgICAgICJyZWxvY2F0YWJsZSI6IGFkdl9jb25maWdfZGF0YVsn cmVsb2NhdGUnXSwKKyAgICAgICAgIm5hbWUiOiAicG9zdGdyZXNfZmR3IiwK KyAgICAgICAgInJlbG9jYXRhYmxlIjogInRydWUiLAogICAgICAgICAic2No ZW1hIjogc2NoZW1hX25hbWUsCi0gICAgICAgICJ2ZXJzaW9uIjogYWR2X2Nv bmZpZ19kYXRhWyd2ZXJzaW9uJ10KKyAgICAgICAgInZlcnNpb24iOiAiMS4w IgogICAgIH0KICAgICByZXR1cm4gZGF0YQogCiAKLWRlZiB3cml0ZV9leHRl bnNpb25faW5mbyhyZXNwb25zZV9kYXRhLCBzZXJ2ZXJfaWQpOgorZGVmIGNy ZWF0ZV9leHRlbnNpb24oc2VydmVyLCBkYl9uYW1lLCBleHRlbnNpb25fbmFt ZSwgc2NoZW1hX25hbWUpOgogICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24g d3JpdGVzIHRoZSBzY2hlbWEgaWQgaW50byBwYXJlbnRfaWQucGtsCi0KLSAg ICA6cGFyYW0gcmVzcG9uc2VfZGF0YTogZXh0ZW5zaW9uIGFkZCByZXNwb25z ZSBkYXRhCi0gICAgOnR5cGUgcmVzcG9uc2VfZGF0YTogZGljdAotICAgIDpw YXJhbSBzZXJ2ZXJfaWQ6IHNlcnZlciBpZAotICAgIDp0eXBlIHNlcnZlcl9p ZDogc3RyCisgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGNyZWF0ZSBleHRl bnNpb24gdW5kZXIgdGhlIGV4aXN0aW5nIGR1bW15IGRhdGFiYXNlCisgICAg OnBhcmFtIHNlcnZlcjogc2VydmVyIGRldGFpbHMKKyAgICA6dHlwZSBzZXJ2 ZXI6IGRpY3QKKyAgICA6cGFyYW0gZGJfbmFtZTogZGF0YWJhc2UgbmFtZQor ICAgIDp0eXBlIGRiX25hbWU6IHN0cgorICAgIDpwYXJhbSBleHRlbnNpb25f bmFtZTogZXh0ZW5zaW9uIG5hbWUgdG8gYmUgYWRkZWQKKyAgICA6dHlwZSBl eHRlbnNpb25fbmFtZTogc3RyCisgICAgOnBhcmFtIHNjaGVtYV9uYW1lOiBz Y2hlbWEgbmFtZQorICAgIDp0eXBlIHNjaGVtYV9uYW1lOiBzdHIKKyAgICA6 cmV0dXJuIGV4dGVuc2lvbl9pZDogZXh0ZW5zaW9uIGlkCisgICAgOnJ0eXBl OiBpbnQKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIGNvbm5lY3Rpb24g PSBnZXRfZGJfY29ubmVjdGlvbihkYl9uYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWyd1c2VybmFtZSddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy WydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmVyWydob3N0J10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3BvcnQnXSkKKyAgICAg ICAgb2xkX2lzb2xhdGlvbl9sZXZlbCA9IGNvbm5lY3Rpb24uaXNvbGF0aW9u X2xldmVsCisgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xhdGlvbl9sZXZl bCgwKQorICAgICAgICBwZ19jdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigp CisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKAorICAgICAgICAgICAgJycn Q1JFQVRFIEVYVEVOU0lPTiAiJXMiIFNDSEVNQSAiJXMiJycnICUgKGV4dGVu c2lvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYV9uYW1lKSkKKyAgICAgICAg Y29ubmVjdGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKG9sZF9pc29sYXRpb25f bGV2ZWwpCisgICAgICAgIGNvbm5lY3Rpb24uY29tbWl0KCkKKyAgICAgICAg IyBHZXQgJ29pZCcgZnJvbSBuZXdseSBjcmVhdGVkIGV4dGVuc2lvbgorICAg ICAgICBwZ19jdXJzb3IuZXhlY3V0ZSgKKyAgICAgICAgICAgICJTRUxFQ1Qg b2lkIEZST00gcGdfZXh0ZW5zaW9uIFdIRVJFIGV4dG5hbWUgPSAnJXMnIiAl CisgICAgICAgICAgICBleHRlbnNpb25fbmFtZSkKKyAgICAgICAgb2lkID0g cGdfY3Vyc29yLmZldGNob25lKCkKKyAgICAgICAgZXh0ZW5zaW9uX2lkID0g JycKKyAgICAgICAgaWYgb2lkOgorICAgICAgICAgICAgZXh0ZW5zaW9uX2lk ID0gb2lkWzBdCisgICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKQorICAgICAg ICByZXR1cm4gZXh0ZW5zaW9uX2lkCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoK KyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIp CisKKworZGVmIHZlcmlmeV9leHRlbnNpb24oc2VydmVyLCBkYl9uYW1lLCBl eHRlbnNpb25fbmFtZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3 aWxsIHZlcmlmeSBjdXJyZW50IGV4dGVuc2lvbi4KKyAgICA6cGFyYW0gc2Vy dmVyOiBzZXJ2ZXIgZGV0YWlscworICAgIDp0eXBlIHNlcnZlcjogZGljdAor ICAgIDpwYXJhbSBkYl9uYW1lOiBkYXRhYmFzZSBuYW1lCisgICAgOnR5cGUg ZGJfbmFtZTogc3RyCisgICAgOnBhcmFtIGV4dGVuc2lvbl9uYW1lOiBleHRl bnNpb24gbmFtZSB0byBiZSBhZGRlZAorICAgIDp0eXBlIGV4dGVuc2lvbl9u YW1lOiBzdHIKKyAgICA6cmV0dXJuIGV4dGVuc2lvbjogZXh0ZW5zaW9uIGRl dGFpbAorICAgIDpydHlwZTogdHVwbGUKKyAgICAiIiIKKyAgICB0cnk6Cisg ICAgICAgIGNvbm5lY3Rpb24gPSBnZXRfZGJfY29ubmVjdGlvbihkYl9uYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vy dmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydob3N0J10s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2 ZXJbJ3BvcnQnXSkKKyAgICAgICAgcGdfY3Vyc29yID0gY29ubmVjdGlvbi5j dXJzb3IoKQorCisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKAorICAgICAg ICAgICAgInNlbGVjdCAqIGZyb20gcGdfZXh0ZW5zaW9uIHdoZXJlIGV4dG5h bWU9JyVzJyIgJSBleHRlbnNpb25fbmFtZSkKKyAgICAgICAgZXh0ZW5zaW9u ID0gcGdfY3Vyc29yLmZldGNob25lKCkKKyAgICAgICAgY29ubmVjdGlvbi5j bG9zZSgpCisgICAgICAgIHJldHVybiBleHRlbnNpb24KKyAgICBleGNlcHQg RXhjZXB0aW9uOgorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9 c3lzLnN0ZGVycikKKworCitkZWYgZHJvcF9leHRlbnNpb24oc2VydmVyLCBk Yl9uYW1lLCBleHRlbnNpb25fbmFtZSk6CisgICAgIiIiCisgICAgVGhpcyBm dW5jdGlvbiB1c2VkIHRvIGRyb3AgdGhlIGV4dGVuc2lvbi4KKyAgICA6cGFy YW0gc2VydmVyOiBzZXJ2ZXIgZGV0YWlscworICAgIDp0eXBlIHNlcnZlcjog ZGljdAorICAgIDpwYXJhbSBkYl9uYW1lOiBkYXRhYmFzZSBuYW1lCisgICAg OnR5cGUgZGJfbmFtZTogc3RyCisgICAgOnBhcmFtIGV4dGVuc2lvbl9uYW1l OiBleHRlbnNpb24gbmFtZQorICAgIDp0eXBlIGV4dGVuc2lvbl9uYW1lOiBz dHIKICAgICA6cmV0dXJuOiBOb25lCiAgICAgIiIiCi0KLSAgICBleHRlbnNp b25faWQgPSByZXNwb25zZV9kYXRhWydub2RlJ11bJ19pZCddCi0gICAgIyBz Y2hlbWFfbmFtZSA9IHN0cihyZXNwb25zZV9kYXRhWydub2RlJ11bJ2xhYmVs J10pCi0gICAgcGlja2xlX2lkX2RpY3QgPSB1dGlscy5nZXRfcGlja2xlX2lk X2RpY3QoKQotICAgIGlmIG9zLnBhdGguaXNmaWxlKHBpY2tsZV9wYXRoKToK LSAgICAgICAgZXhpc3Rpbmdfc2VydmVyX2lkID0gb3BlbihwaWNrbGVfcGF0 aCwgJ3JiJykKLSAgICAgICAgdG9sX3NlcnZlcl9pZCA9IHBpY2tsZS5sb2Fk KGV4aXN0aW5nX3NlcnZlcl9pZCkKLSAgICAgICAgcGlja2xlX2lkX2RpY3Qg PSB0b2xfc2VydmVyX2lkCi0gICAgaWYgJ2VpZCcgaW4gcGlja2xlX2lkX2Rp Y3Q6Ci0gICAgICAgIGlmIHBpY2tsZV9pZF9kaWN0WydlaWQnXToKLSAgICAg ICAgICAgICMgQWRkIHRoZSBleHRlbnNpb25faWQgYXMgdmFsdWUgaW4gZGlj dAotICAgICAgICAgICAgcGlja2xlX2lkX2RpY3RbImVpZCJdWzBdLnVwZGF0 ZSh7c2VydmVyX2lkOiBleHRlbnNpb25faWR9KQotICAgICAgICBlbHNlOgot ICAgICAgICAgICAgIyBDcmVhdGUgbmV3IGRpY3Qgd2l0aCBzZXJ2ZXJfaWQg YW5kIGV4dGVuc2lvbl9pZAotICAgICAgICAgICAgcGlja2xlX2lkX2RpY3Rb ImVpZCJdLmFwcGVuZCh7c2VydmVyX2lkOiBleHRlbnNpb25faWR9KQotICAg IGV4dGVuc2lvbl9vdXRwdXQgPSBvcGVuKHBpY2tsZV9wYXRoLCAnd2InKQot ICAgIHBpY2tsZS5kdW1wKHBpY2tsZV9pZF9kaWN0LCBleHRlbnNpb25fb3V0 cHV0KQotICAgIGV4dGVuc2lvbl9vdXRwdXQuY2xvc2UoKQotCi0KLWRlZiBh ZGRfZXh0ZW5zaW9ucyh0ZXN0ZXIpOgotCi0gICAgYWxsX2lkID0gdXRpbHMu Z2V0X2lkcygpCi0gICAgc2VydmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KLSAg ICBkYl9pZHNfZGljdCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAgICBzY2hlbWFf aW5mb19kaWN0ID0gYWxsX2lkWyJzY2lkIl1bMF0KLQotICAgIGZvciBzZXJ2 ZXJfaWQgaW4gc2VydmVyX2lkczoKLSAgICAgICAgZGJfaWQgPSBkYl9pZHNf ZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgZGJfY29uID0gZGF0YWJh c2VfdXRpbHMudmVyaWZ5X2RhdGFiYXNlKHRlc3RlciwgdXRpbHMuU0VSVkVS X0dST1VQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmVyX2lkLCBkYl9pZCkKLSAgICAgICAgaWYgZGJf Y29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgotICAgICAgICAgICAgc2VydmVy X2Nvbm5lY3RfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMudmVyaWZ5X3NlcnZl cigKLSAgICAgICAgICAgICAgICB0ZXN0ZXIsIHV0aWxzLlNFUlZFUl9HUk9V UCwgc2VydmVyX2lkKQotCi0gICAgICAgICAgICBzY2hlbWFfbmFtZSA9IHNj aGVtYV9pbmZvX2RpY3RbaW50KHNlcnZlcl9pZCldWzFdCi0gICAgICAgICAg ICBkYXRhID0gZ2V0X2V4dGVuc2lvbl9jb25maWdfZGF0YShzY2hlbWFfbmFt ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKQotCi0gICAgICAgICAgICBy ZXNwb25zZSA9IHRlc3Rlci5wb3N0KAotICAgICAgICAgICAgICAgIEVYVEVO U0lPTl9VUkwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCi0g ICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKyBzdHIoCi0g ICAgICAgICAgICAgICAgICAgIGRiX2lkKSArICcvJywKLSAgICAgICAgICAg ICAgICBkYXRhPWpzb24uZHVtcHMoZGF0YSksCi0gICAgICAgICAgICAgICAg Y29udGVudF90eXBlPSdodG1sL2pzb24nKQotICAgICAgICAgICAgYXNzZXJ0 IHJlc3BvbnNlLnN0YXR1c19jb2RlID09IDIwMAotICAgICAgICAgICAgcmVz cG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUo J3V0Zi04JykpCi0gICAgICAgICAgICB3cml0ZV9leHRlbnNpb25faW5mbyhy ZXNwb25zZV9kYXRhLCBzZXJ2ZXJfaWQpCi0KLQotZGVmIHZlcmlmeV9leHRl bnNpb25zKHRlc3Rlciwgc2VydmVyX2dyb3VwLCBzZXJ2ZXJfaWQsIGRiX2lk LCBleHRlbnNpb25faWQpOgotCi0gICAgcmVzcG9uc2UgPSB0ZXN0ZXIuZ2V0 KEVYVEVOU0lPTl9VUkwgKyBzdHIoc2VydmVyX2dyb3VwKSArICcvJyArCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8n ICsgc3RyKGRiX2lkKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcv JyArIHN0cihleHRlbnNpb25faWQpLAotICAgICAgICAgICAgICAgICAgICAg ICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCi0gICAgcmV0dXJuIHJl c3BvbnNlCi0KLQotZGVmIGRlbGV0ZV9leHRlbnNpb24odGVzdGVyKToKLQot ICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQotICAgIHNlcnZlcl9pZHMg PSBhbGxfaWRbInNpZCJdCi0gICAgZGJfaWRzX2RpY3QgPSBhbGxfaWRbImRp ZCJdWzBdCi0gICAgZXh0ZW5zaW9uX2lkc19kaWN0ID0gYWxsX2lkWyJlaWQi XVswXQotCi0gICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2ZXJfaWRzOgotICAg ICAgICBkYl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAg ICAgICBleHRlbnNpb25faWQgPSBleHRlbnNpb25faWRzX2RpY3Rbc2VydmVy X2lkXQotCi0gICAgICAgIHJlc3BvbnNlID0gdmVyaWZ5X2V4dGVuc2lvbnMo dGVzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRiX2lkLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9pZCkKLSAgICAg ICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwOgotICAgICAgICAg ICAgZGVsZXRlX3Jlc3BvbnNlID0gdGVzdGVyLmRlbGV0ZSgKLSAgICAgICAg ICAgICAgICBFWFRFTlNJT05fVVJMICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9V UCkgKyAnLycgKwotICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsg Jy8nICsKLSAgICAgICAgICAgICAgICBzdHIoZGJfaWQpICsgJy8nICsKLSAg ICAgICAgICAgICAgICBzdHIoZXh0ZW5zaW9uX2lkKSwKLSAgICAgICAgICAg ICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCi0gICAgICAgICAgICBkZWxl dGVfcmVzcGRhdGEgPSBqc29uLmxvYWRzKGRlbGV0ZV9yZXNwb25zZS5kYXRh LmRlY29kZSgpKQotICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZV9yZXNwZGF0 YQorICAgIHRyeToKKyAgICAgICAgY29ubmVjdGlvbiA9IGdldF9kYl9jb25u ZWN0aW9uKGRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2RiX3Bhc3N3b3Jk J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlcnZlclsncG9ydCddKQorICAgICAgICBwZ19jdXJzb3Ig PSBjb25uZWN0aW9uLmN1cnNvcigpCisgICAgICAgIHBnX2N1cnNvci5leGVj dXRlKAorICAgICAgICAgICAgIlNFTEVDVCAqIEZST00gcGdfZXh0ZW5zaW9u IFdIRVJFIGV4dG5hbWU9JyVzJyIKKyAgICAgICAgICAgICUgZXh0ZW5zaW9u X25hbWUpCisgICAgICAgIGlmIHBnX2N1cnNvci5mZXRjaGFsbCgpOgorICAg ICAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoCisgICAgICAgICAgICAgICAg IkRST1AgRVhURU5TSU9OICVzIENBU0NBREUiICUgZXh0ZW5zaW9uX25hbWUp CisgICAgICAgICAgICBjb25uZWN0aW9uLmNvbW1pdCgpCisgICAgICAgIGNv bm5lY3Rpb24uY2xvc2UoKQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAg ICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93cmFwcGVycy9mb3JlaWdu X3NlcnZlcnMvdGVzdHMvdGVzdF9mb3JlaWduX3NlcnZlcnNfYWRkLnB5IGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2ZvcmVpZ25fZGF0YV93cmFwcGVycy9mb3JlaWduX3NlcnZlcnMv dGVzdHMvdGVzdF9mb3JlaWduX3NlcnZlcnNfYWRkLnB5CmluZGV4IGVlMDRm ODAuLjg2ODhlYTUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFf d3JhcHBlcnMvZm9yZWlnbl9zZXJ2ZXJzL3Rlc3RzL3Rlc3RfZm9yZWlnbl9z ZXJ2ZXJzX2FkZC5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBw ZXJzL2ZvcmVpZ25fc2VydmVycy90ZXN0cy90ZXN0X2ZvcmVpZ25fc2VydmVy c19hZGQucHkKQEAgLTYsODMgKzYsMTAwIEBACiAjIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQogIwog IyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2Zyb20gX19mdXR1cmVfXyBpbXBv cnQgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCB1dWlkCitpbXBvcnQganNvbgog CiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2Vu ZXJhdG9yCi1mcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMg dXRpbHMKLWZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2Vy dmVycy5kYXRhYmFzZXMuZXh0ZW5zaW9ucy50ZXN0cyBpbXBvcnRcCi0gICAg dXRpbHMgYXMgZXh0ZW5zaW9uX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGVz dHMgaW1wb3J0IFwKLSAgICB1dGlscyBhcyBzY2hlbWFfdXRpbHMKIGZyb20g cGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFz ZXMudGVzdHMgaW1wb3J0IFwKICAgICB1dGlscyBhcyBkYXRhYmFzZV91dGls cwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJz LnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu ZXh0ZW5zaW9ucy50ZXN0cyBpbXBvcnQgXAorICAgIHV0aWxzIGFzIGV4dGVu c2lvbl91dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcy5mb3JlaWduX2RhdGFfd3JhcHBlcnMudGVz dHMgXAogICAgIGltcG9ydCB1dGlscyBhcyBmZHdfdXRpbHMKLWZyb20gLiBp bXBvcnQgdXRpbHMgYXMgZnNydl91dGlscworZnJvbSByZWdyZXNzaW9uIGlt cG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0 IHRlc3RfdXRpbHMgYXMgdXRpbHMKIAogCiBjbGFzcyBGb3JlaWduU2VydmVy QWRkVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICIiIgogICAg IFRoaXMgY2xhc3Mgd2lsbCBhZGQgZm9yZWlnbiBzZXJ2ZXIgdW5kZXIgZGF0 YWJhc2Ugbm9kZS4KICAgICAiIiIKLQogICAgIHNjZW5hcmlvcyA9IFsKICAg ICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3IgZm9yZWlnbiBzZXJ2 ZXIgbm9kZS4KICAgICAgICAgKCdDaGVjayBGU1JWIE5vZGUnLCBkaWN0KHVy bD0nL2Jyb3dzZXIvZm9yZWlnbl9zZXJ2ZXIvb2JqLycpKQogICAgIF0KIAot ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0g ICAgICAgICIiIiIKLSAgICAgICAgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybSB0 aGUgZm9sbG93aW5nIHRhc2tzOgotICAgICAgICAgMS4gQWRkIGFuZCBjb25u ZWN0IHRvIHRoZSB0ZXN0IHNlcnZlcihzKQotICAgICAgICAgMi4gQWRkIGRh dGFiYXNlKHMpIGNvbm5lY3RlZCB0byBzZXJ2ZXIocykKLSAgICAgICAgIDMu IEFkZCBzY2hlbWFzIHRvIGNvbm5lY3RlZCBkYXRhYmFzZShzKQotICAgICAg ICAgNC4gQWRkIGV4dGVuc2lvbihzKSB0byBzY2hlbWEocykKLSAgICAgICAg IDUuIEFkZCBmb3JlaWduIGRhdGEgd3JhcHBlcihzKSB0byBleHRlbnNpb24o cykKLQotICAgICAgICA6cmV0dXJuOiBOb25lIgotICAgICAgICAiIiIKLQot ICAgICAgICAjIEFkZCB0aGUgc2VydmVyKHMpCi0gICAgICAgIHNlcnZlcl91 dGlscy5hZGRfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgIyBDb25u ZWN0IHRvIHNlcnZlcihzKQotICAgICAgICBjbHMuc2VydmVyX2Nvbm5lY3Rf cmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0g XAotICAgICAgICAgICAgc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNs cy50ZXN0ZXIpCi0KLSAgICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVj dF9yZXNwb25zZSkgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv bigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0byBhZGQgdGhlIGRhdGFiYXNl ISEhIikKLQotICAgICAgICAjIEFkZCBkYXRhYmFzZShzKSB0byBjb25uZWN0 ZWQgc2VydmVyKHMpCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmFkZF9kYXRh YmFzZShjbHMudGVzdGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2Us Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2Vy dmVyX2lkcykKLQotICAgICAgICAjIEFkZCBzY2hlbWEocykgdW5kZXIgY29u bmVjdGVkIGRhdGFiYXNlKHMpCi0gICAgICAgIHNjaGVtYV91dGlscy5hZGRf c2NoZW1hcyhjbHMudGVzdGVyKQotCi0gICAgICAgICMgQWRkIGV4dGVuc2lv bihzKSB0byBzY2hlbWEocykKLSAgICAgICAgZXh0ZW5zaW9uX3V0aWxzLmFk ZF9leHRlbnNpb25zKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgIyBBZGQgZm9y ZWlnbiBkYXRhIHdyYXBwZXIocykgdG8gZXh0ZW5zaW9uKHMpCi0gICAgICAg IGZkd191dGlscy5hZGRfZmR3KGNscy50ZXN0ZXIpCisgICAgZGVmIHNldFVw KHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0 ZSBleHRlbnNpb24gYW5kIGZvcmVpZ24gZGF0YSB3cmFwcGVyLiIiIgorICAg ICAgICBzZWxmLnNjaGVtYV9kYXRhID0gcGFyZW50X25vZGVfZGljdFsnc2No ZW1hJ11bLTFdCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gc2VsZi5zY2hl bWFfZGF0YVsnc2VydmVyX2lkJ10KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNl bGYuc2NoZW1hX2RhdGFbJ2RiX2lkJ10KKyAgICAgICAgc2VsZi5kYl9uYW1l ID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUi XQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2VsZi5zY2hlbWFfZGF0 YVsnc2NoZW1hX25hbWUnXQorICAgICAgICBzZWxmLmV4dGVuc2lvbl9uYW1l ID0gInBvc3RncmVzX2ZkdyIKKyAgICAgICAgc2VsZi5mZHdfbmFtZSA9ICJm ZHdfezB9Ii5mb3JtYXQoc3RyKHV1aWQudXVpZDQoKSlbMTo2XSkKKyAgICAg ICAgc2VsZi5leHRlbnNpb25faWQgPSBleHRlbnNpb25fdXRpbHMuY3JlYXRl X2V4dGVuc2lvbigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLmRi X25hbWUsIHNlbGYuZXh0ZW5zaW9uX25hbWUsIHNlbGYuc2NoZW1hX25hbWUp CisgICAgICAgIHNlbGYuZmR3X2lkID0gZmR3X3V0aWxzLmNyZWF0ZV9mZHco c2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZkd19uYW1lKQogCiAg ICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgICIiIiBUaGlzIGZ1bmN0 aW9uIHdpbGwgYWRkIGZvcmVpZ24gc2VydmVyIHVuZGVyIGRhdGFiYXNlIG5v ZGUuICIiIgotCi0gICAgICAgIGZzcnZfdXRpbHMuYWRkX2ZzcnYoc2VsZi50 ZXN0ZXIpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25D bGFzcyhjbHMpOgotICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMg dGhlIGFkZGVkIHNjaGVtYSwgZGF0YWJhc2UsIHNlcnZlciBhbmQgcGFyZW50 Ci0gICAgICAgIGlkIGZpbGUKLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0g ICAgICAgICIiIgotICAgICAgICBmc3J2X3V0aWxzLmRlbGV0ZV9mc3J2KGNs cy50ZXN0ZXIpCi0gICAgICAgIGZkd191dGlscy5kZWxldGVfZmR3KGNscy50 ZXN0ZXIpCi0gICAgICAgIGV4dGVuc2lvbl91dGlscy5kZWxldGVfZXh0ZW5z aW9uKGNscy50ZXN0ZXIpCi0gICAgICAgIHNjaGVtYV91dGlscy5kZWxldGVf c2NoZW1hKGNscy50ZXN0ZXIpCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmRl bGV0ZV9kYXRhYmFzZShjbHMudGVzdGVyKQotICAgICAgICBzZXJ2ZXJfdXRp bHMuZGVsZXRlX3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICB1dGlscy5k ZWxldGVfcGFyZW50X2lkX2ZpbGUoKQorICAgICAgICAiIiJUaGlzIGZ1bmN0 aW9uIHdpbGwgZmV0Y2ggZm9yZWlnbiBkYXRhIHdyYXBwZXIgcHJlc2VudCB1 bmRlciB0ZXN0CisgICAgICAgICBkYXRhYmFzZS4iIiIKKyAgICAgICAgZGJf Y29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmRiX2lkKQorICAgICAgICBpZiBub3QgZGJfY29uWyJpbmZv Il0gPT0gIkRhdGFiYXNlIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZS4i KQorICAgICAgICBmZHdfcmVzcG9uc2UgPSBmZHdfdXRpbHMudmVyaWZ5X2Zk dyhzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZkd19uYW1lKQor ICAgICAgICBpZiBub3QgZmR3X3Jlc3BvbnNlOgorICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCBGRFcuIikKKyAgICAgICAg ZGJfdXNlciA9IHNlbGYuc2VydmVyWyJ1c2VybmFtZSJdCisgICAgICAgIGRh dGEgPSB7CisgICAgICAgICAgICAiZnNydmFjbCI6IFsKKyAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICAgICJncmFudGVlIjogZGJfdXNl ciwKKyAgICAgICAgICAgICAgICAgICAgImdyYW50b3IiOiBkYl91c2VyLAor ICAgICAgICAgICAgICAgICAgICAicHJpdmlsZWdlcyI6CisgICAgICAgICAg ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpdmlsZWdl X3R5cGUiOiAiVSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJwcml2aWxlZ2UiOiAidHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ3aXRoX2dyYW50IjogImZhbHNlIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIF0K KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAg ICAgImZzcnZvcHRpb25zIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgImZzcnZvcHRpb24iOiAiaG9zdCIsCisgICAgICAg ICAgICAgICAgICAgICJmc3J2dmFsdWUiOiBzZWxmLnNlcnZlclsnaG9zdCdd CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICJmc3J2b3B0aW9uIjogInBvcnQiLAorICAgICAg ICAgICAgICAgICAgICAiZnNydnZhbHVlIjogc3RyKHNlbGYuc2VydmVyWydw b3J0J10pCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgICJmc3J2b3B0aW9uIjogImRibmFtZSIs CisgICAgICAgICAgICAgICAgICAgICJmc3J2dmFsdWUiOiBzZWxmLmRiX25h bWUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAg ICAgICAgImZzcnZvd25lciI6IGRiX3VzZXIsCisgICAgICAgICAgICAibmFt ZSI6ICJ0ZXN0X2ZzcnZfYWRkXyVzIiAlIChzdHIodXVpZC51dWlkNCgpKVsx OjZdKQorICAgICAgICB9CisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucG9zdCgKKyAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNF UlZFUl9HUk9VUCkgKyAnLycgKworICAgICAgICAgICAgc3RyKHNlbGYuc2Vy dmVyX2lkKSArICcvJyArIHN0cihzZWxmLmRiX2lkKSArICcvJworICAgICAg ICAgICAgKyBzdHIoc2VsZi5mZHdfaWQpICsgJy8nLCBkYXRhPWpzb24uZHVt cHMoZGF0YSksCisgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNv bicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1 c19jb2RlLCAyMDApCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAg ICAgICIiIlRoaXMgZnVuY3Rpb24gZGlzY29ubmVjdCB0aGUgdGVzdCBkYXRh YmFzZSBhbmQgZHJvcCBhZGRlZCBmb3JlaWduCisgICAgICAgICBkYXRhIHdy YXBwZXIuIiIiCisgICAgICAgIGV4dGVuc2lvbl91dGlscy5kcm9wX2V4dGVu c2lvbihzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRlbnNpb25fbmFt ZSkKKyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFz ZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvZm9yZWlnbl9zZXJ2 ZXJzL3Rlc3RzL3Rlc3RfZm9yZWlnbl9zZXJ2ZXJzX2RlbGV0ZS5weSBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvZm9yZWlnbl9zZXJ2ZXJzL3Rl c3RzL3Rlc3RfZm9yZWlnbl9zZXJ2ZXJzX2RlbGV0ZS5weQppbmRleCAxNDIw Y2JiLi43MjkyODQzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRh X3dyYXBwZXJzL2ZvcmVpZ25fc2VydmVycy90ZXN0cy90ZXN0X2ZvcmVpZ25f c2VydmVyc19kZWxldGUucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93 cmFwcGVycy9mb3JlaWduX3NlcnZlcnMvdGVzdHMvdGVzdF9mb3JlaWduX3Nl cnZlcnNfZGVsZXRlLnB5CkBAIC02LDg5ICs2LDczIEBACiAjIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5j ZQogIwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2Zyb20gX19mdXR1cmVf XyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCB1dWlkCiAKIGZyb20g cGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IK LWZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwot ZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRh dGFiYXNlcy5leHRlbnNpb25zLnRlc3RzIGltcG9ydFwKLSAgICB1dGlscyBh cyBleHRlbnNpb25fdXRpbHMKLWZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZl cl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50ZXN0cyBpbXBv cnQgXAotICAgIHV0aWxzIGFzIHNjaGVtYV91dGlscwogZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0 cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIGRhdGFiYXNlX3V0aWxzCi1mcm9t IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMg aW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwotZnJvbSBwZ2FkbWluLmJy b3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5mb3JlaWdu X2RhdGFfd3JhcHBlcnMudGVzdHNcCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLmV4dGVuc2lvbnMudGVz dHMgaW1wb3J0IFwKKyAgICB1dGlscyBhcyBleHRlbnNpb25fdXRpbHMKK2Zy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMuZm9yZWlnbl9kYXRhX3dyYXBwZXJzLnRlc3RzIFwKICAgICBpbXBv cnQgdXRpbHMgYXMgZmR3X3V0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0 IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVz dF91dGlscyBhcyB1dGlscwogZnJvbSAuIGltcG9ydCB1dGlscyBhcyBmc3J2 X3V0aWxzCiAKIAogY2xhc3MgRm9yZWlnblNlcnZlckRlbGV0ZVRlc3RDYXNl KEJhc2VUZXN0R2VuZXJhdG9yKToKLSAgICAiIiIKLSAgICBUaGlzIGNsYXNz IHdpbGwgYWRkIGZvcmVpZ24gc2VydmVyIHVuZGVyIEZEVyBub2RlLgotICAg ICIiIgotCisgICAgIiIiVGhpcyBjbGFzcyB3aWxsIGFkZCBmb3JlaWduIHNl cnZlciB1bmRlciBGRFcgbm9kZS4iIiIKICAgICBzY2VuYXJpb3MgPSBbCiAg ICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGZvcmVpZ24gc2Vy dmVyIG5vZGUuCiAgICAgICAgICgnQ2hlY2sgRlNSViBOb2RlJywgZGljdCh1 cmw9Jy9icm93c2VyL2ZvcmVpZ25fc2VydmVyL29iai8nKSkKICAgICBdCiAK LSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgot ICAgICAgICAiIiIKLSAgICAgICAgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybSB0 aGUgZm9sbG93aW5nIHRhc2tzOgotICAgICAgICAgMS4gQWRkIGFuZCBjb25u ZWN0IHRvIHRoZSB0ZXN0IHNlcnZlcihzKQotICAgICAgICAgMi4gQWRkIGRh dGFiYXNlKHMpIGNvbm5lY3RlZCB0byBzZXJ2ZXIocykKLSAgICAgICAgIDMu IEFkZCBzY2hlbWFzIHRvIGNvbm5lY3RlZCBkYXRhYmFzZShzKQotICAgICAg ICAgNC4gQWRkIGV4dGVuc2lvbihzKSB0byBzY2hlbWEocykKLSAgICAgICAg IDUuIEFkZCBmb3JlaWduIGRhdGEgd3JhcHBlcihzKSB0byBleHRlbnNpb24o cykKLSAgICAgICAgIDYuIEFkZCBmb3JlaWduIHNlcnZlcihzKSB0byBmb3Jl aWduIGRhdGEgd3JhcHBlcihzKQotCi0gICAgICAgIDpyZXR1cm46IE5vbmUK LSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBBZGQgdGhlIHNlcnZlcgotICAg ICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQotCi0g ICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXJzCi0gICAgICAgIGNscy5zZXJ2 ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZlcl9ncm91cCwgY2xzLnNl cnZlcl9pZHMgPSBcCi0gICAgICAgICAgICBzZXJ2ZXJfdXRpbHMuY29ubmVj dF9zZXJ2ZXIoY2xzLnRlc3RlcikKLQotICAgICAgICBpZiBsZW4oY2xzLnNl cnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVjdGVkIHRvIGFkZCB0 aGUgZGF0YWJhc2UhISEiKQotCi0gICAgICAgICMgQWRkIGRhdGFiYXNlcyB0 byBjb25uZWN0ZWQgc2VydmVycwotICAgICAgICBkYXRhYmFzZV91dGlscy5h ZGRfZGF0YWJhc2UoY2xzLnRlc3RlciwgY2xzLnNlcnZlcl9jb25uZWN0X3Jl c3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2xzLnNlcnZlcl9pZHMpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg ICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBleHRlbnNpb24gYW5k IGZvcmVpZ24gZGF0YSB3cmFwcGVyLiIiIgorICAgICAgICBzZWxmLnNjaGVt YV9kYXRhID0gcGFyZW50X25vZGVfZGljdFsnc2NoZW1hJ11bLTFdCisgICAg ICAgIHNlbGYuc2VydmVyX2lkID0gc2VsZi5zY2hlbWFfZGF0YVsnc2VydmVy X2lkJ10KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFb J2RiX2lkJ10KKyAgICAgICAgc2VsZi5kYl9uYW1lID0gcGFyZW50X25vZGVf ZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQorICAgICAgICBzZWxm LnNjaGVtYV9uYW1lID0gc2VsZi5zY2hlbWFfZGF0YVsnc2NoZW1hX25hbWUn XQorICAgICAgICBzZWxmLmV4dGVuc2lvbl9uYW1lID0gInBvc3RncmVzX2Zk dyIKKyAgICAgICAgc2VsZi5mZHdfbmFtZSA9ICJ0ZXN0X2Zkd18lcyIgJSAo c3RyKHV1aWQudXVpZDQoKSlbMTo2XSkKKyAgICAgICAgc2VsZi5mc3J2X25h bWUgPSAidGVzdF9mc3J2XyVzIiAlIChzdHIodXVpZC51dWlkNCgpKVsxOjZd KQorICAgICAgICBzZWxmLmV4dGVuc2lvbl9pZCA9IGV4dGVuc2lvbl91dGls cy5jcmVhdGVfZXh0ZW5zaW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIs IHNlbGYuZGJfbmFtZSwgc2VsZi5leHRlbnNpb25fbmFtZSwgc2VsZi5zY2hl bWFfbmFtZSkKKyAgICAgICAgc2VsZi5mZHdfaWQgPSBmZHdfdXRpbHMuY3Jl YXRlX2ZkdyhzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmR3X25h bWUpCisgICAgICAgIHNlbGYuZnNydl9pZCA9IGZzcnZfdXRpbHMuY3JlYXRl X2ZzcnYoc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZzcnZf bmFtZSwgc2VsZi5mZHdfbmFtZSkKIAotICAgICAgICAjIEFkZCBzY2hlbWEo cykgdW5kZXIgY29ubmVjdGVkIGRhdGFiYXNlKHMpCi0gICAgICAgIHNjaGVt YV91dGlscy5hZGRfc2NoZW1hcyhjbHMudGVzdGVyKQotCi0gICAgICAgICMg QWRkIGV4dGVuc2lvbihzKSB0byBzY2hlbWEocykKLSAgICAgICAgZXh0ZW5z aW9uX3V0aWxzLmFkZF9leHRlbnNpb25zKGNscy50ZXN0ZXIpCi0KLSAgICAg ICAgIyBBZGQgZm9yZWlnbiBkYXRhIHdyYXBwZXIocykgdG8gZXh0ZW5zaW9u KHMpCi0gICAgICAgIGZkd191dGlscy5hZGRfZmR3KGNscy50ZXN0ZXIpCi0K LSAgICAgICAgIyBBZGQgZm9yZWlnbiBzZXJ2ZXIocykgdG8gZm9yZWlnbiBk YXRhIHdyYXBwZXIKLSAgICAgICAgZnNydl91dGlscy5hZGRfZnNydihjbHMu dGVzdGVyKQotCi0jCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAg ICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgZGVsZXRlIGZvcmVpZ24gc2VydmVy IHVuZGVyIEZEVyBub2RlLiAiIiIKLQotICAgICAgICBkZWxldGVfcmVzcGRh dGEgPSBmc3J2X3V0aWxzLmRlbGV0ZV9mc3J2KHNlbGYudGVzdGVyKQotICAg ICAgICBzZWxmLmFzc2VydFRydWUoZGVsZXRlX3Jlc3BkYXRhWydzdWNjZXNz J10sIDEpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25D bGFzcyhjbHMpOgotICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMg dGhlIGFkZGVkIHNjaGVtYSwgZGF0YWJhc2UsIHNlcnZlciBhbmQgcGFyZW50 Ci0gICAgICAgIGlkIGZpbGUKLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0g ICAgICAgICIiIgotCi0gICAgICAgIGZkd191dGlscy5kZWxldGVfZmR3KGNs cy50ZXN0ZXIpCi0gICAgICAgIGV4dGVuc2lvbl91dGlscy5kZWxldGVfZXh0 ZW5zaW9uKGNscy50ZXN0ZXIpCi0gICAgICAgIHNjaGVtYV91dGlscy5kZWxl dGVfc2NoZW1hKGNscy50ZXN0ZXIpCi0gICAgICAgIGRhdGFiYXNlX3V0aWxz LmRlbGV0ZV9kYXRhYmFzZShjbHMudGVzdGVyKQotICAgICAgICBzZXJ2ZXJf dXRpbHMuZGVsZXRlX3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICB1dGls cy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQorICAgICAgICAiIiJUaGlzIGZ1 bmN0aW9uIHdpbGwgZmV0Y2ggZm9yZWlnbiBzZXJ2ZXIgcHJlc2VudCB1bmRl ciB0ZXN0CisgICAgICAgICBkYXRhYmFzZS4iIiIKKyAgICAgICAgZGJfY29u ID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLmRiX2lkKQorICAgICAgICBpZiBub3QgZGJfY29uWyJpbmZvIl0g PT0gIkRhdGFiYXNlIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgcmFpc2Ug RXhjZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZS4iKQor ICAgICAgICBmZHdfcmVzcG9uc2UgPSBmZHdfdXRpbHMudmVyaWZ5X2Zkdyhz ZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZkd19uYW1lKQorICAg ICAgICBpZiBub3QgZmR3X3Jlc3BvbnNlOgorICAgICAgICAgICAgcmFpc2Ug RXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCBGRFcuIikKKyAgICAgICAgZnNy dl9yZXNwb25zZSA9IGZzcnZfdXRpbHMudmVyaWZ5X2ZzcnYoc2VsZi5zZXJ2 ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5mc3J2X25hbWUpCisgICAgICAg IGlmIG5vdCBmc3J2X3Jlc3BvbnNlOgorICAgICAgICAgICAgcmFpc2UgRXhj ZXB0aW9uKCJDb3VsZCBub3QgZmluZCBGU1JWLiIpCisgICAgICAgIGRlbGV0 ZV9yZXNwb25zZSA9IHNlbGYudGVzdGVyLmRlbGV0ZSgKKyAgICAgICAgICAg IHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKwor ICAgICAgICAgICAgc3RyKHNlbGYuc2VydmVyX2lkKSArICcvJyArIHN0cihz ZWxmLmRiX2lkKSArCisgICAgICAgICAgICAnLycgKyBzdHIoc2VsZi5mZHdf aWQpICsgJy8nICsKKyAgICAgICAgICAgIHN0cihzZWxmLmZzcnZfaWQpLAor ICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQorICAgICAgICBz ZWxmLmFzc2VydEVxdWFscyhkZWxldGVfcmVzcG9uc2Uuc3RhdHVzX2NvZGUs IDIwMCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIi VGhpcyBmdW5jdGlvbiBkaXNjb25uZWN0IHRoZSB0ZXN0IGRhdGFiYXNlIGFu ZCBkcm9wIGFkZGVkIGV4dGVuc2lvbgorICAgICAgICAgYW5kIGRlcGVuZGFu dCBvYmplY3RzLiIiIgorICAgICAgICBleHRlbnNpb25fdXRpbHMuZHJvcF9l eHRlbnNpb24oc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0ZW5zaW9u X25hbWUpCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0 YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL2ZvcmVpZ25f c2VydmVycy90ZXN0cy90ZXN0X2ZvcmVpZ25fc2VydmVyc19nZXQucHkgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL2ZvcmVpZ25fc2VydmVycy90 ZXN0cy90ZXN0X2ZvcmVpZ25fc2VydmVyc19nZXQucHkKaW5kZXggNGQwYjVm NS4uMTgyZGUyNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93 cmFwcGVycy9mb3JlaWduX3NlcnZlcnMvdGVzdHMvdGVzdF9mb3JlaWduX3Nl cnZlcnNfZ2V0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBl cnMvZm9yZWlnbl9zZXJ2ZXJzL3Rlc3RzL3Rlc3RfZm9yZWlnbl9zZXJ2ZXJz X2dldC5weQpAQCAtNiwxMDUgKzYsNjggQEAKICMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAjCiAj ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworZnJvbSBfX2Z1dHVyZV9fIGltcG9y dCBwcmludF9mdW5jdGlvbgoraW1wb3J0IHV1aWQKIAogZnJvbSBwZ2FkbWlu LnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgotZnJvbSBy ZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHBn YWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2Vz LmV4dGVuc2lvbnMudGVzdHMgaW1wb3J0XAotICAgIHV0aWxzIGFzIGV4dGVu c2lvbl91dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCi0g ICAgdXRpbHMgYXMgc2NoZW1hX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9y dCBcCiAgICAgdXRpbHMgYXMgZGF0YWJhc2VfdXRpbHMKLWZyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQg dXRpbHMgYXMgc2VydmVyX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLmV4dGVuc2lvbnMudGVz dHMgaW1wb3J0IFwKKyAgICB1dGlscyBhcyBleHRlbnNpb25fdXRpbHMKIGZy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMuZm9yZWlnbl9kYXRhX3dyYXBwZXJzLnRlc3RzXAogICAgIGltcG9y dCB1dGlscyBhcyBmZHdfdXRpbHMKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQg cGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0 X3V0aWxzIGFzIHV0aWxzCiBmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIGZzcnZf dXRpbHMKIAotY2xhc3MgRm9yZWlnblNlcnZlckdldFRlc3RDYXNlKEJhc2VU ZXN0R2VuZXJhdG9yKToKLSAgICAiIiIKLSAgICBUaGlzIGNsYXNzIHdpbGwg YWRkIGZvcmVpZ24gc2VydmVyIHVuZGVyIEZEVyBub2RlLgotICAgICIiIgog CitjbGFzcyBGb3JlaWduU2VydmVyR2V0VGVzdENhc2UoQmFzZVRlc3RHZW5l cmF0b3IpOgorICAgICIiIlRoaXMgY2xhc3Mgd2lsbCBhZGQgZm9yZWlnbiBz ZXJ2ZXIgdW5kZXIgRkRXIG5vZGUuIiIiCiAgICAgc2NlbmFyaW9zID0gWwog ICAgICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciBmb3JlaWduIHNl cnZlciBub2RlLgogICAgICAgICAoJ0NoZWNrIEZTUlYgTm9kZScsIGRpY3Qo dXJsPScvYnJvd3Nlci9mb3JlaWduX3NlcnZlci9vYmovJykpCiAgICAgXQog CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5j dGlvbiB3aWxsIGNyZWF0ZSBleHRlbnNpb24gYW5kIGZvcmVpZ24gZGF0YSB3 cmFwcGVyLiIiIgorICAgICAgICBzZWxmLnNjaGVtYV9kYXRhID0gcGFyZW50 X25vZGVfZGljdFsnc2NoZW1hJ11bLTFdCisgICAgICAgIHNlbGYuc2VydmVy X2lkID0gc2VsZi5zY2hlbWFfZGF0YVsnc2VydmVyX2lkJ10KKyAgICAgICAg c2VsZi5kYl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ2RiX2lkJ10KKyAgICAg ICAgc2VsZi5kYl9uYW1lID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2Ui XVstMV1bImRiX25hbWUiXQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0g c2VsZi5zY2hlbWFfZGF0YVsnc2NoZW1hX25hbWUnXQorICAgICAgICBzZWxm LmV4dGVuc2lvbl9uYW1lID0gInBvc3RncmVzX2ZkdyIKKyAgICAgICAgc2Vs Zi5mZHdfbmFtZSA9ICJmZHdfJXMiICUgKHN0cih1dWlkLnV1aWQ0KCkpWzE6 Nl0pCisgICAgICAgIHNlbGYuZnNydl9uYW1lID0gInRlc3RfZnNydl9hZGRf JXMiICUgKHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0pCisgICAgICAgIHNlbGYu ZXh0ZW5zaW9uX2lkID0gZXh0ZW5zaW9uX3V0aWxzLmNyZWF0ZV9leHRlbnNp b24oCisgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLCBz ZWxmLmV4dGVuc2lvbl9uYW1lLCBzZWxmLnNjaGVtYV9uYW1lKQorICAgICAg ICBzZWxmLmZkd19pZCA9IGZkd191dGlscy5jcmVhdGVfZmR3KHNlbGYuc2Vy dmVyLCBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5mZHdfbmFtZSkKKyAgICAgICAgc2Vs Zi5mc3J2X2lkID0gZnNydl91dGlscy5jcmVhdGVfZnNydihzZWxmLnNlcnZl ciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuZnNydl9uYW1lLCBzZWxmLmZkd19u YW1lKQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3Mo Y2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgICBUaGlzIGZ1bmN0aW9uIHBl cmZvcm0gdGhlIGZvbGxvd2luZyB0YXNrczoKLSAgICAgICAgIDEuIEFkZCBh bmQgY29ubmVjdCB0byB0aGUgdGVzdCBzZXJ2ZXIocykKLSAgICAgICAgIDIu IEFkZCBkYXRhYmFzZShzKSBjb25uZWN0ZWQgdG8gc2VydmVyKHMpCi0gICAg ICAgICAzLiBBZGQgc2NoZW1hcyB0byBjb25uZWN0ZWQgZGF0YWJhc2UocykK LSAgICAgICAgIDQuIEFkZCBleHRlbnNpb24ocykgdG8gc2NoZW1hKHMpCi0g ICAgICAgICA1LiBBZGQgZm9yZWlnbiBkYXRhIHdyYXBwZXIocykgdG8gZXh0 ZW5zaW9uKHMpCi0gICAgICAgICA2LiBBZGQgZm9yZWlnbiBzZXJ2ZXIocykg dG8gZm9yZWlnbiBkYXRhIHdyYXBwZXIocykKLQotICAgICAgICA6cmV0dXJu OiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgICMgQWRkIHRoZSBzZXJ2 ZXIKLSAgICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2ZXIoY2xzLnRlc3Rl cikKLQotICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVycwotICAgICAgICBj bHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAs IGNscy5zZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgc2VydmVyX3V0aWxz LmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgaWYgbGVu KGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKLSAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0 byBhZGQgdGhlIGRhdGFiYXNlISEhIikKLQotICAgICAgICAjIEFkZCBkYXRh YmFzZXMgdG8gY29ubmVjdGVkIHNlcnZlcnMKLSAgICAgICAgZGF0YWJhc2Vf dXRpbHMuYWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29u bmVjdF9yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNscy5zZXJ2ZXJfaWRzKQotCi0gICAgICAgICMgQWRkIHNjaGVt YShzKSB1bmRlciBjb25uZWN0ZWQgZGF0YWJhc2UocykKLSAgICAgICAgc2No ZW1hX3V0aWxzLmFkZF9zY2hlbWFzKGNscy50ZXN0ZXIpCi0KLSAgICAgICAg IyBBZGQgZXh0ZW5zaW9uKHMpIHRvIHNjaGVtYShzKQotICAgICAgICBleHRl bnNpb25fdXRpbHMuYWRkX2V4dGVuc2lvbnMoY2xzLnRlc3RlcikKLQotICAg ICAgICAjIEFkZCBmb3JlaWduIGRhdGEgd3JhcHBlcihzKSB0byBleHRlbnNp b24ocykKLSAgICAgICAgZmR3X3V0aWxzLmFkZF9mZHcoY2xzLnRlc3RlcikK LQotICAgICAgICAjIEFkZCBmb3JlaWduIHNlcnZlcihzKSB0byBmb3JlaWdu IGRhdGEgd3JhcHBlcgotICAgICAgICBmc3J2X3V0aWxzLmFkZF9mc3J2KGNs cy50ZXN0ZXIpCi0KLSMKICAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAg ICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBmb3JlaWduIHNlcnZl ciB1bmRlciBGRFcgbm9kZS4gIiIiCi0KLSAgICAgICAgYWxsX2lkID0gdXRp bHMuZ2V0X2lkcygpCi0gICAgICAgIHNlcnZlcl9pZHMgPSBhbGxfaWRbInNp ZCJdCi0gICAgICAgIGRiX2lkc19kaWN0ID0gYWxsX2lkWyJkaWQiXVswXQot ICAgICAgICBmZHdfaWRzX2RpY3QgPSBhbGxfaWRbImZpZCJdWzBdCi0gICAg ICAgIGZzcnZfaWRzX2RpY3QgPSBhbGxfaWRbImZzaWQiXVswXQotCi0gICAg ICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKLSAgICAgICAgICAg IGRiX2lkID0gZGJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAg ICAgICBmZHdfaWQgPSBmZHdfaWRzX2RpY3Rbc2VydmVyX2lkXQotICAgICAg ICAgICAgZnNydl9pZCA9IGZzcnZfaWRzX2RpY3Rbc2VydmVyX2lkXQotCi0g ICAgICAgICAgICByZXNwb25zZSA9IGZzcnZfdXRpbHMudmVyaWZ5X2ZzcnYo c2VsZi50ZXN0ZXIsIHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQs IGRiX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZkd19pZCwgZnNydl9pZCkKLQotICAgICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLQot ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6 Ci0gICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQg c2NoZW1hLCBkYXRhYmFzZSwgc2VydmVyIGFuZCBwYXJlbnQKLSAgICAgICAg aWQgZmlsZQotCi0gICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIi Ci0KLSAgICAgICAgZnNydl91dGlscy5kZWxldGVfZnNydihjbHMudGVzdGVy KQotICAgICAgICBmZHdfdXRpbHMuZGVsZXRlX2ZkdyhjbHMudGVzdGVyKQot ICAgICAgICBleHRlbnNpb25fdXRpbHMuZGVsZXRlX2V4dGVuc2lvbihjbHMu dGVzdGVyKQotICAgICAgICBzY2hlbWFfdXRpbHMuZGVsZXRlX3NjaGVtYShj bHMudGVzdGVyKQotICAgICAgICBkYXRhYmFzZV91dGlscy5kZWxldGVfZGF0 YWJhc2UoY2xzLnRlc3RlcikKLSAgICAgICAgc2VydmVyX3V0aWxzLmRlbGV0 ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgdXRpbHMuZGVsZXRlX3Bh cmVudF9pZF9maWxlKCkKLQorICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIHdp bGwgZmV0Y2ggZm9yZWlnbiBzZXJ2ZXIgcHJlc2VudCB1bmRlciB0ZXN0Cisg ICAgICAgIGRhdGFiYXNlLiIiIgorICAgICAgICBkYl9jb24gPSBkYXRhYmFz ZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbHMuU0VS VkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJf aWQpCisgICAgICAgIGlmIG5vdCBkYl9jb25bImluZm8iXSA9PSAiRGF0YWJh c2UgY29ubmVjdGVkLiI6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o IkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlLiIpCisgICAgICAgIGZk d19yZXNwb25zZSA9IGZkd191dGlscy52ZXJpZnlfZmR3KHNlbGYuc2VydmVy LCBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuZmR3X25hbWUpCisgICAgICAgIGlmIG5v dCBmZHdfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o IkNvdWxkIG5vdCBmaW5kIEZEVy4iKQorICAgICAgICBmc3J2X3Jlc3BvbnNl ID0gc2VsZi50ZXN0ZXIuZ2V0KAorICAgICAgICAgICAgc2VsZi51cmwgKyBz dHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCisgICAgICAgICAgICBz dHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsgc3RyKHNlbGYuZGJfaWQpICsg Jy8nCisgICAgICAgICAgICArIHN0cihzZWxmLmZkd19pZCkgKyAnLycgKyBz dHIoc2VsZi5mc3J2X2lkKSwKKyAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0n aHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZnNydl9y ZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorCisgICAgZGVmIHRlYXJEb3du KHNlbGYpOgorICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIGRpc2Nvbm5lY3Qg dGhlIHRlc3QgZGF0YWJhc2UgYW5kIGRyb3AgYWRkZWQgZXh0ZW5zaW9uCisg ICAgICAgICBhbmQgZGVwZW5kYW50IG9iamVjdHMuIiIiCisgICAgICAgIGV4 dGVuc2lvbl91dGlscy5kcm9wX2V4dGVuc2lvbihzZWxmLnNlcnZlciwgc2Vs Zi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5leHRlbnNpb25fbmFtZSkKKyAgICAgICAgZGF0YWJhc2Vf dXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9p ZCwgc2VsZi5kYl9pZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2Rh dGFfd3JhcHBlcnMvZm9yZWlnbl9zZXJ2ZXJzL3Rlc3RzL3Rlc3RfZm9yZWln bl9zZXJ2ZXJzX3B1dC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBl cnMvZm9yZWlnbl9zZXJ2ZXJzL3Rlc3RzL3Rlc3RfZm9yZWlnbl9zZXJ2ZXJz X3B1dC5weQppbmRleCA0ZTU4MDlhLi42NzEyYzBhIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL2ZvcmVpZ25fc2VydmVycy90 ZXN0cy90ZXN0X2ZvcmVpZ25fc2VydmVyc19wdXQucHkKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L2ZvcmVpZ25fZGF0YV93cmFwcGVycy9mb3JlaWduX3NlcnZlcnMvdGVzdHMv dGVzdF9mb3JlaWduX3NlcnZlcnNfcHV0LnB5CkBAIC02LDEyMyArNiw3OCBA QAogIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitm cm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitpbXBvcnQg dXVpZAoraW1wb3J0IGpzb24KIAogZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRl IGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgotZnJvbSByZWdyZXNzaW9uIGlt cG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLmV4dGVuc2lvbnMu dGVzdHMgaW1wb3J0XAotICAgIHV0aWxzIGFzIGV4dGVuc2lvbl91dGlscwot ZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRh dGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCi0gICAgdXRpbHMgYXMg c2NoZW1hX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCBcCiAgICAgdXRp bHMgYXMgZGF0YWJhc2VfdXRpbHMKLWZyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgc2Vy dmVyX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzLmV4dGVuc2lvbnMudGVzdHMgaW1wb3J0IFwK KyAgICB1dGlscyBhcyBleHRlbnNpb25fdXRpbHMKIGZyb20gcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuZm9yZWln bl9kYXRhX3dyYXBwZXJzLnRlc3RzXAogICAgIGltcG9ydCB1dGlscyBhcyBm ZHdfdXRpbHMKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVf ZGljdAorZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0 aWxzCiBmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIGZzcnZfdXRpbHMKLWZyb20g cmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBhZHZhbmNlZF9jb25maWdf ZGF0YQotaW1wb3J0IGpzb24KIAotY2xhc3MgRm9yZWlnblNlcnZlclB1dFRl c3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKLSAgICAiIiIKLSAgICBUaGlz IGNsYXNzIHdpbGwgYWRkIGZvcmVpZ24gc2VydmVyIHVuZGVyIEZEVyBub2Rl LgotICAgICIiIgogCitjbGFzcyBGb3JlaWduU2VydmVyUHV0VGVzdENhc2Uo QmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRoaXMgY2xhc3Mgd2lsbCBh ZGQgZm9yZWlnbiBzZXJ2ZXIgdW5kZXIgRkRXIG5vZGUuIiIiCiAgICAgc2Nl bmFyaW9zID0gWwogICAgICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZv ciBmb3JlaWduIHNlcnZlciBub2RlLgogICAgICAgICAoJ0NoZWNrIEZTUlYg Tm9kZScsIGRpY3QodXJsPScvYnJvd3Nlci9mb3JlaWduX3NlcnZlci9vYmov JykpCiAgICAgXQogCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAi IiIgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBleHRlbnNpb24gYW5kIGZv cmVpZ24gZGF0YSB3cmFwcGVyLiIiIgorICAgICAgICBzZWxmLnNjaGVtYV9k YXRhID0gcGFyZW50X25vZGVfZGljdFsnc2NoZW1hJ11bLTFdCisgICAgICAg IHNlbGYuc2VydmVyX2lkID0gc2VsZi5zY2hlbWFfZGF0YVsnc2VydmVyX2lk J10KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ2Ri X2lkJ10KKyAgICAgICAgc2VsZi5kYl9uYW1lID0gcGFyZW50X25vZGVfZGlj dFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQorICAgICAgICBzZWxmLnNj aGVtYV9uYW1lID0gc2VsZi5zY2hlbWFfZGF0YVsnc2NoZW1hX25hbWUnXQor ICAgICAgICBzZWxmLmV4dGVuc2lvbl9uYW1lID0gInBvc3RncmVzX2ZkdyIK KyAgICAgICAgc2VsZi5mZHdfbmFtZSA9ICJmZHdfJXMiICUgKHN0cih1dWlk LnV1aWQ0KCkpWzE6Nl0pCisgICAgICAgIHNlbGYuZnNydl9uYW1lID0gInRl c3RfZnNydl9wdXRfJXMiICUgKHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0pCisg ICAgICAgIHNlbGYuZXh0ZW5zaW9uX2lkID0gZXh0ZW5zaW9uX3V0aWxzLmNy ZWF0ZV9leHRlbnNpb24oCisgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2Vs Zi5kYl9uYW1lLCBzZWxmLmV4dGVuc2lvbl9uYW1lLCBzZWxmLnNjaGVtYV9u YW1lKQorICAgICAgICBzZWxmLmZkd19pZCA9IGZkd191dGlscy5jcmVhdGVf ZmR3KHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mZHdfbmFtZSkK KyAgICAgICAgc2VsZi5mc3J2X2lkID0gZnNydl91dGlscy5jcmVhdGVfZnNy dihzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnNydl9uYW1l LCBzZWxmLmZkd19uYW1lKQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm IHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgICBUaGlz IGZ1bmN0aW9uIHBlcmZvcm0gdGhlIGZvbGxvd2luZyB0YXNrczoKLSAgICAg ICAgIDEuIEFkZCBhbmQgY29ubmVjdCB0byB0aGUgdGVzdCBzZXJ2ZXIocykK LSAgICAgICAgIDIuIEFkZCBkYXRhYmFzZShzKSBjb25uZWN0ZWQgdG8gc2Vy dmVyKHMpCi0gICAgICAgICAzLiBBZGQgc2NoZW1hcyB0byBjb25uZWN0ZWQg ZGF0YWJhc2UocykKLSAgICAgICAgIDQuIEFkZCBleHRlbnNpb24ocykgdG8g c2NoZW1hKHMpCi0gICAgICAgICA1LiBBZGQgZm9yZWlnbiBkYXRhIHdyYXBw ZXIocykgdG8gZXh0ZW5zaW9uKHMpCi0gICAgICAgICA2LiBBZGQgZm9yZWln biBzZXJ2ZXIocykgdG8gZm9yZWlnbiBkYXRhIHdyYXBwZXIocykKLQotICAg ICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgICMg QWRkIHRoZSBzZXJ2ZXIKLSAgICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2 ZXIoY2xzLnRlc3RlcikKLQotICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVy cwotICAgICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5z ZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAg c2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAg ICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0g MDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMp IGNvbm5lY3RlZCB0byBhZGQgdGhlIGRhdGFiYXNlISEhIikKLQotICAgICAg ICAjIEFkZCBkYXRhYmFzZXMgdG8gY29ubmVjdGVkIHNlcnZlcnMKLSAgICAg ICAgZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNs cy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfaWRzKQotCi0gICAgICAg ICMgQWRkIHNjaGVtYShzKSB1bmRlciBjb25uZWN0ZWQgZGF0YWJhc2UocykK LSAgICAgICAgc2NoZW1hX3V0aWxzLmFkZF9zY2hlbWFzKGNscy50ZXN0ZXIp Ci0KLSAgICAgICAgIyBBZGQgZXh0ZW5zaW9uKHMpIHRvIHNjaGVtYShzKQot ICAgICAgICBleHRlbnNpb25fdXRpbHMuYWRkX2V4dGVuc2lvbnMoY2xzLnRl c3RlcikKLQotICAgICAgICAjIEFkZCBmb3JlaWduIGRhdGEgd3JhcHBlcihz KSB0byBleHRlbnNpb24ocykKLSAgICAgICAgZmR3X3V0aWxzLmFkZF9mZHco Y2xzLnRlc3RlcikKLQotICAgICAgICAjIEFkZCBmb3JlaWduIHNlcnZlcihz KSB0byBmb3JlaWduIGRhdGEgd3JhcHBlcgotICAgICAgICBmc3J2X3V0aWxz LmFkZF9mc3J2KGNscy50ZXN0ZXIpCi0KLSMKICAgICBkZWYgcnVuVGVzdChz ZWxmKToKLSAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUg Zm9yZWlnbiBzZXJ2ZXIgdW5kZXIgRkRXIG5vZGUuICIiIgotCi0gICAgICAg IGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQotICAgICAgICBzZXJ2ZXJfaWRz ID0gYWxsX2lkWyJzaWQiXQotICAgICAgICBkYl9pZHNfZGljdCA9IGFsbF9p ZFsiZGlkIl1bMF0KLSAgICAgICAgZmR3X2lkc19kaWN0ID0gYWxsX2lkWyJm aWQiXVswXQotICAgICAgICBmc3J2X2lkc19kaWN0ID0gYWxsX2lkWyJmc2lk Il1bMF0KLQotICAgICAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6 Ci0gICAgICAgICAgICBkYl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJf aWQpXQotICAgICAgICAgICAgZmR3X2lkID0gZmR3X2lkc19kaWN0W3NlcnZl cl9pZF0KLSAgICAgICAgICAgIGZzcnZfaWQgPSBmc3J2X2lkc19kaWN0W3Nl cnZlcl9pZF0KLQotICAgICAgICAgICAgcmVzcG9uc2UgPSBmc3J2X3V0aWxz LnZlcmlmeV9mc3J2KHNlbGYudGVzdGVyLCB1dGlscy5TRVJWRVJfR1JPVVAs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VydmVyX2lkLCBkYl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmZHdfaWQsIGZzcnZfaWQpCi0KLSAg ICAgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlID09IDIwMDoKLSAg ICAgICAgICAgICAgICBkYXRhID0gXAotICAgICAgICAgICAgICAgICAgICB7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiBhZHZh bmNlZF9jb25maWdfZGF0YVsnRlNSVl91cGRhdGVfZGF0YSddCi0gICAgICAg ICAgICAgICAgICAgICAgICBbJ2NvbW1lbnQnXSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICJpZCI6IGZzcnZfaWQKLSAgICAgICAgICAgICAgICAgICAg fQotCi0gICAgICAgICAgICAgICAgcHV0X3Jlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucHV0KAotICAgICAgICAgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1 dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKLSAgICAgICAgICAgICAgICAg ICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKyBzdHIoZGJfaWQpICsKLSAgICAg ICAgICAgICAgICAgICAgJy8nICsgc3RyKGZkd19pZCkgKyAnLycgKwotICAg ICAgICAgICAgICAgICAgICBzdHIoZnNydl9pZCksIGRhdGE9anNvbi5kdW1w cyhkYXRhKSwKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0 cz1UcnVlKQotCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo cHV0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0KLSAgICBAY2xhc3Nt ZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICAi IiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxldGVzIHRoZSBhZGRlZCBm b3JlaWduIHNlcnZlcihzKSAsCi0gICAgICAgIGZvcmVpZ24gZGF0YSB3cmFw cGVyKHMpLCBleHRlbnNpb24ocyksIHNjaGVtYShzKSwgZGF0YWJhc2Uocyks IHNlcnZlcihzKQotICAgICAgICBhbmQgcGFyZW50IGlkIGZpbGUKLQotICAg ICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgIGZz cnZfdXRpbHMuZGVsZXRlX2ZzcnYoY2xzLnRlc3RlcikKLSAgICAgICAgZmR3 X3V0aWxzLmRlbGV0ZV9mZHcoY2xzLnRlc3RlcikKLSAgICAgICAgZXh0ZW5z aW9uX3V0aWxzLmRlbGV0ZV9leHRlbnNpb24oY2xzLnRlc3RlcikKLSAgICAg ICAgc2NoZW1hX3V0aWxzLmRlbGV0ZV9zY2hlbWEoY2xzLnRlc3RlcikKLSAg ICAgICAgZGF0YWJhc2VfdXRpbHMuZGVsZXRlX2RhdGFiYXNlKGNscy50ZXN0 ZXIpCi0gICAgICAgIHNlcnZlcl91dGlscy5kZWxldGVfc2VydmVyKGNscy50 ZXN0ZXIpCi0gICAgICAgIHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgp CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgZm9yZWln biBzZXJ2ZXIgcHJlc2VudCB1bmRlciB0ZXN0CisgICAgICAgIGRhdGFiYXNl LiIiIgorICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0 X2RhdGFiYXNlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXRpbHMuU0VSVkVSX0dST1VQLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc2VydmVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfaWQpCisgICAgICAgIGlm IG5vdCBkYl9jb25bImluZm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6 CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25u ZWN0IHRvIGRhdGFiYXNlLiIpCisgICAgICAgIGZkd19yZXNwb25zZSA9IGZk d191dGlscy52ZXJpZnlfZmR3KHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuZmR3X25hbWUpCisgICAgICAgIGlmIG5vdCBmZHdfcmVzcG9uc2U6 CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5k IEZEVy4iKQorICAgICAgICBmc3J2X3Jlc3BvbnNlID0gZnNydl91dGlscy52 ZXJpZnlfZnNydihzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmZzcnZfbmFtZSkKKyAgICAgICAgaWYgbm90IGZzcnZfcmVzcG9uc2U6Cisg ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIEZT UlYuIikKKyAgICAgICAgZGF0YSA9IHsKKyAgICAgICAgICAgICAgICAiZGVz Y3JpcHRpb24iOiAiVGhpcyBpcyBmb3JlaWduIHNlcnZlciB1cGRhdGUgY29t bWVudCIsCisgICAgICAgICAgICAgICAgImlkIjogc2VsZi5mc3J2X2lkCisg ICAgICAgICAgICB9CisgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVz dGVyLnB1dCgKKyAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNF UlZFUl9HUk9VUCkgKyAnLycgKworICAgICAgICAgICAgc3RyKHNlbGYuc2Vy dmVyX2lkKSArICcvJyArIHN0cihzZWxmLmRiX2lkKSArCisgICAgICAgICAg ICAnLycgKyBzdHIoc2VsZi5mZHdfaWQpICsgJy8nICsKKyAgICAgICAgICAg IHN0cihzZWxmLmZzcnZfaWQpLCBkYXRhPWpzb24uZHVtcHMoZGF0YSksCisg ICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisgICAgICAgIHNl bGYuYXNzZXJ0RXF1YWxzKHB1dF9yZXNwb25zZS5zdGF0dXNfY29kZSwgMjAw KQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJUaGlz IGZ1bmN0aW9uIGRpc2Nvbm5lY3QgdGhlIHRlc3QgZGF0YWJhc2UgYW5kIGRy b3AgYWRkZWQgZXh0ZW5zaW9uCisgICAgICAgICBhbmQgZGVwZW5kYW50IG9i amVjdHMuIiIiCisgICAgICAgIGV4dGVuc2lvbl91dGlscy5kcm9wX2V4dGVu c2lvbihzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRlbnNpb25fbmFt ZSkKKyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFz ZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWln bl9kYXRhX3dyYXBwZXJzL2ZvcmVpZ25fc2VydmVycy90ZXN0cy91dGlscy5w eSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvZm9yZWlnbl9zZXJ2 ZXJzL3Rlc3RzL3V0aWxzLnB5CmluZGV4IGUyNzE2NDMuLjMyY2U2YWEgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvZm9yZWln bl9zZXJ2ZXJzL3Rlc3RzL3V0aWxzLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWdu X2RhdGFfd3JhcHBlcnMvZm9yZWlnbl9zZXJ2ZXJzL3Rlc3RzL3V0aWxzLnB5 CkBAIC03LDE0MyArNyw3NCBAQAogIwogIyAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKIAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgog aW1wb3J0IG9zCi1pbXBvcnQgcGlja2xlCi1pbXBvcnQganNvbgotZnJvbSBy ZWdyZXNzaW9uLnRlc3Rfc2V0dXAgaW1wb3J0IGFkdmFuY2VkX2NvbmZpZ19k YXRhLCBwaWNrbGVfcGF0aAotZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0 X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91 dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2 ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgXAotICAgIHV0aWxzIGFzIGRh dGFiYXNlX3V0aWxzCi1pbXBvcnQgdXVpZAotZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5mb3JlaWduX2Rh dGFfd3JhcHBlcnMudGVzdHMgXAotICAgIGltcG9ydCB1dGlscyBhcyBmZHdf dXRpbHMKK2ltcG9ydCBzeXMKK2Zyb20gcmVncmVzc2lvbi50ZXN0X3V0aWxz IGltcG9ydCBnZXRfZGJfY29ubmVjdGlvbgogCitmaWxlX25hbWUgPSBvcy5w YXRoLmJhc2VuYW1lKF9fZmlsZV9fKQogCi1GU1JWX1VSTCA9ICcvYnJvd3Nl ci9mb3JlaWduX3NlcnZlci9vYmovJwogCi0KLWRlZiBnZXRfZnNydl9jb25m aWdfZGF0YShzZXJ2ZXJfY29ubmVjdF9kYXRhKToKLSAgICBhZHZfY29uZmln X2RhdGEgPSBOb25lCi0gICAgZGJfdXNlciA9IHNlcnZlcl9jb25uZWN0X2Rh dGFbJ2RhdGEnXVsndXNlciddWyduYW1lJ10KLQotICAgICMgR2V0IHRoZSBj b25maWcgZGF0YSBvZiBhcHByb3ByaWF0ZSBkYiB1c2VyCi0gICAgZm9yIGNv bmZpZ190ZXN0X2RhdGEgaW4gYWR2YW5jZWRfY29uZmlnX2RhdGFbJ2ZzcnZf Y3JlZGVudGlhbHMnXToKLSAgICAgICAgaWYgZGJfdXNlciA9PSBjb25maWdf dGVzdF9kYXRhWydvd25lciddOgotICAgICAgICAgICAgYWR2X2NvbmZpZ19k YXRhID0gY29uZmlnX3Rlc3RfZGF0YQotCi0gICAgZGF0YSA9IHsKLSAgICAg ICAgImZzcnZhY2wiOiBhZHZfY29uZmlnX2RhdGFbJ2ZzcnZfYWNsJ10sCi0g ICAgICAgICJmc3J2b3B0aW9ucyI6IGFkdl9jb25maWdfZGF0YVsnZnNydl9v cHRpb25zJ10sCi0gICAgICAgICJmc3J2b3duZXIiOiBhZHZfY29uZmlnX2Rh dGFbJ293bmVyJ10sCi0gICAgICAgICJuYW1lIjogImZzcnZfe30iLmZvcm1h dChzdHIodXVpZC51dWlkNCgpKVsxOjRdKQotICAgIH0KLQotICAgIHJldHVy biBkYXRhCi0KLQotZGVmIGFkZF9mc3J2KHRlc3Rlcik6Ci0KLSAgICBhbGxf aWQgPSB1dGlscy5nZXRfaWRzKCkKLSAgICBzZXJ2ZXJfaWRzID0gYWxsX2lk WyJzaWQiXQotICAgIGRiX2lkc19kaWN0ID0gYWxsX2lkWyJkaWQiXVswXQot ICAgIGZkd19pZHNfZGljdCA9IGFsbF9pZFsiZmlkIl1bMF0KLQotICAgIGZv ciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKLSAgICAgICAgZGJfaWQgPSBk Yl9pZHNfZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgZGJfY29uID0g ZGF0YWJhc2VfdXRpbHMudmVyaWZ5X2RhdGFiYXNlKHRlc3RlciwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0 aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZCwgZGJfaWQpCi0KLSAg ICAgICAgaWYgZGJfY29uWydkYXRhJ11bJ2Nvbm5lY3RlZCddOgotICAgICAg ICAgICAgc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMu dmVyaWZ5X3NlcnZlcigKLSAgICAgICAgICAgICAgICB0ZXN0ZXIsIHV0aWxz LlNFUlZFUl9HUk9VUCwgc2VydmVyX2lkKQotCi0gICAgICAgICAgICBmZHdf aWQgPSBmZHdfaWRzX2RpY3Rbc2VydmVyX2lkXQotCi0gICAgICAgICAgICBy ZXNwb25zZSA9IGZkd191dGlscy52ZXJpZnlfZmR3cyh0ZXN0ZXIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGls cy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRiX2lkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmR3X2lkKQot Ci0gICAgICAgICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDA6 Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGdldF9mc3J2X2NvbmZpZ19kYXRh KHNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKQotCi0gICAgICAgICAgICAgICAg cmVzcG9uc2UgPSB0ZXN0ZXIucG9zdCgKLSAgICAgICAgICAgICAgICAgICAg RlNSVl9VUkwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCi0g ICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsgc3Ry KAotICAgICAgICAgICAgICAgICAgICAgICAgZGJfaWQpICsKLSAgICAgICAg ICAgICAgICAgICAgJy8nICsgc3RyKGZkd19pZCkgKyAnLycsCi0gICAgICAg ICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKLSAgICAgICAg ICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQotCi0gICAg ICAgICAgICAgICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1c19jb2RlID09IDIw MAotCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9h ZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoKSkKLSAgICAgICAgICAgICAgICB3 cml0ZV9mc3J2X2luZm8ocmVzcG9uc2VfZGF0YSwgc2VydmVyX2lkKQotCi0K LWRlZiB3cml0ZV9mc3J2X2luZm8ocmVzcG9uc2VfZGF0YSwgc2VydmVyX2lk KToKK2RlZiBjcmVhdGVfZnNydihzZXJ2ZXIsIGRiX25hbWUsIGZzcnZfbmFt ZSwgZmR3X25hbWUpOgogICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gd3Jp dGVzIHRoZSBzY2hlbWEgaWQgaW50byBwYXJlbnRfaWQucGtsCisgICAgVGhp cyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBmb3JlaWduIGRhdGEgd3JhcHBlciB1 bmRlciB0aGUgZXhpc3RpbmcKKyAgICBkdW1teSBkYXRhYmFzZS4KIAotICAg IDpwYXJhbSByZXNwb25zZV9kYXRhOiBmb3JlaWduIHNlcnZlciBhZGQgcmVz cG9uc2UgZGF0YQotICAgIDp0eXBlIHJlc3BvbnNlX2RhdGE6IGRpY3QKLSAg ICA6cGFyYW0gc2VydmVyX2lkOiBzZXJ2ZXIgaWQKLSAgICA6dHlwZSBzZXJ2 ZXJfaWQ6IHN0cgotICAgIDpyZXR1cm46IE5vbmUKKyAgICA6cGFyYW0gc2Vy dmVyOiB0ZXN0X3NlcnZlciwgdGVzdF9kYiwgZnNydl9uYW1lLCBmZHdfbmFt ZQorICAgIDpyZXR1cm46IGZzcnZfaWQKICAgICAiIiIKIAotICAgIGZzcnZf aWQgPSByZXNwb25zZV9kYXRhWydub2RlJ11bJ19pZCddCi0gICAgcGlja2xl X2lkX2RpY3QgPSB1dGlscy5nZXRfcGlja2xlX2lkX2RpY3QoKQotICAgIGlm IG9zLnBhdGguaXNmaWxlKHBpY2tsZV9wYXRoKToKLSAgICAgICAgZXhpc3Rp bmdfc2VydmVyX2lkID0gb3BlbihwaWNrbGVfcGF0aCwgJ3JiJykKLSAgICAg ICAgdG9sX3NlcnZlcl9pZCA9IHBpY2tsZS5sb2FkKGV4aXN0aW5nX3NlcnZl cl9pZCkKLSAgICAgICAgcGlja2xlX2lkX2RpY3QgPSB0b2xfc2VydmVyX2lk Ci0gICAgaWYgJ2ZzaWQnIGluIHBpY2tsZV9pZF9kaWN0OgotICAgICAgICBp ZiBwaWNrbGVfaWRfZGljdFsnZnNpZCddOgotICAgICAgICAgICAgIyBBZGQg dGhlIEZTUlZfaWQgYXMgdmFsdWUgaW4gZGljdAotICAgICAgICAgICAgcGlj a2xlX2lkX2RpY3RbImZzaWQiXVswXS51cGRhdGUoe3NlcnZlcl9pZDogZnNy dl9pZH0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIENyZWF0ZSBu ZXcgZGljdCB3aXRoIHNlcnZlcl9pZCBhbmQgZnNydl9pZAotICAgICAgICAg ICAgcGlja2xlX2lkX2RpY3RbImZzaWQiXS5hcHBlbmQoe3NlcnZlcl9pZDog ZnNydl9pZH0pCi0gICAgZnNydl9vdXRwdXQgPSBvcGVuKHBpY2tsZV9wYXRo LCAnd2InKQotICAgIHBpY2tsZS5kdW1wKHBpY2tsZV9pZF9kaWN0LCBmc3J2 X291dHB1dCkKLSAgICBmc3J2X291dHB1dC5jbG9zZSgpCi0KLQotZGVmIHZl cmlmeV9mc3J2KHRlc3Rlciwgc2VydmVyX2dyb3VwLCAgc2VydmVyX2lkLCBk Yl9pZCwgZmR3X2lkLCBmc3J2X2lkKToKLSAgICByZXNwb25zZSA9IHRlc3Rl ci5nZXQoRlNSVl9VUkwgKyBzdHIoc2VydmVyX2dyb3VwKSArICcvJyArCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8n ICsgc3RyKGRiX2lkKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcv JyArIHN0cihmZHdfaWQpICsgJy8nICsgc3RyKGZzcnZfaWQpLAotICAgICAg ICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicp Ci0gICAgcmV0dXJuIHJlc3BvbnNlCi0KLQotZGVmIGRlbGV0ZV9mc3J2KHRl c3Rlcik6Ci0gICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lkcygpCi0gICAgc2Vy dmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KLSAgICBkYl9pZHNfZGljdCA9IGFs bF9pZFsiZGlkIl1bMF0KLSAgICBmZHdfaWRzX2RpY3QgPSBhbGxfaWRbImZp ZCJdWzBdCi0gICAgZnNydl9pZHNfZGljdCA9IGFsbF9pZFsiZnNpZCJdWzBd Ci0KLSAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAg IGRiX2lkID0gZGJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAg IGZkd19pZCA9IGZkd19pZHNfZGljdFtzZXJ2ZXJfaWRdCi0gICAgICAgIGZz cnZfaWQgPSBmc3J2X2lkc19kaWN0W3NlcnZlcl9pZF0KLQotICAgICAgICBy ZXNwb25zZSA9IHZlcmlmeV9mc3J2KHRlc3RlciwgdXRpbHMuU0VSVkVSX0dS T1VQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9p ZCwgZGJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmR3 X2lkLCBmc3J2X2lkKQotCi0gICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19j b2RlID09IDIwMDoKLSAgICAgICAgICAgIGRlbGV0ZV9yZXNwb25zZSA9IHRl c3Rlci5kZWxldGUoCi0gICAgICAgICAgICAgICAgRlNSVl9VUkwgKyBzdHIo dXRpbHMuU0VSVkVSX0dST1VQKSArCi0gICAgICAgICAgICAgICAgJy8nICsg c3RyKHNlcnZlcl9pZCkgKyAnLycgKwotICAgICAgICAgICAgICAgIHN0cihk Yl9pZCkgKyAnLycgKwotICAgICAgICAgICAgICAgIHN0cihmZHdfaWQpICsg Jy8nICsKLSAgICAgICAgICAgICAgICBzdHIoZnNydl9pZCksCi0gICAgICAg ICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQotCi0gICAgICAgICAg ICBkZWxldGVfcmVzcGRhdGEgPSBqc29uLmxvYWRzKGRlbGV0ZV9yZXNwb25z ZS5kYXRhLmRlY29kZSgpKQotICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZV9y ZXNwZGF0YQorICAgIHRyeToKKyAgICAgICAgY29ubmVjdGlvbiA9IGdldF9k Yl9jb25uZWN0aW9uKGRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2RiX3Bh c3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlcnZlclsncG9ydCddKQorICAgICAgICBvbGRf aXNvbGF0aW9uX2xldmVsID0gY29ubmVjdGlvbi5pc29sYXRpb25fbGV2ZWwK KyAgICAgICAgY29ubmVjdGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKDApCisg ICAgICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKKyAgICAg ICAgcGdfY3Vyc29yLmV4ZWN1dGUoIkNSRUFURSBTRVJWRVIgezB9IEZPUkVJ R04gREFUQSBXUkFQUEVSIHsxfSBPUFRJT05TICIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIihob3N0ICd7Mn0nLCBkYm5hbWUgJ3szfScsIHBvcnQg J3s0fScpIi5mb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGZz cnZfbmFtZSwgZmR3X25hbWUsIHNlcnZlclsnaG9zdCddLCBkYl9uYW1lLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydwb3J0J10pKQor CisgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xhdGlvbl9sZXZlbChvbGRf aXNvbGF0aW9uX2xldmVsKQorICAgICAgICBjb25uZWN0aW9uLmNvbW1pdCgp CisKKyAgICAgICAgIyBHZXQgJ29pZCcgZnJvbSBuZXdseSBjcmVhdGVkIGZv cmVpZ24gc2VydmVyCisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKAorICAg ICAgICAgICAgIlNFTEVDVCBvaWQgRlJPTSBwZ19mb3JlaWduX3NlcnZlciBX SEVSRSBzcnZuYW1lID0gJyVzJyIKKyAgICAgICAgICAgICUgZnNydl9uYW1l KQorICAgICAgICBvaWQgPSBwZ19jdXJzb3IuZmV0Y2hvbmUoKQorICAgICAg ICBmc3J2X2lkID0gJycKKyAgICAgICAgaWYgb2lkOgorICAgICAgICAgICAg ZnNydl9pZCA9IG9pZFswXQorICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkK KyAgICAgICAgcmV0dXJuIGZzcnZfaWQKKyAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGV4Y2VwdGlvbjoKKyAgICAgICAgZXhjZXB0aW9uID0gIkV4Y2VwdGlv bjogJXM6IGxpbmU6JXMgJXMiICUgKAorICAgICAgICAgICAgZmlsZV9uYW1l LCBzeXMuZXhjX3RyYWNlYmFjay50Yl9saW5lbm8sIGV4Y2VwdGlvbikKKyAg ICAgICAgcHJpbnQoZXhjZXB0aW9uLCBmaWxlPXN5cy5zdGRlcnIpCisKKwor ZGVmIHZlcmlmeV9mc3J2KHNlcnZlciwgZGJfbmFtZSAsIGZzcnZfbmFtZSk6 CisgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCB2ZXJpZnkgY3VycmVudCBm b3JlaWduIHNlcnZlci4iIiIKKworICAgIHRyeToKKyAgICAgICAgY29ubmVj dGlvbiA9IGdldF9kYl9jb25uZWN0aW9uKGRiX25hbWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3Vz ZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2hv c3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlcnZlclsncG9ydCddKQorICAgICAgICBwZ19jdXJzb3IgPSBj b25uZWN0aW9uLmN1cnNvcigpCisKKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1 dGUoCisgICAgICAgICAgICAiU0VMRUNUIG9pZCBGUk9NIHBnX2ZvcmVpZ25f c2VydmVyIFdIRVJFIHNydm5hbWUgPSAnJXMnIgorICAgICAgICAgICAgJSBm c3J2X25hbWUpCisgICAgICAgIGZzcnZzID0gcGdfY3Vyc29yLmZldGNoYWxs KCkKKyAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpCisgICAgICAgIHJldHVy biBmc3J2cworICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjZXB0aW9uOgor ICAgICAgICBleGNlcHRpb24gPSAiJXM6IGxpbmU6JXMgJXMiICUgKAorICAg ICAgICAgICAgZmlsZV9uYW1lLCBzeXMuZXhjX3RyYWNlYmFjay50Yl9saW5l bm8sIGV4Y2VwdGlvbikKKyAgICAgICAgcHJpbnQoZXhjZXB0aW9uLCBmaWxl PXN5cy5zdGRlcnIpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRh X3dyYXBwZXJzL2ZvcmVpZ25fc2VydmVycy91c2VyX21hcHBpbmcvdGVzdHMv dGVzdF91c2VyX21hcHBpbmdfYWRkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0 YV93cmFwcGVycy9mb3JlaWduX3NlcnZlcnMvdXNlcl9tYXBwaW5nL3Rlc3Rz L3Rlc3RfdXNlcl9tYXBwaW5nX2FkZC5weQppbmRleCBlNDU1MWU3Li4zY2Jm MGU5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJz L2ZvcmVpZ25fc2VydmVycy91c2VyX21hcHBpbmcvdGVzdHMvdGVzdF91c2Vy X21hcHBpbmdfYWRkLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3Jh cHBlcnMvZm9yZWlnbl9zZXJ2ZXJzL3VzZXJfbWFwcGluZy90ZXN0cy90ZXN0 X3VzZXJfbWFwcGluZ19hZGQucHkKQEAgLTYsOTMgKzYsOTIgQEAKICMgVGhp cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworZnJvbSBfX2Z1 dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgoraW1wb3J0IHV1aWQKK2lt cG9ydCBqc29uCiAKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQg QmFzZVRlc3RHZW5lcmF0b3IKIGZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVz dF91dGlscyBhcyB1dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVy X2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5leHRlbnNpb25zLnRlc3RzIGlt cG9ydFwKLSAgICB1dGlscyBhcyBleHRlbnNpb25fdXRpbHMKLWZyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu c2NoZW1hcy50ZXN0cyBpbXBvcnQgXAotICAgIHV0aWxzIGFzIHNjaGVtYV91 dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2 ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIGRh dGFiYXNlX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGls cworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJz LmRhdGFiYXNlcy5leHRlbnNpb25zLnRlc3RzIGltcG9ydCBcCisgICAgdXRp bHMgYXMgZXh0ZW5zaW9uX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLmZvcmVpZ25fZGF0YV93 cmFwcGVycy50ZXN0c1wKICAgICBpbXBvcnQgdXRpbHMgYXMgZmR3X3V0aWxz Citmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKIGZy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMuZm9yZWlnbl9kYXRhX3dyYXBwZXJzLlwKICAgICBmb3JlaWduX3Nl cnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIGZzcnZfdXRpbHMKLWZyb20g LiBpbXBvcnQgdXRpbHMgYXMgdW1fdXRpbHMKIAogCiBjbGFzcyBVc2VyTWFw cGluZ0FkZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKLSAgICAiIiIK LSAgICBUaGlzIGNsYXNzIHdpbGwgYWRkIHVzZXIgbWFwcGluZyB1bmRlciBm b3JlaWduIHNlcnZlciBub2RlLgotICAgICIiIgorICAgICIiIlRoaXMgY2xh c3Mgd2lsbCBhZGQgdXNlciBtYXBwaW5nIHVuZGVyIGZvcmVpZ24gc2VydmVy IG5vZGUuIiIiCiAKICAgICBzY2VuYXJpb3MgPSBbCiAgICAgICAgICMgRmV0 Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIHVzZXIgbWFwcGluZyBub2RlLgogICAg ICAgICAoJ0NoZWNrIHVzZXIgbWFwcGluZyBOb2RlJywgZGljdCh1cmw9Jy9i cm93c2VyL3VzZXJfbWFwcGluZy9vYmovJykpCiAgICAgXQogCi0gICAgQGNs YXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAg IiIiCi0gICAgICAgICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm0gdGhlIGZvbGxv d2luZyB0YXNrczoKLSAgICAgICAgIDEuIEFkZCBhbmQgY29ubmVjdCB0byB0 aGUgdGVzdCBzZXJ2ZXIocykKLSAgICAgICAgIDIuIEFkZCBkYXRhYmFzZShz KSBjb25uZWN0ZWQgdG8gc2VydmVyKHMpCi0gICAgICAgICAzLiBBZGQgc2No ZW1hcyB0byBjb25uZWN0ZWQgZGF0YWJhc2UocykKLSAgICAgICAgIDQuIEFk ZCBleHRlbnNpb24ocykgdG8gc2NoZW1hKHMpCi0gICAgICAgICA1LiBBZGQg Zm9yZWlnbiBkYXRhIHdyYXBwZXIocykgdG8gZXh0ZW5zaW9uKHMpCi0gICAg ICAgICA2LiBBZGQgZm9yZWlnbiBzZXJ2ZXIocykgdG8gZm9yZWlnbiBkYXRh IHdyYXBwZXIocykKLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAg ICIiIgotCi0gICAgICAgICMgQWRkIHRoZSBzZXJ2ZXIKLSAgICAgICAgc2Vy dmVyX3V0aWxzLmFkZF9zZXJ2ZXIoY2xzLnRlc3RlcikKLQotICAgICAgICAj IENvbm5lY3QgdG8gc2VydmVycwotICAgICAgICBjbHMuc2VydmVyX2Nvbm5l Y3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRz ID0gXAotICAgICAgICAgICAgc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVy KGNscy50ZXN0ZXIpCi0KLSAgICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29u bmVjdF9yZXNwb25zZSkgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0byBhZGQgdGhlIGRhdGFi YXNlISEhIikKLQotICAgICAgICAjIEFkZCBkYXRhYmFzZXMgdG8gY29ubmVj dGVkIHNlcnZlcnMKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFi YXNlKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2 ZXJfaWRzKQotCi0gICAgICAgICMgQWRkIHNjaGVtYShzKSB1bmRlciBjb25u ZWN0ZWQgZGF0YWJhc2UocykKLSAgICAgICAgc2NoZW1hX3V0aWxzLmFkZF9z Y2hlbWFzKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgIyBBZGQgZXh0ZW5zaW9u KHMpIHRvIHNjaGVtYShzKQotICAgICAgICBleHRlbnNpb25fdXRpbHMuYWRk X2V4dGVuc2lvbnMoY2xzLnRlc3RlcikKLQotICAgICAgICAjIEFkZCBmb3Jl aWduIGRhdGEgd3JhcHBlcihzKSB0byBleHRlbnNpb24ocykKLSAgICAgICAg ZmR3X3V0aWxzLmFkZF9mZHcoY2xzLnRlc3RlcikKLQotICAgICAgICAjIEFk ZCBmb3JlaWduIHNlcnZlcihzKSB0byBmb3JlaWduIGRhdGEgd3JhcHBlcgot ICAgICAgICBmc3J2X3V0aWxzLmFkZF9mc3J2KGNscy50ZXN0ZXIpCisgICAg ZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3 aWxsIGNyZWF0ZSBleHRlbnNpb24gYW5kIGZvcmVpZ24gZGF0YSB3cmFwcGVy LiIiIgorICAgICAgICBzZWxmLnNjaGVtYV9kYXRhID0gcGFyZW50X25vZGVf ZGljdFsnc2NoZW1hJ11bLTFdCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0g c2VsZi5zY2hlbWFfZGF0YVsnc2VydmVyX2lkJ10KKyAgICAgICAgc2VsZi5k Yl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ2RiX2lkJ10KKyAgICAgICAgc2Vs Zi5kYl9uYW1lID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1b ImRiX25hbWUiXQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2VsZi5z Y2hlbWFfZGF0YVsnc2NoZW1hX25hbWUnXQorICAgICAgICBzZWxmLmV4dGVu c2lvbl9uYW1lID0gInBvc3RncmVzX2ZkdyIKKyAgICAgICAgc2VsZi5mZHdf bmFtZSA9ICJmZHdfJXMiICUgKHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0pCisg ICAgICAgIHNlbGYuZnNydl9uYW1lID0gImZzcnZfJXMiICUgKHN0cih1dWlk LnV1aWQ0KCkpWzE6Nl0pCisgICAgICAgIHNlbGYuZXh0ZW5zaW9uX2lkID0g ZXh0ZW5zaW9uX3V0aWxzLmNyZWF0ZV9leHRlbnNpb24oCisgICAgICAgICAg ICBzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLCBzZWxmLmV4dGVuc2lvbl9u YW1lLCBzZWxmLnNjaGVtYV9uYW1lKQorICAgICAgICBzZWxmLmZkd19pZCA9 IGZkd191dGlscy5jcmVhdGVfZmR3KHNlbGYuc2VydmVyLCBzZWxmLmRiX25h bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5mZHdfbmFtZSkKKyAgICAgICAgc2VsZi5mc3J2X2lkID0gZnNy dl91dGlscy5jcmVhdGVfZnNydihzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuZnNydl9uYW1lLCBzZWxmLmZkd19uYW1lKQogCiAgICAgZGVm IHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdp bGwgYWRkIHVzZXIgbWFwcGluZyB1bmRlciBmb3JlaWduIHNlcnZlciBub2Rl LiAiIiIKLQotICAgICAgICB1bV91dGlscy5hZGRfdW0oc2VsZi50ZXN0ZXIp Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhj bHMpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxl dGVzIHRoZSBhZGRlZCB1c2VyIG1hcHBpbmcocyksIGZvcmVpZ24gc2VydmVy KHMpLAotICAgICAgICBmb3JlaWduIGRhdGEgd3JhcHBlcihzKSwgZXh0ZW5z aW9uKHMpLCBzY2hlbWEocyksIGRhdGFiYXNlKHMpLAotICAgICAgICBzZXJ2 ZXIocykgYW5kIHBhcmVudCBpZCBmaWxlCi0KLSAgICAgICAgOnJldHVybjog Tm9uZQotICAgICAgICAiIiIKLQotICAgICAgICB1bV91dGlscy5kZWxldGVf dW0oY2xzLnRlc3RlcikKLSAgICAgICAgZnNydl91dGlscy5kZWxldGVfZnNy dihjbHMudGVzdGVyKQotICAgICAgICBmZHdfdXRpbHMuZGVsZXRlX2Zkdyhj bHMudGVzdGVyKQotICAgICAgICBleHRlbnNpb25fdXRpbHMuZGVsZXRlX2V4 dGVuc2lvbihjbHMudGVzdGVyKQotICAgICAgICBzY2hlbWFfdXRpbHMuZGVs ZXRlX3NjaGVtYShjbHMudGVzdGVyKQotICAgICAgICBkYXRhYmFzZV91dGls cy5kZWxldGVfZGF0YWJhc2UoY2xzLnRlc3RlcikKLSAgICAgICAgc2VydmVy X3V0aWxzLmRlbGV0ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgdXRp bHMuZGVsZXRlX3BhcmVudF9pZF9maWxlKCkKKyAgICAgICAgIiIiVGhpcyBm dW5jdGlvbiB3aWxsIHVwZGF0ZSBmb3JlaWduIHNlcnZlciBwcmVzZW50IHVu ZGVyIHRlc3QKKyAgICAgICAgZGF0YWJhc2UuICIiIgorICAgICAgICBkYl9j b24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuZGJfaWQpCisgICAgICAgIGlmIG5vdCBkYl9jb25bImluZm8i XSA9PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6CisgICAgICAgICAgICByYWlz ZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlLiIp CisgICAgICAgIGZkd19yZXNwb25zZSA9IGZkd191dGlscy52ZXJpZnlfZmR3 KHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmR3X25hbWUpCisg ICAgICAgIGlmIG5vdCBmZHdfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlz ZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIEZEVy4iKQorICAgICAgICBm c3J2X3Jlc3BvbnNlID0gZnNydl91dGlscy52ZXJpZnlfZnNydihzZWxmLnNl cnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZzcnZfbmFtZSkKKyAgICAg ICAgaWYgbm90IGZzcnZfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBF eGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIEZTUlYuIikKKyAgICAgICAgZGJf dXNlciA9IHNlbGYuc2VydmVyWyJ1c2VybmFtZSJdCisgICAgICAgIGRhdGEg PSB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiBkYl91c2VyLAorICAgICAg ICAgICAgICAgICJ1bV9vcHRpb25zIjogW10sCisgICAgICAgICAgICAgICAg InVtb3B0aW9ucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAgICAgInVtb3B0aW9uIjogInVzZXIiLAorICAgICAg ICAgICAgICAgICAgICAgICAgInVtdmFsdWUiOiBzZWxmLnNlcnZlclsidXNl cm5hbWUiXQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAidW1vcHRpb24i OiAicGFzc3dvcmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgInVtdmFs dWUiOiBzZWxmLnNlcnZlclsiZGJfcGFzc3dvcmQiXQorICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfQor ICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QoCisgICAgICAg ICAgICBzZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8n ICsKKyAgICAgICAgICAgIHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBz dHIoCisgICAgICAgICAgICAgICAgc2VsZi5kYl9pZCkgKworICAgICAgICAg ICAgJy8nICsgc3RyKHNlbGYuZmR3X2lkKSArICcvJyArIHN0cihzZWxmLmZz cnZfaWQpICsgJy8nLAorICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRh dGEpLAorICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQor ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29k ZSwgMjAwKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAi IiJUaGlzIGZ1bmN0aW9uIGRpc2Nvbm5lY3QgdGhlIHRlc3QgZGF0YWJhc2Ug YW5kIGRyb3AgYWRkZWQgZXh0ZW5zaW9uCisgICAgICAgICBhbmQgZGVwZW5k YW50IG9iamVjdHMuIiIiCisgICAgICAgIGV4dGVuc2lvbl91dGlscy5kcm9w X2V4dGVuc2lvbihzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRlbnNp b25fbmFtZSkKKyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9k YXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvZm9yZWln bl9zZXJ2ZXJzL3VzZXJfbWFwcGluZy90ZXN0cy90ZXN0X3VzZXJfbWFwcGlu Z19kZWxldGUucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL2Zv cmVpZ25fc2VydmVycy91c2VyX21hcHBpbmcvdGVzdHMvdGVzdF91c2VyX21h cHBpbmdfZGVsZXRlLnB5CmluZGV4IDI0NWJhMmUuLjliNDk2MDQgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvZm9yZWlnbl9z ZXJ2ZXJzL3VzZXJfbWFwcGluZy90ZXN0cy90ZXN0X3VzZXJfbWFwcGluZ19k ZWxldGUucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93cmFwcGVycy9m b3JlaWduX3NlcnZlcnMvdXNlcl9tYXBwaW5nL3Rlc3RzL3Rlc3RfdXNlcl9t YXBwaW5nX2RlbGV0ZS5weQpAQCAtNiw5NyArNiw4MSBAQAogIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitmcm9tIF9fZnV0dXJl X18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitpbXBvcnQgdXVpZAogCiBmcm9t IHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9y CiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMK LWZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5k YXRhYmFzZXMuZXh0ZW5zaW9ucy50ZXN0cyBpbXBvcnRcCi0gICAgdXRpbHMg YXMgZXh0ZW5zaW9uX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2 ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGVzdHMgaW1w b3J0IFwKLSAgICB1dGlscyBhcyBzY2hlbWFfdXRpbHMKIGZyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVz dHMgaW1wb3J0IFwKICAgICB1dGlscyBhcyBkYXRhYmFzZV91dGlscwotZnJv bSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3Rz IGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuZXh0ZW5z aW9ucy50ZXN0cyBpbXBvcnQgXAorICAgIHV0aWxzIGFzIGV4dGVuc2lvbl91 dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2 ZXJzLmRhdGFiYXNlcy5mb3JlaWduX2RhdGFfd3JhcHBlcnMudGVzdHMgXAog ICAgIGltcG9ydCB1dGlscyBhcyBmZHdfdXRpbHMKLWZyb20gcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuZm9yZWln bl9kYXRhX3dyYXBwZXJzLlwKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFy ZW50X25vZGVfZGljdAorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dy b3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5mb3JlaWduX2RhdGFfd3JhcHBlcnMu IFwKICAgICBmb3JlaWduX3NlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFz IGZzcnZfdXRpbHMKIGZyb20gLiBpbXBvcnQgdXRpbHMgYXMgdW1fdXRpbHMK IAogCiBjbGFzcyBVc2VyTWFwcGluZ0RlbGV0ZVRlc3RDYXNlKEJhc2VUZXN0 R2VuZXJhdG9yKToKLSAgICAiIiIKLSAgICBUaGlzIGNsYXNzIHdpbGwgZGVs ZXRlIHVzZXIgbWFwcGluZyB1bmRlciBmb3JlaWduIHNlcnZlciBub2RlLgot ICAgICIiIgotCisgICAgIiIiVGhpcyBjbGFzcyB3aWxsIGRlbGV0ZSB1c2Vy IG1hcHBpbmcgdW5kZXIgZm9yZWlnbiBzZXJ2ZXIgbm9kZS4iIiIKICAgICBz Y2VuYXJpb3MgPSBbCiAgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwg Zm9yIHVzZXIgbWFwcGluZyBub2RlLgogICAgICAgICAoJ0NoZWNrIHVzZXIg bWFwcGluZyBOb2RlJywgZGljdCh1cmw9Jy9icm93c2VyL3VzZXJfbWFwcGlu Zy9vYmovJykpCiAgICAgXQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm IHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgICBUaGlz IGZ1bmN0aW9uIHBlcmZvcm0gdGhlIGZvbGxvd2luZyB0YXNrczoKLSAgICAg ICAgIDEuIEFkZCBhbmQgY29ubmVjdCB0byB0aGUgdGVzdCBzZXJ2ZXIocykK LSAgICAgICAgIDIuIEFkZCBkYXRhYmFzZShzKSBjb25uZWN0ZWQgdG8gc2Vy dmVyKHMpCi0gICAgICAgICAzLiBBZGQgc2NoZW1hcyB0byBjb25uZWN0ZWQg ZGF0YWJhc2UocykKLSAgICAgICAgIDQuIEFkZCBleHRlbnNpb24ocykgdG8g c2NoZW1hKHMpCi0gICAgICAgICA1LiBBZGQgZm9yZWlnbiBkYXRhIHdyYXBw ZXIocykgdG8gZXh0ZW5zaW9uKHMpCi0gICAgICAgICA2LiBBZGQgZm9yZWln biBzZXJ2ZXIocykgdG8gZm9yZWlnbiBkYXRhIHdyYXBwZXIocykKLSAgICAg ICAgIDcuIEFkZCB1c2VyIG1hcHBpbmcocykgdG8gZm9yZWlnbiBzZXJ2ZXIo cykKLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0g ICAgICAgICMgQWRkIHRoZSBzZXJ2ZXIKLSAgICAgICAgc2VydmVyX3V0aWxz LmFkZF9zZXJ2ZXIoY2xzLnRlc3RlcikKLQotICAgICAgICAjIENvbm5lY3Qg dG8gc2VydmVycwotICAgICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9u c2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAotICAg ICAgICAgICAgc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0 ZXIpCi0KLSAgICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNw b25zZSkgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8g U2VydmVyKHMpIGNvbm5lY3RlZCB0byBhZGQgdGhlIGRhdGFiYXNlISEhIikK LQotICAgICAgICAjIEFkZCBkYXRhYmFzZXMgdG8gY29ubmVjdGVkIHNlcnZl cnMKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFiYXNlKGNscy50 ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfaWRzKQot Ci0gICAgICAgICMgQWRkIHNjaGVtYShzKSB1bmRlciBjb25uZWN0ZWQgZGF0 YWJhc2UocykKLSAgICAgICAgc2NoZW1hX3V0aWxzLmFkZF9zY2hlbWFzKGNs cy50ZXN0ZXIpCi0KLSAgICAgICAgIyBBZGQgZXh0ZW5zaW9uKHMpIHRvIHNj aGVtYShzKQotICAgICAgICBleHRlbnNpb25fdXRpbHMuYWRkX2V4dGVuc2lv bnMoY2xzLnRlc3RlcikKLQotICAgICAgICAjIEFkZCBmb3JlaWduIGRhdGEg d3JhcHBlcihzKSB0byBleHRlbnNpb24ocykKLSAgICAgICAgZmR3X3V0aWxz LmFkZF9mZHcoY2xzLnRlc3RlcikKLQotICAgICAgICAjIEFkZCBmb3JlaWdu IHNlcnZlcihzKSB0byBmb3JlaWduIGRhdGEgd3JhcHBlcgotICAgICAgICBm c3J2X3V0aWxzLmFkZF9mc3J2KGNscy50ZXN0ZXIpCi0KLSAgICAgICAgIyBB ZGQgdXNlciBtYXBwaW5nKHMpIHRvIGZvcmVpZ24gc2VydmVyKHMpCi0gICAg ICAgIHVtX3V0aWxzLmFkZF91bShjbHMudGVzdGVyKQorICAgIGRlZiBzZXRV cChzZWxmKToKKyAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVh dGUgZXh0ZW5zaW9uIGFuZCBmb3JlaWduIGRhdGEgd3JhcHBlci4iIiIKKyAg ICAgICAgc2VsZi5zY2hlbWFfZGF0YSA9IHBhcmVudF9ub2RlX2RpY3RbJ3Nj aGVtYSddWy0xXQorICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHNlbGYuc2No ZW1hX2RhdGFbJ3NlcnZlcl9pZCddCisgICAgICAgIHNlbGYuZGJfaWQgPSBz ZWxmLnNjaGVtYV9kYXRhWydkYl9pZCddCisgICAgICAgIHNlbGYuZGJfbmFt ZSA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1l Il0KKyAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHNlbGYuc2NoZW1hX2Rh dGFbJ3NjaGVtYV9uYW1lJ10KKyAgICAgICAgc2VsZi5leHRlbnNpb25fbmFt ZSA9ICJwb3N0Z3Jlc19mZHciCisgICAgICAgIHNlbGYuZmR3X25hbWUgPSAi ZmR3XyVzIiAlIChzdHIodXVpZC51dWlkNCgpKVsxOjZdKQorICAgICAgICBz ZWxmLmZzcnZfbmFtZSA9ICJmc3J2XyVzIiAlIChzdHIodXVpZC51dWlkNCgp KVsxOjZdKQorICAgICAgICBzZWxmLmV4dGVuc2lvbl9pZCA9IGV4dGVuc2lv bl91dGlscy5jcmVhdGVfZXh0ZW5zaW9uKAorICAgICAgICAgICAgc2VsZi5z ZXJ2ZXIsIHNlbGYuZGJfbmFtZSwgc2VsZi5leHRlbnNpb25fbmFtZSwgc2Vs Zi5zY2hlbWFfbmFtZSkKKyAgICAgICAgc2VsZi5mZHdfaWQgPSBmZHdfdXRp bHMuY3JlYXRlX2ZkdyhzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZmR3X25hbWUpCisgICAgICAgIHNlbGYuZnNydl9pZCA9IGZzcnZfdXRpbHMu Y3JlYXRlX2ZzcnYoc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmZzcnZfbmFtZSwgc2VsZi5mZHdfbmFtZSkKKyAgICAgICAgc2VsZi51bV9p ZCA9IHVtX3V0aWxzLmNyZWF0ZV91c2VyX21hcHBpbmcoc2VsZi5zZXJ2ZXIs IHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5mc3J2X25hbWUpCiAKICAgICBk ZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24g ZGVsZXRlIHVzZXIgbWFwcGluZyB1bmRlciBmb3JlaWduIHNlcnZlciBub2Rl LiAiIiIKLQotICAgICAgICBkZWxldGVfcmVzcGRhdGEgPSB1bV91dGlscy5k ZWxldGVfdW0oc2VsZi50ZXN0ZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1 ZShkZWxldGVfcmVzcGRhdGFbJ3N1Y2Nlc3MnXSwgMSkKLQotICAgIEBjbGFz c21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAg ICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFkZGVk IGZvcmVpZ24gc2VydmVyKHMpICwKLSAgICAgICAgZm9yZWlnbiBkYXRhIHdy YXBwZXIocyksIGV4dGVuc2lvbihzKSwgc2NoZW1hKHMpLCBkYXRhYmFzZShz KSwKLSAgICAgICAgc2VydmVyKHMpIGFuZCBwYXJlbnQgaWQgZmlsZQotCi0g ICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAg ZnNydl91dGlscy5kZWxldGVfZnNydihjbHMudGVzdGVyKQotICAgICAgICBm ZHdfdXRpbHMuZGVsZXRlX2ZkdyhjbHMudGVzdGVyKQotICAgICAgICBleHRl bnNpb25fdXRpbHMuZGVsZXRlX2V4dGVuc2lvbihjbHMudGVzdGVyKQotICAg ICAgICBzY2hlbWFfdXRpbHMuZGVsZXRlX3NjaGVtYShjbHMudGVzdGVyKQot ICAgICAgICBkYXRhYmFzZV91dGlscy5kZWxldGVfZGF0YWJhc2UoY2xzLnRl c3RlcikKLSAgICAgICAgc2VydmVyX3V0aWxzLmRlbGV0ZV9zZXJ2ZXIoY2xz LnRlc3RlcikKLSAgICAgICAgdXRpbHMuZGVsZXRlX3BhcmVudF9pZF9maWxl KCkKKyAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiB3aWxsIGRlbGV0ZSB1c2Vy IG1hcHBpbmcgcHJlc2VudCB1bmRlciB0ZXN0CisgICAgICAgICBkYXRhYmFz ZS4gIiIiCisgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5l Y3RfZGF0YWJhc2Uoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9pZCkKKyAgICAgICAg aWYgbm90IGRiX2NvblsiaW5mbyJdID09ICJEYXRhYmFzZSBjb25uZWN0ZWQu IjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNv bm5lY3QgdG8gZGF0YWJhc2UuIikKKyAgICAgICAgZmR3X3Jlc3BvbnNlID0g ZmR3X3V0aWxzLnZlcmlmeV9mZHcoc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFt ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5mZHdfbmFtZSkKKyAgICAgICAgaWYgbm90IGZkd19yZXNwb25z ZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZp bmQgRkRXLiIpCisgICAgICAgIGZzcnZfcmVzcG9uc2UgPSBmc3J2X3V0aWxz LnZlcmlmeV9mc3J2KHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuZnNydl9uYW1lKQorICAgICAgICBpZiBub3QgZnNydl9yZXNwb25zZToK KyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQg RlNSVi4iKQorICAgICAgICB1bV9yZXNwb25zZSA9IHVtX3V0aWxzLnZlcmlm eV91c2VyX21hcHBpbmcoc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuZnNydl9uYW1lKQorICAgICAgICBpZiBub3QgdW1fcmVzcG9u c2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBm aW5kIHVzZXIgbWFwcGluZy4iKQorICAgICAgICBkZWxldGVfcmVzcG9uc2Ug PSBzZWxmLnRlc3Rlci5kZWxldGUoCisgICAgICAgICAgICBzZWxmLnVybCAr IHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAgICAgICAgICAg IHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBzdHIoc2VsZi5kYl9pZCkg KworICAgICAgICAgICAgJy8nICsgc3RyKHNlbGYuZmR3X2lkKSArICcvJyAr CisgICAgICAgICAgICBzdHIoc2VsZi5mc3J2X2lkKSArICcvJyArIHN0cihz ZWxmLnVtX2lkKSwKKyAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1 ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZGVsZXRlX3Jlc3BvbnNl LnN0YXR1c19jb2RlLCAyMDApCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6 CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGlzY29ubmVjdCB0aGUgdGVz dCBkYXRhYmFzZSBhbmQgZHJvcCBhZGRlZCBleHRlbnNpb24KKyAgICAgICAg IGFuZCBkZXBlbmRhbnQgb2JqZWN0cy4iIiIKKyAgICAgICAgZXh0ZW5zaW9u X3V0aWxzLmRyb3BfZXh0ZW5zaW9uKHNlbGYuc2VydmVyLCBzZWxmLmRiX25h bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmV4dGVuc2lvbl9uYW1lKQorICAgICAgICBkYXRhYmFzZV91dGlscy5k aXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBzZWxm LmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93cmFw cGVycy9mb3JlaWduX3NlcnZlcnMvdXNlcl9tYXBwaW5nL3Rlc3RzL3Rlc3Rf dXNlcl9tYXBwaW5nX2dldC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3Jh cHBlcnMvZm9yZWlnbl9zZXJ2ZXJzL3VzZXJfbWFwcGluZy90ZXN0cy90ZXN0 X3VzZXJfbWFwcGluZ19nZXQucHkKaW5kZXggMzI3MGUwOC4uY2JmZTQ5NyAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93cmFwcGVycy9mb3Jl aWduX3NlcnZlcnMvdXNlcl9tYXBwaW5nL3Rlc3RzL3Rlc3RfdXNlcl9tYXBw aW5nX2dldC5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJz L2ZvcmVpZ25fc2VydmVycy91c2VyX21hcHBpbmcvdGVzdHMvdGVzdF91c2Vy X21hcHBpbmdfZ2V0LnB5CkBAIC02LDExNSArNiw3NyBAQAogIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitmcm9tIF9fZnV0dXJl X18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitpbXBvcnQgdXVpZAogCiBmcm9t IHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9y CiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMK LWZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5k YXRhYmFzZXMuZXh0ZW5zaW9ucy50ZXN0cyBpbXBvcnRcCi0gICAgdXRpbHMg YXMgZXh0ZW5zaW9uX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2 ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGVzdHMgaW1w b3J0IFwKLSAgICB1dGlscyBhcyBzY2hlbWFfdXRpbHMKIGZyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVz dHMgaW1wb3J0IFwKICAgICB1dGlscyBhcyBkYXRhYmFzZV91dGlscwotZnJv bSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3Rz IGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKLWZyb20gcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuZm9yZWln bl9kYXRhX3dyYXBwZXJzLnRlc3RzXAorZnJvbSBwZ2FkbWluLmJyb3dzZXIu c2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5leHRlbnNpb25zLnRl c3RzIGltcG9ydCBcCisgICAgdXRpbHMgYXMgZXh0ZW5zaW9uX3V0aWxzCitm cm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0 YWJhc2VzLmZvcmVpZ25fZGF0YV93cmFwcGVycy50ZXN0cyBcCiAgICAgaW1w b3J0IHV0aWxzIGFzIGZkd191dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIu c2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5mb3JlaWduX2RhdGFf d3JhcHBlcnMuXAorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9k ZV9kaWN0Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLmZvcmVpZ25fZGF0YV93cmFwcGVycy4gXAogICAg IGZvcmVpZ25fc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgZnNydl91 dGlscwogZnJvbSAuIGltcG9ydCB1dGlscyBhcyB1bV91dGlscwogCiAKIGNs YXNzIFVzZXJNYXBwaW5nR2V0VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3Ip OgotICAgICIiIgotICAgIFRoaXMgY2xhc3Mgd2lsbCBhZGQgdXNlciBtYXBw aW5nIHVuZGVyIGZvcmVpZ24gc2VydmVyIG5vZGUuCi0gICAgIiIiCi0KKyAg ICAiIiJUaGlzIGNsYXNzIHdpbGwgYWRkIHVzZXIgbWFwcGluZyB1bmRlciBm b3JlaWduIHNlcnZlciBub2RlLiIiIgogICAgIHNjZW5hcmlvcyA9IFsKICAg ICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3IgdXNlciBtYXBwaW5n IG5vZGUuCiAgICAgICAgICgnQ2hlY2sgdXNlciBtYXBwaW5nIE5vZGUnLCBk aWN0KHVybD0nL2Jyb3dzZXIvdXNlcl9tYXBwaW5nL29iai8nKSkKICAgICBd CiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMp OgotICAgICAgICAiIiIKLSAgICAgICAgIFRoaXMgZnVuY3Rpb24gcGVyZm9y bSB0aGUgZm9sbG93aW5nIHRhc2tzOgotICAgICAgICAgMS4gQWRkIGFuZCBj b25uZWN0IHRvIHRoZSB0ZXN0IHNlcnZlcihzKQotICAgICAgICAgMi4gQWRk IGRhdGFiYXNlKHMpIGNvbm5lY3RlZCB0byBzZXJ2ZXIocykKLSAgICAgICAg IDMuIEFkZCBzY2hlbWFzIHRvIGNvbm5lY3RlZCBkYXRhYmFzZShzKQotICAg ICAgICAgNC4gQWRkIGV4dGVuc2lvbihzKSB0byBzY2hlbWEocykKLSAgICAg ICAgIDUuIEFkZCBmb3JlaWduIGRhdGEgd3JhcHBlcihzKSB0byBleHRlbnNp b24ocykKLSAgICAgICAgIDYuIEFkZCBmb3JlaWduIHNlcnZlcihzKSB0byBm b3JlaWduIGRhdGEgd3JhcHBlcihzKQotICAgICAgICAgNy4gQWRkIHVzZXIg bWFwcGluZyhzKSB0byBmb3JlaWduIHNlcnZlcihzKQotCi0gICAgICAgIDpy ZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBBZGQgdGhl IHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMu dGVzdGVyKQotCi0gICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXJzCi0gICAg ICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZlcl9n cm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0gICAgICAgICAgICBzZXJ2ZXJf dXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKLQotICAgICAgICBp ZiBsZW4oY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAg ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVj dGVkIHRvIGFkZCB0aGUgZGF0YWJhc2UhISEiKQotCi0gICAgICAgICMgQWRk IGRhdGFiYXNlcyB0byBjb25uZWN0ZWQgc2VydmVycwotICAgICAgICBkYXRh YmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRlc3RlciwgY2xzLnNlcnZl cl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCi0KLSAgICAgICAgIyBBZGQg c2NoZW1hKHMpIHVuZGVyIGNvbm5lY3RlZCBkYXRhYmFzZShzKQotICAgICAg ICBzY2hlbWFfdXRpbHMuYWRkX3NjaGVtYXMoY2xzLnRlc3RlcikKLQotICAg ICAgICAjIEFkZCBleHRlbnNpb24ocykgdG8gc2NoZW1hKHMpCi0gICAgICAg IGV4dGVuc2lvbl91dGlscy5hZGRfZXh0ZW5zaW9ucyhjbHMudGVzdGVyKQot Ci0gICAgICAgICMgQWRkIGZvcmVpZ24gZGF0YSB3cmFwcGVyKHMpIHRvIGV4 dGVuc2lvbihzKQotICAgICAgICBmZHdfdXRpbHMuYWRkX2ZkdyhjbHMudGVz dGVyKQotCi0gICAgICAgICMgQWRkIGZvcmVpZ24gc2VydmVyKHMpIHRvIGZv cmVpZ24gZGF0YSB3cmFwcGVyCi0gICAgICAgIGZzcnZfdXRpbHMuYWRkX2Zz cnYoY2xzLnRlc3RlcikKLQotICAgICAgICAjIEFkZCB1c2VyIG1hcHBpbmco cykgdG8gZm9yZWlnbiBzZXJ2ZXIocykKLSAgICAgICAgdW1fdXRpbHMuYWRk X3VtKGNscy50ZXN0ZXIpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg ICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBleHRlbnNpb24gYW5k IGZvcmVpZ24gZGF0YSB3cmFwcGVyLiIiIgorICAgICAgICBzZWxmLnNjaGVt YV9kYXRhID0gcGFyZW50X25vZGVfZGljdFsnc2NoZW1hJ11bLTFdCisgICAg ICAgIHNlbGYuc2VydmVyX2lkID0gc2VsZi5zY2hlbWFfZGF0YVsnc2VydmVy X2lkJ10KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFb J2RiX2lkJ10KKyAgICAgICAgc2VsZi5kYl9uYW1lID0gcGFyZW50X25vZGVf ZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQorICAgICAgICBzZWxm LnNjaGVtYV9uYW1lID0gc2VsZi5zY2hlbWFfZGF0YVsnc2NoZW1hX25hbWUn XQorICAgICAgICBzZWxmLmV4dGVuc2lvbl9uYW1lID0gInBvc3RncmVzX2Zk dyIKKyAgICAgICAgc2VsZi5mZHdfbmFtZSA9ICJmZHdfJXMiICUgKHN0cih1 dWlkLnV1aWQ0KCkpWzE6Nl0pCisgICAgICAgIHNlbGYuZnNydl9uYW1lID0g ImZzcnZfJXMiICUgKHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0pCisgICAgICAg IHNlbGYuZXh0ZW5zaW9uX2lkID0gZXh0ZW5zaW9uX3V0aWxzLmNyZWF0ZV9l eHRlbnNpb24oCisgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5kYl9u YW1lLCBzZWxmLmV4dGVuc2lvbl9uYW1lLCBzZWxmLnNjaGVtYV9uYW1lKQor ICAgICAgICBzZWxmLmZkd19pZCA9IGZkd191dGlscy5jcmVhdGVfZmR3KHNl bGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mZHdfbmFtZSkKKyAgICAg ICAgc2VsZi5mc3J2X2lkID0gZnNydl91dGlscy5jcmVhdGVfZnNydihzZWxm LnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnNydl9uYW1lLCBzZWxm LmZkd19uYW1lKQorICAgICAgICBzZWxmLnVtX2lkID0gdW1fdXRpbHMuY3Jl YXRlX3VzZXJfbWFwcGluZyhzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmZzcnZfbmFtZSkKIAogICAgIGRlZiBydW5UZXN0KHNlbGYp OgotICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIHVzZXIg bWFwcGluZyBhZGRlZCB0byBmb3JlaWduIHNlcnZlcgotICAgICAgICBub2Rl LiAiIiIKLQotICAgICAgICBhbGxfaWQgPSB1dGlscy5nZXRfaWRzKCkKLSAg ICAgICAgc2VydmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KLSAgICAgICAgZGJf aWRzX2RpY3QgPSBhbGxfaWRbImRpZCJdWzBdCi0gICAgICAgIGZkd19pZHNf ZGljdCA9IGFsbF9pZFsiZmlkIl1bMF0KLSAgICAgICAgZnNydl9pZHNfZGlj dCA9IGFsbF9pZFsiZnNpZCJdWzBdCi0gICAgICAgIHVtX2lkc19kaWN0ID0g YWxsX2lkWyJ1bWlkIl1bMF0KLQotICAgICAgICBmb3Igc2VydmVyX2lkIGlu IHNlcnZlcl9pZHM6Ci0gICAgICAgICAgICBkYl9pZCA9IGRiX2lkc19kaWN0 W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAgICAgZmR3X2lkID0gZmR3X2lk c19kaWN0W3NlcnZlcl9pZF0KLSAgICAgICAgICAgIGZzcnZfaWQgPSBmc3J2 X2lkc19kaWN0W3NlcnZlcl9pZF0KLSAgICAgICAgICAgIHVtX2lkID0gdW1f aWRzX2RpY3Rbc2VydmVyX2lkXQotCi0gICAgICAgICAgICByZXNwb25zZSA9 IHVtX3V0aWxzLnZlcmlmeV91bShzZWxmLnRlc3RlciwgdXRpbHMuU0VSVkVS X0dST1VQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyX2lkLCBkYl9pZCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZkd19pZCwgZnNydl9pZCwgdW1faWQp Ci0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0 YXR1c19jb2RlLCAyMDApCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYg dGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhp cyBmdW5jdGlvbiBkZWxldGUgdGhlIGFkZGVkIGZvcmVpZ24gc2VydmVyKHMp ICwKLSAgICAgICAgZm9yZWlnbiBkYXRhIHdyYXBwZXIocyksIGV4dGVuc2lv bihzKSwgc2NoZW1hKHMpLCBkYXRhYmFzZShzKSwKLSAgICAgICAgc2VydmVy KHMpIGFuZCBwYXJlbnQgaWQgZmlsZQotCi0gICAgICAgIDpyZXR1cm46IE5v bmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgdW1fdXRpbHMuZGVsZXRlX3Vt KGNscy50ZXN0ZXIpCi0gICAgICAgIGZzcnZfdXRpbHMuZGVsZXRlX2ZzcnYo Y2xzLnRlc3RlcikKLSAgICAgICAgZmR3X3V0aWxzLmRlbGV0ZV9mZHcoY2xz LnRlc3RlcikKLSAgICAgICAgZXh0ZW5zaW9uX3V0aWxzLmRlbGV0ZV9leHRl bnNpb24oY2xzLnRlc3RlcikKLSAgICAgICAgc2NoZW1hX3V0aWxzLmRlbGV0 ZV9zY2hlbWEoY2xzLnRlc3RlcikKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMu ZGVsZXRlX2RhdGFiYXNlKGNscy50ZXN0ZXIpCi0gICAgICAgIHNlcnZlcl91 dGlscy5kZWxldGVfc2VydmVyKGNscy50ZXN0ZXIpCi0gICAgICAgIHV0aWxz LmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCisgICAgICAgICIiIlRoaXMgZnVu Y3Rpb24gd2lsbCB1cGRhdGUgZm9yZWlnbiBzZXJ2ZXIgcHJlc2VudCB1bmRl ciB0ZXN0CisgICAgICAgIGRhdGFiYXNlLiIiIgorICAgICAgICBkYl9jb24g PSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuZGJfaWQpCisgICAgICAgIGlmIG5vdCBkYl9jb25bImluZm8iXSA9 PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6CisgICAgICAgICAgICByYWlzZSBF eGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlLiIpCisg ICAgICAgIGZkd19yZXNwb25zZSA9IGZkd191dGlscy52ZXJpZnlfZmR3KHNl bGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmR3X25hbWUpCisgICAg ICAgIGlmIG5vdCBmZHdfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBF eGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIEZEVy4iKQorICAgICAgICBmc3J2 X3Jlc3BvbnNlID0gZnNydl91dGlscy52ZXJpZnlfZnNydihzZWxmLnNlcnZl ciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLmZzcnZfbmFtZSkKKyAgICAgICAg aWYgbm90IGZzcnZfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNl cHRpb24oIkNvdWxkIG5vdCBmaW5kIEZTUlYuIikKKyAgICAgICAgcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5nZXQoc2VsZi51cmwgKyBzdHIodXRpbHMuU0VS VkVSX0dST1VQKSArICcvJyArCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBzdHIoCisg ICAgICAgICAgICBzZWxmLmRiX2lkKSArCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICcvJyArIHN0cihzZWxmLmZkd19pZCkgKyAnLycg KyBzdHIoCisgICAgICAgICAgICBzZWxmLmZzcnZfaWQpICsgJy8nICsgc3Ry KAorICAgICAgICAgICAgc2VsZi51bV9pZCksIGNvbnRlbnRfdHlwZT0naHRt bC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uu c3RhdHVzX2NvZGUsIDIwMCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToK KyAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBkaXNjb25uZWN0IHRoZSB0ZXN0 IGRhdGFiYXNlIGFuZCBkcm9wIGFkZGVkIGV4dGVuc2lvbgorICAgICAgICAg YW5kIGRlcGVuZGFudCBvYmplY3RzLiIiIgorICAgICAgICBleHRlbnNpb25f dXRpbHMuZHJvcF9leHRlbnNpb24oc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFt ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuZXh0ZW5zaW9uX25hbWUpCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRp c2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYu ZGJfaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBw ZXJzL2ZvcmVpZ25fc2VydmVycy91c2VyX21hcHBpbmcvdGVzdHMvdGVzdF91 c2VyX21hcHBpbmdfcHV0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93cmFw cGVycy9mb3JlaWduX3NlcnZlcnMvdXNlcl9tYXBwaW5nL3Rlc3RzL3Rlc3Rf dXNlcl9tYXBwaW5nX3B1dC5weQppbmRleCA5YWE5YTMwLi4wNWJlNmU4IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL2ZvcmVp Z25fc2VydmVycy91c2VyX21hcHBpbmcvdGVzdHMvdGVzdF91c2VyX21hcHBp bmdfcHV0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMv Zm9yZWlnbl9zZXJ2ZXJzL3VzZXJfbWFwcGluZy90ZXN0cy90ZXN0X3VzZXJf bWFwcGluZ19wdXQucHkKQEAgLTYsMTMzICs2LDk1IEBACiAjIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5j ZQogIwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2Zyb20gX19mdXR1cmVf XyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCB1dWlkCitpbXBvcnQg anNvbgogCiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VU ZXN0R2VuZXJhdG9yCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRp bHMgYXMgdXRpbHMKLWZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91 cHMuc2VydmVycy5kYXRhYmFzZXMuZXh0ZW5zaW9ucy50ZXN0cyBpbXBvcnRc Ci0gICAgdXRpbHMgYXMgZXh0ZW5zaW9uX3V0aWxzCi1mcm9tIHBnYWRtaW4u YnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVt YXMudGVzdHMgaW1wb3J0IFwKLSAgICB1dGlscyBhcyBzY2hlbWFfdXRpbHMK IGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5k YXRhYmFzZXMudGVzdHMgaW1wb3J0IFwKICAgICB1dGlscyBhcyBkYXRhYmFz ZV91dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMuZXh0ZW5zaW9ucy50ZXN0cyBpbXBvcnQgXAorICAgIHV0aWxzIGFz IGV4dGVuc2lvbl91dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVy X2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5mb3JlaWduX2RhdGFfd3JhcHBl cnMudGVzdHMgXAogICAgIGltcG9ydCB1dGlscyBhcyBmZHdfdXRpbHMKLWZy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMuZm9yZWlnbl9kYXRhX3dyYXBwZXJzLlwKK2Zyb20gcmVncmVzc2lv biBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5mb3JlaWduX2Rh dGFfd3JhcHBlcnMuIFwKICAgICBmb3JlaWduX3NlcnZlcnMudGVzdHMgaW1w b3J0IHV0aWxzIGFzIGZzcnZfdXRpbHMKIGZyb20gLiBpbXBvcnQgdXRpbHMg YXMgdW1fdXRpbHMKLWZyb20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9y dCBhZHZhbmNlZF9jb25maWdfZGF0YQotaW1wb3J0IGpzb24KIAogCiBjbGFz cyBVc2VyTWFwcGluZ1B1dFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToK LSAgICAiIiIKLSAgICBUaGlzIGNsYXNzIHdpbGwgdXBkYXRlIHVzZXIgbWFw cGluZyB1bmRlciBmb3JlaWduIHNlcnZlciBub2RlLgotICAgICIiIgotCisg ICAgIiIiVGhpcyBjbGFzcyB3aWxsIHVwZGF0ZSB1c2VyIG1hcHBpbmcgdW5k ZXIgZm9yZWlnbiBzZXJ2ZXIgbm9kZS4iIiIKICAgICBzY2VuYXJpb3MgPSBb CiAgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIHVzZXIgbWFw cGluZyBub2RlLgogICAgICAgICAoJ0NoZWNrIHVzZXIgbWFwcGluZyBOb2Rl JywgZGljdCh1cmw9Jy9icm93c2VyL3VzZXJfbWFwcGluZy9vYmovJykpCiAg ICAgXQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3Mo Y2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgICBUaGlzIGZ1bmN0aW9uIHBl cmZvcm0gdGhlIGZvbGxvd2luZyB0YXNrczoKLSAgICAgICAgIDEuIEFkZCBh bmQgY29ubmVjdCB0byB0aGUgdGVzdCBzZXJ2ZXIocykKLSAgICAgICAgIDIu IEFkZCBkYXRhYmFzZShzKSBjb25uZWN0ZWQgdG8gc2VydmVyKHMpCi0gICAg ICAgICAzLiBBZGQgc2NoZW1hcyB0byBjb25uZWN0ZWQgZGF0YWJhc2UocykK LSAgICAgICAgIDQuIEFkZCBleHRlbnNpb24ocykgdG8gc2NoZW1hKHMpCi0g ICAgICAgICA1LiBBZGQgZm9yZWlnbiBkYXRhIHdyYXBwZXIocykgdG8gZXh0 ZW5zaW9uKHMpCi0gICAgICAgICA2LiBBZGQgZm9yZWlnbiBzZXJ2ZXIocykg dG8gZm9yZWlnbiBkYXRhIHdyYXBwZXIocykKLSAgICAgICAgIDcuIEFkZCB1 c2VyIG1hcHBpbmcocykgdG8gZm9yZWlnbiBzZXJ2ZXIocykKLQotICAgICAg ICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgICMgQWRk IHRoZSBzZXJ2ZXIKLSAgICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2ZXIo Y2xzLnRlc3RlcikKLQotICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVycwot ICAgICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2 ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgc2Vy dmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAg ICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoK LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNv bm5lY3RlZCB0byBhZGQgdGhlIGRhdGFiYXNlISEhIikKLQotICAgICAgICAj IEFkZCBkYXRhYmFzZXMgdG8gY29ubmVjdGVkIHNlcnZlcnMKLSAgICAgICAg ZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5z ZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfaWRzKQotCi0gICAgICAgICMg QWRkIHNjaGVtYShzKSB1bmRlciBjb25uZWN0ZWQgZGF0YWJhc2UocykKLSAg ICAgICAgc2NoZW1hX3V0aWxzLmFkZF9zY2hlbWFzKGNscy50ZXN0ZXIpCi0K LSAgICAgICAgIyBBZGQgZXh0ZW5zaW9uKHMpIHRvIHNjaGVtYShzKQotICAg ICAgICBleHRlbnNpb25fdXRpbHMuYWRkX2V4dGVuc2lvbnMoY2xzLnRlc3Rl cikKLQotICAgICAgICAjIEFkZCBmb3JlaWduIGRhdGEgd3JhcHBlcihzKSB0 byBleHRlbnNpb24ocykKLSAgICAgICAgZmR3X3V0aWxzLmFkZF9mZHcoY2xz LnRlc3RlcikKLQotICAgICAgICAjIEFkZCBmb3JlaWduIHNlcnZlcihzKSB0 byBmb3JlaWduIGRhdGEgd3JhcHBlcgotICAgICAgICBmc3J2X3V0aWxzLmFk ZF9mc3J2KGNscy50ZXN0ZXIpCi0KLSAgICAgICAgIyBBZGQgdXNlciBtYXBw aW5nKHMpIHRvIGZvcmVpZ24gc2VydmVyKHMpCi0gICAgICAgIHVtX3V0aWxz LmFkZF91bShjbHMudGVzdGVyKQorICAgIGRlZiBzZXRVcChzZWxmKToKKyAg ICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgZXh0ZW5zaW9u IGFuZCBmb3JlaWduIGRhdGEgd3JhcHBlci4iIiIKKyAgICAgICAgc2VsZi5z Y2hlbWFfZGF0YSA9IHBhcmVudF9ub2RlX2RpY3RbJ3NjaGVtYSddWy0xXQor ICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ3Nl cnZlcl9pZCddCisgICAgICAgIHNlbGYuZGJfaWQgPSBzZWxmLnNjaGVtYV9k YXRhWydkYl9pZCddCisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9u b2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICAgICAg c2VsZi5zY2hlbWFfbmFtZSA9IHNlbGYuc2NoZW1hX2RhdGFbJ3NjaGVtYV9u YW1lJ10KKyAgICAgICAgc2VsZi5leHRlbnNpb25fbmFtZSA9ICJwb3N0Z3Jl c19mZHciCisgICAgICAgIHNlbGYuZmR3X25hbWUgPSAiZmR3XyVzIiAlIChz dHIodXVpZC51dWlkNCgpKVsxOjZdKQorICAgICAgICBzZWxmLmZzcnZfbmFt ZSA9ICJmc3J2XyVzIiAlIChzdHIodXVpZC51dWlkNCgpKVsxOjZdKQorICAg ICAgICBzZWxmLmV4dGVuc2lvbl9pZCA9IGV4dGVuc2lvbl91dGlscy5jcmVh dGVfZXh0ZW5zaW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYu ZGJfbmFtZSwgc2VsZi5leHRlbnNpb25fbmFtZSwgc2VsZi5zY2hlbWFfbmFt ZSkKKyAgICAgICAgc2VsZi5mZHdfaWQgPSBmZHdfdXRpbHMuY3JlYXRlX2Zk dyhzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmR3X25hbWUpCisg ICAgICAgIHNlbGYuZnNydl9pZCA9IGZzcnZfdXRpbHMuY3JlYXRlX2ZzcnYo c2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZzcnZfbmFtZSwg c2VsZi5mZHdfbmFtZSkKKyAgICAgICAgc2VsZi51bV9pZCA9IHVtX3V0aWxz LmNyZWF0ZV91c2VyX21hcHBpbmcoc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFt ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5mc3J2X25hbWUpCiAKICAgICBkZWYgcnVuVGVzdChz ZWxmKToKLSAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gdXBkYXRlIHVzZXIg bWFwcGluZyB1bmRlciBmb3JlaWduIHNlcnZlciBub2RlLiAiIiIKLQotICAg ICAgICBhbGxfaWQgPSB1dGlscy5nZXRfaWRzKCkKLSAgICAgICAgc2VydmVy X2lkcyA9IGFsbF9pZFsic2lkIl0KLSAgICAgICAgZGJfaWRzX2RpY3QgPSBh bGxfaWRbImRpZCJdWzBdCi0gICAgICAgIGZkd19pZHNfZGljdCA9IGFsbF9p ZFsiZmlkIl1bMF0KLSAgICAgICAgZnNydl9pZHNfZGljdCA9IGFsbF9pZFsi ZnNpZCJdWzBdCi0gICAgICAgIHVtX2lkc19kaWN0ID0gYWxsX2lkWyJ1bWlk Il1bMF0KLQotICAgICAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6 Ci0gICAgICAgICAgICBkYl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJf aWQpXQotICAgICAgICAgICAgZmR3X2lkID0gZmR3X2lkc19kaWN0W3NlcnZl cl9pZF0KLSAgICAgICAgICAgIGZzcnZfaWQgPSBmc3J2X2lkc19kaWN0W3Nl cnZlcl9pZF0KLSAgICAgICAgICAgIHVtX2lkID0gdW1faWRzX2RpY3Rbc2Vy dmVyX2lkXQotCi0gICAgICAgICAgICByZXNwb25zZSA9IHVtX3V0aWxzLnZl cmlmeV91bShzZWxmLnRlc3RlciwgdXRpbHMuU0VSVkVSX0dST1VQLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy X2lkLCBkYl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZkd19pZCwgZnNydl9pZCwgdW1faWQpCi0gICAgICAgICAg ICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDA6Ci0KLSAgICAgICAg ICAgICAgICBkYXRhID0gXAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAiaWQiOiB1bV9pZCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICJ1bW9wdGlvbnMiOgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFkdmFuY2VkX2NvbmZpZ19kYXRhWyd1c2VyX21hcHBpbmdf dXBkYXRlX2RhdGEnXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn b3B0aW9ucyddCi0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg ICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dCgKLSAgICAg ICAgICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dS T1VQKSArICcvJyArCi0gICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJf aWQpICsgJy8nICsgc3RyKGRiX2lkKSArCi0gICAgICAgICAgICAgICAgICAg ICcvJyArIHN0cihmZHdfaWQpICsgJy8nICsKLSAgICAgICAgICAgICAgICAg ICAgc3RyKGZzcnZfaWQpICsgJy8nICsgc3RyKHVtX2lkKSwKLSAgICAgICAg ICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRhdGEpLAotICAgICAgICAg ICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCi0KLSAgICAgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwdXRfcmVzcG9uc2Uuc3RhdHVz X2NvZGUsIDIwMCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFy RG93bkNsYXNzKGNscyk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1 bmN0aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIGZvcmVpZ24gc2VydmVyKHMpICwK LSAgICAgICAgZm9yZWlnbiBkYXRhIHdyYXBwZXIocyksIGV4dGVuc2lvbihz KSwgc2NoZW1hKHMpLCBkYXRhYmFzZShzKSwKLSAgICAgICAgc2VydmVyKHMp IGFuZCBwYXJlbnQgaWQgZmlsZQotCi0gICAgICAgIDpyZXR1cm46IE5vbmUK LSAgICAgICAgIiIiCi0KLSAgICAgICAgdW1fdXRpbHMuZGVsZXRlX3VtKGNs cy50ZXN0ZXIpCi0gICAgICAgIGZzcnZfdXRpbHMuZGVsZXRlX2ZzcnYoY2xz LnRlc3RlcikKLSAgICAgICAgZmR3X3V0aWxzLmRlbGV0ZV9mZHcoY2xzLnRl c3RlcikKLSAgICAgICAgZXh0ZW5zaW9uX3V0aWxzLmRlbGV0ZV9leHRlbnNp b24oY2xzLnRlc3RlcikKLSAgICAgICAgc2NoZW1hX3V0aWxzLmRlbGV0ZV9z Y2hlbWEoY2xzLnRlc3RlcikKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGVs ZXRlX2RhdGFiYXNlKGNscy50ZXN0ZXIpCi0gICAgICAgIHNlcnZlcl91dGls cy5kZWxldGVfc2VydmVyKGNscy50ZXN0ZXIpCi0gICAgICAgIHV0aWxzLmRl bGV0ZV9wYXJlbnRfaWRfZmlsZSgpCisgICAgICAgICIiIlRoaXMgZnVuY3Rp b24gd2lsbCB1cGRhdGUgZm9yZWlnbiBzZXJ2ZXIgcHJlc2VudCB1bmRlciB0 ZXN0CisgICAgICAgIGRhdGFiYXNlIiIiCisgICAgICAgIGRiX2NvbiA9IGRh dGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGls cy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5kYl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2NvblsiaW5mbyJdID09ICJE YXRhYmFzZSBjb25uZWN0ZWQuIjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UuIikKKyAgICAg ICAgZmR3X3Jlc3BvbnNlID0gZmR3X3V0aWxzLnZlcmlmeV9mZHcoc2VsZi5z ZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5mZHdfbmFtZSkKKyAgICAgICAg aWYgbm90IGZkd19yZXNwb25zZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbigiQ291bGQgbm90IGZpbmQgRkRXLiIpCisgICAgICAgIGZzcnZfcmVz cG9uc2UgPSBmc3J2X3V0aWxzLnZlcmlmeV9mc3J2KHNlbGYuc2VydmVyLCBz ZWxmLmRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuZnNydl9uYW1lKQorICAgICAgICBpZiBu b3QgZnNydl9yZXNwb25zZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv bigiQ291bGQgbm90IGZpbmQgRlNSVi4iKQorICAgICAgICB1bV9yZXNwb25z ZSA9IHVtX3V0aWxzLnZlcmlmeV91c2VyX21hcHBpbmcoc2VsZi5zZXJ2ZXIs IHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnNydl9uYW1lKQorICAgICAg ICBpZiBub3QgdW1fcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNl cHRpb24oIkNvdWxkIG5vdCBmaW5kIHVzZXIgbWFwcGluZy4iKQorICAgICAg ICBkYXRhID0geworICAgICAgICAgICAgImlkIjogc2VsZi51bV9pZCwKKyAg ICAgICAgICAgICJ1bW9wdGlvbnMiOgorICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgImNoYW5nZWQiOgorICAgICAgICAgICAgICAg ICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsidW1v cHRpb24iOiAidXNlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJ1bXZhbHVlIjogInB1YmxpYyIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwdXRfcmVzcG9uc2UgPSBz ZWxmLnRlc3Rlci5wdXQoCisgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1 dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAgICAgICAgICAgIHN0cihz ZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBzdHIoc2VsZi5kYl9pZCkgKworICAg ICAgICAgICAgJy8nICsgc3RyKHNlbGYuZmR3X2lkKSArICcvJyArCisgICAg ICAgICAgICBzdHIoc2VsZi5mc3J2X2lkKSArICcvJyArIHN0cihzZWxmLnVt X2lkKSwKKyAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKKyAg ICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKKyAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMocHV0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDAp CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIlRoaXMg ZnVuY3Rpb24gZGlzY29ubmVjdCB0aGUgdGVzdCBkYXRhYmFzZSBhbmQgZHJv cCBhZGRlZAorICAgICAgICBleHRlbnNpb24gYW5kIGRlcGVuZGFudCBvYmpl Y3RzLiIiIgorICAgICAgICBleHRlbnNpb25fdXRpbHMuZHJvcF9leHRlbnNp b24oc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0ZW5zaW9uX25hbWUp CisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uo c2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL2ZvcmVpZ25fc2VydmVy cy91c2VyX21hcHBpbmcvdGVzdHMvdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWln bl9kYXRhX3dyYXBwZXJzL2ZvcmVpZ25fc2VydmVycy91c2VyX21hcHBpbmcv dGVzdHMvdXRpbHMucHkKaW5kZXggODM0OTIyMi4uZmU1M2VmNCAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93cmFwcGVycy9mb3JlaWduX3Nl cnZlcnMvdXNlcl9tYXBwaW5nL3Rlc3RzL3V0aWxzLnB5CisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvZm9yZWlnbl9zZXJ2ZXJzL3VzZXJf bWFwcGluZy90ZXN0cy91dGlscy5weQpAQCAtNiwxNTEgKzYsNzggQEAKICMg VGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworZnJvbSBf X2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgoraW1wb3J0IHN5cwor aW1wb3J0IHRyYWNlYmFjawogCi1pbXBvcnQgb3MKLWltcG9ydCBwaWNrbGUK LWltcG9ydCBqc29uCi1mcm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBpbXBv cnQgYWR2YW5jZWRfY29uZmlnX2RhdGEsIHBpY2tsZV9wYXRoCi1mcm9tIHJl Z3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBv cnQgdXRpbHMgYXMgc2VydmVyX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9y dCBcCi0gICAgdXRpbHMgYXMgZGF0YWJhc2VfdXRpbHMKLWZyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuZm9y ZWlnbl9kYXRhX3dyYXBwZXJzLnRlc3RzIFwKLSAgICBpbXBvcnQgdXRpbHMg YXMgZmR3X3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLmZvcmVpZ25fZGF0YV93cmFwcGVycy5c Ci0gICAgZm9yZWlnbl9zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBm c3J2X3V0aWxzCitmcm9tIHJlZ3Jlc3Npb24udGVzdF91dGlscyBpbXBvcnQg Z2V0X2RiX2Nvbm5lY3Rpb24KIAogCi1VTV9VUkwgPSAnL2Jyb3dzZXIvdXNl cl9tYXBwaW5nL29iai8nCi0KLQotZGVmIGdldF91bV9jb25maWdfZGF0YShz ZXJ2ZXJfY29ubmVjdF9kYXRhKToKLSAgICBhZHZfY29uZmlnX2RhdGEgPSBO b25lCi0gICAgZGJfdXNlciA9IHNlcnZlcl9jb25uZWN0X2RhdGFbJ2RhdGEn XVsndXNlciddWyduYW1lJ10KLQotICAgICMgR2V0IHRoZSBjb25maWcgZGF0 YSBvZiBhcHByb3ByaWF0ZSBkYiB1c2VyCi0gICAgZm9yIGNvbmZpZ190ZXN0 X2RhdGEgaW4gYWR2YW5jZWRfY29uZmlnX2RhdGFbJ3VzZXJfbWFwcGluZ19j cmVkZW50aWFscyddOgotICAgICAgICBpZiBkYl91c2VyID09IGNvbmZpZ190 ZXN0X2RhdGFbJ293bmVyJ106Ci0gICAgICAgICAgICBhZHZfY29uZmlnX2Rh dGEgPSBjb25maWdfdGVzdF9kYXRhCi0KLSAgICBkYXRhID0gewotICAgICAg ICAibmFtZSI6IGFkdl9jb25maWdfZGF0YVsnbmFtZSddLAotICAgICAgICAi dW1fb3B0aW9ucyI6IGFkdl9jb25maWdfZGF0YVsnb3B0aW9uJ10sCi0gICAg ICAgICJ1bW9wdGlvbnMiOiBhZHZfY29uZmlnX2RhdGFbJ29wdGlvbnMnXQot ICAgIH0KLQotICAgIHJldHVybiBkYXRhCi0KLQotZGVmIGFkZF91bSh0ZXN0 ZXIpOgotCi0gICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lkcygpCi0gICAgc2Vy dmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KLSAgICBkYl9pZHNfZGljdCA9IGFs bF9pZFsiZGlkIl1bMF0KLSAgICBmZHdfaWRzX2RpY3QgPSBhbGxfaWRbImZp ZCJdWzBdCi0gICAgZnNydl9pZHNfZGljdCA9IGFsbF9pZFsiZnNpZCJdWzBd Ci0KLSAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAg IGRiX2lkID0gZGJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAg IGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLnZlcmlmeV9kYXRhYmFzZSh0ZXN0 ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRi X2lkKQotCi0gICAgICAgIGlmIGRiX2NvblsnZGF0YSddWydjb25uZWN0ZWQn XToKLSAgICAgICAgICAgIHNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlID0gc2Vy dmVyX3V0aWxzLnZlcmlmeV9zZXJ2ZXIoCi0gICAgICAgICAgICAgICAgdGVz dGVyLCB1dGlscy5TRVJWRVJfR1JPVVAsIHNlcnZlcl9pZCkKLQotICAgICAg ICAgICAgZmR3X2lkID0gZmR3X2lkc19kaWN0W3NlcnZlcl9pZF0KLQotICAg ICAgICAgICAgZmR3X3Jlc3BvbnNlID0gZmR3X3V0aWxzLnZlcmlmeV9mZHdz KHRlc3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy X2lkLCBkYl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmZHdfaWQpCi0KLSAgICAgICAgICAgIGZzcnZf aWQgPSBmc3J2X2lkc19kaWN0W3NlcnZlcl9pZF0KLQotICAgICAgICAgICAg ZnNydl9yZXNwb25zZSA9IGZzcnZfdXRpbHMudmVyaWZ5X2ZzcnYodGVzdGVy LCB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRiX2lk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmR3X2lkLCBmc3J2X2lkKQotCi0gICAgICAgICAgICBpZiBm c3J2X3Jlc3BvbnNlLnN0YXR1c19jb2RlID09IDIwMDoKLSAgICAgICAgICAg ICAgICBkYXRhID0gZ2V0X3VtX2NvbmZpZ19kYXRhKHNlcnZlcl9jb25uZWN0 X3Jlc3BvbnNlKQotCi0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0ZXN0 ZXIucG9zdCgKLSAgICAgICAgICAgICAgICAgICAgVU1fVVJMICsgc3RyKHV0 aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKwotICAgICAgICAgICAgICAgICAg ICBzdHIoc2VydmVyX2lkKSArICcvJyArIHN0cigKLSAgICAgICAgICAgICAg ICAgICAgICAgIGRiX2lkKSArCi0gICAgICAgICAgICAgICAgICAgICcvJyAr IHN0cihmZHdfaWQpICsgJy8nICsgc3RyKGZzcnZfaWQpICsgJy8nLAotICAg ICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoZGF0YSksCi0gICAg ICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKLQot ICAgICAgICAgICAgICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29kZSA9 PSAyMDAKLQotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29u LmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCkpCi0gICAgICAgICAgICAg ICAgd3JpdGVfdW1faW5mbyhyZXNwb25zZV9kYXRhLCBzZXJ2ZXJfaWQpCi0K LQotZGVmIHdyaXRlX3VtX2luZm8ocmVzcG9uc2VfZGF0YSwgc2VydmVyX2lk KToKK2RlZiBjcmVhdGVfdXNlcl9tYXBwaW5nKHNlcnZlciwgZGJfbmFtZSwg ZnNydl9uYW1lKToKICAgICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIHdyaXRl cyB0aGUgc2NoZW1hIGlkIGludG8gcGFyZW50X2lkLnBrbAotCi0gICAgOnBh cmFtIHJlc3BvbnNlX2RhdGE6IGZvcmVpZ24gc2VydmVyIGFkZCByZXNwb25z ZSBkYXRhCi0gICAgOnR5cGUgcmVzcG9uc2VfZGF0YTogZGljdAotICAgIDpw YXJhbSBzZXJ2ZXJfaWQ6IHNlcnZlciBpZAotICAgIDp0eXBlIHNlcnZlcl9p ZDogc3RyCi0gICAgOnJldHVybjogTm9uZQorICAgIFRoaXMgZnVuY3Rpb24g d2lsbCBjcmVhdGUgdXNlciBtYXBwaW5nIHVuZGVyIHRoZSBleGlzdGluZwor ICAgIGR1bW15IGRhdGFiYXNlLgorICAgIDpwYXJhbSBzZXJ2ZXI6IHNlcnZl ciBkZXRhaWxzCisgICAgOnR5cGUgc2VydmVyOiBkaWN0CisgICAgOnBhcmFt IGRiX25hbWU6IGRhdGFiYXNlIG5hbWUKKyAgICA6dHlwZSBkYl9uYW1lOiBz dHIKKyAgICA6cGFyYW0gZnNydl9uYW1lOiBGUyBuYW1lCisgICAgOnR5cGUg ZnNydl9uYW1lOiBzdHIKKyAgICA6cmV0dXJuIHVtX2lkOiB1c2VyIG1hcHBp bmcgaWQKKyAgICA6cnR5cGU6IGludAogICAgICIiIgotCi0gICAgdW1faWQg PSByZXNwb25zZV9kYXRhWydub2RlJ11bJ19pZCddCi0gICAgcGlja2xlX2lk X2RpY3QgPSB1dGlscy5nZXRfcGlja2xlX2lkX2RpY3QoKQotICAgIGlmIG9z LnBhdGguaXNmaWxlKHBpY2tsZV9wYXRoKToKLSAgICAgICAgZXhpc3Rpbmdf c2VydmVyX2lkID0gb3BlbihwaWNrbGVfcGF0aCwgJ3JiJykKLSAgICAgICAg dG9sX3NlcnZlcl9pZCA9IHBpY2tsZS5sb2FkKGV4aXN0aW5nX3NlcnZlcl9p ZCkKLSAgICAgICAgcGlja2xlX2lkX2RpY3QgPSB0b2xfc2VydmVyX2lkCi0g ICAgaWYgJ3VtaWQnIGluIHBpY2tsZV9pZF9kaWN0OgotICAgICAgICBpZiBw aWNrbGVfaWRfZGljdFsndW1pZCddOgotICAgICAgICAgICAgIyBBZGQgdGhl IHVtaWQgYXMgdmFsdWUgaW4gZGljdAotICAgICAgICAgICAgcGlja2xlX2lk X2RpY3RbInVtaWQiXVswXS51cGRhdGUoe3NlcnZlcl9pZDogdW1faWR9KQot ICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBDcmVhdGUgbmV3IGRpY3Qg d2l0aCBzZXJ2ZXJfaWQgYW5kIHVtaWQKLSAgICAgICAgICAgIHBpY2tsZV9p ZF9kaWN0WyJ1bWlkIl0uYXBwZW5kKHtzZXJ2ZXJfaWQ6IHVtX2lkfSkKLSAg ICBmc3J2X291dHB1dCA9IG9wZW4ocGlja2xlX3BhdGgsICd3YicpCi0gICAg cGlja2xlLmR1bXAocGlja2xlX2lkX2RpY3QsIGZzcnZfb3V0cHV0KQotICAg IGZzcnZfb3V0cHV0LmNsb3NlKCkKLQotCi1kZWYgdmVyaWZ5X3VtKHRlc3Rl ciwgc2VydmVyX2dyb3VwLCAgc2VydmVyX2lkLCBkYl9pZCwgZmR3X2lkLCBm c3J2X2lkLCB1bV9pZCk6Ci0gICAgcmVzcG9uc2UgPSB0ZXN0ZXIuZ2V0KFVN X1VSTCArIHN0cihzZXJ2ZXJfZ3JvdXApICsgJy8nICsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKyBzdHIoZGJf aWQpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJy8nICsgc3RyKGZk d19pZCkgKyAnLycgKyBzdHIoZnNydl9pZCkgKyAnLycgKyBzdHIoCi0gICAg ICAgIHVtX2lkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVu dF90eXBlPSdodG1sL2pzb24nKQotICAgIHJldHVybiByZXNwb25zZQotCi0K LWRlZiBkZWxldGVfdW0odGVzdGVyKToKLSAgICBhbGxfaWQgPSB1dGlscy5n ZXRfaWRzKCkKLSAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAg IGRiX2lkc19kaWN0ID0gYWxsX2lkWyJkaWQiXVswXQotICAgIGZkd19pZHNf ZGljdCA9IGFsbF9pZFsiZmlkIl1bMF0KLSAgICBmc3J2X2lkc19kaWN0ID0g YWxsX2lkWyJmc2lkIl1bMF0KLSAgICB1bV9pZHNfZGljdCA9IGFsbF9pZFsi dW1pZCJdWzBdCi0KLSAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6 Ci0gICAgICAgIGRiX2lkID0gZGJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCld Ci0gICAgICAgIGZkd19pZCA9IGZkd19pZHNfZGljdFtzZXJ2ZXJfaWRdCi0g ICAgICAgIGZzcnZfaWQgPSBmc3J2X2lkc19kaWN0W3NlcnZlcl9pZF0KLSAg ICAgICAgdW1faWQgPSB1bV9pZHNfZGljdFtzZXJ2ZXJfaWRdCi0KLSAgICAg ICAgcmVzcG9uc2UgPSB2ZXJpZnlfdW0odGVzdGVyLCB1dGlscy5TRVJWRVJf R1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9p ZCwgZGJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkd19p ZCwgZnNydl9pZCwgdW1faWQpCi0gICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1 c19jb2RlID09IDIwMDoKLSAgICAgICAgICAgIGRlbGV0ZV9yZXNwb25zZSA9 IHRlc3Rlci5kZWxldGUoCi0gICAgICAgICAgICAgICAgVU1fVVJMICsgc3Ry KHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKwotICAgICAgICAgICAgICAg IHN0cihzZXJ2ZXJfaWQpICsgJy8nICsgc3RyKGRiX2lkKSArCi0gICAgICAg ICAgICAgICAgJy8nICsgc3RyKGZkd19pZCkgKyAnLycgKwotICAgICAgICAg ICAgICAgIHN0cihmc3J2X2lkKSArICcvJyArIHN0cih1bV9pZCksCi0gICAg ICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQotICAgICAgICAg ICAgZGVsZXRlX3Jlc3BkYXRhID0ganNvbi5sb2FkcyhkZWxldGVfcmVzcG9u c2UuZGF0YS5kZWNvZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBkZWxldGVf cmVzcGRhdGEKKyAgICB0cnk6CisgICAgICAgIGNvbm5lY3Rpb24gPSBnZXRf ZGJfY29ubmVjdGlvbihkYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyWyd1c2VybmFtZSddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydkYl9w YXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3BvcnQnXSkKKyAgICAgICAgb2xk X2lzb2xhdGlvbl9sZXZlbCA9IGNvbm5lY3Rpb24uaXNvbGF0aW9uX2xldmVs CisgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xhdGlvbl9sZXZlbCgwKQor ICAgICAgICBwZ19jdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCisgICAg ICAgIHF1ZXJ5ID0gIkNSRUFURSBVU0VSIE1BUFBJTkcgRk9SICVzIFNFUlZF UiAlcyBPUFRJT05TIiBcCisgICAgICAgICAgICAgICAgIiAodXNlciAnJXMn LCBwYXNzd29yZCAnJXMnKSIgJSAoc2VydmVyWyd1c2VybmFtZSddLCBmc3J2 X25hbWUsIHNlcnZlclsndXNlcm5hbWUnXSwgc2VydmVyWydkYl9wYXNzd29y ZCddKQorICAgICAgICBwZ19jdXJzb3IuZXhlY3V0ZShxdWVyeSkKKyAgICAg ICAgY29ubmVjdGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKG9sZF9pc29sYXRp b25fbGV2ZWwpCisgICAgICAgIGNvbm5lY3Rpb24uY29tbWl0KCkKKyAgICAg ICAgIyBHZXQgJ29pZCcgZnJvbSBuZXdseSBjcmVhdGVkIHVzZXIgbWFwcGlu ZworICAgICAgICBwZ19jdXJzb3IuZXhlY3V0ZSgKKyAgICAgICAgICAgICJz ZWxlY3QgdW1pZCBmcm9tIHBnX3VzZXJfbWFwcGluZ3Mgd2hlcmUgc3J2bmFt ZSA9ICclcycgb3JkZXIgYnkiCisgICAgICAgICAgICAiIHVtaWQgYXNjIGxp bWl0IDEiICUgZnNydl9uYW1lKQorICAgICAgICBvaWQgPSBwZ19jdXJzb3Iu ZmV0Y2hvbmUoKQorICAgICAgICB1bV9pZCA9ICcnCisgICAgICAgIGlmIG9p ZDoKKyAgICAgICAgICAgIHVtX2lkID0gb2lkWzBdCisgICAgICAgIGNvbm5l Y3Rpb24uY2xvc2UoKQorICAgICAgICByZXR1cm4gdW1faWQKKyAgICBleGNl cHQgRXhjZXB0aW9uOgorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZp bGU9c3lzLnN0ZGVycikKKworCitkZWYgdmVyaWZ5X3VzZXJfbWFwcGluZyhz ZXJ2ZXIsIGRiX25hbWUsIGZzcnZfbmFtZSk6CisgICAgIiIiCisgICAgVGhp cyBmdW5jdGlvbiB3aWxsIHZlcmlmeSBjdXJyZW50IGZvcmVpZ24gc2VydmVy LgorICAgIDpwYXJhbSBzZXJ2ZXI6IHNlcnZlciBkZXRhaWxzCisgICAgOnR5 cGUgc2VydmVyOiBkaWN0CisgICAgOnBhcmFtIGRiX25hbWU6IGRhdGFiYXNl IG5hbWUKKyAgICA6dHlwZSBkYl9uYW1lOiBzdHIKKyAgICA6cGFyYW0gZnNy dl9uYW1lOiBGUyBuYW1lCisgICAgOnR5cGUgZnNydl9uYW1lOiBzdHIKKyAg ICA6cmV0dXJuIHVzZXJfbWFwcGluZzogdXNlciBtYXBwaW5nIHJlY29yZAor ICAgIDpydHlwZTogdHVwbGUKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAg IGNvbm5lY3Rpb24gPSBnZXRfZGJfY29ubmVjdGlvbihkYl9uYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWyd1 c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydob3N0J10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3Bv cnQnXSkKKyAgICAgICAgcGdfY3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3Io KQorICAgICAgICBwZ19jdXJzb3IuZXhlY3V0ZSgKKyAgICAgICAgICAgICJz ZWxlY3QgdW1pZCBmcm9tIHBnX3VzZXJfbWFwcGluZ3Mgd2hlcmUgc3J2bmFt ZSA9ICclcycgb3JkZXIgYnkiCisgICAgICAgICAgICAiIHVtaWQgYXNjIGxp bWl0IDEiICUgZnNydl9uYW1lKQorICAgICAgICB1c2VyX21hcHBpbmcgPSBw Z19jdXJzb3IuZmV0Y2hvbmUoKQorICAgICAgICBjb25uZWN0aW9uLmNsb3Nl KCkKKyAgICAgICAgcmV0dXJuIHVzZXJfbWFwcGluZworICAgIGV4Y2VwdCBF eGNlcHRpb246CisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1z eXMuc3RkZXJyKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93 cmFwcGVycy90ZXN0cy90ZXN0X0ZEV19hZGQucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWln bl9kYXRhX3dyYXBwZXJzL3Rlc3RzL3Rlc3RfRkRXX2FkZC5weQppbmRleCBh ZjFiZmQ0Li45YjFkYzU4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9k YXRhX3dyYXBwZXJzL3Rlc3RzL3Rlc3RfRkRXX2FkZC5weQorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL3Rlc3RzL3Rlc3RfRkRXX2FkZC5w eQpAQCAtNiw3MCArNiw2MyBAQAogIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKICMKICMgIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50 X2Z1bmN0aW9uCitpbXBvcnQganNvbgogCiBmcm9tIHBnYWRtaW4udXRpbHMu cm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCi1mcm9tIHJlZ3Jlc3Np b24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZyb20gcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuZXh0ZW5z aW9ucy50ZXN0cyBpbXBvcnRcCi0gICAgdXRpbHMgYXMgZXh0ZW5zaW9uX3V0 aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZl cnMuZGF0YWJhc2VzLnNjaGVtYXMudGVzdHMgaW1wb3J0IFwKLSAgICB1dGls cyBhcyBzY2hlbWFfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZl cl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IFwKICAg ICB1dGlscyBhcyBkYXRhYmFzZV91dGlscwotZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBh cyBzZXJ2ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9n cm91cHMuc2VydmVycy5kYXRhYmFzZXMuZXh0ZW5zaW9ucy50ZXN0cyBpbXBv cnQgXAorICAgIHV0aWxzIGFzIGV4dGVuc2lvbl91dGlscwogZnJvbSAuIGlt cG9ydCB1dGlscyBhcyBmZHdfdXRpbHMKK2Zyb20gcmVncmVzc2lvbiBpbXBv cnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0 ZXN0X3V0aWxzIGFzIHV0aWxzCiAKIAogY2xhc3MgRkRXREFkZFRlc3RDYXNl KEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAiIiIgVGhpcyBjbGFzcyB3aWxs IGFkZCBmb3JlaWduIGRhdGEgd3JhcHBlcnMgdW5kZXIgZGF0YWJhc2Ugbm9k ZS4gIiIiCi0KICAgICBzY2VuYXJpb3MgPSBbCi0gICAgICAgICAgICAjIEZl dGNoaW5nIGRlZmF1bHQgVVJMIGZvciBmb3JlaWduX2RhdGFfd3JhcHBlciBu b2RlLgotICAgICAgICAgICAgKCdDaGVjayBGRFcgTm9kZScsCi0gICAgICAg ICAgICAgZGljdCh1cmw9Jy9icm93c2VyL2ZvcmVpZ25fZGF0YV93cmFwcGVy L29iai8nKSkKLSAgICAgICAgXQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAg ZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgICBU aGlzIGZ1bmN0aW9uIHBlcmZvcm0gdGhlIGZvbGxvd2luZyB0YXNrczoKLSAg ICAgICAgIDEuIEFkZCBhbmQgY29ubmVjdCB0byB0aGUgdGVzdCBzZXJ2ZXIo cykKLSAgICAgICAgIDIuIEFkZCBkYXRhYmFzZShzKSBjb25uZWN0ZWQgdG8g c2VydmVyKHMpCi0gICAgICAgICAzLiBBZGQgc2NoZW1hKHMpIHRvIGNvbm5l Y3RlZCBkYXRhYmFzZShzKQotICAgICAgICAgNC4gQWRkIGV4dGVuc2lvbihz KSB0byBzY2hlbWEocykKKyAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVS TCBmb3IgZm9yZWlnbl9kYXRhX3dyYXBwZXIgbm9kZS4KKyAgICAgICAgKCdD aGVjayBGRFcgTm9kZScsCisgICAgICAgICBkaWN0KHVybD0nL2Jyb3dzZXIv Zm9yZWlnbl9kYXRhX3dyYXBwZXIvb2JqLycpKQorICAgIF0KIAotICAgICAg ICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgICMgQWRk IHRoZSBzZXJ2ZXIKLSAgICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2ZXIo Y2xzLnRlc3RlcikKLQotICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVycwot ICAgICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2 ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgc2Vy dmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAg ICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoK LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNv bm5lY3RlZCB0byBhZGQgdGhlIGRhdGFiYXNlISEhIikKLQotICAgICAgICAj IEFkZCBkYXRhYmFzZXMgdG8gY29ubmVjdGVkIHNlcnZlcnMKLSAgICAgICAg ZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5z ZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfaWRzKQotICAgICAgICBzY2hl bWFfdXRpbHMuYWRkX3NjaGVtYXMoY2xzLnRlc3RlcikKLQotICAgICAgICBl eHRlbnNpb25fdXRpbHMuYWRkX2V4dGVuc2lvbnMoY2xzLnRlc3RlcikKKyAg ICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9u IHdpbGwgY3JlYXRlIGV4dGVuc2lvbi4iIiIKKyAgICAgICAgc2VsZi5zY2hl bWFfZGF0YSA9IHBhcmVudF9ub2RlX2RpY3RbJ3NjaGVtYSddWy0xXQorICAg ICAgICBzZWxmLnNlcnZlcl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ3NlcnZl cl9pZCddCisgICAgICAgIHNlbGYuZGJfaWQgPSBzZWxmLnNjaGVtYV9kYXRh WydkYl9pZCddCisgICAgICAgIHNlbGYuc2NoZW1hX25hbWUgPSBzZWxmLnNj aGVtYV9kYXRhWydzY2hlbWFfbmFtZSddCisgICAgICAgIHNlbGYuZXh0ZW5z aW9uX25hbWUgPSAicG9zdGdyZXNfZmR3IgorICAgICAgICBzZWxmLmRiX25h bWUgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFt ZSJdCisgICAgICAgIHNlbGYuZXh0ZW5zaW9uX2lkID0gZXh0ZW5zaW9uX3V0 aWxzLmNyZWF0ZV9leHRlbnNpb24oCisgICAgICAgICAgICBzZWxmLnNlcnZl ciwgc2VsZi5kYl9uYW1lLCBzZWxmLmV4dGVuc2lvbl9uYW1lLCBzZWxmLnNj aGVtYV9uYW1lKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAg ICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWRkIGV4dGVuc2lvbiB1bmRlciAx c3Qgc2VydmVyIG9mIHRyZWUgbm9kZS4gIiIiCi0gICAgICAgIGZkd191dGls cy5hZGRfZmR3KHNlbGYudGVzdGVyKQotCi0gICAgQGNsYXNzbWV0aG9kCi0g ICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiVGhpcyBm dW5jdGlvbiBkZWxldGVzIHRoZSBhZGRlZCBzY2hlbWEsIGRhdGFiYXNlLCBz ZXJ2ZXIgYW5kIHBhcmVudAotICAgICAgICBpZCBmaWxlCi0gICAgICAgICIi IgorICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIHdpbGwgYWRkIGZvcmVpZ24g ZGF0YSB3cmFwcGVyIHVuZGVyIHRlc3QgZGF0YWJhc2UuIiIiCisgICAgICAg IGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2Vs ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJf aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5kYl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2Nvblsi aW5mbyJdID09ICJEYXRhYmFzZSBjb25uZWN0ZWQuIjoKKyAgICAgICAgICAg IHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJh c2UuIikKKyAgICAgICAgZXh0ZW5zaW9uX3Jlc3BvbnNlID0gZXh0ZW5zaW9u X3V0aWxzLnZlcmlmeV9leHRlbnNpb24oCisgICAgICAgICAgICBzZWxmLnNl cnZlciwgc2VsZi5kYl9uYW1lLCBzZWxmLmV4dGVuc2lvbl9uYW1lKQorICAg ICAgICBpZiBub3QgZXh0ZW5zaW9uX3Jlc3BvbnNlOgorICAgICAgICAgICAg cmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCBleHRlbnNpb24uIikK KyAgICAgICAgc2VsZi5kYXRhID0gZmR3X3V0aWxzLmdldF9mZHdfZGF0YShz ZWxmLnNjaGVtYV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2VybmFtZSddKQorICAg ICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QoCisgICAgICAgICAg ICBzZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsK KyAgICAgICAgICAgIHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBzdHIo c2VsZi5kYl9pZCkgKyAnLycsCisgICAgICAgICAgICBkYXRhPWpzb24uZHVt cHMoc2VsZi5kYXRhKSwKKyAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRt bC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uu c3RhdHVzX2NvZGUsIDIwMCkKIAotICAgICAgICBmZHdfdXRpbHMuZGVsZXRl X2ZkdyhjbHMudGVzdGVyKQotICAgICAgICBleHRlbnNpb25fdXRpbHMuZGVs ZXRlX2V4dGVuc2lvbihjbHMudGVzdGVyKQotICAgICAgICBzY2hlbWFfdXRp bHMuZGVsZXRlX3NjaGVtYShjbHMudGVzdGVyKQotICAgICAgICBkYXRhYmFz ZV91dGlscy5kZWxldGVfZGF0YWJhc2UoY2xzLnRlc3RlcikKLSAgICAgICAg c2VydmVyX3V0aWxzLmRlbGV0ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAg ICAgdXRpbHMuZGVsZXRlX3BhcmVudF9pZF9maWxlKCkKKyAgICBkZWYgdGVh ckRvd24oc2VsZik6CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGlzY29u bmVjdCB0aGUgdGVzdCBkYXRhYmFzZSBhbmQKKyAgICAgICAgICAgIGRyb3Ag YWRkZWQgZXh0ZW5zaW9uLiIiIgorICAgICAgICBleHRlbnNpb25fdXRpbHMu ZHJvcF9leHRlbnNpb24oc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0 ZW5zaW9uX25hbWUpCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5l Y3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9pZCkK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvdGVz dHMvdGVzdF9GRFdfZGVsZXRlLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93 cmFwcGVycy90ZXN0cy90ZXN0X0ZEV19kZWxldGUucHkKaW5kZXggNTlhN2Yx Zi4uN2ZhMDRjYiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93 cmFwcGVycy90ZXN0cy90ZXN0X0ZEV19kZWxldGUucHkKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L2ZvcmVpZ25fZGF0YV93cmFwcGVycy90ZXN0cy90ZXN0X0ZEV19kZWxldGUu cHkKQEAgLTYsNzQgKzYsNjkgQEAKICMgVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAjCiAjICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmlu dF9mdW5jdGlvbgoraW1wb3J0IHV1aWQKIAogZnJvbSBwZ2FkbWluLnV0aWxz LnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgotZnJvbSByZWdyZXNz aW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHBnYWRtaW4u YnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLmV4dGVu c2lvbnMudGVzdHMgaW1wb3J0XAotICAgIHV0aWxzIGFzIGV4dGVuc2lvbl91 dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2 ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCi0gICAgdXRp bHMgYXMgc2NoZW1hX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2 ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCBcCiAg ICAgdXRpbHMgYXMgZGF0YWJhc2VfdXRpbHMKLWZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMg YXMgc2VydmVyX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLmV4dGVuc2lvbnMudGVzdHMgaW1w b3J0IFwKKyAgICB1dGlscyBhcyBleHRlbnNpb25fdXRpbHMKIGZyb20gLiBp bXBvcnQgdXRpbHMgYXMgZmR3X3V0aWxzCi1pbXBvcnQganNvbgorZnJvbSBy ZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jl c3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKIAogCiBjbGFzcyBG RFdERGVsZXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgotICAgICIi IiBUaGlzIGNsYXNzIHdpbGwgZGVsZXRlIGZvcmVpZ24gZGF0YSB3cmFwcGVy cyB1bmRlciBkYXRhYmFzZSBub2RlLiAiIiIKLQorICAgICIiIlRoaXMgY2xh c3Mgd2lsbCBkZWxldGUgZm9yZWlnbiBkYXRhIHdyYXBwZXJzIHVuZGVyIHRl c3QgZGF0YWJhc2UuIiIiCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAg ICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3IgZm9yZWlnbl9kYXRhX3dy YXBwZXIgbm9kZS4KICAgICAgICAgICAgICgnQ2hlY2sgRkRXIE5vZGUnLAog ICAgICAgICAgICAgIGRpY3QodXJsPScvYnJvd3Nlci9mb3JlaWduX2RhdGFf d3JhcHBlci9vYmovJykpCiAgICAgICAgIF0KIAotICAgIEBjbGFzc21ldGhv ZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgICIiIgotICAg ICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgdGFz a3M6Ci0gICAgICAgICAxLiBBZGQgYW5kIGNvbm5lY3QgdG8gdGhlIHRlc3Qg c2VydmVyKHMpCi0gICAgICAgICAyLiBBZGQgZGF0YWJhc2UocykgY29ubmVj dGVkIHRvIHNlcnZlcihzKQotICAgICAgICAgMy4gQWRkIHNjaGVtYXMgdG8g Y29ubmVjdGVkIGRhdGFiYXNlKHMpCi0gICAgICAgICA0LiBBZGQgZXh0ZW5z aW9uKHMpIHRvIHNjaGVtYShzKQotICAgICAgICAgNS4gQWRkIGZvcmVpZ24g ZGF0YSB3cmFwcGVyKHMpIHRvIGV4dGVuc2lvbihzKQotCi0gICAgICAgIDpy ZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBBZGQgdGhl IHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMu dGVzdGVyKQotCi0gICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXJzCi0gICAg ICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZlcl9n cm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0gICAgICAgICAgICBzZXJ2ZXJf dXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKLQotICAgICAgICBp ZiBsZW4oY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAg ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVj dGVkIHRvIGFkZCB0aGUgZGF0YWJhc2UhISEiKQotCi0gICAgICAgICMgQWRk IGRhdGFiYXNlcyB0byBjb25uZWN0ZWQgc2VydmVycwotICAgICAgICBkYXRh YmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRlc3RlciwgY2xzLnNlcnZl cl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCi0gICAgICAgIHNjaGVtYV91 dGlscy5hZGRfc2NoZW1hcyhjbHMudGVzdGVyKQotCi0gICAgICAgIGV4dGVu c2lvbl91dGlscy5hZGRfZXh0ZW5zaW9ucyhjbHMudGVzdGVyKQotCi0gICAg ICAgIGZkd191dGlscy5hZGRfZmR3KGNscy50ZXN0ZXIpCisgICAgZGVmIHNl dFVwKHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGNy ZWF0ZSBleHRlbnNpb24gYW5kIGZvcmVpZ24gZGF0YSB3cmFwcGVyLiIiIgor ICAgICAgICBzZWxmLnNjaGVtYV9kYXRhID0gcGFyZW50X25vZGVfZGljdFsn c2NoZW1hJ11bLTFdCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gc2VsZi5z Y2hlbWFfZGF0YVsnc2VydmVyX2lkJ10KKyAgICAgICAgc2VsZi5kYl9pZCA9 IHNlbGYuc2NoZW1hX2RhdGFbJ2RiX2lkJ10KKyAgICAgICAgc2VsZi5kYl9u YW1lID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25h bWUiXQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2VsZi5zY2hlbWFf ZGF0YVsnc2NoZW1hX25hbWUnXQorICAgICAgICBzZWxmLmV4dGVuc2lvbl9u YW1lID0gInBvc3RncmVzX2ZkdyIKKyAgICAgICAgc2VsZi5mZHdfbmFtZSA9 ICJmZHdfezB9Ii5mb3JtYXQoc3RyKHV1aWQudXVpZDQoKSlbMTo2XSkKKyAg ICAgICAgc2VsZi5leHRlbnNpb25faWQgPSBleHRlbnNpb25fdXRpbHMuY3Jl YXRlX2V4dGVuc2lvbigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxm LmRiX25hbWUsIHNlbGYuZXh0ZW5zaW9uX25hbWUsIHNlbGYuc2NoZW1hX25h bWUpCisgICAgICAgIHNlbGYuZmR3X2lkID0gZmR3X3V0aWxzLmNyZWF0ZV9m ZHcoc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZkd19uYW1lKQog CiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgICIiIiBUaGlzIGZ1 bmN0aW9uIHdpbGwgZGVsZXRlIGFkZGVkIEZEVy4gIiIiCi0KLSAgICAgICAg ZGVsZXRlX3Jlc3BkYXRhID0gZmR3X3V0aWxzLmRlbGV0ZV9mZHcoc2VsZi50 ZXN0ZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkZWxldGVfcmVzcGRh dGFbJ3N1Y2Nlc3MnXSwgMSkKKyAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiB3 aWxsIGZldGNoIGZvcmVpZ24gZGF0YSB3cmFwcGVyIHByZXNlbnQgdW5kZXIg dGVzdAorICAgICAgICAgZGF0YWJhc2UuIiIiCisgICAgICAgIGRiX2NvbiA9 IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 dGlscy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5kYl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2NvblsiaW5mbyJdID09 ICJEYXRhYmFzZSBjb25uZWN0ZWQuIjoKKyAgICAgICAgICAgIHJhaXNlIEV4 Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UuIikKKyAg ICAgICAgZXh0ZW5zaW9uX3Jlc3BvbnNlID0gZXh0ZW5zaW9uX3V0aWxzLnZl cmlmeV9leHRlbnNpb24oCisgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2Vs Zi5kYl9uYW1lLCBzZWxmLmV4dGVuc2lvbl9uYW1lKQorICAgICAgICBpZiBu b3QgZXh0ZW5zaW9uX3Jlc3BvbnNlOgorICAgICAgICAgICAgcmFpc2UgRXhj ZXB0aW9uKCJDb3VsZCBub3QgZmluZCBleHRlbnNpb24uIikKKyAgICAgICAg ZmR3X3Jlc3BvbnNlID0gZmR3X3V0aWxzLnZlcmlmeV9mZHcoc2VsZi5zZXJ2 ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5mZHdfbmFtZSkKKyAgICAgICAgaWYg bm90IGZkd19yZXNwb25zZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv bigiQ291bGQgbm90IGZpbmQgRkRXLiIpCisgICAgICAgIGRlbGV0ZV9yZXNw b25zZSA9IHNlbGYudGVzdGVyLmRlbGV0ZSgKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVAp ICsgJy8nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2Vs Zi5zZXJ2ZXJfaWQpICsgJy8nICsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHIoc2VsZi5kYl9pZCkgKyAnLycgKyBzdHIoc2VsZi5mZHdfaWQp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVj dHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZGVsZXRlX3Jl c3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAKLSAgICBAY2xhc3NtZXRob2QK LSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICAiIiJUaGlz IGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIHNjaGVtYSwgZGF0YWJhc2Us IHNlcnZlciBhbmQgcGFyZW50Ci0gICAgICAgIGlkIGZpbGUKLSAgICAgICAg IiIiCi0gICAgICAgIGV4dGVuc2lvbl91dGlscy5kZWxldGVfZXh0ZW5zaW9u KGNscy50ZXN0ZXIpCi0gICAgICAgIHNjaGVtYV91dGlscy5kZWxldGVfc2No ZW1hKGNscy50ZXN0ZXIpCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmRlbGV0 ZV9kYXRhYmFzZShjbHMudGVzdGVyKQotICAgICAgICBzZXJ2ZXJfdXRpbHMu ZGVsZXRlX3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICB1dGlscy5kZWxl dGVfcGFyZW50X2lkX2ZpbGUoKQorICAgIGRlZiB0ZWFyRG93bihzZWxmKToK KyAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBkaXNjb25uZWN0IHRoZSB0ZXN0 IGRhdGFiYXNlIGFuZCBkcm9wIGFkZGVkIGV4dGVuc2lvbgorICAgICAgICAg YW5kIGRlcGVuZGFudCBvYmplY3RzLiIiIgorICAgICAgICBleHRlbnNpb25f dXRpbHMuZHJvcF9leHRlbnNpb24oc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFt ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuZXh0ZW5zaW9uX25hbWUpCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRp c2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5k Yl9pZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBl cnMvdGVzdHMvdGVzdF9GRFdfZ2V0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0 YV93cmFwcGVycy90ZXN0cy90ZXN0X0ZEV19nZXQucHkKaW5kZXggZWJlYTkz ZS4uN2VmMGIyMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93 cmFwcGVycy90ZXN0cy90ZXN0X0ZEV19nZXQucHkKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Zv cmVpZ25fZGF0YV93cmFwcGVycy90ZXN0cy90ZXN0X0ZEV19nZXQucHkKQEAg LTcsNzcgKzcsNjUgQEAKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAK K2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKwogZnJv bSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRv cgotZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxz Ci1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMu ZGF0YWJhc2VzLmV4dGVuc2lvbnMudGVzdHMgaW1wb3J0XAotICAgIHV0aWxz IGFzIGV4dGVuc2lvbl91dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2Vy dmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGlt cG9ydCBcCi0gICAgdXRpbHMgYXMgc2NoZW1hX3V0aWxzCiBmcm9tIHBnYWRt aW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRl c3RzIGltcG9ydCBcCiAgICAgdXRpbHMgYXMgZGF0YWJhc2VfdXRpbHMKLWZy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0 cyBpbXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0aWxzCitmcm9tIHBnYWRtaW4u YnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLmV4dGVu c2lvbnMudGVzdHMgaW1wb3J0IFwKKyAgICB1dGlscyBhcyBleHRlbnNpb25f dXRpbHMKIGZyb20gLiBpbXBvcnQgdXRpbHMgYXMgZmR3X3V0aWxzCitmcm9t IHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVn cmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworaW1wb3J0IHV1 aWQKIAogCiBjbGFzcyBGRFdER2V0VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0 b3IpOgotICAgICIiIiBUaGlzIGNsYXNzIHdpbGwgYWRkIGZvcmVpZ24gZGF0 YSB3cmFwcGVycyB1bmRlciBkYXRhYmFzZSBub2RlLiAiIiIKLQorICAgICIi IiBUaGlzIGNsYXNzIHdpbGwgYWRkIGZvcmVpZ24gZGF0YSB3cmFwcGVycyB1 bmRlciB0ZXN0IGRhdGFiYXNlLiAiIiIKICAgICBzY2VuYXJpb3MgPSBbCi0g ICAgICAgICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciBmb3JlaWdu X2RhdGFfd3JhcHBlciBub2RlLgotICAgICAgICAgICAgKCdDaGVjayBGRFcg Tm9kZScsCi0gICAgICAgICAgICAgZGljdCh1cmw9Jy9icm93c2VyL2ZvcmVp Z25fZGF0YV93cmFwcGVyL29iai8nKSkKLSAgICAgICAgXQotCi0gICAgQGNs YXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAg IiIiVGhpcyBmdW5jdGlvbiB1c2UgdG8gYWRkL2Nvbm5lY3QgdGhlIHNlcnZl cnMgYW5kIGNyZWF0ZSBkYXRhYmFzZXMiIiIKLQotICAgICAgICAjIEFkZCB0 aGUgc2VydmVyCi0gICAgICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKGNs cy50ZXN0ZXIpCi0KLSAgICAgICAgIyBDb25uZWN0IHRvIHNlcnZlcnMKLSAg ICAgICAgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVy X2dyb3VwLCBjbHMuc2VydmVyX2lkcyA9IFwKLSAgICAgICAgICAgIHNlcnZl cl91dGlscy5jb25uZWN0X3NlcnZlcihjbHMudGVzdGVyKQotCi0gICAgICAg IGlmIGxlbihjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UpID09IDA6Ci0g ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5vIFNlcnZlcihzKSBjb25u ZWN0ZWQgdG8gYWRkIHRoZSBkYXRhYmFzZSEhISIpCi0KLSAgICAgICAgIyBB ZGQgZGF0YWJhc2VzIHRvIGNvbm5lY3RlZCBzZXJ2ZXJzCi0gICAgICAgIGRh dGFiYXNlX3V0aWxzLmFkZF9kYXRhYmFzZShjbHMudGVzdGVyLCBjbHMuc2Vy dmVyX2Nvbm5lY3RfcmVzcG9uc2UsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjbHMuc2VydmVyX2lkcykKLSAgICAgICAgc2NoZW1h X3V0aWxzLmFkZF9zY2hlbWFzKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgZXh0 ZW5zaW9uX3V0aWxzLmFkZF9leHRlbnNpb25zKGNscy50ZXN0ZXIpCi0KLSAg ICAgICAgZmR3X3V0aWxzLmFkZF9mZHcoY2xzLnRlc3RlcikKKyAgICAgICAg IyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3IgZm9yZWlnbl9kYXRhX3dyYXBw ZXIgbm9kZS4KKyAgICAgICAgKCdDaGVjayBGRFcgTm9kZScsCisgICAgICAg ICBkaWN0KHVybD0nL2Jyb3dzZXIvZm9yZWlnbl9kYXRhX3dyYXBwZXIvb2Jq LycpKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg IiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgZXh0ZW5zaW9uIGFuZCBm b3JlaWduIGRhdGEgd3JhcHBlci4iIiIKKyAgICAgICAgc2VsZi5zY2hlbWFf ZGF0YSA9IHBhcmVudF9ub2RlX2RpY3RbJ3NjaGVtYSddWy0xXQorICAgICAg ICBzZWxmLnNlcnZlcl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ3NlcnZlcl9p ZCddCisgICAgICAgIHNlbGYuZGJfaWQgPSBzZWxmLnNjaGVtYV9kYXRhWydk Yl9pZCddCisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2Rp Y3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICAgICAgc2VsZi5z Y2hlbWFfbmFtZSA9IHNlbGYuc2NoZW1hX2RhdGFbJ3NjaGVtYV9uYW1lJ10K KyAgICAgICAgc2VsZi5leHRlbnNpb25fbmFtZSA9ICJwb3N0Z3Jlc19mZHci CisgICAgICAgIHNlbGYuZmR3X25hbWUgPSAiZmR3X3swfSIuZm9ybWF0KHN0 cih1dWlkLnV1aWQ0KCkpWzE6NF0pCisgICAgICAgIHNlbGYuZXh0ZW5zaW9u X2lkID0gZXh0ZW5zaW9uX3V0aWxzLmNyZWF0ZV9leHRlbnNpb24oCisgICAg ICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLCBzZWxmLmV4dGVu c2lvbl9uYW1lLCBzZWxmLnNjaGVtYV9uYW1lKQorICAgICAgICBzZWxmLmZk d19pZCA9IGZkd191dGlscy5jcmVhdGVfZmR3KHNlbGYuc2VydmVyLCBzZWxm LmRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5mZHdfbmFtZSkKIAogICAgIGRlZiBydW5UZXN0KHNl bGYpOgotICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGdldCBhZGRl ZCBGRFcuICIiIgotCi0gICAgICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMo KQotICAgICAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAgICAg ICBkYl9pZHNfZGljdCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAgICAgICAgZmR3 X2lkc19kaWN0ID0gYWxsX2lkWyJmaWQiXVswXQotCi0gICAgICAgIGZvciBz ZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKLSAgICAgICAgICAgIGRiX2lkID0g ZGJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAgICAgICBmZHdf aWQgPSBmZHdfaWRzX2RpY3Rbc2VydmVyX2lkXQotCi0gICAgICAgICAgICBy ZXNwb25zZSA9IGZkd191dGlscy52ZXJpZnlfZmR3cyhzZWxmLnRlc3RlciwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZCwgZGJfaWQsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHdf aWQpCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNl LnN0YXR1c19jb2RlLCAyMDApCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk ZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICAiIiJUaGlzIGZ1bmN0 aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIHNjaGVtYSwgZGF0YWJhc2UsIHNlcnZl ciBhbmQgcGFyZW50Ci0gICAgICAgIGlkIGZpbGUKLSAgICAgICAgIiIiCi0g ICAgICAgIGZkd191dGlscy5kZWxldGVfZmR3KGNscy50ZXN0ZXIpCi0gICAg ICAgIGV4dGVuc2lvbl91dGlscy5kZWxldGVfZXh0ZW5zaW9uKGNscy50ZXN0 ZXIpCi0gICAgICAgIHNjaGVtYV91dGlscy5kZWxldGVfc2NoZW1hKGNscy50 ZXN0ZXIpCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmRlbGV0ZV9kYXRhYmFz ZShjbHMudGVzdGVyKQotICAgICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3Nl cnZlcihjbHMudGVzdGVyKQotICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50 X2lkX2ZpbGUoKQorICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0 Y2ggZm9yZWlnbiBkYXRhIHdyYXBwZXIgcHJlc2VudCB1bmRlciB0ZXN0Cisg ICAgICAgICBkYXRhYmFzZS4iIiIKKyAgICAgICAgZGJfY29uID0gZGF0YWJh c2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLlNF UlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRi X2lkKQorICAgICAgICBpZiBub3QgZGJfY29uWyJpbmZvIl0gPT0gIkRhdGFi YXNlIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u KCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZS4iKQorICAgICAgICBl eHRlbnNpb25fcmVzcG9uc2UgPSBleHRlbnNpb25fdXRpbHMudmVyaWZ5X2V4 dGVuc2lvbigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLmRiX25h bWUsIHNlbGYuZXh0ZW5zaW9uX25hbWUpCisgICAgICAgIGlmIG5vdCBleHRl bnNpb25fcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o IkNvdWxkIG5vdCBmaW5kIGV4dGVuc2lvbi4iKQorICAgICAgICByZXNwb25z ZSA9IHNlbGYudGVzdGVyLmdldCgKKyAgICAgICAgICAgIHNlbGYudXJsICsg c3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKyBzdHIoCisgICAgICAg ICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsKKyAgICAgICAgICAg IHN0cihzZWxmLmRiX2lkKSArICcvJyArIHN0cihzZWxmLmZkd19pZCksCisg ICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDAp CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIlRoaXMg ZnVuY3Rpb24gZGlzY29ubmVjdCB0aGUgdGVzdCBkYXRhYmFzZSBhbmQgZHJv cCBhZGRlZCBleHRlbnNpb24KKyAgICAgICAgIGFuZCBkZXBlbmRhbnQgb2Jq ZWN0cy4iIiIKKyAgICAgICAgZXh0ZW5zaW9uX3V0aWxzLmRyb3BfZXh0ZW5z aW9uKHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dGVuc2lvbl9uYW1l KQorICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNl KHNlbGYsIHNlbGYuc2VydmVyX2lkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfaWQpCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL3Rlc3RzL3Rlc3RfRkRX X3B1dC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvdGVzdHMv dGVzdF9GRFdfcHV0LnB5CmluZGV4IDk2YzM1ZjYuLjk5MTNiMzggMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvdGVzdHMvdGVz dF9GRFdfcHV0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBl cnMvdGVzdHMvdGVzdF9GRFdfcHV0LnB5CkBAIC02LDk2ICs2LDc1IEBACiAj IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQogIwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2Zyb20g X19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCB1dWlk CitpbXBvcnQganNvbgogCiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1w b3J0IEJhc2VUZXN0R2VuZXJhdG9yCi1mcm9tIHJlZ3Jlc3Npb24gaW1wb3J0 IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuZXh0ZW5zaW9ucy50ZXN0 cyBpbXBvcnRcCi0gICAgdXRpbHMgYXMgZXh0ZW5zaW9uX3V0aWxzCi1mcm9t IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJh c2VzLnNjaGVtYXMudGVzdHMgaW1wb3J0IFwKLSAgICB1dGlscyBhcyBzY2hl bWFfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMu c2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IFwKICAgICB1dGlscyBh cyBkYXRhYmFzZV91dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVy X2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJf dXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2Vy dmVycy5kYXRhYmFzZXMuZXh0ZW5zaW9ucy50ZXN0cyBpbXBvcnQgXAorICAg IHV0aWxzIGFzIGV4dGVuc2lvbl91dGlscwogZnJvbSAuIGltcG9ydCB1dGls cyBhcyBmZHdfdXRpbHMKLWZyb20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGlt cG9ydCBhZHZhbmNlZF9jb25maWdfZGF0YQotaW1wb3J0IGpzb24KK2Zyb20g cmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdy ZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCiAKIAogY2xhc3Mg RkRXRFB1dFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKLSAgICAiIiIg VGhpcyBjbGFzcyB3aWxsIGFkZCBmb3JlaWduIGRhdGEgd3JhcHBlcnMgdW5k ZXIgZGF0YWJhc2Ugbm9kZS4gIiIiCi0KKyAgICAiIiJUaGlzIGNsYXNzIHdp bGwgdXBkYXRlIGZvcmVpZ24gZGF0YSB3cmFwcGVycyB1bmRlciB0ZXN0IGRh dGFiYXNlLiIiIgogICAgIHNjZW5hcmlvcyA9IFsKLSAgICAgICAgICAgICMg RmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGZvcmVpZ25fZGF0YV93cmFwcGVy IG5vZGUuCi0gICAgICAgICAgICAoJ0NoZWNrIEZEVyBOb2RlJywKLSAgICAg ICAgICAgICBkaWN0KHVybD0nL2Jyb3dzZXIvZm9yZWlnbl9kYXRhX3dyYXBw ZXIvb2JqLycpKQotICAgICAgICBdCi0KLSAgICBAY2xhc3NtZXRob2QKLSAg ICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAiIiJUaGlzIGZ1bmN0 aW9uIHVzZSB0byBhZGQvY29ubmVjdCB0aGUgc2VydmVycyBhbmQgY3JlYXRl IGRhdGFiYXNlcyIiIgotCi0gICAgICAgICMgQWRkIHRoZSBzZXJ2ZXIKLSAg ICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2ZXIoY2xzLnRlc3RlcikKLQot ICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVycwotICAgICAgICBjbHMuc2Vy dmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5z ZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgc2VydmVyX3V0aWxzLmNvbm5l Y3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgaWYgbGVuKGNscy5z ZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKLSAgICAgICAgICAgIHJh aXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0byBhZGQg dGhlIGRhdGFiYXNlISEhIikKLQotICAgICAgICAjIEFkZCBkYXRhYmFzZXMg dG8gY29ubmVjdGVkIHNlcnZlcnMKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMu YWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9y ZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNscy5zZXJ2ZXJfaWRzKQotICAgICAgICBzY2hlbWFfdXRpbHMuYWRkX3Nj aGVtYXMoY2xzLnRlc3RlcikKLQotICAgICAgICBleHRlbnNpb25fdXRpbHMu YWRkX2V4dGVuc2lvbnMoY2xzLnRlc3RlcikKLQotICAgICAgICBmZHdfdXRp bHMuYWRkX2ZkdyhjbHMudGVzdGVyKQorICAgICAgICAjIEZldGNoaW5nIGRl ZmF1bHQgVVJMIGZvciBmb3JlaWduX2RhdGFfd3JhcHBlciBub2RlLgorICAg ICAgICAoJ0NoZWNrIEZEVyBOb2RlJywKKyAgICAgICAgIGRpY3QodXJsPScv YnJvd3Nlci9mb3JlaWduX2RhdGFfd3JhcHBlci9vYmovJykpCisgICAgXQor CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5j dGlvbiB3aWxsIGNyZWF0ZSBleHRlbnNpb24gYW5kIGZvcmVpZ24gZGF0YSB3 cmFwcGVyLiIiIgorICAgICAgICBzZWxmLnNjaGVtYV9kYXRhID0gcGFyZW50 X25vZGVfZGljdFsnc2NoZW1hJ11bLTFdCisgICAgICAgIHNlbGYuc2VydmVy X2lkID0gc2VsZi5zY2hlbWFfZGF0YVsnc2VydmVyX2lkJ10KKyAgICAgICAg c2VsZi5kYl9pZCA9IHNlbGYuc2NoZW1hX2RhdGFbJ2RiX2lkJ10KKyAgICAg ICAgc2VsZi5kYl9uYW1lID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2Ui XVstMV1bImRiX25hbWUiXQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0g c2VsZi5zY2hlbWFfZGF0YVsnc2NoZW1hX25hbWUnXQorICAgICAgICBzZWxm LmV4dGVuc2lvbl9uYW1lID0gInBvc3RncmVzX2ZkdyIKKyAgICAgICAgc2Vs Zi5mZHdfbmFtZSA9ICJmZHdfcHV0XyVzIi5mb3JtYXQoc3RyKHV1aWQudXVp ZDQoKSlbMTo2XSkKKyAgICAgICAgc2VsZi5leHRlbnNpb25faWQgPSBleHRl bnNpb25fdXRpbHMuY3JlYXRlX2V4dGVuc2lvbigKKyAgICAgICAgICAgIHNl bGYuc2VydmVyLCBzZWxmLmRiX25hbWUsIHNlbGYuZXh0ZW5zaW9uX25hbWUs IHNlbGYuc2NoZW1hX25hbWUpCisgICAgICAgIHNlbGYuZmR3X2lkID0gZmR3 X3V0aWxzLmNyZWF0ZV9mZHcoc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmZkd19uYW1lKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAg ICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIGFkZGVkIEZEVy4g IiIiCi0KLSAgICAgICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lkcygpCi0gICAg ICAgIHNlcnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCi0gICAgICAgIGRiX2lk c19kaWN0ID0gYWxsX2lkWyJkaWQiXVswXQotICAgICAgICBmZHdfaWRzX2Rp Y3QgPSBhbGxfaWRbImZpZCJdWzBdCi0KLSAgICAgICAgZm9yIHNlcnZlcl9p ZCBpbiBzZXJ2ZXJfaWRzOgotICAgICAgICAgICAgZGJfaWQgPSBkYl9pZHNf ZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgICAgIGZkd19pZCA9IGZk d19pZHNfZGljdFtzZXJ2ZXJfaWRdCi0KLSAgICAgICAgICAgIHJlc3BvbnNl ID0gZmR3X3V0aWxzLnZlcmlmeV9mZHdzKHNlbGYudGVzdGVyLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbHMu U0VSVkVSX0dST1VQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VydmVyX2lkLCBkYl9pZCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkd19pZCkKLQot ICAgICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwOgot ICAgICAgICAgICAgICAgIGRhdGEgPSBcCi0gICAgICAgICAgICAgICAgICAg IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6IGFk dmFuY2VkX2NvbmZpZ19kYXRhWydmZHdfdXBkYXRlX2RhdGEnXQotICAgICAg ICAgICAgICAgICAgICAgICAgWydjb21tZW50J10sCi0gICAgICAgICAgICAg ICAgICAgICAgICAiaWQiOiBmZHdfaWQKLSAgICAgICAgICAgICAgICAgICAg fQotCi0gICAgICAgICAgICAgICAgcHV0X3Jlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucHV0KAotICAgICAgICAgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1 dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKLSAgICAgICAgICAgICAgICAg ICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKwotICAgICAgICAgICAgICAgICAg ICBzdHIoZGJfaWQpICsgJy8nICsgc3RyKGZkd19pZCksCi0gICAgICAgICAg ICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKLSAgICAgICAgICAg ICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQotCi0gICAgICAgICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHV0X3Jlc3BvbnNlLnN0YXR1c19j b2RlLCAyMDApCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRv d25DbGFzcyhjbHMpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5j dGlvbiBkZWxldGVzIHRoZSBhZGRlZCBzY2hlbWEsIGRhdGFiYXNlLCBzZXJ2 ZXIgYW5kIHBhcmVudAotICAgICAgICBpZCBmaWxlCi0gICAgICAgICIiIgot ICAgICAgICBmZHdfdXRpbHMuZGVsZXRlX2ZkdyhjbHMudGVzdGVyKQotICAg ICAgICBleHRlbnNpb25fdXRpbHMuZGVsZXRlX2V4dGVuc2lvbihjbHMudGVz dGVyKQotICAgICAgICBzY2hlbWFfdXRpbHMuZGVsZXRlX3NjaGVtYShjbHMu dGVzdGVyKQotICAgICAgICBkYXRhYmFzZV91dGlscy5kZWxldGVfZGF0YWJh c2UoY2xzLnRlc3RlcikKLSAgICAgICAgc2VydmVyX3V0aWxzLmRlbGV0ZV9z ZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgdXRpbHMuZGVsZXRlX3BhcmVu dF9pZF9maWxlKCkKKyAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBm ZXRjaCBmb3JlaWduIGRhdGEgd3JhcHBlciBwcmVzZW50IHVuZGVyCisgICAg ICAgICAgICB0ZXN0IGRhdGFiYXNlLiAiIiIKKyAgICAgICAgZGJfY29uID0g ZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0 aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmRiX2lkKQorICAgICAgICBpZiBub3QgZGJfY29uWyJpbmZvIl0gPT0g IkRhdGFiYXNlIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgcmFpc2UgRXhj ZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZS4iKQorICAg ICAgICBleHRlbnNpb25fcmVzcG9uc2UgPSBleHRlbnNpb25fdXRpbHMudmVy aWZ5X2V4dGVuc2lvbigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxm LmRiX25hbWUsIHNlbGYuZXh0ZW5zaW9uX25hbWUpCisgICAgICAgIGlmIG5v dCBleHRlbnNpb25fcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNl cHRpb24oIkNvdWxkIG5vdCBmaW5kIGV4dGVuc2lvbi4iKQorICAgICAgICBm ZHdfcmVzcG9uc2UgPSBmZHdfdXRpbHMudmVyaWZ5X2ZkdyhzZWxmLnNlcnZl ciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmZkd19uYW1lKQorICAgICAgICBpZiBu b3QgZmR3X3Jlc3BvbnNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u KCJDb3VsZCBub3QgZmluZCBGRFcuIikKKyAgICAgICAgZGF0YSA9IHsKKyAg ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIEZEVyB1cGRhdGUg Y29tbWVudCIsCisgICAgICAgICAgICAiaWQiOiBzZWxmLmZkd19pZAorICAg ICAgICB9CisgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1 dCgKKyAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9H Uk9VUCkgKyAnLycgKworICAgICAgICAgICAgc3RyKHNlbGYuc2VydmVyX2lk KSArICcvJyArCisgICAgICAgICAgICBzdHIoc2VsZi5kYl9pZCkgKyAnLycg KyBzdHIoc2VsZi5mZHdfaWQpLAorICAgICAgICAgICAgZGF0YT1qc29uLmR1 bXBzKGRhdGEpLAorICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVl KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwdXRfcmVzcG9uc2Uuc3Rh dHVzX2NvZGUsIDIwMCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAg ICAgICAgIiIiVGhpcyBmdW5jdGlvbiBkaXNjb25uZWN0IHRoZSB0ZXN0IGRh dGFiYXNlIGFuZCBkcm9wIGFkZGVkIGV4dGVuc2lvbgorICAgICAgICAgYW5k IGRlcGVuZGFudCBvYmplY3RzLiIiIgorICAgICAgICBleHRlbnNpb25fdXRp bHMuZHJvcF9leHRlbnNpb24oc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZXh0ZW5zaW9uX25hbWUpCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nv bm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9p ZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMv dGVzdHMvdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJz L3Rlc3RzL3V0aWxzLnB5CmluZGV4IDY0NzgyYzAuLmY0ZjVjYjMgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvdGVzdHMvdXRp bHMucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93cmFwcGVycy90ZXN0 cy91dGlscy5weQpAQCAtNiwxMjggKzYsMTAzIEBACiAjIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQog IwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotaW1wb3J0IG9zCi1pbXBv cnQgcGlja2xlCi1pbXBvcnQganNvbgotZnJvbSByZWdyZXNzaW9uLnRlc3Rf c2V0dXAgaW1wb3J0IGFkdmFuY2VkX2NvbmZpZ19kYXRhLCBwaWNrbGVfcGF0 aAotZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxz Ci1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMu dGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwotZnJvbSBwZ2Fk bWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50 ZXN0cyBpbXBvcnQgXAotICAgIHV0aWxzIGFzIGRhdGFiYXNlX3V0aWxzCitm cm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitpbXBvcnQg dHJhY2ViYWNrCiBpbXBvcnQgdXVpZAoraW1wb3J0IHN5cwogCi1GRFdfVVJM ID0gJy9icm93c2VyL2ZvcmVpZ25fZGF0YV93cmFwcGVyL29iai8nCi0KLQot ZGVmIGdldF9mZHdfY29uZmlnX2RhdGEoc2NoZW1hX25hbWUsIHNlcnZlcl9j b25uZWN0X2RhdGEpOgotICAgIGFkdl9jb25maWdfZGF0YSA9IE5vbmUKLSAg ICBkYl91c2VyID0gc2VydmVyX2Nvbm5lY3RfZGF0YVsnZGF0YSddWyd1c2Vy J11bJ25hbWUnXQorZnJvbSByZWdyZXNzaW9uLnRlc3RfdXRpbHMgaW1wb3J0 IGdldF9kYl9jb25uZWN0aW9uCiAKLSAgICAjIEdldCB0aGUgY29uZmlnIGRh dGEgb2YgYXBwcm9wcmlhdGUgZGIgdXNlcgotICAgIGZvciBjb25maWdfdGVz dF9kYXRhIGluIGFkdmFuY2VkX2NvbmZpZ19kYXRhWydmZHdfY3JlZGVudGlh bHMnXToKLSAgICAgICAgaWYgZGJfdXNlciA9PSBjb25maWdfdGVzdF9kYXRh Wydvd25lciddOgotICAgICAgICAgICAgYWR2X2NvbmZpZ19kYXRhID0gY29u ZmlnX3Rlc3RfZGF0YQogCitkZWYgZ2V0X2Zkd19kYXRhKHNjaGVtYV9uYW1l LCBkYl91c2VyKToKICAgICBkYXRhID0gewotICAgICAgICAiZmR3YWNsIjog YWR2X2NvbmZpZ19kYXRhWydhY2wnXSwKLSAgICAgICAgImZkd2hhbiI6ICJ7 MH0uezF9Ii5mb3JtYXQoc2NoZW1hX25hbWUsIGFkdl9jb25maWdfZGF0YVsn aGFuZGxlciddKSwKLSAgICAgICAgImZkd29wdGlvbnMiOiBhZHZfY29uZmln X2RhdGFbJ29wdGlvbnMnXSwKLSAgICAgICAgImZkd293bmVyIjogYWR2X2Nv bmZpZ19kYXRhWydvd25lciddLAotICAgICAgICAiZmR3dmFsdWUiOiAiezB9 LnsxfSIuZm9ybWF0KHNjaGVtYV9uYW1lLCBhZHZfY29uZmlnX2RhdGFbJ3Zh bGlkYXRvciddKSwKLSAgICAgICAgIm5hbWUiOiAiZmR3X3t9Ii5mb3JtYXQo c3RyKHV1aWQudXVpZDQoKSlbMTo0XSkKKyAgICAgICAgImZkd2FjbCI6Cisg ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICAiZ3JhbnRlZSI6IGRiX3VzZXIsCisgICAgICAgICAgICAgICAg ICAgICJncmFudG9yIjogZGJfdXNlciwKKyAgICAgICAgICAgICAgICAgICAg InByaXZpbGVnZXMiOgorICAgICAgICAgICAgICAgICAgICAgICAgWworICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInByaXZpbGVnZV90eXBlIjogIlUiLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpdmlsZWdlIjogInRydWUi LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aF9ncmFu dCI6ICJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICBdLAorICAgICAgICAiZmR3aGFuIjogIiVzLiVzIiAlIChz Y2hlbWFfbmFtZSwgInBvc3RncmVzX2Zkd19oYW5kbGVyIiksCisgICAgICAg ICJmZHdvcHRpb25zIjogW10sCisgICAgICAgICJmZHdvd25lciI6IGRiX3Vz ZXIsCisgICAgICAgICJmZHd2YWx1ZSI6ICIlcy4lcyIgJSAoc2NoZW1hX25h bWUsICJwb3N0Z3Jlc19mZHdfdmFsaWRhdG9yIiksCisgICAgICAgICJuYW1l IjogImZkd19hZGRfJXMiICUgKHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0pCiAg ICAgfQotCiAgICAgcmV0dXJuIGRhdGEKIAogCi1kZWYgYWRkX2Zkdyh0ZXN0 ZXIpOgotCi0gICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lkcygpCi0gICAgc2Vy dmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KLSAgICBkYl9pZHNfZGljdCA9IGFs bF9pZFsiZGlkIl1bMF0KLSAgICBzY2hlbWFfaW5mb19kaWN0ID0gYWxsX2lk WyJzY2lkIl1bMF0KLQotICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lk czoKLSAgICAgICAgZGJfaWQgPSBkYl9pZHNfZGljdFtpbnQoc2VydmVyX2lk KV0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMudmVyaWZ5X2Rh dGFiYXNlKHRlc3RlciwgdXRpbHMuU0VSVkVSX0dST1VQLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy X2lkLCBkYl9pZCkKLSAgICAgICAgaWYgZGJfY29uWydkYXRhJ11bImNvbm5l Y3RlZCJdOgotICAgICAgICAgICAgc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2Ug PSBzZXJ2ZXJfdXRpbHMudmVyaWZ5X3NlcnZlcigKLSAgICAgICAgICAgICAg ICB0ZXN0ZXIsIHV0aWxzLlNFUlZFUl9HUk9VUCwgc2VydmVyX2lkKQotCi0g ICAgICAgICAgICBzY2hlbWFfbmFtZSA9IHNjaGVtYV9pbmZvX2RpY3RbaW50 KHNlcnZlcl9pZCldWzFdCi0gICAgICAgICAgICBkYXRhID0gZ2V0X2Zkd19j b25maWdfZGF0YShzY2hlbWFfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKQot Ci0gICAgICAgICAgICByZXNwb25zZSA9IHRlc3Rlci5wb3N0KEZEV19VUkwg KyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8n ICsgc3RyKGRiX2lkKSArICcvJywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRhdGEpLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwv anNvbicpCi0gICAgICAgICAgICBhc3NlcnQgcmVzcG9uc2Uuc3RhdHVzX2Nv ZGUgPT0gMjAwCi0gICAgICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5s b2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKLSAgICAgICAg ICAgIHdyaXRlX2Zkd19pbmZvKHJlc3BvbnNlX2RhdGEsIHNlcnZlcl9pZCkK LQotCi1kZWYgd3JpdGVfZmR3X2luZm8ocmVzcG9uc2VfZGF0YSwgc2VydmVy X2lkKToKK2RlZiBjcmVhdGVfZmR3KHNlcnZlciwgZGJfbmFtZSwgZmR3X25h bWUpOgogICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gd3JpdGVzIHRoZSBz ZXF1ZW5jZSBpZCBpbnRvIHBhcmVudF9pZC5wa2wKLQotICAgIDpwYXJhbSBy ZXNwb25zZV9kYXRhOiBGRFcgYWRkIHJlc3BvbnNlIGRhdGEKLSAgICA6dHlw ZSByZXNwb25zZV9kYXRhOiBkaWN0Ci0gICAgOnBhcmFtIHNlcnZlcl9pZDog c2VydmVyIGlkCi0gICAgOnR5cGUgc2VydmVyX2lkOiBzdHIKLSAgICA6cmV0 dXJuOiBOb25lCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBmb3Jl aWduIGRhdGEgd3JhcHBlciB1bmRlciB0aGUgZXhpc3RpbmcKKyAgICBkdW1t eSBkYXRhYmFzZS4KKyAgICA6cGFyYW0gc2VydmVyOiBzZXJ2ZXIgZGV0YWls cworICAgIDp0eXBlIHNlcnZlcjogZGljdAorICAgIDpwYXJhbSBkYl9uYW1l OiBkYXRhYmFzZSBuYW1lCisgICAgOnR5cGUgZGJfbmFtZTogc3RyCisgICAg OnBhcmFtIGZkd19uYW1lOiBGRFcgbmFtZQorICAgIDp0eXBlIGZkd19uYW1l OiBzdHIKKyAgICA6cmV0dXJuIGZkd19pZDogZmR3IGlkCisgICAgOnJ0eXBl OiBpbnQKICAgICAiIiIKLQotICAgIGZkd19pZCA9IHJlc3BvbnNlX2RhdGFb J25vZGUnXVsnX2lkJ10KLSAgICBwaWNrbGVfaWRfZGljdCA9IHV0aWxzLmdl dF9waWNrbGVfaWRfZGljdCgpCi0gICAgaWYgb3MucGF0aC5pc2ZpbGUocGlj a2xlX3BhdGgpOgotICAgICAgICBleGlzdGluZ19zZXJ2ZXJfaWQgPSBvcGVu KHBpY2tsZV9wYXRoLCAncmInKQotICAgICAgICB0b2xfc2VydmVyX2lkID0g cGlja2xlLmxvYWQoZXhpc3Rpbmdfc2VydmVyX2lkKQotICAgICAgICBwaWNr bGVfaWRfZGljdCA9IHRvbF9zZXJ2ZXJfaWQKLSAgICBpZiAnZmlkJyBpbiBw aWNrbGVfaWRfZGljdDoKLSAgICAgICAgaWYgcGlja2xlX2lkX2RpY3RbJ2Zp ZCddOgotICAgICAgICAgICAgIyBBZGQgdGhlIEZEV19pZCBhcyB2YWx1ZSBp biBkaWN0Ci0gICAgICAgICAgICBwaWNrbGVfaWRfZGljdFsiZmlkIl1bMF0u dXBkYXRlKHtzZXJ2ZXJfaWQ6IGZkd19pZH0pCi0gICAgICAgIGVsc2U6Ci0g ICAgICAgICAgICAjIENyZWF0ZSBuZXcgZGljdCB3aXRoIHNlcnZlcl9pZCBh bmQgRkRXX2lkCi0gICAgICAgICAgICBwaWNrbGVfaWRfZGljdFsiZmlkIl0u YXBwZW5kKHtzZXJ2ZXJfaWQ6IGZkd19pZH0pCi0gICAgZmR3X291dHB1dCA9 IG9wZW4ocGlja2xlX3BhdGgsICd3YicpCi0gICAgcGlja2xlLmR1bXAocGlj a2xlX2lkX2RpY3QsIGZkd19vdXRwdXQpCi0gICAgZmR3X291dHB1dC5jbG9z ZSgpCi0KLQotZGVmIHZlcmlmeV9mZHdzKHRlc3Rlciwgc2VydmVyX2dyb3Vw LCBzZXJ2ZXJfaWQsIGRiX2lkLCBmZHdfaWQpOgotICAgIHJlc3BvbnNlID0g dGVzdGVyLmdldChGRFdfVVJMICsgc3RyKHNlcnZlcl9ncm91cCkgKyAnLycg KwotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VydmVyX2lkKSAr ICcvJyArIHN0cihkYl9pZCkgKwotICAgICAgICAgICAgICAgICAgICAgICAg ICAnLycgKyBzdHIoZmR3X2lkKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQotICAgIHJldHVybiByZXNw b25zZQotCi0KLWRlZiBkZWxldGVfZmR3KHRlc3Rlcik6Ci0gICAgYWxsX2lk ID0gdXRpbHMuZ2V0X2lkcygpCi0gICAgc2VydmVyX2lkcyA9IGFsbF9pZFsi c2lkIl0KLSAgICBkYl9pZHNfZGljdCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAg ICBmZHdfaWRzX2RpY3QgPSBhbGxfaWRbImZpZCJdWzBdCi0KLSAgICBmb3Ig c2VydmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAgIGRiX2lkID0gZGJf aWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAgIGZkd19pZCA9IGZk d19pZHNfZGljdFtzZXJ2ZXJfaWRdCi0KLSAgICAgICAgcmVzcG9uc2UgPSB2 ZXJpZnlfZmR3cyh0ZXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdXRpbHMuU0VSVkVSX0dST1VQLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlcnZlcl9pZCwgZGJfaWQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmR3X2lkKQotCi0gICAgICAgIGlmIHJlc3Bv bnNlLnN0YXR1c19jb2RlID09IDIwMDoKLSAgICAgICAgICAgIGRlbGV0ZV9y ZXNwb25zZSA9IHRlc3Rlci5kZWxldGUoCi0gICAgICAgICAgICAgICAgRkRX X1VSTCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKLSAgICAg ICAgICAgICAgICBzdHIoc2VydmVyX2lkKSArICcvJyArCi0gICAgICAgICAg ICAgICAgc3RyKGRiX2lkKSArICcvJyArIHN0cihmZHdfaWQpLAotICAgICAg ICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKLQotICAgICAgICAg ICAgZGVsZXRlX3Jlc3BkYXRhID0ganNvbi5sb2FkcyhkZWxldGVfcmVzcG9u c2UuZGF0YS5kZWNvZGUoKSkKLQotICAgICAgICAgICAgcmV0dXJuIGRlbGV0 ZV9yZXNwZGF0YQorICAgIHRyeToKKyAgICAgICAgY29ubmVjdGlvbiA9IGdl dF9kYl9jb25uZWN0aW9uKGRiX25hbWUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2Ri X3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlcnZlclsncG9ydCddKQorICAgICAgICBv bGRfaXNvbGF0aW9uX2xldmVsID0gY29ubmVjdGlvbi5pc29sYXRpb25fbGV2 ZWwKKyAgICAgICAgY29ubmVjdGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKDAp CisgICAgICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKKyAg ICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoJycnQ1JFQVRFIEZPUkVJR04gREFU QSBXUkFQUEVSICIlcyInJycgJSBmZHdfbmFtZSkKKyAgICAgICAgY29ubmVj dGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKG9sZF9pc29sYXRpb25fbGV2ZWwp CisgICAgICAgIGNvbm5lY3Rpb24uY29tbWl0KCkKKyAgICAgICAgIyBHZXQg J29pZCcgZnJvbSBuZXdseSBjcmVhdGVkIGZvcmVpZ24gZGF0YSB3cmFwcGVy CisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKAorICAgICAgICAgICAgIlNF TEVDVCBvaWQgRlJPTSBwZ19mb3JlaWduX2RhdGFfd3JhcHBlciBXSEVSRSBm ZHduYW1lID0gJyVzJyIKKyAgICAgICAgICAgICUgZmR3X25hbWUpCisgICAg ICAgIG9pZCA9IHBnX2N1cnNvci5mZXRjaG9uZSgpCisgICAgICAgIGZkd19p ZCA9ICcnCisgICAgICAgIGlmIG9pZDoKKyAgICAgICAgICAgIGZkd19pZCA9 IG9pZFswXQorICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkKKyAgICAgICAg cmV0dXJuIGZkd19pZAorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAg IHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQorCisKK2Rl ZiB2ZXJpZnlfZmR3KHNlcnZlciwgZGJfbmFtZSwgZmR3X25hbWUpOgorICAg ICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB2ZXJpZnkgY3VycmVudCBm b3JlaWduIGRhdGEgd3JhcHBlci4KKyAgICA6cGFyYW0gc2VydmVyOiBzZXJ2 ZXIgZGV0YWlscworICAgIDp0eXBlIHNlcnZlcjogZGljdAorICAgIDpwYXJh bSBkYl9uYW1lOiBkYXRhYmFzZSBuYW1lCisgICAgOnR5cGUgZGJfbmFtZTog c3RyCisgICAgOnBhcmFtIGZkd19uYW1lOiBGRFcgbmFtZQorICAgIDp0eXBl IGZkd19uYW1lOiBzdHIKKyAgICA6cmV0dXJuIGZkdzogZmR3IGRldGFpbHMK KyAgICA6cnR5cGU6IHR1cGxlCisgICAgIiIiCisgICAgdHJ5OgorICAgICAg ICBjb25uZWN0aW9uID0gZ2V0X2RiX2Nvbm5lY3Rpb24oZGJfbmFtZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsn dXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnaG9zdCddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydw b3J0J10pCisgICAgICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29y KCkKKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoCisgICAgICAgICAgICAi U0VMRUNUIG9pZCBGUk9NIHBnX2ZvcmVpZ25fZGF0YV93cmFwcGVyIFdIRVJF IGZkd25hbWUgPSAnJXMnIgorICAgICAgICAgICAgJSBmZHdfbmFtZSkKKyAg ICAgICAgZmR3ID0gcGdfY3Vyc29yLmZldGNob25lKCkKKyAgICAgICAgY29u bmVjdGlvbi5jbG9zZSgpCisgICAgICAgIHJldHVybiBmZHcKKyAgICBleGNl cHQgRXhjZXB0aW9uOgorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZp bGU9c3lzLnN0ZGVycikKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Nv bGxhdGlvbnMvdGVzdHMvdGVzdF9jb2xsYXRpb25fYWRkLnB5IGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvY29sbGF0aW9ucy90ZXN0cy90ZXN0X2NvbGxhdGlvbl9hZGQu cHkKaW5kZXggYmFjYmI2MC4uZWQwNTdhMyAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvY29sbGF0aW9ucy90ZXN0cy90ZXN0X2NvbGxhdGlvbl9hZGQu cHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvY29sbGF0aW9ucy90ZXN0cy90ZXN0 X2NvbGxhdGlvbl9hZGQucHkKQEAgLTYsNjkgKzYsNjkgQEAKICMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHV1aWQK K2ltcG9ydCBqc29uCiAKIGZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91 dGlscyBhcyB1dGlscworZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRf bm9kZV9kaWN0CiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJh c2VUZXN0R2VuZXJhdG9yCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91 dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2 ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAogICAgIGRh dGFiYXNlX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGVzdHMgaW1wb3J0IFwK ICAgICB1dGlscyBhcyBzY2hlbWFfdXRpbHMKLWZyb20gLiBpbXBvcnQgdXRp bHMgYXMgY29sbGF0aW9uX3V0aWxzCiAKIAogY2xhc3MgQ29sbGF0aW9uQWRk VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICIiIiBUaGlzIGNs YXNzIHdpbGwgYWRkIG5ldyBjb2xsYXRpb24gdW5kZXIgc2NoZW1hIG5vZGUu ICIiIgotCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIEZldGNoaW5n IGRlZmF1bHQgVVJMIGZvciBjb2xsYXRpb24gbm9kZS4KICAgICAgICAgKCdE ZWZhdWx0IE5vZGUgVVJMJywgZGljdCh1cmw9Jy9icm93c2VyL2NvbGxhdGlv bi9vYmovJykpCiAgICAgXQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm IHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMg ZnVuY3Rpb24gcGVyZm9ybSB0aGUgdGhyZWUgdGFza3MKLSAgICAgICAgIDEu IEFkZCB0aGUgdGVzdCBzZXJ2ZXIKLSAgICAgICAgIDIuIENvbm5lY3QgdG8g c2VydmVyCi0gICAgICAgICAzLiBBZGQgdGhlIGRhdGFiYXNlcwotICAgICAg ICAgNC4gQWRkIHRoZSBzY2hlbWFzCi0KLSAgICAgICAgOnJldHVybjogTm9u ZQotICAgICAgICAiIiIKLQotICAgICAgICAjIEZpcnN0bHksIGFkZCB0aGUg c2VydmVyCi0gICAgICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKGNscy50 ZXN0ZXIpCi0gICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAg Y2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3Vw LCBjbHMuc2VydmVyX2lkcyA9IFwKLSAgICAgICAgICAgIHNlcnZlcl91dGls cy5jb25uZWN0X3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICBpZiBsZW4o Y2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAgICAgICAg ICAgcmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVjdGVkIHRv IGFkZCB0aGUgZGF0YWJhc2UhISEiKQotICAgICAgICAjIEFkZCBkYXRhYmFz ZQotICAgICAgICBkYXRhYmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRl c3RlciwgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCi0g ICAgICAgICMgQWRkIHNjaGVtYXMKLSAgICAgICAgc2NoZW1hX3V0aWxzLmFk ZF9zY2hlbWFzKGNscy50ZXN0ZXIpCisgICAgZGVmIHNldFVwKHNlbGYpOgor ICAgICAgICBzZWxmLmRhdGFiYXNlX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0 WyJkYXRhYmFzZSJdWy0xXQorICAgICAgICBzZWxmLmRiX25hbWUgPSBzZWxm LmRhdGFiYXNlX2luZm9bImRiX25hbWUiXQorICAgICAgICAjIENoYW5nZSB0 aGUgZGIgbmFtZSwgc28gdGhhdCBzY2hlbWEgd2lsbCBjcmVhdGUgaW4gbmV3 bHkgY3JlYXRlZCBkYgorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gInNj aGVtYV9nZXRfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo2XQorICAgICAg ICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24oc2VsZi5k Yl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZl clsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LnNlcnZlclsncG9ydCddKQorICAgICAgICBzZWxmLnNjaGVtYV9kZXRhaWxz ID0gc2NoZW1hX3V0aWxzLmNyZWF0ZV9zY2hlbWEoY29ubmVjdGlvbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCiAKICAgICBkZWYgcnVuVGVz dChzZWxmKToKICAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBhZGQg Y29sbGF0aW9uIHVuZGVyIHNjaGVtYSBub2RlLiAiIiIKKyAgICAgICAgc2No ZW1hX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJzY2hlbWEiXVstMV0KKyAg ICAgICAgc2VydmVyX2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCisg ICAgICAgIGRiX2lkID0gc2NoZW1hX2luZm9bImRiX2lkIl0KKyAgICAgICAg ZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxm LCB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkLCBkYl9pZCkK KyAgICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToK KyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5l Y3QgdG8gZGF0YWJhc2UgdG8gYWRkIGNvbGxhdGlvbi4iKQorICAgICAgICBz Y2hlbWFfaWQgPSBzZWxmLnNjaGVtYV9kZXRhaWxzWzBdCisgICAgICAgIHNj aGVtYV9uYW1lID0gc2VsZi5zY2hlbWFfZGV0YWlsc1sxXQorICAgICAgICBz Y2hlbWFfcmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMo c2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRiX25hbWUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzY2hlbWFfbmFtZSkKKyAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25z ZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZp bmQgdGhlIHNjaGVtYSB0byBhZGQgdGhlIGNvbGxhdGlvbi4iKQogCi0gICAg ICAgIGNvbGxhdGlvbl91dGlscy5hZGRfY29sbGF0aW9uKAotICAgICAgICAg ICAgc2VsZi50ZXN0ZXIsIHNlbGYuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2Us IHNlbGYuc2VydmVyX2lkcykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl ZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgICIiIgotICAgICAgICBU aGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIGNvbGxhdGlvbnMsIHNj aGVtYXMsIGRhdGFiYXNlLAotICAgICAgICBzZXJ2ZXIgYW5kIHRoZSAncGFy ZW50X2lkLnBrbCcgZmlsZSB3aGljaCBpcyBjcmVhdGVkIGluIHNldHVwKCkK LSAgICAgICAgZnVuY3Rpb24uCi0KLSAgICAgICAgOnJldHVybjogTm9uZQot ICAgICAgICAiIiIKLQotICAgICAgICBjb2xsYXRpb25fdXRpbHMuZGVsZXRl X2NvbGxhdGlvbihjbHMudGVzdGVyKQotICAgICAgICBzY2hlbWFfdXRpbHMu ZGVsZXRlX3NjaGVtYShjbHMudGVzdGVyKQotICAgICAgICBkYXRhYmFzZV91 dGlscy5kZWxldGVfZGF0YWJhc2UoY2xzLnRlc3RlcikKLSAgICAgICAgc2Vy dmVyX3V0aWxzLmRlbGV0ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAg dXRpbHMuZGVsZXRlX3BhcmVudF9pZF9maWxlKCkKKyAgICAgICAgZGF0YSA9 IHsKKyAgICAgICAgICAgICJjb3B5X2NvbGxhdGlvbiI6ICJwZ19jYXRhbG9n LlwiUE9TSVhcIiIsCisgICAgICAgICAgICAibmFtZSI6ICJjb2xsYXRpb25f YWRkXyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0sCisgICAgICAgICAg ICAib3duZXIiOiBzZWxmLnNlcnZlclsidXNlcm5hbWUiXSwKKyAgICAgICAg ICAgICJzY2hlbWEiOiBzY2hlbWFfbmFtZQorICAgICAgICB9CisgICAgICAg IHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdChzZWxmLnVybCArIHN0cih1 dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsgc3Ry KAorICAgICAgICAgICAgZGJfaWQpICsgJy8nICsgc3RyKHNjaGVtYV9pZCkg KyAnLycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhPWpzb24uZHVtcHMoZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAy MDApCisgICAgICAgICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKKyAgICAg ICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBz ZXJ2ZXJfaWQsIGRiX2lkKQogCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgor ICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9jb2xs YXRpb25zL3Rlc3RzL3Rlc3RfY29sbGF0aW9uX2RlbGV0ZS5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2NvbGxhdGlvbnMvdGVzdHMvdGVzdF9jb2xsYXRpb25fZGVs ZXRlLnB5CmluZGV4IDlkMjY1ODAuLmY2MWY0YjUgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvdGVzdHMvdGVzdF9jb2xsYXRpb25f ZGVsZXRlLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvdGVz dHMvdGVzdF9jb2xsYXRpb25fZGVsZXRlLnB5CkBAIC02LDExICs2LDExIEBA CiAjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQogIwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQor aW1wb3J0IHV1aWQKIAogZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0 aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9u b2RlX2RpY3QKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFz ZVRlc3RHZW5lcmF0b3IKLWZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9n cm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0 aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZl cnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCiAgICAgZGF0 YWJhc2VfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91 cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50ZXN0cyBpbXBvcnQgXApA QCAtMjAsNTggKzIwLDQ3IEBAIGZyb20gLiBpbXBvcnQgdXRpbHMgYXMgY29s bGF0aW9uX3V0aWxzCiAKIGNsYXNzIENvbGxhdGlvbkRlbGV0ZVRlc3RDYXNl KEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAiIiIgVGhpcyBjbGFzcyB3aWxs IGRlbGV0ZSBhZGRlZCBjb2xsYXRpb24gdW5kZXIgc2NoZW1hIG5vZGUuICIi IgotCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIEZldGNoaW5nIGRl ZmF1bHQgVVJMIGZvciBjb2xsYXRpb24gbm9kZS4KICAgICAgICAgKCdGZXRj aCBjb2xsYXRpb24gTm9kZSBVUkwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvY29s bGF0aW9uL29iai8nKSkKICAgICBdCiAKLSAgICBAY2xhc3NtZXRob2QKLSAg ICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAiIiIKLSAgICAgICAg VGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0aHJlZSB0YXNrcwotICAgICAg ICAgMS4gQWRkIHRoZSB0ZXN0IHNlcnZlcgotICAgICAgICAgMi4gQ29ubmVj dCB0byBzZXJ2ZXIKLSAgICAgICAgIDMuIEFkZCB0aGUgZGF0YWJhc2VzCi0g ICAgICAgICA0LiBBZGQgdGhlIHNjaGVtYXMKLSAgICAgICAgIDUuIEFkZCB0 aGUgY29sbGF0aW9ucwotCi0gICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAg ICAgIiIiCi0KLSAgICAgICAgIyBGaXJzdGx5LCBhZGQgdGhlIHNlcnZlcgot ICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQot ICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVyCi0gICAgICAgIGNscy5zZXJ2 ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZlcl9ncm91cCwgY2xzLnNl cnZlcl9pZHMgPSBcCi0gICAgICAgICAgICBzZXJ2ZXJfdXRpbHMuY29ubmVj dF9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgaWYgbGVuKGNscy5zZXJ2 ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKLSAgICAgICAgICAgIHJhaXNl IEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0byBhZGQgdGhl IGRhdGFiYXNlISEhIikKLSAgICAgICAgIyBBZGQgZGF0YWJhc2UKLSAgICAg ICAgZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNs cy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfaWRzKQotICAgICAgICAj IEFkZCBzY2hlbWFzCi0gICAgICAgIHNjaGVtYV91dGlscy5hZGRfc2NoZW1h cyhjbHMudGVzdGVyKQotICAgICAgICAjIEFkZCBjb2xsYXRpb25zCi0gICAg ICAgIGNvbGxhdGlvbl91dGlscy5hZGRfY29sbGF0aW9uKGNscy50ZXN0ZXIs IGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCisgICAg ZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNjaGVtYV9pbmZvID0g cGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCisgICAgICAgIHNlbGYu c2NoZW1hX25hbWUgPSBzZWxmLnNjaGVtYV9pbmZvWyJzY2hlbWFfbmFtZSJd CisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbImRh dGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICAgICAgY29sbF9uYW1lID0g ImNvbGxhdGlvbl9nZXRfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo2XQor ICAgICAgICBzZWxmLmNvbGxhdGlvbiA9IGNvbGxhdGlvbl91dGlscy5jcmVh dGVfY29sbGF0aW9uKHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c2NoZW1hX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbF9uYW1lLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuZGJfbmFtZSkKIAogICAgIGRlZiBydW5UZXN0KHNlbGYp OgogICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGRlbGV0ZSBjb2xs YXRpb24gdW5kZXIgc2NoZW1hIG5vZGUuICIiIgorICAgICAgICBzZXJ2ZXJf aWQgPSBzZWxmLnNjaGVtYV9pbmZvWyJzZXJ2ZXJfaWQiXQorICAgICAgICBk Yl9pZCA9IHNlbGYuc2NoZW1hX2luZm9bImRiX2lkIl0KKyAgICAgICAgZGJf Y29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGJfaWQpCisgICAgICAgIGlmIG5vdCBkYl9jb25bJ2RhdGEnXVsiY29ubmVj dGVkIl06CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5v dCBjb25uZWN0IHRvIGRhdGFiYXNlLiIpCiAKLSAgICAgICAgY29sbGF0aW9u X3V0aWxzLmRlbGV0ZV9jb2xsYXRpb24oc2VsZi50ZXN0ZXIpCi0KLSAgICBA Y2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAg ICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxldGVzIHRoZSBh ZGRlZCBzY2hlbWFzLCBkYXRhYmFzZSwKLSAgICAgICAgc2VydmVyIGFuZCB0 aGUgJ3BhcmVudF9pZC5wa2wnIGZpbGUgd2hpY2ggaXMgY3JlYXRlZCBpbiBz ZXR1cCgpCi0gICAgICAgIGZ1bmN0aW9uLgotCi0gICAgICAgIDpyZXR1cm46 IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2NoZW1hX3V0aWxzLmRl bGV0ZV9zY2hlbWEoY2xzLnRlc3RlcikKLSAgICAgICAgZGF0YWJhc2VfdXRp bHMuZGVsZXRlX2RhdGFiYXNlKGNscy50ZXN0ZXIpCi0gICAgICAgIHNlcnZl cl91dGlscy5kZWxldGVfc2VydmVyKGNscy50ZXN0ZXIpCi0gICAgICAgIHV0 aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCisgICAgICAgIHNjaGVtYV9y ZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNl cnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c2NoZW1hX25hbWUpCisgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6 CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5k IHRoZSBzY2hlbWEuIikKKyAgICAgICAgY29sbGF0aW9uX2lkID0gc2VsZi5j b2xsYXRpb25bMF0KKyAgICAgICAgc2NoZW1hX2lkID0gc2VsZi5zY2hlbWFf aW5mb1sic2NoZW1hX2lkIl0KKyAgICAgICAgZ2V0X3Jlc3BvbnNlID0gc2Vs Zi50ZXN0ZXIuZGVsZXRlKAorICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIo dXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArIHN0cigKKyAgICAgICAgICAg ICAgICBzZXJ2ZXJfaWQpICsgJy8nICsKKyAgICAgICAgICAgIHN0cihkYl9p ZCkgKyAnLycgKyBzdHIoc2NoZW1hX2lkKSArICcvJyArIHN0cihjb2xsYXRp b25faWQpLAorICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24n KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhnZXRfcmVzcG9uc2Uuc3Rh dHVzX2NvZGUsIDIwMCkKKyAgICAgICAgIyBEaXNjb25uZWN0IGRhdGFiYXNl IHRvIGRlbGV0ZSBpdAorICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25u ZWN0X2RhdGFiYXNlKHNlbGYsIHNlcnZlcl9pZCwgZGJfaWQpCiAKKyAgICBk ZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvdGVzdHMvdGVzdF9jb2xsYXRp b25fZ2V0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvY29sbGF0aW9ucy90ZXN0cy90 ZXN0X2NvbGxhdGlvbl9nZXQucHkKaW5kZXggZDAzNGFmZS4uZmNkNTlkZCAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvY29sbGF0aW9ucy90ZXN0cy90 ZXN0X2NvbGxhdGlvbl9nZXQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvY29s bGF0aW9ucy90ZXN0cy90ZXN0X2NvbGxhdGlvbl9nZXQucHkKQEAgLTYsMTIg KzYsMTEgQEAKICMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAjCiAjICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi1pbXBvcnQganNvbgoraW1wb3J0IHV1aWQKIAogZnJvbSByZWdy ZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jl c3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKIGZyb20gcGdhZG1pbi51 dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKLWZyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBv cnQgdXRpbHMgYXMgc2VydmVyX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9y dCB1dGlscyBhcyBcCiAgICAgZGF0YWJhc2VfdXRpbHMKIGZyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2No ZW1hcy50ZXN0cyBpbXBvcnQgXApAQCAtMjEsODEgKzIwLDQ3IEBAIGZyb20g LiBpbXBvcnQgdXRpbHMgYXMgY29sbGF0aW9uX3V0aWxzCiAKIGNsYXNzIENv bGxhdGlvbkdldFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAi IiIgVGhpcyBjbGFzcyB3aWxsIGZldGNoIG5ldyBjb2xsYXRpb24gdW5kZXIg c2NoZW1hIG5vZGUuICIiIgotCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAg ICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciBjb2xsYXRpb24gbm9kZS4K ICAgICAgICAgKCdGZXRjaCBjb2xsYXRpb24gTm9kZSBVUkwnLCBkaWN0KHVy bD0nL2Jyb3dzZXIvY29sbGF0aW9uL29iai8nKSkKICAgICBdCiAKLSAgICBA Y2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAg ICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0aHJl ZSB0YXNrcwotICAgICAgICAgMS4gQWRkIHRoZSB0ZXN0IHNlcnZlcgotICAg ICAgICAgMi4gQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgIDMuIEFkZCB0 aGUgZGF0YWJhc2VzCi0gICAgICAgICA0LiBBZGQgdGhlIHNjaGVtYXMKLSAg ICAgICAgIDUuIEFkZCB0aGUgY29sbGF0aW9ucwotCi0gICAgICAgIDpyZXR1 cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBGaXJzdGx5LCBh ZGQgdGhlIHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZl cihjbHMudGVzdGVyKQotICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVyCi0g ICAgICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZl cl9ncm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0gICAgICAgICAgICBzZXJ2 ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAg aWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKLSAg ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5l Y3RlZCB0byBhZGQgdGhlIGRhdGFiYXNlISEhIikKLSAgICAgICAgIyBBZGQg ZGF0YWJhc2UKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFiYXNl KGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJf aWRzKQotICAgICAgICAjIEFkZCBzY2hlbWFzCi0gICAgICAgIHNjaGVtYV91 dGlscy5hZGRfc2NoZW1hcyhjbHMudGVzdGVyKQotICAgICAgICAjIEFkZCBj b2xsYXRpb25zCi0gICAgICAgIGNvbGxhdGlvbl91dGlscy5hZGRfY29sbGF0 aW9uKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNl cnZlcl9pZHMpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxm LnNjaGVtYV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFd CisgICAgICAgIHNlbGYuc2NoZW1hX25hbWUgPSBzZWxmLnNjaGVtYV9pbmZv WyJzY2hlbWFfbmFtZSJdCisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVu dF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICAg ICAgY29sbF9uYW1lID0gImNvbGxhdGlvbl9nZXRfJXMiICUgc3RyKHV1aWQu dXVpZDQoKSlbMTo2XQorICAgICAgICBzZWxmLmNvbGxhdGlvbiA9IGNvbGxh dGlvbl91dGlscy5jcmVhdGVfY29sbGF0aW9uKHNlbGYuc2VydmVyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29s bF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSkKIAogICAgIGRl ZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3 aWxsIGZldGNoIGNvbGxhdGlvbiB1bmRlciBzY2hlbWEgbm9kZS4gIiIiCisg ICAgICAgIHNlcnZlcl9pZCA9IHNlbGYuc2NoZW1hX2luZm9bInNlcnZlcl9p ZCJdCisgICAgICAgIGRiX2lkID0gc2VsZi5zY2hlbWFfaW5mb1siZGJfaWQi XQorICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2Rh dGFiYXNlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl cnZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2Nvblsn ZGF0YSddWyJjb25uZWN0ZWQiXToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UuIikKIAotICAg ICAgICBhbGxfaWQgPSB1dGlscy5nZXRfaWRzKCkKLSAgICAgICAgc2VydmVy X2lkcyA9IGFsbF9pZFsic2lkIl0KLSAgICAgICAgZGJfaWRzX2RpY3QgPSBh bGxfaWRbImRpZCJdWzBdCi0gICAgICAgIHNjaGVtYV9pZHNfZGljdCA9IGFs bF9pZFsic2NpZCJdWzBdCi0gICAgICAgIGNvbGxhdGlvbl9pZHNfZGljdCA9 IGFsbF9pZFsiY29pZCJdWzBdCi0KLSAgICAgICAgZm9yIHNlcnZlcl9pZCBp biBzZXJ2ZXJfaWRzOgotICAgICAgICAgICAgZGJfaWQgPSBkYl9pZHNfZGlj dFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgICAgIGRiX2NvbiA9IGRhdGFi YXNlX3V0aWxzLnZlcmlmeV9kYXRhYmFzZShzZWxmLnRlc3RlciwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkLCBkYl9p ZCkKLSAgICAgICAgICAgIGlmIGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQi XToKLSAgICAgICAgICAgICAgICBzY2hlbWFfaW5mbyA9IHNjaGVtYV9pZHNf ZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgICAgICAgICBzY2hlbWFf cmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMoCi0gICAg ICAgICAgICAgICAgICAgIHNlbGYudGVzdGVyLCBzZXJ2ZXJfaWQsIGRiX2lk LCBzY2hlbWFfaW5mb1swXSkKLSAgICAgICAgICAgICAgICBzY2hlbWFfcmVz cG9uc2UgPSBqc29uLmxvYWRzKAotICAgICAgICAgICAgICAgICAgICBzY2hl bWFfcmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCi0gICAgICAgICAg ICAgICAgaWYgbGVuKHNjaGVtYV9yZXNwb25zZSkgIT0gMDoKLSAgICAgICAg ICAgICAgICAgICAgY29sbGF0aW9uX2lkID0gY29sbGF0aW9uX2lkc19kaWN0 W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAgICAgICAgICAgICBnZXRfcmVz cG9uc2UgPSBjb2xsYXRpb25fdXRpbHMudmVyaWZ5X2NvbGxhdGlvbigKLSAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdGVyLCBzZXJ2ZXJfaWQs IGRiX2lkLCBzY2hlbWFfaW5mb1swXSwKLSAgICAgICAgICAgICAgICAgICAg ICAgIGNvbGxhdGlvbl9pZCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5h c3NlcnRFcXVhbHMoZ2V0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0K LSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMp OgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxldGVz IHRoZSBhZGRlZCBjb2xsYXRpb25zLCBzY2hlbWFzLCBkYXRhYmFzZSwKLSAg ICAgICAgc2VydmVyIGFuZCB0aGUgJ3BhcmVudF9pZC5wa2wnIGZpbGUgd2hp Y2ggaXMgY3JlYXRlZCBpbiBzZXR1cCgpCi0gICAgICAgIGZ1bmN0aW9uLgot Ci0gICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAg ICAgY29sbGF0aW9uX3V0aWxzLmRlbGV0ZV9jb2xsYXRpb24oY2xzLnRlc3Rl cikKLSAgICAgICAgc2NoZW1hX3V0aWxzLmRlbGV0ZV9zY2hlbWEoY2xzLnRl c3RlcikKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGVsZXRlX2RhdGFiYXNl KGNscy50ZXN0ZXIpCi0gICAgICAgIHNlcnZlcl91dGlscy5kZWxldGVfc2Vy dmVyKGNscy50ZXN0ZXIpCi0gICAgICAgIHV0aWxzLmRlbGV0ZV9wYXJlbnRf aWRfZmlsZSgpCisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91 dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCisgICAg ICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlz ZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEuIikKKyAg ICAgICAgY29sbGF0aW9uX2lkID0gc2VsZi5jb2xsYXRpb25bMF0KKyAgICAg ICAgc2NoZW1hX2lkID0gc2VsZi5zY2hlbWFfaW5mb1sic2NoZW1hX2lkIl0K KyAgICAgICAgZ2V0X3Jlc3BvbnNlID0gc2VsZi50ZXN0ZXIuZ2V0KAorICAg ICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSAr ICcvJyArIHN0cigKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQpICsgJy8n ICsKKyAgICAgICAgICAgIHN0cihkYl9pZCkgKyAnLycgKyBzdHIoc2NoZW1h X2lkKSArICcvJyArIHN0cihjb2xsYXRpb25faWQpLAorICAgICAgICAgICAg Y29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICBzZWxmLmFzc2Vy dEVxdWFscyhnZXRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAg ICAgIyBEaXNjb25uZWN0IGRhdGFiYXNlIHRvIGRlbGV0ZSBpdAorICAgICAg ICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNl cnZlcl9pZCwgZGJfaWQpCiAKKyAgICBkZWYgdGVhckRvd24oc2VsZik6Cisg ICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2NvbGxh dGlvbnMvdGVzdHMvdGVzdF9jb2xsYXRpb25fcHV0LnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvY29sbGF0aW9ucy90ZXN0cy90ZXN0X2NvbGxhdGlvbl9wdXQucHkK aW5kZXggZmNhMDA0Zi4uNWNjNTk5YSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvY29sbGF0aW9ucy90ZXN0cy90ZXN0X2NvbGxhdGlvbl9wdXQucHkK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvY29sbGF0aW9ucy90ZXN0cy90ZXN0X2Nv bGxhdGlvbl9wdXQucHkKQEAgLTYsMTMgKzYsMTIgQEAKICMgVGhpcyBzb2Z0 d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCitpbXBvcnQgdXVpZAog aW1wb3J0IGpzb24KIAogZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0 aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9u b2RlX2RpY3QKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFz ZVRlc3RHZW5lcmF0b3IKLWZyb20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGlt cG9ydCBhZHZhbmNlZF9jb25maWdfZGF0YQotZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBh cyBzZXJ2ZXJfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9n cm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFz IFwKICAgICBkYXRhYmFzZV91dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIu c2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3Rz IGltcG9ydCBcCkBAIC0yMiwxMDQgKzIxLDYxIEBAIGZyb20gLiBpbXBvcnQg dXRpbHMgYXMgY29sbGF0aW9uX3V0aWxzCiAKIGNsYXNzIENvbGxhdGlvblB1 dFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAiIiIgVGhpcyBj bGFzcyB3aWxsIHVwZGF0ZSBhZGRlZCBjb2xsYXRpb24gdW5kZXIgc2NoZW1h IG5vZGUuICIiIgotCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIEZl dGNoaW5nIGRlZmF1bHQgVVJMIGZvciBjb2xsYXRpb24gbm9kZS4KICAgICAg ICAgKCdGZXRjaCBjb2xsYXRpb24gTm9kZSBVUkwnLCBkaWN0KHVybD0nL2Jy b3dzZXIvY29sbGF0aW9uL29iai8nKSkKICAgICBdCiAKLSAgICBAY2xhc3Nt ZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAiIiIK LSAgICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0aHJlZSB0YXNr cwotICAgICAgICAgMS4gQWRkIHRoZSB0ZXN0IHNlcnZlcgotICAgICAgICAg Mi4gQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgIDMuIEFkZCB0aGUgZGF0 YWJhc2VzCi0gICAgICAgICA0LiBBZGQgdGhlIHNjaGVtYXMKLSAgICAgICAg IDUuIEFkZCB0aGUgY29sbGF0aW9ucwotCi0gICAgICAgIDpyZXR1cm46IE5v bmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBGaXJzdGx5LCBhZGQgdGhl IHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMu dGVzdGVyKQotICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVyCi0gICAgICAg IGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZlcl9ncm91 cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0gICAgICAgICAgICBzZXJ2ZXJfdXRp bHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgaWYgbGVu KGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKLSAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0 byBhZGQgdGhlIGRhdGFiYXNlISEhIikKLSAgICAgICAgIyBBZGQgZGF0YWJh c2UKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFiYXNlKGNscy50 ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfaWRzKQot ICAgICAgICAjIEFkZCBzY2hlbWFzCi0gICAgICAgIHNjaGVtYV91dGlscy5h ZGRfc2NoZW1hcyhjbHMudGVzdGVyKQotICAgICAgICAjIEFkZCBjb2xsYXRp b25zCi0gICAgICAgIGNvbGxhdGlvbl91dGlscy5hZGRfY29sbGF0aW9uKGNs cy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9p ZHMpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNjaGVt YV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCisgICAg ICAgIHNlbGYuc2NoZW1hX25hbWUgPSBzZWxmLnNjaGVtYV9pbmZvWyJzY2hl bWFfbmFtZSJdCisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2Rl X2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICAgICAgY29s bF9uYW1lID0gImNvbGxhdGlvbl9nZXRfJXMiICUgc3RyKHV1aWQudXVpZDQo KSlbMTo2XQorICAgICAgICBzZWxmLmNvbGxhdGlvbiA9IGNvbGxhdGlvbl91 dGlscy5jcmVhdGVfY29sbGF0aW9uKHNlbGYuc2VydmVyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuc2NoZW1hX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbF9uYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSkKIAogICAgIGRlZiBydW5U ZXN0KHNlbGYpOgogICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIHVw ZGF0ZSBjb2xsYXRpb24gdW5kZXIgc2NoZW1hIG5vZGUuICIiIgotCi0gICAg ICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQotICAgICAgICBzZXJ2ZXJf aWRzID0gYWxsX2lkWyJzaWQiXQotICAgICAgICBkYl9pZHNfZGljdCA9IGFs bF9pZFsiZGlkIl1bMF0KLSAgICAgICAgc2NoZW1hX2lkc19kaWN0ID0gYWxs X2lkWyJzY2lkIl1bMF0KLSAgICAgICAgY29sbGF0aW9uX2lkc19kaWN0ID0g YWxsX2lkWyJjb2lkIl1bMF0KLQotICAgICAgICBmb3Igc2VydmVyX2lkIGlu IHNlcnZlcl9pZHM6Ci0gICAgICAgICAgICBkYl9pZCA9IGRiX2lkc19kaWN0 W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAgICAgZGJfY29uID0gZGF0YWJh c2VfdXRpbHMudmVyaWZ5X2RhdGFiYXNlKHNlbGYudGVzdGVyLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRiX2lk KQotICAgICAgICAgICAgaWYgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJd OgotICAgICAgICAgICAgICAgIHNjaGVtYV9pbmZvID0gc2NoZW1hX2lkc19k aWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAgICAgICAgIHNjaGVtYV9y ZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnRl c3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hX2luZm9b MF0pCi0gICAgICAgICAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0ganNvbi5s b2FkcygKLSAgICAgICAgICAgICAgICAgICAgc2NoZW1hX3Jlc3BvbnNlLmRh dGEuZGVjb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgICAgIGlmIGxlbihz Y2hlbWFfcmVzcG9uc2UpICE9IDA6Ci0gICAgICAgICAgICAgICAgICAgIGNv bGxhdGlvbl9pZCA9IGNvbGxhdGlvbl9pZHNfZGljdFtpbnQoc2VydmVyX2lk KV0KLSAgICAgICAgICAgICAgICAgICAgZ2V0X3Jlc3BvbnNlID0gY29sbGF0 aW9uX3V0aWxzLnZlcmlmeV9jb2xsYXRpb24oCi0gICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLnRlc3Rlciwgc2VydmVyX2lkLCBkYl9pZCwgc2NoZW1h X2luZm9bMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXRpb25f aWQpCi0KLSAgICAgICAgICAgICAgICAgICAgZ2V0X3Jlc3BvbnNlX2RhdGEg PSBqc29uLmxvYWRzKAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3Jl c3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgICAg ICAgICBpZiBsZW4oZ2V0X3Jlc3BvbnNlX2RhdGEpID09IDA6Ci0gICAgICAg ICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5vIGNvbGxhdGlv biBub2RlIHRvIHVwZGF0ZS4iKQotCi0gICAgICAgICAgICAgICAgICAgIGRh dGEgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VkX2NvbmZp Z19kYXRhWydjb2xsYXRpb25fdXBkYXRlX2RhdGEnXQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFsnY29tbWVudCddLAotICAgICAgICAgICAgICAg ICAgICAgICAgImlkIjogY29sbGF0aW9uX2lkLAotICAgICAgICAgICAgICAg ICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcHV0X3Jlc3BvbnNlID0g c2VsZi50ZXN0ZXIucHV0KAotICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCi0gICAg ICAgICAgICAgICAgICAgICAgICBzdHIoc2VydmVyX2lkKSArICcvJyArCi0g ICAgICAgICAgICAgICAgICAgICAgICBzdHIoZGJfaWQpICsgJy8nICsKLSAg ICAgICAgICAgICAgICAgICAgICAgIHN0cihzY2hlbWFfaW5mb1swXSkgKyAn LycgKwotICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGNvbGxhdGlvbl9p ZCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMo ZGF0YSksCi0gICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfcmVkaXJl Y3RzPVRydWUpCi0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRF cXVhbHMocHV0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0KLSAgICBA Y2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAg ICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxldGVzIHRoZSBh ZGRlZCBjb2xsYXRpb25zLCBzY2hlbWFzLCBkYXRhYmFzZSwKLSAgICAgICAg c2VydmVyIGFuZCB0aGUgJ3BhcmVudF9pZC5wa2wnIGZpbGUgd2hpY2ggaXMg Y3JlYXRlZCBpbiBzZXR1cCgpCi0gICAgICAgIGZ1bmN0aW9uLgotCi0gICAg ICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgY29s bGF0aW9uX3V0aWxzLmRlbGV0ZV9jb2xsYXRpb24oY2xzLnRlc3RlcikKLSAg ICAgICAgc2NoZW1hX3V0aWxzLmRlbGV0ZV9zY2hlbWEoY2xzLnRlc3RlcikK LSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGVsZXRlX2RhdGFiYXNlKGNscy50 ZXN0ZXIpCi0gICAgICAgIHNlcnZlcl91dGlscy5kZWxldGVfc2VydmVyKGNs cy50ZXN0ZXIpCi0gICAgICAgIHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmls ZSgpCisgICAgICAgIHNlcnZlcl9pZCA9IHNlbGYuc2NoZW1hX2luZm9bInNl cnZlcl9pZCJdCisgICAgICAgIGRiX2lkID0gc2VsZi5zY2hlbWFfaW5mb1si ZGJfaWQiXQorICAgICAgICAjIFZlcmlmeSBkYXRhYmFzZQorICAgICAgICBk Yl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25u ZWN0ZWQiXToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQg bm90IGNvbm5lY3QgdG8gZGF0YWJhc2UuIikKKyAgICAgICAgIyBWZXJpZnkg c2NoZW1hCisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91dGls cy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCisgICAgICAg IGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBF eGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEuIikKKyAgICAg ICAgIyBWZXJpZnkgY29sbGF0aW9uCisgICAgICAgIGNvbGxfbmFtZSA9IHNl bGYuY29sbGF0aW9uWzFdCisgICAgICAgIGNvbGxhdGlvbl9yZXNwb25zZSA9 IGNvbGxhdGlvbl91dGlscy52ZXJpZnlfY29sbGF0aW9uKHNlbGYuc2VydmVy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLmRiX25hbWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbGxfbmFtZSkKKyAgICAgICAgaWYgbm90IGNvbGxhdGlvbl9y ZXNwb25zZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQg bm90IGZpbmQgdGhlIGNvbGxhdGlvbi4iKQorCisgICAgICAgIGNvbGxhdGlv bl9pZCA9IHNlbGYuY29sbGF0aW9uWzBdCisgICAgICAgIHNjaGVtYV9pZCA9 IHNlbGYuc2NoZW1hX2luZm9bInNjaGVtYV9pZCJdCisgICAgICAgIGRhdGEg PSB7CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBjb2xs YXRpb24gdXBkYXRlIGNvbW1lbnQiLAorICAgICAgICAgICAgImlkIjogY29s bGF0aW9uX2lkCisgICAgICAgIH0KKyAgICAgICAgcHV0X3Jlc3BvbnNlID0g c2VsZi50ZXN0ZXIucHV0KHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9H Uk9VUCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJy8nICsgc3RyKHNlcnZlcl9pZCkgKyAnLycgKyBzdHIoZGJfaWQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICcvJyAr IHN0cihzY2hlbWFfaWQpICsgJy8nICsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cihjb2xsYXRpb25faWQpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1 bXBzKGRhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQorICAgICAgICBzZWxmLmFz c2VydEVxdWFscyhwdXRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAg ICAgICAgIyBEaXNjb25uZWN0IGRhdGFiYXNlIHRvIGRlbGV0ZSBpdAorICAg ICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYs IHNlcnZlcl9pZCwgZGJfaWQpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6 CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Nv bGxhdGlvbnMvdGVzdHMvdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9jb2xs YXRpb25zL3Rlc3RzL3V0aWxzLnB5CmluZGV4IGZlMDY5NmEuLjM5MTkyODIg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvdGVzdHMv dXRpbHMucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvY29sbGF0aW9ucy90ZXN0 cy91dGlscy5weQpAQCAtNiwxNDggKzYsNTIgQEAKICMgI1RoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQog IwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworZnJvbSBfX2Z1 dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgoraW1wb3J0IHRyYWNlYmFj aworaW1wb3J0IHN5cwogCi1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBv cnQgcGlja2xlCi0KLWZyb20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9y dCBwaWNrbGVfcGF0aCwgYWR2YW5jZWRfY29uZmlnX2RhdGEKLWZyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu dGVzdHMgaW1wb3J0IFwKLSAgICB1dGlscyBhcyBkYXRhYmFzZV91dGlscwot ZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRh dGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCi0gICAgdXRpbHMgYXMg c2NoZW1hX3V0aWxzCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRp bHMgYXMgdXRpbHMKIAotQ09MTEFUSU9OX1VSTCA9ICcvYnJvd3Nlci9jb2xs YXRpb24vb2JqLycKLQotCi1kZWYgZ2V0X2NvbGxhdGlvbl9jb25maWdfZGF0 YShzZXJ2ZXJfY29ubmVjdF9kYXRhKToKLSAgICAiIiJUaGlzIGZ1bmN0aW9u IHJldHVybnMgdGhlIGNvbGxhdGlvbiBjb25maWcgZGF0YSIiIgotCi0gICAg YWR2X2NvbmZpZ19kYXRhID0gTm9uZQotICAgIGRhdGEgPSBOb25lCi0gICAg ZGJfdXNlciA9IHNlcnZlcl9jb25uZWN0X2RhdGFbJ2RhdGEnXVsndXNlcidd WyduYW1lJ10KLQotICAgICMgR2V0IHRoZSBjb25maWcgZGF0YSBvZiBhcHBy b3ByaWF0ZSBkYiB1c2VyCi0gICAgZm9yIGNvbmZpZ190ZXN0X2RhdGEgaW4g XAotICAgICAgICAgICAgYWR2YW5jZWRfY29uZmlnX2RhdGFbJ2NvbGxhdGlv bl9jcmVkZW50aWFscyddOgotICAgICAgICBpZiBkYl91c2VyID09IGNvbmZp Z190ZXN0X2RhdGFbJ293bmVyJ106Ci0gICAgICAgICAgICBhZHZfY29uZmln X2RhdGEgPSBjb25maWdfdGVzdF9kYXRhCi0KLSAgICBpZiBhZHZfY29uZmln X2RhdGEgaXMgbm90IE5vbmU6Ci0gICAgICAgIGRhdGEgPSB7Ci0gICAgICAg ICAgICAiY29weV9jb2xsYXRpb24iOiBhZHZfY29uZmlnX2RhdGFbJ2NvcHlf Y29sbGF0aW9uJ10sCi0gICAgICAgICAgICAibmFtZSI6IGFkdl9jb25maWdf ZGF0YVsnbmFtZSddLAotICAgICAgICAgICAgIm93bmVyIjogYWR2X2NvbmZp Z19kYXRhWydvd25lciddLAotICAgICAgICAgICAgInNjaGVtYSI6IGFkdl9j b25maWdfZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgfQotICAgIHJldHVybiBk YXRhCiAKLQotZGVmIHdyaXRlX2NvbGxhdGlvbl9pZChyZXNwb25zZV9kYXRh LCBzZXJ2ZXJfaWQpOgotICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gd3Jp dGVzIHRoZSBzZXJ2ZXIgYW5kIGNvbGxhdGlvbiBpZAotCi0gICAgOnBhcmFt IHJlc3BvbnNlX2RhdGE6IGNvbGxhdGlvbiByZXNwb25zZSBkYXRhCi0gICAg OnR5cGUgcmVzcG9uc2VfZGF0YTogZGljdAotICAgIDpwYXJhbSBzZXJ2ZXJf aWQ6IHNlcnZlciBpZAotICAgIDp0eXBlIHNlcnZlcl9pZDogaW50Ci0gICAg OnJldHVybjogTm9uZQotICAgICIiIgotCi0gICAgY29sbGF0aW9uX2lkID0g cmVzcG9uc2VfZGF0YVsnbm9kZSddWydfaWQnXQotICAgIHBpY2tsZV9pZF9k aWN0ID0gdXRpbHMuZ2V0X3BpY2tsZV9pZF9kaWN0KCkKLSAgICBpZiBvcy5w YXRoLmlzZmlsZShwaWNrbGVfcGF0aCk6Ci0gICAgICAgIGV4aXN0aW5nX3Nl cnZlcl9pZCA9IG9wZW4ocGlja2xlX3BhdGgsICdyYicpCi0gICAgICAgIHRv bF9zZXJ2ZXJfaWQgPSBwaWNrbGUubG9hZChleGlzdGluZ19zZXJ2ZXJfaWQp Ci0gICAgICAgIHBpY2tsZV9pZF9kaWN0ID0gdG9sX3NlcnZlcl9pZAotICAg IGlmICdjb2lkJyBpbiBwaWNrbGVfaWRfZGljdDoKLSAgICAgICAgaWYgcGlj a2xlX2lkX2RpY3RbJ2NvaWQnXToKLSAgICAgICAgICAgICMgQWRkIHRoZSBk Yl9pZCBhcyB2YWx1ZSBpbiBkaWN0Ci0gICAgICAgICAgICBwaWNrbGVfaWRf ZGljdFsiY29pZCJdWzBdLnVwZGF0ZSgKLSAgICAgICAgICAgICAgICB7aW50 KHNlcnZlcl9pZCk6IGNvbGxhdGlvbl9pZH0pCi0gICAgICAgIGVsc2U6Ci0g ICAgICAgICAgICAjIENyZWF0ZSBuZXcgZGljdCB3aXRoIHNlcnZlcl9pZCBh bmQgZGJfaWQKLSAgICAgICAgICAgIHBpY2tsZV9pZF9kaWN0WyJjb2lkIl0u YXBwZW5kKAotICAgICAgICAgICAgICAgIHtpbnQoc2VydmVyX2lkKTogY29s bGF0aW9uX2lkfSkKLSAgICBkYl9vdXRwdXQgPSBvcGVuKHBpY2tsZV9wYXRo LCAnd2InKQotICAgIHBpY2tsZS5kdW1wKHBpY2tsZV9pZF9kaWN0LCBkYl9v dXRwdXQpCi0gICAgZGJfb3V0cHV0LmNsb3NlKCkKLQotCi1kZWYgYWRkX2Nv bGxhdGlvbih0ZXN0ZXIsIHNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLCBzZXJ2 ZXJfaWRzKToKK2RlZiBjcmVhdGVfY29sbGF0aW9uKHNlcnZlciwgc2NoZW1h X25hbWUsIGNvbGxfbmFtZSwgZGJfbmFtZSk6CiAgICAgIiIiVGhpcyBmdW5j dGlvbiBhZGQgdGhlIGNvbGxhdGlvbiB0byBzY2hlbWFzIiIiCi0KLSAgICBh bGxfaWQgPSB1dGlscy5nZXRfaWRzKCkKLSAgICBkYl9pZHNfZGljdCA9IGFs bF9pZFsiZGlkIl1bMF0KLSAgICBzY2hlbWFfaWRzX2RpY3QgPSBhbGxfaWRb InNjaWQiXVswXQotCi0gICAgZm9yIHNlcnZlcl9jb25uZWN0X3Jlc3BvbnNl LCBzZXJ2ZXJfaWQgaW4gemlwKHNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXJ2ZXJfaWRzKToKLSAgICAgICAgZGJfaWQgPSBkYl9pZHNfZGlj dFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2Vf dXRpbHMudmVyaWZ5X2RhdGFiYXNlKHRlc3RlciwgdXRpbHMuU0VSVkVSX0dS T1VQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VydmVyX2lkLCBkYl9pZCkKLSAgICAgICAgaWYgZGJfY29u WydkYXRhJ11bImNvbm5lY3RlZCJdOgotICAgICAgICAgICAgc2NoZW1hX2lu Zm8gPSBzY2hlbWFfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAg ICAgICBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXModGVzdGVyLCBzZXJ2 ZXJfaWQsIGRiX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNjaGVtYV9pbmZvWzBdKQotICAgICAgICAgICAgZGF0YSA9 IGdldF9jb2xsYXRpb25fY29uZmlnX2RhdGEoc2VydmVyX2Nvbm5lY3RfcmVz cG9uc2UpCi0gICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNjaGVtYV9p bmZvWzFdCi0gICAgICAgICAgICByZXNwb25zZSA9IHRlc3Rlci5wb3N0KAot ICAgICAgICAgICAgICAgIENPTExBVElPTl9VUkwgKyBzdHIodXRpbHMuU0VS VkVSX0dST1VQKSArICcvJyArIHN0cihzZXJ2ZXJfaWQpCi0gICAgICAgICAg ICAgICAgKyAnLycgKyBzdHIoZGJfaWQpICsgJy8nICsgc3RyKHNjaGVtYV9p bmZvWzBdKSArICcvJywKLSAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVt cHMoZGF0YSksIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKLSAgICAgICAg ICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEu ZGVjb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgd3JpdGVfY29sbGF0aW9u X2lkKHJlc3BvbnNlX2RhdGEsIHNlcnZlcl9pZCkKLQotCi1kZWYgdmVyaWZ5 X2NvbGxhdGlvbih0ZXN0ZXIsIHNlcnZlcl9pZCwgZGJfaWQsIHNjaGVtYV9p ZCwgY29sbGF0aW9uX2lkKToKLSAgICAiIiJUaGlzIGZ1bmN0aW9uIHZlcmlm aWVzIHRoZSBjb2xsYXRpb24gdXNpbmcgR0VUIEFQSSIiIgotCi0gICAgZ2V0 X3Jlc3BvbnNlID0gdGVzdGVyLmdldCgKLSAgICAgICAgQ09MTEFUSU9OX1VS TCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsgc3RyKHNlcnZl cl9pZCkgKyAnLycgKwotICAgICAgICBzdHIoZGJfaWQpICsgJy8nICsgc3Ry KHNjaGVtYV9pZCkgKyAnLycgKyBzdHIoY29sbGF0aW9uX2lkKSwKLSAgICAg ICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQotCi0gICAgcmV0dXJuIGdl dF9yZXNwb25zZQotCi0KLWRlZiBkZWxldGVfY29sbGF0aW9uKHRlc3Rlcik6 Ci0gICAgIiIiVGhpcyBmdW5jdGlvbiBkZWxldGVzIHRoZSBjb2xsYXRpb25z IGZyb20gc2NoZW1hIiIiCi0KLSAgICBhbGxfaWQgPSB1dGlscy5nZXRfaWRz KCkKLSAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAgIGRiX2lk c19kaWN0ID0gYWxsX2lkWyJkaWQiXVswXQotICAgIHNjaGVtYV9pZHNfZGlj dCA9IGFsbF9pZFsic2NpZCJdWzBdCi0gICAgY29sbGF0aW9uX2lkc19kaWN0 ID0gYWxsX2lkWyJjb2lkIl1bMF0KLQotICAgIGZvciBzZXJ2ZXJfaWQgaW4g c2VydmVyX2lkczoKLSAgICAgICAgZGJfaWQgPSBkYl9pZHNfZGljdFtpbnQo c2VydmVyX2lkKV0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMu dmVyaWZ5X2RhdGFiYXNlKHRlc3RlciwgdXRpbHMuU0VSVkVSX0dST1VQLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VydmVyX2lkLCBkYl9pZCkKLSAgICAgICAgaWYgZGJfY29uWydkYXRh J11bImNvbm5lY3RlZCJdOgotICAgICAgICAgICAgc2NoZW1hX2luZm8gPSBz Y2hlbWFfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAgICAgICBz Y2hlbWFfcmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMo dGVzdGVyLCBzZXJ2ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJfaWQsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2NoZW1hX2luZm9bMF0pCi0gICAgICAgICAgICBzY2hlbWFf cmVzcG9uc2UgPSBqc29uLmxvYWRzKHNjaGVtYV9yZXNwb25zZS5kYXRhLmRl Y29kZSgndXRmLTgnKSkKLSAgICAgICAgICAgIGlmIGxlbihzY2hlbWFfcmVz cG9uc2UpICE9IDA6Ci0gICAgICAgICAgICAgICAgY29sbGF0aW9uX2lkID0g Y29sbGF0aW9uX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAg ICAgICAgIGdldF9yZXNwb25zZSA9IHZlcmlmeV9jb2xsYXRpb24oCi0gICAg ICAgICAgICAgICAgICAgIHRlc3Rlciwgc2VydmVyX2lkLCBkYl9pZCwgc2No ZW1hX2luZm9bMF0sIGNvbGxhdGlvbl9pZCkKLQotICAgICAgICAgICAgICAg IGdldF9yZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcygKLSAgICAgICAgICAg ICAgICAgICAgZ2V0X3Jlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQot ICAgICAgICAgICAgICAgIGlmIGxlbihnZXRfcmVzcG9uc2VfZGF0YSkgPT0g MDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBj b2xsYXRpb24gbm9kZSB0byBkZWxldGUuIikKLQotICAgICAgICAgICAgICAg IGRlbF9yZXNwb25zZSA9IHRlc3Rlci5kZWxldGUoCi0gICAgICAgICAgICAg ICAgICAgIENPTExBVElPTl9VUkwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQ KSArICcvJyArCi0gICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQp ICsgJy8nICsgc3RyKGRiX2lkKSArICcvJyArCi0gICAgICAgICAgICAgICAg ICAgIHN0cihzY2hlbWFfaW5mb1swXSkgKyAnLycgKyBzdHIoY29sbGF0aW9u X2lkKSwKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1U cnVlKQotCi0gICAgICAgICAgICAgICAgYXNzZXJ0IGRlbF9yZXNwb25zZS5z dGF0dXNfY29kZSA9PSAyMDAKLSAgICAgICAgICAgICAgICBkZWxfcmVzcG9u c2VfZGF0YSA9IGpzb24ubG9hZHMoCi0gICAgICAgICAgICAgICAgICAgIGRl bF9yZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKLSAgICAgICAgICAg ICAgICBhc3NlcnQgZGVsX3Jlc3BvbnNlX2RhdGFbJ3N1Y2Nlc3MnXSA9PSAx CisgICAgdHJ5OgorICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0X2Ri X2Nvbm5lY3Rpb24oZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsndXNlcm5hbWUnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl cnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnaG9zdCddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy Wydwb3J0J10pCisgICAgICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vy c29yKCkKKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoJ0NSRUFURSBDT0xM QVRJT04gJXMuJXMgRlJPTSBwZ19jYXRhbG9nLiJQT1NJWCInICUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNjaGVtYV9uYW1lLCBjb2xsX25hbWUp KQorICAgICAgICBjb25uZWN0aW9uLmNvbW1pdCgpCisKKyAgICAgICAgIyBH ZXQgJ29pZCcgZnJvbSBuZXdseSBjcmVhdGVkIGRhdGFiYXNlCisgICAgICAg IHBnX2N1cnNvci5leGVjdXRlKCJTRUxFQ1QgY29sbC5vaWQsIGNvbGwuY29s bG5hbWUgRlJPTSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBwZ19j b2xsYXRpb24gY29sbCBXSEVSRSBjb2xsLmNvbGxuYW1lPSclcyciICUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgY29sbF9uYW1lKQorICAgICAgICBj b2xsYXRpb24gPSBwZ19jdXJzb3IuZmV0Y2hvbmUoKQorICAgICAgICBjb25u ZWN0aW9uLmNsb3NlKCkKKyAgICAgICAgcmV0dXJuIGNvbGxhdGlvbgorICAg IGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHRyYWNlYmFjay5wcmludF9l eGMoZmlsZT1zeXMuc3RkZXJyKQorCisKK2RlZiB2ZXJpZnlfY29sbGF0aW9u KHNlcnZlciwgZGJfbmFtZSwgY29sbF9uYW1lKToKKyAgICAiIiJUaGlzIGZ1 bmN0aW9uIHZlcmlmaWVzIHRoZSBjb2xsYXRpb24gaXMgZXhpc3Qgb3Igbm90 IiIiCisgICAgdHJ5OgorICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0 X2RiX2Nvbm5lY3Rpb24oZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsndXNlcm5hbWUnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnaG9zdCddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vy dmVyWydwb3J0J10pCisgICAgICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rpb24u Y3Vyc29yKCkKKyAgICAgICAgIyBHZXQgJ29pZCcgZnJvbSBuZXdseSBjcmVh dGVkIGRhdGFiYXNlCisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKCJTRUxF Q1QgY29sbC5vaWQsIGNvbGwuY29sbG5hbWUgRlJPTSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIiBwZ19jb2xsYXRpb24gY29sbCBXSEVSRSBjb2xs LmNvbGxuYW1lPSclcyciICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg Y29sbF9uYW1lKQorICAgICAgICBjb2xsYXRpb24gPSBwZ19jdXJzb3IuZmV0 Y2hvbmUoKQorICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkKKyAgICAgICAg cmV0dXJuIGNvbGxhdGlvbgorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAg ICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZXN0cy9fX2luaXRf Xy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVzdHMvX19pbml0X18u cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQzNzE1 ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv dGVzdHMvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNSBAQAorIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZnJvbSBwZ2FkbWlu LnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorCisKK2Ns YXNzIERvbWFpblRlc3RHZW5lcmF0b3IoQmFzZVRlc3RHZW5lcmF0b3IpOgor ICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICByZXR1cm4KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVzdHMvdGVzdF9kb21h aW5fYWRkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZXN0cy90ZXN0 X2RvbWFpbl9hZGQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNDQyOGE5MAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvdGVzdHMvdGVzdF9kb21haW5fYWRkLnB5CkBAIC0wLDAg KzEsNzggQEAKKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwg TGljZW5jZQorIworIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9ydCB1 dWlkCitpbXBvcnQganNvbgorCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRl c3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFy ZW50X25vZGVfZGljdAorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9y dCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2Vy dmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRp bHMgYXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJv d3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMu dGVzdHMgaW1wb3J0IFwKKyAgICB1dGlscyBhcyBzY2hlbWFfdXRpbHMKKwor CitjbGFzcyBEb21haW5BZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6 CisgICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCBhZGQgbmV3IGRvbWFpbiB1bmRl ciBzY2hlbWEgbm9kZS4gIiIiCisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAg ICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGRvbWFpbiBub2RlLgor ICAgICAgICAoJ0ZldGNoIGRvbWFpbiBOb2RlIFVSTCcsIGRpY3QodXJsPScv YnJvd3Nlci9kb21haW4vb2JqLycpKQorICAgIF0KKworICAgIGRlZiBzZXRV cChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHJ1blRlc3Qoc2Vs Zik6CisgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWRkIGRvbWFp biB1bmRlciBzY2hlbWEgbm9kZS4gIiIiCisgICAgICAgIGRiX25hbWUgPSBw YXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCisg ICAgICAgIHNjaGVtYV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1h Il1bLTFdCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gc2NoZW1hX2luZm9b InNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYuZGJfaWQgPSBzY2hlbWFfaW5m b1siZGJfaWQiXQorICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5j b25uZWN0X2RhdGFiYXNlKHNlbGYsIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKKyAgICAgICAgaWYgbm90 IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKKyAgICAgICAgICAgIHJh aXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2Ug dG8gYWRkIGNvbGxhdGlvbi4iKQorICAgICAgICBzY2hlbWFfaWQgPSBzY2hl bWFfaW5mb1sic2NoZW1hX2lkIl0KKyAgICAgICAgc2NoZW1hX25hbWUgPSBz Y2hlbWFfaW5mb1sic2NoZW1hX25hbWUiXQorICAgICAgICBzY2hlbWFfcmVz cG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMoc2VsZi5zZXJ2 ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hX25hbWUp CisgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CisgICAgICAgICAg ICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEg dG8gYWRkIHRoZSBjb2xsYXRpb24uIikKKworICAgICAgICBkYXRhID0gewor ICAgICAgICAgICAgImJhc2Vuc3AiOiBzY2hlbWFfbmFtZSwKKyAgICAgICAg ICAgICJiYXNldHlwZSI6ICJjaGFyYWN0ZXIiLAorICAgICAgICAgICAgImNv bGxuYW1lIjogInBnX2NhdGFsb2cuXCJQT1NJWFwiIiwKKyAgICAgICAgICAg ICJjb25zdHJhaW50cyI6IFt7CisgICAgICAgICAgICAgICAgImNvbm5hbWUi OiAibnVtIiwKKyAgICAgICAgICAgICAgICAiY29udmFsaWRhdGVkIjogVHJ1 ZQorICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAiaXNfdGxlbmd0aCI6 IFRydWUsCisgICAgICAgICAgICAibWF4X3ZhbCI6IDIxNDc0ODM2NDcsCisg ICAgICAgICAgICAibWluX3ZhbCI6IDEsCisgICAgICAgICAgICAibmFtZSI6 ICJkb21haW5fYWRkXyVzIiAlIChzdHIodXVpZC51dWlkNCgpKVsxOjZdKSwK KyAgICAgICAgICAgICJvd25lciI6IHNlbGYuc2VydmVyWyJ1c2VybmFtZSJd LAorICAgICAgICAgICAgInNlY2xhYmVscyI6IFtdLAorICAgICAgICAgICAg InR5cGRlZmF1bHQiOiAiMSIsCisgICAgICAgICAgICAidHlwbGVuIjogIjEw IgorICAgICAgICB9CisgICAgICAgICMgQ2FsbCBQT1NUIEFQSSB0byBhZGQg ZG9tYWluCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdChz ZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihzZWxmLnNl cnZlcl9pZCkgKyAnLycgKyBzdHIoCisgICAgICAgICAgICBzZWxmLmRiX2lk KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLycg KyBzdHIoc2NoZW1hX2lkKSArICcvJywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0n aHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9u c2Uuc3RhdHVzX2NvZGUsIDIwMCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxm KToKKyAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQorICAgICAg ICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNl bGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy90ZXN0cy90ZXN0X2RvbWFpbl9kZWxldGUucHkg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3Rlc3RzL3Rlc3RfZG9tYWluX2Rl bGV0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42 MWZmYTdmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZXN0cy90ZXN0X2RvbWFpbl9kZWxldGUucHkKQEAgLTAsMCArMSw2 OSBAQAorIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisjCisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHV1aWQK KworZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxz Citmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zy b20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0 b3IKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVy cy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRh YmFzZV91dGlscworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCisg ICAgdXRpbHMgYXMgc2NoZW1hX3V0aWxzCitmcm9tIC4gaW1wb3J0IHV0aWxz IGFzIGRvbWFpbl91dGlscworCisKK2NsYXNzIERvbWFpbkRlbGV0ZVRlc3RD YXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIgVGhpcyBjbGFzcyB3 aWxsIGRlbGV0ZSBuZXcgZG9tYWluIHVuZGVyIHNjaGVtYSBub2RlLiAiIiIK KyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVs dCBVUkwgZm9yIGRvbWFpbiBub2RlLgorICAgICAgICAoJ0ZldGNoIGRvbWFp biBOb2RlIFVSTCcsIGRpY3QodXJsPScvYnJvd3Nlci9kb21haW4vZGVsZXRl LycpKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg c2VsZi5kYXRhYmFzZV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJh c2UiXVstMV0KKyAgICAgICAgc2VsZi5kYl9uYW1lID0gc2VsZi5kYXRhYmFz ZV9pbmZvWyJkYl9uYW1lIl0KKyAgICAgICAgc2VsZi5zY2hlbWFfaW5mbyA9 IHBhcmVudF9ub2RlX2RpY3RbInNjaGVtYSJdWy0xXQorICAgICAgICBzZWxm LnNjaGVtYV9uYW1lID0gc2VsZi5zY2hlbWFfaW5mb1sic2NoZW1hX25hbWUi XQorICAgICAgICBzZWxmLnNjaGVtYV9pZCA9IHNlbGYuc2NoZW1hX2luZm9b InNjaGVtYV9pZCJdCisgICAgICAgIHNlbGYuZG9tYWluX25hbWUgPSAiZG9t YWluX2RlbGV0ZV8lcyIgJSAoc3RyKHV1aWQudXVpZDQoKSlbMTo2XSkKKyAg ICAgICAgc2VsZi5kb21haW5faW5mbyA9IGRvbWFpbl91dGlscy5jcmVhdGVf ZG9tYWluKHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2No ZW1hX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5kb21haW5fbmFtZSkKKworICAgIGRl ZiBydW5UZXN0KHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3 aWxsIGFkZCBkb21haW4gdW5kZXIgc2NoZW1hIG5vZGUuICIiIgorICAgICAg ICBkYl9pZCA9IHNlbGYuZGF0YWJhc2VfaW5mb1siZGJfaWQiXQorICAgICAg ICBzZXJ2ZXJfaWQgPSBzZWxmLmRhdGFiYXNlX2luZm9bInNlcnZlcl9pZCJd CisgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0 YWJhc2Uoc2VsZiwgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9p ZCwgZGJfaWQpCisgICAgICAgIGlmIG5vdCBkYl9jb25bJ2RhdGEnXVsiY29u bmVjdGVkIl06CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxk IG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlIHRvIGdldCB0aGUgZG9tYWluLiIp CisgICAgICAgIGRiX25hbWUgPSBzZWxmLmRhdGFiYXNlX2luZm9bImRiX25h bWUiXQorICAgICAgICBzY2hlbWFfcmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMu dmVyaWZ5X3NjaGVtYXMoc2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYl9uYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSkKKyAgICAgICAgaWYgbm90 IHNjaGVtYV9yZXNwb25zZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv bigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVtYSB0byBnZXQgdGhlIGRvbWFp bi4iKQorICAgICAgICBkb21haW5faWQgPSBzZWxmLmRvbWFpbl9pbmZvWzBd CisgICAgICAgICMgQ2FsbCBHRVQgQVBJIHRvIHZlcmlmeSB0aGUgZG9tYWlu CisgICAgICAgIGdldF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLmRlbGV0ZSgK KyAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9V UCkgKyAnLycgKworICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAnLycg KworICAgICAgICAgICAgc3RyKGRiX2lkKSArICcvJyArCisgICAgICAgICAg ICBzdHIoc2VsZi5zY2hlbWFfaWQpICsgJy8nICsKKyAgICAgICAgICAgIHN0 cihkb21haW5faWQpLAorICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1s L2pzb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhnZXRfcmVzcG9u c2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgIyBEaXNjb25uZWN0IHRo ZSBkYXRhYmFzZQorICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0 X2RhdGFiYXNlKHNlbGYsIHNlcnZlcl9pZCwgZGJfaWQpCisKKyAgICBkZWYg dGVhckRvd24oc2VsZik6CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVzdHMvdGVzdF9kb21haW5fZ2V0LnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZXN0cy90ZXN0X2RvbWFpbl9n ZXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlh MWYxZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvdGVzdHMvdGVzdF9kb21haW5fZ2V0LnB5CkBAIC0wLDAgKzEsNjkgQEAK KyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor IworIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9ydCB1dWlkCisKK2Zy b20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJv bSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHBn YWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitm cm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0 YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2Vf dXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2Vy dmVycy5kYXRhYmFzZXMuc2NoZW1hcy50ZXN0cyBpbXBvcnQgXAorICAgIHV0 aWxzIGFzIHNjaGVtYV91dGlscworZnJvbSAuIGltcG9ydCB1dGlscyBhcyBk b21haW5fdXRpbHMKKworCitjbGFzcyBEb21haW5HZXRUZXN0Q2FzZShCYXNl VGVzdEdlbmVyYXRvcik6CisgICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCBmZXRj aCBuZXcgY29sbGF0aW9uIHVuZGVyIHNjaGVtYSBub2RlLiAiIiIKKyAgICBz Y2VuYXJpb3MgPSBbCisgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwg Zm9yIGRvbWFpbiBub2RlLgorICAgICAgICAoJ0ZldGNoIGRvbWFpbiBOb2Rl IFVSTCcsIGRpY3QodXJsPScvYnJvd3Nlci9kb21haW4vb2JqLycpKQorICAg IF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5kYXRh YmFzZV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV0K KyAgICAgICAgc2VsZi5kYl9uYW1lID0gc2VsZi5kYXRhYmFzZV9pbmZvWyJk Yl9uYW1lIl0KKyAgICAgICAgc2VsZi5zY2hlbWFfaW5mbyA9IHBhcmVudF9u b2RlX2RpY3RbInNjaGVtYSJdWy0xXQorICAgICAgICBzZWxmLnNjaGVtYV9u YW1lID0gc2VsZi5zY2hlbWFfaW5mb1sic2NoZW1hX25hbWUiXQorICAgICAg ICBzZWxmLnNjaGVtYV9pZCA9IHNlbGYuc2NoZW1hX2luZm9bInNjaGVtYV9p ZCJdCisgICAgICAgIHNlbGYuZG9tYWluX25hbWUgPSAiZG9tYWluX2dldF8l cyIgJSAoc3RyKHV1aWQudXVpZDQoKSlbMTo2XSkKKyAgICAgICAgc2VsZi5k b21haW5faW5mbyA9IGRvbWFpbl91dGlscy5jcmVhdGVfZG9tYWluKHNlbGYu c2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zY2hlbWFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5kb21haW5fbmFtZSkKKworICAgIGRlZiBydW5UZXN0KHNl bGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCBkb21h aW4gdW5kZXIgc2NoZW1hIG5vZGUuICIiIgorICAgICAgICBkYl9pZCA9IHNl bGYuZGF0YWJhc2VfaW5mb1siZGJfaWQiXQorICAgICAgICBzZXJ2ZXJfaWQg PSBzZWxmLmRhdGFiYXNlX2luZm9bInNlcnZlcl9pZCJdCisgICAgICAgIGRi X2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwg dXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZCwgZGJfaWQpCisg ICAgICAgIGlmIG5vdCBkYl9jb25bJ2RhdGEnXVsiY29ubmVjdGVkIl06Cisg ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0 IHRvIGRhdGFiYXNlIHRvIGdldCB0aGUgZG9tYWluLiIpCisgICAgICAgIGRi X25hbWUgPSBzZWxmLmRhdGFiYXNlX2luZm9bImRiX25hbWUiXQorICAgICAg ICBzY2hlbWFfcmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVt YXMoc2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYl9uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5zY2hlbWFfbmFtZSkKKyAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNw b25zZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90 IGZpbmQgdGhlIHNjaGVtYSB0byBnZXQgdGhlIGRvbWFpbi4iKQorICAgICAg ICBkb21haW5faWQgPSBzZWxmLmRvbWFpbl9pbmZvWzBdCisgICAgICAgICMg Q2FsbCBHRVQgQVBJIHRvIHZlcmlmeSB0aGUgZG9tYWluCisgICAgICAgIGdl dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLmdldCgKKyAgICAgICAgICAgIHNl bGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKworICAg ICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKworICAgICAgICAgICAg c3RyKGRiX2lkKSArICcvJyArCisgICAgICAgICAgICBzdHIoc2VsZi5zY2hl bWFfaWQpICsgJy8nICsKKyAgICAgICAgICAgIHN0cihkb21haW5faWQpLAor ICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAg ICBzZWxmLmFzc2VydEVxdWFscyhnZXRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUs IDIwMCkKKyAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQorICAg ICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYs IHNlcnZlcl9pZCwgZGJfaWQpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6 CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvdGVzdHMvdGVzdF9kb21haW5fcHV0LnB5IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZXN0cy90ZXN0X2RvbWFpbl9wdXQucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzN2YwNQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVzdHMvdGVzdF9k b21haW5fcHV0LnB5CkBAIC0wLDAgKzEsNzkgQEAKKyMgIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwor IworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBE ZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyAjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKK2ltcG9ydCB1dWlkCitpbXBvcnQganNvbgorCitmcm9t IHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20g cmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSBwZ2Fk bWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJv bSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFi YXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAorICAgIGRhdGFiYXNlX3V0 aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZl cnMuZGF0YWJhc2VzLnNjaGVtYXMudGVzdHMgaW1wb3J0IFwKKyAgICB1dGls cyBhcyBzY2hlbWFfdXRpbHMKK2Zyb20gLiBpbXBvcnQgdXRpbHMgYXMgZG9t YWluX3V0aWxzCisKKworY2xhc3MgRG9tYWluUHV0VGVzdENhc2UoQmFzZVRl c3RHZW5lcmF0b3IpOgorICAgICIiIiBUaGlzIGNsYXNzIHdpbGwgZmV0Y2gg bmV3IGNvbGxhdGlvbiB1bmRlciBzY2hlbWEgbm9kZS4gIiIiCisgICAgc2Nl bmFyaW9zID0gWworICAgICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZv ciBkb21haW4gbm9kZS4KKyAgICAgICAgKCdGZXRjaCBkb21haW4gTm9kZSBV UkwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvZG9tYWluL29iai8nKSkKKyAgICBd CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGF0YWJh c2VfaW5mbyA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdCisg ICAgICAgIHNlbGYuZGJfbmFtZSA9IHNlbGYuZGF0YWJhc2VfaW5mb1siZGJf bmFtZSJdCisgICAgICAgIHNlbGYuc2NoZW1hX2luZm8gPSBwYXJlbnRfbm9k ZV9kaWN0WyJzY2hlbWEiXVstMV0KKyAgICAgICAgc2VsZi5zY2hlbWFfbmFt ZSA9IHNlbGYuc2NoZW1hX2luZm9bInNjaGVtYV9uYW1lIl0KKyAgICAgICAg c2VsZi5zY2hlbWFfaWQgPSBzZWxmLnNjaGVtYV9pbmZvWyJzY2hlbWFfaWQi XQorICAgICAgICBzZWxmLmRvbWFpbl9uYW1lID0gImRvbWFpbl9wdXRfJXMi ICUgKHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0pCisgICAgICAgIHNlbGYuZG9t YWluX2luZm8gPSBkb21haW5fdXRpbHMuY3JlYXRlX2RvbWFpbihzZWxmLnNl cnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c2NoZW1hX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjaGVtYV9pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuZG9tYWluX25hbWUpCisKKyAgICBkZWYgcnVuVGVzdChzZWxm KToKKyAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgZG9t YWluIHVuZGVyIHNjaGVtYSBub2RlLiAiIiIKKyAgICAgICAgZGJfaWQgPSBz ZWxmLmRhdGFiYXNlX2luZm9bImRiX2lkIl0KKyAgICAgICAgc2VydmVyX2lk ID0gc2VsZi5kYXRhYmFzZV9pbmZvWyJzZXJ2ZXJfaWQiXQorICAgICAgICBk Yl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYs IHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRiX2lkKQor ICAgICAgICBpZiBub3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgor ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgY29ubmVj dCB0byBkYXRhYmFzZSB0byBnZXQgdGhlIGRvbWFpbi4iKQorICAgICAgICBk Yl9uYW1lID0gc2VsZi5kYXRhYmFzZV9pbmZvWyJkYl9uYW1lIl0KKyAgICAg ICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hl bWFzKHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJfbmFtZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc2NoZW1hX25hbWUpCisgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVz cG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5v dCBmaW5kIHRoZSBzY2hlbWEgdG8gZ2V0IHRoZSBkb21haW4uIikKKyAgICAg ICAgZG9tYWluX3Jlc3BvbnNlID0gZG9tYWluX3V0aWxzLnZlcmlmeV9kb21h aW4oc2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRiX25hbWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuc2NoZW1hX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvbWFpbl9uYW1lKQorICAg ICAgICBpZiBub3QgZG9tYWluX3Jlc3BvbnNlOgorICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCB0aGUgZG9tYWluIHRvIHVw ZGF0ZS4iKQorICAgICAgICBkb21haW5faWQgPSBzZWxmLmRvbWFpbl9pbmZv WzBdCisgICAgICAgIGRhdGEgPSB7ImRlc2NyaXB0aW9uIjogIlRoaXMgaXMg ZG9tYWluIHVwZGF0ZSBjb21tZW50IiwKKyAgICAgICAgICAgICAgICAiaWQi OiBkb21haW5faWQsCisgICAgICAgICAgICAgICAgfQorICAgICAgICByZXNw b25zZSA9IHNlbGYudGVzdGVyLnB1dCgKKyAgICAgICAgICAgIHNlbGYudXJs ICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKworICAgICAgICAg ICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKworICAgICAgICAgICAgc3RyKGRi X2lkKSArICcvJyArCisgICAgICAgICAgICBzdHIoc2VsZi5zY2hlbWFfaWQp ICsgJy8nICsKKyAgICAgICAgICAgIHN0cihkb21haW5faWQpLAorICAgICAg ICAgICAgZGF0YT1qc29uLmR1bXBzKGRhdGEpLAorICAgICAgICAgICAgZm9s bG93X3JlZGlyZWN0cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICAjIERpc2Nv bm5lY3QgdGhlIGRhdGFiYXNlCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRp c2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VydmVyX2lkLCBkYl9pZCkKKwor ICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgcGFzcwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZXN0cy91dGlscy5weSBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVzdHMvdXRpbHMucHkKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U4YzNkMAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVzdHMvdXRp bHMucHkKQEAgLTAsMCArMSw3NyBAQAorIyAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIworIyAjcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworIworIyAjQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNiwgVGhlIHBnQWRt aW4gRGV2ZWxvcG1lbnQgVGVhbQorIyAjVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitmcm9tIF9fZnV0dXJlX18gaW1w b3J0IHByaW50X2Z1bmN0aW9uCitpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQg c3lzCisKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1 dGlscworCisKK2RlZiBjcmVhdGVfZG9tYWluKHNlcnZlciwgZGJfbmFtZSwg c2NoZW1hX25hbWUsIHNjaGVtYV9pZCwgZG9tYWluX25hbWUpOgorICAgICIi IgorICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBhZGQgdGhlIGRvbWFp biB0byBleGlzdGluZyBzY2hlbWEKKyAgICA6cGFyYW0gc2VydmVyOiBzZXJ2 ZXIgZGV0YWlscworICAgIDp0eXBlIHNlcnZlcjogZGljdAorICAgIDpwYXJh bSBkYl9uYW1lOiBkYXRhYmFzZSBuYW1lCisgICAgOnR5cGUgZGJfbmFtZTog c3RyCisgICAgOnBhcmFtIHNjaGVtYV9uYW1lOiBzY2hlbWEgbmFtZQorICAg IDp0eXBlIHNjaGVtYV9uYW1lOiBzdHIKKyAgICA6cGFyYW0gc2NoZW1hX2lk OiBzY2hlbWEgaWQKKyAgICA6dHlwZSBzY2hlbWFfaWQ6IGludAorICAgIDpw YXJhbSBkb21haW5fbmFtZTogZG9tYWluIG5hbWUKKyAgICA6dHlwZSBkb21h aW5fbmFtZTogc3RyCisgICAgOnJldHVybjogTm9uZQorICAgICIiIgorICAg IHRyeToKKyAgICAgICAgY29ubmVjdGlvbiA9IHV0aWxzLmdldF9kYl9jb25u ZWN0aW9uKGRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJb J2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsncG9y dCddKQorICAgICAgICBwZ19jdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigp CisgICAgICAgIHF1ZXJ5ID0gJ0NSRUFURSBET01BSU4gJytzY2hlbWFfbmFt ZSsnLicrZG9tYWluX25hbWUrJyBBUycgXAorICAgICAgICAgICAgICAgICcg Y2hhcmFjdGVyKDEwKSBDT0xMQVRFIHBnX2NhdGFsb2cuIlBPU0lYIiBERUZB VUxUIDEnCisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKHF1ZXJ5KQorICAg ICAgICBjb25uZWN0aW9uLmNvbW1pdCgpCisgICAgICAgICMgR2V0ICdvaWQn IGZyb20gbmV3bHkgY3JlYXRlZCBkb21haW4KKyAgICAgICAgcGdfY3Vyc29y LmV4ZWN1dGUoIlNFTEVDVCBkLm9pZCwgZC50eXBuYW1lIEZST00gcGdfdHlw ZSBkIFdIRVJFIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiIGQudHlw bmFtZT0nJXMnIEFORCBkLnR5cG5hbWVzcGFjZT0nJXMnIiAlCisgICAgICAg ICAgICAgICAgICAgICAgICAgIChkb21haW5fbmFtZSwgc2NoZW1hX2lkKSkK KyAgICAgICAgZG9tYWlucyA9IHBnX2N1cnNvci5mZXRjaG9uZSgpCisgICAg ICAgIGNvbm5lY3Rpb24uY2xvc2UoKQorICAgICAgICByZXR1cm4gZG9tYWlu cworICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHRyYWNlYmFjay5w cmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQorCisKK2RlZiB2ZXJpZnlfZG9t YWluKHNlcnZlciwgZGJfbmFtZSwgc2NoZW1hX2lkLCBkb21haW5fbmFtZSk6 CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhlIG9pZCAmIG5h bWUgb2YgdGhlIGRvbWFpbgorICAgIDpwYXJhbSBzZXJ2ZXI6IHNlcnZlciBk ZXRhaWxzCisgICAgOnR5cGUgc2VydmVyOiBkaWN0CisgICAgOnBhcmFtIGRi X25hbWU6IGRiIG5hbWUKKyAgICA6dHlwZSBkYl9uYW1lOiBzdHIKKyAgICA6 cGFyYW0gc2NoZW1hX2lkOiBzY2hlbWEgaWQKKyAgICA6dHlwZSBzY2hlbWFf aWQ6IGludAorICAgIDpwYXJhbSBkb21haW5fbmFtZTogZG9tYWluIG5hbWUK KyAgICA6dHlwZSBkb21haW5fbmFtZTogc3RyCisgICAgOnJldHVybjoKKyAg ICAiIiIKKyAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rp b24oZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2RiX3Bhc3N3b3Jk J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJ2ZXJbJ3BvcnQnXSkKKyAgICBwZ19jdXJzb3Ig PSBjb25uZWN0aW9uLmN1cnNvcigpCisgICAgcGdfY3Vyc29yLmV4ZWN1dGUo IlNFTEVDVCBkLm9pZCwgZC50eXBuYW1lIEZST00gcGdfdHlwZSBkIFdIRVJF IgorICAgICAgICAgICAgICAgICAgICAgICIgZC50eXBuYW1lPSclcycgQU5E IGQudHlwbmFtZXNwYWNlPSclcyciICUKKyAgICAgICAgICAgICAgICAgICAg ICAoZG9tYWluX25hbWUsIHNjaGVtYV9pZCkpCisgICAgZG9tYWlucyA9IHBn X2N1cnNvci5mZXRjaG9uZSgpCisgICAgY29ubmVjdGlvbi5jbG9zZSgpCisg ICAgcmV0dXJuIGRvbWFpbnMKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3RyaWdnZXJfZnVuY19hZGQucHkgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMvdGVzdF90cmlnZ2VyX2Z1 bmNfYWRkLnB5CmluZGV4IDgyYzY4Y2IuLmE2MjNiMmYgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3RyaWdnZXJf ZnVuY19hZGQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rl c3RzL3Rlc3RfdHJpZ2dlcl9mdW5jX2FkZC5weQpAQCAtNiw2OSArNiw5NCBA QAogIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitp bXBvcnQgdXVpZAoraW1wb3J0IGpzb24KIAogZnJvbSByZWdyZXNzaW9uIGlt cG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1w b3J0IHBhcmVudF9ub2RlX2RpY3QKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0 ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKLWZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMg YXMgc2VydmVyX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBh cyBcCiAgICAgZGF0YWJhc2VfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93c2Vy LnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50ZXN0 cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIHNjaGVtYV91dGlscwotZnJvbSAu IGltcG9ydCB1dGlscyBhcyB0cmlnZ2VyX2Z1bmNzX3V0aWxzCiAKIAogY2xh c3MgVHJpZ2dlckZ1bmNBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6 CiAgICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCBhZGQgbmV3IHRyaWdnZXIgZnVu Y3Rpb24gdW5kZXIgc2NoZW1hIG5vZGUuICIiIgotCiAgICAgc2NlbmFyaW9z ID0gWwogICAgICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciB0cmln Z2VyIGZ1bmN0aW9uIG5vZGUuCiAgICAgICAgICgnRmV0Y2ggVHJpZ2dlciBG dW5jdGlvbiBOb2RlIFVSTCcsIGRpY3QoCiAgICAgICAgICAgICB1cmw9Jy9i cm93c2VyL3RyaWdnZXJfZnVuY3Rpb24vb2JqLycpKQogICAgIF0KIAotICAg IEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAg ICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm0gdGhlIHRo cmVlIHRhc2tzCi0gICAgICAgICAxLiBBZGQgdGhlIHRlc3Qgc2VydmVyCi0g ICAgICAgICAyLiBDb25uZWN0IHRvIHNlcnZlcgotICAgICAgICAgMy4gQWRk IHRoZSBkYXRhYmFzZXMKLSAgICAgICAgIDQuIEFkZCB0aGUgc2NoZW1hcwot Ci0gICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAg ICAgIyBGaXJzdGx5LCBhZGQgdGhlIHNlcnZlcgotICAgICAgICBzZXJ2ZXJf dXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICAjIENvbm5l Y3QgdG8gc2VydmVyCi0gICAgICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNw b25zZSwgY2xzLnNlcnZlcl9ncm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0g ICAgICAgICAgICBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRl c3RlcikKLSAgICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNw b25zZSkgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8g U2VydmVyKHMpIGNvbm5lY3RlZCB0byBhZGQgdGhlIGRhdGFiYXNlISEhIikK LSAgICAgICAgIyBBZGQgZGF0YWJhc2UKLSAgICAgICAgZGF0YWJhc2VfdXRp bHMuYWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVj dF9yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNscy5zZXJ2ZXJfaWRzKQotICAgICAgICAjIEFkZCBzY2hlbWFzCi0g ICAgICAgIHNjaGVtYV91dGlscy5hZGRfc2NoZW1hcyhjbHMudGVzdGVyKQot CiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIiBUaGlzIGZ1 bmN0aW9uIHdpbGwgYWRkIHRyaWdnZXIgZnVuY3Rpb24gdW5kZXIgc2NoZW1h IG5vZGUuICIiIgorICAgICAgICBkYl9uYW1lID0gcGFyZW50X25vZGVfZGlj dFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQorICAgICAgICBzY2hlbWFf aW5mbyA9IHBhcmVudF9ub2RlX2RpY3RbInNjaGVtYSJdWy0xXQorICAgICAg ICBzZXJ2ZXJfaWQgPSBzY2hlbWFfaW5mb1sic2VydmVyX2lkIl0KKyAgICAg ICAgZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJfaWQiXQorICAgICAgICBkYl9j b24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYsIHV0 aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRiX2lkKQorICAg ICAgICBpZiBub3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgorICAg ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0 byBkYXRhYmFzZSB0byBhZGQgYSBmdW5jdGlvbi4iKQorICAgICAgICBzY2hl bWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lkIl0KKyAgICAgICAgc2No ZW1hX25hbWUgPSBzY2hlbWFfaW5mb1sic2NoZW1hX25hbWUiXQorICAgICAg ICBzY2hlbWFfcmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVt YXMoc2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYl9uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2NoZW1hX25hbWUpCisgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6 CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5k IHRoZSBzY2hlbWEgdG8gYWRkIGEgZnVuY3Rpb24uIikKKyAgICAgICAgZGJf dXNlciA9IHNlbGYuc2VydmVyWyJ1c2VybmFtZSJdCisgICAgICAgIGRhdGEg PSB7CisgICAgICAgICAgICAiYWNsIjogWworICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgICAgImdyYW50ZWUiOiBkYl91c2VyLAorICAg ICAgICAgICAgICAgICAgICAiZ3JhbnRvciI6IGRiX3VzZXIsCisgICAgICAg ICAgICAgICAgICAgICJwcml2aWxlZ2VzIjoKKyAgICAgICAgICAgICAgICAg ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2aWxlZ2VfdHlwZSI6 ICJYIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaXZp bGVnZSI6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJ3aXRoX2dyYW50IjogVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImFyZ3VtZW50 cyI6IFtdLAorICAgICAgICAgICAgImZ1bmNvd25lciI6IGRiX3VzZXIsCisg ICAgICAgICAgICAibGFubmFtZSI6ICJwbHBnc3FsIiwKKyAgICAgICAgICAg ICJuYW1lIjogInRlc3RfYWJvcnRfYW55X2NvbW1hbmQiLAorICAgICAgICAg ICAgIm9wdGlvbnMiOiBbXSwKKyAgICAgICAgICAgICJwcm9sZWFrcHJvb2Yi OiBUcnVlLAorICAgICAgICAgICAgInByb25hbWVzcGFjZSI6IDIyMDAsCisg ICAgICAgICAgICAicHJvcmV0dHlwZW5hbWUiOiAiZXZlbnRfdHJpZ2dlci90 cmlnZ2VyIiwKKyAgICAgICAgICAgICJwcm9zZWNkZWYiOiBUcnVlLAorICAg ICAgICAgICAgInByb3NyYyI6ICJCRUdJTiBSQUlTRSBFWENFUFRJT04gJ2Nv bW1hbmQgJSBpcyBkaXNhYmxlZCcsIgorICAgICAgICAgICAgICAgICAgICAg ICIgdGdfdGFnOyBFTkQ7IiwKKyAgICAgICAgICAgICJwcm92b2xhdGlsZSI6 ICJzIiwKKyAgICAgICAgICAgICJzZWNsYWJlbHMiOiBbXSwKKyAgICAgICAg ICAgICJ2YXJpYWJsZXMiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAibmFtZSI6ICJlbmFibGVfc29ydCIsCisgICAgICAg ICAgICAgICAgICAgICJ2YWx1ZSI6IFRydWUKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICAgICAgIyBHZXQgdGhl IHR5cGUgZnJvbSBkYXRhLiBXZSBhcmUgYWRkaW5nIHR3byB0eXBlcworICAg ICAgICAjIGkuZS4gZXZlbnRfdHJpZ2dlciBhbmQgdHJpZ2dlci4KKyAgICAg ICAgdHJpZ2dlcl9mdW5jX3R5cGVzID0gZGF0YVsncHJvcmV0dHlwZW5hbWUn XS5zcGxpdCgnLycpCisgICAgICAgIGZvciBmdW5jX3R5cGUgaW4gdHJpZ2dl cl9mdW5jX3R5cGVzOgorICAgICAgICAgICAgZGF0YVsncHJvcmV0dHlwZW5h bWUnXSA9IGZ1bmNfdHlwZQorICAgICAgICAgICAgZGF0YVsibmFtZSJdID0g InRlc3RfZXZlbnRfYWRkXyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0K KyAgICAgICAgICAgIGlmIHNjaGVtYV9pZDoKKyAgICAgICAgICAgICAgICBk YXRhWydwcm9uYW1lc3BhY2UnXSA9IHNjaGVtYV9pZAorICAgICAgICAgICAg ZWxzZToKKyAgICAgICAgICAgICAgICBzY2hlbWFfaWQgPSBkYXRhWydwcm9u YW1lc3BhY2UnXQorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rl ci5wb3N0KAorICAgICAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxz LlNFUlZFUl9HUk9VUCkgKyAnLycgKworICAgICAgICAgICAgICAgIHN0cihz ZXJ2ZXJfaWQpICsgJy8nICsgc3RyKGRiX2lkKSArICcvJyArIHN0cihzY2hl bWFfaWQpCisgICAgICAgICAgICAgICAgKyAnLycsIGRhdGE9anNvbi5kdW1w cyhkYXRhKSwgY29udGVudF90eXBlPSdodG1sL2pzb24nKQogCi0gICAgICAg IHRyaWdnZXJfZnVuY3NfdXRpbHMuYWRkX3RyaWdnZXJfZnVuY3Rpb24oCi0g ICAgICAgICAgICBzZWxmLnRlc3Rlciwgc2VsZi5zZXJ2ZXJfY29ubmVjdF9y ZXNwb25zZSwgc2VsZi5zZXJ2ZXJfaWRzKQotCi0gICAgQGNsYXNzbWV0aG9k Ci0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0g ICAgICAgIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgdHJpZ2dl ciBmdW5jdGlvbiwgc2NoZW1hcywgZGF0YWJhc2UsCi0gICAgICAgIHNlcnZl ciBhbmQgdGhlICdwYXJlbnRfaWQucGtsJyBmaWxlIHdoaWNoIGlzIGNyZWF0 ZWQgaW4gc2V0dXAoKQotICAgICAgICBmdW5jdGlvbi4KLQotICAgICAgICA6 cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgIHRyaWdnZXJf ZnVuY3NfdXRpbHMuZGVsZXRlX3RyaWdnZXJfZnVuY3Rpb24oY2xzLnRlc3Rl cikKLSAgICAgICAgc2NoZW1hX3V0aWxzLmRlbGV0ZV9zY2hlbWEoY2xzLnRl c3RlcikKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGVsZXRlX2RhdGFiYXNl KGNscy50ZXN0ZXIpCi0gICAgICAgIHNlcnZlcl91dGlscy5kZWxldGVfc2Vy dmVyKGNscy50ZXN0ZXIpCi0gICAgICAgIHV0aWxzLmRlbGV0ZV9wYXJlbnRf aWRfZmlsZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNw b25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICAjIERpc2Nvbm5lY3Qg dGhlIGRhdGFiYXNlCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5l Y3RfZGF0YWJhc2Uoc2VsZiwgc2VydmVyX2lkLCBkYl9pZCkKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3RyaWdn ZXJfZnVuY19kZWxldGUucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMv dGVzdHMvdGVzdF90cmlnZ2VyX2Z1bmNfZGVsZXRlLnB5CmluZGV4IDNkZTVi NGUuLjVmMjhlZDQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0 aW9ucy90ZXN0cy90ZXN0X3RyaWdnZXJfZnVuY19kZWxldGUucHkKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rlc3RzL3Rlc3RfdHJpZ2dlcl9m dW5jX2RlbGV0ZS5weQpAQCAtNiw4ICs2LDEwIEBACiAjIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQog IwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9ydCB1dWlkCiAKIGZy b20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJv bSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0CiBmcm9tIHBn YWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCiBm cm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVz dHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwogZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0 cyBpbXBvcnQgdXRpbHMgYXMgXApAQCAtMTksNTkgKzIxLDQ0IEBAIGZyb20g LiBpbXBvcnQgdXRpbHMgYXMgdHJpZ2dlcl9mdW5jc191dGlscwogCiBjbGFz cyBUcmlnZ2VyRnVuY0RlbGV0ZVRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9y KToKICAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIGRlbGV0ZSB0aGUgdHJpZ2dl ciBmdW5jdGlvbiB1bmRlciBzY2hlbWEgbm9kZS4gIiIiCi0KICAgICBzY2Vu YXJpb3MgPSBbCiAgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9y IHRyaWdnZXIgZnVuY3Rpb24gbm9kZS4KICAgICAgICAgKCdGZXRjaCBUcmln Z2VyIEZ1bmN0aW9uIE5vZGUgVVJMJywKICAgICAgICAgIGRpY3QodXJsPScv YnJvd3Nlci90cmlnZ2VyX2Z1bmN0aW9uL29iai8nKSkKICAgICBdCiAKLSAg ICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAg ICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0 aHJlZSB0YXNrcwotICAgICAgICAgMS4gQWRkIHRoZSB0ZXN0IHNlcnZlcgot ICAgICAgICAgMi4gQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgIDMuIEFk ZCB0aGUgZGF0YWJhc2VzCi0gICAgICAgICA0LiBBZGQgdGhlIHNjaGVtYXMK LSAgICAgICAgIDUuIEFkZCB0aGUgdHJpZ2dlciBmdW5jdGlvbnMKLQotICAg ICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgICMg Rmlyc3RseSwgYWRkIHRoZSBzZXJ2ZXIKLSAgICAgICAgc2VydmVyX3V0aWxz LmFkZF9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgIyBDb25uZWN0IHRv IHNlcnZlcgotICAgICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2Us IGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAotICAgICAg ICAgICAgc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIp Ci0gICAgICAgIGlmIGxlbihjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2Up ID09IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5vIFNlcnZl cihzKSBjb25uZWN0ZWQgdG8gYWRkIHRoZSBkYXRhYmFzZSEhISIpCi0gICAg ICAgICMgQWRkIGRhdGFiYXNlCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmFk ZF9kYXRhYmFzZShjbHMudGVzdGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVz cG9uc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj bHMuc2VydmVyX2lkcykKLSAgICAgICAgIyBBZGQgc2NoZW1hcwotICAgICAg ICBzY2hlbWFfdXRpbHMuYWRkX3NjaGVtYXMoY2xzLnRlc3RlcikKLQotICAg ICAgICAjIEFkZCB0cmlnZ2VyIGZ1bmN0aW9ucwotICAgICAgICB0cmlnZ2Vy X2Z1bmNzX3V0aWxzLmFkZF90cmlnZ2VyX2Z1bmN0aW9uKAotICAgICAgICAg ICAgY2xzLnRlc3RlciwgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLCBj bHMuc2VydmVyX2lkcykKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg IHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1b LTFdWyJkYl9uYW1lIl0KKyAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHBh cmVudF9ub2RlX2RpY3RbInNjaGVtYSJdWy0xXVsic2NoZW1hX25hbWUiXQor ICAgICAgICBzZWxmLnNjaGVtYV9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNj aGVtYSJdWy0xXVsic2NoZW1hX2lkIl0KKyAgICAgICAgZnVuY19uYW1lID0g InRlc3RfZXZlbnRfZGVsZXRlXyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6 Nl0KKyAgICAgICAgZGJfdXNlciA9IHNlbGYuc2VydmVyWyJ1c2VybmFtZSJd CisgICAgICAgIHNlbGYuZnVuY3Rpb25faW5mbyA9IHRyaWdnZXJfZnVuY3Nf dXRpbHMuY3JlYXRlX3RyaWdnZXJfZnVuY3Rpb24oCisgICAgICAgICAgICBz ZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLCBzZWxmLnNjaGVtYV9uYW1lLCBm dW5jX25hbWUpCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAg IiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBkZWxldGUgdHJpZ2dlciBmdW5jdGlv biB1bmRlciBkYXRhYmFzZSBub2RlLiAiIiIKKyAgICAgICAgc2NoZW1hX2lu Zm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJzY2hlbWEiXVstMV0KKyAgICAgICAg c2VydmVyX2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCisgICAgICAg IGRiX2lkID0gc2NoZW1hX2luZm9bImRiX2lkIl0KKyAgICAgICAgZGJfY29u ID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLCB1dGls cy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkLCBkYl9pZCkKKyAgICAg ICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKKyAgICAg ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8g ZGF0YWJhc2UgdG8gYWRkIGNvbGxhdGlvbi4iKQorICAgICAgICBzY2hlbWFf cmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMoc2VsZi5z ZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LnNjaGVtYV9uYW1lKQorICAgICAgICBpZiBub3Qgc2NoZW1hX3Jlc3BvbnNl OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgZmlu ZCB0aGUgc2NoZW1hIHRvIGFkZCB0aGUgY29sbGF0aW9uLiIpCisgICAgICAg IHRyaWdnZXJfZnVuY19pZCA9IHNlbGYuZnVuY3Rpb25faW5mb1swXQorICAg ICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmRlbGV0ZSgKKyAgICAgICAg ICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycK KyAgICAgICAgICAgICsgc3RyKHNlcnZlcl9pZCkgKyAnLycgKyBzdHIoZGJf aWQpICsgJy8nICsKKyAgICAgICAgICAgIHN0cihzZWxmLnNjaGVtYV9pZCkg KyAnLycgKyBzdHIodHJpZ2dlcl9mdW5jX2lkKSwKKyAgICAgICAgICAgIGNv bnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRF cXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgIyBE aXNjb25uZWN0IHRoZSBkYXRhYmFzZQorICAgICAgICBkYXRhYmFzZV91dGls cy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlcnZlcl9pZCwgZGJfaWQp CiAKLSAgICAgICAgdHJpZ2dlcl9mdW5jc191dGlscy5kZWxldGVfdHJpZ2dl cl9mdW5jdGlvbihzZWxmLnRlc3RlcikKLQotICAgIEBjbGFzc21ldGhvZAot ICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgICIiIgotICAg ICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIHRyaWdnZXIg ZnVuY3Rpb24sIHNjaGVtYXMsIGRhdGFiYXNlLAotICAgICAgICBzZXJ2ZXIg YW5kIHRoZSAncGFyZW50X2lkLnBrbCcgZmlsZSB3aGljaCBpcyBjcmVhdGVk IGluIHNldHVwKCkKLSAgICAgICAgZnVuY3Rpb24uCi0KLSAgICAgICAgOnJl dHVybjogTm9uZQotICAgICAgICAiIiIKLQotICAgICAgICBzY2hlbWFfdXRp bHMuZGVsZXRlX3NjaGVtYShjbHMudGVzdGVyKQotICAgICAgICBkYXRhYmFz ZV91dGlscy5kZWxldGVfZGF0YWJhc2UoY2xzLnRlc3RlcikKLSAgICAgICAg c2VydmVyX3V0aWxzLmRlbGV0ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAg ICAgdXRpbHMuZGVsZXRlX3BhcmVudF9pZF9maWxlKCkKKyAgICBkZWYgdGVh ckRvd24oc2VsZik6CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3RyaWdnZXJfZnVuY19n ZXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMvdGVzdF90 cmlnZ2VyX2Z1bmNfZ2V0LnB5CmluZGV4IDBiYTJiY2EuLmIzMTcyOWEgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0 X3RyaWdnZXJfZnVuY19nZXQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVu Y3Rpb25zL3Rlc3RzL3Rlc3RfdHJpZ2dlcl9mdW5jX2dldC5weQpAQCAtNiwx MCArNiwxMSBAQAogIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVy IHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKICMKICMgIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCitpbXBvcnQgdXVpZAogCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0 IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQg cGFyZW50X25vZGVfZGljdAogZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGlt cG9ydCBCYXNlVGVzdEdlbmVyYXRvcgotZnJvbSBwZ2FkbWluLmJyb3dzZXIu c2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBz ZXJ2ZXJfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91 cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwK ICAgICBkYXRhYmFzZV91dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2Vy dmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGlt cG9ydCBcCkBAIC0xOSw4MCArMjAsNDQgQEAgZnJvbSAuIGltcG9ydCB1dGls cyBhcyB0cmlnZ2VyX2Z1bmNzX3V0aWxzCiAKIGNsYXNzIFRyaWdnZXJGdW5j R2V0VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICIiIlRoaXMg Y2xhc3Mgd2lsbCBmZXRjaCBhZGRlZCB0cmlnZ2VyIGZ1bmN0aW9uIHVuZGVy IHNjaGVtYSBub2RlLiIiIgotCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAg ICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciB0cmlnZ2VyIGZ1bmN0aW9u IG5vZGUuCiAgICAgICAgICgnRmV0Y2ggVHJpZ2dlciBGdW5jdGlvbiBOb2Rl IFVSTCcsCiAgICAgICAgICBkaWN0KHVybD0nL2Jyb3dzZXIvdHJpZ2dlcl9m dW5jdGlvbi9vYmovJykpCiAgICAgXQogCi0gICAgQGNsYXNzbWV0aG9kCi0g ICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAg IFRoaXMgZnVuY3Rpb24gcGVyZm9ybSB0aGUgdGhyZWUgdGFza3MKLSAgICAg ICAgIDEuIEFkZCB0aGUgdGVzdCBzZXJ2ZXIKLSAgICAgICAgIDIuIENvbm5l Y3QgdG8gc2VydmVyCi0gICAgICAgICAzLiBBZGQgdGhlIGRhdGFiYXNlcwot ICAgICAgICAgNC4gQWRkIHRoZSBzY2hlbWFzCi0gICAgICAgICA1LiBBZGQg dGhlIHRyaWdnZXIgZnVuY3Rpb25zCi0KLSAgICAgICAgOnJldHVybjogTm9u ZQotICAgICAgICAiIiIKLQotICAgICAgICAjIEZpcnN0bHksIGFkZCB0aGUg c2VydmVyCi0gICAgICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKGNscy50 ZXN0ZXIpCi0gICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAg Y2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3Vw LCBjbHMuc2VydmVyX2lkcyA9IFwKLSAgICAgICAgICAgIHNlcnZlcl91dGls cy5jb25uZWN0X3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICBpZiBsZW4o Y2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAgICAgICAg ICAgcmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVjdGVkIHRv IGFkZCB0aGUgZGF0YWJhc2UhISEiKQotICAgICAgICAjIEFkZCBkYXRhYmFz ZQotICAgICAgICBkYXRhYmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRl c3RlciwgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCi0g ICAgICAgICMgQWRkIHNjaGVtYXMKLSAgICAgICAgc2NoZW1hX3V0aWxzLmFk ZF9zY2hlbWFzKGNscy50ZXN0ZXIpCi0gICAgICAgICMgQWRkIHRyaWdnZXIg ZnVuY3Rpb25zCi0gICAgICAgIHRyaWdnZXJfZnVuY3NfdXRpbHMuYWRkX3Ry aWdnZXJfZnVuY3Rpb24oCi0gICAgICAgICAgICBjbHMudGVzdGVyLCBjbHMu c2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfaWRzKQorICAg IGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5kYl9uYW1lID0gcGFy ZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQorICAg ICAgICBzZWxmLnNjaGVtYV9uYW1lID0gcGFyZW50X25vZGVfZGljdFsic2No ZW1hIl1bLTFdWyJzY2hlbWFfbmFtZSJdCisgICAgICAgIHNlbGYuc2NoZW1h X2lkID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdWyJzY2hlbWFf aWQiXQorICAgICAgICBmdW5jX25hbWUgPSAidGVzdF9ldmVudF9nZXRfJXMi ICUgc3RyKHV1aWQudXVpZDQoKSlbMTo2XQorICAgICAgICBkYl91c2VyID0g c2VsZi5zZXJ2ZXJbInVzZXJuYW1lIl0KKyAgICAgICAgc2VsZi5mdW5jdGlv bl9pbmZvID0gdHJpZ2dlcl9mdW5jc191dGlscy5jcmVhdGVfdHJpZ2dlcl9m dW5jdGlvbigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLmRiX25h bWUsIHNlbGYuc2NoZW1hX25hbWUsIGZ1bmNfbmFtZSkKIAogICAgIGRlZiBy dW5UZXN0KHNlbGYpOgogICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxs IGRlbGV0ZSB0cmlnZ2VyIGZ1bmN0aW9uIHVuZGVyIGRhdGFiYXNlIG5vZGUu ICIiIgotCi0gICAgICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQotICAg ICAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAgICAgICBkYl9p ZHNfZGljdCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAgICAgICAgc2NoZW1hX2lk c19kaWN0ID0gYWxsX2lkWyJzY2lkIl1bMF0KLSAgICAgICAgdHJpZ2dlcl9p ZHNfZGljdCA9IGFsbF9pZFsidGZuaWQiXVswXQotICAgICAgICBmb3Igc2Vy dmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAgICAgICBkYl9pZCA9IGRi X2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAgICAgZGJfY29u ID0gZGF0YWJhc2VfdXRpbHMudmVyaWZ5X2RhdGFiYXNlKAotICAgICAgICAg ICAgICAgIHNlbGYudGVzdGVyLCB1dGlscy5TRVJWRVJfR1JPVVAsIHNlcnZl cl9pZCwgZGJfaWQpCi0gICAgICAgICAgICBpZiBkYl9jb25bJ2RhdGEnXVsi Y29ubmVjdGVkIl06Ci0gICAgICAgICAgICAgICAgc2NoZW1hX2lkID0gc2No ZW1hX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXVswXQotICAgICAgICAgICAg ICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlfc2No ZW1hcygKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0ZXIsIHNlcnZl cl9pZCwgZGJfaWQsIHNjaGVtYV9pZCkKLSAgICAgICAgICAgICAgICBpZiBz Y2hlbWFfcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwOgotICAgICAgICAg ICAgICAgICAgICB0cmlnZ2VyX2Z1bmNfbGlzdCA9IHRyaWdnZXJfaWRzX2Rp Y3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAgICAgICAgICAgICAgIGZvciB0 cmlnZ2VyX2Z1bmMgaW4gdHJpZ2dlcl9mdW5jX2xpc3Q6Ci0gICAgICAgICAg ICAgICAgICAgICAgICB0cmlnZ2VyX2Z1bmNfaWQgPSB0cmlnZ2VyX2Z1bmNb MF0KLSAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJfcmVzcG9uc2Ug PSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcl9mdW5j c191dGlscy52ZXJpZnlfdHJpZ2dlcl9mdW5jdGlvbigKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0ZXIsIHNlcnZlcl9pZCwg ZGJfaWQsIHNjaGVtYV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdHJpZ2dlcl9mdW5jX2lkKQotICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5hc3NlcnRUcnVlKHRyaWdnZXJfcmVzcG9uc2Uuc3RhdHVzX2Nv ZGUsIDIwMCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93 bkNsYXNzKGNscyk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0 aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIHRyaWdnZXIgZnVuY3Rpb24sIHNjaGVt YXMsIGRhdGFiYXNlLAotICAgICAgICBzZXJ2ZXIgYW5kIHRoZSAncGFyZW50 X2lkLnBrbCcgZmlsZSB3aGljaCBpcyBjcmVhdGVkIGluIHNldHVwKCkKLSAg ICAgICAgZnVuY3Rpb24uCi0KLSAgICAgICAgOnJldHVybjogTm9uZQotICAg ICAgICAiIiIKLQotICAgICAgICB0cmlnZ2VyX2Z1bmNzX3V0aWxzLmRlbGV0 ZV90cmlnZ2VyX2Z1bmN0aW9uKGNscy50ZXN0ZXIpCi0gICAgICAgIHNjaGVt YV91dGlscy5kZWxldGVfc2NoZW1hKGNscy50ZXN0ZXIpCi0gICAgICAgIGRh dGFiYXNlX3V0aWxzLmRlbGV0ZV9kYXRhYmFzZShjbHMudGVzdGVyKQotICAg ICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihjbHMudGVzdGVyKQot ICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQorICAgICAg ICBzY2hlbWFfaW5mbyA9IHBhcmVudF9ub2RlX2RpY3RbInNjaGVtYSJdWy0x XQorICAgICAgICBzZXJ2ZXJfaWQgPSBzY2hlbWFfaW5mb1sic2VydmVyX2lk Il0KKyAgICAgICAgZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJfaWQiXQorICAg ICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNl KHNlbGYsIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRi X2lkKQorICAgICAgICBpZiBub3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3Rl ZCJdOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3Qg Y29ubmVjdCB0byBkYXRhYmFzZSB0byBhZGQgY29sbGF0aW9uLiIpCisgICAg ICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlfc2No ZW1hcyhzZWxmLnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCisgICAgICAgIGlmIG5vdCBzY2hl bWFfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNv dWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gYWRkIHRoZSBjb2xsYXRpb24u IikKKyAgICAgICAgdHJpZ2dlcl9mdW5jX2lkID0gc2VsZi5mdW5jdGlvbl9p bmZvWzBdCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIuZ2V0KAor ICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQ KSArICcvJworICAgICAgICAgICAgKyBzdHIoc2VydmVyX2lkKSArICcvJyAr IHN0cihkYl9pZCkgKyAnLycgKworICAgICAgICAgICAgc3RyKHNlbGYuc2No ZW1hX2lkKSArICcvJyArIHN0cih0cmlnZ2VyX2Z1bmNfaWQpLAorICAgICAg ICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICBzZWxm LmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAg ICAgICAjIERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCisgICAgICAgIGRhdGFi YXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VydmVyX2lk LCBkYl9pZCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAg cGFzcwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rl c3RzL3Rlc3RfdHJpZ2dlcl9mdW5jX3B1dC5weSBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3RyaWdnZXJfZnVuY19wdXQucHkKaW5k ZXggNTAyNWQ0MC4uMTI1MGEyNCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnVuY3Rpb25zL3Rlc3RzL3Rlc3RfdHJpZ2dlcl9mdW5jX3B1dC5weQor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMvdGVzdF90cmln Z2VyX2Z1bmNfcHV0LnB5CkBAIC02LDEzICs2LDEyIEBACiAjIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5j ZQogIwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQoraW1wb3J0IHV1aWQK IGltcG9ydCBqc29uCiAKIGZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91 dGlscyBhcyB1dGlscworZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRf bm9kZV9kaWN0CiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJh c2VUZXN0R2VuZXJhdG9yCi1mcm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBp bXBvcnQgYWR2YW5jZWRfY29uZmlnX2RhdGEKLWZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMg YXMgc2VydmVyX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBh cyBcCiAgICAgZGF0YWJhc2VfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93c2Vy LnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50ZXN0 cyBpbXBvcnQgXApAQCAtMjIsOTkgKzIxLDU5IEBAIGZyb20gLiBpbXBvcnQg dXRpbHMgYXMgdHJpZ2dlcl9mdW5jc191dGlscwogCiBjbGFzcyBUcmlnZ2Vy RnVuY1B1dFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAiIiIg VGhpcyBjbGFzcyB3aWxsIHVwZGF0ZSBuZXcgdHJpZ2dlciBmdW5jdGlvbiB1 bmRlciBzY2hlbWEgbm9kZS4gIiIiCi0KICAgICBzY2VuYXJpb3MgPSBbCiAg ICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIHRyaWdnZXIgZnVu Y3Rpb24gbm9kZS4KICAgICAgICAgKCdGZXRjaCBUcmlnZ2VyIEZ1bmN0aW9u IE5vZGUgVVJMJywKICAgICAgICAgIGRpY3QodXJsPScvYnJvd3Nlci90cmln Z2VyX2Z1bmN0aW9uL29iai8nKSkKICAgICBdCiAKLSAgICBAY2xhc3NtZXRo b2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAiIiIKLSAg ICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0aHJlZSB0YXNrcwot ICAgICAgICAgMS4gQWRkIHRoZSB0ZXN0IHNlcnZlcgotICAgICAgICAgMi4g Q29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgIDMuIEFkZCB0aGUgZGF0YWJh c2VzCi0gICAgICAgICA0LiBBZGQgdGhlIHNjaGVtYXMKLSAgICAgICAgIDUu IEFkZCB0aGUgdHJpZ2dlciBmdW5jdGlvbnMKLQotICAgICAgICA6cmV0dXJu OiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgICMgRmlyc3RseSwgYWRk IHRoZSBzZXJ2ZXIKLSAgICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2ZXIo Y2xzLnRlc3RlcikKLSAgICAgICAgIyBDb25uZWN0IHRvIHNlcnZlcgotICAg ICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJf Z3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgc2VydmVy X3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0gICAgICAgIGlm IGxlbihjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UpID09IDA6Ci0gICAg ICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5vIFNlcnZlcihzKSBjb25uZWN0 ZWQgdG8gYWRkIHRoZSBkYXRhYmFzZSEhISIpCi0gICAgICAgICMgQWRkIGRh dGFiYXNlCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmFkZF9kYXRhYmFzZShj bHMudGVzdGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2VydmVyX2lk cykKLSAgICAgICAgIyBBZGQgc2NoZW1hcwotICAgICAgICBzY2hlbWFfdXRp bHMuYWRkX3NjaGVtYXMoY2xzLnRlc3RlcikKLSAgICAgICAgIyBBZGQgdHJp Z2dlciBmdW5jdGlvbnMKLSAgICAgICAgdHJpZ2dlcl9mdW5jc191dGlscy5h ZGRfdHJpZ2dlcl9mdW5jdGlvbigKLSAgICAgICAgICAgIGNscy50ZXN0ZXIs IGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZlcl9pZHMp CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmRiX25hbWUg PSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJd CisgICAgICAgIHNlbGYuc2NoZW1hX25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0 WyJzY2hlbWEiXVstMV1bInNjaGVtYV9uYW1lIl0KKyAgICAgICAgc2VsZi5z Y2hlbWFfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJzY2hlbWEiXVstMV1bInNj aGVtYV9pZCJdCisgICAgICAgIGZ1bmNfbmFtZSA9ICJ0ZXN0X2V2ZW50X3B1 dF8lcyIgJSBzdHIodXVpZC51dWlkNCgpKVsxOjZdCisgICAgICAgIGRiX3Vz ZXIgPSBzZWxmLnNlcnZlclsidXNlcm5hbWUiXQorICAgICAgICBzZWxmLmZ1 bmN0aW9uX2luZm8gPSB0cmlnZ2VyX2Z1bmNzX3V0aWxzLmNyZWF0ZV90cmln Z2VyX2Z1bmN0aW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYu ZGJfbmFtZSwgc2VsZi5zY2hlbWFfbmFtZSwgZnVuY19uYW1lKQogCiAgICAg ZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9u IHdpbGwgdXBkYXRlIHRyaWdnZXIgZnVuY3Rpb24gdW5kZXIgZGF0YWJhc2Ug bm9kZS4gIiIiCisgICAgICAgIHNjaGVtYV9pbmZvID0gcGFyZW50X25vZGVf ZGljdFsic2NoZW1hIl1bLTFdCisgICAgICAgIHNlcnZlcl9pZCA9IHNjaGVt YV9pbmZvWyJzZXJ2ZXJfaWQiXQorICAgICAgICBkYl9pZCA9IHNjaGVtYV9p bmZvWyJkYl9pZCJdCisgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxz LmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgdXRpbHMuU0VSVkVSX0dST1VQLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlcnZlcl9pZCwgZGJfaWQpCisgICAgICAgIGlmIG5vdCBkYl9jb25b J2RhdGEnXVsiY29ubmVjdGVkIl06CisgICAgICAgICAgICByYWlzZSBFeGNl cHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlIHRvIGFkZCBj b2xsYXRpb24uIikKKyAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1h X3V0aWxzLnZlcmlmeV9zY2hlbWFzKHNlbGYuc2VydmVyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSkKKyAg ICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25zZToKKyAgICAgICAgICAgIHJh aXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVtYSB0byBh ZGQgdGhlIGNvbGxhdGlvbi4iKQorICAgICAgICBmdW5jX25hbWUgPSBzZWxm LmZ1bmN0aW9uX2luZm9bMV0KKyAgICAgICAgZnVuY19yZXNwb25zZSA9IHRy aWdnZXJfZnVuY3NfdXRpbHMudmVyaWZ5X3RyaWdnZXJfZnVuY3Rpb24oCisg ICAgICAgICAgICBzZWxmLnNlcnZlciwKKyAgICAgICAgICAgIHNlbGYuZGJf bmFtZSwKKyAgICAgICAgICAgIGZ1bmNfbmFtZSkKKyAgICAgICAgaWYgbm90 IGZ1bmNfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o IkNvdWxkIG5vdCBmaW5kIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIHRvIHVwZGF0 ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGl0J3MgZGV0YWls cy4iKQogCi0gICAgICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQotICAg ICAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAgICAgICBkYl9p ZHNfZGljdCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAgICAgICAgc2NoZW1hX2lk c19kaWN0ID0gYWxsX2lkWyJzY2lkIl1bMF0KLSAgICAgICAgdHJpZ2dlcl9p ZHNfZGljdCA9IGFsbF9pZFsidGZuaWQiXVswXQotICAgICAgICBmb3Igc2Vy dmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAgICAgICBkYl9pZCA9IGRi X2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAgICAgZGJfY29u ID0gZGF0YWJhc2VfdXRpbHMudmVyaWZ5X2RhdGFiYXNlKHNlbGYudGVzdGVy LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJf aWQsIGRiX2lkKQotICAgICAgICAgICAgaWYgZGJfY29uWydkYXRhJ11bImNv bm5lY3RlZCJdOgotICAgICAgICAgICAgICAgIHNjaGVtYV9pZCA9IHNjaGVt YV9pZHNfZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgICAgICAgICBz Y2hlbWFfcmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMo c2VsZi50ZXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVt YV9pZCkKLSAgICAgICAgICAgICAgICBpZiBzY2hlbWFfcmVzcG9uc2Uuc3Rh dHVzX2NvZGUgPT0gMjAwOgotICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vy X2Z1bmNfbGlzdCA9IHRyaWdnZXJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCld Ci0gICAgICAgICAgICAgICAgICAgIGZvciB0cmlnZ2VyX2Z1bmMgaW4gdHJp Z2dlcl9mdW5jX2xpc3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmln Z2VyX2Z1bmNfaWQgPSB0cmlnZ2VyX2Z1bmNbMF0KLSAgICAgICAgICAgICAg ICAgICAgICAgIHRyaWdnZXJfcmVzcG9uc2UgPSBcCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgdHJpZ2dlcl9mdW5jc191dGlscy52ZXJpZnlfdHJp Z2dlcl9mdW5jdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi50ZXN0ZXIsIHNlcnZlcl9pZCwgZGJfaWQsIHNjaGVtYV9pZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcl9mdW5j X2lkKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgdHJpZ2dlcl9yZXNw b25zZS5zdGF0dXNfY29kZSA9PSAyMDA6Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YSA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImRlc2NyaXB0aW9uIjogYWR2YW5jZWRfY29uZmlnX2RhdGFbCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJpZ2dlcl9m dW5jX3VwZGF0ZV9kYXRhJ11bJ2NvbW1lbnQnXSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImlkIjogdHJpZ2dlcl9mdW5jX2lkCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHV0X3Jlc3BvbnNlID0gc2VsZi50ZXN0ZXIucHV0KAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVybCArIHN0 cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZGJfaWQpICsgJy8n ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHNjaGVt YV9pZCkgKyAnLycgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHIodHJpZ2dlcl9mdW5jX2lkKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRhdGEpLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUp Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx dWFscyhwdXRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLQotICAgIEBj bGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAg ICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFk ZGVkIHRyaWdnZXIgZnVuY3Rpb24sIHNjaGVtYXMsIGRhdGFiYXNlLAotICAg ICAgICBzZXJ2ZXIgYW5kIHRoZSAncGFyZW50X2lkLnBrbCcgZmlsZSB3aGlj aCBpcyBjcmVhdGVkIGluIHNldHVwKCkKLSAgICAgICAgZnVuY3Rpb24uCisg ICAgICAgIHRyaWdnZXJfZnVuY19pZCA9IHNlbGYuZnVuY3Rpb25faW5mb1sw XQorICAgICAgICBkYXRhID0geworICAgICAgICAgICAgImRlc2NyaXB0aW9u IjogIlRoaXMgaXMgdHJpZ2dlciBmdW5jdGlvbiB1cGRhdGUgY29tbWVudCIs CisgICAgICAgICAgICAiaWQiOiB0cmlnZ2VyX2Z1bmNfaWQKKyAgICAgICAg fQogCi0gICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCisgICAg ICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dChzZWxmLnVybCAr IHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICcvJyArIHN0cihzZXJ2ZXJfaWQpICsg Jy8nICsgc3RyKGRiX2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKyAnLycgKyBzdHIoc2VsZi5zY2hlbWFfaWQpICsgJy8n ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cih0cmlnZ2VyX2Z1bmNfaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRhdGEpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3JlZGly ZWN0cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwdXRfcmVz cG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgIyBEaXNjb25uZWN0 IHRoZSBkYXRhYmFzZQorICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25u ZWN0X2RhdGFiYXNlKHNlbGYsIHNlcnZlcl9pZCwgZGJfaWQpCiAKLSAgICAg ICAgdHJpZ2dlcl9mdW5jc191dGlscy5kZWxldGVfdHJpZ2dlcl9mdW5jdGlv bihjbHMudGVzdGVyKQotICAgICAgICBzY2hlbWFfdXRpbHMuZGVsZXRlX3Nj aGVtYShjbHMudGVzdGVyKQotICAgICAgICBkYXRhYmFzZV91dGlscy5kZWxl dGVfZGF0YWJhc2UoY2xzLnRlc3RlcikKLSAgICAgICAgc2VydmVyX3V0aWxz LmRlbGV0ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgdXRpbHMuZGVs ZXRlX3BhcmVudF9pZF9maWxlKCkKKyAgICBkZWYgdGVhckRvd24oc2VsZik6 CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1 bmN0aW9ucy90ZXN0cy91dGlscy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0 aW9ucy90ZXN0cy91dGlscy5weQppbmRleCBlNjkzYzVhLi44NjYxNWI0IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMvdXRp bHMucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rlc3RzL3V0 aWxzLnB5CkBAIC02LDE3NCArNiw1MCBAQAogIyAjVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAjCiAj ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitmcm9tIF9fZnV0dXJl X18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitpbXBvcnQgdHJhY2ViYWNrCitp bXBvcnQgc3lzCiAKLWltcG9ydCBqc29uCi1pbXBvcnQgb3MKLWltcG9ydCBw aWNrbGUKLWltcG9ydCB1dWlkCi0KLWZyb20gcmVncmVzc2lvbi50ZXN0X3Nl dHVwIGltcG9ydCBwaWNrbGVfcGF0aCwgYWR2YW5jZWRfY29uZmlnX2RhdGEK LWZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5k YXRhYmFzZXMudGVzdHMgaW1wb3J0IFwKLSAgICB1dGlscyBhcyBkYXRhYmFz ZV91dGlscwotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCi0gICAg dXRpbHMgYXMgc2NoZW1hX3V0aWxzCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0 IHRlc3RfdXRpbHMgYXMgdXRpbHMKIAotVFJJR0dFUl9GVU5DVElPTlNfVVJM ID0gJy9icm93c2VyL3RyaWdnZXJfZnVuY3Rpb24vb2JqLycKLVRSSUdHRVJf RlVOQ1RJT05TX0RFTEVURV9VUkwgPSAnL2Jyb3dzZXIvdHJpZ2dlcl9mdW5j dGlvbi9kZWxldGUvJwotCi0KLWRlZiBnZXRfdHJpZ2dlcl9mdW5jX2RhdGEo c2VydmVyX2Nvbm5lY3RfZGF0YSk6Ci0gICAgIiIiVGhpcyBmdW5jdGlvbiBy ZXR1cm5zIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIGNvbmZpZyBkYXRhIiIiCi0K LSAgICBhZHZfY29uZmlnX2RhdGEgPSBOb25lCi0gICAgZGF0YSA9IE5vbmUK LSAgICBkYl91c2VyID0gc2VydmVyX2Nvbm5lY3RfZGF0YVsnZGF0YSddWyd1 c2VyJ11bJ25hbWUnXQotCi0gICAgIyBHZXQgdGhlIGNvbmZpZyBkYXRhIG9m IGFwcHJvcHJpYXRlIGRiIHVzZXIKLSAgICBmb3IgY29uZmlnX3Rlc3RfZGF0 YSBpbiBcCi0gICAgICAgICAgICBhZHZhbmNlZF9jb25maWdfZGF0YVsndHJp Z2dlcl9mdW5jdGlvbl9jcmVkZW50aWFscyddOgotICAgICAgICBpZiBkYl91 c2VyID09IGNvbmZpZ190ZXN0X2RhdGFbJ2Z1bl9vd25lciddOgotICAgICAg ICAgICAgYWR2X2NvbmZpZ19kYXRhID0gY29uZmlnX3Rlc3RfZGF0YQotCi0g ICAgaWYgYWR2X2NvbmZpZ19kYXRhIGlzIG5vdCBOb25lOgotICAgICAgICBk YXRhID0gewotICAgICAgICAgICAgImFjbCI6IGFkdl9jb25maWdfZGF0YVsn YWNsJ10sCi0gICAgICAgICAgICAiYXJndW1lbnRzIjogYWR2X2NvbmZpZ19k YXRhWydhcmdzJ10sCi0gICAgICAgICAgICAiZnVuY293bmVyIjogYWR2X2Nv bmZpZ19kYXRhWydmdW5fb3duZXInXSwKLSAgICAgICAgICAgICJsYW5uYW1l IjogYWR2X2NvbmZpZ19kYXRhWydsYW5ndWFnZSddLAotICAgICAgICAgICAg Im5hbWUiOiBhZHZfY29uZmlnX2RhdGFbJ25hbWUnXSwKLSAgICAgICAgICAg ICJvcHRpb25zIjogYWR2X2NvbmZpZ19kYXRhWydvcHRpb25zJ10sCi0gICAg ICAgICAgICAicHJvbGVha3Byb29mIjogYWR2X2NvbmZpZ19kYXRhWydsZWFr X3Byb29mJ10sCi0gICAgICAgICAgICAicHJvbmFtZXNwYWNlIjogYWR2X2Nv bmZpZ19kYXRhWyduYW1lc3BhY2UnXSwKLSAgICAgICAgICAgICJwcm9yZXR0 eXBlbmFtZSI6IGFkdl9jb25maWdfZGF0YVsndHlwZSddLAotICAgICAgICAg ICAgInByb3NlY2RlZiI6IGFkdl9jb25maWdfZGF0YVsnc2VjX2RlZiddLAot ICAgICAgICAgICAgInByb3NyYyI6IGFkdl9jb25maWdfZGF0YVsnY29kZSdd LAotICAgICAgICAgICAgInByb3ZvbGF0aWxlIjogYWR2X2NvbmZpZ19kYXRh Wyd2b2xpdGlsZSddLAotICAgICAgICAgICAgInNlY2xhYmVscyI6IGFkdl9j b25maWdfZGF0YVsnc2VjX2xhYmVsJ10sCi0gICAgICAgICAgICAidmFyaWFi bGVzIjogYWR2X2NvbmZpZ19kYXRhWydWYXJpYWJsZSddCi0gICAgICAgIH0K LSAgICByZXR1cm4gZGF0YQotCi0KLWRlZiB3cml0ZV90cmlnZ2VyX2Z1bmNf aWQodHJpZ2dlcl9mdW5jX2lkc19saXN0LCBzZXJ2ZXJfaWQpOgotICAgICIi IgotICAgIFRoaXMgZnVuY3Rpb24gd3JpdGVzIHRoZSBzZXJ2ZXIgYW5kIHRy aWdnZXIgZnVuY3Rpb24gcmVsYXRlZCBkYXRhIGxpa2UKLSAgICBzZXJ2ZXIg aWQgYW5kIHRyaWdnZXIgZnVuY3Rpb24gbmFtZQotCi0gICAgOnBhcmFtIHRy aWdnZXJfZnVuY19pZHNfbGlzdDogbGlzdCBvZiB0cmlnZ2VyIGZ1bmN0aW9u cyBpZHMKLSAgICA6dHlwZSB0cmlnZ2VyX2Z1bmNfaWRzX2xpc3Q6IGxpc3QK LSAgICA6cGFyYW0gc2VydmVyX2lkOiBzZXJ2ZXIgaWQKLSAgICA6dHlwZSBz ZXJ2ZXJfaWQ6IGludAotICAgIDpyZXR1cm46IE5vbmUKLSAgICAiIiIKLQot ICAgIHBpY2tsZV9pZF9kaWN0ID0gdXRpbHMuZ2V0X3BpY2tsZV9pZF9kaWN0 KCkKLQotICAgIGlmIG9zLnBhdGguaXNmaWxlKHBpY2tsZV9wYXRoKToKLSAg ICAgICAgZXhpc3Rpbmdfc2VydmVyX2lkID0gb3BlbihwaWNrbGVfcGF0aCwg J3JiJykKLSAgICAgICAgdG9sX3NlcnZlcl9pZCA9IHBpY2tsZS5sb2FkKGV4 aXN0aW5nX3NlcnZlcl9pZCkKLSAgICAgICAgcGlja2xlX2lkX2RpY3QgPSB0 b2xfc2VydmVyX2lkCi0gICAgaWYgJ3RmbmlkJyBpbiBwaWNrbGVfaWRfZGlj dDoKLSAgICAgICAgaWYgcGlja2xlX2lkX2RpY3RbJ3RmbmlkJ106Ci0gICAg ICAgICAgICAjIEFkZCB0aGUgZGJfaWQgYXMgdmFsdWUgaW4gZGljdAotICAg ICAgICAgICAgcGlja2xlX2lkX2RpY3RbInRmbmlkIl1bMF0udXBkYXRlKAot ICAgICAgICAgICAgICAgIHtpbnQoc2VydmVyX2lkKTogdHJpZ2dlcl9mdW5j X2lkc19saXN0fSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgQ3Jl YXRlIG5ldyBkaWN0IHdpdGggc2VydmVyX2lkIGFuZCBkYl9pZAotICAgICAg ICAgICAgcGlja2xlX2lkX2RpY3RbInRmbmlkIl0uYXBwZW5kKAotICAgICAg ICAgICAgICAgIHtpbnQoc2VydmVyX2lkKTogdHJpZ2dlcl9mdW5jX2lkc19s aXN0fSkKLSAgICBkYl9vdXRwdXQgPSBvcGVuKHBpY2tsZV9wYXRoLCAnd2In KQotICAgIHBpY2tsZS5kdW1wKHBpY2tsZV9pZF9kaWN0LCBkYl9vdXRwdXQp Ci0gICAgZGJfb3V0cHV0LmNsb3NlKCkKLQogCi1kZWYgYWRkX3RyaWdnZXJf ZnVuY3Rpb24odGVzdGVyLCBzZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgc2Vy dmVyX2lkcyk6CitkZWYgY3JlYXRlX3RyaWdnZXJfZnVuY3Rpb24oc2VydmVy LCBkYl9uYW1lLCBzY2hlbWFfbmFtZSwgZnVuY19uYW1lKToKICAgICAiIiJU aGlzIGZ1bmN0aW9uIGFkZCB0aGUgdHJpZ2dlciBmdW5jdGlvbiB0byBzY2hl bWEiIiIKLQotICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQotICAgIGRi X2lkc19kaWN0ID0gYWxsX2lkWyJkaWQiXVswXQotICAgIHNjaGVtYV9pZHNf ZGljdCA9IGFsbF9pZFsic2NpZCJdWzBdCi0gICAgZm9yIHNlcnZlcl9jb25u ZWN0X3Jlc3BvbnNlLCBzZXJ2ZXJfaWQgaW4gemlwKHNlcnZlcl9jb25uZWN0 X3Jlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWRzKToKLSAgICAgICAgZGJfaWQg PSBkYl9pZHNfZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgZGJfY29u ID0gZGF0YWJhc2VfdXRpbHMudmVyaWZ5X2RhdGFiYXNlKHRlc3RlciwgdXRp bHMuU0VSVkVSX0dST1VQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkLCBkYl9pZCkKLSAgICAg ICAgaWYgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgotICAgICAgICAg ICAgc2NoZW1hX2lkID0gc2NoZW1hX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQp XVswXQotICAgICAgICAgICAgc2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFz KHRlc3Rlciwgc2VydmVyX2lkLCBkYl9pZCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWFfaWQpCi0gICAgICAgICAg ICBkYXRhID0gZ2V0X3RyaWdnZXJfZnVuY19kYXRhKHNlcnZlcl9jb25uZWN0 X3Jlc3BvbnNlKQotICAgICAgICAgICAgIyBHZXQgdGhlIHR5cGUgZnJvbSBj b25maWcgZGF0YS4gV2UgYXJlIGFkZGluZyB0d28gdHlwZXMKLSAgICAgICAg ICAgICMgaS5lLiBldmVudF90cmlnZ2VyIGFuZCB0cmlnZ2VyLgotICAgICAg ICAgICAgdHJpZ2dlcl9mdW5jX3R5cGVzID0gZGF0YVsncHJvcmV0dHlwZW5h bWUnXS5zcGxpdCgnLycpCi0gICAgICAgICAgICB0cmlnZ2VyX2Z1bmNfaWRz X2xpc3QgPSBbXQotICAgICAgICAgICAgZm9yIGZ1bmNfdHlwZSBpbiB0cmln Z2VyX2Z1bmNfdHlwZXM6Ci0gICAgICAgICAgICAgICAgZGF0YVsncHJvcmV0 dHlwZW5hbWUnXSA9IGZ1bmNfdHlwZQotICAgICAgICAgICAgICAgIGRhdGFb Im5hbWUiXSA9ICJldmVudF97fSIuZm9ybWF0KHN0cih1dWlkLnV1aWQ0KCkp WzE6OF0pCi0gICAgICAgICAgICAgICAgaWYgc2NoZW1hX2lkOgotICAgICAg ICAgICAgICAgICAgICBkYXRhWydwcm9uYW1lc3BhY2UnXSA9IHNjaGVtYV9p ZAotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg IHNjaGVtYV9pZCA9IGRhdGFbJ3Byb25hbWVzcGFjZSddCi0KLSAgICAgICAg ICAgICAgICByZXNwb25zZSA9IHRlc3Rlci5wb3N0KAotICAgICAgICAgICAg ICAgICAgICBUUklHR0VSX0ZVTkNUSU9OU19VUkwgKyBzdHIodXRpbHMuU0VS VkVSX0dST1VQKSArICcvJyArCi0gICAgICAgICAgICAgICAgICAgIHN0cihz ZXJ2ZXJfaWQpICsgJy8nICsgc3RyKGRiX2lkKSArICcvJyArIHN0cihzY2hl bWFfaWQpCi0gICAgICAgICAgICAgICAgICAgICsgJy8nLCBkYXRhPWpzb24u ZHVtcHMoZGF0YSksIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKLQotICAg ICAgICAgICAgICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAy MDAKLSAgICAgICAgICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2Fk cyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKLSAgICAgICAgICAg ICAgICB0cmlnZ2VyX2Z1bmNfaWQgPSByZXNwb25zZV9kYXRhWydub2RlJ11b J19pZCddCi0gICAgICAgICAgICAgICAgZXZlbnRfdHJpZ2dlcl9uYW1lID0g c3RyKHJlc3BvbnNlX2RhdGFbJ25vZGUnXVsnbGFiZWwnXSkKLSAgICAgICAg ICAgICAgICB0cmlnZ2VyX2Z1bmNfaWRzX2xpc3QuYXBwZW5kKAotICAgICAg ICAgICAgICAgICAgICAodHJpZ2dlcl9mdW5jX2lkLCBldmVudF90cmlnZ2Vy X25hbWUsIGZ1bmNfdHlwZSkpCi0KLSAgICAgICAgICAgIHdyaXRlX3RyaWdn ZXJfZnVuY19pZCh0cmlnZ2VyX2Z1bmNfaWRzX2xpc3QsIHNlcnZlcl9pZCkK LQotCi1kZWYgdmVyaWZ5X3RyaWdnZXJfZnVuY3Rpb24odGVzdGVyLCBzZXJ2 ZXJfaWQsIGRiX2lkLCBzY2hlbWFfaWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHJpZ2dlcl9mdW5jX2lkKToKLSAgICAiIiJUaGlzIGZ1bmN0 aW9uIHZlcmlmaWVzIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIHdpdGggR0VUIEFQ SSIiIgotCi0gICAgZ2V0X3Jlc3BvbnNlID0gdGVzdGVyLmdldCgKLSAgICAg ICAgVFJJR0dFUl9GVU5DVElPTlNfVVJMICsgc3RyKHV0aWxzLlNFUlZFUl9H Uk9VUCkgKyAnLycKLSAgICAgICAgKyBzdHIoc2VydmVyX2lkKSArICcvJyAr IHN0cihkYl9pZCkgKyAnLycgKwotICAgICAgICBzdHIoc2NoZW1hX2lkKSAr ICcvJyArIHN0cih0cmlnZ2VyX2Z1bmNfaWQpLAotICAgICAgICBjb250ZW50 X3R5cGU9J2h0bWwvanNvbicpCi0gICAgYXNzZXJ0IGdldF9yZXNwb25zZS5z dGF0dXNfY29kZSA9PSAyMDAKLSAgICByZXR1cm4gZ2V0X3Jlc3BvbnNlCi0K LQotZGVmIGRlbGV0ZV90cmlnZ2VyX2Z1bmN0aW9uKHRlc3Rlcik6Ci0gICAg IiIiVGhpcyBmdW5jdGlvbiBhZGQgdGhlIHRyaWdnZXIgZnVuY3Rpb24gdG8g c2NoZW1hIiIiCi0KLSAgICBhbGxfaWQgPSB1dGlscy5nZXRfaWRzKCkKLSAg ICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAgIGRiX2lkc19kaWN0 ID0gYWxsX2lkWyJkaWQiXVswXQotICAgIHNjaGVtYV9pZHNfZGljdCA9IGFs bF9pZFsic2NpZCJdWzBdCi0gICAgdHJpZ2dlcl9pZHNfZGljdCA9IGFsbF9p ZFsidGZuaWQiXVswXQotICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lk czoKLSAgICAgICAgZGJfaWQgPSBkYl9pZHNfZGljdFtpbnQoc2VydmVyX2lk KV0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMudmVyaWZ5X2Rh dGFiYXNlKHRlc3RlciwgdXRpbHMuU0VSVkVSX0dST1VQLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy X2lkLCBkYl9pZCkKLSAgICAgICAgaWYgZGJfY29uWydkYXRhJ11bImNvbm5l Y3RlZCJdOgotICAgICAgICAgICAgc2NoZW1hX2lkID0gc2NoZW1hX2lkc19k aWN0W2ludChzZXJ2ZXJfaWQpXVswXQotICAgICAgICAgICAgc2NoZW1hX3Jl c3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKAotICAgICAg ICAgICAgICAgIHRlc3Rlciwgc2VydmVyX2lkLCBkYl9pZCwgc2NoZW1hX2lk KQotICAgICAgICAgICAgaWYgc2NoZW1hX3Jlc3BvbnNlLnN0YXR1c19jb2Rl ID09IDIwMDoKLSAgICAgICAgICAgICAgICB0cmlnZ2VyX2Z1bmNfbGlzdCA9 IHRyaWdnZXJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAgICAg ICAgICAgZm9yIHRyaWdnZXJfZnVuYyBpbiB0cmlnZ2VyX2Z1bmNfbGlzdDoK LSAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcl9mdW5jX2lkID0gdHJpZ2dl cl9mdW5jWzBdCi0gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJfcmVzcG9u c2UgPSB2ZXJpZnlfdHJpZ2dlcl9mdW5jdGlvbigKLSAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3Rlciwgc2VydmVyX2lkLCBkYl9pZCwgc2NoZW1hX2lk LCB0cmlnZ2VyX2Z1bmNfaWQpCi0gICAgICAgICAgICAgICAgICAgIGlmIHRy aWdnZXJfcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwOgotICAgICAgICAg ICAgICAgICAgICAgICAgZGVsX3Jlc3BvbnNlID0gdGVzdGVyLmRlbGV0ZSgK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUklHR0VSX0ZVTkNUSU9O U19ERUxFVEVfVVJMICsgc3RyKAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHIoc2VydmVyX2lkKSArICcvJyArIHN0 cihkYl9pZCkgKyAnLycgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cihzY2hlbWFfaWQpICsgJy8nICsgc3RyKHRyaWdnZXJfZnVuY19pZCks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0 cz1UcnVlKQotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGRlbF9y ZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDAKLSAgICAgICAgICAgICAgICAg ICAgICAgIGRlbF9yZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcygKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZWxfcmVzcG9uc2UuZGF0YS5kZWNv ZGUoJ3V0Zi04JykpCi0gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQg ZGVsX3Jlc3BvbnNlX2RhdGFbJ3N1Y2Nlc3MnXSA9PSAxCisgICAgdHJ5Ogor ICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24o ZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnZGJfcGFz c3dvcmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydwb3J0J10pCisg ICAgICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKKyAgICAg ICAgcXVlcnkgPSAiQ1JFQVRFIEZVTkNUSU9OICIrc2NoZW1hX25hbWUrIi4i K2Z1bmNfbmFtZSsiKCkiIFwKKyAgICAgICAgICAgICAgICAiIFJFVFVSTlMg ZXZlbnRfdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgU1RBQkxFIExFQUtQ Uk9PRiIgXAorICAgICAgICAgICAgICAgICIgU0VDVVJJVFkgREVGSU5FUiBT RVQgZW5hYmxlX3NvcnQ9dHJ1ZSBBUyAkQk9EWSQgQkVHSU4iIFwKKyAgICAg ICAgICAgICAgICAiIE5VTEw7IEVORDsgJEJPRFkkIgorICAgICAgICBwZ19j dXJzb3IuZXhlY3V0ZShxdWVyeSkKKyAgICAgICAgY29ubmVjdGlvbi5jb21t aXQoKQorICAgICAgICAjIEdldCAnb2lkJyBmcm9tIG5ld2x5IGNyZWF0ZWQg ZnVuY3Rpb24KKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoIlNFTEVDVCBw cm8ub2lkLCBwcm8ucHJvbmFtZSBGUk9NIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAiIHBnX3Byb2MgcHJvIFdIRVJFIHByby5wcm9uYW1lPSclcyci ICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY19uYW1lKQorICAg ICAgICBmdW5jdGlvbnMgPSBwZ19jdXJzb3IuZmV0Y2hvbmUoKQorICAgICAg ICBjb25uZWN0aW9uLmNsb3NlKCkKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9u cworICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHRyYWNlYmFjay5w cmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQorCisKK2RlZiB2ZXJpZnlfdHJp Z2dlcl9mdW5jdGlvbihzZXJ2ZXIsIGRiX25hbWUsIGZ1bmNfbmFtZSk6Cisg ICAgIiIiVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgdHJpZ2dlciBmdW5j dGlvbiBpbiBkYiIiIgorICAgIGNvbm5lY3Rpb24gPSB1dGlscy5nZXRfZGJf Y29ubmVjdGlvbihkYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnZGJf cGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VydmVyWydob3N0J10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsncG9ydCddKQorICAgIHBn X2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKKyAgICBwZ19jdXJzb3Iu ZXhlY3V0ZSgiU0VMRUNUIHByby5vaWQsIHByby5wcm9uYW1lIEZST00iCisg ICAgICAgICAgICAgICAgICAgICAgIiBwZ19wcm9jIHBybyBXSEVSRSBwcm8u cHJvbmFtZT0nJXMnIiAlCisgICAgICAgICAgICAgICAgICAgICAgZnVuY19u YW1lKQorICAgIGZ1bmN0aW9ucyA9IHBnX2N1cnNvci5mZXRjaG9uZSgpCisg ICAgY29ubmVjdGlvbi5jbG9zZSgpCisgICAgcmV0dXJuIGZ1bmN0aW9ucwpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2VzL3Rlc3RzL3Rl c3Rfc2VxdWVuY2VfYWRkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2Vz L3Rlc3RzL3Rlc3Rfc2VxdWVuY2VfYWRkLnB5CmluZGV4IDAyMjI2MjEuLjg1 ZDFjZjkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy90 ZXN0cy90ZXN0X3NlcXVlbmNlX2FkZC5weQorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9zZXF1ZW5jZXMvdGVzdHMvdGVzdF9zZXF1ZW5jZV9hZGQucHkKQEAgLTYs NjcgKzYsOTAgQEAKICMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRl ciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAjCiAjICMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworaW1wb3J0IGpzb24KK2ltcG9ydCB1dWlkCiAKIGZyb20gcmVn cmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSByZWdy ZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0CiBmcm9tIHBnYWRtaW4u dXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCi1mcm9tIHBn YWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMgaW1w b3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwogZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBv cnQgdXRpbHMgYXMgXAogICAgIGRhdGFiYXNlX3V0aWxzCiBmcm9tIHBnYWRt aW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNj aGVtYXMudGVzdHMgaW1wb3J0IFwKICAgICB1dGlscyBhcyBzY2hlbWFfdXRp bHMKLWZyb20gLiBpbXBvcnQgdXRpbHMgYXMgc2VxdWVuY2VfdXRpbHMKIAog CiBjbGFzcyBTZXF1ZW5jZUFkZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9y KToKICAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIGFkZCBuZXcgc2VxdWVuY2Uo cykgdW5kZXIgc2NoZW1hIG5vZGUuICIiIgotCiAgICAgc2NlbmFyaW9zID0g WwogICAgICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciBzZXF1ZW5j ZSBub2RlLgogICAgICAgICAoJ0ZldGNoIHNlcXVlbmNlIE5vZGUgVVJMJywg ZGljdCh1cmw9Jy9icm93c2VyL3NlcXVlbmNlL29iai8nKSkKICAgICBdCiAK LSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgot ICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRo ZSB0aHJlZSB0YXNrcwotICAgICAgICAgMS4gQWRkIHRoZSB0ZXN0IHNlcnZl cihzKQotICAgICAgICAgMi4gQ29ubmVjdCB0byBzZXJ2ZXIocykKLSAgICAg ICAgIDMuIEFkZCB0aGUgZGF0YWJhc2UocykKLSAgICAgICAgIDQuIEFkZCB0 aGUgc2NoZW1hKHMpCi0KLSAgICAgICAgOnJldHVybjogTm9uZQotICAgICAg ICAiIiIKLQotICAgICAgICAjIEZpcnN0LCBhZGQgdGhlIHNlcnZlcgotICAg ICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQotCi0g ICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgY2xzLnNlcnZl cl9jb25uZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3VwLCBjbHMuc2Vy dmVyX2lkcyA9IFwKLSAgICAgICAgICAgIHNlcnZlcl91dGlscy5jb25uZWN0 X3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICBpZiBsZW4oY2xzLnNlcnZl cl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAgICAgICAgICAgcmFpc2Ug RXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVjdGVkIHRvIGFkZCB0aGUg ZGF0YWJhc2UhISEiKQotCi0gICAgICAgICMgQWRkIGRhdGFiYXNlCi0gICAg ICAgIGRhdGFiYXNlX3V0aWxzLmFkZF9kYXRhYmFzZShjbHMudGVzdGVyLCBj bHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjbHMuc2VydmVyX2lkcykKLSAgICAgICAg IyBBZGQgc2NoZW1hcwotICAgICAgICBzY2hlbWFfdXRpbHMuYWRkX3NjaGVt YXMoY2xzLnRlc3RlcikKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg IHBhc3MKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgotICAgICAgICAiIiIg VGhpcyBmdW5jdGlvbiB3aWxsIGFkZCBzZXF1ZW5jZShzKSB1bmRlciBzY2hl bWEgbm9kZS4gIiIiCi0KLSAgICAgICAgc2VxdWVuY2VfdXRpbHMuYWRkX3Nl cXVlbmNlcyhzZWxmLnRlc3RlcikKLQotICAgIEBjbGFzc21ldGhvZAotICAg IGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgICIiIlRoaXMgZnVu Y3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgc2VxdWVuY2UsIHNjaGVtYSwgZGF0 YWJhc2UsIHNlcnZlcgotICAgICAgICBhbmQgcGFyZW50IGlkIGZpbGUKLQot ICAgICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgorICAgICAgICAi IiJUaGlzIGZ1bmN0aW9uIHdpbGwgYWRkIHNlcXVlbmNlKHMpIHVuZGVyIHNj aGVtYSBub2RlLiIiIgorICAgICAgICBkYl9uYW1lID0gcGFyZW50X25vZGVf ZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQorICAgICAgICBzY2hl bWFfaW5mbyA9IHBhcmVudF9ub2RlX2RpY3RbInNjaGVtYSJdWy0xXQorICAg ICAgICBzZWxmLnNlcnZlcl9pZCA9IHNjaGVtYV9pbmZvWyJzZXJ2ZXJfaWQi XQorICAgICAgICBzZWxmLmRiX2lkID0gc2NoZW1hX2luZm9bImRiX2lkIl0K KyAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRh YmFzZShzZWxmLCB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJfaWQsIHNlbGYuZGJfaWQpCisgICAgICAgIGlmIG5vdCBkYl9jb25bJ2Rh dGEnXVsiY29ubmVjdGVkIl06CisgICAgICAgICAgICByYWlzZSBFeGNlcHRp b24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlIHRvIGFkZCBzZXF1 ZW5jZS4iKQorICAgICAgICBzY2hlbWFfaWQgPSBzY2hlbWFfaW5mb1sic2No ZW1hX2lkIl0KKyAgICAgICAgc2NoZW1hX25hbWUgPSBzY2hlbWFfaW5mb1si c2NoZW1hX25hbWUiXQorICAgICAgICBzY2hlbWFfcmVzcG9uc2UgPSBzY2hl bWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMoc2VsZi5zZXJ2ZXIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2NoZW1hX25hbWUpCisgICAgICAgIGlm IG5vdCBzY2hlbWFfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNl cHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gYWRkIHNlcXVl bmNlLiIpCisgICAgICAgIGRiX3VzZXIgPSBzZWxmLnNlcnZlclsidXNlcm5h bWUiXQorICAgICAgICBkYXRhID0geworICAgICAgICAgICAgImNhY2hlIjog IjEiLAorICAgICAgICAgICAgImN5Y2xlZCI6IFRydWUsCisgICAgICAgICAg ICAiaW5jcmVtZW50IjogIjEiLAorICAgICAgICAgICAgIm1heGltdW0iOiAi MTAwMDAwIiwKKyAgICAgICAgICAgICJtaW5pbXVtIjogIjEiLAorICAgICAg ICAgICAgIm5hbWUiOiAidGVzdF9zZXF1ZW5jZV9hZGRfJXMiICUgKHN0cih1 dWlkLnV1aWQ0KCkpWzE6Nl0pLAorICAgICAgICAgICAgInJlbGFjbCI6IFsK KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJncmFu dGVlIjogZGJfdXNlciwKKyAgICAgICAgICAgICAgICAgICAgImdyYW50b3Ii OiBkYl91c2VyLAorICAgICAgICAgICAgICAgICAgICAicHJpdmlsZWdlcyI6 CisgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAicHJpdmlsZWdlX3R5cGUiOiAiciIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJwcml2aWxlZ2UiOiBUcnVlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAid2l0aF9ncmFudCI6IFRydWUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InByaXZpbGVnZV90eXBlIjogInciLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAicHJpdmlsZWdlIjogVHJ1ZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIndpdGhfZ3JhbnQiOiBGYWxzZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi cHJpdmlsZWdlX3R5cGUiOiAiVSIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJwcml2aWxlZ2UiOiBUcnVlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAid2l0aF9ncmFudCI6IEZhbHNlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg ICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAg ICAgICAgICAic2NoZW1hIjogc2NoZW1hX25hbWUsCisgICAgICAgICAgICAi c2VjdXJpdGllcyI6IFtdLAorICAgICAgICAgICAgInNlcW93bmVyIjogZGJf dXNlciwKKyAgICAgICAgICAgICJzdGFydCI6ICIxMDAiCisgICAgICAgIH0K KyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KAorICAgICAg ICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcv JyArCisgICAgICAgICAgICBzdHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsg c3RyKHNlbGYuZGJfaWQpICsKKyAgICAgICAgICAgICcvJyArIHN0cihzY2hl bWFfaWQpICsgJy8nLAorICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRh dGEpLAorICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQor ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29k ZSwgMjAwKQogCi0gICAgICAgIHNlcXVlbmNlX3V0aWxzLmRlbGV0ZV9zZXF1 ZW5jZShjbHMudGVzdGVyKQotICAgICAgICBzY2hlbWFfdXRpbHMuZGVsZXRl X3NjaGVtYShjbHMudGVzdGVyKQotICAgICAgICBkYXRhYmFzZV91dGlscy5k ZWxldGVfZGF0YWJhc2UoY2xzLnRlc3RlcikKLSAgICAgICAgc2VydmVyX3V0 aWxzLmRlbGV0ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgdXRpbHMu ZGVsZXRlX3BhcmVudF9pZF9maWxlKCkKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIERp c2Nvbm5lY3QgdGhlIGRhdGFiYXNlCisgICAgICAgIGRhdGFiYXNlX3V0aWxz LmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNl bGYuZGJfaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5j ZXMvdGVzdHMvdGVzdF9zZXF1ZW5jZV9kZWxldGUucHkgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9zZXF1ZW5jZXMvdGVzdHMvdGVzdF9zZXF1ZW5jZV9kZWxldGUucHkK aW5kZXggOGU3NDIxOC4uMTE4MmY1ZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvc2VxdWVuY2VzL3Rlc3RzL3Rlc3Rfc2VxdWVuY2VfZGVsZXRlLnB5 CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy90ZXN0cy90ZXN0X3Nl cXVlbmNlX2RlbGV0ZS5weQpAQCAtNiwxMCArNiwxMSBAQAogIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgdXVpZAog CiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMK K2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAogZnJv bSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRv cgotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJz LnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKIGZyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu dGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKICAgICBkYXRhYmFzZV91dGlscwog ZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRh dGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCkBAIC0xOCw1OCArMTks NDggQEAgZnJvbSAuIGltcG9ydCB1dGlscyBhcyBzZXF1ZW5jZV91dGlscwog CiAKIGNsYXNzIFNlcXVlbmNlRGVsZXRlVGVzdENhc2UoQmFzZVRlc3RHZW5l cmF0b3IpOgotICAgICIiIiBUaGlzIGNsYXNzIHdpbGwgZGVsZXRlIGFkZGVk IHNlcXVlbmNlIHVuZGVyIHNjaGVtYSBub2RlLiAiIiIKLQorICAgICIiIlRo aXMgY2xhc3Mgd2lsbCBkZWxldGUgYWRkZWQgc2VxdWVuY2UgdW5kZXIgc2No ZW1hIG5vZGUuIiIiCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIEZl dGNoaW5nIGRlZmF1bHQgVVJMIGZvciBzZXF1ZW5jZSBub2RlLgogICAgICAg ICAoJ0ZldGNoIHNlcXVlbmNlIE5vZGUgVVJMJywgZGljdCh1cmw9Jy9icm93 c2VyL3NlcXVlbmNlL29iai8nKSkKICAgICBdCiAKLSAgICBAY2xhc3NtZXRo b2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAiIiIKLSAg ICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0aHJlZSB0YXNrcwot ICAgICAgICAgMS4gQWRkIHRoZSB0ZXN0IHNlcnZlcihzKQotICAgICAgICAg Mi4gQ29ubmVjdCB0byBzZXJ2ZXIocykKLSAgICAgICAgIDMuIEFkZCBkYXRh YmFzZShzKQotICAgICAgICAgNC4gQWRkIHNjaGVtYShzKQotICAgICAgICAg NS4gQWRkIHNlcXVlbmNlKHMpCi0KLSAgICAgICAgOnJldHVybjogTm9uZQot ICAgICAgICAiIiIKLQotICAgICAgICAjIEZpcnN0LCBhZGQgdGhlIHNlcnZl cgotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVy KQotCi0gICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgY2xz LnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3VwLCBj bHMuc2VydmVyX2lkcyA9IFwKLSAgICAgICAgICAgIHNlcnZlcl91dGlscy5j b25uZWN0X3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICBpZiBsZW4oY2xz LnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAgICAgICAgICAg cmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVjdGVkIHRvIGFk ZCB0aGUgZGF0YWJhc2UhISEiKQotCi0gICAgICAgICMgQWRkIGRhdGFiYXNl KHMpCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmFkZF9kYXRhYmFzZShjbHMu dGVzdGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2VydmVyX2lkcykK LSAgICAgICAgIyBBZGQgc2NoZW1hKHMpCi0gICAgICAgIHNjaGVtYV91dGls cy5hZGRfc2NoZW1hcyhjbHMudGVzdGVyKQotCi0gICAgICAgICMgQWRkIHNl cXVlbmNlKHMpCi0gICAgICAgIHNlcXVlbmNlX3V0aWxzLmFkZF9zZXF1ZW5j ZXMoY2xzLnRlc3RlcikKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg IHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1b LTFdWyJkYl9uYW1lIl0KKyAgICAgICAgc2NoZW1hX2luZm8gPSBwYXJlbnRf bm9kZV9kaWN0WyJzY2hlbWEiXVstMV0KKyAgICAgICAgc2VsZi5zZXJ2ZXJf aWQgPSBzY2hlbWFfaW5mb1sic2VydmVyX2lkIl0KKyAgICAgICAgc2VsZi5k Yl9pZCA9IHNjaGVtYV9pbmZvWyJkYl9pZCJdCisgICAgICAgIGRiX2NvbiA9 IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgdXRpbHMu U0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lk KQorICAgICAgICBpZiBub3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJd OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgY29u bmVjdCB0byBkYXRhYmFzZSB0byBhZGQgc2VxdWVuY2UuIikKKyAgICAgICAg c2VsZi5zY2hlbWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lkIl0KKyAg ICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHNjaGVtYV9pbmZvWyJzY2hlbWFf bmFtZSJdCisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91dGls cy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCisgICAgICAg IGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBF eGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gYWRkIHNl cXVlbmNlLiIpCisgICAgICAgIHNlbGYuc2VxdWVuY2VfbmFtZSA9ICJ0ZXN0 X3NlcXVlbmNlX2RlbGV0ZV8lcyIgJSBzdHIodXVpZC51dWlkNCgpKVsxOjZd CisgICAgICAgIHNlbGYuc2VxdWVuY2VfaWQgPSBzZXF1ZW5jZV91dGlscy5j cmVhdGVfc2VxdWVuY2VzKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIsIHNl bGYuZGJfbmFtZSwgc2VsZi5zY2hlbWFfbmFtZSwgc2VsZi5zZXF1ZW5jZV9u YW1lKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIiBU aGlzIGZ1bmN0aW9uIHdpbGwgZGVsZXRlIGFkZGVkIHNlcXVlbmNlIHVuZGVy IHNjaGVtYSBub2RlLiAiIiIKKyAgICAgICAgc2VxdWVuY2VfcmVzcG9uc2Ug PSBzZXF1ZW5jZV91dGlscy52ZXJpZnlfc2VxdWVuY2Uoc2VsZi5zZXJ2ZXIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5zZXF1ZW5jZV9uYW1lKQorICAgICAgICBpZiBub3Qgc2VxdWVuY2Vf cmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxk IG5vdCBmaW5kIHRoZSBzZXF1ZW5jZSB0byBkZWxldGUuIikKKyAgICAgICAg cmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5kZWxldGUoCisgICAgICAgICAgICBz ZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAg ICAgICAgICAgIHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKworICAgICAg ICAgICAgc3RyKHNlbGYuZGJfaWQpICsgJy8nICsKKyAgICAgICAgICAgIHN0 cihzZWxmLnNjaGVtYV9pZCkgKyAnLycgKworICAgICAgICAgICAgc3RyKHNl bGYuc2VxdWVuY2VfaWQpLAorICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0 cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5z dGF0dXNfY29kZSwgMjAwKQogCi0gICAgICAgIHNlcXVlbmNlX3V0aWxzLmRl bGV0ZV9zZXF1ZW5jZShzZWxmLnRlc3RlcikKLQotICAgIEBjbGFzc21ldGhv ZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgICIiIlRo aXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgc2VxdWVuY2UsIHNjaGVt YSwgZGF0YWJhc2UsIHNlcnZlcgotICAgICAgICBhbmQgcGFyZW50IGlkIGZp bGUKLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0g ICAgICAgIHNjaGVtYV91dGlscy5kZWxldGVfc2NoZW1hKGNscy50ZXN0ZXIp Ci0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmRlbGV0ZV9kYXRhYmFzZShjbHMu dGVzdGVyKQotICAgICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihj bHMudGVzdGVyKQotICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2Zp bGUoKQorICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIyBEaXNj b25uZWN0IHRoZSBkYXRhYmFzZQorICAgICAgICBkYXRhYmFzZV91dGlscy5k aXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBzZWxm LmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2Vz L3Rlc3RzL3Rlc3Rfc2VxdWVuY2VfZ2V0LnB5IGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv c2VxdWVuY2VzL3Rlc3RzL3Rlc3Rfc2VxdWVuY2VfZ2V0LnB5CmluZGV4IDE5 NDFiOTguLmU2MmJhNTUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Nl cXVlbmNlcy90ZXN0cy90ZXN0X3NlcXVlbmNlX2dldC5weQorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9zZXF1ZW5jZXMvdGVzdHMvdGVzdF9zZXF1ZW5jZV9nZXQu cHkKQEAgLTYsMTAgKzYsMTEgQEAKICMgVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAjCiAjICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHV1aWQKIAogZnJvbSByZWdyZXNz aW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Np b24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKIGZyb20gcGdhZG1pbi51dGls cy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKLWZyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQg dXRpbHMgYXMgc2VydmVyX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1 dGlscyBhcyBcCiAgICAgZGF0YWJhc2VfdXRpbHMKIGZyb20gcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1h cy50ZXN0cyBpbXBvcnQgXApAQCAtMTgsNzYgKzE5LDQzIEBAIGZyb20gLiBp bXBvcnQgdXRpbHMgYXMgc2VxdWVuY2VfdXRpbHMKIAogCiBjbGFzcyBTZXF1 ZW5jZUdldFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKLSAgICAiIiIg VGhpcyBjbGFzcyB3aWxsIGZldGNoIGFkZGVkIHNlcXVlbmNlIHVuZGVyIHNj aGVtYSBub2RlLiAiIiIKLQorICAgICIiIlRoaXMgY2xhc3Mgd2lsbCBmZXRj aCBhZGRlZCBzZXF1ZW5jZSB1bmRlciBzY2hlbWEgbm9kZS4iIiIKICAgICBz Y2VuYXJpb3MgPSBbCiAgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwg Zm9yIHNlcXVlbmNlIG5vZGUuCiAgICAgICAgICgnRmV0Y2ggc2VxdWVuY2Ug Tm9kZSBVUkwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvc2VxdWVuY2Uvb2JqLycp KQogICAgIF0KIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENs YXNzKGNscyk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9u IHBlcmZvcm0gdGhlIHRocmVlIHRhc2tzCi0gICAgICAgICAxLiBBZGQgdGhl IHRlc3Qgc2VydmVyKHMpCi0gICAgICAgICAyLiBDb25uZWN0IHRvIHNlcnZl cihzKQotICAgICAgICAgMy4gQWRkIGRhdGFiYXNlKHMpCi0gICAgICAgICA0 LiBBZGQgc2NoZW1hKHMpCi0gICAgICAgICA1LiBBZGQgc2VxdWVuY2UocykK LQotICAgICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0gICAg ICAgICMgRmlyc3QsIGFkZCB0aGUgc2VydmVyCi0gICAgICAgIHNlcnZlcl91 dGlscy5hZGRfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgIyBDb25u ZWN0IHRvIHNlcnZlcgotICAgICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVz cG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAot ICAgICAgICAgICAgc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50 ZXN0ZXIpCi0gICAgICAgIGlmIGxlbihjbHMuc2VydmVyX2Nvbm5lY3RfcmVz cG9uc2UpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5v IFNlcnZlcihzKSBjb25uZWN0ZWQgdG8gYWRkIHRoZSBkYXRhYmFzZSEhISIp Ci0KLSAgICAgICAgIyBBZGQgZGF0YWJhc2UocykKLSAgICAgICAgZGF0YWJh c2VfdXRpbHMuYWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJf Y29ubmVjdF9yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNscy5zZXJ2ZXJfaWRzKQotICAgICAgICAjIEFkZCBzY2hl bWEocykKLSAgICAgICAgc2NoZW1hX3V0aWxzLmFkZF9zY2hlbWFzKGNscy50 ZXN0ZXIpCi0KLSAgICAgICAgIyBBZGQgc2VxdWVuY2UocykKLSAgICAgICAg c2VxdWVuY2VfdXRpbHMuYWRkX3NlcXVlbmNlcyhjbHMudGVzdGVyKQorICAg IGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5kYl9uYW1lID0gcGFy ZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQorICAg ICAgICBzY2hlbWFfaW5mbyA9IHBhcmVudF9ub2RlX2RpY3RbInNjaGVtYSJd Wy0xXQorICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHNjaGVtYV9pbmZvWyJz ZXJ2ZXJfaWQiXQorICAgICAgICBzZWxmLmRiX2lkID0gc2NoZW1hX2luZm9b ImRiX2lkIl0KKyAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29u bmVjdF9kYXRhYmFzZShzZWxmLCB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCisgICAgICAgIGlmIG5vdCBk Yl9jb25bJ2RhdGEnXVsiY29ubmVjdGVkIl06CisgICAgICAgICAgICByYWlz ZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlIHRv IGFkZCBzZXF1ZW5jZS4iKQorICAgICAgICBzZWxmLnNjaGVtYV9pZCA9IHNj aGVtYV9pbmZvWyJzY2hlbWFfaWQiXQorICAgICAgICBzZWxmLnNjaGVtYV9u YW1lID0gc2NoZW1hX2luZm9bInNjaGVtYV9uYW1lIl0KKyAgICAgICAgc2No ZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKHNl bGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5zY2hlbWFfbmFtZSkKKyAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNw b25zZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90 IGZpbmQgdGhlIHNjaGVtYSB0byBhZGQgc2VxdWVuY2UuIikKKyAgICAgICAg c2VsZi5zZXF1ZW5jZV9uYW1lID0gInRlc3Rfc2VxdWVuY2VfZGVsZXRlXyVz IiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0KKyAgICAgICAgc2VsZi5zZXF1 ZW5jZV9pZCA9IHNlcXVlbmNlX3V0aWxzLmNyZWF0ZV9zZXF1ZW5jZXMoCisg ICAgICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLCBzZWxmLnNj aGVtYV9uYW1lLCBzZWxmLnNlcXVlbmNlX25hbWUpCiAKICAgICBkZWYgcnVu VGVzdChzZWxmKToKLSAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBm ZXRjaCBhZGRlZCBzZXF1ZW5jZSB1bmRlciBzY2hlbWEgbm9kZS4gIiIiCi0K LSAgICAgICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lkcygpCi0gICAgICAgIHNl cnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCi0gICAgICAgIGRiX2lkc19kaWN0 ID0gYWxsX2lkWyJkaWQiXVswXQotICAgICAgICBzY2hlbWFfaWRzX2RpY3Qg PSBhbGxfaWRbInNjaWQiXVswXQotICAgICAgICBzZXF1ZW5jZV9pZHNfZGlj dCA9IGFsbF9pZFsic2VpZCJdWzBdCi0KLSAgICAgICAgZm9yIHNlcnZlcl9p ZCBpbiBzZXJ2ZXJfaWRzOgotICAgICAgICAgICAgZGJfaWQgPSBkYl9pZHNf ZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgICAgIHNjaGVtYV9pbmZv ID0gc2NoZW1hX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAg ICAgc2NoZW1hX2lkID0gc2NoZW1hX2luZm9bMF0KLSAgICAgICAgICAgIHNl cXVlbmNlX2lkID0gc2VxdWVuY2VfaWRzX2RpY3Rbc2VydmVyX2lkXQotICAg ICAgICAgICAgZ2V0X3Jlc3BvbnNlID0gc2VxdWVuY2VfdXRpbHMudmVyaWZ5 X3NlcXVlbmNlKHNlbGYudGVzdGVyLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLlNF UlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hX2lkLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlcXVlbmNlX2lkKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF cXVhbHMoZ2V0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0KLSAgICBA Y2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAg ICAgICAiIiJUaGlzIGZ1bmN0aW9uIGRlbGV0ZSB0aGUgYWRkZWQgc2VxdWVu Y2UsIHNjaGVtYSwgZGF0YWJhc2UsIHNlcnZlcgotICAgICAgICBhbmQgcGFy ZW50IGlkIGZpbGUKLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAg ICIiIgotCi0gICAgICAgIHNlcXVlbmNlX3V0aWxzLmRlbGV0ZV9zZXF1ZW5j ZShjbHMudGVzdGVyKQotICAgICAgICBzY2hlbWFfdXRpbHMuZGVsZXRlX3Nj aGVtYShjbHMudGVzdGVyKQotICAgICAgICBkYXRhYmFzZV91dGlscy5kZWxl dGVfZGF0YWJhc2UoY2xzLnRlc3RlcikKLSAgICAgICAgc2VydmVyX3V0aWxz LmRlbGV0ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgdXRpbHMuZGVs ZXRlX3BhcmVudF9pZF9maWxlKCkKKyAgICAgICAgIiIiVGhpcyBmdW5jdGlv biB3aWxsIGZldGNoIGFkZGVkIHNlcXVlbmNlIHVuZGVyIHNjaGVtYSBub2Rl LiIiIgorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmdldCgKKyAg ICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkg KyAnLycgKworICAgICAgICAgICAgc3RyKHNlbGYuc2VydmVyX2lkKSArICcv JyArCisgICAgICAgICAgICBzdHIoc2VsZi5kYl9pZCkgKyAnLycgKworICAg ICAgICAgICAgc3RyKHNlbGYuc2NoZW1hX2lkKSArICcvJyArCisgICAgICAg ICAgICBzdHIoc2VsZi5zZXF1ZW5jZV9pZCksCisgICAgICAgICAgICBmb2xs b3dfcmVkaXJlY3RzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisKKyAgICBkZWYgdGVhckRv d24oc2VsZik6CisgICAgICAgICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UK KyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShz ZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy90ZXN0cy90ZXN0X3NlcXVlbmNl X3B1dC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy90ZXN0cy90ZXN0 X3NlcXVlbmNlX3B1dC5weQppbmRleCA1ZTQ0OWEzLi40MDZkZjRhIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5jZXMvdGVzdHMvdGVzdF9z ZXF1ZW5jZV9wdXQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2Vz L3Rlc3RzL3Rlc3Rfc2VxdWVuY2VfcHV0LnB5CkBAIC02LDggKzYsMTAgQEAK ICMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1w b3J0IHV1aWQKIAogZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxz IGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2Rl X2RpY3QKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRl c3RHZW5lcmF0b3IKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91 cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0aWxz CiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMu ZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCkBAIC0xNiw5NyAr MTgsNTYgQEAgZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCiAgICAg dXRpbHMgYXMgc2NoZW1hX3V0aWxzCiBmcm9tIC4gaW1wb3J0IHV0aWxzIGFz IHNlcXVlbmNlX3V0aWxzCiBpbXBvcnQganNvbgotZnJvbSByZWdyZXNzaW9u LnRlc3Rfc2V0dXAgaW1wb3J0IGFkdmFuY2VkX2NvbmZpZ19kYXRhCiAKIAog Y2xhc3MgU2VxdWVuY2VQdXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6 Ci0gICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCB1cGRhdGUgYWRkZWQgc2VxdWVu Y2UgdW5kZXIgc2NoZW1hIG5vZGUuICIiIgotCisgICAgIiIiVGhpcyBjbGFz cyB3aWxsIHVwZGF0ZSBhZGRlZCBzZXF1ZW5jZSB1bmRlciBzY2hlbWEgbm9k ZS4iIiIKICAgICBzY2VuYXJpb3MgPSBbCiAgICAgICAgICMgRmV0Y2hpbmcg ZGVmYXVsdCBVUkwgZm9yIHNlcXVlbmNlIG5vZGUuCiAgICAgICAgICgnRmV0 Y2ggc2VxdWVuY2UgTm9kZSBVUkwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvc2Vx dWVuY2Uvb2JqLycpKQogICAgIF0KIAotICAgIEBjbGFzc21ldGhvZAotICAg IGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgICIiIgotICAgICAgICBU aGlzIGZ1bmN0aW9uIHBlcmZvcm0gdGhlIHRocmVlIHRhc2tzCi0gICAgICAg ICAxLiBBZGQgdGhlIHRlc3Qgc2VydmVyKHMpCi0gICAgICAgICAyLiBDb25u ZWN0IHRvIHNlcnZlcihzKQotICAgICAgICAgMy4gQWRkIGRhdGFiYXNlKHMp Ci0gICAgICAgICA0LiBBZGQgc2NoZW1hKHMpCi0gICAgICAgICA1LiBBZGQg c2VxdWVuY2UocykKLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAg ICIiIgotCi0gICAgICAgICMgRmlyc3QsIGFkZCB0aGUgc2VydmVyCi0gICAg ICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAg ICAgICAgIyBDb25uZWN0IHRvIHNlcnZlcgotICAgICAgICBjbHMuc2VydmVy X2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2 ZXJfaWRzID0gXAotICAgICAgICAgICAgc2VydmVyX3V0aWxzLmNvbm5lY3Rf c2VydmVyKGNscy50ZXN0ZXIpCi0gICAgICAgIGlmIGxlbihjbHMuc2VydmVy X2Nvbm5lY3RfcmVzcG9uc2UpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBF eGNlcHRpb24oIk5vIFNlcnZlcihzKSBjb25uZWN0ZWQgdG8gYWRkIHRoZSBk YXRhYmFzZSEhISIpCi0KLSAgICAgICAgIyBBZGQgZGF0YWJhc2UocykKLSAg ICAgICAgZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIs IGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfaWRzKQotICAgICAg ICAjIEFkZCBzY2hlbWEocykKLSAgICAgICAgc2NoZW1hX3V0aWxzLmFkZF9z Y2hlbWFzKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgIyBBZGQgc2VxdWVuY2Uo cykKLSAgICAgICAgc2VxdWVuY2VfdXRpbHMuYWRkX3NlcXVlbmNlcyhjbHMu dGVzdGVyKQorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5k Yl9uYW1lID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRi X25hbWUiXQorICAgICAgICBzY2hlbWFfaW5mbyA9IHBhcmVudF9ub2RlX2Rp Y3RbInNjaGVtYSJdWy0xXQorICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHNj aGVtYV9pbmZvWyJzZXJ2ZXJfaWQiXQorICAgICAgICBzZWxmLmRiX2lkID0g c2NoZW1hX2luZm9bImRiX2lkIl0KKyAgICAgICAgZGJfY29uID0gZGF0YWJh c2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLCB1dGlscy5TRVJWRVJf R1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCisgICAg ICAgIGlmIG5vdCBkYl9jb25bJ2RhdGEnXVsiY29ubmVjdGVkIl06CisgICAg ICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRv IGRhdGFiYXNlIHRvIGFkZCBzZXF1ZW5jZS4iKQorICAgICAgICBzZWxmLnNj aGVtYV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hlbWFfaWQiXQorICAgICAgICBz ZWxmLnNjaGVtYV9uYW1lID0gc2NoZW1hX2luZm9bInNjaGVtYV9uYW1lIl0K KyAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlm eV9zY2hlbWFzKHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSkKKyAgICAgICAgaWYgbm90 IHNjaGVtYV9yZXNwb25zZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv bigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVtYSB0byBhZGQgc2VxdWVuY2Uu IikKKyAgICAgICAgc2VsZi5zZXF1ZW5jZV9uYW1lID0gInRlc3Rfc2VxdWVu Y2VfZGVsZXRlXyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0KKyAgICAg ICAgc2VsZi5zZXF1ZW5jZV9pZCA9IHNlcXVlbmNlX3V0aWxzLmNyZWF0ZV9z ZXF1ZW5jZXMoCisgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5kYl9u YW1lLCBzZWxmLnNjaGVtYV9uYW1lLCBzZWxmLnNlcXVlbmNlX25hbWUpCiAK ICAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgIiIiIFRoaXMgZnVu Y3Rpb24gd2lsbCB1cGRhdGUgYWRkZWQgc2VxdWVuY2UgdW5kZXIgc2NoZW1h IG5vZGUuICIiIgotCi0gICAgICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMo KQotICAgICAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAgICAg ICBkYl9pZHNfZGljdCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAgICAgICAgc2No ZW1hX2lkc19kaWN0ID0gYWxsX2lkWyJzY2lkIl1bMF0KLSAgICAgICAgc2Vx dWVuY2VfaWRzX2RpY3QgPSBhbGxfaWRbInNlaWQiXVswXQotCi0gICAgICAg IGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKLSAgICAgICAgICAgIGRi X2lkID0gZGJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAgICAg ICBzY2hlbWFfaW5mbyA9IHNjaGVtYV9pZHNfZGljdFtpbnQoc2VydmVyX2lk KV0KLSAgICAgICAgICAgIHNjaGVtYV9pZCA9IHNjaGVtYV9pbmZvWzBdCi0g ICAgICAgICAgICBzZXF1ZW5jZV9pZCA9IHNlcXVlbmNlX2lkc19kaWN0W3Nl cnZlcl9pZF0KLSAgICAgICAgICAgIGdldF9yZXNwb25zZSA9IHNlcXVlbmNl X3V0aWxzLnZlcmlmeV9zZXF1ZW5jZShzZWxmLnRlc3RlciwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRiX2lkLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVt YV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9pZCkKLSAgICAgICAgICAg IGlmIGdldF9yZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDA6Ci0gICAgICAg ICAgICAgICAgZGF0YSA9IFwKLSAgICAgICAgICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgICAgICAgICAgImNvbW1lbnQiOgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFkdmFuY2VkX2NvbmZpZ19kYXRhWydzZXF1bmNl X3VwZGF0ZV9kYXRhJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBb J2NvbW1lbnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpZCI6IHNl cXVlbmNlX2lkCi0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg ICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dCgKLSAgICAg ICAgICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dS T1VQKSArICcvJyArCi0gICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJf aWQpICsgJy8nICsKLSAgICAgICAgICAgICAgICAgICAgc3RyKGRiX2lkKSAr ICcvJyArCi0gICAgICAgICAgICAgICAgICAgIHN0cihzY2hlbWFfaWQpICsg Jy8nICsKLSAgICAgICAgICAgICAgICAgICAgc3RyKHNlcXVlbmNlX2lkKSwK LSAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRhdGEpLAot ICAgICAgICAgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCi0g ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHV0X3Jlc3BvbnNl LnN0YXR1c19jb2RlLCAyMDApCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk ZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICAiIiJUaGlzIGZ1bmN0 aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIHNlcXVlbmNlLCBzY2hlbWEsIGRhdGFi YXNlLCBzZXJ2ZXIKLSAgICAgICAgYW5kIHBhcmVudCBpZCBmaWxlCi0KLSAg ICAgICAgOnJldHVybjogTm9uZQotICAgICAgICAiIiIKLQotICAgICAgICBz ZXF1ZW5jZV91dGlscy5kZWxldGVfc2VxdWVuY2UoY2xzLnRlc3RlcikKLSAg ICAgICAgc2NoZW1hX3V0aWxzLmRlbGV0ZV9zY2hlbWEoY2xzLnRlc3RlcikK LSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGVsZXRlX2RhdGFiYXNlKGNscy50 ZXN0ZXIpCi0gICAgICAgIHNlcnZlcl91dGlscy5kZWxldGVfc2VydmVyKGNs cy50ZXN0ZXIpCi0gICAgICAgIHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmls ZSgpCisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgYWRk ZWQgc2VxdWVuY2UgdW5kZXIgc2NoZW1hIG5vZGUuIiIiCisgICAgICAgIHNl cXVlbmNlX3Jlc3BvbnNlID0gc2VxdWVuY2VfdXRpbHMudmVyaWZ5X3NlcXVl bmNlKHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRiX25hbWUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc2VxdWVuY2VfbmFtZSkKKyAgICAgICAg aWYgbm90IHNlcXVlbmNlX3Jlc3BvbnNlOgorICAgICAgICAgICAgcmFpc2Ug RXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCB0aGUgc2VxdWVuY2UgdG8gZGVs ZXRlLiIpCisgICAgICAgIGRhdGEgPSB7CisgICAgICAgICAgICAiY29tbWVu dCI6ICJUaGlzIGlzIHNlcXVlbmNlIHVwZGF0ZSBjb21tZW50IiwKKyAgICAg ICAgICAgICJpZCI6IHNlbGYuc2VxdWVuY2VfaWQKKyAgICAgICAgfQorICAg ICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dCgKKyAgICAgICAgICAg IHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKwor ICAgICAgICAgICAgc3RyKHNlbGYuc2VydmVyX2lkKSArICcvJyArCisgICAg ICAgICAgICBzdHIoc2VsZi5kYl9pZCkgKyAnLycgKworICAgICAgICAgICAg c3RyKHNlbGYuc2NoZW1hX2lkKSArICcvJyArCisgICAgICAgICAgICBzdHIo c2VsZi5zZXF1ZW5jZV9pZCksCisgICAgICAgICAgICBkYXRhPWpzb24uZHVt cHMoZGF0YSksCisgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUp CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19j b2RlLCAyMDApCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAg ICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKKyAgICAgICAgZGF0YWJhc2Vf dXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9p ZCwgc2VsZi5kYl9pZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Nl cXVlbmNlcy90ZXN0cy91dGlscy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVl bmNlcy90ZXN0cy91dGlscy5weQppbmRleCAzNzQwNDhkLi5kZjBiNTIzIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5jZXMvdGVzdHMvdXRp bHMucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2VzL3Rlc3RzL3V0 aWxzLnB5CkBAIC02LDE0NyArNiw3NCBAQAogIyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKICMKICMg IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0 IHByaW50X2Z1bmN0aW9uCitpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgc3lz CiAKLWltcG9ydCBqc29uCi1pbXBvcnQgb3MKLWltcG9ydCBwaWNrbGUKLWZy b20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBwaWNrbGVfcGF0aCwg YWR2YW5jZWRfY29uZmlnX2RhdGEKLWZyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgc2Vy dmVyX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCBcCi0gICAgdXRpbHMg YXMgZGF0YWJhc2VfdXRpbHMKIGZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVz dF91dGlscyBhcyB1dGlscwotaW1wb3J0IHV1aWQKIAotU0VRVUVOQ0VfVVJM ID0gJy9icm93c2VyL3NlcXVlbmNlL29iai8nCiAKLQotZGVmIGdldF9zZXF1 ZW5jZV9jb25maWdfZGF0YShzY2hlbWFfbmFtZSwgc2VydmVyX2Nvbm5lY3Rf ZGF0YSk6Ci0gICAgYWR2X2NvbmZpZ19kYXRhID0gTm9uZQotICAgIGRiX3Vz ZXIgPSBzZXJ2ZXJfY29ubmVjdF9kYXRhWydkYXRhJ11bJ3VzZXInXVsnbmFt ZSddCi0KLSAgICAjIEdldCB0aGUgY29uZmlnIGRhdGEgb2YgYXBwcm9wcmlh dGUgZGIgdXNlcgotICAgIGZvciBjb25maWdfdGVzdF9kYXRhIGluIGFkdmFu Y2VkX2NvbmZpZ19kYXRhWydzZXF1ZW5jZV9jcmVkZW50aWFscyddOgotICAg ICAgICBpZiBkYl91c2VyID09IGNvbmZpZ190ZXN0X2RhdGFbJ293bmVyJ106 Ci0gICAgICAgICAgICBhZHZfY29uZmlnX2RhdGEgPSBjb25maWdfdGVzdF9k YXRhCi0KLSAgICAgICAgICAgIGRhdGEgPSBcCi0gICAgICAgICAgICAgICAg ewotICAgICAgICAgICAgICAgICAgICAiY2FjaGUiOiBhZHZfY29uZmlnX2Rh dGFbJ2NhY2hlJ10sCi0gICAgICAgICAgICAgICAgICAgICJjeWNsZWQiOiBh ZHZfY29uZmlnX2RhdGFbJ2N5Y2xlZCddLAotICAgICAgICAgICAgICAgICAg ICAiaW5jcmVtZW50IjogYWR2X2NvbmZpZ19kYXRhWydpbmNyZW1lbnQnXSwK LSAgICAgICAgICAgICAgICAgICAgIm1heGltdW0iOiBhZHZfY29uZmlnX2Rh dGFbJ21heF92YWx1ZSddLAotICAgICAgICAgICAgICAgICAgICAibWluaW11 bSI6IGFkdl9jb25maWdfZGF0YVsnbWluX3ZhbHVlJ10sCi0gICAgICAgICAg ICAgICAgICAgICJuYW1lIjogInNlcXVlbmNlX3swfSIuZm9ybWF0KHN0cih1 dWlkLnV1aWQ0KCkpWzE6NF0pLAotICAgICAgICAgICAgICAgICAgICAicmVs YWNsIjogYWR2X2NvbmZpZ19kYXRhWydhY2wnXSwKLSAgICAgICAgICAgICAg ICAgICAgInNjaGVtYSI6IHNjaGVtYV9uYW1lLAotICAgICAgICAgICAgICAg ICAgICAic2VjdXJpdGllcyI6IGFkdl9jb25maWdfZGF0YVsnc2VjdXJpdHkn XSwKLSAgICAgICAgICAgICAgICAgICAgInNlcW93bmVyIjogYWR2X2NvbmZp Z19kYXRhWydvd25lciddLAotICAgICAgICAgICAgICAgICAgICAic3RhcnQi OiBhZHZfY29uZmlnX2RhdGFbJ3N0YXJ0X3ZhbCddCi0gICAgICAgICAgICAg ICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZGF0YQotCi0KLWRlZiBhZGRf c2VxdWVuY2VzKHRlc3Rlcik6Ci0gICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lk cygpCi0gICAgc2VydmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KLSAgICBkYl9p ZHNfZGljdCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAgICBzY2hlbWFfaW5mb19k aWN0ID0gYWxsX2lkWyJzY2lkIl1bMF0KLQotICAgIGZvciBzZXJ2ZXJfaWQg aW4gc2VydmVyX2lkczoKLSAgICAgICAgZGJfaWQgPSBkYl9pZHNfZGljdFtp bnQoc2VydmVyX2lkKV0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRp bHMudmVyaWZ5X2RhdGFiYXNlKHRlc3RlciwgdXRpbHMuU0VSVkVSX0dST1VQ LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyX2lkLCBkYl9pZCkKLSAgICAgICAgaWYgZGJfY29uWydk YXRhJ11bImNvbm5lY3RlZCJdOgotICAgICAgICAgICAgc2VydmVyX2Nvbm5l Y3RfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMudmVyaWZ5X3NlcnZlcigKLSAg ICAgICAgICAgICAgICB0ZXN0ZXIsIHV0aWxzLlNFUlZFUl9HUk9VUCwgc2Vy dmVyX2lkKQotCi0gICAgICAgICAgICBzY2hlbWFfbmFtZSA9IHNjaGVtYV9p bmZvX2RpY3RbaW50KHNlcnZlcl9pZCldWzFdCi0gICAgICAgICAgICBkYXRh ID0gZ2V0X3NlcXVlbmNlX2NvbmZpZ19kYXRhKHNjaGVtYV9uYW1lLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2 ZXJfY29ubmVjdF9yZXNwb25zZSkKLSAgICAgICAgICAgIHNjaGVtYV9pZCA9 IHNjaGVtYV9pbmZvX2RpY3RbaW50KHNlcnZlcl9pZCldWzBdCi0KLSAgICAg ICAgICAgIHJlc3BvbnNlID0gdGVzdGVyLnBvc3QoCi0gICAgICAgICAgICAg ICAgU0VRVUVOQ0VfVVJMICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAn LycgKwotICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsg c3RyKGRiX2lkKSArCi0gICAgICAgICAgICAgICAgJy8nICsgc3RyKHNjaGVt YV9pZCkgKyAnLycsCi0gICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBz KGRhdGEpLAotICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9q c29uJykKLSAgICAgICAgICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29k ZSA9PSAyMDAKLSAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxv YWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQotICAgICAgICAg ICAgd3JpdGVfc2VxdWVuY2VfaW5mbyhyZXNwb25zZV9kYXRhLCBzZXJ2ZXJf aWQpCi0KLQotZGVmIHdyaXRlX3NlcXVlbmNlX2luZm8ocmVzcG9uc2VfZGF0 YSwgc2VydmVyX2lkKToKK2RlZiBjcmVhdGVfc2VxdWVuY2VzKHNlcnZlciwg ZGJfbmFtZSwgc2NoZW1hX25hbWUsIHNlcXVlbmNlX25hbWUpOgogICAgICIi IgotICAgIFRoaXMgZnVuY3Rpb24gd3JpdGVzIHRoZSBzZXF1ZW5jZSBpZCBp bnRvIHBhcmVudF9pZC5wa2wKLQotICAgIDpwYXJhbSByZXNwb25zZV9kYXRh OiBzZXF1ZW5jZSBhZGQgcmVzcG9uc2UgZGF0YQotICAgIDp0eXBlIHJlc3Bv bnNlX2RhdGE6IGRpY3QKLSAgICA6cGFyYW0gc2VydmVyX2lkOiBzZXJ2ZXIg aWQKLSAgICA6dHlwZSBzZXJ2ZXJfaWQ6IHN0cgotICAgIDpyZXR1cm46IE5v bmUKKyAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gY3JlYXRlIHNlcXVlbmNl IGluIHNjaGVtYSBwcm92aWRlZC4KKyAgICA6cGFyYW0gc2VydmVyOiBzZXJ2 ZXIgZGV0YWlscworICAgIDp0eXBlIHNlcnZlcjogZGljdAorICAgIDpwYXJh bSBkYl9uYW1lOiBkYXRhYmFzZSBuYW1lCisgICAgOnR5cGUgZGJfbmFtZTog c3RyCisgICAgOnBhcmFtIHNjaGVtYV9uYW1lOiBzY2hlbWEgbmFtZQorICAg IDp0eXBlIHNjaGVtYV9uYW1lOiBzdHIKKyAgICA6cGFyYW0gc2VxdWVuY2Vf bmFtZTogc2VxdWVuY2UgbmFtZQorICAgIDp0eXBlIHNlcXVlbmNlX25hbWU6 IHN0cgorICAgIDpyZXR1cm4gc2VxdWVuY2VfaWQ6IHNlcXVlbmNlIGlkCisg ICAgOnJ0eXBlOiBpbnQKICAgICAiIiIKLQotICAgIHNlcXVlbmNlX2lkID0g cmVzcG9uc2VfZGF0YVsnbm9kZSddWydfaWQnXQotICAgIHBpY2tsZV9pZF9k aWN0ID0gdXRpbHMuZ2V0X3BpY2tsZV9pZF9kaWN0KCkKLSAgICBpZiBvcy5w YXRoLmlzZmlsZShwaWNrbGVfcGF0aCk6Ci0gICAgICAgIGV4aXN0aW5nX3Nl cnZlcl9pZCA9IG9wZW4ocGlja2xlX3BhdGgsICdyYicpCi0gICAgICAgIHRv bF9zZXJ2ZXJfaWQgPSBwaWNrbGUubG9hZChleGlzdGluZ19zZXJ2ZXJfaWQp Ci0gICAgICAgIHBpY2tsZV9pZF9kaWN0ID0gdG9sX3NlcnZlcl9pZAotICAg IGlmICdmaWQnIGluIHBpY2tsZV9pZF9kaWN0OgotICAgICAgICBpZiBwaWNr bGVfaWRfZGljdFsnc2VpZCddOgotICAgICAgICAgICAgIyBBZGQgdGhlIHNl cXVlbmNlX2lkIGFzIHZhbHVlIGluIGRpY3QKLSAgICAgICAgICAgIHBpY2ts ZV9pZF9kaWN0WyJzZWlkIl1bMF0udXBkYXRlKHtzZXJ2ZXJfaWQ6IHNlcXVl bmNlX2lkfSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgQ3JlYXRl IG5ldyBkaWN0IHdpdGggc2VydmVyX2lkIGFuZCBzZXF1ZW5jZV9pZAotICAg ICAgICAgICAgcGlja2xlX2lkX2RpY3RbInNlaWQiXS5hcHBlbmQoe3NlcnZl cl9pZDogc2VxdWVuY2VfaWR9KQotICAgIHNlcXVlbmNlX291dHB1dCA9IG9w ZW4ocGlja2xlX3BhdGgsICd3YicpCi0gICAgcGlja2xlLmR1bXAocGlja2xl X2lkX2RpY3QsIHNlcXVlbmNlX291dHB1dCkKLSAgICBzZXF1ZW5jZV9vdXRw dXQuY2xvc2UoKQotCi0KLWRlZiB2ZXJpZnlfc2VxdWVuY2UodGVzdGVyLCBz ZXJ2ZXJfZ3JvdXAsIHNlcnZlcl9pZCwgZGJfaWQsIHNjaGVtYV9pZCwKLSAg ICAgICAgICAgICAgICAgICAgc2VxdWVuY2VfaWQpOgotICAgICIiIlRoaXMg ZnVuY3Rpb24gdmVyaWZpZXMgdGhlIHNlcXVlbmNlIHVzaW5nIEdFVCBBUEki IiIKLQotICAgIGdldF9yZXNwb25zZSA9IHRlc3Rlci5nZXQoU0VRVUVOQ0Vf VVJMICsgc3RyKHNlcnZlcl9ncm91cCkgKyAnLycgKwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGRiX2lkKSArICcvJyAr Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2NoZW1hX2lk KSArICcvJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIo c2VxdWVuY2VfaWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29udGVudF90eXBlPSdodG1sL2pzb24nKQotCi0gICAgcmV0dXJuIGdldF9y ZXNwb25zZQotCi0KLWRlZiBkZWxldGVfc2VxdWVuY2UodGVzdGVyKToKLSAg ICBhbGxfaWQgPSB1dGlscy5nZXRfaWRzKCkKLSAgICBzZXJ2ZXJfaWRzID0g YWxsX2lkWyJzaWQiXQotICAgIGRiX2lkc19kaWN0ID0gYWxsX2lkWyJkaWQi XVswXQotICAgIHNjaGVtYV9pZHNfZGljdCA9IGFsbF9pZFsic2NpZCJdWzBd Ci0gICAgc2VxdWVuY2VfaWRzX2RpY3QgPSBhbGxfaWRbInNlaWQiXVswXQot Ci0gICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2ZXJfaWRzOgotICAgICAgICBk Yl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICBz Y2hlbWFfaW5mbyA9IHNjaGVtYV9pZHNfZGljdFtpbnQoc2VydmVyX2lkKV0K LSAgICAgICAgc2NoZW1hX2lkID0gc2NoZW1hX2luZm9bMF0KLSAgICAgICAg c2VxdWVuY2VfaWQgPSBzZXF1ZW5jZV9pZHNfZGljdFtzZXJ2ZXJfaWRdCi0g ICAgICAgIGdldF9yZXNwb25zZSA9IHZlcmlmeV9zZXF1ZW5jZSh0ZXN0ZXIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGls cy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXJ2ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYl9pZCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNjaGVtYV9pZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX2lkKQotICAgICAg ICBpZiBnZXRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwOgotICAgICAg ICAgICAgZGVsZXRlX3Jlc3BvbnNlID0gdGVzdGVyLmRlbGV0ZSgKLSAgICAg ICAgICAgICAgICBTRVFVRU5DRV9VUkwgKyBzdHIodXRpbHMuU0VSVkVSX0dS T1VQKSArICcvJyArCi0gICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkg KyAnLycgKwotICAgICAgICAgICAgICAgIHN0cihkYl9pZCkgKyAnLycgKwot ICAgICAgICAgICAgICAgIHN0cihzY2hlbWFfaWQpICsgJy8nICsKLSAgICAg ICAgICAgICAgICBzdHIoc2VxdWVuY2VfaWQpLAotICAgICAgICAgICAgICAg IGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKLQotICAgICAgICAgICAgYXNzZXJ0 IGRlbGV0ZV9yZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDAKLSAgICAgICAg ICAgIGRlbF9yZXNwX2RhdGEgPSBqc29uLmxvYWRzKGRlbGV0ZV9yZXNwb25z ZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKLSAgICAgICAgICAgIGFzc2VydCBk ZWxfcmVzcF9kYXRhWydzdWNjZXNzJ10gPT0gMQorICAgIHRyeToKKyAgICAg ICAgY29ubmVjdGlvbiA9IHV0aWxzLmdldF9kYl9jb25uZWN0aW9uKGRiX25h bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2RiX3Bhc3N3b3Jk J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsncG9ydCddKQorICAgICAg ICBwZ19jdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCisgICAgICAgIHF1 ZXJ5ID0gIkNSRUFURSBTRVFVRU5DRSAlcy4lcyBTVEFSVCAxMDEiICUgKHNj aGVtYV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9uYW1lKQorICAgICAgICBw Z19jdXJzb3IuZXhlY3V0ZShxdWVyeSkKKyAgICAgICAgY29ubmVjdGlvbi5j b21taXQoKQorICAgICAgICAjIEdldCAnb2lkJyBmcm9tIG5ld2x5IGNyZWF0 ZWQgc2VxdWVuY2UKKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoInNlbGVj dCBvaWQgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lPSclcyciICUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VfbmFtZSkKKyAgICAg ICAgc2VxdWVuY2UgPSBwZ19jdXJzb3IuZmV0Y2hvbmUoKQorICAgICAgICBz ZXF1ZW5jZV9pZCA9ICcnCisgICAgICAgIGlmIHNlcXVlbmNlOgorICAgICAg ICAgICAgc2VxdWVuY2VfaWQgPSBzZXF1ZW5jZVswXQorICAgICAgICBjb25u ZWN0aW9uLmNsb3NlKCkKKyAgICAgICAgcmV0dXJuIHNlcXVlbmNlX2lkCisg ICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgdHJhY2ViYWNrLnByaW50 X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisKKworZGVmIHZlcmlmeV9zZXF1ZW5j ZShzZXJ2ZXIsIGRiX25hbWUsIHNlcXVlbmNlX25hbWUpOgorICAgICIiIgor ICAgIFRoaXMgZnVuY3Rpb24gdmVyaWZpZXMgdGhlIHNlcXVlbmNlIGluIGRh dGFiYXNlCisgICAgOnBhcmFtIHNlcnZlcjogc2VydmVyIGRldGFpbHMKKyAg ICA6dHlwZSBzZXJ2ZXI6IGRpY3QKKyAgICA6cGFyYW0gZGJfbmFtZTogZGF0 YWJhc2UgbmFtZQorICAgIDp0eXBlIGRiX25hbWU6IHN0cgorICAgIDpwYXJh bSBzZXF1ZW5jZV9uYW1lOiBzZXF1ZW5jZSBuYW1lCisgICAgOnR5cGUgc2Vx dWVuY2VfbmFtZTogc3RyCisgICAgOnJldHVybiBzZXF1ZW5jZTogc2VxdWVu Y2UgcmVjb3JkIGZyb20gZGF0YWJhc2UKKyAgICA6cnR5cGU6IHR1cGxlCisg ICAgIiIiCisgICAgdHJ5OgorICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMu Z2V0X2RiX2Nvbm5lY3Rpb24oZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsndXNlcm5hbWUn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnaG9zdCddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VydmVyWydwb3J0J10pCisgICAgICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rp b24uY3Vyc29yKCkKKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoInNlbGVj dCAqIGZyb20gcGdfY2xhc3Mgd2hlcmUgcmVsbmFtZT0nJXMnIiAlCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX25hbWUpCisgICAgICAg IHNlcXVlbmNlID0gcGdfY3Vyc29yLmZldGNob25lKCkKKyAgICAgICAgY29u bmVjdGlvbi5jbG9zZSgpCisgICAgICAgIHJldHVybiBzZXF1ZW5jZQorICAg IGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHRyYWNlYmFjay5wcmludF9l eGMoZmlsZT1zeXMuc3RkZXJyKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvc3lub255bXMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zeW5v bnltcy9fX2luaXRfXy5weQppbmRleCA5NWU1OGI2Li45NDUzNWUzIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zeW5vbnltcy9fX2luaXRfXy5weQor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9zeW5vbnltcy9fX2luaXRfXy5weQpAQCAt Mzg3LDYgKzM4Nyw3IEBAIGNsYXNzIFN5bm9ueW1WaWV3KFBHQ2hpbGROb2Rl Vmlldyk6CiAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBj b25uPXNlbGYuY29ubiwgY29tbWVudD1GYWxzZSkKKwogICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQog ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N5bm9ueW1zL3Rlc3RzL3Rlc3Rf c3lub255bV9hZGQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zeW5vbnltcy90ZXN0 cy90ZXN0X3N5bm9ueW1fYWRkLnB5CmluZGV4IGJiODZmMTIuLjc3ZDIwMGEg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N5bm9ueW1zL3Rlc3RzL3Rl c3Rfc3lub255bV9hZGQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3lub255 bXMvdGVzdHMvdGVzdF9zeW5vbnltX2FkZC5weQpAQCAtNiw2OSArNiw3MiBA QAogIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitp bXBvcnQgdXVpZAoraW1wb3J0IGpzb24KIAogZnJvbSByZWdyZXNzaW9uIGlt cG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1w b3J0IHBhcmVudF9ub2RlX2RpY3QKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0 ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKIGZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMg YXMgc2VydmVyX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMuc2VxdWVuY2VzLnRl c3RzIFwKKyAgICBpbXBvcnQgdXRpbHMgYXMgc2VxdWVuY2VfdXRpbHMKIGZy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKICAgICBkYXRhYmFzZV91 dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2 ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCiAgICAgdXRp bHMgYXMgc2NoZW1hX3V0aWxzCi1mcm9tIC4gaW1wb3J0IHV0aWxzIGFzIHN5 bm9ueW1fdXRpbHMKIAogCiBjbGFzcyBTeW5vbnltQWRkVGVzdENhc2UoQmFz ZVRlc3RHZW5lcmF0b3IpOgotICAgICIiIiBUaGlzIGNsYXNzIHdpbGwgYWRk IG5ldyBzeW5vbnltIHVuZGVyIHNjaGVtYSBub2RlLiAiIiIKLQorICAgICIi IlRoaXMgY2xhc3Mgd2lsbCBhZGQgbmV3IHN5bm9ueW0gdW5kZXIgc2NoZW1h IG5vZGUuIiIiCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIEZldGNo aW5nIGRlZmF1bHQgVVJMIGZvciBzeW5vbnltIG5vZGUuCiAgICAgICAgICgn RGVmYXVsdCBOb2RlIFVSTCcsIGRpY3QodXJsPScvYnJvd3Nlci9zeW5vbnlt L29iai8nKSkKICAgICBdCiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYg c2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBm dW5jdGlvbiBwZXJmb3JtIHRoZSB0aHJlZSB0YXNrcwotICAgICAgICAgMS4g QWRkIHRoZSB0ZXN0IHNlcnZlcgotICAgICAgICAgMi4gQ29ubmVjdCB0byBz ZXJ2ZXIKLSAgICAgICAgIDMuIEFkZCB0aGUgZGF0YWJhc2VzCi0gICAgICAg ICA0LiBBZGQgdGhlIHNjaGVtYXMKLQotICAgICAgICA6cmV0dXJuOiBOb25l Ci0gICAgICAgICIiIgotCi0gICAgICAgICMgRmlyc3RseSwgYWRkIHRoZSBz ZXJ2ZXIKLSAgICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2ZXIoY2xzLnRl c3RlcikKLSAgICAgICAgIyBDb25uZWN0IHRvIHNlcnZlcgotICAgICAgICBj bHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAs IGNscy5zZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgc2VydmVyX3V0aWxz LmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0gICAgICAgIGlmIGxlbihj bHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UpID09IDA6Ci0gICAgICAgICAg ICByYWlzZSBFeGNlcHRpb24oIk5vIFNlcnZlcihzKSBjb25uZWN0ZWQgdG8g YWRkIHRoZSBkYXRhYmFzZSEhISIpCi0gICAgICAgICMgQWRkIGRhdGFiYXNl Ci0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmFkZF9kYXRhYmFzZShjbHMudGVz dGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2VydmVyX2lkcykKLSAg ICAgICAgIyBBZGQgc2NoZW1hcwotICAgICAgICBzY2hlbWFfdXRpbHMuYWRk X3NjaGVtYXMoY2xzLnRlc3RlcikKKyAgICBkZWYgc2V0VXAoc2VsZik6Cisg ICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFi YXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICAgICAgc2NoZW1hX2luZm8gPSBw YXJlbnRfbm9kZV9kaWN0WyJzY2hlbWEiXVstMV0KKyAgICAgICAgc2VsZi5z ZXJ2ZXJfaWQgPSBzY2hlbWFfaW5mb1sic2VydmVyX2lkIl0KKyAgICAgICAg c2VsZi5kYl9pZCA9IHNjaGVtYV9pbmZvWyJkYl9pZCJdCisgICAgICAgIHNl cnZlcl9jb24gPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwg c2VsZi5zZXJ2ZXJfaWQpCisgICAgICAgIGlmIHNlcnZlcl9jb246CisgICAg ICAgICAgICBpZiAic2VydmVyX3R5cGUiIGluIHNlcnZlcl9jb25bImRhdGEi XToKKyAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfY29uWyJkYXRhIl1bInNl cnZlcl90eXBlIl0gPT0gInBnIjoKKyAgICAgICAgICAgICAgICAgICAgbWVz c2FnZSA9ICJTeW5vbnltIG5vdCBzdXBwb3J0ZWQgYnkgUEcuIgorICAgICAg ICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KG1lc3NhZ2UpCisgICAgICAg IGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2Vs ZiwgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLCBz ZWxmLmRiX2lkKQorICAgICAgICBpZiBub3QgZGJfY29uWydkYXRhJ11bImNv bm5lY3RlZCJdOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3Vs ZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSB0byBhZGQgc3lub255bS4iKQor ICAgICAgICBzZWxmLnNjaGVtYV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hlbWFf aWQiXQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2NoZW1hX2luZm9b InNjaGVtYV9uYW1lIl0KKyAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2No ZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKHNlbGYuc2VydmVyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSkK KyAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25zZToKKyAgICAgICAgICAg IHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVtYSB0 byBhZGQgdGhlIHN5bm9ueW0uIikKKyAgICAgICAgc2VsZi5zZXF1ZW5jZV9u YW1lID0gInRlc3Rfc2VxdWVuY2Vfc3lub255bV8lcyIgJSBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0K KyAgICAgICAgc2VsZi5zZXF1ZW5jZV9pZCA9IHNlcXVlbmNlX3V0aWxzLmNy ZWF0ZV9zZXF1ZW5jZXMoCisgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2Vs Zi5kYl9uYW1lLCBzZWxmLnNjaGVtYV9uYW1lLCBzZWxmLnNlcXVlbmNlX25h bWUpCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgIiIiIFRo aXMgZnVuY3Rpb24gd2lsbCBhZGQgc3lub255bSB1bmRlciBzY2hlbWEgbm9k ZS4gIiIiCi0KLSAgICAgICAgc3lub255bV91dGlscy5hZGRfc3lub255bSgK LSAgICAgICAgICAgIHNlbGYudGVzdGVyLCBzZWxmLnNlcnZlcl9jb25uZWN0 X3Jlc3BvbnNlLCBzZWxmLnNlcnZlcl9pZHMpCi0KLSAgICBAY2xhc3NtZXRo b2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICAiIiIK LSAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxldGVzIHRoZSBhZGRlZCBzeW5v bnltcywgc2NoZW1hcywgZGF0YWJhc2UsCi0gICAgICAgIHNlcnZlciBhbmQg dGhlICdwYXJlbnRfaWQucGtsJyBmaWxlIHdoaWNoIGlzIGNyZWF0ZWQgaW4g c2V0dXAoKQotICAgICAgICBmdW5jdGlvbi4KLQotICAgICAgICA6cmV0dXJu OiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgIHN5bm9ueW1fdXRpbHMu ZGVsZXRlX3N5bm9ueW0oY2xzLnRlc3RlcikKLSAgICAgICAgc2NoZW1hX3V0 aWxzLmRlbGV0ZV9zY2hlbWEoY2xzLnRlc3RlcikKLSAgICAgICAgZGF0YWJh c2VfdXRpbHMuZGVsZXRlX2RhdGFiYXNlKGNscy50ZXN0ZXIpCi0gICAgICAg IHNlcnZlcl91dGlscy5kZWxldGVfc2VydmVyKGNscy50ZXN0ZXIpCi0gICAg ICAgIHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCisgICAgICAgICIi IlRoaXMgZnVuY3Rpb24gd2lsbCBhZGQgc3lub255bSB1bmRlciBzY2hlbWEg bm9kZS4iIiIKKyAgICAgICAgZGJfdXNlciA9IHNlbGYuc2VydmVyWyJ1c2Vy bmFtZSJdCisgICAgICAgIGRhdGEgPSB7CisgICAgICAgICAgICAib3duZXIi OiBkYl91c2VyLAorICAgICAgICAgICAgInNjaGVtYSI6IHNlbGYuc2NoZW1h X25hbWUsCisgICAgICAgICAgICAic3lub2JqbmFtZSI6IHNlbGYuc2VxdWVu Y2VfbmFtZSwKKyAgICAgICAgICAgICJzeW5vYmpzY2hlbWEiOiBzZWxmLnNj aGVtYV9uYW1lLAorICAgICAgICAgICAgInRhcmdldHR5cGUiOiAiU2VxdWVu Y2UiLAorICAgICAgICAgICAgIm5hbWUiOiAic3lub255bV9hZGRfJXMiICUg KHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0pCisgICAgICAgIH0KKyAgICAgICAg cmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KAorICAgICAgICAgICAgc2Vs Zi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArIHN0cihz ZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgICAgICsgJy8nICsgc3RyKHNlbGYu ZGJfaWQpICsgJy8nICsgc3RyKHNlbGYuc2NoZW1hX2lkKSArICcvJywKKyAg ICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwgY29udGVudF90eXBl PSdodG1sL2pzb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNw b25zZS5zdGF0dXNfY29kZSwgMjAwKQogCisgICAgZGVmIHRlYXJEb3duKHNl bGYpOgorICAgICAgICAjIERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCisgICAg ICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwg c2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9zeW5vbnltcy90ZXN0cy90ZXN0X3N5bm9ueW1fZGVsZXRl LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvc3lub255bXMvdGVzdHMvdGVzdF9zeW5v bnltX2RlbGV0ZS5weQppbmRleCA1NjM0ZThkLi40Y2M2YmFlIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9zeW5vbnltcy90ZXN0cy90ZXN0X3N5bm9u eW1fZGVsZXRlLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N5bm9ueW1zL3Rl c3RzL3Rlc3Rfc3lub255bV9kZWxldGUucHkKQEAgLTYsMTEgKzYsMTQgQEAK ICMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCitp bXBvcnQgdXVpZAogCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRp bHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25v ZGVfZGljdAogZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNl VGVzdEdlbmVyYXRvcgogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dy b3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRp bHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVy cy5kYXRhYmFzZXMuc2NoZW1hcy5zZXF1ZW5jZXMudGVzdHMgXAorICAgIGlt cG9ydCB1dGlscyBhcyBzZXF1ZW5jZV91dGlscwogZnJvbSBwZ2FkbWluLmJy b3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBp bXBvcnQgdXRpbHMgYXMgXAogICAgIGRhdGFiYXNlX3V0aWxzCiBmcm9tIHBn YWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2Vz LnNjaGVtYXMudGVzdHMgaW1wb3J0IFwKQEAgLTE5LDU5ICsyMiw1OSBAQCBm cm9tIC4gaW1wb3J0IHV0aWxzIGFzIHN5bm9ueW1fdXRpbHMKIAogCiBjbGFz cyBTeW5vbnltRGVsZXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgot ICAgICIiIiBUaGlzIGNsYXNzIHdpbGwgZGVsZXRlIGFkZGVkIHN5bm9ueW0g dW5kZXIgc2NoZW1hIG5vZGUuICIiIgotCisgICAgIiIiVGhpcyBjbGFzcyB3 aWxsIGRlbGV0ZSBhZGRlZCBzeW5vbnltIHVuZGVyIHNjaGVtYSBub2RlLiIi IgogICAgIHNjZW5hcmlvcyA9IFsKICAgICAgICAgIyBGZXRjaGluZyBkZWZh dWx0IFVSTCBmb3Igc3lub255bSBub2RlLgogICAgICAgICAoJ0ZldGNoIHN5 bm9ueW0gTm9kZSBVUkwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvc3lub255bS9v YmovJykpCiAgICAgXQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNl dFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVu Y3Rpb24gcGVyZm9ybSB0aGUgdGhyZWUgdGFza3MKLSAgICAgICAgIDEuIEFk ZCB0aGUgdGVzdCBzZXJ2ZXIKLSAgICAgICAgIDIuIENvbm5lY3QgdG8gc2Vy dmVyCi0gICAgICAgICAzLiBBZGQgdGhlIGRhdGFiYXNlcwotICAgICAgICAg NC4gQWRkIHRoZSBzY2hlbWFzCi0gICAgICAgICA1LiBBZGQgdGhlIHN5bm9u eW1zCi0KLSAgICAgICAgOnJldHVybjogTm9uZQotICAgICAgICAiIiIKLQot ICAgICAgICAjIEZpcnN0bHksIGFkZCB0aGUgc2VydmVyCi0gICAgICAgIHNl cnZlcl91dGlscy5hZGRfc2VydmVyKGNscy50ZXN0ZXIpCi0gICAgICAgICMg Q29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgY2xzLnNlcnZlcl9jb25uZWN0 X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3VwLCBjbHMuc2VydmVyX2lkcyA9 IFwKLSAgICAgICAgICAgIHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihj bHMudGVzdGVyKQotICAgICAgICBpZiBsZW4oY2xzLnNlcnZlcl9jb25uZWN0 X3Jlc3BvbnNlKSA9PSAwOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u KCJObyBTZXJ2ZXIocykgY29ubmVjdGVkIHRvIGFkZCB0aGUgZGF0YWJhc2Uh ISEiKQotICAgICAgICAjIEFkZCBkYXRhYmFzZQotICAgICAgICBkYXRhYmFz ZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRlc3RlciwgY2xzLnNlcnZlcl9j b25uZWN0X3Jlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCi0gICAgICAgICMgQWRkIHNjaGVt YXMKLSAgICAgICAgc2NoZW1hX3V0aWxzLmFkZF9zY2hlbWFzKGNscy50ZXN0 ZXIpCi0gICAgICAgICMgQWRkIHN5bm9ueW1zCi0gICAgICAgIHN5bm9ueW1f dXRpbHMuYWRkX3N5bm9ueW0oY2xzLnRlc3RlciwgY2xzLnNlcnZlcl9jb25u ZWN0X3Jlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjbHMuc2VydmVyX2lkcykKKyAgICBkZWYgc2V0VXAoc2VsZik6 CisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbImRh dGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICAgICAgc2NoZW1hX2luZm8g PSBwYXJlbnRfbm9kZV9kaWN0WyJzY2hlbWEiXVstMV0KKyAgICAgICAgc2Vs Zi5zZXJ2ZXJfaWQgPSBzY2hlbWFfaW5mb1sic2VydmVyX2lkIl0KKyAgICAg ICAgc2VsZi5kYl9pZCA9IHNjaGVtYV9pbmZvWyJkYl9pZCJdCisgICAgICAg IHNlcnZlcl9jb24gPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2Vs Ziwgc2VsZi5zZXJ2ZXJfaWQpCisgICAgICAgIGlmIHNlcnZlcl9jb246Cisg ICAgICAgICAgICBpZiAic2VydmVyX3R5cGUiIGluIHNlcnZlcl9jb25bImRh dGEiXToKKyAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfY29uWyJkYXRhIl1b InNlcnZlcl90eXBlIl0gPT0gInBnIjoKKyAgICAgICAgICAgICAgICAgICAg bWVzc2FnZSA9ICJTeW5vbnltIG5vdCBzdXBwb3J0ZWQgYnkgUEcuIgorICAg ICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KG1lc3NhZ2UpCisgICAg ICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uo c2VsZiwgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lk LCBzZWxmLmRiX2lkKQorICAgICAgICBpZiBub3QgZGJfY29uWydkYXRhJ11b ImNvbm5lY3RlZCJdOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJD b3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSB0byBhZGQgc3lub255bS4i KQorICAgICAgICBzZWxmLnNjaGVtYV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hl bWFfaWQiXQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2NoZW1hX2lu Zm9bInNjaGVtYV9uYW1lIl0KKyAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0g c2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKHNlbGYuc2VydmVyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFt ZSkKKyAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25zZToKKyAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVt YSB0byBhZGQgdGhlIHN5bm9ueW0uIikKKyAgICAgICAgc2VsZi5zZXF1ZW5j ZV9uYW1lID0gInRlc3Rfc2VxdWVuY2Vfc3lub255bV8lcyIgJSBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cih1dWlkLnV1aWQ0KCkpWzE6 Nl0KKyAgICAgICAgc2VsZi5zZXF1ZW5jZV9pZCA9IHNlcXVlbmNlX3V0aWxz LmNyZWF0ZV9zZXF1ZW5jZXMoCisgICAgICAgICAgICBzZWxmLnNlcnZlciwg c2VsZi5kYl9uYW1lLCBzZWxmLnNjaGVtYV9uYW1lLCBzZWxmLnNlcXVlbmNl X25hbWUpCisgICAgICAgIHNlbGYuc3lub255bV9uYW1lID0gInRlc3Rfc3lu b255bV9kZWxldGVfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo2XQorICAg ICAgICBzZWxmLnN5bm9ueW1faWQgPSBzeW5vbnltX3V0aWxzLmNyZWF0ZV9z eW5vbnltKHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnNjaGVtYV9uYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c3lub255bV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VxdWVuY2VfbmFtZSkK IAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgotICAgICAgICAiIiIgVGhpcyBm dW5jdGlvbiB3aWxsIGRlbGV0ZSBzeW5vbnltIHVuZGVyIHNjaGVtYSBub2Rl LiAiIiIKLQotICAgICAgICBzeW5vbnltX3V0aWxzLmRlbGV0ZV9zeW5vbnlt KHNlbGYudGVzdGVyKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRl YXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMg ZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgc2NoZW1hcywgZGF0YWJhc2Us Ci0gICAgICAgIHNlcnZlciBhbmQgdGhlICdwYXJlbnRfaWQucGtsJyBmaWxl IHdoaWNoIGlzIGNyZWF0ZWQgaW4gc2V0dXAoKQotICAgICAgICBmdW5jdGlv bi4KLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0g ICAgICAgIHNjaGVtYV91dGlscy5kZWxldGVfc2NoZW1hKGNscy50ZXN0ZXIp Ci0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmRlbGV0ZV9kYXRhYmFzZShjbHMu dGVzdGVyKQotICAgICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihj bHMudGVzdGVyKQotICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2Zp bGUoKQorICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIHdpbGwgZGVsZXRlIHN5 bm9ueW0gdW5kZXIgc2NoZW1hIG5vZGUuIiIiCisgICAgICAgIHN5bm9ueW1f cmVzcG9uc2UgPSBzeW5vbnltX3V0aWxzLnZlcmlmeV9zeW5vbnltKHNlbGYu c2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLmRiX25hbWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc3lub255bV9uYW1lKQorICAgICAgICBpZiBub3Qgc3lub255bV9y ZXNwb25zZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gc3lu b255bSBub2RlIHRvIGRlbGV0ZS4iKQorICAgICAgICByZXNwb25zZSA9IHNl bGYudGVzdGVyLmRlbGV0ZSgKKyAgICAgICAgICAgIHNlbGYudXJsICsgc3Ry KHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKworICAgICAgICAgICAgc3Ry KHNlbGYuc2VydmVyX2lkKSArICcvJyArIHN0cihzZWxmLmRiX2lkKSArICcv JyArCisgICAgICAgICAgICBzdHIoc2VsZi5zY2hlbWFfaWQpICsgJy8nICsg c3RyKHNlbGYuc3lub255bV9pZCksCisgICAgICAgICAgICBmb2xsb3dfcmVk aXJlY3RzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3Bv bnNlLnN0YXR1c19jb2RlLCAyMDApCiAKKyAgICBkZWYgdGVhckRvd24oc2Vs Zik6CisgICAgICAgICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKKyAgICAg ICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBz ZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3N5bm9ueW1zL3Rlc3RzL3Rlc3Rfc3lub255bV9nZXQucHkg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9zeW5vbnltcy90ZXN0cy90ZXN0X3N5bm9ueW1f Z2V0LnB5CmluZGV4IDZlNjE4MGYuLjEyZTU0ODIgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3N5bm9ueW1zL3Rlc3RzL3Rlc3Rfc3lub255bV9nZXQu cHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3lub255bXMvdGVzdHMvdGVzdF9z eW5vbnltX2dldC5weQpAQCAtNiw5NiArNiw3MCBAQAogIyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UK ICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWltcG9ydCBqc29uCitp bXBvcnQgdXVpZAogCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRp bHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25v ZGVfZGljdAogZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNl VGVzdEdlbmVyYXRvcgogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dy b3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRp bHMKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVy cy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKICAgICBkYXRh YmFzZV91dGlscworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnNlcXVlbmNlcy50ZXN0c1wK KyAgICBpbXBvcnQgdXRpbHMgYXMgc2VxdWVuY2VfdXRpbHMKIGZyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu c2NoZW1hcy50ZXN0cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIHNjaGVtYV91 dGlscwogZnJvbSAuIGltcG9ydCB1dGlscyBhcyBzeW5vbnltX3V0aWxzCiAK IAogY2xhc3MgU3lub255bUdldFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9y KToKLSAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIGZldGNoIG5ldyBzeW5vbnlt IHVuZGVyIHNjaGVtYSBub2RlLiAiIiIKLQorICAgICIiIlRoaXMgY2xhc3Mg d2lsbCBmZXRjaCBuZXcgc3lub255bSB1bmRlciBzY2hlbWEgbm9kZS4iIiIK ICAgICBzY2VuYXJpb3MgPSBbCiAgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVs dCBVUkwgZm9yIHN5bm9ueW0gbm9kZS4KICAgICAgICAgKCdGZXRjaCBzeW5v bnltIE5vZGUgVVJMJywgZGljdCh1cmw9Jy9icm93c2VyL3N5bm9ueW0vb2Jq LycpKQogICAgIF0KIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRV cENsYXNzKGNscyk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0 aW9uIHBlcmZvcm0gdGhlIHRocmVlIHRhc2tzCi0gICAgICAgICAxLiBBZGQg dGhlIHRlc3Qgc2VydmVyCi0gICAgICAgICAyLiBDb25uZWN0IHRvIHNlcnZl cgotICAgICAgICAgMy4gQWRkIHRoZSBkYXRhYmFzZXMKLSAgICAgICAgIDQu IEFkZCB0aGUgc2NoZW1hcwotICAgICAgICAgNS4gQWRkIHRoZSBzeW5vbnlt cwotCi0gICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAg ICAgICAgIyBGaXJzdGx5LCBhZGQgdGhlIHNlcnZlcgotICAgICAgICBzZXJ2 ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICAjIENv bm5lY3QgdG8gc2VydmVyCi0gICAgICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9y ZXNwb25zZSwgY2xzLnNlcnZlcl9ncm91cCwgY2xzLnNlcnZlcl9pZHMgPSBc Ci0gICAgICAgICAgICBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xz LnRlc3RlcikKLSAgICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9y ZXNwb25zZSkgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigi Tm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0byBhZGQgdGhlIGRhdGFiYXNlISEh IikKLSAgICAgICAgIyBBZGQgZGF0YWJhc2UKLSAgICAgICAgZGF0YWJhc2Vf dXRpbHMuYWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29u bmVjdF9yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNscy5zZXJ2ZXJfaWRzKQotICAgICAgICAjIEFkZCBzY2hlbWFz Ci0gICAgICAgIHNjaGVtYV91dGlscy5hZGRfc2NoZW1hcyhjbHMudGVzdGVy KQotICAgICAgICAjIEFkZCBzeW5vbnltcwotICAgICAgICBzeW5vbnltX3V0 aWxzLmFkZF9zeW5vbnltKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVj dF9yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2xzLnNlcnZlcl9pZHMpCisgICAgZGVmIHNldFVwKHNlbGYpOgor ICAgICAgICBzZWxmLmRiX25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRh YmFzZSJdWy0xXVsiZGJfbmFtZSJdCisgICAgICAgIHNjaGVtYV9pbmZvID0g cGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCisgICAgICAgIHNlbGYu c2VydmVyX2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCisgICAgICAg IHNlbGYuZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJfaWQiXQorICAgICAgICBz ZXJ2ZXJfY29uID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYs IHNlbGYuc2VydmVyX2lkKQorICAgICAgICBpZiBzZXJ2ZXJfY29uOgorICAg ICAgICAgICAgaWYgInNlcnZlcl90eXBlIiBpbiBzZXJ2ZXJfY29uWyJkYXRh Il06CisgICAgICAgICAgICAgICAgaWYgc2VydmVyX2NvblsiZGF0YSJdWyJz ZXJ2ZXJfdHlwZSJdID09ICJwZyI6CisgICAgICAgICAgICAgICAgICAgIG1l c3NhZ2UgPSAiU3lub255bSBub3Qgc3VwcG9ydGVkIGJ5IFBHLiIKKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdChtZXNzYWdlKQorICAgICAg ICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNl bGYsIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwg c2VsZi5kYl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJj b25uZWN0ZWQiXToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291 bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgdG8gYWRkIHN5bm9ueW0uIikK KyAgICAgICAgc2VsZi5zY2hlbWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1h X2lkIl0KKyAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHNjaGVtYV9pbmZv WyJzY2hlbWFfbmFtZSJdCisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNj aGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUp CisgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CisgICAgICAgICAg ICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEg dG8gYWRkIHRoZSBzeW5vbnltLiIpCisgICAgICAgIHNlbGYuc2VxdWVuY2Vf bmFtZSA9ICJ0ZXN0X3NlcXVlbmNlX3N5bm9ueW1fJXMiICVcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0K KyAgICAgICAgc2VsZi5zZXF1ZW5jZV9pZCA9IHNlcXVlbmNlX3V0aWxzLmNy ZWF0ZV9zZXF1ZW5jZXMoCisgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2Vs Zi5kYl9uYW1lLCBzZWxmLnNjaGVtYV9uYW1lLCBzZWxmLnNlcXVlbmNlX25h bWUpCisgICAgICAgIHNlbGYuc3lub255bV9uYW1lID0gInRlc3Rfc3lub255 bV9nZXRfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo2XQorICAgICAgICBz ZWxmLnN5bm9ueW1faWQgPSBzeW5vbnltX3V0aWxzLmNyZWF0ZV9zeW5vbnlt KHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLnNjaGVtYV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3lub255 bV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VxdWVuY2VfbmFtZSkKIAogICAg IGRlZiBydW5UZXN0KHNlbGYpOgotICAgICAgICAiIiIgVGhpcyBmdW5jdGlv biB3aWxsIGZldGNoIHN5bm9ueW0gdW5kZXIgc2NoZW1hIG5vZGUuICIiIgot Ci0gICAgICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQotICAgICAgICBz ZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAgICAgICBkYl9pZHNfZGlj dCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAgICAgICAgc2NoZW1hX2lkc19kaWN0 ID0gYWxsX2lkWyJzY2lkIl1bMF0KLSAgICAgICAgc3lub255bV9pZHNfZGlj dCA9IGFsbF9pZFsic3lpZCJdWzBdCi0KLSAgICAgICAgZm9yIHNlcnZlcl9p ZCBpbiBzZXJ2ZXJfaWRzOgotICAgICAgICAgICAgZGJfaWQgPSBkYl9pZHNf ZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgICAgIGRiX2NvbiA9IGRh dGFiYXNlX3V0aWxzLnZlcmlmeV9kYXRhYmFzZShzZWxmLnRlc3RlciwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkLCBk Yl9pZCkKLSAgICAgICAgICAgIGlmIGRiX2NvblsnZGF0YSddWyJjb25uZWN0 ZWQiXToKLSAgICAgICAgICAgICAgICBzY2hlbWFfaW5mbyA9IHNjaGVtYV9p ZHNfZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgICAgICAgICBzY2hl bWFfcmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMoCi0g ICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdGVyLCBzZXJ2ZXJfaWQsIGRi X2lkLCBzY2hlbWFfaW5mb1swXSkKLSAgICAgICAgICAgICAgICBzY2hlbWFf cmVzcG9uc2UgPSBqc29uLmxvYWRzKAotICAgICAgICAgICAgICAgICAgICBz Y2hlbWFfcmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCi0gICAgICAg ICAgICAgICAgaWYgbGVuKHNjaGVtYV9yZXNwb25zZSkgIT0gMDoKLSAgICAg ICAgICAgICAgICAgICAgc3lub255bV9pZCA9IHN5bm9ueW1faWRzX2RpY3Rb aW50KHNlcnZlcl9pZCldCi0gICAgICAgICAgICAgICAgICAgIGdldF9yZXNw b25zZSA9IHN5bm9ueW1fdXRpbHMudmVyaWZ5X3N5bm9ueW0oCi0gICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnRlc3Rlciwgc2VydmVyX2lkLCBkYl9p ZCwgc2NoZW1hX2luZm9bMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBz eW5vbnltX2lkKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx dWFscyhnZXRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLQotICAgIEBj bGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAg ICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFk ZGVkIHN5bm9ueW1zLCBzY2hlbWFzLCBkYXRhYmFzZSwKLSAgICAgICAgc2Vy dmVyIGFuZCB0aGUgJ3BhcmVudF9pZC5wa2wnIGZpbGUgd2hpY2ggaXMgY3Jl YXRlZCBpbiBzZXR1cCgpCi0gICAgICAgIGZ1bmN0aW9uLgotCi0gICAgICAg IDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgc3lub255 bV91dGlscy5kZWxldGVfc3lub255bShjbHMudGVzdGVyKQotICAgICAgICBz Y2hlbWFfdXRpbHMuZGVsZXRlX3NjaGVtYShjbHMudGVzdGVyKQotICAgICAg ICBkYXRhYmFzZV91dGlscy5kZWxldGVfZGF0YWJhc2UoY2xzLnRlc3RlcikK LSAgICAgICAgc2VydmVyX3V0aWxzLmRlbGV0ZV9zZXJ2ZXIoY2xzLnRlc3Rl cikKLSAgICAgICAgdXRpbHMuZGVsZXRlX3BhcmVudF9pZF9maWxlKCkKKyAg ICAgICAgIiIiVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIHN5bm9ueW0gdW5k ZXIgc2NoZW1hIG5vZGUuIiIiCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50 ZXN0ZXIuZ2V0KAorICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMu U0VSVkVSX0dST1VQKSArICcvJyArCisgICAgICAgICAgICBzdHIoc2VsZi5z ZXJ2ZXJfaWQpICsgJy8nICsgc3RyKHNlbGYuZGJfaWQpICsgJy8nICsKKyAg ICAgICAgICAgIHN0cihzZWxmLnNjaGVtYV9pZCkgKyAnLycgKyBzdHIoc2Vs Zi5zeW5vbnltX2lkKSwKKyAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9 VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3Rh dHVzX2NvZGUsIDIwMCkKIAorICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAg ICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQorICAgICAgICBkYXRh YmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2Vy dmVyX2lkLCBzZWxmLmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvc3lub255bXMvdGVzdHMvdGVzdF9zeW5vbnltX3B1dC5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3N5bm9ueW1zL3Rlc3RzL3Rlc3Rfc3lub255bV9wdXQucHkK aW5kZXggMWQ1YTYzOC4uMTZhMWI1NyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvc3lub255bXMvdGVzdHMvdGVzdF9zeW5vbnltX3B1dC5weQorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9zeW5vbnltcy90ZXN0cy90ZXN0X3N5bm9ueW1f cHV0LnB5CkBAIC02LDEyMCArNiw5MSBAQAogIyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKICMKICMg IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KK2ltcG9ydCB1dWlkCiBpbXBvcnQg anNvbgogCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMg dXRpbHMKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGlj dAogZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdl bmVyYXRvcgotZnJvbSByZWdyZXNzaW9uLnRlc3Rfc2V0dXAgaW1wb3J0IGFk dmFuY2VkX2NvbmZpZ19kYXRhCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2 ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZl cl91dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAogICAg IGRhdGFiYXNlX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMuc2VxdWVuY2VzLnRl c3RzIFwKKyAgICBpbXBvcnQgdXRpbHMgYXMgc2VxdWVuY2VfdXRpbHMKK2Zy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMuc2NoZW1hcy5mdW5jdGlvbnMudGVzdHMgXAorICAgIGltcG9ydCB1 dGlscyBhcyBmdW5jdGlvbnNfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93c2Vy LnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50ZXN0 cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIHNjaGVtYV91dGlscwogZnJvbSAu IGltcG9ydCB1dGlscyBhcyBzeW5vbnltX3V0aWxzCiAKIAogY2xhc3MgU3lu b255bVB1dFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKLSAgICAiIiIg VGhpcyBjbGFzcyB3aWxsIHVwZGF0ZSBhZGRlZCBzeW5vbnltIHVuZGVyIHNj aGVtYSBub2RlLiAiIiIKLQorICAgICIiIlRoaXMgY2xhc3Mgd2lsbCB1cGRh dGUgYWRkZWQgc3lub255bSB1bmRlciBzY2hlbWEgbm9kZS4iIiIKICAgICBz Y2VuYXJpb3MgPSBbCiAgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwg Zm9yIHN5bm9ueW0gbm9kZS4KICAgICAgICAgKCdGZXRjaCBzeW5vbnltIE5v ZGUgVVJMJywgZGljdCh1cmw9Jy9icm93c2VyL3N5bm9ueW0vb2JqLycpKQog ICAgIF0KIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNz KGNscyk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIHBl cmZvcm0gdGhlIHRocmVlIHRhc2tzCi0gICAgICAgICAxLiBBZGQgdGhlIHRl c3Qgc2VydmVyCi0gICAgICAgICAyLiBDb25uZWN0IHRvIHNlcnZlcgotICAg ICAgICAgMy4gQWRkIHRoZSBkYXRhYmFzZXMKLSAgICAgICAgIDQuIEFkZCB0 aGUgc2NoZW1hcwotICAgICAgICAgNS4gQWRkIHRoZSBzeW5vbnltcwotCi0g ICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAg IyBGaXJzdGx5LCBhZGQgdGhlIHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRp bHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICAjIENvbm5lY3Qg dG8gc2VydmVyCi0gICAgICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25z ZSwgY2xzLnNlcnZlcl9ncm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0gICAg ICAgICAgICBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3Rl cikKLSAgICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25z ZSkgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2Vy dmVyKHMpIGNvbm5lY3RlZCB0byBhZGQgdGhlIGRhdGFiYXNlISEhIikKLSAg ICAgICAgIyBBZGQgZGF0YWJhc2UKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMu YWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9y ZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNscy5zZXJ2ZXJfaWRzKQotICAgICAgICAjIEFkZCBzY2hlbWFzCi0gICAg ICAgIHNjaGVtYV91dGlscy5hZGRfc2NoZW1hcyhjbHMudGVzdGVyKQotICAg ICAgICAjIEFkZCBzeW5vbnltcwotICAgICAgICBzeW5vbnltX3V0aWxzLmFk ZF9zeW5vbnltKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNw b25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2xzLnNlcnZlcl9pZHMpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg ICBzZWxmLmRiX25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJd Wy0xXVsiZGJfbmFtZSJdCisgICAgICAgIHNjaGVtYV9pbmZvID0gcGFyZW50 X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCisgICAgICAgIHNlbGYuc2VydmVy X2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYu ZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJfaWQiXQorICAgICAgICBzZXJ2ZXJf Y29uID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYu c2VydmVyX2lkKQorICAgICAgICBpZiBzZXJ2ZXJfY29uOgorICAgICAgICAg ICAgaWYgInNlcnZlcl90eXBlIiBpbiBzZXJ2ZXJfY29uWyJkYXRhIl06Cisg ICAgICAgICAgICAgICAgaWYgc2VydmVyX2NvblsiZGF0YSJdWyJzZXJ2ZXJf dHlwZSJdID09ICJwZyI6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Ug PSAiU3lub255bSBub3Qgc3VwcG9ydGVkIGJ5IFBHLiIKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5za2lwVGVzdChtZXNzYWdlKQorICAgICAgICBkYl9j b24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYsIHV0 aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwgc2VsZi5k Yl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0 ZWQiXToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90 IGNvbm5lY3QgdG8gZGF0YWJhc2UgdG8gYWRkIHN5bm9ueW0uIikKKyAgICAg ICAgc2VsZi5zY2hlbWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lkIl0K KyAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHNjaGVtYV9pbmZvWyJzY2hl bWFfbmFtZSJdCisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91 dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCisgICAg ICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlz ZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gYWRk IHRoZSBzeW5vbnltLiIpCisgICAgICAgIHNlbGYuc2VxdWVuY2VfbmFtZSA9 ICJ0ZXN0X3NlcXVlbmNlX3N5bm9ueW1fJXMiICUgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHIodXVpZC51dWlkNCgpKVsxOjZdCisgICAg ICAgIHNlbGYuc2VxdWVuY2VfaWQgPSBzZXF1ZW5jZV91dGlscy5jcmVhdGVf c2VxdWVuY2VzKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYuZGJf bmFtZSwgc2VsZi5zY2hlbWFfbmFtZSwgc2VsZi5zZXF1ZW5jZV9uYW1lKQor ICAgICAgICBzZWxmLnN5bm9ueW1fbmFtZSA9ICJ0ZXN0X3N5bm9ueW1fcHV0 XyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0KKyAgICAgICAgc2VsZi5z eW5vbnltX2lkID0gc3lub255bV91dGlscy5jcmVhdGVfc3lub255bShzZWxm LnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLmRiX25hbWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5zY2hlbWFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN5bm9ueW1fbmFt ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLnNlcXVlbmNlX25hbWUpCiAKICAgICBkZWYg cnVuVGVzdChzZWxmKToKLSAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2ls bCB1cGRhdGUgc3lub255bSB1bmRlciBzY2hlbWEgbm9kZS4gIiIiCi0KLSAg ICAgICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lkcygpCi0gICAgICAgIHNlcnZl cl9pZHMgPSBhbGxfaWRbInNpZCJdCi0gICAgICAgIGRiX2lkc19kaWN0ID0g YWxsX2lkWyJkaWQiXVswXQotICAgICAgICBzY2hlbWFfaWRzX2RpY3QgPSBh bGxfaWRbInNjaWQiXVswXQotICAgICAgICBzeW5vbnltX2lkc19kaWN0ID0g YWxsX2lkWyJzeWlkIl1bMF0KLQotICAgICAgICBmb3Igc2VydmVyX2lkIGlu IHNlcnZlcl9pZHM6Ci0gICAgICAgICAgICBkYl9pZCA9IGRiX2lkc19kaWN0 W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAgICAgZGJfY29uID0gZGF0YWJh c2VfdXRpbHMudmVyaWZ5X2RhdGFiYXNlKHNlbGYudGVzdGVyLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRiX2lk KQotICAgICAgICAgICAgaWYgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJd OgotICAgICAgICAgICAgICAgIHNjaGVtYV9pbmZvID0gc2NoZW1hX2lkc19k aWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAgICAgICAgIHNjaGVtYV9y ZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnRl c3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hX2luZm9b MF0pCi0gICAgICAgICAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0ganNvbi5s b2FkcygKLSAgICAgICAgICAgICAgICAgICAgc2NoZW1hX3Jlc3BvbnNlLmRh dGEuZGVjb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgICAgIGlmIGxlbihz Y2hlbWFfcmVzcG9uc2UpICE9IDA6Ci0gICAgICAgICAgICAgICAgICAgIHN5 bm9ueW1faWQgPSBzeW5vbnltX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQot ICAgICAgICAgICAgICAgICAgICBnZXRfcmVzcG9uc2UgPSBzeW5vbnltX3V0 aWxzLnZlcmlmeV9zeW5vbnltKAotICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi50ZXN0ZXIsIHNlcnZlcl9pZCwgZGJfaWQsIHNjaGVtYV9pbmZvWzBd LAotICAgICAgICAgICAgICAgICAgICAgICAgc3lub255bV9pZCkKLQotICAg ICAgICAgICAgICAgICAgICBnZXRfcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9h ZHMoCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRfcmVzcG9uc2UuZGF0 YS5kZWNvZGUoJ3V0Zi04JykpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxl bihnZXRfcmVzcG9uc2VfZGF0YSkgPT0gMDoKLSAgICAgICAgICAgICAgICAg ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gc3lub255bSBub2RlIHRvIHVw ZGF0ZS4iKQotCi0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFkdmFuY2VkX2NvbmZpZ19kYXRhWydzeW5v bnltX3VwZGF0ZV9kYXRhJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBbJ2NvbW1lbnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpZCI6 IHN5bm9ueW1faWQsCi0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg ICAgICAgICAgICAgICBwdXRfcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wdXQo Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1dGls cy5TRVJWRVJfR1JPVVApICsgJy8nICsKLSAgICAgICAgICAgICAgICAgICAg ICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsKLSAgICAgICAgICAgICAgICAg ICAgICAgIHN0cihkYl9pZCkgKyAnLycgKwotICAgICAgICAgICAgICAgICAg ICAgICAgc3RyKHNjaGVtYV9pbmZvWzBdKSArICcvJyArCi0gICAgICAgICAg ICAgICAgICAgICAgICBzdHIoc3lub255bV9pZCksCi0gICAgICAgICAgICAg ICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoZGF0YSksCi0gICAgICAgICAg ICAgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCi0KLSAgICAg ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHV0X3Jlc3BvbnNl LnN0YXR1c19jb2RlLCAyMDApCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk ZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICAiIiIKLSAgICAgICAg VGhpcyBmdW5jdGlvbiBkZWxldGVzIHRoZSBhZGRlZCBzeW5vbnltcywgc2No ZW1hcywgZGF0YWJhc2UsCi0gICAgICAgIHNlcnZlciBhbmQgdGhlICdwYXJl bnRfaWQucGtsJyBmaWxlIHdoaWNoIGlzIGNyZWF0ZWQgaW4gc2V0dXAoKQot ICAgICAgICBmdW5jdGlvbi4KLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0g ICAgICAgICIiIgotCi0gICAgICAgIHN5bm9ueW1fdXRpbHMuZGVsZXRlX3N5 bm9ueW0oY2xzLnRlc3RlcikKLSAgICAgICAgc2NoZW1hX3V0aWxzLmRlbGV0 ZV9zY2hlbWEoY2xzLnRlc3RlcikKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMu ZGVsZXRlX2RhdGFiYXNlKGNscy50ZXN0ZXIpCi0gICAgICAgIHNlcnZlcl91 dGlscy5kZWxldGVfc2VydmVyKGNscy50ZXN0ZXIpCi0gICAgICAgIHV0aWxz LmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCisgICAgICAgICIiIlRoaXMgZnVu Y3Rpb24gd2lsbCB1cGRhdGUgc3lub255bSB1bmRlciBzY2hlbWEgbm9kZS4i IiIKKyAgICAgICAgc3lub255bV9yZXNwb25zZSA9IHN5bm9ueW1fdXRpbHMu dmVyaWZ5X3N5bm9ueW0oc2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zeW5vbnltX25hbWUpCisgICAg ICAgIGlmIG5vdCBzeW5vbnltX3Jlc3BvbnNlOgorICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKCJObyBzeW5vbnltIG5vZGUgdG8gdXBkYXRlLiIpCisg ICAgICAgIGZ1bmNfbmFtZSA9ICJ0ZXN0X2Z1bmN0aW9uX3N5bm9ueW1fJXMi ICUgc3RyKHV1aWQudXVpZDQoKSlbMTo2XQorICAgICAgICBzZWxmLnRhYmxl X2lkID0gZnVuY3Rpb25zX3V0aWxzLmNyZWF0ZV90cmlnZ2VyX2Z1bmN0aW9u KAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwgc2Vs Zi5zY2hlbWFfbmFtZSwgZnVuY19uYW1lKQorCisgICAgICAgIGRhdGEgPSB7 CisgICAgICAgICAgICAibmFtZSI6IHNlbGYuc3lub255bV9uYW1lLAorICAg ICAgICAgICAgInN5bm9iam5hbWUiOiBmdW5jX25hbWUsCisgICAgICAgICAg ICAic3lub2Jqc2NoZW1hIjogc2VsZi5zY2hlbWFfbmFtZSwKKyAgICAgICAg ICAgICJ0YXJnZXR0eXBlIjogIkZ1bmN0aW9uIgorICAgICAgICB9CisgICAg ICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucHV0KAorICAgICAgICAgICAg c2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCisg ICAgICAgICAgICBzdHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsKKyAgICAg ICAgICAgIHN0cihzZWxmLmRiX2lkKSArICcvJyArCisgICAgICAgICAgICBz dHIoc2VsZi5zY2hlbWFfaWQpICsgJy8nICsKKyAgICAgICAgICAgIHN0cihz ZWxmLnN5bm9ueW1fbmFtZSksCisgICAgICAgICAgICBkYXRhPWpzb24uZHVt cHMoZGF0YSksCisgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUp CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19j b2RlLCAyMDApCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAg ICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKKyAgICAgICAgZGF0YWJhc2Vf dXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9p ZCwgc2VsZi5kYl9pZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N5 bm9ueW1zL3Rlc3RzL3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3lub255 bXMvdGVzdHMvdXRpbHMucHkKaW5kZXggMmM3ZTQzMC4uZWY0NTM5YyAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3lub255bXMvdGVzdHMvdXRpbHMu cHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3lub255bXMvdGVzdHMvdXRpbHMu cHkKQEAgLTYsMTQ5ICs2LDczIEBACiAjICNUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKICMKICMgIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2Zyb20gX19mdXR1cmVfXyBp bXBvcnQgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9y dCBzeXMKIAotaW1wb3J0IGpzb24KLWltcG9ydCBvcwotaW1wb3J0IHBpY2ts ZQotCi1mcm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBpbXBvcnQgcGlja2xl X3BhdGgsIGFkdmFuY2VkX2NvbmZpZ19kYXRhCi1mcm9tIHBnYWRtaW4uYnJv d3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGlt cG9ydCBcCi0gICAgdXRpbHMgYXMgZGF0YWJhc2VfdXRpbHMKLWZyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu c2NoZW1hcy50ZXN0cyBpbXBvcnQgXAotICAgIHV0aWxzIGFzIHNjaGVtYV91 dGlscwogZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0 aWxzCiAKLVNZTk9OWU1fVVJMID0gJy9icm93c2VyL3N5bm9ueW0vb2JqLycK LQotCi1kZWYgZ2V0X3N5bm9ueW1fY29uZmlnX2RhdGEoc2VydmVyX2Nvbm5l Y3RfZGF0YSk6Ci0gICAgIiIiVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBz eW5vbnltIGNvbmZpZyBkYXRhIiIiCi0KLSAgICBhZHZfY29uZmlnX2RhdGEg PSBOb25lCi0gICAgZGF0YSA9IE5vbmUKLSAgICBkYl91c2VyID0gc2VydmVy X2Nvbm5lY3RfZGF0YVsnZGF0YSddWyd1c2VyJ11bJ25hbWUnXQotCi0gICAg IyBHZXQgdGhlIGNvbmZpZyBkYXRhIG9mIGFwcHJvcHJpYXRlIGRiIHVzZXIK LSAgICBmb3IgY29uZmlnX3Rlc3RfZGF0YSBpbiBcCi0gICAgICAgICAgICBh ZHZhbmNlZF9jb25maWdfZGF0YVsnc3lub255bV9jcmVkZW50aWFscyddOgot ICAgICAgICBpZiBkYl91c2VyID09IGNvbmZpZ190ZXN0X2RhdGFbJ293bmVy J106Ci0gICAgICAgICAgICBhZHZfY29uZmlnX2RhdGEgPSBjb25maWdfdGVz dF9kYXRhCi0KLSAgICBpZiBhZHZfY29uZmlnX2RhdGEgaXMgbm90IE5vbmU6 Ci0gICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAibmFtZSI6IGFkdl9j b25maWdfZGF0YVsnbmFtZSddLAotICAgICAgICAgICAgInNjaGVtYSI6IGFk dl9jb25maWdfZGF0YVsnc2NoZW1hJ10sCi0gICAgICAgICAgICAic3lub2Jq bmFtZSI6IGFkdl9jb25maWdfZGF0YVsnc3lub2JqbmFtZSddLAotICAgICAg ICAgICAgInN5bm9ianNjaGVtYSI6IGFkdl9jb25maWdfZGF0YVsnc3lub2Jq c2NoZW1hJ10sCi0gICAgICAgICAgICAidGFyZ2V0dHlwZSI6IGFkdl9jb25m aWdfZGF0YVsndGFyZ2V0dHlwZSddCi0gICAgICAgIH0KLSAgICByZXR1cm4g ZGF0YQotCiAKLWRlZiB3cml0ZV9zeW5vbnltX2lkKHJlc3BvbnNlX2RhdGEs IHNlcnZlcl9pZCk6CitkZWYgY3JlYXRlX3N5bm9ueW0oc2VydmVyLCBkYl9u YW1lLCBzY2hlbWFfbmFtZSwgIHN5bm9ueW1fbmFtZSwgc2VxdWVuY2VfbmFt ZSk6CiAgICAgIiIiCi0gICAgVGhpcyBmdW5jdGlvbiB3cml0ZXMgdGhlIHNl cnZlciBhbmQgc3lub255bSBpZAotCi0gICAgOnBhcmFtIHJlc3BvbnNlX2Rh dGE6IHN5bm9ueW0gcmVzcG9uc2UgZGF0YQotICAgIDp0eXBlIHJlc3BvbnNl X2RhdGE6IGRpY3QKLSAgICA6cGFyYW0gc2VydmVyX2lkOiBzZXJ2ZXIgaWQK LSAgICA6dHlwZSBzZXJ2ZXJfaWQ6IGludAotICAgIDpyZXR1cm46IE5vbmUK KyAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZSB0aGUgc3lub255bSBvbiBnaXZl biBzY2hlbWEgbm9kZS4KKyAgICA6cGFyYW0gc2VydmVyOiBzZXJ2ZXIgZGV0 YWlscworICAgIDp0eXBlIHNlcnZlcjogZGljdAorICAgIDpwYXJhbSBkYl9u YW1lOiBkYXRhYmFzZSBuYW1lCisgICAgOnR5cGUgZGJfbmFtZTogc3RyCisg ICAgOnBhcmFtIHNjaGVtYV9uYW1lOiBzY2hlbWEgbmFtZQorICAgIDp0eXBl IHNjaGVtYV9uYW1lOiBzdHIKKyAgICA6cGFyYW0gc3lub255bV9uYW1lOiBz eW5vbnltIG5hbWUKKyAgICA6dHlwZSBzeW5vbnltX25hbWU6IHN0cgorICAg IDpwYXJhbSBzZXF1ZW5jZV9uYW1lOiBzZXF1ZW5jZSBuYW1lCisgICAgOnR5 cGUgc2VxdWVuY2VfbmFtZTogc3RyCisgICAgOnJldHVybiBzeW5vbnltX2lk OiBzeW5vbnltX2lkCisgICAgOnJ0eXBlOiBpbnQKICAgICAiIiIKLQotICAg IHN5bm9ueW1faWQgPSByZXNwb25zZV9kYXRhWydub2RlJ11bJ19pZCddCi0g ICAgcGlja2xlX2lkX2RpY3QgPSB1dGlscy5nZXRfcGlja2xlX2lkX2RpY3Qo KQotICAgIGlmIG9zLnBhdGguaXNmaWxlKHBpY2tsZV9wYXRoKToKLSAgICAg ICAgZXhpc3Rpbmdfc2VydmVyX2lkID0gb3BlbihwaWNrbGVfcGF0aCwgJ3Ji JykKLSAgICAgICAgdG9sX3NlcnZlcl9pZCA9IHBpY2tsZS5sb2FkKGV4aXN0 aW5nX3NlcnZlcl9pZCkKLSAgICAgICAgcGlja2xlX2lkX2RpY3QgPSB0b2xf c2VydmVyX2lkCi0gICAgaWYgJ3N5aWQnIGluIHBpY2tsZV9pZF9kaWN0Ogot ICAgICAgICBpZiBwaWNrbGVfaWRfZGljdFsnc3lpZCddOgotICAgICAgICAg ICAgIyBBZGQgdGhlIGRiX2lkIGFzIHZhbHVlIGluIGRpY3QKLSAgICAgICAg ICAgIHBpY2tsZV9pZF9kaWN0WyJzeWlkIl1bMF0udXBkYXRlKAotICAgICAg ICAgICAgICAgIHtpbnQoc2VydmVyX2lkKTogc3lub255bV9pZH0pCi0gICAg ICAgIGVsc2U6Ci0gICAgICAgICAgICAjIENyZWF0ZSBuZXcgZGljdCB3aXRo IHNlcnZlcl9pZCBhbmQgZGJfaWQKLSAgICAgICAgICAgIHBpY2tsZV9pZF9k aWN0WyJzeWlkIl0uYXBwZW5kKAotICAgICAgICAgICAgICAgIHtpbnQoc2Vy dmVyX2lkKTogc3lub255bV9pZH0pCi0gICAgZGJfb3V0cHV0ID0gb3Blbihw aWNrbGVfcGF0aCwgJ3diJykKLSAgICBwaWNrbGUuZHVtcChwaWNrbGVfaWRf ZGljdCwgZGJfb3V0cHV0KQotICAgIGRiX291dHB1dC5jbG9zZSgpCi0KLQot ZGVmIGFkZF9zeW5vbnltKHRlc3Rlciwgc2VydmVyX2Nvbm5lY3RfcmVzcG9u c2UsIHNlcnZlcl9pZHMpOgotICAgICIiIlRoaXMgZnVuY3Rpb24gYWRkIHRo ZSBzeW5vbnltIHRvIHNjaGVtYXMiIiIKLQotICAgIGFsbF9pZCA9IHV0aWxz LmdldF9pZHMoKQotICAgIGRiX2lkc19kaWN0ID0gYWxsX2lkWyJkaWQiXVsw XQotICAgIHNjaGVtYV9pZHNfZGljdCA9IGFsbF9pZFsic2NpZCJdWzBdCi0K LSAgICBmb3Igc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIHNlcnZlcl9pZCBp biB6aXAoc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9p ZHMpOgotICAgICAgICBkYl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJf aWQpXQotICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy52ZXJpZnlf ZGF0YWJhc2UodGVzdGVyLCB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2 ZXJfaWQsIGRiX2lkKQotICAgICAgICBpZiBkYl9jb25bJ2RhdGEnXVsiY29u bmVjdGVkIl06Ci0gICAgICAgICAgICBzY2hlbWFfaW5mbyA9IHNjaGVtYV9p ZHNfZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgICAgIHNjaGVtYV91 dGlscy52ZXJpZnlfc2NoZW1hcyh0ZXN0ZXIsIHNlcnZlcl9pZCwgZGJfaWQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2No ZW1hX2luZm9bMF0pCi0gICAgICAgICAgICBkYXRhID0gZ2V0X3N5bm9ueW1f Y29uZmlnX2RhdGEoc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UpCi0gICAgICAg ICAgICBkYXRhWydzY2hlbWEnXSA9IHNjaGVtYV9pbmZvWzFdCi0gICAgICAg ICAgICByZXNwb25zZSA9IHRlc3Rlci5wb3N0KAotICAgICAgICAgICAgICAg IFNZTk9OWU1fVVJMICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycg KyBzdHIoc2VydmVyX2lkKQotICAgICAgICAgICAgICAgICsgJy8nICsgc3Ry KGRiX2lkKSArICcvJyArIHN0cihzY2hlbWFfaW5mb1swXSkgKyAnLycsCi0g ICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRhdGEpLCBjb250ZW50 X3R5cGU9J2h0bWwvanNvbicpCi0gICAgICAgICAgICByZXNwb25zZV9kYXRh ID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkK LSAgICAgICAgICAgIHdyaXRlX3N5bm9ueW1faWQocmVzcG9uc2VfZGF0YSwg c2VydmVyX2lkKQotCi0KLWRlZiB2ZXJpZnlfc3lub255bSh0ZXN0ZXIsIHNl cnZlcl9pZCwgZGJfaWQsIHNjaGVtYV9pZCwgc3lub255bV9pZCk6Ci0gICAg IiIiVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgc3lub255bSB1c2luZyBH RVQgQVBJIiIiCi0KLSAgICBnZXRfcmVzcG9uc2UgPSB0ZXN0ZXIuZ2V0KAot ICAgICAgICBTWU5PTllNX1VSTCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVAp ICsgJy8nICsgc3RyKHNlcnZlcl9pZCkgKyAnLycgKwotICAgICAgICBzdHIo ZGJfaWQpICsgJy8nICsgc3RyKHNjaGVtYV9pZCkgKyAnLycgKyBzdHIoc3lu b255bV9pZCksCi0gICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykK LQotICAgIHJldHVybiBnZXRfcmVzcG9uc2UKLQotCi1kZWYgZGVsZXRlX3N5 bm9ueW0odGVzdGVyKToKLSAgICAiIiJUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMg dGhlIHN5bm9ueW1zIGZyb20gc2NoZW1hIiIiCi0KLSAgICBhbGxfaWQgPSB1 dGlscy5nZXRfaWRzKCkKLSAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQi XQotICAgIGRiX2lkc19kaWN0ID0gYWxsX2lkWyJkaWQiXVswXQotICAgIHNj aGVtYV9pZHNfZGljdCA9IGFsbF9pZFsic2NpZCJdWzBdCi0gICAgc3lub255 bV9pZHNfZGljdCA9IGFsbF9pZFsic3lpZCJdWzBdCi0KLSAgICBmb3Igc2Vy dmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAgIGRiX2lkID0gZGJfaWRz X2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAgIGRiX2NvbiA9IGRhdGFi YXNlX3V0aWxzLnZlcmlmeV9kYXRhYmFzZSh0ZXN0ZXIsIHV0aWxzLlNFUlZF Ul9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlcnZlcl9pZCwgZGJfaWQpCi0gICAgICAgIGlmIGRi X2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKLSAgICAgICAgICAgIHNjaGVt YV9pbmZvID0gc2NoZW1hX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAg ICAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlm eV9zY2hlbWFzKHRlc3Rlciwgc2VydmVyX2lkLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRi X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNjaGVtYV9pbmZvWzBdKQotICAgICAgICAg ICAgc2NoZW1hX3Jlc3BvbnNlID0ganNvbi5sb2FkcyhzY2hlbWFfcmVzcG9u c2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCi0gICAgICAgICAgICBpZiBsZW4o c2NoZW1hX3Jlc3BvbnNlKSAhPSAwOgotICAgICAgICAgICAgICAgIHN5bm9u eW1faWQgPSBzeW5vbnltX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAg ICAgICAgICAgICAgIGdldF9yZXNwb25zZSA9IHZlcmlmeV9zeW5vbnltKAot ICAgICAgICAgICAgICAgICAgICB0ZXN0ZXIsIHNlcnZlcl9pZCwgZGJfaWQs IHNjaGVtYV9pbmZvWzBdLCBzeW5vbnltX2lkKQotCi0gICAgICAgICAgICAg ICAgZ2V0X3Jlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKAotICAgICAgICAg ICAgICAgICAgICBnZXRfcmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04Jykp Ci0gICAgICAgICAgICAgICAgaWYgbGVuKGdldF9yZXNwb25zZV9kYXRhKSA9 PSAwOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5v IHN5bm9ueW0gbm9kZSB0byBkZWxldGUuIikKLQotICAgICAgICAgICAgICAg IGRlbF9yZXNwb25zZSA9IHRlc3Rlci5kZWxldGUoCi0gICAgICAgICAgICAg ICAgICAgIFNZTk9OWU1fVVJMICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkg KyAnLycgKwotICAgICAgICAgICAgICAgICAgICBzdHIoc2VydmVyX2lkKSAr ICcvJyArIHN0cihkYl9pZCkgKyAnLycgKwotICAgICAgICAgICAgICAgICAg ICBzdHIoc2NoZW1hX2luZm9bMF0pICsgJy8nICsgc3RyKHN5bm9ueW1faWQp LAotICAgICAgICAgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUp Ci0KLSAgICAgICAgICAgICAgICBhc3NlcnQgZGVsX3Jlc3BvbnNlLnN0YXR1 c19jb2RlID09IDIwMAotICAgICAgICAgICAgICAgIGRlbF9yZXNwb25zZV9k YXRhID0ganNvbi5sb2FkcygKLSAgICAgICAgICAgICAgICAgICAgZGVsX3Jl c3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgICAg IGFzc2VydCBkZWxfcmVzcG9uc2VfZGF0YVsnc3VjY2VzcyddID09IDEKKyAg ICB0cnk6CisgICAgICAgIGNvbm5lY3Rpb24gPSB1dGlscy5nZXRfZGJfY29u bmVjdGlvbihkYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyWyd1c2VybmFtZSddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy WydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyWydob3N0J10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3Bv cnQnXSkKKyAgICAgICAgcGdfY3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3Io KQorICAgICAgICBxdWVyeSA9ICJDUkVBVEUgT1IgUkVQTEFDRSBTWU5PTllN ICVzLiVzIEZPUiAlcy4lcyIgJSAoCisgICAgICAgICAgICBzY2hlbWFfbmFt ZSwgc3lub255bV9uYW1lLCBzY2hlbWFfbmFtZSwgc2VxdWVuY2VfbmFtZSkK KyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUocXVlcnkpCisgICAgICAgIGNv bm5lY3Rpb24uY29tbWl0KCkKKyAgICAgICAgIyBHZXQgJ29pZCcgZnJvbSBu ZXdseSBjcmVhdGVkIHN5bm9ueW0KKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1 dGUoIlNFTEVDVCBvaWQgRlJPTSBwZ19zeW5vbnltIFdIRVJFIHN5bm5hbWU9 JyVzJyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5vbnltX25h bWUpCisgICAgICAgIHN5bm9ueW1faWQgPSBwZ19jdXJzb3IuZmV0Y2hvbmUo KQorICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkKKyAgICAgICAgcmV0dXJu IHN5bm9ueW1faWQKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICB0 cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKKworCitkZWYg dmVyaWZ5X3N5bm9ueW0oc2VydmVyLCBkYl9uYW1lLCBzeW5vbnltX25hbWUp OgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gY3JlYXRlIHRoZSBzeW5v bnltIG9uIGdpdmVuIHNjaGVtYSBub2RlLgorICAgIDpwYXJhbSBzZXJ2ZXI6 IHNlcnZlciBkZXRhaWxzCisgICAgOnR5cGUgc2VydmVyOiBkaWN0CisgICAg OnBhcmFtIGRiX25hbWU6IGRhdGFiYXNlIG5hbWUKKyAgICA6dHlwZSBkYl9u YW1lOiBzdHIKKyAgICA6cGFyYW0gc3lub255bV9uYW1lOiBzeW5vbnltIG5h bWUKKyAgICA6dHlwZSBzeW5vbnltX25hbWU6IHN0cgorICAgIDpyZXR1cm4g c3lub255bTogc3lub255bSByZWNvcmQgZnJvbSBkYXRhYmFzZQorICAgIDpy dHlwZTogdHVwbGUKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIGNvbm5l Y3Rpb24gPSB1dGlscy5nZXRfZGJfY29ubmVjdGlvbihkYl9uYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vy dmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyWydkYl9wYXNzd29yZCddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vy dmVyWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJ2ZXJbJ3BvcnQnXSkKKyAgICAgICAgcGdfY3Vy c29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQorICAgICAgICBwZ19jdXJzb3Iu ZXhlY3V0ZSgiU0VMRUNUICogRlJPTSBwZ19zeW5vbnltIFdIRVJFIHN5bm5h bWU9JyVzJyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5vbnlt X25hbWUpCisgICAgICAgIHN5bm9ueW0gPSBwZ19jdXJzb3IuZmV0Y2hvbmUo KQorICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkKKyAgICAgICAgcmV0dXJu IHN5bm9ueW0KKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICB0cmFj ZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3Rlc3RzL3Rlc3Rfc2NoZW1hX2FkZC5weSBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3Rlc3RzL3Rlc3Rfc2NoZW1hX2FkZC5weQppbmRleCA4 ZmQ3MjI2Li5kYzBhNTJiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 ZXN0cy90ZXN0X3NjaGVtYV9hZGQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGVzdHMvdGVzdF9zY2hlbWFfYWRkLnB5CkBAIC02LDYwICs2LDY2IEBACiAj IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQogIwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9y dCBqc29uCitpbXBvcnQgdXVpZAogCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0 IHRlc3RfdXRpbHMgYXMgdXRpbHMKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0 ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKLWZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMg YXMgc2VydmVyX3V0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVu dF9ub2RlX2RpY3QKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91 cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwK ICAgICBkYXRhYmFzZV91dGlscwotZnJvbSAuIGltcG9ydCB1dGlscyBhcyBz Y2hlbWFfdXRpbHMKIAogCiBjbGFzcyBTY2hlbWFBZGRUZXN0Q2FzZShCYXNl VGVzdEdlbmVyYXRvcik6CiAgICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCBhZGQg bmV3IHNjaGVtYSB1bmRlciBkYXRhYmFzZSBub2RlLiAiIiIKLQogICAgIHNj ZW5hcmlvcyA9IFsKICAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBm b3Igc2NoZW1hIG5vZGUuCiAgICAgICAgICgnQ2hlY2sgU2NoZW1hIE5vZGUg VVJMJywgZGljdCh1cmw9Jy9icm93c2VyL3NjaGVtYS9vYmovJykpCiAgICAg XQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xz KToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gcGVyZm9y bSB0aGUgdGhyZWUgdGFza3MKLSAgICAgICAgIDEuIEFkZCB0aGUgdGVzdCBz ZXJ2ZXIKLSAgICAgICAgIDIuIENvbm5lY3QgdG8gc2VydmVyCi0gICAgICAg ICAzLiBBZGQgdGhlIGRhdGFiYXNlcwotCi0gICAgICAgIDpyZXR1cm46IE5v bmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBGaXJzdGx5LCBhZGQgdGhl IHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMu dGVzdGVyKQotICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVyCi0gICAgICAg IGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZlcl9ncm91 cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0gICAgICAgICAgICBzZXJ2ZXJfdXRp bHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgaWYgbGVu KGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKLSAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0 byBhZGQgdGhlIGRhdGFiYXNlISEhIikKLSAgICAgICAgIyBBZGQgZGF0YWJh c2UKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFiYXNlKGNscy50 ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfaWRzKQot CiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIiBUaGlzIGZ1 bmN0aW9uIHdpbGwgYWRkIHNjaGVtYSB1bmRlciBkYXRhYmFzZSBub2RlLiAi IiIKKyAgICAgICAgZGF0YWJhc2VfaW5mbyA9IHBhcmVudF9ub2RlX2RpY3Rb ImRhdGFiYXNlIl1bLTFdCisgICAgICAgIHNlcnZlcl9pZCA9IGRhdGFiYXNl X2luZm9bInNlcnZlcl9pZCJdCiAKLSAgICAgICAgc2NoZW1hX3V0aWxzLmFk ZF9zY2hlbWFzKHNlbGYudGVzdGVyKQotCi0gICAgQGNsYXNzbWV0aG9kCi0g ICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAg ICAgIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgc2NoZW1hcywg ZGF0YWJhc2UsIHNlcnZlcgotICAgICAgICBhbmQgdGhlICdwYXJlbnRfaWQu cGtsJyBmaWxlIHdoaWNoIGlzIGNyZWF0ZWQgaW4gc2V0dXAoKSBmdW5jdGlv bi4KLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0g ICAgICAgIHNjaGVtYV91dGlscy5kZWxldGVfc2NoZW1hKGNscy50ZXN0ZXIp Ci0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmRlbGV0ZV9kYXRhYmFzZShjbHMu dGVzdGVyKQotICAgICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihj bHMudGVzdGVyKQotICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2Zp bGUoKQorICAgICAgICBkYl9pZCA9IGRhdGFiYXNlX2luZm9bImRiX2lkIl0K KyAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRh YmFzZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2 ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGJfaWQpCisgICAgICAgIGlmIG5vdCBkYl9jb25bImlu Zm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6CisgICAgICAgICAgICBy YWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNl IHRvIGFkZCB0aGUgc2NoZW1hLiIpCisgICAgICAgIGRiX3VzZXIgPSBzZWxm LnNlcnZlclsidXNlcm5hbWUiXQorICAgICAgICBkYXRhID0geworICAgICAg ICAgICAgImRlZmZ1bmNhY2wiOiBbXSwKKyAgICAgICAgICAgICJkZWZzZXFh Y2wiOiBbXSwKKyAgICAgICAgICAgICJkZWZ0YmxhY2wiOiBbXSwKKyAgICAg ICAgICAgICJkZWZ0eXBlYWNsIjogW10sCisgICAgICAgICAgICAibmFtZSI6 ICJ0ZXN0X3NjaGVtYV97MH0iLmZvcm1hdChzdHIodXVpZC51dWlkNCgpKVsx OjZdKSwKKyAgICAgICAgICAgICJuYW1lc3BhY2Vvd25lciI6IGRiX3VzZXIs CisgICAgICAgICAgICAibnNwYWNsIjogWworICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgICAgImdyYW50ZWUiOiBkYl91c2VyLAorICAg ICAgICAgICAgICAgICAgICAiZ3JhbnRvciI6IGRiX3VzZXIsCisgICAgICAg ICAgICAgICAgICAgICJwcml2aWxlZ2VzIjoKKyAgICAgICAgICAgICAgICAg ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2aWxlZ2VfdHlwZSI6 ICJDIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaXZp bGVnZSI6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJ3aXRoX2dyYW50IjogRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaXZpbGVnZV90eXBlIjog IlUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpdmls ZWdlIjogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IndpdGhfZ3JhbnQiOiBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgInNlY2xhYmVs cyI6IFtdCisgICAgICAgIH0KKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRl c3Rlci5wb3N0KHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkg KyAnLycgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RyKHNlcnZlcl9pZCkgKyAnLycgKyBzdHIoZGJfaWQpICsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJywgZGF0YT1qc29uLmR1 bXBzKGRhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICBzZWxmLmFz c2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGVzdHMvdGVzdF9zY2hlbWFfZGVsZXRl LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGVzdHMvdGVzdF9zY2hlbWFfZGVsZXRl LnB5CmluZGV4IDk5NWQ4YWQuLmRjZjljZDYgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3Rlc3RzL3Rlc3Rfc2NoZW1hX2RlbGV0ZS5weQorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90ZXN0cy90ZXN0X3NjaGVtYV9kZWxldGUucHkKQEAg LTYsMTAgKzYsMTEgQEAKICMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAjCiAjICMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworaW1wb3J0IHV1aWQKIAogZnJvbSByZWdyZXNzaW9uIGlt cG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1w b3J0IHBhcmVudF9ub2RlX2RpY3QKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0 ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKLWZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMg YXMgc2VydmVyX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBh cyBcCiAgICAgZGF0YWJhc2VfdXRpbHMKIGZyb20gLiBpbXBvcnQgdXRpbHMg YXMgc2NoZW1hX3V0aWxzCkBAIC0yMyw0NCArMjQsNDIgQEAgY2xhc3MgU2No ZW1hRGVsZXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAg ICAoJ0NoZWNrIFNjaGVtYSBOb2RlIFVSTCcsIGRpY3QodXJsPScvYnJvd3Nl ci9zY2hlbWEvb2JqLycpKQogICAgIF0KIAotICAgIEBjbGFzc21ldGhvZAot ICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgICIiIgotICAgICAg ICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm0gdGhlIHRocmVlIHRhc2tzCi0gICAg ICAgICAxLiBBZGQgdGhlIHRlc3Qgc2VydmVyCi0gICAgICAgICAyLiBDb25u ZWN0IHRvIHNlcnZlcgotICAgICAgICAgMy4gQWRkIHRoZSBkYXRhYmFzZXMK LQotICAgICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0gICAg ICAgICMgRmlyc3RseSwgYWRkIHRoZSBzZXJ2ZXIKLSAgICAgICAgc2VydmVy X3V0aWxzLmFkZF9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgIyBDb25u ZWN0IHRvIHNlcnZlcgotICAgICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVz cG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAot ICAgICAgICAgICAgc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50 ZXN0ZXIpCi0gICAgICAgIGlmIGxlbihjbHMuc2VydmVyX2Nvbm5lY3RfcmVz cG9uc2UpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5v IFNlcnZlcihzKSBjb25uZWN0ZWQgdG8gYWRkIHRoZSBkYXRhYmFzZSEhISIp Ci0gICAgICAgICMgQWRkIGRhdGFiYXNlCi0gICAgICAgIGRhdGFiYXNlX3V0 aWxzLmFkZF9kYXRhYmFzZShjbHMudGVzdGVyLCBjbHMuc2VydmVyX2Nvbm5l Y3RfcmVzcG9uc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjbHMuc2VydmVyX2lkcykKLSAgICAgICAgIyBBZGQgc2NoZW1hcwot ICAgICAgICBzY2hlbWFfdXRpbHMuYWRkX3NjaGVtYXMoY2xzLnRlc3RlcikK KyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGF0YWJhc2Vf aW5mbyA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdCisgICAg ICAgIHNlbGYuZGJfbmFtZSA9IHNlbGYuZGF0YWJhc2VfaW5mb1siZGJfbmFt ZSJdCisgICAgICAgICMgQ2hhbmdlIHRoZSBkYiBuYW1lLCBzbyB0aGF0IHNj aGVtYSB3aWxsIGNyZWF0ZSBpbiBuZXdseSBjcmVhdGVkIGRiCisgICAgICAg IHNlbGYuc2NoZW1hX25hbWUgPSAic2NoZW1hX2dldF8lcyIgJSBzdHIodXVp ZC51dWlkNCgpKVsxOjZdCisgICAgICAgIGNvbm5lY3Rpb24gPSB1dGlscy5n ZXRfZGJfY29ubmVjdGlvbihzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsn dXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10pCisgICAg ICAgIHNlbGYuc2NoZW1hX2RldGFpbHMgPSBzY2hlbWFfdXRpbHMuY3JlYXRl X3NjaGVtYShjb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFf bmFtZSkKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAiIiIg VGhpcyBmdW5jdGlvbiB3aWxsIGRlbGV0ZSBzY2hlbWEgdW5kZXIgZGF0YWJh c2Ugbm9kZS4gIiIiCisgICAgICAgIHNlcnZlcl9pZCA9IHNlbGYuZGF0YWJh c2VfaW5mb1sic2VydmVyX2lkIl0KKyAgICAgICAgZGJfaWQgPSBzZWxmLmRh dGFiYXNlX2luZm9bImRiX2lkIl0KKyAgICAgICAgZGJfY29uID0gZGF0YWJh c2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLCB1dGlscy5TRVJWRVJf R1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmVyX2lkLCBkYl9pZCkKKyAgICAgICAgaWYgbm90 IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKKyAgICAgICAgICAgIHJh aXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2Ug dG8gZGVsZXRlIHRoZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi IHNjaGVtYS4iKQogCi0gICAgICAgIHNjaGVtYV91dGlscy5kZWxldGVfc2No ZW1hKHNlbGYudGVzdGVyKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm IHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRo aXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgc2NoZW1hcywgZGF0YWJh c2UsIHNlcnZlcgotICAgICAgICBhbmQgdGhlICdwYXJlbnRfaWQucGtsJyBm aWxlIHdoaWNoIGlzIGNyZWF0ZWQgaW4gc2V0dXAoKSBmdW5jdGlvbi4KKyAg ICAgICAgc2NoZW1hX2lkID0gc2VsZi5zY2hlbWFfZGV0YWlsc1swXQorICAg ICAgICBzY2hlbWFfbmFtZSA9IHNlbGYuc2NoZW1hX2RldGFpbHNbMV0KKyAg ICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlmeV9z Y2hlbWFzKHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2NoZW1hX25hbWUpCisgICAgICAgIGlmIG5vdCBzY2hlbWFf cmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxk IG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gZGVsZXRlLiIpCiAKLSAgICAgICAg OnJldHVybjogTm9uZQotICAgICAgICAiIiIKKyAgICAgICAgcmVzcG9uc2Ug PSBzZWxmLnRlc3Rlci5kZWxldGUoc2VsZi51cmwgKyBzdHIodXRpbHMuU0VS VkVSX0dST1VQKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArICcvJyArIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGRiX2lkKSArICcv JyArIHN0cihzY2hlbWFfaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDAp CiAKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGVsZXRlX2RhdGFiYXNlKGNs cy50ZXN0ZXIpCi0gICAgICAgIHNlcnZlcl91dGlscy5kZWxldGVfc2VydmVy KGNscy50ZXN0ZXIpCi0gICAgICAgIHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRf ZmlsZSgpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgIGRlZiB0 ZWFyRG93bihzZWxmKToKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGVzdHMvdGVzdF9zY2hlbWFfZ2V0LnB5IGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGVzdHMvdGVzdF9zY2hlbWFfZ2V0LnB5CmluZGV4IGM3MDQ4 MmIuLjY2OGUwMjUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rlc3Rz L3Rlc3Rfc2NoZW1hX2dldC5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90ZXN0 cy90ZXN0X3NjaGVtYV9nZXQucHkKQEAgLTYsNzcgKzYsNDUgQEAKICMgVGhp cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCiBmcm9tIHJl Z3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcmVn cmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAogZnJvbSBwZ2FkbWlu LnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSBw Z2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGlt cG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1w b3J0IHV0aWxzIGFzIFwKICAgICBkYXRhYmFzZV91dGlscwotZnJvbSAuIGlt cG9ydCB1dGlscyBhcyBzY2hlbWFfdXRpbHMKIAogCiBjbGFzcyBTY2hlbWFH ZXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgIiIiIFRoaXMg Y2xhc3Mgd2lsbCBhZGQgbmV3IHNjaGVtYSB1bmRlciBkYXRhYmFzZSBub2Rl LiAiIiIKLQogICAgIHNjZW5hcmlvcyA9IFsKICAgICAgICAgIyBGZXRjaGlu ZyBkZWZhdWx0IFVSTCBmb3IgZXh0ZW5zaW9uIG5vZGUuCiAgICAgICAgICgn Q2hlY2sgU2NoZW1hIE5vZGUgVVJMJywgZGljdCh1cmw9Jy9icm93c2VyL3Nj aGVtYS9vYmovJykpCiAgICAgXQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAg ZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRo aXMgZnVuY3Rpb24gcGVyZm9ybSB0aGUgdGhyZWUgdGFza3MKLSAgICAgICAg IDEuIEFkZCB0aGUgdGVzdCBzZXJ2ZXIKLSAgICAgICAgIDIuIENvbm5lY3Qg dG8gc2VydmVyCi0gICAgICAgICAzLiBBZGQgdGhlIGRhdGFiYXNlcwotCi0g ICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAg IyBGaXJzdGx5LCBhZGQgdGhlIHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRp bHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICAjIENvbm5lY3Qg dG8gc2VydmVyCi0gICAgICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25z ZSwgY2xzLnNlcnZlcl9ncm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCi0gICAg ICAgICAgICBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3Rl cikKLSAgICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25z ZSkgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2Vy dmVyKHMpIGNvbm5lY3RlZCB0byBhZGQgdGhlIGRhdGFiYXNlISEhIikKLSAg ICAgICAgIyBBZGQgZGF0YWJhc2UKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMu YWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9y ZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNscy5zZXJ2ZXJfaWRzKQotICAgICAgICAjIEFkZCBzY2hlbWFzCi0gICAg ICAgIHNjaGVtYV91dGlscy5hZGRfc2NoZW1hcyhjbHMudGVzdGVyKQotCiAg ICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIiBUaGlzIGZ1bmN0 aW9uIHdpbGwgZGVsZXRlIHNjaGVtYSB1bmRlciBkYXRhYmFzZSBub2RlLiAi IiIKLQotICAgICAgICBhbGxfaWQgPSB1dGlscy5nZXRfaWRzKCkKLSAgICAg ICAgc2VydmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KLSAgICAgICAgZGJfaWRz X2RpY3QgPSBhbGxfaWRbImRpZCJdWzBdCi0gICAgICAgIHNjaGVtYV9pZHNf ZGljdCA9IGFsbF9pZFsic2NpZCJdWzBdCi0KLSAgICAgICAgZm9yIHNlcnZl cl9pZCBpbiBzZXJ2ZXJfaWRzOgotICAgICAgICAgICAgZGJfaWQgPSBkYl9p ZHNfZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgICAgIGRiX2NvbiA9 IGRhdGFiYXNlX3V0aWxzLnZlcmlmeV9kYXRhYmFzZShzZWxmLnRlc3RlciwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lk LCBkYl9pZCkKLSAgICAgICAgICAgIGlmIGRiX2NvblsnZGF0YSddWyJjb25u ZWN0ZWQiXToKLSAgICAgICAgICAgICAgICBzY2hlbWFfaWQgPSBzY2hlbWFf aWRzX2RpY3RbaW50KHNlcnZlcl9pZCldWzBdCi0gICAgICAgICAgICAgICAg c2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFz KHNlbGYudGVzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRi X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWFfaWQpCi0gICAgICAgICAg ICAgICAgc2VsZi5hc3NlcnRUcnVlKHNjaGVtYV9yZXNwb25zZS5zdGF0dXNf Y29kZSwgMjAwKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJE b3duQ2xhc3MoY2xzKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVu Y3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgc2NoZW1hcywgZGF0YWJhc2UsIHNl cnZlcgotICAgICAgICBhbmQgdGhlICdwYXJlbnRfaWQucGtsJyBmaWxlIHdo aWNoIGlzIGNyZWF0ZWQgaW4gc2V0dXAoKSBmdW5jdGlvbi4KLQotICAgICAg ICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgIHNjaGVt YV91dGlscy5kZWxldGVfc2NoZW1hKGNscy50ZXN0ZXIpCi0gICAgICAgIGRh dGFiYXNlX3V0aWxzLmRlbGV0ZV9kYXRhYmFzZShjbHMudGVzdGVyKQotICAg ICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihjbHMudGVzdGVyKQot ICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQorICAgICAg ICBzY2hlbWEgPSBwYXJlbnRfbm9kZV9kaWN0WyJzY2hlbWEiXVstMV0KKyAg ICAgICAgZGJfaWQgPSBzY2hlbWFbImRiX2lkIl0KKyAgICAgICAgc2VydmVy X2lkID0gc2NoZW1hWyJzZXJ2ZXJfaWQiXQorCisgICAgICAgIHNlcnZlcl9y ZXNwb25zZSA9IHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBz ZXJ2ZXJfaWQpCisgICAgICAgIGlmIG5vdCBzZXJ2ZXJfcmVzcG9uc2VbImRh dGEiXVsiY29ubmVjdGVkIl06CisgICAgICAgICAgICByYWlzZSBFeGNlcHRp b24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIHNlcnZlciB0byBjb25uZWN0IHRo ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGRhdGFiYXNlLiIp CisKKyAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9k YXRhYmFzZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGJfaWQpCisgICAgICAgIGlmIG5vdCBkYl9jb25b ImluZm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6CisgICAgICAgICAg ICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFi YXNlIHRvIGdldCB0aGUgc2NoZW1hLiIpCisKKyAgICAgICAgc2NoZW1hX2lk ID0gc2NoZW1hWyJzY2hlbWFfaWQiXQorICAgICAgICBzY2hlbWFfcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5nZXQoCisgICAgICAgICAgICBzZWxmLnVybCAr IHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAgICAgICAgICAg IHN0cihzZXJ2ZXJfaWQpICsgJy8nICsgc3RyKGRiX2lkKSArCisgICAgICAg ICAgICAnLycgKyBzdHIoc2NoZW1hX2lkKSwKKyAgICAgICAgICAgIGNvbnRl bnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh bHMoc2NoZW1hX3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAg ICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKKyAgICAgICAgZGF0YWJhc2Vf dXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZXJ2ZXJfaWQsIGRi X2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGVzdHMvdGVzdF9z Y2hlbWFfcHV0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGVzdHMvdGVzdF9zY2hl bWFfcHV0LnB5CmluZGV4IGQzZDRiZmQuLjRiY2Q4ZWEgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3Rlc3RzL3Rlc3Rfc2NoZW1hX3B1dC5weQorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90ZXN0cy90ZXN0X3NjaGVtYV9wdXQucHkKQEAg LTYsMTA3ICs2LDEzMyBAQAogIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk IHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKICMKICMgIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCi0KIGltcG9ydCBqc29uCitpbXBvcnQgdXVpZAogCiBm cm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zy b20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAogZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgot ZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRl c3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKIGZyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVz dHMgaW1wb3J0IHV0aWxzIGFzIFwKICAgICBkYXRhYmFzZV91dGlscwotZnJv bSByZWdyZXNzaW9uLnRlc3Rfc2V0dXAgaW1wb3J0IGFkdmFuY2VkX2NvbmZp Z19kYXRhCiBmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIHNjaGVtYV91dGlscwog CiAKIGNsYXNzIFNjaGVtYVB1dFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9y KToKICAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIHVwZGF0ZSB0aGUgc2NoZW1h IHVuZGVyIGRhdGFiYXNlIG5vZGUuICIiIgotCiAgICAgc2NlbmFyaW9zID0g WwogICAgICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciBleHRlbnNp b24gbm9kZS4KICAgICAgICAgKCdDaGVjayBTY2hlbWEgTm9kZSBVUkwnLCBk aWN0KHVybD0nL2Jyb3dzZXIvc2NoZW1hL29iai8nKSkKICAgICBdCiAKLSAg ICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAg ICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0 aHJlZSB0YXNrcwotICAgICAgICAgMS4gQWRkIHRoZSB0ZXN0IHNlcnZlcgot ICAgICAgICAgMi4gQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgIDMuIEFk ZCB0aGUgZGF0YWJhc2VzCi0KLSAgICAgICAgOnJldHVybjogTm9uZQotICAg ICAgICAiIiIKLQotICAgICAgICAjIEZpcnN0bHksIGFkZCB0aGUgc2VydmVy Ci0gICAgICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKGNscy50ZXN0ZXIp Ci0gICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgY2xzLnNl cnZlcl9jb25uZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3VwLCBjbHMu c2VydmVyX2lkcyA9IFwKLSAgICAgICAgICAgIHNlcnZlcl91dGlscy5jb25u ZWN0X3NlcnZlcihjbHMudGVzdGVyKQotICAgICAgICBpZiBsZW4oY2xzLnNl cnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgotICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29ubmVjdGVkIHRvIGFkZCB0 aGUgZGF0YWJhc2UhISEiKQotICAgICAgICAjIEFkZCBkYXRhYmFzZQotICAg ICAgICBkYXRhYmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRlc3Rlciwg Y2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCi0gICAgICAg ICMgQWRkIHNjaGVtYXMKLSAgICAgICAgc2NoZW1hX3V0aWxzLmFkZF9zY2hl bWFzKGNscy50ZXN0ZXIpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg ICBzZWxmLmRhdGFiYXNlX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRh YmFzZSJdWy0xXQorICAgICAgICBzZWxmLmRiX25hbWUgPSBzZWxmLmRhdGFi YXNlX2luZm9bImRiX25hbWUiXQorICAgICAgICAjIENoYW5nZSB0aGUgZGIg bmFtZSwgc28gdGhhdCBzY2hlbWEgd2lsbCBjcmVhdGUgaW4gbmV3bHkgY3Jl YXRlZCBkYgorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gInNjaGVtYV9n ZXRfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo2XQorICAgICAgICBjb25u ZWN0aW9uID0gdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24oc2VsZi5kYl9uYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGJf cGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZl clsncG9ydCddKQorICAgICAgICBzZWxmLnNjaGVtYV9kZXRhaWxzID0gc2No ZW1hX3V0aWxzLmNyZWF0ZV9zY2hlbWEoY29ubmVjdGlvbiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuc2NoZW1hX25hbWUpCiAKICAgICBkZWYgcnVuVGVzdChzZWxm KToKICAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBkZWxldGUgc2No ZW1hIHVuZGVyIGRhdGFiYXNlIG5vZGUuICIiIgogCi0gICAgICAgIGFsbF9p ZCA9IHV0aWxzLmdldF9pZHMoKQotICAgICAgICBkYl9pZHNfZGljdCA9IGFs bF9pZFsiZGlkIl1bMF0KLSAgICAgICAgc2NoZW1hX2lkc19kaWN0ID0gYWxs X2lkWyJzY2lkIl1bMF0KLQotICAgICAgICBmb3Igc2VydmVyX2Nvbm5lY3Rf ZGF0YSwgc2VydmVyX2lkIGluIHppcChzZWxmLnNlcnZlcl9jb25uZWN0X3Jl c3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zZXJ2ZXJfaWRzKToKLSAgICAgICAgICAgIGRiX2lk ID0gZGJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAgICAgICBk Yl9jb24gPSBkYXRhYmFzZV91dGlscy52ZXJpZnlfZGF0YWJhc2Uoc2VsZi50 ZXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdXRpbHMuU0VSVkVSX0dST1VQLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl cnZlcl9pZCwgZGJfaWQpCi0gICAgICAgICAgICBpZiBkYl9jb25bJ2RhdGEn XVsiY29ubmVjdGVkIl06Ci0gICAgICAgICAgICAgICAgc2NoZW1hX2lkID0g c2NoZW1hX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXVswXQotICAgICAgICAg ICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlf c2NoZW1hcyhzZWxmLnRlc3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy X2lkLCBkYl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hX2lkKQotICAg ICAgICAgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IGpzb24ubG9hZHMoCi0g ICAgICAgICAgICAgICAgICAgIHNjaGVtYV9yZXNwb25zZS5kYXRhLmRlY29k ZSgndXRmLTgnKSkKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2NoZW1hX3Jl c3BvbnNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o Ik5vIHNjaGVtYShzKSB0byB1cGRhdGUuIikKLQotICAgICAgICAgICAgICAg IGFkdl9jb25maWdfZGF0YSA9IE5vbmUKLSAgICAgICAgICAgICAgICBkYXRh ID0gTm9uZQotICAgICAgICAgICAgICAgIGRiX3VzZXIgPSBzZXJ2ZXJfY29u bmVjdF9kYXRhWydkYXRhJ11bJ3VzZXInXVsnbmFtZSddCi0gICAgICAgICAg ICAgICAgIyBHZXQgdGhlIGNvbmZpZyBkYXRhIG9mIGFwcHJvcHJpYXRlIGRi IHVzZXIKLSAgICAgICAgICAgICAgICBmb3IgY29uZmlnX3Rlc3RfZGF0YSBp biBhZHZhbmNlZF9jb25maWdfZGF0YVsnc2NoZW1hX3VwZGF0ZV9kYXRhJ106 Ci0gICAgICAgICAgICAgICAgICAgIGlmIGRiX3VzZXIgPT0gY29uZmlnX3Rl c3RfZGF0YVsnb3duZXInXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGFk dl9jb25maWdfZGF0YSA9IGNvbmZpZ190ZXN0X2RhdGEKLQotICAgICAgICAg ICAgICAgIGlmIGFkdl9jb25maWdfZGF0YSBpcyBub3QgTm9uZToKLSAgICAg ICAgICAgICAgICAgICAgZGF0YSA9IHsKLSAgICAgICAgICAgICAgICAgICAg ICAgICJkZWZmdW5jYWNsIjogYWR2X2NvbmZpZ19kYXRhWyJmdW5jX2FjbCJd LAotICAgICAgICAgICAgICAgICAgICAgICAgImRlZnNlcWFjbCI6IGFkdl9j b25maWdfZGF0YVsic2VxX2FjbCJdLAotICAgICAgICAgICAgICAgICAgICAg ICAgImRlZnRibGFjbCI6IGFkdl9jb25maWdfZGF0YVsidGJsX2FjbCJdLAot ICAgICAgICAgICAgICAgICAgICAgICAgImlkIjogc2NoZW1hX2lkCi0gICAg ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXRfcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5wdXQoCi0gICAgICAgICAgICAgICAgICAgIHNl bGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKyBzdHIo c2VydmVyX2lkKSArCi0gICAgICAgICAgICAgICAgICAgICcvJyArIHN0cihk Yl9pZCkgKyAnLycgKyBzdHIoc2NoZW1hX2lkKSwKLSAgICAgICAgICAgICAg ICAgICAgZGF0YT1qc29uLmR1bXBzKGRhdGEpLCBmb2xsb3dfcmVkaXJlY3Rz PVRydWUpCi0KLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhw dXRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgICAgICAg ICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhwdXRfcmVzcG9uc2UuZGF0 YS5kZWNvZGUoJ3V0Zi04JykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3Nl cnRUcnVlKHJlc3BvbnNlX2RhdGFbJ3N1Y2Nlc3MnXSwgMSkKLQotICAgIEBj bGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAg ICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFk ZGVkIHNjaGVtYXMsIGRhdGFiYXNlLCBzZXJ2ZXIKLSAgICAgICAgYW5kIHRo ZSAncGFyZW50X2lkLnBrbCcgZmlsZSB3aGljaCBpcyBjcmVhdGVkIGluIHNl dHVwKCkgZnVuY3Rpb24uCi0KLSAgICAgICAgOnJldHVybjogTm9uZQotICAg ICAgICAiIiIKLQotICAgICAgICBzY2hlbWFfdXRpbHMuZGVsZXRlX3NjaGVt YShjbHMudGVzdGVyKQotICAgICAgICBkYXRhYmFzZV91dGlscy5kZWxldGVf ZGF0YWJhc2UoY2xzLnRlc3RlcikKLSAgICAgICAgc2VydmVyX3V0aWxzLmRl bGV0ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgdXRpbHMuZGVsZXRl X3BhcmVudF9pZF9maWxlKCkKKyAgICAgICAgc2VydmVyX2lkID0gc2VsZi5k YXRhYmFzZV9pbmZvWyJzZXJ2ZXJfaWQiXQorICAgICAgICBkYl9pZCA9IHNl bGYuZGF0YWJhc2VfaW5mb1siZGJfaWQiXQorICAgICAgICBkYl9jb24gPSBk YXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYsIHV0aWxzLlNF UlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQsIGRiX2lkKQorICAgICAgICBp ZiBub3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgorICAgICAgICAg ICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRh YmFzZSB0byBkZWxldGUgdGhlIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIgc2NoZW1hLiIpCisgICAgICAgIHNjaGVtYV9pZCA9IHNlbGYuc2No ZW1hX2RldGFpbHNbMF0KKyAgICAgICAgc2NoZW1hX25hbWUgPSBzZWxmLnNj aGVtYV9kZXRhaWxzWzFdCisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNj aGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYV9uYW1lKQorICAg ICAgICBpZiBub3Qgc2NoZW1hX3Jlc3BvbnNlOgorICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCB0aGUgc2NoZW1hIHRvIHVw ZGF0ZS4iKQorCisgICAgICAgIGRiX3VzZXIgPSBzZWxmLnNlcnZlclsidXNl cm5hbWUiXQorICAgICAgICBkYXRhID0geworICAgICAgICAgICAgImRlZmZ1 bmNhY2wiOiB7CisgICAgICAgICAgICAgICAgImFkZGVkIjoKKyAgICAgICAg ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJncmFudGVlIjogZGJfdXNlciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JhbnRvciI6IGRiX3Vz ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaXZpbGVnZXMi OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaXZpbGVnZV90eXBlIjog IlgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJwcml2aWxlZ2UiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJ3aXRoX2dyYW50IjogVHJ1ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAg ICAgICAgICAiZGVmc2VxYWNsIjogeworICAgICAgICAgICAgICAgICJhZGRl ZCI6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JhbnRl ZSI6IGRiX3VzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdy YW50b3IiOiBkYl91c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJwcml2aWxlZ2VzIjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2 aWxlZ2VfdHlwZSI6ICJyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAicHJpdmlsZWdlIjogVHJ1ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aF9ncmFudCI6IEZh bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2aWxlZ2Vf dHlwZSI6ICJ3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAicHJpdmlsZWdlIjogVHJ1ZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAid2l0aF9ncmFudCI6IEZhbHNlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2aWxlZ2VfdHlwZSI6 ICJVIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAicHJpdmlsZWdlIjogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAid2l0aF9ncmFudCI6IEZhbHNlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgICJkZWZ0YmxhY2wiOiB7CisgICAgICAgICAgICAgICAgImFk ZGVkIjoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJncmFu dGVlIjogInB1YmxpYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ImdyYW50b3IiOiBkYl91c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJwcml2aWxlZ2VzIjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJw cml2aWxlZ2VfdHlwZSI6ICJEIiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAicHJpdmlsZWdlIjogVHJ1ZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aF9ncmFudCI6 IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2aWxl Z2VfdHlwZSI6ICJ4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAicHJpdmlsZWdlIjogVHJ1ZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aF9ncmFudCI6IEZhbHNl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgICJpZCI6IHNjaGVtYV9pZAorICAgICAgICB9 CisgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dCgKKyAg ICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkg KyAnLycgKyBzdHIoc2VydmVyX2lkKSArCisgICAgICAgICAgICAnLycgKyBz dHIoZGJfaWQpICsgJy8nICsgc3RyKHNjaGVtYV9pZCksCisgICAgICAgICAg ICBkYXRhPWpzb24uZHVtcHMoZGF0YSksIGZvbGxvd19yZWRpcmVjdHM9VHJ1 ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwdXRfcmVzcG9uc2Uu c3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBk YXRhYmFzZQorICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2Rh dGFiYXNlKHNlbGYsIHNlcnZlcl9pZCwgZGJfaWQpCisKKyAgICBkZWYgdGVh ckRvd24oc2VsZik6CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3Rlc3RzL3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGVz dHMvdXRpbHMucHkKaW5kZXggNGY5MTQ4NC4uMDE1NTIwZSAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGVzdHMvdXRpbHMucHkKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGVzdHMvdXRpbHMucHkKQEAgLTYsMTQ0ICs2LDc5IEBACiAj IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQogIwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotaW1w b3J0IGpzb24KLWltcG9ydCBvcwotaW1wb3J0IHBpY2tsZQorZnJvbSBfX2Z1 dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgoraW1wb3J0IHN5cwogaW1w b3J0IHV1aWQKK2ltcG9ydCB0cmFjZWJhY2sKIAotZnJvbSByZWdyZXNzaW9u LnRlc3Rfc2V0dXAgaW1wb3J0IHBpY2tsZV9wYXRoLCBhZHZhbmNlZF9jb25m aWdfZGF0YQotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKLWZy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKLSAgICBkYXRhYmFzZV91 dGlscwogZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0 aWxzCiAKLVNDSEVNQV9VUkwgPSAnL2Jyb3dzZXIvc2NoZW1hL29iai8nCi1T Q0hFTUFfREVMRVRFX1VSTCA9ICcvYnJvd3Nlci9zY2hlbWEvZGVsZXRlLycK LQogCi1kZWYgZ2V0X3NjaGVtYV9jb25maWdfZGF0YShzZXJ2ZXJfY29ubmVj dF9yZXNwb25zZSk6CitkZWYgZ2V0X3NjaGVtYV9jb25maWdfZGF0YShkYl91 c2VyKToKICAgICAiIiJUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IGFk dmFuY2UgY29uZmlnIHRlc3QgZGF0YSBmb3Igc2NoZW1hIiIiCi0KLSAgICBh ZHZfY29uZmlnX2RhdGEgPSBOb25lCi0gICAgZGF0YSA9IE5vbmUKLSAgICBk Yl91c2VyID0gc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2VbJ2RhdGEnXVsndXNl ciddWyduYW1lJ10KLQotICAgICMgR2V0IHRoZSBjb25maWcgZGF0YSBvZiBh cHByb3ByaWF0ZSBkYiB1c2VyCi0gICAgZm9yIGNvbmZpZ190ZXN0X2RhdGEg aW4gYWR2YW5jZWRfY29uZmlnX2RhdGFbJ3NjaGVtYV9jcmVkZW50aWFscydd OgotICAgICAgICBpZiBkYl91c2VyID09IGNvbmZpZ190ZXN0X2RhdGFbJ293 bmVyJ106Ci0gICAgICAgICAgICBhZHZfY29uZmlnX2RhdGEgPSBjb25maWdf dGVzdF9kYXRhCi0KLSAgICBpZiBhZHZfY29uZmlnX2RhdGEgaXMgbm90IE5v bmU6Ci0gICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAiZGVmZnVuY2Fj bCI6IGFkdl9jb25maWdfZGF0YVsnZnVuY19hY2wnXSwKLSAgICAgICAgICAg ICJkZWZzZXFhY2wiOiBhZHZfY29uZmlnX2RhdGFbJ3NlcV9hY2wnXSwKLSAg ICAgICAgICAgICJkZWZ0YmxhY2wiOiBhZHZfY29uZmlnX2RhdGFbJ3RibF9h Y2wnXSwKLSAgICAgICAgICAgICJkZWZ0eXBlYWNsIjogYWR2X2NvbmZpZ19k YXRhWyd0eXBlX2FjbCddLAotICAgICAgICAgICAgIm5hbWUiOiAic2NoZW1h X3swfSIuZm9ybWF0KHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0pLAotICAgICAg ICAgICAgIm5hbWVzcGFjZW93bmVyIjogYWR2X2NvbmZpZ19kYXRhWydvd25l ciddLAotICAgICAgICAgICAgIm5zcGFjbCI6IGFkdl9jb25maWdfZGF0YVsn cHJpdmlsZWdlJ10sCi0gICAgICAgICAgICAic2VjbGFiZWxzIjogYWR2X2Nv bmZpZ19kYXRhWydzZWNfbGFiZWwnXQotICAgICAgICB9CisgICAgZGF0YSA9 IHsKKyAgICAgICAgImRlZmZ1bmNhY2wiOiBbXSwKKyAgICAgICAgImRlZnNl cWFjbCI6IFtdLAorICAgICAgICAiZGVmdGJsYWNsIjogW10sCisgICAgICAg ICJkZWZ0eXBlYWNsIjogW10sCisgICAgICAgICJuYW1lIjogInRlc3Rfc2No ZW1hX3swfSIuZm9ybWF0KHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0pLAorICAg ICAgICAibmFtZXNwYWNlb3duZXIiOiBkYl91c2VyLAorICAgICAgICAibnNw YWNsIjogWworICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICJncmFudGVlIjogZGJfdXNlciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICJncmFudG9yIjogZGJfdXNlciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICJwcml2aWxlZ2VzIjoKKyAgICAgICAgICAgICAgICAg ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJwcml2aWxlZ2VfdHlwZSI6ICJDIiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpdmlsZWdlIjogVHJ1 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aF9ncmFudCI6 IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAicHJpdmlsZWdlX3R5cGUiOiAiVSIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInByaXZpbGVnZSI6IFRydWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIndpdGhfZ3JhbnQiOiBGYWxzZQorICAgICAgICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBd CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICBdLAorICAgICAgICAic2VjbGFiZWxzIjogW10KKyAgICB9CiAgICAgcmV0 dXJuIGRhdGEKIAogCi1kZWYgd3JpdGVfc2NoZW1hX2lkKHJlc3BvbnNlX2Rh dGEsIHNlcnZlcl9pZCk6Ci0gICAgIiIiCi0gICAgVGhpcyBmdW5jdGlvbiB3 cml0ZXMgdGhlIHNjaGVtYSBpZCBpbnRvIHBhcmVudF9pZC5wa2wKLQotICAg IDpwYXJhbSByZXNwb25zZV9kYXRhOiBzY2hlbWEgYWRkIHJlc3BvbnNlIGRh dGEKLSAgICA6dHlwZSByZXNwb25zZV9kYXRhOiBkaWN0Ci0gICAgOnBhcmFt IHNlcnZlcl9pZDogc2VydmVyIGlkCi0gICAgOnR5cGUgc2VydmVyX2lkOiBz dHIKLSAgICA6cmV0dXJuOiBOb25lCi0gICAgIiIiCi0KLSAgICBzY2hlbWFf aWQgPSByZXNwb25zZV9kYXRhWydub2RlJ11bJ19pZCddCi0gICAgc2NoZW1h X25hbWUgPSBzdHIocmVzcG9uc2VfZGF0YVsnbm9kZSddWydsYWJlbCddKQot ICAgIHBpY2tsZV9pZF9kaWN0ID0gdXRpbHMuZ2V0X3BpY2tsZV9pZF9kaWN0 KCkKLSAgICBpZiBvcy5wYXRoLmlzZmlsZShwaWNrbGVfcGF0aCk6Ci0gICAg ICAgIGV4aXN0aW5nX3NlcnZlcl9pZCA9IG9wZW4ocGlja2xlX3BhdGgsICdy YicpCi0gICAgICAgIHRvbF9zZXJ2ZXJfaWQgPSBwaWNrbGUubG9hZChleGlz dGluZ19zZXJ2ZXJfaWQpCi0gICAgICAgIHBpY2tsZV9pZF9kaWN0ID0gdG9s X3NlcnZlcl9pZAotICAgIGlmICdzY2lkJyBpbiBwaWNrbGVfaWRfZGljdDoK LSAgICAgICAgaWYgcGlja2xlX2lkX2RpY3RbJ3NjaWQnXToKLSAgICAgICAg ICAgICMgQWRkIHRoZSBzY2hlbWFfaWQgYXMgdmFsdWUgaW4gZGljdAotICAg ICAgICAgICAgcGlja2xlX2lkX2RpY3RbInNjaWQiXVswXS51cGRhdGUoCi0g ICAgICAgICAgICAgICAge2ludChzZXJ2ZXJfaWQpOiBbc2NoZW1hX2lkLCBz Y2hlbWFfbmFtZV19KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBD cmVhdGUgbmV3IGRpY3Qgd2l0aCBzZXJ2ZXJfaWQgYW5kIHNjaGVtYV9pZAot ICAgICAgICAgICAgcGlja2xlX2lkX2RpY3RbInNjaWQiXS5hcHBlbmQoCi0g ICAgICAgICAgICAgICAge2ludChzZXJ2ZXJfaWQpOiBbc2NoZW1hX2lkLCBz Y2hlbWFfbmFtZV19KQotICAgIHNjaGVtYV9vdXRwdXQgPSBvcGVuKHBpY2ts ZV9wYXRoLCAnd2InKQotICAgIHBpY2tsZS5kdW1wKHBpY2tsZV9pZF9kaWN0 LCBzY2hlbWFfb3V0cHV0KQotICAgIHNjaGVtYV9vdXRwdXQuY2xvc2UoKQot Ci0KLWRlZiBhZGRfc2NoZW1hcyh0ZXN0ZXIpOgorZGVmIGNyZWF0ZV9zY2hl bWEoY29ubmVjdGlvbiwgc2NoZW1hX25hbWUpOgogICAgICIiIlRoaXMgZnVu Y3Rpb24gYWRkIHRoZSBzY2hlbWFzIGludG8gZGF0YWJhc2VzIiIiCi0KLSAg ICBhbGxfaWQgPSB1dGlscy5nZXRfaWRzKCkKLQotICAgIHNlcnZlcl9pZHMg PSBhbGxfaWRbInNpZCJdCi0gICAgZGJfaWRzX2RpY3QgPSBhbGxfaWRbImRp ZCJdWzBdCi0KLSAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0g ICAgICAgIHNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlID0gc2VydmVyX3V0aWxz LnZlcmlmeV9zZXJ2ZXIoCi0gICAgICAgICAgICB0ZXN0ZXIsIHN0cih1dGls cy5TRVJWRVJfR1JPVVApLCBzZXJ2ZXJfaWQpCi0gICAgICAgIGRiX2lkID0g ZGJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAgIGRiX2NvbiA9 IGRhdGFiYXNlX3V0aWxzLnZlcmlmeV9kYXRhYmFzZSh0ZXN0ZXIsIHV0aWxz LlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZCwgZGJfaWQpCi0gICAgICAg IGlmIGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKLSAgICAgICAgICAg IGRhdGEgPSBnZXRfc2NoZW1hX2NvbmZpZ19kYXRhKAotICAgICAgICAgICAg ICAgIHNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKQotICAgICAgICAgICAgcmVz cG9uc2UgPSB0ZXN0ZXIucG9zdCgKLSAgICAgICAgICAgICAgICBTQ0hFTUFf VVJMICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKwotICAgICAg ICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsgc3RyKGRiX2lkKSAr Ci0gICAgICAgICAgICAgICAgJy8nLCBkYXRhPWpzb24uZHVtcHMoZGF0YSks Ci0gICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQot Ci0gICAgICAgICAgICBhc3NlcnQgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0g MjAwCi0gICAgICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2Fkcyhy ZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKLSAgICAgICAgICAgIHdy aXRlX3NjaGVtYV9pZChyZXNwb25zZV9kYXRhLCBzZXJ2ZXJfaWQpCi0KLQot ZGVmIHZlcmlmeV9zY2hlbWFzKHRlc3Rlciwgc2VydmVyX2lkLCBkYl9pZCwg c2NoZW1hX2lkKToKKyAgICB0cnk6CisgICAgICAgIG9sZF9pc29sYXRpb25f bGV2ZWwgPSBjb25uZWN0aW9uLmlzb2xhdGlvbl9sZXZlbAorICAgICAgICBj b25uZWN0aW9uLnNldF9pc29sYXRpb25fbGV2ZWwoMCkKKyAgICAgICAgcGdf Y3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQorICAgICAgICBwZ19jdXJz b3IuZXhlY3V0ZSgiQ1JFQVRFIFNDSEVNQSAlcyIgJSBzY2hlbWFfbmFtZSkK KyAgICAgICAgY29ubmVjdGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKG9sZF9p c29sYXRpb25fbGV2ZWwpCisgICAgICAgIGNvbm5lY3Rpb24uY29tbWl0KCkK KyAgICAgICAgIyBHZXQgc2NoZW1hIGRldGFpbHMgb2YgbmV3bHkgY3JlYXRl ZCBzY2hlbWEKKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoIlNFTEVDVCBz Y2gub2lkLCBzY2gubnNwbmFtZSBGUk9NIHBnX25hbWVzcGFjZSBzY2giCisg ICAgICAgICAgICAgICAgICAgICAgICAgICIgV0hFUkUgc2NoLm5zcG5hbWU9 JyVzJyIgJSBzY2hlbWFfbmFtZSkKKyAgICAgICAgc2NoZW1hID0gcGdfY3Vy c29yLmZldGNob25lKCkKKyAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpCisg ICAgICAgIHJldHVybiBzY2hlbWEKKyAgICBleGNlcHQgRXhjZXB0aW9uOgor ICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikK KworCitkZWYgdmVyaWZ5X3NjaGVtYXMoc2VydmVyLCBkYl9uYW1lLCBzY2hl bWFfbmFtZSk6CiAgICAgIiIiVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUg c2NoZW1hIGlzIGV4aXN0cyIiIgotCi0gICAgcmVzcG9uc2UgPSB0ZXN0ZXIu Z2V0KFNDSEVNQV9VUkwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcv JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQp ICsgJy8nICsgc3RyKGRiX2lkKSArCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICcvJyArIHN0cihzY2hlbWFfaWQpLAotICAgICAgICAgICAgICAgICAg ICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCi0gICAgcmV0dXJu IHJlc3BvbnNlCi0KLQotZGVmIGRlbGV0ZV9zY2hlbWEodGVzdGVyKToKLSAg ICAiIiJUaGlzIGZ1bmN0aW9uIGRlbGV0ZSBzY2hlbWFzIGZyb20gdGhlIGRh dGFiYXNlcyIiIgotCi0gICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lkcygpCi0g ICAgc2VydmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KLSAgICBkYl9pZHNfZGlj dCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAgICBzY2hlbWFfaWRzX2RpY3QgPSBh bGxfaWRbInNjaWQiXVswXQotCi0gICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2 ZXJfaWRzOgotICAgICAgICBkYl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2 ZXJfaWQpXQotICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy52ZXJp ZnlfZGF0YWJhc2UodGVzdGVyLCB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZXJ2ZXJfaWQsIGRiX2lkKQotICAgICAgICBpZiBkYl9jb25bJ2RhdGEnXVsi Y29ubmVjdGVkIl06Ci0gICAgICAgICAgICBzY2hlbWFfaWQgPSBzY2hlbWFf aWRzX2RpY3RbaW50KHNlcnZlcl9pZCldWzBdCi0gICAgICAgICAgICBzY2hl bWFfcmVzcG9uc2UgPSB2ZXJpZnlfc2NoZW1hcyh0ZXN0ZXIsIHNlcnZlcl9p ZCwgZGJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzY2hlbWFfaWQpCi0gICAgICAgICAgICBzY2hlbWFfcmVz cG9uc2UgPSBqc29uLmxvYWRzKHNjaGVtYV9yZXNwb25zZS5kYXRhLmRlY29k ZSgndXRmLTgnKSkKLSAgICAgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9u c2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBzY2hl bWEocykgdG8gZGVsZXRlLiIpCi0KLSAgICAgICAgICAgIGRlbF9yZXNwb25z ZSA9IHRlc3Rlci5kZWxldGUoCi0gICAgICAgICAgICAgICAgU0NIRU1BX0RF TEVURV9VUkwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCi0g ICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKwotICAgICAg ICAgICAgICAgIHN0cihkYl9pZCkgKyAnLycgKwotICAgICAgICAgICAgICAg IHN0cihzY2hlbWFfaWQpLAotICAgICAgICAgICAgICAgIGZvbGxvd19yZWRp cmVjdHM9VHJ1ZSkKLSAgICAgICAgICAgIGFzc2VydCBkZWxfcmVzcG9uc2Uu c3RhdHVzX2NvZGUgPT0gMjAwCi0gICAgICAgICAgICByZXNwb25zZV9kYXRh ID0ganNvbi5sb2FkcyhkZWxfcmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04 JykpCi0gICAgICAgICAgICBhc3NlcnQgcmVzcG9uc2VfZGF0YVsnc3VjY2Vz cyddID09IDEKKyAgICB0cnk6CisgICAgICAgIGNvbm5lY3Rpb24gPSB1dGls cy5nZXRfZGJfY29ubmVjdGlvbihkYl9uYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWyd1c2VybmFt ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydob3N0J10s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZXJ2ZXJbJ3BvcnQnXSkKKyAgICAgICAgcGdfY3Vyc29yID0gY29ubmVj dGlvbi5jdXJzb3IoKQorICAgICAgICBwZ19jdXJzb3IuZXhlY3V0ZSgiU0VM RUNUICogRlJPTSBwZ19uYW1lc3BhY2Ugc2NoIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAiIFdIRVJFIHNjaC5uc3BuYW1lPSclcyciICUgc2NoZW1h X25hbWUpCisgICAgICAgIHNjaGVtYSA9IHBnX2N1cnNvci5mZXRjaG9uZSgp CisgICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKQorICAgICAgICByZXR1cm4g c2NoZW1hCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgdHJhY2Vi YWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvdGVzdHMvdGVzdF9kYl9hZGQucHkgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVz dF9kYl9hZGQucHkKaW5kZXggMWQxM2MwMi4uYzc2NmY1ZSAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfYWRkLnB5CisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90 ZXN0cy90ZXN0X2RiX2FkZC5weQpAQCAtMTEsMTQgKzExLDEzIEBAIGltcG9y dCBqc29uCiAKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFz ZVRlc3RHZW5lcmF0b3IKIGZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91 dGlscyBhcyB1dGlscwotZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3Nl cnZlcl9kaWN0Citmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2Rl X2RpY3QKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2Vy dmVycy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0aWxzCiBmcm9t IC4gaW1wb3J0IHV0aWxzIGFzIGRhdGFiYXNlX3V0aWxzCiAKIAogY2xhc3Mg RGF0YWJhc2VBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAg IiIiVGhpcyBjbGFzcyB3aWxsIHRlc3QgdGhlIEFERCBkYXRhYmFzZSBBUEki IiIKLQogICAgIHNjZW5hcmlvcyA9IFsKICAgICAgICAgIyBGZXRjaGluZyBk ZWZhdWx0IFVSTCBmb3IgZGF0YWJhc2Ugbm9kZS4KICAgICAgICAgKCdDaGVj ayBEYXRhYmFzZXMgTm9kZSBVUkwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvZGF0 YWJhc2Uvb2JqLycpKQpAQCAtMzAsNyArMjksNyBAQCBjbGFzcyBEYXRhYmFz ZUFkZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICBkZWYgcnVu VGVzdChzZWxmKToKICAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBh ZGQgZGF0YWJhc2UgdW5kZXIgMXN0IHNlcnZlciBvZiB0cmVlIG5vZGUuICIi IgogICAgICAgICBzZWxmLmRiX25hbWUgPSAnJwotICAgICAgICBzZWxmLnNl cnZlcl9pZCA9IHRlc3Rfc2VydmVyX2RpY3RbInNlcnZlciJdWzBdWyJzZXJ2 ZXJfaWQiXQorICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2Rl X2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lkIl0KICAgICAgICAgc2Vy dmVyX3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNl bGYsIHNlbGYuc2VydmVyX2lkKQogICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9u c2VbImluZm8iXSA9PSAiU2VydmVyIGNvbm5lY3RlZC4iOgogICAgICAgICAg ICAgZGJfb3duZXIgPSBzZXJ2ZXJfcmVzcG9uc2VbJ2RhdGEnXVsndXNlcidd WyduYW1lJ10KQEAgLTQzLDggKzQyLDkgQEAgY2xhc3MgRGF0YWJhc2VBZGRU ZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICBzZWxm LmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogICAg ICAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2Uu ZGF0YS5kZWNvZGUoJ3V0Zi04JykpCiAgICAgICAgICAgICBkYl9pZCA9IHJl c3BvbnNlX2RhdGFbJ25vZGUnXVsnX2lkJ10KLSAgICAgICAgICAgIGRiX2Rp Y3QgPSB7ImRiX2lkIjogZGJfaWQsICJkYl9uYW1lIjogc2VsZi5kYl9uYW1l fQotICAgICAgICAgICAgdXRpbHMud3JpdGVfbm9kZV9pbmZvKGludChzZWxm LnNlcnZlcl9pZCksICJkaWQiLCBkYl9kaWN0KQorICAgICAgICAgICAgZGJf ZGljdCA9IHsic2VydmVyX2lkIjogc2VsZi5zZXJ2ZXJfaWQsICJkYl9pZCI6 IGRiX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAiZGJfbmFtZSI6IHNl bGYuZGJfbmFtZX0KKyAgICAgICAgICAgIHV0aWxzLndyaXRlX25vZGVfaW5m bygiZGlkIiwgZGJfZGljdCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAg IHJhaXNlIEV4Y2VwdGlvbigiRXJyb3Igd2hpbGUgY29ubmVjdGluZyBzZXJ2 ZXIgdG8gYWRkIHRoZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi IGRhdGFiYXNlLiIpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9k Yl9kZWxldGUucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9kZWxldGUucHkK aW5kZXggOThiNDEwMy4uODM4NzExZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rl c3RzL3Rlc3RfZGJfZGVsZXRlLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy90ZXN0 X2RiX2RlbGV0ZS5weQpAQCAtMTAsNyArMTAsNyBAQCBpbXBvcnQgdXVpZAog CiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2Vu ZXJhdG9yCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMg dXRpbHMKLWZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF9zZXJ2ZXJfZGlj dAorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0CiBm cm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVz dHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwogCiAKQEAgLTI0LDE2 ICsyNCwxOSBAQCBjbGFzcyBEYXRhYmFzZURlbGV0ZVRlc3RDYXNlKEJhc2VU ZXN0R2VuZXJhdG9yKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAg IHNlbGYuZGJfbmFtZSA9ICJkYl9kZWxldGVfJXMiICUgc3RyKHV1aWQudXVp ZDQoKSlbMTo0XSwKICAgICAgICAgc2VsZi5kYl9pZCA9IHV0aWxzLmNyZWF0 ZV9kYXRhYmFzZShzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lKQorICAgICAg ICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJd Wy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgZGJfZGljdCA9IHsic2VydmVy X2lkIjogc2VsZi5zZXJ2ZXJfaWQsICJkYl9pZCI6IHNlbGYuZGJfaWQsCisg ICAgICAgICAgICAgICAgICAgImRiX25hbWUiOiBzZWxmLmRiX25hbWV9Cisg ICAgICAgIHV0aWxzLndyaXRlX25vZGVfaW5mbygiZGlkIiwgZGJfZGljdCkK IAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAiIiIgVGhpcyBm dW5jdGlvbiB3aWxsIGRlbGV0ZSB0aGUgZGF0YWJhc2UuIiIiCi0gICAgICAg IHNlcnZlcl9pZCA9IHRlc3Rfc2VydmVyX2RpY3RbInNlcnZlciJdWzBdWyJz ZXJ2ZXJfaWQiXQotICAgICAgICBzZXJ2ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJf dXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwgc2VydmVyX2lkKQorICAgICAg ICBzZXJ2ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2 ZXIoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQpCiAgICAgICAgIGlmIHNlcnZlcl9y ZXNwb25zZVsiZGF0YSJdWyJjb25uZWN0ZWQiXToKICAgICAgICAgICAgIGRi X2lkID0gc2VsZi5kYl9pZAogICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxm LnRlc3Rlci5kZWxldGUoCiAgICAgICAgICAgICAgICAgc2VsZi51cmwgKyBz dHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCi0gICAgICAgICAgICAg ICAgc3RyKHNlcnZlcl9pZCkgKyAnLycgKyBzdHIoZGJfaWQpLAorICAgICAg ICAgICAgICAgIHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBzdHIoZGJf aWQpLAogICAgICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkK ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1 c19jb2RlLCAyMDApCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvdGVzdHMvdGVzdF9kYl9nZXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9k Yl9nZXQucHkKaW5kZXggOGU2MmExYy4uNDZiM2NhYiAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfZ2V0LnB5CisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0 cy90ZXN0X2RiX2dldC5weQpAQCAtOSw3ICs5LDcgQEAKIAogZnJvbSBwZ2Fk bWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJv bSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9t IHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3Rfc2VydmVyX2RpY3QKK2Zyb20gcmVn cmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAogZnJvbSAuIGltcG9y dCB1dGlscyBhcyBkYXRhYmFzZV91dGlscwogCiAKQEAgLTI0LDEwICsyNCwx MCBAQCBjbGFzcyBEYXRhYmFzZXNHZXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVy YXRvcik6CiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgIiIi IFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBhZGRlZCBkYXRhYmFzZS4gIiIi Ci0gICAgICAgIHNlcnZlcl9kYXRhID0gdGVzdF9zZXJ2ZXJfZGljdFsiZGF0 YWJhc2UiXVswXQorICAgICAgICBzZXJ2ZXJfZGF0YSA9IHBhcmVudF9ub2Rl X2RpY3RbImRhdGFiYXNlIl1bLTFdCiAgICAgICAgIHNlbGYuc2VydmVyX2lk ID0gc2VydmVyX2RhdGFbInNlcnZlcl9pZCJdCiAgICAgICAgIHNlbGYuZGJf aWQgPSBzZXJ2ZXJfZGF0YVsnZGJfaWQnXQotICAgICAgICBkYl9jb24gPSBk YXRhYmFzZV91dGlscy52ZXJpZnlfZGF0YWJhc2Uoc2VsZiwKKyAgICAgICAg ZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxm LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdXRpbHMuU0VSVkVSX0dST1VQLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rl c3RfZGJfcHV0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfcHV0LnB5Cmlu ZGV4IDgwOWMwNGEuLjBmMDkxNGIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0 cy90ZXN0X2RiX3B1dC5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9w dXQucHkKQEAgLTEyLDcgKzEyLDcgQEAgaW1wb3J0IHV1aWQKIAogZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgog ZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1m cm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3Rfc2VydmVyX2RpY3QKK2Zyb20g cmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAogZnJvbSAuIGlt cG9ydCB1dGlscyBhcyBkYXRhYmFzZV91dGlscwogCiAKQEAgLTI2LDMyICsy NiwzNiBAQCBjbGFzcyBEYXRhYmFzZXNVcGRhdGVUZXN0Q2FzZShCYXNlVGVz dEdlbmVyYXRvcik6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBz ZWxmLmRiX25hbWUgPSAidGVzdF9kYl9wdXRfJXMiICUgc3RyKHV1aWQudXVp ZDQoKSlbMTo4XSwKICAgICAgICAgc2VsZi5kYl9pZCA9IHV0aWxzLmNyZWF0 ZV9kYXRhYmFzZShzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lKQorICAgICAg ICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJd Wy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgZGJfZGljdCA9IHsic2VydmVy X2lkIjogc2VsZi5zZXJ2ZXJfaWQsICJkYl9pZCI6IHNlbGYuZGJfaWQsCisg ICAgICAgICAgICAgICAgICAgImRiX25hbWUiOiBzZWxmLmRiX25hbWV9Cisg ICAgICAgIHV0aWxzLndyaXRlX25vZGVfaW5mbygiZGlkIiwgZGJfZGljdCkK IAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAiIiIgVGhpcyBm dW5jdGlvbiB3aWxsIHVwZGF0ZSB0aGUgY29tbWVudHMgZmllbGQgb2YgZGF0 YWJhc2UuIiIiCi0gICAgICAgIHNlcnZlcl9pZCA9IHRlc3Rfc2VydmVyX2Rp Y3RbInNlcnZlciJdWzBdWyJzZXJ2ZXJfaWQiXQotICAgICAgICBkYl9pZCA9 IHNlbGYuZGJfaWQKLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMu dmVyaWZ5X2RhdGFiYXNlKHNlbGYsCisgICAgICAgIGRiX2NvbiA9IGRhdGFi YXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLlNF UlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlcnZlcl9pZCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiX2lkKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmRiX2lkKQogICAgICAgICBpZiBkYl9j b25bImluZm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6CiAgICAgICAg ICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZGF0YSA9IHsKICAgICAgICAg ICAgICAgICAgICAgImNvbW1lbnRzIjogIlRoaXMgaXMgZGIgdXBkYXRlIGNv bW1lbnQiLAotICAgICAgICAgICAgICAgICAgICAiaWQiOiBkYl9pZAorICAg ICAgICAgICAgICAgICAgICAiaWQiOiBzZWxmLmRiX2lkCiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucHV0KAogICAgICAgICAgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1 dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsgc3RyKAotICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmVyX2lkKSArICcvJyArCi0gICAgICAgICAgICAg ICAgICAgIHN0cihkYl9pZCksIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwgZm9s bG93X3JlZGlyZWN0cz1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsKKyAgICAgICAgICAgICAgICAgICAg c3RyKHNlbGYuZGJfaWQpLCBkYXRhPWpzb24uZHVtcHMoZGF0YSksCisgICAg ICAgICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKICAgICAg ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNf Y29kZSwgMjAwKQogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl eGNlcHRpb246CiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJF cnJvciB3aGlsZSB1cGRhdGluZyBkYXRhYmFzZSBkZXRhaWxzLiAlcyIgJQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24pCiAg ICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICMgRGlzY29u bmVjdCBkYXRhYmFzZSB0byBkZWxldGUgaXQKLSAgICAgICAgICAgICAgICBk YXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlcnZl cl9pZCwgZGJfaWQpCisgICAgICAgICAgICAgICAgZGF0YWJhc2VfdXRpbHMu ZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuZGJfaWQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBy YWlzZSBFeGNlcHRpb24oIkVycm9yIHdoaWxlIHVwZGF0aW5nIGRhdGFiYXNl IGRldGFpbHMuIikKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3V0aWxz LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3Rlc3RzL3V0aWxzLnB5CmluZGV4IDZiMjY4NjMuLmY1 MGJjYTAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy91dGlscy5weQorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvdGVzdHMvdXRpbHMucHkKQEAgLTYsMTUgKzYsMTIgQEAKICMg I1RoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQogIwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotCiBpbXBvcnQganNvbgogaW1wb3J0IHV1aWQKIAogZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1 dGlscyBhcyBzZXJ2ZXJfdXRpbHMKIGZyb20gcmVncmVzc2lvbiBpbXBvcnQg dGVzdF91dGlscyBhcyB1dGlscwogCi0KLURBVEFCQVNFX1VSTCA9ICcvYnJv d3Nlci9kYXRhYmFzZS9vYmovJwogREFUQUJBU0VfQ09OTkVDVF9VUkwgPSAn L2Jyb3dzZXIvZGF0YWJhc2UvY29ubmVjdC8nCiAKIApAQCAtOTMsNyArOTAs NyBAQCBkZWYgZ2V0X2RiX2RhdGEoZGJfb3duZXIpOgogICAgICAgfQogICAg IF0sCiAgICAgICAgICJlbmNvZGluZyI6ICJVVEY4IiwKLSAgICAgICAgIm5h bWUiOiAiZGJfYWRkXyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6NF0sCisg ICAgICAgICJuYW1lIjogImRiX2FkZF8lcyIgJSBzdHIodXVpZC51dWlkNCgp KVsxOjZdLAogICAgICAgICAicHJpdmlsZWdlcyI6IFtdLAogICAgICAgICAi c2VjdXJpdGllcyI6IFtdLAogICAgICAgICAidmFyaWFibGVzIjogW10KQEAg LTEwNyw3ICsxMDQsNyBAQCBkZWYgY3JlYXRlX2RhdGFiYXNlKGNvbm5lY3Rp b24sIGRiX25hbWUpOgogICAgICAgICBvbGRfaXNvbGF0aW9uX2xldmVsID0g Y29ubmVjdGlvbi5pc29sYXRpb25fbGV2ZWwKICAgICAgICAgY29ubmVjdGlv bi5zZXRfaXNvbGF0aW9uX2xldmVsKDApCiAgICAgICAgIHBnX2N1cnNvciA9 IGNvbm5lY3Rpb24uY3Vyc29yKCkKLSAgICAgICAgcGdfY3Vyc29yLmV4ZWN1 dGUoIkNSRUFURSBEQVRBQkFTRSAlcyIgJSBkYl9uYW1lKQorICAgICAgICBw Z19jdXJzb3IuZXhlY3V0ZSgnJydDUkVBVEUgREFUQUJBU0UgIiVzIicnJyAl IGRiX25hbWUpCiAgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xhdGlvbl9s ZXZlbChvbGRfaXNvbGF0aW9uX2xldmVsKQogICAgICAgICBjb25uZWN0aW9u LmNvbW1pdCgpCiAgICAgICAgIHJldHVybiBwZ19jdXJzb3IKQEAgLTExNSw3 ICsxMTIsNyBAQCBkZWYgY3JlYXRlX2RhdGFiYXNlKGNvbm5lY3Rpb24sIGRi X25hbWUpOgogICAgICAgICByYWlzZSBFeGNlcHRpb24oIkVycm9yIHdoaWxl IGNyZWF0aW5nIGRhdGFiYXNlLiAlcyIgJSBleGNlcHRpb24pCiAKIAotZGVm IHZlcmlmeV9kYXRhYmFzZShzZWxmLCBzZXJ2ZXJfZ3JvdXAsIHNlcnZlcl9p ZCwgZGJfaWQpOgorZGVmIGNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VydmVy X2dyb3VwLCBzZXJ2ZXJfaWQsIGRiX2lkKToKICAgICAiIiIKICAgICBUaGlz IGZ1bmN0aW9uIHZlcmlmaWVzIHRoYXQgZGF0YWJhc2UgaXMgZXhpc3RzIGFu ZCB3aGV0aGVyIGl0IGNvbm5lY3QKICAgICBzdWNjZXNzZnVsbHkgb3Igbm90 CkBAIC0xNTAsMzggKzE0NywzIEBAIGRlZiBkaXNjb25uZWN0X2RhdGFiYXNl KHNlbGYsIHNlcnZlcl9pZCwgZGJfaWQpOgogICAgICAgICAnYnJvd3Nlci9k YXRhYmFzZS9jb25uZWN0LycsIHV0aWxzLlNFUlZFUl9HUk9VUCwgc2VydmVy X2lkLCBkYl9pZCksCiAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkK ICAgICBzZWxmLmFzc2VydEVxdWFscyhkYl9jb24uc3RhdHVzX2NvZGUsIDIw MCkKLQotCi1kZWYgZGVsZXRlX2RhdGFiYXNlKHRlc3Rlcik6Ci0gICAgIiIi Ci0gICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGRlbGV0ZSB0aGUgYWRkZWQg ZGF0YWJhc2VzCi0KLSAgICA6cGFyYW0gdGVzdGVyOiB0ZXN0IGNsaWVudCBv YmplY3QKLSAgICA6cmV0dXJuOiBOb25lCi0gICAgIiIiCi0KLSAgICBzZXJ2 ZXJfaWRzID0gTm9uZQotICAgIGRiX2lkc19kaWN0ID0gTm9uZQotCi0gICAg YWxsX2lkID0gdXRpbHMuZ2V0X2lkcygpCi0gICAgaWYgInNpZCIgYW5kICJk aWQiIGluIGFsbF9pZC5rZXlzKCk6Ci0gICAgICAgIHNlcnZlcl9pZHMgPSBh bGxfaWRbInNpZCJdCi0gICAgICAgIGlmIGFsbF9pZFsnZGlkJ106Ci0gICAg ICAgICAgICBkYl9pZHNfZGljdCA9IGFsbF9pZFsnZGlkJ11bMF0KLSAgICBl bHNlOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oIktleXMgYXJlIG5vdCBm b3VuZCBpbiBwaWNrbGUgZGljdDoge30iLmZvcm1hdChbInNpZCIsICJkaWQi XSkpCi0KLSAgICBpZiBzZXJ2ZXJfaWRzIGFuZCBkYl9pZHNfZGljdCBpcyBu b3QgTm9uZToKLSAgICAgICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2ZXJfaWRz OgotICAgICAgICAgICAgc2VydmVyX3Jlc3BvbnNlID0gc2VydmVyX3V0aWxz LnZlcmlmeV9zZXJ2ZXIodGVzdGVyLCB1dGlscy5TRVJWRVJfR1JPVVAsIHNl cnZlcl9pZCkKLSAgICAgICAgICAgIGlmIHNlcnZlcl9yZXNwb25zZVsiZGF0 YSJdWyJjb25uZWN0ZWQiXToKLSAgICAgICAgICAgICAgICBkYl9pZCA9IGRi X2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAgICAgICAgIHJl c3BvbnNlID0gdGVzdGVyLmRlbGV0ZShEQVRBQkFTRV9VUkwgKyBzdHIodXRp bHMuU0VSVkVSX0dST1VQKSArICcvJyArCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsg c3RyKGRiX2lkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQotICAgICAgICAgICAg ICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDAKLSAgICAg ICAgICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25z ZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKLSAgICAgICAgICAgICAgICBhc3Nl cnQgcmVzcG9uc2VfZGF0YVsnc3VjY2VzcyddID09IDEKLSAgICBlbHNlOgot ICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5vIHNlcnZlcnMvZGF0YWJhc2Vz IGZvdW5kLiIpCi0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rlc3RzL3Rlc3Rfcm9sZV9h ZGQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9yb2xlcy90ZXN0cy90ZXN0X3JvbGVfYWRkLnB5CmluZGV4IDExYjlm YTcuLjZiOTJlNzcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rlc3RzL3Rlc3Rfcm9sZV9h ZGQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcm9sZXMvdGVzdHMvdGVzdF9yb2xlX2FkZC5weQpAQCAtMTAs NyArMTAsNyBAQCBpbXBvcnQganNvbgogCiBmcm9tIHBnYWRtaW4udXRpbHMu cm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCiBmcm9tIHJlZ3Jlc3Np b24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZyb20gcmVncmVzc2lv biBpbXBvcnQgdGVzdF9zZXJ2ZXJfZGljdAorZnJvbSByZWdyZXNzaW9uIGlt cG9ydCBwYXJlbnRfbm9kZV9kaWN0CiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNl cnZlcl91dGlscwogZnJvbSAuIGltcG9ydCB1dGlscyBhcyByb2xlc191dGls cwogCkBAIC0yOCw3ICsyOCw3IEBAIGNsYXNzIExvZ2luUm9sZUFkZFRlc3RD YXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKIAogICAgIGRlZiBydW5UZXN0KHNl bGYpOgogICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIHRlc3QgdGhlIGFkZCBy b2xlIHNjZW5hcmlvIiIiCi0gICAgICAgIHNlcnZlcl9pZCA9IHRlc3Rfc2Vy dmVyX2RpY3RbInNlcnZlciJdWzBdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBz ZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNl cnZlcl9pZCJdCiAgICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNlcnZlcl91 dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZXJ2ZXJfaWQpCiAgICAgICAg IGlmIG5vdCBzZXJ2ZXJfcmVzcG9uc2VbJ2RhdGEnXVsnY29ubmVjdGVkJ106 CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlNlcnZlciBub3QgZm91 bmQgdG8gYWRkIHRoZSByb2xlLiIpCkBAIC00Miw4ICs0Miw5IEBAIGNsYXNz IExvZ2luUm9sZUFkZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUs IDIwMCkKICAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVz cG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCiAgICAgICAgIHJvbGVfaWQg PSByZXNwb25zZV9kYXRhWydub2RlJ11bJ19pZCddCi0gICAgICAgIHJvbGVf ZGljdCA9IHsic2VydmVyX2lkIjogc2VydmVyX2lkLCAicm9sZV9pZCI6IHJv bGVfaWR9Ci0gICAgICAgIHV0aWxzLndyaXRlX25vZGVfaW5mbyhyb2xlX2lk LCAibHJpZCIsIHJvbGVfZGljdCkKKyAgICAgICAgcm9sZV9kaWN0ID0geyJz ZXJ2ZXJfaWQiOiBzZXJ2ZXJfaWQsICJyb2xlX2lkIjogcm9sZV9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICJyb2xlX25hbWUiOiBzZWxmLnJvbGVfbmFt ZX0KKyAgICAgICAgdXRpbHMud3JpdGVfbm9kZV9pbmZvKCJscmlkIiwgcm9s ZV9kaWN0KQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICAi IiJUaGlzIGZ1bmN0aW9uIGRlbGV0ZSB0aGUgcm9sZSBmcm9tIGFkZGVkIHNl cnZlciIiIgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVzdHMvdGVzdF9yb2xlX2RlbGV0 ZS5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3JvbGVzL3Rlc3RzL3Rlc3Rfcm9sZV9kZWxldGUucHkKaW5kZXggOWE0 OTVmZi4uNDc5NDdjOCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVzdHMvdGVzdF9yb2xl X2RlbGV0ZS5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9yb2xlcy90ZXN0cy90ZXN0X3JvbGVfZGVsZXRlLnB5 CkBAIC0xMCw3ICsxMCw3IEBAIGltcG9ydCB1dWlkCiAKIGZyb20gcGdhZG1p bi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKIGZyb20g cmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwotZnJvbSBy ZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3NlcnZlcl9kaWN0Citmcm9tIHJlZ3Jl c3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKIGZyb20gLiBpbXBvcnQg dXRpbHMgYXMgcm9sZXNfdXRpbHMKIAogCkBAIC0yNCwxMyArMjQsMTYgQEAg Y2xhc3MgTG9naW5Sb2xlRGVsZXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0 b3IpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5yb2xl X25hbWUgPSAicm9sZV9kZWxldGVfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlb MTo2XQogICAgICAgICBzZWxmLnJvbGVfaWQgPSByb2xlc191dGlscy5jcmVh dGVfcm9sZShzZWxmLnNlcnZlciwgc2VsZi5yb2xlX25hbWUpCisgICAgICAg IHNlbGYuc2VydmVyX2lkID0gcGFyZW50X25vZGVfZGljdFsic2VydmVyIl1b LTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICByb2xlX2RpY3QgPSB7InNlcnZl cl9pZCI6IHNlbGYuc2VydmVyX2lkLCAicm9sZV9pZCI6IHNlbGYucm9sZV9p ZCwKKyAgICAgICAgICAgICAgICAgICAgICJyb2xlX25hbWUiOiBzZWxmLnJv bGVfbmFtZX0KKyAgICAgICAgdXRpbHMud3JpdGVfbm9kZV9pbmZvKCJscmlk Iiwgcm9sZV9kaWN0KQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAg ICAgICIiIlRoaXMgZnVuY3Rpb24gdGVzdCB0aGUgZGVsZXRlIHJvbGUgc2Nl bmFyaW8iIiIKLSAgICAgICAgc2VydmVyX2lkID0gdGVzdF9zZXJ2ZXJfZGlj dFsic2VydmVyIl1bMF1bInNlcnZlcl9pZCJdCiAgICAgICAgIHJlc3BvbnNl ID0gc2VsZi50ZXN0ZXIuZGVsZXRlKAogICAgICAgICAgICAgc2VsZi51cmwg KyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCi0gICAgICAgICAg ICBzdHIoc2VydmVyX2lkKSArICcvJyArIHN0cihzZWxmLnJvbGVfaWQpLAor ICAgICAgICAgICAgc3RyKHNlbGYuc2VydmVyX2lkKSArICcvJyArIHN0cihz ZWxmLnJvbGVfaWQpLAogICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1U cnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0 dXNfY29kZSwgMjAwKQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZXN0cy90ZXN0X3Jv bGVfZ2V0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcm9sZXMvdGVzdHMvdGVzdF9yb2xlX2dldC5weQppbmRleCA3 MzZhZTNjLi5iNmFhZjhkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZXN0cy90ZXN0X3Jv bGVfZ2V0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rlc3RzL3Rlc3Rfcm9sZV9nZXQucHkKQEAg LTEwLDcgKzEwLDcgQEAgaW1wb3J0IHV1aWQKIAogZnJvbSBwZ2FkbWluLnV0 aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSByZWdy ZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHJlZ3Jl c3Npb24gaW1wb3J0IHRlc3Rfc2VydmVyX2RpY3QKK2Zyb20gcmVncmVzc2lv biBpbXBvcnQgcGFyZW50X25vZGVfZGljdAogZnJvbSAuIGltcG9ydCB1dGls cyBhcyByb2xlc191dGlscwogCiAKQEAgLTIyLDE1ICsyMiwxOCBAQCBjbGFz cyBMb2dpblJvbGVHZXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAg ICAgXQogCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNl cnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2Vy dmVyX2lkIl0KICAgICAgICAgc2VsZi5yb2xlX25hbWUgPSAicm9sZV9nZXRf JXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo2XQogICAgICAgICBzZWxmLnJv bGVfaWQgPSByb2xlc191dGlscy5jcmVhdGVfcm9sZShzZWxmLnNlcnZlciwg c2VsZi5yb2xlX25hbWUpCisgICAgICAgIHJvbGVfZGljdCA9IHsic2VydmVy X2lkIjogc2VsZi5zZXJ2ZXJfaWQsICJyb2xlX2lkIjogc2VsZi5yb2xlX2lk LAorICAgICAgICAgICAgICAgICAgICAgInJvbGVfbmFtZSI6IHNlbGYucm9s ZV9uYW1lfQorICAgICAgICB1dGlscy53cml0ZV9ub2RlX2luZm8oImxyaWQi LCByb2xlX2RpY3QpCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAg ICAgIiIiVGhpcyBmdW5jdGlvbiB0ZXN0IHRoZSBnZXQgcm9sZSBzY2VuYXJp byIiIgotICAgICAgICBzZXJ2ZXJfaWQgPSB0ZXN0X3NlcnZlcl9kaWN0WyJz ZXJ2ZXIiXVswXVsic2VydmVyX2lkIl0KICAgICAgICAgcmVzcG9uc2UgPSBz ZWxmLnRlc3Rlci5nZXQoCiAgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1 dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKLSAgICAgICAgICAgIHN0cihz ZXJ2ZXJfaWQpICsgJy8nICsgc3RyKHNlbGYucm9sZV9pZCksCisgICAgICAg ICAgICBzdHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsgc3RyKHNlbGYucm9s ZV9pZCksCiAgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCiAg ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2Rl LCAyMDApCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rlc3RzL3Rlc3Rfcm9sZV9wdXQu cHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9yb2xlcy90ZXN0cy90ZXN0X3JvbGVfcHV0LnB5CmluZGV4IDhiNmE2YWEu LmQ2MjA4ZjcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rlc3RzL3Rlc3Rfcm9sZV9wdXQu cHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcm9sZXMvdGVzdHMvdGVzdF9yb2xlX3B1dC5weQpAQCAtMTIsNyAr MTIsNyBAQCBpbXBvcnQgdXVpZAogCiBmcm9tIHBnYWRtaW4udXRpbHMucm91 dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCiBmcm9tIHJlZ3Jlc3Npb24g aW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZyb20gcmVncmVzc2lvbiBp bXBvcnQgdGVzdF9zZXJ2ZXJfZGljdAorZnJvbSByZWdyZXNzaW9uIGltcG9y dCBwYXJlbnRfbm9kZV9kaWN0CiBmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIHJv bGVzX3V0aWxzCiAKIApAQCAtMjQsMTIgKzI0LDE1IEBAIGNsYXNzIExvZ2lu Um9sZVB1dFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICBdCiAK ICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyX2lk ID0gcGFyZW50X25vZGVfZGljdFsic2VydmVyIl1bLTFdWyJzZXJ2ZXJfaWQi XQogICAgICAgICBzZWxmLnJvbGVfbmFtZSA9ICJyb2xlX3B1dF8lcyIgJSBz dHIodXVpZC51dWlkNCgpKVsxOjZdCiAgICAgICAgIHNlbGYucm9sZV9pZCA9 IHJvbGVzX3V0aWxzLmNyZWF0ZV9yb2xlKHNlbGYuc2VydmVyLCBzZWxmLnJv bGVfbmFtZSkKKyAgICAgICAgcm9sZV9kaWN0ID0geyJzZXJ2ZXJfaWQiOiBz ZWxmLnNlcnZlcl9pZCwgInJvbGVfaWQiOiBzZWxmLnJvbGVfaWQsCisgICAg ICAgICAgICAgICAgICAgICAicm9sZV9uYW1lIjogc2VsZi5yb2xlX25hbWV9 CisgICAgICAgIHV0aWxzLndyaXRlX25vZGVfaW5mbygibHJpZCIsIHJvbGVf ZGljdCkKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAiIiJU aGlzIGZ1bmN0aW9uIHRlc3RzIHRoZSB1cGRhdGUgcm9sZSBkYXRhIHNjZW5h cmlvIiIiCi0gICAgICAgIHNlcnZlcl9pZCA9IHRlc3Rfc2VydmVyX2RpY3Rb InNlcnZlciJdWzBdWyJzZXJ2ZXJfaWQiXQogICAgICAgICByb2xlX3Jlc3Bv bnNlID0gcm9sZXNfdXRpbHMudmVyaWZ5X3JvbGUoc2VsZi5zZXJ2ZXIsIHNl bGYucm9sZV9uYW1lKQogICAgICAgICBpZiBsZW4ocm9sZV9yZXNwb25zZSkg PT0gMDoKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gcm9sZXMo cykgdG8gdXBkYXRlISEhIikKQEAgLTM5LDcgKzQyLDcgQEAgY2xhc3MgTG9n aW5Sb2xlUHV0VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAg ICB9CiAgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dCgK ICAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9V UCkgKyAnLycgKwotICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAnLycg KyBzdHIoc2VsZi5yb2xlX2lkKSwKKyAgICAgICAgICAgIHN0cihzZWxmLnNl cnZlcl9pZCkgKyAnLycgKyBzdHIoc2VsZi5yb2xlX2lkKSwKICAgICAgICAg ICAgIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKICAgICAgICAgICAgIGZvbGxv d19yZWRpcmVjdHM9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo cHV0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90YWJs ZXNwYWNlcy90ZXN0cy90ZXN0X3Ric3BjX2FkZC5weSBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RhYmxlc3BhY2VzL3Rl c3RzL3Rlc3RfdGJzcGNfYWRkLnB5CmluZGV4IDA5ZTllMGUuLmQyMDQyMDcg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3RhYmxlc3BhY2VzL3Rlc3RzL3Rlc3RfdGJzcGNfYWRkLnB5 CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3RhYmxlc3BhY2VzL3Rlc3RzL3Rlc3RfdGJzcGNfYWRkLnB5CkBAIC03 LDE0ICs3LDExIEBACiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogZnJv bSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQg b3MKLWltcG9ydCBzeXMKIGltcG9ydCBqc29uCiAKIGZyb20gcGdhZG1pbi51 dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKIGZyb20gcmVn cmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwotZnJvbSByZWdy ZXNzaW9uIGltcG9ydCB0ZXN0X3NlcnZlcl9kaWN0Citmcm9tIHJlZ3Jlc3Np b24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKIGZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMg YXMgc2VydmVyX3V0aWxzCiBmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIHRhYmxl c3BhY2VfdXRpbHMKIApAQCAtMzAsMTQgKzI3LDE0IEBAIGNsYXNzIFRhYmxl U3BhY2VBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAg IHNlbGYudGFibGVzcGFjZV9uYW1lID0gJycKICAgICAgICAgaWYgbm90IHNl bGYuc2VydmVyWyd0YWJsZXNwYWNlX3BhdGgnXVwKICAgICAgICAgICAgICAg ICBvciBzZWxmLnNlcnZlclsndGFibGVzcGFjZV9wYXRoJ10gaXMgTm9uZToK LSAgICAgICAgICAgIG1lc3NhZ2UgPSAiU2tpcHBlZCB0YWJsZXNwYWNlIGFk ZCB0ZXN0IGNhc2UuIFRhYmxlc3BhY2UgcGF0aCIgXAorICAgICAgICAgICAg bWVzc2FnZSA9ICJUYWJsZXNwYWNlIGFkZCB0ZXN0IGNhc2UuIFRhYmxlc3Bh Y2UgcGF0aCIgXAogICAgICAgICAgICAgICAgICAgICAgICIgbm90IGNvbmZp Z3VyZWQgZm9yIHNlcnZlcjogJXMiICUgc2VsZi5zZXJ2ZXJbJ25hbWUnXQog ICAgICAgICAgICAgIyBTa2lwIHRoZSB0ZXN0IGNhc2UgaWYgdGFibGVzcGFj ZV9wYXRoIG5vdCBmb3VuZC4KICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3Qo bWVzc2FnZSkKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAi IiJUaGlzIGZ1bmN0aW9uIHRlc3QgdGhlIGFkZCB0YWJsZXNwYWNlIEFQSSIi IgotICAgICAgICBzZXJ2ZXJfaWQgPSB0ZXN0X3NlcnZlcl9kaWN0WyJzZXJ2 ZXIiXVswXVsic2VydmVyX2lkIl0KKyAgICAgICAgc2VydmVyX2lkID0gcGFy ZW50X25vZGVfZGljdFsic2VydmVyIl1bLTFdWyJzZXJ2ZXJfaWQiXQogICAg ICAgICBzZXJ2ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9z ZXJ2ZXIoc2VsZiwgc2VydmVyX2lkKQogICAgICAgICBpZiBub3Qgc2VydmVy X3Jlc3BvbnNlWydkYXRhJ11bJ2Nvbm5lY3RlZCddOgogICAgICAgICAgICAg cmFpc2UgRXhjZXB0aW9uKCJVbmFibGUgdG8gY29ubmVjdCBzZXJ2ZXIgdG8g Z2V0IHRhYmxlc3BhY2UuIikKQEAgLTU4LDcgKzU1LDcgQEAgY2xhc3MgVGFi bGVTcGFjZUFkZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAg ICAgdGFibGVzcGFjZV9kaWN0ID0geyJ0YWJsZXNwYWNlX2lkIjogdGFibGVz cGFjZV9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YWJsZXNw YWNlX25hbWUiOiBzZWxmLnRhYmxlc3BhY2VfbmFtZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJzZXJ2ZXJfaWQiOiBzZXJ2ZXJfaWR9Ci0gICAg ICAgIHV0aWxzLndyaXRlX25vZGVfaW5mbyh0YWJsZXNwYWNlX2lkLCAidHNp ZCIsIHRhYmxlc3BhY2VfZGljdCkKKyAgICAgICAgdXRpbHMud3JpdGVfbm9k ZV9pbmZvKCJ0c2lkIiwgdGFibGVzcGFjZV9kaWN0KQogCiAgICAgZGVmIHRl YXJEb3duKHNlbGYpOgogICAgICAgICAiIiIKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RhYmxlc3Bh Y2VzL3Rlc3RzL3Rlc3RfdGJzcGNfZGVsZXRlLnB5IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGFibGVzcGFjZXMvdGVz dHMvdGVzdF90YnNwY19kZWxldGUucHkKaW5kZXggNjA1YjZhZi4uNDlhYmM1 MSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvdGFibGVzcGFjZXMvdGVzdHMvdGVzdF90YnNwY19kZWxl dGUucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvdGFibGVzcGFjZXMvdGVzdHMvdGVzdF90YnNwY19kZWxldGUu cHkKQEAgLTEyLDEzICsxMiwxMiBAQCBpbXBvcnQganNvbgogCiBmcm9tIHBn YWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCiBm cm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZy b20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF9zZXJ2ZXJfZGljdAorZnJvbSBy ZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0CiBmcm9tIC4gaW1w b3J0IHV0aWxzIGFzIHRhYmxlc3BhY2VfdXRpbHMKIAogCiBjbGFzcyBUYWJs ZVNwYWNlRGVsZXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAg ICIiIlRoaXMgY2xhc3MgaGFzIGRlbGV0ZSB0YWJsZSBzcGFjZSBzY2VuYXJp byIiIgotCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIEZldGNoaW5n IGRlZmF1bHQgVVJMIGZvciB0YWJsZXNwYWNlIG5vZGUuCiAgICAgICAgICgn Q2hlY2sgVGFibGVzcGFjZSBOb2RlJywgZGljdCh1cmw9Jy9icm93c2VyL3Rh Ymxlc3BhY2Uvb2JqLycpKQpAQCAtMjcsMjQgKzI2LDI4IEBAIGNsYXNzIFRh YmxlU3BhY2VEZWxldGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAg ICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2 ZXJbJ3RhYmxlc3BhY2VfcGF0aCddXAogICAgICAgICAgICAgICAgIG9yIHNl bGYuc2VydmVyWyd0YWJsZXNwYWNlX3BhdGgnXSBpcyBOb25lOgotICAgICAg ICAgICAgbWVzc2FnZSA9ICJTa2lwcGVkIHRhYmxlc3BhY2UgZGVsZXRlIHRl c3QgY2FzZS4gVGFibGVzcGFjZSBwYXRoIiBcCisgICAgICAgICAgICBtZXNz YWdlID0gIlRhYmxlc3BhY2UgZGVsZXRlIHRlc3QgY2FzZS4gVGFibGVzcGFj ZSBwYXRoIiBcCiAgICAgICAgICAgICAgICAgICAgICAgIiBub3QgY29uZmln dXJlZCBmb3Igc2VydmVyOiAlcyIgJSBzZWxmLnNlcnZlclsnbmFtZSddCiAg ICAgICAgICAgICAjIFNraXAgdGhlIHRlc3QgY2FzZSBpZiB0YWJsZXNwYWNl X3BhdGggbm90IGZvdW5kLgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCht ZXNzYWdlKQogICAgICAgICBzZWxmLnRhYmxlc3BhY2VfbmFtZSA9ICJ0YWJs ZXNwYWNlX2RlbGV0ZV8lcyIgJSBzdHIodXVpZC51dWlkNCgpKVsxOjZdCisg ICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFyZW50X25vZGVfZGljdFsic2Vy dmVyIl1bLTFdWyJzZXJ2ZXJfaWQiXQogICAgICAgICBzZWxmLnRhYmxlc3Bh Y2VfaWQgPSB0YWJsZXNwYWNlX3V0aWxzLmNyZWF0ZV90YWJsZXNwYWNlKAog ICAgICAgICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYudGFibGVzcGFjZV9uYW1l KQorICAgICAgICB0YWJsZXNwYWNlX2RpY3QgPSB7InRhYmxlc3BhY2VfaWQi OiBzZWxmLnRhYmxlc3BhY2VfaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAidGFibGVzcGFjZV9uYW1lIjogc2VsZi50YWJsZXNwYWNlX25hbWUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VydmVyX2lkIjogc2Vs Zi5zZXJ2ZXJfaWR9CisgICAgICAgIHV0aWxzLndyaXRlX25vZGVfaW5mbygi dHNpZCIsIHRhYmxlc3BhY2VfZGljdCkKIAogICAgIGRlZiBydW5UZXN0KHNl bGYpOgogICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIHRlc3RzIHRoZSBkZWxl dGUgdGFibGUgc3BhY2UgYXBpIiIiCi0gICAgICAgIHNlcnZlcl9pZCA9IHRl c3Rfc2VydmVyX2RpY3RbInNlcnZlciJdWzBdWyJzZXJ2ZXJfaWQiXQogICAg ICAgICB0YWJsZXNwYWNlX2NvdW50ID0gdGFibGVzcGFjZV91dGlscy52ZXJp ZnlfdGFibGVfc3BhY2UoCiAgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2Vs Zi50YWJsZXNwYWNlX25hbWUpCiAgICAgICAgIGlmIHRhYmxlc3BhY2VfY291 bnQgPT0gMDoKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gdGFi bGVzcGFjZShzKSB0byBkZWxldGUhISEiKQogCiAgICAgICAgIHJlc3BvbnNl ID0gc2VsZi50ZXN0ZXIuZGVsZXRlKHNlbGYudXJsICsgc3RyKHV0aWxzLlNF UlZFUl9HUk9VUCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKyAnLycgKyBzdHIoc2VydmVyX2lkKSArICcvJworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICcvJyArIHN0cihzZWxm LnNlcnZlcl9pZCkgKyAnLycKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKyBzdHIoc2VsZi50YWJsZXNwYWNlX2lkKSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3JlZGly ZWN0cz1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25z ZS5zdGF0dXNfY29kZSwgMjAwKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGFibGVzcGFjZXMvdGVz dHMvdGVzdF90YnNwY19nZXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy90YWJsZXNwYWNlcy90ZXN0cy90ZXN0X3Ri c3BjX2dldC5weQppbmRleCA0ZjMwZWQ2Li4xM2YwMTA5IDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90 YWJsZXNwYWNlcy90ZXN0cy90ZXN0X3Ric3BjX2dldC5weQorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90YWJsZXNw YWNlcy90ZXN0cy90ZXN0X3Ric3BjX2dldC5weQpAQCAtMTAsNyArMTAsNyBA QCBpbXBvcnQgdXVpZAogCiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1w b3J0IEJhc2VUZXN0R2VuZXJhdG9yCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0 IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZyb20gcmVncmVzc2lvbiBpbXBvcnQg dGVzdF9zZXJ2ZXJfZGljdAorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJl bnRfbm9kZV9kaWN0CiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGls cwogZnJvbSAuIGltcG9ydCB1dGlscyBhcyB0YWJsZXNwYWNlX3V0aWxzCiAK QEAgLTI2LDE4ICsyNiwyMiBAQCBjbGFzcyBUYWJsZXNwYWNlR2V0VGVzdENh c2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgIGRlZiBzZXRVcChzZWxmKToK ICAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyWyd0YWJsZXNwYWNlX3BhdGgn XVwKICAgICAgICAgICAgICAgICBvciBzZWxmLnNlcnZlclsndGFibGVzcGFj ZV9wYXRoJ10gaXMgTm9uZToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAiU2tp cHBlZCB0YWJsZXNwYWNlIGdldCB0ZXN0IGNhc2UuIFRhYmxlc3BhY2UgcGF0 aCIgXAorICAgICAgICAgICAgbWVzc2FnZSA9ICJUYWJsZXNwYWNlIGdldCB0 ZXN0IGNhc2UuIFRhYmxlc3BhY2UgcGF0aCIgXAogICAgICAgICAgICAgICAg ICAgICAgICIgbm90IGNvbmZpZ3VyZWQgZm9yIHNlcnZlcjogJXMiICUgc2Vs Zi5zZXJ2ZXJbJ25hbWUnXQogICAgICAgICAgICAgIyBTa2lwIHRoZSB0ZXN0 IGNhc2UgaWYgdGFibGVzcGFjZV9wYXRoIG5vdCBmb3VuZC4KICAgICAgICAg ICAgIHNlbGYuc2tpcFRlc3QobWVzc2FnZSkKICAgICAgICAgc2VsZi50YWJs ZXNwYWNlX25hbWUgPSAidGFibGVzcGFjZV9kZWxldGVfJXMiICUgc3RyKHV1 aWQudXVpZDQoKSlbMTo2XQogICAgICAgICBzZWxmLnRhYmxlc3BhY2VfaWQg PSB0YWJsZXNwYWNlX3V0aWxzLmNyZWF0ZV90YWJsZXNwYWNlKAogICAgICAg ICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYudGFibGVzcGFjZV9uYW1lKQorICAg ICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZl ciJdWy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgdGFibGVzcGFjZV9kaWN0 ID0geyJ0YWJsZXNwYWNlX2lkIjogc2VsZi50YWJsZXNwYWNlX2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgInRhYmxlc3BhY2VfbmFtZSI6IHNl bGYudGFibGVzcGFjZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgInNlcnZlcl9pZCI6IHNlbGYuc2VydmVyX2lkfQorICAgICAgICB1dGls cy53cml0ZV9ub2RlX2luZm8oInRzaWQiLCB0YWJsZXNwYWNlX2RpY3QpCiAK ICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgIiIiVGhpcyBmdW5j dGlvbiB0ZXN0IHRoZSBnZXQgdGFibGUgc3BhY2Ugc2NlbmFyaW8iIiIKLSAg ICAgICAgc2VydmVyX2lkID0gdGVzdF9zZXJ2ZXJfZGljdFsic2VydmVyIl1b MF1bInNlcnZlcl9pZCJdCi0gICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNl cnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZXJ2ZXJfaWQpCisg ICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNlcnZlcl91dGlscy5jb25uZWN0 X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKICAgICAgICAgaWYgbm90 IHNlcnZlcl9yZXNwb25zZVsnZGF0YSddWydjb25uZWN0ZWQnXToKICAgICAg ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5hYmxlIHRvIGNvbm5lY3Qgc2Vy dmVyIHRvIGdldCB0YWJsZXNwYWNlLiIpCiAKQEAgLTQ3LDcgKzUxLDcgQEAg Y2xhc3MgVGFibGVzcGFjZUdldFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9y KToKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gdGFibGVzcGFj ZShzKSB0byB1cGRhdGUhISEiKQogICAgICAgICByZXNwb25zZSA9IHNlbGYu dGVzdGVyLmdldCgKICAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxz LlNFUlZFUl9HUk9VUCkgKyAnLycgKwotICAgICAgICAgICAgc3RyKHNlcnZl cl9pZCkgKyAnLycgKyBzdHIoc2VsZi50YWJsZXNwYWNlX2lkKSwKKyAgICAg ICAgICAgIHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBzdHIoc2VsZi50 YWJsZXNwYWNlX2lkKSwKICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9 VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3Rh dHVzX2NvZGUsIDIwMCkKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGFibGVzcGFjZXMvdGVzdHMv dGVzdF90YnNwY19wdXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy90YWJsZXNwYWNlcy90ZXN0cy90ZXN0X3Ric3Bj X3B1dC5weQppbmRleCBiNWUxOTg2Li5iOTk3YmI5IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90YWJs ZXNwYWNlcy90ZXN0cy90ZXN0X3Ric3BjX3B1dC5weQorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90YWJsZXNwYWNl cy90ZXN0cy90ZXN0X3Ric3BjX3B1dC5weQpAQCAtMTIsNyArMTIsNyBAQCBp bXBvcnQgdXVpZAogCiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0 IEJhc2VUZXN0R2VuZXJhdG9yCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRl c3RfdXRpbHMgYXMgdXRpbHMKLWZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVz dF9zZXJ2ZXJfZGljdAorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRf bm9kZV9kaWN0CiBmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIHRhYmxlc3BhY2Vf dXRpbHMKIAogCkBAIC0yNywxNyArMjcsMjEgQEAgY2xhc3MgVGFibGVTcGFj ZVVwZGF0ZVRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICBkZWYg c2V0VXAoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlclsndGFi bGVzcGFjZV9wYXRoJ11cCiAgICAgICAgICAgICAgICAgb3Igc2VsZi5zZXJ2 ZXJbJ3RhYmxlc3BhY2VfcGF0aCddIGlzIE5vbmU6Ci0gICAgICAgICAgICBt ZXNzYWdlID0gIlNraXBwZWQgdGFibGVzcGFjZSBkZWxldGUgdGVzdCBjYXNl LiBUYWJsZXNwYWNlIHBhdGgiIFwKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAi VGFibGVzcGFjZSBkZWxldGUgdGVzdCBjYXNlLiBUYWJsZXNwYWNlIHBhdGgi IFwKICAgICAgICAgICAgICAgICAgICAgICAiIG5vdCBjb25maWd1cmVkIGZv ciBzZXJ2ZXI6ICVzIiAlIHNlbGYuc2VydmVyWyduYW1lJ10KICAgICAgICAg ICAgICMgU2tpcCB0aGUgdGVzdCBjYXNlIGlmIHRhYmxlc3BhY2VfcGF0aCBu b3QgZm91bmQuCiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KG1lc3NhZ2Up CiAgICAgICAgIHNlbGYudGFibGVzcGFjZV9uYW1lID0gInRhYmxlc3BhY2Vf ZGVsZXRlXyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6Nl0KICAgICAgICAg c2VsZi50YWJsZXNwYWNlX2lkID0gdGFibGVzcGFjZV91dGlscy5jcmVhdGVf dGFibGVzcGFjZSgKICAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLnRh Ymxlc3BhY2VfbmFtZSkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJl bnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAg ICAgIHRhYmxlc3BhY2VfZGljdCA9IHsidGFibGVzcGFjZV9pZCI6IHNlbGYu dGFibGVzcGFjZV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0 YWJsZXNwYWNlX25hbWUiOiBzZWxmLnRhYmxlc3BhY2VfbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICJzZXJ2ZXJfaWQiOiBzZWxmLnNlcnZl cl9pZH0KKyAgICAgICAgdXRpbHMud3JpdGVfbm9kZV9pbmZvKCJ0c2lkIiwg dGFibGVzcGFjZV9kaWN0KQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAg ICAgICAgICIiIlRoaXMgZnVuY3Rpb24gdGVzdHMgdGhlIHVwZGF0ZSB0YWJs ZXNwYWNlIGRhdGEgc2NlbmFyaW8iIiIKLSAgICAgICAgc2VydmVyX2lkID0g dGVzdF9zZXJ2ZXJfZGljdFsic2VydmVyIl1bMF1bInNlcnZlcl9pZCJdCiAg ICAgICAgIHRhYmxlc3BhY2VfY291bnQgPSB0YWJsZXNwYWNlX3V0aWxzLnZl cmlmeV90YWJsZV9zcGFjZSgKICAgICAgICAgICAgIHNlbGYuc2VydmVyLCBz ZWxmLnRhYmxlc3BhY2VfbmFtZSkKICAgICAgICAgaWYgdGFibGVzcGFjZV9j b3VudCA9PSAwOgpAQCAtNDgsNyArNTIsNyBAQCBjbGFzcyBUYWJsZVNwYWNl VXBkYXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAg ICAgInRhYmxlX3NwYWNlX2lkIjogc2VsZi50YWJsZXNwYWNlX2lkCiAgICAg ICAgICAgICB9CiAgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVy LnB1dCgKLSAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZF Ul9HUk9VUCkgKyAnLycgKyBzdHIoc2VydmVyX2lkKSArICcvJworICAgICAg ICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcv JyArIHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycKICAgICAgICAgICAgICsg c3RyKHNlbGYudGFibGVzcGFjZV9pZCksIGRhdGE9anNvbi5kdW1wcyhkYXRh KSwKICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKICAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbHMocHV0X3Jlc3BvbnNlLnN0YXR1c19jb2Rl LCAyMDApCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9hZGQucHkgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0 cy90ZXN0X3NlcnZlcl9hZGQucHkKaW5kZXggNjQzMzg4OC4uZjEwNzE0YSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2ZXJfYWRkLnB5CisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rl c3Rfc2VydmVyX2FkZC5weQpAQCAtMzIsOCArMzIsOSBAQCBjbGFzcyBTZXJ2 ZXJzQWRkVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICBz ZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQog ICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5k YXRhLmRlY29kZSgndXRmLTgnKSkKICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQg PSByZXNwb25zZV9kYXRhWydub2RlJ11bJ19pZCddCi0gICAgICAgIHV0aWxz LndyaXRlX25vZGVfaW5mbyhpbnQoc2VsZi5zZXJ2ZXJfaWQpLCAic2lkIiwg c2VsZi5zZXJ2ZXIpCisgICAgICAgIHNlcnZlcl9kaWN0ID0geyJzZXJ2ZXJf aWQiOiBpbnQoc2VsZi5zZXJ2ZXJfaWQpfQorICAgICAgICB1dGlscy53cml0 ZV9ub2RlX2luZm8oInNpZCIsIHNlcnZlcl9kaWN0KQogCiAgICAgZGVmIHRl YXJEb3duKHNlbGYpOgogICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIGRlbGV0 ZSB0aGUgc2VydmVyIGZyb20gU1FMaXRlICIiIgotICAgICAgICB1dGlscy5k ZWxldGVfc2VydmVyKHNlbGYudGVzdGVyLCBzZWxmLnNlcnZlcl9pZCkKKyAg ICAgICAgdXRpbHMuZGVsZXRlX3NlcnZlcl93aXRoX2FwaShzZWxmLnRlc3Rl ciwgc2VsZi5zZXJ2ZXJfaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZl cl9kZWxldGUucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9kZWxldGUucHkKaW5kZXgg NGY5ZTgyZC4uNTM0OWRjOSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2ZXJf ZGVsZXRlLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2RlbGV0ZS5weQpAQCAt MjEsNiArMjEsOCBAQCBjbGFzcyBTZXJ2ZXJEZWxldGVUZXN0Q2FzZShCYXNl VGVzdEdlbmVyYXRvcik6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAg ICAiIiJUaGlzIGZ1bmN0aW9uIGFkZCB0aGUgc2VydmVyIHRvIHRlc3QgdGhl IERFTEVURSBBUEkiIiIKICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSB1dGls cy5jcmVhdGVfc2VydmVyKHNlbGYuc2VydmVyKQorICAgICAgICBzZXJ2ZXJf ZGljdCA9IHsic2VydmVyX2lkIjogc2VsZi5zZXJ2ZXJfaWR9CisgICAgICAg IHV0aWxzLndyaXRlX25vZGVfaW5mbygic2lkIiwgc2VydmVyX2RpY3QpCiAK ICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgIiIiVGhpcyBmdW5j dGlvbiBkZWxldGVzIHRoZSBhZGRlZCBzZXJ2ZXIiIiIKQEAgLTMzLDQgKzM1 LDQgQEAgY2xhc3MgU2VydmVyRGVsZXRlVGVzdENhc2UoQmFzZVRlc3RHZW5l cmF0b3IpOgogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICAi IiJUaGlzIGZ1bmN0aW9uIGRlbGV0ZSB0aGUgc2VydmVyIGZyb20gU1FMaXRl ICIiIgotICAgICAgICB1dGlscy5kZWxldGVfc2VydmVyKHNlbGYudGVzdGVy LCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgdXRpbHMuZGVsZXRlX3NlcnZl cl93aXRoX2FwaShzZWxmLnRlc3Rlciwgc2VsZi5zZXJ2ZXJfaWQpCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy90ZXN0cy90ZXN0X3NlcnZlcl9nZXQucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZl cl9nZXQucHkKaW5kZXggY2Q2ZDc4Ny4uMzM4ZjdmYyAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVz dHMvdGVzdF9zZXJ2ZXJfZ2V0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2dl dC5weQpAQCAtOSw3ICs5LDcgQEAKIAogZnJvbSBwZ2FkbWluLnV0aWxzLnJv dXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSByZWdyZXNzaW9u IGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHJlZ3Jlc3Npb24g aW1wb3J0IHRlc3Rfc2VydmVyX2RpY3QKK2Zyb20gcmVncmVzc2lvbiBpbXBv cnQgcGFyZW50X25vZGVfZGljdAogCiAKIGNsYXNzIFNlcnZlcnNHZXRUZXN0 Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CkBAIC0yMyw5ICsyMywxNSBAQCBj bGFzcyBTZXJ2ZXJzR2V0VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgog ICAgICAgICAoJ0RlZmF1bHQgU2VydmVyIE5vZGUgdXJsJywgZGljdCh1cmw9 Jy9icm93c2VyL3NlcnZlci9vYmovJykpCiAgICAgXQogCisgICAgZGVmIHNl dFVwKHNlbGYpOgorICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIGFkZCB0aGUg c2VydmVyIHRvIHRlc3QgdGhlIEdFVCBBUEkiIiIKKyAgICAgICAgc2VsZi5z ZXJ2ZXJfaWQgPSB1dGlscy5jcmVhdGVfc2VydmVyKHNlbGYuc2VydmVyKQor ICAgICAgICBzZXJ2ZXJfZGljdCA9IHsic2VydmVyX2lkIjogc2VsZi5zZXJ2 ZXJfaWR9CisgICAgICAgIHV0aWxzLndyaXRlX25vZGVfaW5mbygic2lkIiwg c2VydmVyX2RpY3QpCisKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAg ICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUgYWRkZWQgc2Vy dmVycyB0byBvYmplY3QgYnJvd3Nlci4gIiIiCi0gICAgICAgIHNlcnZlcl9p ZCA9IHRlc3Rfc2VydmVyX2RpY3RbInNlcnZlciJdWzBdWyJzZXJ2ZXJfaWQi XQorICAgICAgICBzZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJzZXJ2 ZXIiXVstMV1bInNlcnZlcl9pZCJdCiAgICAgICAgIGlmIG5vdCBzZXJ2ZXJf aWQ6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlNlcnZlciBub3Qg Zm91bmQgdG8gdGVzdCBHRVQgQVBJIikKICAgICAgICAgcmVzcG9uc2UgPSBz ZWxmLnRlc3Rlci5nZXQoc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dS T1VQKSArICcvJyArCkBAIC0zMywzICszOSw2IEBAIGNsYXNzIFNlcnZlcnNH ZXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkK ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2Nv ZGUsIDIwMCkKIAorICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAg IiIiVGhpcyBmdW5jdGlvbiBkZWxldGUgdGhlIHNlcnZlciBmcm9tIFNRTGl0 ZSAiIiIKKyAgICAgICAgdXRpbHMuZGVsZXRlX3NlcnZlcl93aXRoX2FwaShz ZWxmLnRlc3Rlciwgc2VsZi5zZXJ2ZXJfaWQpCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90 ZXN0X3NlcnZlcl9wdXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9wdXQucHkKaW5k ZXggM2RiOGMzMy4uNGM4ZTlmYyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2 ZXJfcHV0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX3B1dC5weQpAQCAtMjMs NiArMjMsOCBAQCBjbGFzcyBTZXJ2ZXJVcGRhdGVUZXN0Q2FzZShCYXNlVGVz dEdlbmVyYXRvcik6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICAi IiJUaGlzIGZ1bmN0aW9uIGFkZCB0aGUgc2VydmVyIHRvIHRlc3QgdGhlIFBV VCBBUEkiIiIKICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSB1dGlscy5jcmVh dGVfc2VydmVyKHNlbGYuc2VydmVyKQorICAgICAgICBzZXJ2ZXJfZGljdCA9 IHsic2VydmVyX2lkIjogc2VsZi5zZXJ2ZXJfaWR9CisgICAgICAgIHV0aWxz LndyaXRlX25vZGVfaW5mbygic2lkIiwgc2VydmVyX2RpY3QpCiAKICAgICBk ZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiB1 cGRhdGUgdGhlIHNlcnZlciBkZXRhaWxzIiIiCkBAIC0zNyw0ICszOSw0IEBA IGNsYXNzIFNlcnZlclVwZGF0ZVRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9y KToKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgIiIiVGhp cyBmdW5jdGlvbiBkZWxldGUgdGhlIHNlcnZlciBmcm9tIFNRTGl0ZSIiIgot ICAgICAgICB1dGlscy5kZWxldGVfc2VydmVyKHNlbGYudGVzdGVyLCBzZWxm LnNlcnZlcl9pZCkKKyAgICAgICAgdXRpbHMuZGVsZXRlX3NlcnZlcl93aXRo X2FwaShzZWxmLnRlc3Rlciwgc2VsZi5zZXJ2ZXJfaWQpCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfY2hhbmdlX3Bhc3N3 b3JkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2NoYW5n ZV9wYXNzd29yZC5weQppbmRleCA1YjdjOTE4Li5hNzczMjdmIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfY2hhbmdlX3Bh c3N3b3JkLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVz dF9jaGFuZ2VfcGFzc3dvcmQucHkKQEAgLTYsMTQgKzYsMTMgQEAKICMgI1Ro aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwg TGljZW5jZQogIwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot CiBpbXBvcnQgdXVpZAogaW1wb3J0IGpzb24KIAogZnJvbSBwZ2FkbWluLnV0 aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSByZWdy ZXNzaW9uLnRlc3Rfc2V0dXAgaW1wb3J0IGNvbmZpZ19kYXRhCi1mcm9tIHJl Z3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZyb20gdXRp bHMgaW1wb3J0IGNoYW5nZV9wYXNzd29yZAorZnJvbSByZWdyZXNzaW9uIGlt cG9ydCB0ZXN0X3V0aWxzCitmcm9tIC4gaW1wb3J0IHV0aWxzCiAKIAogY2xh c3MgQ2hhbmdlUGFzc3dvcmRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6 CkBAIC04OSwzMCArODgsMjUgQEAgY2xhc3MgQ2hhbmdlUGFzc3dvcmRUZXN0 Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgICAgY29u ZmlybVBhc3N3b3JkPXNlbGYucGFzc3dvcmQsIGFjdGl2ZT0xLCByb2xlPSIy IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Zm9sbG93X3JlZGlyZWN0cz1UcnVlKQogICAgICAgICAgICAgdXNlcl9pZCA9 IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpWydp ZCddCi0KICAgICAgICAgICAgICMgTG9nb3V0IHRoZSBBZG1pbmlzdHJhdG9y IGJlZm9yZSBsb2dpbiBub3JtYWwgdXNlcgotICAgICAgICAgICAgdXRpbHMu bG9nb3V0X3Rlc3Rlcl9hY2NvdW50KHNlbGYudGVzdGVyKQotCisgICAgICAg ICAgICB0ZXN0X3V0aWxzLmxvZ291dF90ZXN0ZXJfYWNjb3VudChzZWxmLnRl c3RlcikKICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9z dCgnL2xvZ2luJywgZGF0YT1kaWN0KAogICAgICAgICAgICAgICAgIGVtYWls PXNlbGYudXNlcm5hbWUsIHBhc3N3b3JkPXNlbGYucGFzc3dvcmQpLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19y ZWRpcmVjdHM9VHJ1ZSkKLSAgICAgICAgICAgIGFzc2VydCByZXNwb25zZS5z dGF0dXNfY29kZSA9PSAyMDAKLQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF cXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKICAgICAgICAgICAg ICMgdGVzdCB0aGUgJ2NoYW5nZSBwYXNzd29yZCcgdGVzdCBjYXNlCi0gICAg ICAgICAgICBjaGFuZ2VfcGFzc3dvcmQoc2VsZikKLQorICAgICAgICAgICAg dXRpbHMuY2hhbmdlX3Bhc3N3b3JkKHNlbGYpCiAgICAgICAgICAgICAjIERl bGV0ZSB0aGUgbm9ybWFsIHVzZXIgYWZ0ZXIgY2hhbmdpbmcgaXQncyBwYXNz d29yZAotICAgICAgICAgICAgdXRpbHMubG9nb3V0X3Rlc3Rlcl9hY2NvdW50 KHNlbGYudGVzdGVyKQotCisgICAgICAgICAgICB0ZXN0X3V0aWxzLmxvZ291 dF90ZXN0ZXJfYWNjb3VudChzZWxmLnRlc3RlcikKICAgICAgICAgICAgICMg TG9naW4gdGhlIEFkbWluaXN0cmF0b3IgYmVmb3JlIGRlbGV0aW5nIG5vcm1h bCB1c2VyCi0gICAgICAgICAgICB1dGlscy5sb2dpbl90ZXN0ZXJfYWNjb3Vu dChzZWxmLnRlc3RlcikKKyAgICAgICAgICAgIHRlc3RfdXRpbHMubG9naW5f dGVzdGVyX2FjY291bnQoc2VsZi50ZXN0ZXIpCiAgICAgICAgICAgICByZXNw b25zZSA9IHNlbGYudGVzdGVyLmRlbGV0ZSgKICAgICAgICAgICAgICAgICAn L3VzZXJfbWFuYWdlbWVudC91c2VyLycgKyBzdHIodXNlcl9pZCksCiAgICAg ICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQotICAgICAgICAg ICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1c19jb2RlID09IDIwMAorICAgICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUs IDIwMCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNoYW5nZV9wYXNz d29yZChzZWxmKQorICAgICAgICAgICAgdXRpbHMuY2hhbmdlX3Bhc3N3b3Jk KHNlbGYpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25D bGFzcyhjbHMpOgotICAgICAgICB1dGlscy5sb2dpbl90ZXN0ZXJfYWNjb3Vu dChjbHMudGVzdGVyKQorICAgICAgICB0ZXN0X3V0aWxzLmxvZ2luX3Rlc3Rl cl9hY2NvdW50KGNscy50ZXN0ZXIpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3Rlc3RzL3Rlc3RfbG9naW4ucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3Rlc3RzL3Rlc3RfbG9naW4ucHkKaW5kZXggZjZiYzZiNS4uYWM0 NDZmNyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90 ZXN0X2xvZ2luLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMv dGVzdF9sb2dpbi5weQpAQCAtODUsNyArODUsNyBAQCBjbGFzcyBMb2dpblRl c3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgcmVzcG9uc2Ug PSBzZWxmLnRlc3Rlci5wb3N0KCcvbG9naW4nLCBkYXRhPWRpY3QoCiAgICAg ICAgICAgICBlbWFpbD1zZWxmLmVtYWlsLCBwYXNzd29yZD1zZWxmLnBhc3N3 b3JkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv bGxvd19yZWRpcmVjdHM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihz ZWxmLnJlc3BkYXRhLCByZXNwb25zZS5kYXRhLmRlY29kZSgndXRmOCcpKQor ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5yZXNwZGF0YSBpbiByZXNw b25zZS5kYXRhLmRlY29kZSgndXRmOCcpKQogCiAgICAgQGNsYXNzbWV0aG9k CiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9sb2dvdXQucHkgYi93ZWIv cGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfbG9nb3V0LnB5CmluZGV4IDU2 OTdkZTYuLjQwM2UzNWQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvdGVzdHMvdGVzdF9sb2dvdXQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci90ZXN0cy90ZXN0X2xvZ291dC5weQpAQCAtMzIsNyArMzIsNyBAQCBj bGFzcyBMb2dvdXRUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAg IiIiVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhlIGxvZ291dCBmdW5jdGlvbmFs aXR5LiIiIgogCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIuZ2V0 KCcvbG9nb3V0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnJlc3Bk YXRhLCByZXNwb25zZS5kYXRhLmRlY29kZSgndXRmOCcpKQorICAgICAgICBz ZWxmLmFzc2VydFRydWUoc2VsZi5yZXNwZGF0YSBpbiByZXNwb25zZS5kYXRh LmRlY29kZSgndXRmOCcpKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVm IHRlYXJEb3duQ2xhc3MoY2xzKToKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvdGVzdHMvdGVzdF9yZXNldF9wYXNzd29yZC5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9yZXNldF9wYXNzd29yZC5weQpp bmRleCAwZGNmMGJkLi4xN2RhMWM0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9icm93c2VyL3Rlc3RzL3Rlc3RfcmVzZXRfcGFzc3dvcmQucHkKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X3Jlc2V0X3Bhc3N3b3Jk LnB5CkBAIC02LDEyICs2LDEyIEBACiAjICNUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKICMKICMgIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQogaW1wb3J0IHV1aWQKIAog ZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVy YXRvcgogZnJvbSByZWdyZXNzaW9uLnRlc3Rfc2V0dXAgaW1wb3J0IGNvbmZp Z19kYXRhCi1mcm9tIHRlc3RfdXRpbHMgaW1wb3J0IGxvZ2luX3Rlc3Rlcl9h Y2NvdW50LCBsb2dvdXRfdGVzdGVyX2FjY291bnQKK2Zyb20gcmVncmVzc2lv bi50ZXN0X3V0aWxzIGltcG9ydCBsb2dpbl90ZXN0ZXJfYWNjb3VudAorZnJv bSByZWdyZXNzaW9uLnRlc3RfdXRpbHMgaW1wb3J0IGxvZ291dF90ZXN0ZXJf YWNjb3VudAogCiAKIGNsYXNzIFJlc2V0UGFzc3dvcmRUZXN0Q2FzZShCYXNl VGVzdEdlbmVyYXRvcik6CkBAIC00NSwxMiArNDUsMTIgQEAgY2xhc3MgUmVz ZXRQYXNzd29yZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAg ICAgIiIiVGhpcyBmdW5jdGlvbiBjaGVja3MgcmVzZXQgcGFzc3dvcmQgZnVu Y3Rpb25hbGl0eS4iIiIKIAogICAgICAgICByZXNwb25zZSA9IHNlbGYudGVz dGVyLmdldCgnL3Jlc2V0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignUmVj b3ZlciBwZ0FkbWluIDQgUGFzc3dvcmQnLCByZXNwb25zZS5kYXRhLmRlY29k ZSgKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdSZWNvdmVyIHBnQWRtaW4g NCBQYXNzd29yZCcgaW4gcmVzcG9uc2UuZGF0YS5kZWNvZGUoCiAgICAgICAg ICAgICAndXRmLTgnKSkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rl ci5wb3N0KAogICAgICAgICAgICAgJy9yZXNldCcsIGRhdGE9ZGljdChlbWFp bD1zZWxmLmVtYWlsKSwKICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9 VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnJlc3BkYXRhLCBy ZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgc2VsZi5h c3NlcnRUcnVlKHNlbGYucmVzcGRhdGEgaW4gcmVzcG9uc2UuZGF0YS5kZWNv ZGUoJ3V0Zi04JykpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVh ckRvd25DbGFzcyhjbHMpOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci90ZXN0cy91dGlscy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVz dHMvdXRpbHMucHkKaW5kZXggMTg1NDhjZS4uM2JlODRkNyAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy91dGlscy5weQorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3V0aWxzLnB5CkBAIC0xMCw3ICsx MCw3IEBACiAKIGRlZiBjaGFuZ2VfcGFzc3dvcmQoc2VsZik6CiAgICAgcmVz cG9uc2UgPSBzZWxmLnRlc3Rlci5nZXQoJy9jaGFuZ2UnLCBmb2xsb3dfcmVk aXJlY3RzPVRydWUpCi0gICAgc2VsZi5hc3NlcnRJbigncGdBZG1pbiA0IFBh c3N3b3JkIENoYW5nZScsIHJlc3BvbnNlLmRhdGEuZGVjb2RlKAorICAgIHNl bGYuYXNzZXJ0VHJ1ZSgncGdBZG1pbiA0IFBhc3N3b3JkIENoYW5nZScgaW4g cmVzcG9uc2UuZGF0YS5kZWNvZGUoCiAgICAgICAgICd1dGYtOCcpKQogCiAg ICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KCcvY2hhbmdlJywgZGF0 YT1kaWN0KApAQCAtMTgsNCArMTgsNCBAQCBkZWYgY2hhbmdlX3Bhc3N3b3Jk KHNlbGYpOgogICAgICAgICBuZXdfcGFzc3dvcmQ9c2VsZi5uZXdfcGFzc3dv cmQsCiAgICAgICAgIG5ld19wYXNzd29yZF9jb25maXJtPXNlbGYubmV3X3Bh c3N3b3JkX2NvbmZpcm0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCi0gICAgc2VsZi5hc3NlcnRJ bihzZWxmLnJlc3BkYXRhLCByZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgn KSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgc2VsZi5hc3Nl cnRUcnVlKHNlbGYucmVzcGRhdGEgaW4gcmVzcG9uc2UuZGF0YS5kZWNvZGUo J3V0Zi04JykpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi91dGlscy9yb3V0 ZS5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL3JvdXRlLnB5CmluZGV4IDc0MjY5 ZGUuLjNhYmUwYjUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL3Jv dXRlLnB5CisrKyBiL3dlYi9wZ2FkbWluL3V0aWxzL3JvdXRlLnB5CkBAIC02 LDEwICs2LDEyIEBACiAjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQogIwogIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLQoraW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHN5cwotaW1wb3J0IHVu aXR0ZXN0Ci0KK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMiwgNyk6CisgICAg aW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAorZWxzZToKKyAgICBpbXBv cnQgdW5pdHRlc3QKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFj dG1ldGhvZAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGltcG9ydF9tb2R1bGUK IGZyb20gd2Vya3pldWcudXRpbHMgaW1wb3J0IGZpbmRfbW9kdWxlcwpAQCAt NzAsNyArNzIsNyBAQCBjbGFzcyBUZXN0c0dlbmVyYXRvclJlZ2lzdHJ5KEFC Q01ldGEpOgogICAgICAgICAgICAgICAgICAgICBpZiAidGVzdHMuIiBpbiBz dHIobW9kdWxlX25hbWUpOgogICAgICAgICAgICAgICAgICAgICAgICAgY2xz LmltcG9ydF9hcHBfbW9kdWxlcyhtb2R1bGVfbmFtZSkKICAgICAgICAgICAg ICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAg IHBhc3MKKyAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4 YyhmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg ICBmb3IgbW9kdWxlX25hbWUgaW4gZmluZF9tb2R1bGVzKHBrZywgRmFsc2Us IFRydWUpOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTc5LDcgKzgxLDgg QEAgY2xhc3MgVGVzdHNHZW5lcmF0b3JSZWdpc3RyeShBQkNNZXRhKToKICAg ICAgICAgICAgICAgICAgICAgaWYgInBnYWRtaW4uYnJvd3Nlci50ZXN0cyIg bm90IGluIG1vZHVsZV9uYW1lOgogICAgICAgICAgICAgICAgICAgICAgICAg Y2xzLmltcG9ydF9hcHBfbW9kdWxlcyhtb2R1bGVfbmFtZSkKICAgICAgICAg ICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAg ICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50 X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisKIAogaW1wb3J0IHNpeAogCmRpZmYg LS1naXQgYS93ZWIvcmVncmVzc2lvbi9fX2luaXRfXy5weSBiL3dlYi9yZWdy ZXNzaW9uL19faW5pdF9fLnB5CmluZGV4IDZiN2NiMmYuLjM2YWUzZjggMTAw NjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL19faW5pdF9fLnB5CisrKyBiL3dl Yi9yZWdyZXNzaW9uL19faW5pdF9fLnB5CkBAIC05LDYgKzksMTEgQEAKIGlt cG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnJv bGVzLnRlc3RzLnV0aWxzIGFzIHJvbGVzX3V0aWxzCiBpbXBvcnQgcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50YWJsZXNwYWNlcy50 ZXN0cy51dGlscyBhcyBcCiAgICAgdGFibGVzcGFjZV91dGlscworZnJvbSBw Z2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNl cy5zY2hlbWFzLnRlc3RzIGltcG9ydFwKKyAgICB1dGlscyBhcyBzY2hlbWFf dXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2Vy dmVycy5kYXRhYmFzZXMuc2NoZW1hcy5mdW5jdGlvbnMudGVzdHNcCisgICAg aW1wb3J0IHV0aWxzIGFzIHRyaWdnZXJfZnVuY3NfdXRpbHMKKwogCiBnbG9i YWwgbm9kZV9pbmZvX2RpY3QKIG5vZGVfaW5mb19kaWN0ID0gewpAQCAtMTYs MjIgKzIxLDE0IEBAIG5vZGVfaW5mb19kaWN0ID0gewogICAgICJkaWQiOiBb XSwgICMgZGF0YWJhc2UKICAgICAibHJpZCI6IFtdLCAgIyByb2xlCiAgICAg InRzaWQiOiBbXSwgICMgdGFibGVzcGFjZQotICAgICJzY2lkIjogW10sICAj IHNjaGVtYQotICAgICJ0Zm5pZCI6IFtdLCAgIyB0cmlnZ2VyIGZ1bmN0aW9u cwotICAgICJjb2lkIjogW10sICAjIGNvbGxhdGlvbgotICAgICJjaWQiOiBb XSwgICMgY2FzdHMKLSAgICAiZXRpZCI6IFtdLCAgIyBldmVudF90cmlnZ2Vy Ci0gICAgImVpZCI6IFtdLCAgIyBleHRlbnNpb24KLSAgICAiZmlkIjogW10s ICAjIEZEVwotICAgICJmc2lkIjogW10sICAjIEZSUwotICAgICJ1bWlkIjog W10sICAjIHVzZXJfbWFwcGluZwotICAgICJzZWlkIjogW10gICMgc2VxdWVu Y2UKKyAgICAic2NpZCI6IFtdICAjIHNjaGVtYQogfQogCi1nbG9iYWwgdGVz dF9zZXJ2ZXJfZGljdAotdGVzdF9zZXJ2ZXJfZGljdCA9IHsKK2dsb2JhbCBw YXJlbnRfbm9kZV9kaWN0CitwYXJlbnRfbm9kZV9kaWN0ID0gewogICAgICJz ZXJ2ZXIiOiBbXSwKICAgICAiZGF0YWJhc2UiOiBbXSwKICAgICAidGFibGVz cGFjZSI6IFtdLAotICAgICJyb2xlIjogW10KKyAgICAicm9sZSI6IFtdLAor ICAgICJzY2hlbWEiOiBbXQogfQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Np b24vcnVudGVzdHMucHkgYi93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQpp bmRleCA4N2I2MDA0Li5iZGJkNmUyIDEwMDY0NAotLS0gYS93ZWIvcmVncmVz c2lvbi9ydW50ZXN0cy5weQorKysgYi93ZWIvcmVncmVzc2lvbi9ydW50ZXN0 cy5weQpAQCAtMTAsMTQgKzEwLDE4IEBACiAiIiIgVGhpcyBmaWxlIGNvbGxl Y3QgYWxsIG1vZHVsZXMvZmlsZXMgcHJlc2VudCBpbiB0ZXN0cyBkaXJlY3Rv cnkgYW5kIGFkZAogdGhlbSB0byBUZXN0U3VpdGUuICIiIgogZnJvbSBfX2Z1 dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotCiBpbXBvcnQgYXJncGFy c2UKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHNpZ25hbAogaW1w b3J0IGF0ZXhpdAotaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgbG9nZ2luZwor aW1wb3J0IHRyYWNlYmFjaworCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDIs IDcpOgorICAgIGltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKK2Vsc2U6 CisgICAgaW1wb3J0IHVuaXR0ZXN0CiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0 TG9nZ2VyKF9fbmFtZV9fKQogZmlsZV9uYW1lID0gb3MucGF0aC5iYXNlbmFt ZShfX2ZpbGVfXykKQEAgLTM1LDcgKzM5LDcgQEAgaWYgc3lzLnBhdGhbMF0g IT0gcm9vdDoKIAogZnJvbSBwZ2FkbWluIGltcG9ydCBjcmVhdGVfYXBwCiBp bXBvcnQgY29uZmlnCi1pbXBvcnQgdGVzdF9zZXR1cAorZnJvbSByZWdyZXNz aW9uIGltcG9ydCB0ZXN0X3NldHVwCiAKICMgRGVsZXRlIFNRTGl0ZSBkYiBm aWxlIGlmIGV4aXN0cwogaWYgb3MucGF0aC5pc2ZpbGUoY29uZmlnLlRFU1Rf U1FMSVRFX1BBVEgpOgpAQCAtNjYsNyArNzAsNyBAQCBleGVjIChvcGVuKCJz ZXR1cC5weSIpLnJlYWQoKSkKIGZyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQg U0NIRU1BX1ZFUlNJT04KIAogIyBEZWxheSB0aGUgaW1wb3J0IHRlc3RfdXRp bHMgYXMgaXQgbmVlZHMgdXBkYXRlZCBjb25maWcuU1FMSVRFX1BBVEgKLWlt cG9ydCB0ZXN0X3V0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3Rf dXRpbHMKIAogY29uZmlnLlNFVFRJTkdTX1NDSEVNQV9WRVJTSU9OID0gU0NI RU1BX1ZFUlNJT04KIApAQCAtMTg5LDExICsxOTMsOCBAQCBkZWYgZ2V0X3Rl c3RzX3Jlc3VsdCh0ZXN0X3N1aXRlKToKICAgICAgICAgICAgICAgICAgICAg aWYgY2xhc3NfbmFtZSBub3QgaW4gZmFpbGVkX2Nhc2VzX3Jlc3VsdDoKICAg ICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWRfY2FzZXNfcmVzdWx0LmFw cGVuZChjbGFzc19uYW1lKQogICAgICAgICByZXR1cm4gdG90YWxfcmFuLCBm YWlsZWRfY2FzZXNfcmVzdWx0LCBza2lwcGVkX2Nhc2VzX3Jlc3VsdAotICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjZXB0aW9uOgotICAgICAgICBleGNl cHRpb24gPSAiRXhjZXB0aW9uOiAlczogbGluZTolcyAlcyIgJSAoCi0gICAg ICAgICAgICBmaWxlX25hbWUsIHN5cy5leGNfdHJhY2ViYWNrLnRiX2xpbmVu bywgZXhjZXB0aW9uKQotICAgICAgICBwcmludChleGNlcHRpb24pCi0gICAg ICAgIGxvZ2dlci5leGNlcHRpb24oZXhjZXB0aW9uKQorICAgIGV4Y2VwdCBF eGNlcHRpb246CisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1z eXMuc3RkZXJyKQogCiAKIGNsYXNzIFN0cmVhbVRvTG9nZ2VyKG9iamVjdCk6 CkBAIC0yNDgsMTIgKzI0OSwxNSBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWlu X18nOgogICAgIHRlc3RfdXRpbHMubG9naW5fdGVzdGVyX2FjY291bnQodGVz dF9jbGllbnQpCiAKICAgICBzZXJ2ZXJzX2luZm8gPSB0ZXN0X3V0aWxzLmdl dF9jb25maWdfZGF0YSgpCisgICAgbm9kZV9uYW1lID0gImFsbCIKKyAgICBp ZiBhcmdzWydwa2cnXSBpcyBub3QgTm9uZToKKyAgICAgICAgbm9kZV9uYW1l ID0gYXJnc1sncGtnJ10uc3BsaXQoJy4nKVstMV0KICAgICB0cnk6CiAgICAg ICAgIGZvciBzZXJ2ZXIgaW4gc2VydmVyc19pbmZvOgogICAgICAgICAgICAg cHJpbnQoIlxuPT09PT09PT09PT09PVJ1bm5pbmcgdGhlIHRlc3QgY2FzZXMg Zm9yICclcyc9PT09PT09PT09PT09IgogICAgICAgICAgICAgICAgICAgJSBz ZXJ2ZXJbJ25hbWUnXSwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAg IyBDcmVhdGUgdGVzdCBzZXJ2ZXIKLSAgICAgICAgICAgIHRlc3RfdXRpbHMu Y3JlYXRlX3Rlc3Rfc2VydmVyKHNlcnZlcikKKyAgICAgICAgICAgIHRlc3Rf dXRpbHMuY3JlYXRlX3BhcmVudF9zZXJ2ZXJfbm9kZShzZXJ2ZXIsIG5vZGVf bmFtZSkKIAogICAgICAgICAgICAgc3VpdGUgPSBnZXRfc3VpdGUodGVzdF9t b2R1bGVfbGlzdCwgc2VydmVyLCB0ZXN0X2NsaWVudCkKICAgICAgICAgICAg IHRlc3RzID0gdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIoc3RyZWFtPXN5cy5z dGRlcnIsCkBAIC0yNjUsMTQgKzI2OSwxNiBAQCBpZiBfX25hbWVfXyA9PSAn X19tYWluX18nOgogICAgICAgICAgICAgdGVzdF9yZXN1bHRbc2VydmVyWydu YW1lJ11dID0gW3Jhbl90ZXN0cywgZmFpbGVkX2Nhc2VzLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWRfY2Fz ZXNdCiAgICAgICAgICAgICAjIERlbGV0ZSB0ZXN0IHNlcnZlcgotICAgICAg ICAgICAgdGVzdF91dGlscy5kZWxldGVfdGVzdF9zZXJ2ZXIodGVzdF9jbGll bnQpCisgICAgICAgICAgICAjIHRlc3RfdXRpbHMuZGVsZXRlX3Rlc3Rfc2Vy dmVyKHRlc3RfY2xpZW50KQogICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgogICAg ICAgICBkcm9wX29iamVjdHMoKQogCi0gICAgcHJpbnQoIlxuPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PSIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICBwcmlu dCgiXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0iCisgICAgICAgICAgIj09PT09PT0i LCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgcHJpbnQoIlRlc3QgUmVzdWx0IFN1 bW1hcnkiLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgcHJpbnQoIj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT1cbiIsIGZpbGU9c3lzLnN0ZGVycikKLQorICAg IHByaW50KAorICAgICAgICAiPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKyAg ICAgICAgIj09PVxuIiwgZmlsZT1zeXMuc3RkZXJyKQogICAgIGZvciBzZXJ2 ZXJfcmVzIGluIHRlc3RfcmVzdWx0OgogICAgICAgICBmYWlsZWRfY2FzZXMg PSAiXG5cdFx0Ii5qb2luKHRlc3RfcmVzdWx0W3NlcnZlcl9yZXNdWzFdKQog ICAgICAgICBza2lwcGVkX2Nhc2VzID0gIlxuXHRcdCIuam9pbih0ZXN0X3Jl c3VsdFtzZXJ2ZXJfcmVzXVsyXSkKQEAgLTI5Miw2ICsyOTgsOCBAQCBpZiBf X25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgICAgICAgICh0b3RhbF9z a2lwcGVkICE9IDAgYW5kICI6XG5cdFx0IiBvciAiIiksIHNraXBwZWRfY2Fz ZXMpLAogICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQogCi0gICAgcHJp bnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIsIGZpbGU9c3lzLnN0 ZGVycikKKyAgICBwcmludCgKKyAgICAgICAgIj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0iCisgICAgICAgICI9PT1cbiIsIGZpbGU9c3lzLnN0ZGVycikKIAog ICAgIHByaW50KCJQbGVhc2UgY2hlY2sgb3V0cHV0IGluIGZpbGU6ICVzL3Jl Z3Jlc3Npb24ubG9nXG4iICUgQ1VSUkVOVF9QQVRIKQpkaWZmIC0tZ2l0IGEv d2ViL3JlZ3Jlc3Npb24vdGVzdF91dGlscy5weSBiL3dlYi9yZWdyZXNzaW9u L3Rlc3RfdXRpbHMucHkKaW5kZXggNzMxZjFiNi4uMzZmNTFiMSAxMDA2NDQK LS0tIGEvd2ViL3JlZ3Jlc3Npb24vdGVzdF91dGlscy5weQorKysgYi93ZWIv cmVncmVzc2lvbi90ZXN0X3V0aWxzLnB5CkBAIC03LDcgKzcsNyBAQAogIwog IyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIGZyb20gX19mdXR1cmVfXyBpbXBv cnQgcHJpbnRfZnVuY3Rpb24KLQoraW1wb3J0IHRyYWNlYmFjawogaW1wb3J0 IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdXVpZApAQCAtMjAsNyArMjAsNyBA QCBpbXBvcnQgdGVzdF9zZXR1cAogaW1wb3J0IHJlZ3Jlc3Npb24KIAogU0VS VkVSX0dST1VQID0gdGVzdF9zZXR1cC5jb25maWdfZGF0YVsnc2VydmVyX2dy b3VwJ10KLWZpbGVfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoX19maWxlX18p CitmaWxlX25hbWUgPSBvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKQogCiAK IGRlZiBnZXRfZGJfY29ubmVjdGlvbihkYiwgdXNlcm5hbWUsIHBhc3N3b3Jk LCBob3N0LCBwb3J0KToKQEAgLTQwLDcgKzQwLDcgQEAgZGVmIGxvZ2luX3Rl c3Rlcl9hY2NvdW50KHRlc3Rlcik6CiAgICAgOnR5cGUgdGVzdGVyOiBmbGFz ayB0ZXN0IGNsaWVudCBvYmplY3QKICAgICA6cmV0dXJuOiBOb25lCiAgICAg IiIiCi0gICAgaWYgb3MuZW52aXJvblsnUEdBRE1JTl9TRVRVUF9FTUFJTCdd IGFuZFwKKyAgICBpZiBvcy5lbnZpcm9uWydQR0FETUlOX1NFVFVQX0VNQUlM J10gYW5kIFwKICAgICAgICAgICAgIG9zLmVudmlyb25bJ1BHQURNSU5fU0VU VVBfUEFTU1dPUkQnXToKICAgICAgICAgZW1haWwgPSBvcy5lbnZpcm9uWydQ R0FETUlOX1NFVFVQX0VNQUlMJ10KICAgICAgICAgcGFzc3dvcmQgPSBvcy5l bnZpcm9uWydQR0FETUlOX1NFVFVQX1BBU1NXT1JEJ10KQEAgLTgzLDExICs4 Myw5IEBAIGRlZiBnZXRfY29uZmlnX2RhdGEoKToKICAgICByZXR1cm4gc2Vy dmVyX2RhdGEKIAogCi1kZWYgd3JpdGVfbm9kZV9pbmZvKG5vZGVfaWQsIGtl eSwgbm9kZV9pbmZvPU5vbmUpOgorZGVmIHdyaXRlX25vZGVfaW5mbyhrZXks IG5vZGVfaW5mbz1Ob25lKToKICAgICAiIiIKICAgICBUaGlzIGZ1bmN0aW9u IGFwcGVuZCB0aGUgbm9kZSBkZXRhaWxzIHRvCi0gICAgOnBhcmFtIG5vZGVf aWQ6IG5vZGUgaWQKLSAgICA6dHlwZSBub2RlX2lkOiBpbnQKICAgICA6cGFy YW0ga2V5OiBkaWN0IGtleSBuYW1lIHRvIHN0b3JlIG5vZGUgaW5mbwogICAg IDp0eXBlIGtleTogc3RyCiAgICAgOnBhcmFtIG5vZGVfaW5mbzogbm9kZSBk ZXRhaWxzCkBAIC05NiwxMyArOTQsOCBAQCBkZWYgd3JpdGVfbm9kZV9pbmZv KG5vZGVfaWQsIGtleSwgbm9kZV9pbmZvPU5vbmUpOgogICAgIDpydHlwZTog ZGljdAogICAgICIiIgogICAgIG5vZGVfaW5mb19kaWN0ID0gcmVncmVzc2lv bi5ub2RlX2luZm9fZGljdAotICAgIGlmIG5vZGVfaW5mb19kaWN0OgotICAg ICAgICBpZiBrZXkgaW4gbm9kZV9pbmZvX2RpY3QgYW5kIG5vZGVfaW5mb19k aWN0W2tleV06Ci0gICAgICAgICAgICBub2RlX2luZm9fZGljdFtrZXldLmFw cGVuZCh7bm9kZV9pZDogbm9kZV9pbmZvfSkKLSAgICAgICAgZWxzZToKLSAg ICAgICAgICAgIG5vZGVfaW5mb19kaWN0W2tleV0gPSBbe25vZGVfaWQ6IG5v ZGVfaW5mb31dCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9u KCJub2RlX2luZm9fZGljdCBpcyBudWxsLiIpCisgICAgaWYgbm9kZV9pbmZv IG5vdCBpbiBub2RlX2luZm9fZGljdFtrZXldOgorICAgICAgICBub2RlX2lu Zm9fZGljdFtrZXldLmFwcGVuZChub2RlX2luZm8pCiAKIAogZGVmIGNsZWFy X25vZGVfaW5mb19kaWN0KCk6CkBAIC0xMjMsNDggKzExNiw1MiBAQCBkZWYg Y3JlYXRlX2RhdGFiYXNlKHNlcnZlciwgZGJfbmFtZSk6CiAgICAgICAgIG9s ZF9pc29sYXRpb25fbGV2ZWwgPSBjb25uZWN0aW9uLmlzb2xhdGlvbl9sZXZl bAogICAgICAgICBjb25uZWN0aW9uLnNldF9pc29sYXRpb25fbGV2ZWwoMCkK ICAgICAgICAgcGdfY3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQotICAg ICAgICBwZ19jdXJzb3IuZXhlY3V0ZSgiQ1JFQVRFIERBVEFCQVNFICVzIiAl IGRiX25hbWUpCisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKCcnJ0NSRUFU RSBEQVRBQkFTRSAiJXMiJycnICUgZGJfbmFtZSkKICAgICAgICAgY29ubmVj dGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKG9sZF9pc29sYXRpb25fbGV2ZWwp CiAgICAgICAgIGNvbm5lY3Rpb24uY29tbWl0KCkKIAogICAgICAgICAjIEdl dCAnb2lkJyBmcm9tIG5ld2x5IGNyZWF0ZWQgZGF0YWJhc2UKLSAgICAgICAg cGdfY3Vyc29yLmV4ZWN1dGUoCi0gICAgICAgICAgICAiU0VMRUNUIGRiLm9p ZCBmcm9tIHBnX2RhdGFiYXNlIGRiIFdIRVJFIGRiLmRhdG5hbWU9JyVzJyIg JQotICAgICAgICAgICAgZGJfbmFtZSkKKyAgICAgICAgcGdfY3Vyc29yLmV4 ZWN1dGUoIlNFTEVDVCBkYi5vaWQgZnJvbSBwZ19kYXRhYmFzZSBkYiBXSEVS RSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBkYi5kYXRuYW1lPScl cyciICUgZGJfbmFtZSkKICAgICAgICAgb2lkID0gcGdfY3Vyc29yLmZldGNo b25lKCkKICAgICAgICAgZGJfaWQgPSAnJwogICAgICAgICBpZiBvaWQ6CiAg ICAgICAgICAgICBkYl9pZCA9IG9pZFswXQogICAgICAgICBjb25uZWN0aW9u LmNsb3NlKCkKICAgICAgICAgcmV0dXJuIGRiX2lkCi0gICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBleGNlcHRpb246Ci0gICAgICAgIGV4Y2VwdGlvbiA9ICJF cnJvciB3aGlsZSBjcmVhdGluZyBkYXRhYmFzZTogJXM6IGxpbmU6JXMgJXMi ICUgKAotICAgICAgICAgICAgZmlsZV9uYW1lLCBzeXMuZXhjX3RyYWNlYmFj ay50Yl9saW5lbm8sIGV4Y2VwdGlvbikKLSAgICAgICAgcHJpbnQoZXhjZXB0 aW9uLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoK KyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIp CiAKIAogZGVmIGRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgZGF0YWJhc2Vf bmFtZSk6CiAgICAgIiIiVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGRyb3AgdGhl IGRhdGFiYXNlIiIiCi0KLSAgICB0cnk6CisgICAgaWYgZGF0YWJhc2VfbmFt ZSBub3QgaW4gWyJwb3N0Z3JlcyIsICJ0ZW1wbGF0ZTEiLCAidGVtcGxhdGUw Il06CiAgICAgICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkK LSAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoIlNFTEVDVCAqIEZST00gcGdf ZGF0YWJhc2UgZGIgV0hFUkUgZGIuZGF0bmFtZT0nJXMnIgotICAgICAgICAg ICAgICAgICAgICAgICAgICAlIGRhdGFiYXNlX25hbWUpCisgICAgICAgIHBn X2N1cnNvci5leGVjdXRlKCJTRUxFQ1QgKiBGUk9NIHBnX2RhdGFiYXNlIGRi IFdIRVJFIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiIGRiLmRhdG5h bWU9JyVzJyIgJSBkYXRhYmFzZV9uYW1lKQogICAgICAgICBpZiBwZ19jdXJz b3IuZmV0Y2hhbGwoKToKLSAgICAgICAgICAgICMgUmVsZWFzZSBwaWQgaWYg YW55IHByb2Nlc3MgdXNpbmcgZGF0YWJhc2UKLSAgICAgICAgICAgIHBnX2N1 cnNvci5leGVjdXRlKCJzZWxlY3QgcGdfdGVybWluYXRlX2JhY2tlbmQocGlk KSBmcm9tIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBwZ19z dGF0X2FjdGl2aXR5IHdoZXJlIGRhdG5hbWU9JyVzJyIgJQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2VfbmFtZSkKICAgICAgICAg ICAgIG9sZF9pc29sYXRpb25fbGV2ZWwgPSBjb25uZWN0aW9uLmlzb2xhdGlv bl9sZXZlbAogICAgICAgICAgICAgY29ubmVjdGlvbi5zZXRfaXNvbGF0aW9u X2xldmVsKDApCiAgICAgICAgICAgICBwZ19jdXJzb3IuZXhlY3V0ZSgnJydE Uk9QIERBVEFCQVNFICIlcyInJycgJSBkYXRhYmFzZV9uYW1lKQogICAgICAg ICAgICAgY29ubmVjdGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKG9sZF9pc29s YXRpb25fbGV2ZWwpCiAgICAgICAgICAgICBjb25uZWN0aW9uLmNvbW1pdCgp CiAgICAgICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkKLSAgICBleGNlcHQg RXhjZXB0aW9uIGFzIGV4Y2VwdGlvbjoKLSAgICAgICAgZXhjZXB0aW9uID0g IiVzOiBsaW5lOiVzICVzIiAlICgKLSAgICAgICAgICAgIGZpbGVfbmFtZSwg c3lzLmV4Y190cmFjZWJhY2sudGJfbGluZW5vLCBleGNlcHRpb24pCi0gICAg ICAgIHByaW50KGV4Y2VwdGlvbiwgZmlsZT1zeXMuc3RkZXJyKQorCisKK2Rl ZiBkcm9wX3RhYmxlc3BhY2UoY29ubmVjdGlvbik6CisgICAgIiIiVGhpcyBm dW5jdGlvbiB1c2VkIHRvIGRyb3AgdGhlIHRhYmxlc3BhY2UiIiIKKyAgICBw Z19jdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCisgICAgcGdfY3Vyc29y LmV4ZWN1dGUoIlNFTEVDVCAqIEZST00gcGdfdGFibGVzcGFjZSIpCisgICAg dGFibGVfc3BhY2VzID0gcGdfY3Vyc29yLmZldGNoYWxsKCkKKyAgICBpZiB0 YWJsZV9zcGFjZXM6CisgICAgICAgIGZvciB0YWJsZV9zcGFjZSBpbiB0YWJs ZV9zcGFjZXM6CisgICAgICAgICAgICBpZiB0YWJsZV9zcGFjZVswXSBub3Qg aW4gWyJwZ19kZWZhdWx0IiwgInBnX2dsb2JhbCJdOgorICAgICAgICAgICAg ICAgIG9sZF9pc29sYXRpb25fbGV2ZWwgPSBjb25uZWN0aW9uLmlzb2xhdGlv bl9sZXZlbAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xh dGlvbl9sZXZlbCgwKQorICAgICAgICAgICAgICAgIHBnX2N1cnNvci5leGVj dXRlKCJEUk9QIFRBQkxFU1BBQ0UgJXMiICUgdGFibGVfc3BhY2VbMF0pCisg ICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZXRfaXNvbGF0aW9uX2xldmVs KG9sZF9pc29sYXRpb25fbGV2ZWwpCisgICAgICAgICAgICAgICAgY29ubmVj dGlvbi5jb21taXQoKQorICAgIGNvbm5lY3Rpb24uY2xvc2UoKQogCiAKIGRl ZiBjcmVhdGVfc2VydmVyKHNlcnZlcik6CkBAIC0xODEsNzMgKzE3OCw5NCBA QCBkZWYgY3JlYXRlX3NlcnZlcihzZXJ2ZXIpOgogICAgICAgICAgICAgICAg ICAgICAnIGNvbW1lbnQpIFZBTFVFUyAoPyw/LD8sPyw/LD8sPyw/LD8sPykn LCBzZXJ2ZXJfZGV0YWlscykKICAgICAgICAgc2VydmVyX2lkID0gY3VyLmxh c3Ryb3dpZAogICAgICAgICBjb25uLmNvbW1pdCgpCisgICAgICAgICMgQWRk IHNlcnZlciBpbmZvIHRvIHBhcmVudF9ub2RlX2RpY3QKKyAgICAgICAgcmVn cmVzc2lvbi5wYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXS5hcHBlbmQoeyJz ZXJ2ZXJfaWQiOiBzZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VydmVyIjogc2Vy dmVyfSkKKwogICAgICAgICByZXR1cm4gc2VydmVyX2lkCiAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBleGNlcHRpb246CiAgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbigiRXJyb3Igd2hpbGUgY3JlYXRpbmcgc2VydmVyLiAlcyIgJSBleGNl cHRpb24pCiAKIAotZGVmIGRlbGV0ZV9zZXJ2ZXIodGVzdGVyLCBzaWQpOgor ZGVmIGRlbGV0ZV9zZXJ2ZXJfd2l0aF9hcGkodGVzdGVyLCBzaWQpOgogICAg ICIiIlRoaXMgZnVuY3Rpb24gdXNlZCB0byBkZWxldGUgc2VydmVyIGZyb20g U1FMaXRlIiIiCiAgICAgdHJ5OgogICAgICAgICB1cmwgPSAnL2Jyb3dzZXIv c2VydmVyL29iai8nICsgc3RyKFNFUlZFUl9HUk9VUCkgKyAiLyIKICAgICAg ICAgIyBDYWxsIEFQSSB0byBkZWxldGUgdGhlIHNlcnZlcgogICAgICAgICBy ZXNwb25zZSA9IHRlc3Rlci5kZWxldGUodXJsICsgc3RyKHNpZCkpCi0gICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGNlcHRpb246Ci0gICAgICAgIGV4Y2Vw dGlvbiA9ICIlczogbGluZTolcyAlcyIgJSAoCi0gICAgICAgICAgICBmaWxl X25hbWUsIHN5cy5leGNfdHJhY2ViYWNrLnRiX2xpbmVubywgZXhjZXB0aW9u KQotICAgICAgICBwcmludChleGNlcHRpb24sIGZpbGU9c3lzLnN0ZGVycikK KyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICB0cmFjZWJhY2sucHJp bnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKIAogCi1kZWYgZGVsZXRlX3NlcnZl cl9mcm9tX3NxbGl0ZShzaWQpOgotICAgICIiIlRoaXMgZnVuY3Rpb24gdXNl ZCB0byBkZWxldGUgc2VydmVyIGZyb20gU1FMaXRlIiIiCi0gICAgdHJ5Ogot ICAgICAgICBjb24gPSBzcWxpdGUzLmNvbm5lY3QoY29uZmlnLlNRTElURV9Q QVRIKQotICAgICAgICBjdXIgPSBjb24uY3Vyc29yKCkKLSAgICAgICAgc2Vy dmVyX29iamVjdHMgPSBjdXIuZXhlY3V0ZSgnU0VMRUNUICogRlJPTSBzZXJ2 ZXIgV0hFUkUgaWQ9JXMnICUgc2lkKQotICAgICAgICBzcyA9IHNlcnZlcl9v YmplY3RzLmZldGNoYWxsKCkKLSAgICAgICAgIyBmb3IgaSBpbiBzczoKLSAg ICAgICAgIyAgICAgcHJpbnQoIj4+Pj4+Pj4+Pj4+IiwgaSkKLSAgICAgICAg c2VydmVyc19jb3VudCA9IGxlbihzcykKLSAgICAgICAgIyBwcmludCgiPj4+ Pj4+PiIsIHNpZCkKLSAgICAgICAgaWYgc2VydmVyc19jb3VudDoKLSAgICAg ICAgICAgIGN1ci5leGVjdXRlKCdERUxFVEUgRlJPTSBzZXJ2ZXIgV0hFUkUg aWQ9JXMnICUgc2lkKQotICAgICAgICAgICAgY29uLmNvbW1pdCgpCi0gICAg ICAgIGNvbi5jbG9zZSgpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGNl cHRpb246Ci0gICAgICAgIGV4Y2VwdGlvbiA9ICIlczogbGluZTolcyAlcyIg JSAoCi0gICAgICAgICAgICBmaWxlX25hbWUsIHN5cy5leGNfdHJhY2ViYWNr LnRiX2xpbmVubywgZXhjZXB0aW9uKQotICAgICAgICBwcmludChleGNlcHRp b24sIGZpbGU9c3lzLnN0ZGVycikKK2RlZiBhZGRfZGJfdG9fcGFyZW50X25v ZGVfZGljdChzcnZfaWQsIGRiX2lkLCB0ZXN0X2RiX25hbWUpOgorICAgIHJl Z3Jlc3Npb24ucGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXS5hcHBlbmQo eyJzZXJ2ZXJfaWQiOiBzcnZfaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRiX2lkIjogZGJfaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImRiX25hbWUiOiB0ZXN0X2RiX25hbWV9KQogCiAKLWRlZiBj cmVhdGVfdGVzdF9zZXJ2ZXIoc2VydmVyX2luZm8pOgorZGVmIGFkZF9zY2hl bWFfdG9fcGFyZW50X25vZGVfZGljdChzcnZfaWQsIGRiX2lkLCBzY2hlbWFf aWQsIHNjaGVtYV9uYW1lKToKKyAgICByZWdyZXNzaW9uLnBhcmVudF9ub2Rl X2RpY3RbInNjaGVtYSJdLmFwcGVuZCh7InNlcnZlcl9pZCI6IHNydl9pZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImRiX2lkIjogZGJfaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2hlbWFfaWQiOiBzY2hl bWFfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJzY2hlbWFfbmFtZSI6IHNjaGVtYV9uYW1lfSkKKwor CitkZWYgY3JlYXRlX3BhcmVudF9zZXJ2ZXJfbm9kZShzZXJ2ZXJfaW5mbywg bm9kZV9uYW1lKToKICAgICAiIiIKICAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0 ZSB0aGUgdGVzdCBzZXJ2ZXIgd2hpY2ggd2lsbCBhY3QgYXMgcGFyZW50IHNl cnZlciwKICAgICB0aGUgb3RoZXIgbm9kZSB3aWxsIGFkZCB1bmRlciB0aGlz IHNlcnZlcgogICAgIDpwYXJhbSBzZXJ2ZXJfaW5mbzogc2VydmVyIGRldGFp bHMKICAgICA6dHlwZSBzZXJ2ZXJfaW5mbzogZGljdAorICAgIDpwYXJhbSBu b2RlX25hbWU6IG5vZGUgbmFtZQorICAgIDp0eXBlIG5vZGVfbmFtZTogc3Ry CiAgICAgOnJldHVybjogTm9uZQogICAgICIiIgotICAgICMgQ3JlYXRlIHRo ZSBzZXJ2ZXIKICAgICBzcnZfaWQgPSBjcmVhdGVfc2VydmVyKHNlcnZlcl9p bmZvKQotCi0gICAgIyBDcmVhdGUgdGVzdCBkYXRhYmFzZQotICAgIHRlc3Rf ZGJfbmFtZSA9ICJ0ZXN0X2RiXyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6 OF0KLSAgICBkYl9pZCA9IGNyZWF0ZV9kYXRhYmFzZShzZXJ2ZXJfaW5mbywg dGVzdF9kYl9uYW1lKQotCi0gICAgIyBBZGQgc2VydmVyIGluZm8gdG8gdGVz dF9zZXJ2ZXJfZGljdAotICAgIHJlZ3Jlc3Npb24udGVzdF9zZXJ2ZXJfZGlj dFsic2VydmVyIl0uYXBwZW5kKHsic2VydmVyX2lkIjogc3J2X2lkLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAic2VydmVyIjogc2VydmVyX2luZm99KQotICAgIHJlZ3Jlc3Npb24udGVz dF9zZXJ2ZXJfZGljdFsiZGF0YWJhc2UiXS5hcHBlbmQoeyJzZXJ2ZXJfaWQi OiBzcnZfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImRiX2lkIjogZGJfaWQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRi X25hbWUiOiB0ZXN0X2RiX25hbWV9KQorICAgIGlmIG5vZGVfbmFtZSA9PSAi ZGF0YWJhc2VzIjoKKyAgICAgICAgIyBDcmVhdGUgdGVzdCBkYXRhYmFzZQor ICAgICAgICB0ZXN0X2RiX25hbWUgPSAidGVzdF9kYl8lcyIgJSBzdHIodXVp ZC51dWlkNCgpKVsxOjZdCisgICAgICAgIGRiX2lkID0gY3JlYXRlX2RhdGFi YXNlKHNlcnZlcl9pbmZvLCB0ZXN0X2RiX25hbWUpCisgICAgICAgIGFkZF9k Yl90b19wYXJlbnRfbm9kZV9kaWN0KHNydl9pZCwgZGJfaWQsIHRlc3RfZGJf bmFtZSkKKyAgICBlbGlmIG5vZGVfbmFtZSA9PSAic2NoZW1hcyI6CisgICAg ICAgIHRlc3RfZGJfbmFtZSA9ICJ0ZXN0X2RiXyVzIiAlIHN0cih1dWlkLnV1 aWQ0KCkpWzE6Nl0KKyAgICAgICAgZGJfaWQgPSBjcmVhdGVfZGF0YWJhc2Uo c2VydmVyX2luZm8sIHRlc3RfZGJfbmFtZSkKKyAgICAgICAgYWRkX2RiX3Rv X3BhcmVudF9ub2RlX2RpY3Qoc3J2X2lkLCBkYl9pZCwgdGVzdF9kYl9uYW1l KQorICAgICAgICAjIENyZWF0ZSBzY2hlbWEKKyAgICAgICAgc2NoZW1hX25h bWUgPSAidGVzdF9zY2hlbWFfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo2 XQorICAgICAgICBjb25uZWN0aW9uID0gZ2V0X2RiX2Nvbm5lY3Rpb24odGVz dF9kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyX2luZm9bJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaW5mb1snZGJfcGFz c3dvcmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlcnZlcl9pbmZvWydob3N0J10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaW5mb1sncG9ydCddKQorCisg ICAgICAgIHNjaGVtYSA9IHJlZ3Jlc3Npb24uc2NoZW1hX3V0aWxzLmNyZWF0 ZV9zY2hlbWEoY29ubmVjdGlvbiwgc2NoZW1hX25hbWUpCisgICAgICAgIGFk ZF9zY2hlbWFfdG9fcGFyZW50X25vZGVfZGljdChzcnZfaWQsIGRiX2lkLCBz Y2hlbWFbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzY2hlbWFbMV0pCisgICAgZWxpZiBub2RlX25hbWUgbm90IGluIFsi c2VydmVycyIsICJyb2xlcyIsICJ0YWJsZXNwYWNlcyIsICJicm93c2VyIl06 CisgICAgICAgICMgQ3JlYXRlIHRlc3QgZGF0YWJhc2UKKyAgICAgICAgdGVz dF9kYl9uYW1lID0gInRlc3RfZGJfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlb MTo2XQorICAgICAgICBkYl9pZCA9IGNyZWF0ZV9kYXRhYmFzZShzZXJ2ZXJf aW5mbywgdGVzdF9kYl9uYW1lKQorICAgICAgICBhZGRfZGJfdG9fcGFyZW50 X25vZGVfZGljdChzcnZfaWQsIGRiX2lkLCB0ZXN0X2RiX25hbWUpCisgICAg ICAgICMgQ3JlYXRlIHNjaGVtYQorICAgICAgICBzY2hlbWFfbmFtZSA9ICJ0 ZXN0X3NjaGVtYV8lcyIgJSBzdHIodXVpZC51dWlkNCgpKVsxOjZdCisgICAg ICAgIGNvbm5lY3Rpb24gPSBnZXRfZGJfY29ubmVjdGlvbih0ZXN0X2RiX25h bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZXJ2ZXJfaW5mb1sndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pbmZvWydkYl9wYXNzd29yZCdd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vy dmVyX2luZm9bJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlcnZlcl9pbmZvWydwb3J0J10pCisKKyAgICAgICAg c2NoZW1hID0gcmVncmVzc2lvbi5zY2hlbWFfdXRpbHMuY3JlYXRlX3NjaGVt YShjb25uZWN0aW9uLCBzY2hlbWFfbmFtZSkKKyAgICAgICAgYWRkX3NjaGVt YV90b19wYXJlbnRfbm9kZV9kaWN0KHNydl9pZCwgZGJfaWQsIHNjaGVtYVsw XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj aGVtYVsxXSkKIAogCiBkZWYgZGVsZXRlX3Rlc3Rfc2VydmVyKHRlc3Rlcik6 Ci0gICAgdGVzdF9zZXJ2ZXJfZGljdCA9IHJlZ3Jlc3Npb24udGVzdF9zZXJ2 ZXJfZGljdAotICAgIHRlc3Rfc2VydmVycyA9IHRlc3Rfc2VydmVyX2RpY3Rb InNlcnZlciJdCi0gICAgdGVzdF9kYXRhYmFzZXMgPSB0ZXN0X3NlcnZlcl9k aWN0WyJkYXRhYmFzZSJdCi0gICAgdGVzdF90YWJsZV9zcGFjZXMgPSB0ZXN0 X3NlcnZlcl9kaWN0WyJ0YWJsZXNwYWNlIl0KICAgICB0cnk6CisgICAgICAg IHBhcmVudF9ub2RlX2RpY3QgPSByZWdyZXNzaW9uLnBhcmVudF9ub2RlX2Rp Y3QKKyAgICAgICAgdGVzdF9zZXJ2ZXJzID0gcGFyZW50X25vZGVfZGljdFsi c2VydmVyIl0KKyAgICAgICAgdGVzdF9kYXRhYmFzZXMgPSBwYXJlbnRfbm9k ZV9kaWN0WyJkYXRhYmFzZSJdCisgICAgICAgIHRlc3Rfcm9sZXMgPSByZWdy ZXNzaW9uLm5vZGVfaW5mb19kaWN0WyJscmlkIl0KKyAgICAgICAgdGVzdF90 YWJsZV9zcGFjZXMgPSByZWdyZXNzaW9uLm5vZGVfaW5mb19kaWN0WyJ0c2lk Il0KICAgICAgICAgZm9yIHRlc3Rfc2VydmVyIGluIHRlc3Rfc2VydmVyczoK ICAgICAgICAgICAgIHNydl9pZCA9IHRlc3Rfc2VydmVyWyJzZXJ2ZXJfaWQi XQogICAgICAgICAgICAgc2VydmVyc19kaWN0ID0gdGVzdF9zZXJ2ZXJbInNl cnZlciJdCkBAIC0yNjAsMTYgKzI3OCw2NCBAQCBkZWYgZGVsZXRlX3Rlc3Rf c2VydmVyKHRlc3Rlcik6CiAgICAgICAgICAgICAgICAgZGF0YWJhc2VfbmFt ZSA9IGRhdGFiYXNlWyJkYl9uYW1lIl0KICAgICAgICAgICAgICAgICAjIERy b3AgZGF0YWJhc2UKICAgICAgICAgICAgICAgICBkcm9wX2RhdGFiYXNlKGNv bm5lY3Rpb24sIGRhdGFiYXNlX25hbWUpCisgICAgICAgICAgICBmb3Igcm9s ZSBpbiB0ZXN0X3JvbGVzOgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24g PSBnZXRfZGJfY29ubmVjdGlvbihzZXJ2ZXJzX2RpY3RbJ2RiJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl cnZlcnNfZGljdFsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyc19kaWN0WydkYl9w YXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJ2ZXJzX2RpY3RbJ2hvc3QnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy c19kaWN0Wydwb3J0J10pCisgICAgICAgICAgICAgICAgIyBEZWxldGUgcm9s ZQorICAgICAgICAgICAgICAgIHJlZ3Jlc3Npb24ucm9sZXNfdXRpbHMuZGVs ZXRlX3JvbGUoY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVbInJvbGVfbmFtZSJd KQorICAgICAgICAgICAgZm9yIHRhYmxlc3BhY2UgaW4gdGVzdF90YWJsZV9z cGFjZXM6CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbiA9IGdldF9kYl9j b25uZWN0aW9uKHNlcnZlcnNfZGljdFsnZGInXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyc19kaWN0 Wyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJzX2RpY3RbJ2RiX3Bhc3N3b3JkJ10s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlcnZlcnNfZGljdFsnaG9zdCddLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzX2RpY3RbJ3Bv cnQnXSkKKyAgICAgICAgICAgICAgICAjIERlbGV0ZSB0YWJsZXNwYWNlCisg ICAgICAgICAgICAgICAgcmVncmVzc2lvbi50YWJsZXNwYWNlX3V0aWxzLmRl bGV0ZV90YWJsZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBjb25uZWN0 aW9uLCB0YWJsZXNwYWNlWyJ0YWJsZXNwYWNlX25hbWUiXSkKICAgICAgICAg ICAgICMgRGVsZXRlIHNlcnZlcgotICAgICAgICAgICAgZGVsZXRlX3NlcnZl cih0ZXN0ZXIsIHNydl9pZCkKLSAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4 Y2VwdGlvbjoKLSAgICAgICAgZXhjZXB0aW9uID0gIkV4Y2VwdGlvbjogJXM6 IGxpbmU6JXMgJXMiICUgKAotICAgICAgICAgICAgZmlsZV9uYW1lLCBzeXMu ZXhjX3RyYWNlYmFjay50Yl9saW5lbm8sIGV4Y2VwdGlvbikKLSAgICAgICAg cHJpbnQoZXhjZXB0aW9uLCBmaWxlPXN5cy5zdGRlcnIpCi0KLSAgICAjIENs ZWFyIHRlc3Rfc2VydmVyX2RpY3QKLSAgICBmb3IgaXRlbSBpbiByZWdyZXNz aW9uLnRlc3Rfc2VydmVyX2RpY3Q6Ci0gICAgICAgIGRlbCByZWdyZXNzaW9u LnRlc3Rfc2VydmVyX2RpY3RbaXRlbV1bOl0KKyAgICAgICAgICAgIGRlbGV0 ZV9zZXJ2ZXJfd2l0aF9hcGkodGVzdGVyLCBzcnZfaWQpCisgICAgZXhjZXB0 IEV4Y2VwdGlvbjoKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxl PXN5cy5zdGRlcnIpCisgICAgICAgIHJhaXNlCisKKworZGVmIGdldF9kYl9w YXNzd29yZChjb25maWdfc2VydmVycywgbmFtZSwgaG9zdCwgZGJfcG9ydCk6 CisgICAgZGJfcGFzc3dvcmQgPSAnJworICAgIGZvciBzcnYgaW4gY29uZmln X3NlcnZlcnM6CisgICAgICAgIGlmIChzcnZbJ25hbWUnXSwgc3J2Wydob3N0 J10sIHNydlsnZGJfcG9ydCddKSA9PSAobmFtZSwgaG9zdCwgZGJfcG9ydCk6 CisgICAgICAgICAgICBkYl9wYXNzd29yZCA9IHNydlsnZGJfcGFzc3dvcmQn XQorICAgIHJldHVybiBkYl9wYXNzd29yZAorCisKK2RlZiBnZXRfZGJfc2Vy dmVyKHNpZCk6CisgICAgY29ubmVjdGlvbiA9ICcnCisgICAgY29ubiA9IHNx bGl0ZTMuY29ubmVjdChjb25maWcuU1FMSVRFX1BBVEgpCisgICAgY3VyID0g Y29ubi5jdXJzb3IoKQorICAgIHNlcnZlciA9IGN1ci5leGVjdXRlKCdTRUxF Q1QgbmFtZSwgaG9zdCwgcG9ydCwgbWFpbnRlbmFuY2VfZGIsJworICAgICAg ICAgICAgICAgICAgICAgICAgICcgdXNlcm5hbWUgRlJPTSBzZXJ2ZXIgd2hl cmUgaWQ9JXMnICUgc2lkKQorICAgIHNlcnZlciA9IHNlcnZlci5mZXRjaG9u ZSgpCisgICAgaWYgc2VydmVyOgorICAgICAgICBuYW1lID0gc2VydmVyWzBd CisgICAgICAgIGhvc3QgPSBzZXJ2ZXJbMV0KKyAgICAgICAgZGJfcG9ydCA9 IHNlcnZlclsyXQorICAgICAgICBkYl9uYW1lID0gc2VydmVyWzNdCisgICAg ICAgIHVzZXJuYW1lID0gc2VydmVyWzRdCisgICAgICAgIGNvbmZpZ19zZXJ2 ZXJzID0gdGVzdF9zZXR1cC5jb25maWdfZGF0YVsnc2VydmVyX2NyZWRlbnRp YWxzJ10KKyAgICAgICAgIyBHZXQgdGhlIGRiIHBhc3N3b3JkIGZyb20gY29u ZmlnIGZpbGUgZm9yIGFwcHJvcHJpYXRlIHNlcnZlcgorICAgICAgICBkYl9w YXNzd29yZCA9IGdldF9kYl9wYXNzd29yZChjb25maWdfc2VydmVycywgbmFt ZSwgaG9zdCwgZGJfcG9ydCkKKyAgICAgICAgaWYgZGJfcGFzc3dvcmQ6Cisg ICAgICAgICAgICAjIERyb3AgZGF0YWJhc2UKKyAgICAgICAgICAgIGNvbm5l Y3Rpb24gPSBnZXRfZGJfY29ubmVjdGlvbihkYl9uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRi X3Bhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGJfcG9ydCkKKyAgICBjb25uLmNsb3NlKCkKKyAg ICByZXR1cm4gY29ubmVjdGlvbgogCiAKIGRlZiByZW1vdmVfZGJfZmlsZSgp OgpAQCAtMjgyLDEwNyArMzQ4LDM2IEBAIGRlZiBfZHJvcF9vYmplY3RzKHRl c3Rlcik6CiAgICAgIiIiVGhpcyBmdW5jdGlvbiB1c2UgdG8gY2xlYW51cCB0 aGUgY3JlYXRlZCB0aGUgb2JqZWN0cyhzZXJ2ZXJzLCBkYXRhYmFzZXMsCiAg ICAgIHNjaGVtYXMgZXRjKSBkdXJpbmcgdGhlIHRlc3Qgc3VpdGUgcnVuIiIi CiAgICAgdHJ5OgotICAgICAgICBjb25uID0gc3FsaXRlMy5jb25uZWN0KGNv bmZpZy5TUUxJVEVfUEFUSCkKLSAgICAgICAgY3VyID0gY29ubi5jdXJzb3Io KQotICAgICAgICBzZXJ2ZXJzID0gY3VyLmV4ZWN1dGUoJ1NFTEVDVCBuYW1l LCBob3N0LCBwb3J0LCBtYWludGVuYW5jZV9kYiwnCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnIHVzZXJuYW1lLCBpZCAgRlJPTSBzZXJ2ZXIn KQotICAgICAgICBpZiBzZXJ2ZXJzOgotICAgICAgICAgICAgYWxsX3NlcnZl cnMgPSBzZXJ2ZXJzLmZldGNoYWxsKCkKLSAgICAgICAgICAgIGZvciBzZXJ2 ZXJfaW5mbyBpbiBhbGxfc2VydmVyczoKLSAgICAgICAgICAgICAgICBuYW1l ID0gc2VydmVyX2luZm9bMF0KLSAgICAgICAgICAgICAgICBob3N0ID0gc2Vy dmVyX2luZm9bMV0KLSAgICAgICAgICAgICAgICBkYl9wb3J0ID0gc2VydmVy X2luZm9bMl0KLQotICAgICAgICAgICAgICAgIGNvbmZpZ19zZXJ2ZXJzID0g dGVzdF9zZXR1cC5jb25maWdfZGF0YVsnc2VydmVyX2NyZWRlbnRpYWxzJ10K LSAgICAgICAgICAgICAgICBkYl9wYXNzd29yZCA9ICcnCi0gICAgICAgICAg ICAgICAgIyBHZXQgdGhlIGRiIHBhc3N3b3JkIGZyb20gY29uZmlnIGZpbGUg Zm9yIGFwcHJvcHJpYXRlIHNlcnZlcgotICAgICAgICAgICAgICAgIGZvciBz cnYgaW4gY29uZmlnX3NlcnZlcnM6Ci0gICAgICAgICAgICAgICAgICAgIGlm IChzcnZbJ25hbWUnXSwgc3J2Wydob3N0J10sIHNydlsnZGJfcG9ydCddKSA9 PSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIGhvc3Qs IGRiX3BvcnQpOgotICAgICAgICAgICAgICAgICAgICAgICAgZGJfcGFzc3dv cmQgPSBzcnZbJ2RiX3Bhc3N3b3JkJ10KLSAgICAgICAgICAgICAgICBpZiBk Yl9wYXNzd29yZDoKLSAgICAgICAgICAgICAgICAgICAgIyBEcm9wIGRhdGFi YXNlCi0gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gPSBnZXRfZGJf Y29ubmVjdGlvbihzZXJ2ZXJfaW5mb1szXSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pbmZv WzRdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGJfcGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaW5mb1sx XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlcnZlcl9pbmZvWzJdKQotCi0gICAgICAgICAgICAgICAg ICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKLSAgICAgICAg ICAgICAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoIlNFTEVDVCBkYi5kYXRu YW1lIEZST00gcGdfZGF0YWJhc2UgZGIiKQotICAgICAgICAgICAgICAgICAg ICBkYXRhYmFzZXMgPSBwZ19jdXJzb3IuZmV0Y2hhbGwoKQotICAgICAgICAg ICAgICAgICAgICBpZiBkYXRhYmFzZXM6Ci0gICAgICAgICAgICAgICAgICAg ICAgICBmb3IgZGIgaW4gZGF0YWJhc2VzOgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbm5lY3Rpb24gPSBnZXRfZGJfY29ubmVjdGlvbihzZXJ2 ZXJfaW5mb1szXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2luZm9bNF0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRiX3Bhc3N3b3JkLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2 ZXJfaW5mb1sxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2luZm9bMl0pCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBEbyBub3QgZHJvcCB0aGUg ZGVmYXVsdCBkYXRhYmFzZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBkYlswXSBub3QgaW4gWyJwb3N0Z3JlcyIsICJ0ZW1wbGF0ZTEiLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InRlbXBsYXRlMCJdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sIGRiWzBdKQotCi0gICAgICAg ICAgICAgICAgICAgICMgRGVsZXRlIHRhYmxlc3BhY2UKLSAgICAgICAgICAg ICAgICAgICAgY29ubmVjdGlvbiA9IGdldF9kYl9jb25uZWN0aW9uKHNlcnZl cl9pbmZvWzNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyX2luZm9bNF0sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYl9w YXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlcnZlcl9pbmZvWzFdLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy X2luZm9bMl0pCi0gICAgICAgICAgICAgICAgICAgIHBnX2N1cnNvciA9IGNv bm5lY3Rpb24uY3Vyc29yKCkKLSAgICAgICAgICAgICAgICAgICAgcGdfY3Vy c29yLmV4ZWN1dGUoIlNFTEVDVCAqIEZST00gcGdfdGFibGVzcGFjZSIpCi0g ICAgICAgICAgICAgICAgICAgIHRhYmxlX3NwYWNlcyA9IHBnX2N1cnNvci5m ZXRjaGFsbCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIHRhYmxlX3NwYWNl czoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0YWJsZXNwYWNlIGlu IHRhYmxlX3NwYWNlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IERvIG5vdCBkZWxldGUgZGVmYXVsdCB0YWJsZSBzcGFjZXMKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiB0YWJsZXNwYWNlWzBdIG5vdCBpbiBb InBnX2RlZmF1bHQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAicGdfZ2xvYmFsIl06Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlc3BhY2VfbmFtZSA9IHRh Ymxlc3BhY2VbMF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBEZWxldGUgdGFibGVzcGFjZQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25uZWN0aW9uID0gZ2V0X2RiX2Nvbm5lY3Rpb24oc2VydmVy X2luZm9bM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaW5mb1s0XSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRiX3Bhc3N3b3JkLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyX2luZm9bMV0sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2 ZXJfaW5mb1syXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVncmVzc2lvbi50YWJsZXNwYWNlX3V0aWxzLmRlbGV0ZV90YWJsZXNwYWNl KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVj dGlvbiwgdGFibGVzcGFjZV9uYW1lKQotCi0gICAgICAgICAgICAgICAgICAg ICMgRGVsZXRlIHJvbGUKLSAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlv biA9IGdldF9kYl9jb25uZWN0aW9uKHNlcnZlcl9pbmZvWzNdLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VydmVyX2luZm9bNF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYl9wYXNzd29yZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl cnZlcl9pbmZvWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2luZm9bMl0pCi0gICAgICAg ICAgICAgICAgICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkK LSAgICAgICAgICAgICAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoIlNFTEVD VCAqIEZST00gcGdfY2F0YWxvZy5wZ19yb2xlcyIpCi0gICAgICAgICAgICAg ICAgICAgIHJvbGVzID0gcGdfY3Vyc29yLmZldGNoYWxsKCkKLSAgICAgICAg ICAgICAgICAgICAgaWYgcm9sZXM6Ci0gICAgICAgICAgICAgICAgICAgICAg ICBmb3Igcm9sZV9uYW1lIGluIHJvbGVzOgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgRG8gbm90IGRlbGV0ZSBkZWZhdWx0IHRhYmxlIHNwYWNl cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJvbGVfbmFtZVsw XSBub3QgaW4gWyJwb3N0Z3JlcyIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVudGVycHJpc2VkYiJd OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlX25hbWUg PSByb2xlX25hbWVbMF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyBEZWxldGUgcm9sZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZWdyZXNzaW9uLnJvbGVzX3V0aWxzLmRlbGV0ZV9yb2xlKGNvbm5l Y3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZV9uYW1lKQotCi0g ICAgICAgICAgICBmb3Igc2VydmVyX2luZm8gaW4gYWxsX3NlcnZlcnM6Ci0g ICAgICAgICAgICAgICAgc2VydmVyX2lkID0gc2VydmVyX2luZm9bNV0KLSAg ICAgICAgICAgICAgICAjIERlbGV0ZSBzZXJ2ZXIKLSAgICAgICAgICAgICAg ICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZV9zZXJ2ZXIodGVz dGVyLCBzZXJ2ZXJfaWQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBleGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2Vw dGlvbiA9ICJFeGNlcHRpb24gd2hpbGUgZGVsZXRpbmcgc2VydmVyOiAlczoi IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBsaW5lOiVz ICVzIiAlXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmls ZV9uYW1lLCBzeXMuZXhjX3RyYWNlYmFjay50Yl9saW5lbm8sCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24pCi0gICAgICAg ICAgICAgICAgICAgIHByaW50KGV4Y2VwdGlvbiwgZmlsZT1zeXMuc3RkZXJy KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBjb25u LmNsb3NlKCkKLSAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4Y2VwdGlvbjoK LSAgICAgICAgZXhjZXB0aW9uID0gIkV4Y2VwdGlvbjogJXM6IGxpbmU6JXMg JXMiICUgKAotICAgICAgICAgICAgZmlsZV9uYW1lLCBzeXMuZXhjX3RyYWNl YmFjay50Yl9saW5lbm8sIGV4Y2VwdGlvbikKLSAgICAgICAgcHJpbnQoZXhj ZXB0aW9uLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHRlc3Rfc2VydmVy cyA9IHJlZ3Jlc3Npb24ucGFyZW50X25vZGVfZGljdFsic2VydmVyIl0gKyBc CisgICAgICAgICAgICAgICAgICAgICAgIHJlZ3Jlc3Npb24ubm9kZV9pbmZv X2RpY3RbInNpZCJdCisgICAgICAgIHRlc3RfZGF0YWJhc2VzID0gcmVncmVz c2lvbi5wYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdICsgXAorICAgICAg ICAgICAgICAgICAgICAgICAgIHJlZ3Jlc3Npb24ubm9kZV9pbmZvX2RpY3Rb ImRpZCJdCisgICAgICAgIHRlc3RfdGFibGVfc3BhY2VzID0gcmVncmVzc2lv bi5wYXJlbnRfbm9kZV9kaWN0WyJ0YWJsZXNwYWNlIl0gKyBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVncmVzc2lvbi5ub2RlX2luZm9fZGlj dFsidHNpZCJdCisgICAgICAgIHRlc3Rfcm9sZXMgPSByZWdyZXNzaW9uLnBh cmVudF9ub2RlX2RpY3RbInJvbGUiXSArIFwKKyAgICAgICAgICAgICAgICAg ICAgIHJlZ3Jlc3Npb24ubm9kZV9pbmZvX2RpY3RbImxyaWQiXQorICAgICAg ICAjIERyb3AgZGF0YWJhc2VzCisgICAgICAgIGZvciBkYXRhYmFzZSBpbiB0 ZXN0X2RhdGFiYXNlczoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24gPSBnZXRf ZGJfc2VydmVyKGRhdGFiYXNlWyJzZXJ2ZXJfaWQiXSkKKyAgICAgICAgICAg IGlmIGNvbm5lY3Rpb246CisgICAgICAgICAgICAgICAgZHJvcF9kYXRhYmFz ZShjb25uZWN0aW9uLCBkYXRhYmFzZVsiZGJfbmFtZSJdKQorICAgICAgICAj IERlbGV0ZSB0YWJsZSBzcGFjZXMKKyAgICAgICAgZm9yIHRhYmxlc3BhY2Ug aW4gdGVzdF90YWJsZV9zcGFjZXM6CisgICAgICAgICAgICBjb25uZWN0aW9u ID0gZ2V0X2RiX3NlcnZlcih0YWJsZXNwYWNlWyJzZXJ2ZXJfaWQiXSkKKyAg ICAgICAgICAgIGlmIGNvbm5lY3Rpb246CisgICAgICAgICAgICAgICAgcmVn cmVzc2lvbi50YWJsZXNwYWNlX3V0aWxzLmRlbGV0ZV90YWJsZXNwYWNlKAor ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLCB0YWJsZXNwYWNlWyJ0 YWJsZXNwYWNlX25hbWUiXSkKKyAgICAgICAgIyBEZWxldGUgcm9sZXMKKyAg ICAgICAgZm9yIHJvbGUgaW4gdGVzdF9yb2xlczoKKyAgICAgICAgICAgIGNv bm5lY3Rpb24gPSBnZXRfZGJfc2VydmVyKHJvbGVbInNlcnZlcl9pZCJdKQor ICAgICAgICAgICAgaWYgY29ubmVjdGlvbjoKKyAgICAgICAgICAgICAgICBy ZWdyZXNzaW9uLnJvbGVzX3V0aWxzLmRlbGV0ZV9yb2xlKGNvbm5lY3Rpb24s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByb2xlWyJyb2xlX25hbWUiXSkKKyAgICAgICAgIyBEZWxldGUg c2VydmVycworICAgICAgICBmb3Igc2VydmVyIGluIHRlc3Rfc2VydmVyczoK KyAgICAgICAgICAgIGRlbGV0ZV9zZXJ2ZXJfd2l0aF9hcGkodGVzdGVyLCBz ZXJ2ZXJbInNlcnZlcl9pZCJdKQorICAgIGV4Y2VwdCBFeGNlcHRpb246Cisg ICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQog ICAgIGZpbmFsbHk6CiAgICAgICAgICMgTG9nb3V0IHRoZSB0ZXN0IGNsaWVu dAogICAgICAgICBsb2dvdXRfdGVzdGVyX2FjY291bnQodGVzdGVyKQo= --94eb2c06fb044f26bd053e45c1b3 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --94eb2c06fb044f26bd053e45c1b3--