Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f3K6Q-0001di-AH for pgadmin-hackers@arkaria.postgresql.org; Tue, 03 Apr 2018 11:27:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1f3K6O-0002Wh-V8 for pgadmin-hackers@arkaria.postgresql.org; Tue, 03 Apr 2018 11:27:48 +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.89) (envelope-from ) id 1f3K6O-0002WX-J6 for pgadmin-hackers@lists.postgresql.org; Tue, 03 Apr 2018 11:27:48 +0000 Received: from mail-ot0-x22a.google.com ([2607:f8b0:4003:c0f::22a]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1f3K6K-0004aF-Uo for pgadmin-hackers@postgresql.org; Tue, 03 Apr 2018 11:27:48 +0000 Received: by mail-ot0-x22a.google.com with SMTP id a14-v6so797403otf.6 for ; Tue, 03 Apr 2018 04:27:44 -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; bh=ImMd+mH+mblgjFkVgfyunDUM4id6r0S86tm7eKtZq60=; b=mMvfMmsQN6E5BrxdCO7Yh6jNwgO4c0S5V41C79OofI5RryH3VLnkwk02lnMjtc/TLc wJEN+cHVldlz9ulANobIOkWKbgxyCGijFC0Tqee62DmofsdmASJdaUSAJG4OpyElSwDy j7x3fZwfacuP+jL9MrKCOPOnK+G3r6S8Es5+0F0ZZ9kzDJLOgY9ngAZIEBeYz/LkDA7l FTgeOZ49wY0XS/eZoB1Y83QsKxEnBL2ZHPwGPEfZ0dzqX8eGQnXXpufDdVtuWc0ECRcV HKgEmCSGaVixKqUdBcF7Q3otgIHxJSowIjiXN+LEcmrv0SoG9GLkoJTE4g2z3CWsWPrG lvDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ImMd+mH+mblgjFkVgfyunDUM4id6r0S86tm7eKtZq60=; b=qitCTD0sFUVlauphrcxFUppwytjAMsg4pu3whwc9F526Ri/ICEJ9M8EhH14wj3Qw9E nmxb5sxVJMaxnIykzL4eSBh6SbS5xzW/EYX0Oihg6z+QpJD6W0EVosU615RRbUGwpP+P W0jQSyzqndSMg7jTiYP/G7IjQ6LFivrsfzC6LkvML9zfP0WXL1DkWdxzfza2PLPlmCJJ euGME60JvnLZkeLr4pHy+0dRvLgPlIhQcp7nvdP17vfMM9KgihGFC5NJfe2a3stHqMJo Kw5WF1tpgkeTxidNLWIjbcSIppsfhv8rWMCshUCf0LxsmCTICEzXuk7DQaOC51lQfQFr vvYg== X-Gm-Message-State: ALQs6tCyHTEPQN87YPulrsBwFYAUC5RXcTRMIdbL9AxotmcZjV6dUuL8 zb6BcYOszmk9jTnbxABjOAi9MkOkUudRGoc2p6p+4A== X-Google-Smtp-Source: AIpwx4+ra62eJQTPOO6cncz4ye9+ZIrFDFdUbRr1CxBgvdQ5B3RjhbjkIW+8lqYdM1dF+VpJvmV6SiXyFfzsmD4tWuc= X-Received: by 2002:a9d:2129:: with SMTP id i38-v6mr8566142otb.210.1522754862185; Tue, 03 Apr 2018 04:27:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.138.6.138 with HTTP; Tue, 3 Apr 2018 04:27:21 -0700 (PDT) From: Murtuza Zabuawala Date: Tue, 3 Apr 2018 16:57:21 +0530 Message-ID: Subject: [pgAdmin4][RM#3235] Code refactoring in Query tool To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000a485f80568effece" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000a485f80568effece Content-Type: multipart/alternative; boundary="000000000000a485f50568effecc" --000000000000a485f50568effecc Content-Type: text/plain; charset="UTF-8" Hi, PFA patch to extract the common code from query tool to handle ajax errors & connection handling, Also added unit tests around extracted code. -- Regards, Murtuza Zabuawala EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --000000000000a485f50568effecc Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

PFA patch to= extract the common code from query tool to handle ajax errors & connec= tion handling, Also added unit tests around extracted code.=C2=A0

--
Regards,Mur= tuza Zabuawala
EnterpriseDB:=C2=A0http://www.enterprisedb.com
= The Enterprise PostgreSQL Company

= --000000000000a485f50568effecc-- --000000000000a485f80568effece Content-Type: application/octet-stream; name="RM_3235.diff" Content-Disposition: attachment; filename="RM_3235.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jfjkwruf0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvaXNfbmV3X3RyYW5z YWN0aW9uX3JlcXVpcmVkLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9pc19u ZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQuanMKaW5kZXggZTAwOTYxMS4uZjViZDJhOSAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9pc19uZXdfdHJhbnNhY3Rpb25f cmVxdWlyZWQuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9pc19uZXdf dHJhbnNhY3Rpb25fcmVxdWlyZWQuanMKQEAgLTYsNiArNiw3IEBACiAvLyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKIC8vCiAvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLworaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKIAogZXhwb3J0 IGZ1bmN0aW9uIGlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCh4aHIpIHsKICAgLyogSWYgcmVz cG9uc2VKU09OIGlzIHVuZGVmaW5lZCB0aGVuIGl0IGNvdWxkIGJlIG9iamVjdCBvZgpAQCAtMjEs MyArMjIsNTUgQEAgZXhwb3J0IGZ1bmN0aW9uIGlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCh4 aHIpIHsKICAgICB4aHIucmVzcG9uc2VKU09OLmluZm8gJiYKICAgICB4aHIucmVzcG9uc2VKU09O LmluZm8gPT09ICdEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFVSVJFRCc7CiB9CisKKy8vIEFsbG93 IHVzIHRvIHJlZGlyZWN0IHRvIGxvZ2luIGRpYWxvZyBhbmQgaWYgcmVxdWlyZWQgdGhlbiByZS1p bml0aWF0ZSB0aGUgdHJhbnNhY3Rpb24KK2V4cG9ydCBmdW5jdGlvbiBoYW5kbGVMb2dpblJlcXVp cmVkQW5kVHJhbnNhY3Rpb25SZXF1aXJlZCgKKyAgcGdBZG1pbiwgaGFuZGxlciwgZXhjZXB0aW9u LCBzdGF0ZVRvU2F2ZSwgc3RhdGVQYXJhbWV0ZXJzLCBjaGVja1RyYW5zYWN0aW9uCispIHsKKyAg c3RhdGVQYXJhbWV0ZXJzID0gc3RhdGVQYXJhbWV0ZXJzICYmIHN0YXRlUGFyYW1ldGVycy5sZW5n dGggPiAwID8gc3RhdGVQYXJhbWV0ZXJzIDogW107CisgIGlmIChwZ0FkbWluLkJyb3dzZXIuVXNl ck1hbmFnZW1lbnQuaXNfcGdhX2xvZ2luX3JlcXVpcmVkKGV4Y2VwdGlvbikpIHsKKyAgICBpZiAo c3RhdGVUb1NhdmUpIHsKKyAgICAgIGhhbmRsZXIuc2F2ZV9zdGF0ZShzdGF0ZVRvU2F2ZSwgc3Rh dGVQYXJhbWV0ZXJzKTsKKyAgICB9CisgICAgcmV0dXJuIHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFu YWdlbWVudC5wZ2FfbG9naW4oKTsKKyAgfQorCisgIGlmKGNoZWNrVHJhbnNhY3Rpb24gJiYgaXNf bmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGV4Y2VwdGlvbikpIHsKKyAgICBpZiAoc3RhdGVUb1Nh dmUpIHsKKyAgICAgIGhhbmRsZXIuc2F2ZV9zdGF0ZShzdGF0ZVRvU2F2ZSwgc3RhdGVQYXJhbWV0 ZXJzKTsKKyAgICB9CisgICAgcmV0dXJuIGhhbmRsZXIuaW5pdF90cmFuc2FjdGlvbigpOworICB9 Cit9CisKKy8vIEFsbG93IHVzIHRvIGhhbmRsZSB0aGUgQUpBWCBlcnJvciBmcm9tIFF1ZXJ5IHRv b2wKK2V4cG9ydCBmdW5jdGlvbiBoYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCisgIHBnQWRtaW4s IGhhbmRsZXIsIGV4Y2VwdGlvbiwgc3RhdGVUb1NhdmUsIHN0YXRlUGFyYW1ldGVycywgY2hlY2tU cmFuc2FjdGlvbgorKSB7CisgIGlmIChleGNlcHRpb24ucmVhZHlTdGF0ZSA9PSAwKSB7CisgICAg cmV0dXJuIGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVj dGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4nKTsKKyAgfQorCisgIGhhbmRsZUxv Z2luUmVxdWlyZWRBbmRUcmFuc2FjdGlvblJlcXVpcmVkKAorICAgIHBnQWRtaW4sIGhhbmRsZXIs IGV4Y2VwdGlvbiwgc3RhdGVUb1NhdmUsIHN0YXRlUGFyYW1ldGVycywgY2hlY2tUcmFuc2FjdGlv bgorICApOworCisgIGxldCBtc2cgPSBleGNlcHRpb24ucmVzcG9uc2VUZXh0OworICBpZiAoZXhj ZXB0aW9uLnJlc3BvbnNlSlNPTiAhPSB1bmRlZmluZWQpIHsKKyAgICBpZihleGNlcHRpb24ucmVz cG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVmaW5lZCkgeworICAgICAgbXNnID0gZXhjZXB0aW9u LnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsKKyAgICB9CisKKyAgICBpZihleGNlcHRpb24uc3RhdHVz ID09IDUwMyAmJiBleGNlcHRpb24ucmVzcG9uc2VKU09OLmluZm8gIT0gdW5kZWZpbmVkICYmCisg ICAgICAgIGV4Y2VwdGlvbi5yZXNwb25zZUpTT04uaW5mbyA9PSAnQ09OTkVDVElPTl9MT1NUJykg eworICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHN0YXRlVG9TYXZl KSB7CisgICAgICAgICAgaGFuZGxlci5zYXZlX3N0YXRlKHN0YXRlVG9TYXZlLCBzdGF0ZVBhcmFt ZXRlcnMpOworICAgICAgICB9CisgICAgICAgIGhhbmRsZXIuaGFuZGxlX2Nvbm5lY3Rpb25fbG9z dChmYWxzZSwgZXhjZXB0aW9uKTsKKyAgICAgIH0pOworICAgIH0KKyAgfQorCisgIHJldHVybiBt c2c7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pz L3NxbGVkaXRvci5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3Fs ZWRpdG9yLmpzCmluZGV4IDkyM2NjZWEuLjhiZmZmYWMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCisrKyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCkBAIC00ODIsMTIgKzQ4Miw5 IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgICAgIH0pOwogICAg ICAgICAgICAgICB9LAogICAgICAgICAgICAgICBlcnJvcjpmdW5jdGlvbihlKSB7Ci0gICAgICAg ICAgICAgICAgaWYgKHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5f cmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIu VXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgICAgIGlmKHRyYW5zYWN0aW9uLmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkgewot ICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdF90cmFuc2FjdGlvbigpOwotICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb24uaGFuZGxlTG9n aW5SZXF1aXJlZEFuZFRyYW5zYWN0aW9uUmVxdWlyZWQoCisgICAgICAgICAgICAgICAgICBwZ0Fk bWluLCBzZWxmLCBlLCBudWxsLCBudWxsLCBudWxsCisgICAgICAgICAgICAgICAgKTsKICAgICAg ICAgICAgICAgfSwKICAgICAgICAgICAgIH0pOwogICAgICAgICAgIH0uYmluZChjdHgpLApAQCAt MTEzOCwxNiArMTEzNSwxMSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAg ICBpZiAodHlwZW9mIGNiID09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgIGNiKCk7CiAgICAg ICAgICAgfQotICAgICAgICAgIGlmIChlLnJlYWR5U3RhdGUgPT0gMCkgewotICAgICAgICAgICAg c2VsZi51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2UsCi0gICAgICAgICAgICAgIGdldHRleHQoJ05v dCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVy IGhhcyBiZWVuIGNsb3NlZC4nKQotICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIHJldHVybjsK LSAgICAgICAgICB9CiAKLSAgICAgICAgICBpZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2Vt ZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgcGdBZG1pbi5Ccm93 c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwotICAgICAgICAgIH0KKyAgICAgICAgICBs ZXQgbXNnID0gdHJhbnNhY3Rpb24uaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAg ICAgcGdBZG1pbiwgc2VsZiwgZSwgbnVsbCwgbnVsbCwgZmFsc2UKKyAgICAgICAgICApOworICAg ICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLCBtc2cpOwogICAgICAgICB9LAog ICAgICAgfSk7CiAgICAgfSwKQEAgLTE5MzEsMTggKzE5MjMsMTIgQEAgZGVmaW5lKCd0b29scy5x dWVyeXRvb2wnLCBbCiAgICAgICAgICAgfQogICAgICAgICB9KQogICAgICAgICAuZmFpbChmdW5j dGlvbih4aHIpIHsKLSAgICAgICAgICBpZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50 LmlzX3BnYV9sb2dpbl9yZXF1aXJlZCh4aHIpKSB7Ci0gICAgICAgICAgICBwZ0FkbWluLkJyb3dz ZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgIGlmKHhoci5yZXNwb25zZUpTT04gJiYKLSAgICAgICAgICAgICAgICB4aHIucmVzcG9u c2VKU09OLnJlc3VsdCkgewotICAgICAgICAgICAgICBhbGVydGlmeS5kbGdHZXRTZXJ2ZXJQYXNz KGdldHRleHQoJ0Nvbm5lY3QgdG8gU2VydmVyJyksCi0gICAgICAgICAgICAgICAgeGhyLnJlc3Bv bnNlSlNPTi5yZXN1bHQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgYWxl cnRpZnkuZGxnR2V0U2VydmVyUGFzcyhnZXR0ZXh0KCdDb25uZWN0IHRvIFNlcnZlcicpLAotICAg ICAgICAgICAgICAgIHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgfQotICAgICAgICAg IH0KKyAgICAgICAgICBsZXQgbXNnID0gdHJhbnNhY3Rpb24uaGFuZGxlUXVlcnlUb29sQWpheEVy cm9yKAorICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwgeGhyLCBudWxsLCBudWxsLCBmYWxzZQor ICAgICAgICAgICk7CisgICAgICAgICAgYWxlcnRpZnkuZGxnR2V0U2VydmVyUGFzcygKKyAgICAg ICAgICAgIGdldHRleHQoJ0Nvbm5lY3QgdG8gU2VydmVyJyksIG1zZworICAgICAgICAgICk7CiAg ICAgICAgIH0pOwogICAgICAgfSwKICAgICAgIC8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBj cmVhdGUgaW5zdGFuY2Ugb2YgU1FMRWRpdG9yVmlldywKQEAgLTIwMDEsMjIgKzE5ODcsMTMgQEAg ZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgICAgICAgc2VsZi5pbml0X2V2 ZW50cygpOwogICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24o anF4KSB7Ci0gICAgICAgICAgICAgICAgdmFyIG1zZyA9ICcnOworICAgICAgICAgICAgICAgIGxl dCBtc2cgPSAnJzsKICAgICAgICAgICAgICAgICBzZWxmLmluaXRfZXZlbnRzKCk7CiAKLSAgICAg ICAgICAgICAgICBpZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dp bl9yZXF1aXJlZChqcXgpKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gcGdBZG1pbi5Ccm93 c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwotICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICBtc2cgPSB0cmFuc2FjdGlvbi5oYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCisg ICAgICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBqcXgsIG51bGwsIG51bGwsIGZhbHNlCisg ICAgICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAgICAgIC8qIEVycm9yIGZyb20gdGhlIHNl cnZlciAqLwotICAgICAgICAgICAgICAgIGlmIChqcXguc3RhdHVzID09IDQxMCB8fCBqcXguc3Rh dHVzID09IDUwMCkgewotICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAg ICAgdmFyIGRhdGEgPSAkLnBhcnNlSlNPTihqcXgucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAg ICAgICAgICAgbXNnID0gZGF0YS5lcnJvcm1zZzsKLSAgICAgICAgICAgICAgICAgIH0gY2F0Y2gg KGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbXNnID0ganF4LnJlc3BvbnNlVGV4dDsKLSAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcGdCcm93 c2VyLnJlcG9ydF9lcnJvcigKICAgICAgICAgICAgICAgICAgIFMoZ2V0dGV4dCgnRXJyb3IgZmV0 Y2hpbmcgU1FMIGZvciBzY3JpcHQ6ICVzLicpKS5zcHJpbnRmKG1zZykudmFsdWUoKQogICAgICAg ICAgICAgICAgICk7CkBAIC0yMTg1LDM3ICsyMTYyLDkgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRv b2wnLCBbCiAgICAgICAgICAgfSwKICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewogICAg ICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlk ZScpOwotICAgICAgICAgICAgaWYgKGUucmVhZHlTdGF0ZSA9PSAwKSB7Ci0gICAgICAgICAgICAg IHNlbGYudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLAotICAgICAgICAgICAgICAgIGdldHRleHQo J05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2Vy dmVyIGhhcyBiZWVuIGNsb3NlZC4nKQotICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICBy ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocGdBZG1pbi5Ccm93c2VyLlVz ZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBz ZWxmLnNhdmVfc3RhdGUoJ19ydW5fcXVlcnknLCBbXSk7Ci0gICAgICAgICAgICAgIHBnQWRtaW4u QnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKLSAgICAgICAgICAgIH0KLQotICAg ICAgICAgICAgaWYodHJhbnNhY3Rpb24uaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7 Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX3J1bl9xdWVyeScsIFtdKTsKLSAgICAg ICAgICAgICAgc2VsZi5pbml0X3RyYW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg ICAgICAgIHZhciBtc2cgPSBlLnJlc3BvbnNlVGV4dDsKLSAgICAgICAgICAgIGlmIChlLnJlc3Bv bnNlSlNPTiAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgaWYoZS5yZXNwb25zZUpTT04u ZXJyb3Jtc2cgIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgbXNnID0gZS5yZXNwb25z ZUpTT04uZXJyb3Jtc2c7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBpZihlLnN0 YXR1cyA9PSA1MDMgJiYgZS5yZXNwb25zZUpTT04uaW5mbyAhPSB1bmRlZmluZWQgJiYKLSAgICAg ICAgICAgICAgICAgIGUucmVzcG9uc2VKU09OLmluZm8gPT0gJ0NPTk5FQ1RJT05fTE9TVCcpIHsK LSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg ICAgc2VsZi5zYXZlX3N0YXRlKCdfcnVuX3F1ZXJ5JywgW10pOwotICAgICAgICAgICAgICAgICAg c2VsZi5oYW5kbGVfY29ubmVjdGlvbl9sb3N0KGZhbHNlLCBlKTsKLSAgICAgICAgICAgICAgICB9 KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCisgICAgICAgICAgICBsZXQgbXNn ID0gdHJhbnNhY3Rpb24uaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgICAgICBw Z0FkbWluLCBzZWxmLCBlLCAnX3J1bl9xdWVyeScsIG51bGwsIHRydWUKKyAgICAgICAgICAgICk7 CiAgICAgICAgICAgICBzZWxmLnVwZGF0ZV9tc2dfaGlzdG9yeShmYWxzZSwgbXNnKTsKICAgICAg ICAgICB9LAogICAgICAgICB9KTsKQEAgLTI4NzEsMzggKzI4MjAsMTAgQEAgZGVmaW5lKCd0b29s cy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0sCiAgICAgICAg ICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICBpZiAoZS5yZWFkeVN0YXRl ID09IDApIHsKLSAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZV9tc2dfaGlzdG9yeShmYWxzZSwK LSAgICAgICAgICAgICAgICAgIGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBv ciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4nKQotICAgICAg ICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICB9Ci0K LSAgICAgICAgICAgICAgaWYgKHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2Ff bG9naW5fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19z YXZlJywgW3ZpZXcsIGNvbnRyb2xsZXIsIHNhdmVfYXNdKTsKLSAgICAgICAgICAgICAgICBwZ0Fk bWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICAgIH0K LQotICAgICAgICAgICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWly ZWQoZSkpIHsKLSAgICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19zYXZlJywgW3ZpZXcs IGNvbnRyb2xsZXIsIHNhdmVfYXNdKTsKLSAgICAgICAgICAgICAgICBzZWxmLmluaXRfdHJhbnNh Y3Rpb24oKTsKLSAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgIHZhciBtc2cgPSBlLnJl c3BvbnNlVGV4dDsKLSAgICAgICAgICAgICAgaWYgKGUucmVzcG9uc2VKU09OICE9IHVuZGVmaW5l ZCkgewotICAgICAgICAgICAgICAgIGlmKGUucmVzcG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVm aW5lZCkgewotICAgICAgICAgICAgICAgICAgbXNnID0gZS5yZXNwb25zZUpTT04uZXJyb3Jtc2c7 Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYoZS5zdGF0dXMgPT0gNTAz ICYmIGUucmVzcG9uc2VKU09OLmluZm8gIT0gdW5kZWZpbmVkICYmCi0gICAgICAgICAgICAgICAg ICAgIGUucmVzcG9uc2VKU09OLmluZm8gPT0gJ0NPTk5FQ1RJT05fTE9TVCcpIHsKLSAgICAgICAg ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNl bGYuc2F2ZV9zdGF0ZSgnX3NhdmUnLCBbdmlldywgY29udHJvbGxlciwgc2F2ZV9hc10pOwotICAg ICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9jb25uZWN0aW9uX2xvc3QoZmFsc2UsIGUpOwot ICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9 Ci0KKyAgICAgICAgICAgICAgbGV0IHN0YXRlUGFyYW1zID0gW3ZpZXcsIGNvbnRyb2xsZXIsIHNh dmVfYXNdOworICAgICAgICAgICAgICBsZXQgbXNnID0gdHJhbnNhY3Rpb24uaGFuZGxlUXVlcnlU b29sQWpheEVycm9yKAorICAgICAgICAgICAgICAgIHBnQWRtaW4sIHNlbGYsIGUsICdfc2F2ZScs IHN0YXRlUGFyYW1zLCB0cnVlCisgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgIHNlbGYu dXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLCBtc2cpOwogICAgICAgICAgICAgfSwKICAgICAgICAg ICB9KTsKQEAgLTMwNDgsMTMgKzI5NjksMTEgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBb CiAgICAgICAgICAgfSwKICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewogICAgICAgICAg ICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwot ICAgICAgICAgICAgaWYgKHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9n aW5fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfc2VsZWN0 X2ZpbGVfaGFuZGxlcicsIFtfZV0pOwotICAgICAgICAgICAgICByZXR1cm4gcGdBZG1pbi5Ccm93 c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwotICAgICAgICAgICAgfQotCi0gICAgICAg ICAgICB2YXIgZXJybXNnID0gJC5wYXJzZUpTT04oZS5yZXNwb25zZVRleHQpLmVycm9ybXNnOwot ICAgICAgICAgICAgYWxlcnRpZnkuZXJyb3IoZXJybXNnKTsKKyAgICAgICAgICAgIGxldCBzdGF0 ZVBhcmFtcyA9IFtfZV07CisgICAgICAgICAgICBsZXQgbXNnID0gdHJhbnNhY3Rpb24uaGFuZGxl UXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX3Nl bGVjdF9maWxlX2hhbmRsZXInLCBzdGF0ZVBhcmFtcywgZmFsc2UKKyAgICAgICAgICAgICk7Cisg ICAgICAgICAgICBhbGVydGlmeS5lcnJvcihtc2cpOwogICAgICAgICAgICAgLy8gaGlkZSBjdXJz b3IKICAgICAgICAgICAgICRidXN5X2ljb25fZGl2LnJlbW92ZUNsYXNzKCdzaG93X3Byb2dyZXNz Jyk7CiAgICAgICAgICAgfSwKQEAgLTMxMDAsMTcgKzMwMTksMTEgQEAgZGVmaW5lKCd0b29scy5x dWVyeXRvb2wnLCBbCiAgICAgICAgICAgfSwKICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkg ewogICAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWlj b246aGlkZScpOwotICAgICAgICAgICAgaWYgKHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVu dC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0 YXRlKCdfc2F2ZV9maWxlX2hhbmRsZXInLCBbX2VdKTsKLSAgICAgICAgICAgICAgcmV0dXJuIHBn QWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKLSAgICAgICAgICAgIH0K LQotICAgICAgICAgICAgdmFyIGVycm1zZyA9ICQucGFyc2VKU09OKGUucmVzcG9uc2VUZXh0KS5l cnJvcm1zZzsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoCi0gICAgICAgICAgICAgIGZ1bmN0aW9u KCkgewotICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmVycm9yKGVycm1zZyk7Ci0gICAgICAgICAg ICAgIH0sIDEwCisgICAgICAgICAgICBsZXQgc3RhdGVQYXJhbXMgPSBbX2VdOworICAgICAgICAg ICAgbGV0IG1zZyA9IHRyYW5zYWN0aW9uLmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKKyAgICAg ICAgICAgICAgcGdBZG1pbiwgc2VsZiwgZSwgJ19zYXZlX2ZpbGVfaGFuZGxlcicsIHN0YXRlUGFy YW1zLCBmYWxzZQogICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGFsZXJ0aWZ5LmVycm9yKG1z Zyk7CiAgICAgICAgICAgfSwKICAgICAgICAgfSk7CiAgICAgICB9LApAQCAtMzIwNiwzNiArMzEx OSw5IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgIH0sCiAgICAgICAg ICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHNlbGYudHJpZ2dlcigncGdhZG1p bi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKLQotICAgICAgICAgICAgaWYgKHBnQWRt aW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkpIHsKLSAg ICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfc2hvd19maWx0ZXInLCBbXSk7Ci0gICAgICAg ICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7 Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmKHRyYW5zYWN0aW9uLmlzX25ld190cmFu c2FjdGlvbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19z aG93X2ZpbHRlcicsIFtdKTsKLSAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdF90cmFuc2Fj dGlvbigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgbXNnOwotICAgICAgICAg ICAgaWYgKGUucmVhZHlTdGF0ZSA9PSAwKSB7Ci0gICAgICAgICAgICAgIG1zZyA9Ci0gICAgICAg ICAgICAgICAgZ2V0dGV4dCgnTm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25u ZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpOwotICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgbXNnID0gZS5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICAg IGlmIChlLnJlc3BvbnNlSlNPTiAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICBpZihl LnJlc3BvbnNlSlNPTi5lcnJvcm1zZyAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAg IG1zZyA9IGUucmVzcG9uc2VKU09OLmVycm9ybXNnOwotICAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICAgICBpZihlLnN0YXR1cyA9PSA1MDMgJiYgZS5yZXNwb25zZUpTT04uaW5mbyAhPSB1 bmRlZmluZWQgJiYKLSAgICAgICAgICAgICAgICAgICAgZS5yZXNwb25zZUpTT04uaW5mbyA9PSAn Q09OTkVDVElPTl9MT1NUJykgewotICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv bigpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfc2hvd19maWx0ZXIn LCBbXSk7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nvbm5lY3Rpb25fbG9zdChm YWxzZSwgZSk7Ci0gICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBtc2cgPSB0cmFuc2Fj dGlvbi5oYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCisgICAgICAgICAgICAgIHBnQWRtaW4sIHNl bGYsIGUsICdfc2hvd19maWx0ZXInLCBudWxsLCB0cnVlCisgICAgICAgICAgICApOwogICAgICAg ICAgICAgc2V0VGltZW91dCgKICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAg ICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnR2V0IEZpbHRlciBFcnJvcicpLCBtc2cpOwpA QCAtMzI5Niw0MiArMzE4MiwxMCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAg ICAgICB9LAogICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICBzZWxm LnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0gICAgICAg ICAgICBpZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1 aXJlZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19pbmNsdWRlX2ZpbHRl cicsIFtdKTsKLSAgICAgICAgICAgICAgcmV0dXJuIHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdl bWVudC5wZ2FfbG9naW4oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYodHJhbnNh Y3Rpb24uaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNl bGYuc2F2ZV9zdGF0ZSgnX2luY2x1ZGVfZmlsdGVyJywgW10pOwotICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5pbml0X3RyYW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg IHNldFRpbWVvdXQoCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg IGlmIChlLnJlYWR5U3RhdGUgPT0gMCkgewotICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxl cnQoZ2V0dGV4dCgnRmlsdGVyIEJ5IFNlbGVjdGlvbiBFcnJvcicpLAotICAgICAgICAgICAgICAg ICAgICBnZXR0ZXh0KCdOb3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rp b24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJykKLSAgICAgICAgICAgICAgICAgICk7 Ci0gICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg ICAgICAgICAgdmFyIG1zZyA9IGUucmVzcG9uc2VUZXh0OwotICAgICAgICAgICAgICAgIGlmIChl LnJlc3BvbnNlSlNPTiAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAgIGlmKGUucmVz cG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgICAgICAgICBt c2cgPSBlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICAgICAgIGlmKGUuc3RhdHVzID09IDUwMyAmJiBlLnJlc3BvbnNlSlNPTi5pbmZvICE9 IHVuZGVmaW5lZCAmJgotICAgICAgICAgICAgICAgICAgICAgIGUucmVzcG9uc2VKU09OLmluZm8g PT0gJ0NPTk5FQ1RJT05fTE9TVCcpIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChm dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19pbmNs dWRlX2ZpbHRlcicsIFtdKTsKLSAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9jb25u ZWN0aW9uX2xvc3QoZmFsc2UsIGUpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBhbGVydGlm eS5hbGVydChnZXR0ZXh0KCdGaWx0ZXIgQnkgU2VsZWN0aW9uIEVycm9yJyksIG1zZyk7Ci0gICAg ICAgICAgICAgIH0sIDEwCisgICAgICAgICAgICBsZXQgbXNnID0gdHJhbnNhY3Rpb24uaGFuZGxl UXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX2lu Y2x1ZGVfZmlsdGVyJywgbnVsbCwgdHJ1ZQogICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGFs ZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0ZpbHRlciBCeSBTZWxlY3Rpb24gRXJyb3InKSwgbXNnKTsK ICAgICAgICAgICB9LAogICAgICAgICB9KTsKICAgICAgIH0sCkBAIC0zMzg3LDQyICszMjQxLDEw IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgIH0sCiAgICAgICAgICAg ZXJyb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1z cWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKLSAgICAgICAgICAgIGlmIChwZ0FkbWluLkJy b3dzZXIuVXNlck1hbmFnZW1lbnQuaXNfcGdhX2xvZ2luX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAg ICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX2V4Y2x1ZGVfZmlsdGVyJywgW10pOwotICAgICAgICAg ICAgICByZXR1cm4gcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwot ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNh Y3Rpb25fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfZXhj bHVkZV9maWx0ZXInLCBbXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXRfdHJhbnNh Y3Rpb24oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2V0VGltZW91dCgKLSAgICAg ICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGUucmVhZHlTdGF0ZSA9 PSAwKSB7Ci0gICAgICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdGaWx0ZXIg RXhjbHVkZSBTZWxlY3Rpb24gRXJyb3InKSwKLSAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgn Tm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2 ZXIgaGFzIGJlZW4gY2xvc2VkLicpCi0gICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAg ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHZhciBt c2cgPSBlLnJlc3BvbnNlVGV4dDsKLSAgICAgICAgICAgICAgICBpZiAoZS5yZXNwb25zZUpTT04g IT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgICBpZihlLnJlc3BvbnNlSlNPTi5lcnJv cm1zZyAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgbXNnID0gZS5yZXNwb25z ZUpTT04uZXJyb3Jtc2c7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBp ZihlLnN0YXR1cyA9PSA1MDMgJiYgZS5yZXNwb25zZUpTT04uaW5mbyAhPSB1bmRlZmluZWQgJiYK LSAgICAgICAgICAgICAgICAgICAgICBlLnJlc3BvbnNlSlNPTi5pbmZvID09ICdDT05ORUNUSU9O X0xPU1QnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0g ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfZXhjbHVkZV9maWx0ZXInLCBb XSk7Ci0gICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfY29ubmVjdGlvbl9sb3N0KGZh bHNlLCBlKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4 dCgnRmlsdGVyIEV4Y2x1ZGUgU2VsZWN0aW9uIEVycm9yJyksIG1zZyk7Ci0gICAgICAgICAgICAg IH0sIDEwCisgICAgICAgICAgICBsZXQgbXNnID0gdHJhbnNhY3Rpb24uaGFuZGxlUXVlcnlUb29s QWpheEVycm9yKAorICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX2V4Y2x1ZGVfZmls dGVyJywgbnVsbCwgdHJ1ZQogICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGFsZXJ0aWZ5LmFs ZXJ0KGdldHRleHQoJ0ZpbHRlciBFeGNsdWRlIFNlbGVjdGlvbiBFcnJvcicpLCBtc2cpOwogICAg ICAgICAgIH0sCiAgICAgICAgIH0pOwogICAgICAgfSwKQEAgLTM0NTcsNDIgKzMyNzksMTAgQEAg ZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgfSwKICAgICAgICAgICBlcnJv cjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVk aXRvcjpsb2FkaW5nLWljb246aGlkZScpOwotICAgICAgICAgICAgaWYgKHBnQWRtaW4uQnJvd3Nl ci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAg ICAgc2VsZi5zYXZlX3N0YXRlKCdfcmVtb3ZlX2ZpbHRlcicsIFtdKTsKLSAgICAgICAgICAgICAg cmV0dXJuIHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKLSAgICAg ICAgICAgIH0KLQotICAgICAgICAgICAgaWYodHJhbnNhY3Rpb24uaXNfbmV3X3RyYW5zYWN0aW9u X3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX3JlbW92ZV9m aWx0ZXInLCBbXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXRfdHJhbnNhY3Rpb24o KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2V0VGltZW91dCgKLSAgICAgICAgICAg ICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGUucmVhZHlTdGF0ZSA9PSAwKSB7 Ci0gICAgICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdSZW1vdmUgRmlsdGVy IEVycm9yJyksCi0gICAgICAgICAgICAgICAgICAgIGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8g dGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3Nl ZC4nKQotICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgbXNnID0gZS5yZXNwb25zZVRl eHQ7Ci0gICAgICAgICAgICAgICAgaWYgKGUucmVzcG9uc2VKU09OICE9IHVuZGVmaW5lZCkgewot ICAgICAgICAgICAgICAgICAgaWYoZS5yZXNwb25zZUpTT04uZXJyb3Jtc2cgIT0gdW5kZWZpbmVk KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9IGUucmVzcG9uc2VKU09OLmVycm9ybXNnOwot ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgaWYoZS5zdGF0dXMgPT0gNTAz ICYmIGUucmVzcG9uc2VKU09OLmluZm8gIT0gdW5kZWZpbmVkICYmCi0gICAgICAgICAgICAgICAg ICAgICAgZS5yZXNwb25zZUpTT04uaW5mbyA9PSAnQ09OTkVDVElPTl9MT1NUJykgewotICAgICAg ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX3JlbW92ZV9maWx0ZXInLCBbXSk7Ci0gICAgICAgICAgICAg ICAgICAgICAgc2VsZi5oYW5kbGVfY29ubmVjdGlvbl9sb3N0KGZhbHNlLCBlKTsKLSAgICAgICAg ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot Ci0gICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnUmVtb3ZlIEZpbHRlciBF cnJvcicpLCBtc2cpOwotICAgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgbXNnID0gdHJh bnNhY3Rpb24uaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgICAgICBwZ0FkbWlu LCBzZWxmLCBlLCAnX3JlbW92ZV9maWx0ZXInLCBudWxsLCB0cnVlCiAgICAgICAgICAgICApOwor ICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnUmVtb3ZlIEZpbHRlciBFcnJvcicp LCBtc2cpOwogICAgICAgICAgIH0sCiAgICAgICAgIH0pOwogICAgICAgfSwKQEAgLTM1MzIsNDIg KzMzMjIsMTAgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgfSwKICAg ICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdw Z2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwotICAgICAgICAgICAgaWYgKHBn QWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkpIHsK LSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfYXBwbHlfZmlsdGVyJywgW10pOwotICAg ICAgICAgICAgICByZXR1cm4gcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dp bigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdf dHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRl KCdfYXBwbHlfZmlsdGVyJywgW10pOwotICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbml0X3Ry YW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNldFRpbWVvdXQoCi0g ICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmIChlLnJlYWR5U3Rh dGUgPT0gMCkgewotICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnQXBw bHkgRmlsdGVyIEVycm9yJyksCi0gICAgICAgICAgICAgICAgICAgIGdldHRleHQoJ05vdCBjb25u ZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBi ZWVuIGNsb3NlZC4nKQotICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgIHJl dHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgbXNnID0gZS5y ZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICAgICAgaWYgKGUucmVzcG9uc2VKU09OICE9IHVuZGVm aW5lZCkgewotICAgICAgICAgICAgICAgICAgaWYoZS5yZXNwb25zZUpTT04uZXJyb3Jtc2cgIT0g dW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9IGUucmVzcG9uc2VKU09OLmVy cm9ybXNnOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgaWYoZS5zdGF0 dXMgPT0gNTAzICYmIGUucmVzcG9uc2VKU09OLmluZm8gIT0gdW5kZWZpbmVkICYmCi0gICAgICAg ICAgICAgICAgICAgICAgZS5yZXNwb25zZUpTT04uaW5mbyA9PSAnQ09OTkVDVElPTl9MT1NUJykg ewotICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX2FwcGx5X2ZpbHRlcicsIFtdKTsKLSAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9jb25uZWN0aW9uX2xvc3QoZmFsc2UsIGUpOwot ICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdBcHBseSBG aWx0ZXIgRXJyb3InKSwgbXNnKTsKLSAgICAgICAgICAgICAgfSwgMTAKKyAgICAgICAgICAgIGxl dCBtc2cgPSB0cmFuc2FjdGlvbi5oYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCisgICAgICAgICAg ICAgIHBnQWRtaW4sIHNlbGYsIGUsICdfYXBwbHlfZmlsdGVyJywgbnVsbCwgdHJ1ZQogICAgICAg ICAgICAgKTsKKyAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0FwcGx5IEZpbHRl ciBFcnJvcicpLCBtc2cpOwogICAgICAgICAgIH0sCiAgICAgICAgIH0pOwogICAgICAgfSwKQEAg LTM2ODcsNDIgKzM0NDUsMTAgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAg ICAgfSwKICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgc2VsZi50 cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwotICAgICAgICAg ICAgaWYgKHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWly ZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfc2V0X2xpbWl0JywgW10p OwotICAgICAgICAgICAgICByZXR1cm4gcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBn YV9sb2dpbigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZih0cmFuc2FjdGlvbi5p c19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZl X3N0YXRlKCdfc2V0X2xpbWl0JywgW10pOwotICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbml0 X3RyYW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNldFRpbWVvdXQo Ci0gICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmIChlLnJlYWR5 U3RhdGUgPT0gMCkgewotICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgn Q2hhbmdlIGxpbWl0IEVycm9yJyksCi0gICAgICAgICAgICAgICAgICAgIGdldHRleHQoJ05vdCBj b25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhh cyBiZWVuIGNsb3NlZC4nKQotICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAg IHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgbXNnID0g ZS5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICAgICAgaWYgKGUucmVzcG9uc2VKU09OICE9IHVu ZGVmaW5lZCkgewotICAgICAgICAgICAgICAgICAgaWYoZS5yZXNwb25zZUpTT04uZXJyb3Jtc2cg IT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9IGUucmVzcG9uc2VKU09O LmVycm9ybXNnOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgaWYoZS5z dGF0dXMgPT0gNTAzICYmIGUucmVzcG9uc2VKU09OLmluZm8gIT0gdW5kZWZpbmVkICYmCi0gICAg ICAgICAgICAgICAgICAgICAgZS5yZXNwb25zZUpTT04uaW5mbyA9PSAnQ09OTkVDVElPTl9MT1NU JykgewotICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX3NldF9saW1pdCcsIFtdKTsKLSAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9jb25uZWN0aW9uX2xvc3QoZmFsc2UsIGUpOwot ICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdDaGFuZ2Ug bGltaXQgRXJyb3InKSwgbXNnKTsKLSAgICAgICAgICAgICAgfSwgMTAKKyAgICAgICAgICAgIGxl dCBtc2cgPSB0cmFuc2FjdGlvbi5oYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCisgICAgICAgICAg ICAgIHBnQWRtaW4sIHNlbGYsIGUsICdfc2V0X2xpbWl0JywgbnVsbCwgdHJ1ZQogICAgICAgICAg ICAgKTsKKyAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0NoYW5nZSBsaW1pdCBF cnJvcicpLCBtc2cpOwogICAgICAgICAgIH0sCiAgICAgICAgIH0pOwogICAgICAgfSwKQEAgLTM4 NDYsMjMgKzM1NzIsOSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICBl cnJvcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgc2VsZi5kaXNhYmxlX3Rvb2xfYnV0dG9u cyhmYWxzZSk7CiAKLSAgICAgICAgICAgIGlmIChlLnJlYWR5U3RhdGUgPT0gMCkgewotICAgICAg ICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdDYW5jZWwgUXVlcnkgRXJyb3InKSwKLSAg ICAgICAgICAgICAgICBnZXR0ZXh0KCdOb3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhl IGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJykKLSAgICAgICAgICAg ICAgKTsKLSAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg ICBpZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJl ZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19jYW5jZWxfcXVlcnknLCBb XSk7Ci0gICAgICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQu cGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBtc2cgPSBlLnJl c3BvbnNlVGV4dDsKLSAgICAgICAgICAgIGlmIChlLnJlc3BvbnNlSlNPTiAhPSB1bmRlZmluZWQg JiYKLSAgICAgICAgICAgICAgZS5yZXNwb25zZUpTT04uZXJyb3Jtc2cgIT0gdW5kZWZpbmVkKQot ICAgICAgICAgICAgICBtc2cgPSBlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsKLQorICAgICAgICAg ICAgbGV0IG1zZyA9IHRyYW5zYWN0aW9uLmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKKyAgICAg ICAgICAgICAgcGdBZG1pbiwgc2VsZiwgZSwgJ19jYW5jZWxfcXVlcnknLCBudWxsLCBmYWxzZQor ICAgICAgICAgICAgKTsKICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0NhbmNl bCBRdWVyeSBFcnJvcicpLCBtc2cpOwogICAgICAgICAgIH0sCiAgICAgICAgIH0pOwpAQCAtMzkw NywzOCArMzYxOSwxMCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICAg ICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnQXV0byBSb2xsYmFjayBFcnJvcicpLCByZXMuZGF0 YS5yZXN1bHQpOwogICAgICAgICAgIH0sCiAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsK LSAgICAgICAgICAgIGlmIChlLnJlYWR5U3RhdGUgPT0gMCkgewotICAgICAgICAgICAgICBhbGVy dGlmeS5hbGVydChnZXR0ZXh0KCdBdXRvIFJvbGxiYWNrIEVycm9yJyksCi0gICAgICAgICAgICAg ICAgZ2V0dGV4dCgnTm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0aW9u IHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpCi0gICAgICAgICAgICAgICk7Ci0gICAg ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHBnQWRt aW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkpIHsKLSAg ICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfYXV0b19yb2xsYmFjaycsIFtdKTsKLSAgICAg ICAgICAgICAgcmV0dXJuIHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4o KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYodHJhbnNhY3Rpb24uaXNfbmV3X3Ry YW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgn X2F1dG9fcm9sbGJhY2snLCBbXSk7Ci0gICAgICAgICAgICAgIHNlbGYuaW5pdF90cmFuc2FjdGlv bigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgbXNnID0gZS5yZXNwb25zZVRl eHQ7Ci0gICAgICAgICAgICBpZiAoZS5yZXNwb25zZUpTT04gIT0gdW5kZWZpbmVkKSB7Ci0gICAg ICAgICAgICAgIGlmKGUucmVzcG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVmaW5lZCkgewotICAg ICAgICAgICAgICAgIG1zZyA9IGUucmVzcG9uc2VKU09OLmVycm9ybXNnOwotICAgICAgICAgICAg ICB9Ci0KLSAgICAgICAgICAgICAgaWYoZS5zdGF0dXMgPT0gNTAzICYmIGUucmVzcG9uc2VKU09O LmluZm8gIT0gdW5kZWZpbmVkICYmCi0gICAgICAgICAgICAgICAgICBlLnJlc3BvbnNlSlNPTi5p bmZvID09ICdDT05ORUNUSU9OX0xPU1QnKSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChm dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX2F1dG9fcm9s bGJhY2snLCBbXSk7Ci0gICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9jb25uZWN0aW9uX2xv c3QoZmFsc2UsIGUpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICB9CiAKKyAgICAgICAgICAgIGxldCBtc2cgPSB0cmFuc2FjdGlvbi5oYW5kbGVRdWVy eVRvb2xBamF4RXJyb3IoCisgICAgICAgICAgICAgIHBnQWRtaW4sIHNlbGYsIGUsICdfYXV0b19y b2xsYmFjaycsIG51bGwsIHRydWUKKyAgICAgICAgICAgICk7CiAgICAgICAgICAgICBhbGVydGlm eS5hbGVydChnZXR0ZXh0KCdBdXRvIFJvbGxiYWNrIEVycm9yJyksIG1zZyk7CiAgICAgICAgICAg fSwKICAgICAgICAgfSk7CkBAIC0zOTY4LDM4ICszNjUyLDkgQEAgZGVmaW5lKCd0b29scy5xdWVy eXRvb2wnLCBbCiAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0F1dG8gQ29t bWl0IEVycm9yJyksIHJlcy5kYXRhLnJlc3VsdCk7CiAgICAgICAgICAgfSwKICAgICAgICAgICBl cnJvcjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgaWYgKGUucmVhZHlTdGF0ZSA9PSAwKSB7 Ci0gICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0F1dG8gQ29tbWl0IEVycm9y JyksCi0gICAgICAgICAgICAgICAgZ2V0dGV4dCgnTm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVy IG9yIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpCi0gICAg ICAgICAgICAgICk7Ci0gICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAg ICAgICAgICAgaWYgKHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5f cmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfYXV0b19jb21t aXQnLCBbXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFn ZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmKHRyYW5z YWN0aW9uLmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBz ZWxmLnNhdmVfc3RhdGUoJ19hdXRvX2NvbW1pdCcsIFtdKTsKLSAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuaW5pdF90cmFuc2FjdGlvbigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2 YXIgbXNnID0gZS5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICBpZiAoZS5yZXNwb25zZUpTT04g IT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgIGlmKGUucmVzcG9uc2VKU09OLmVycm9ybXNn ICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgICAgIG1zZyA9IGUucmVzcG9uc2VKU09OLmVy cm9ybXNnOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgaWYoZS5zdGF0dXMgPT0g NTAzICYmIGUucmVzcG9uc2VKU09OLmluZm8gIT0gdW5kZWZpbmVkICYmCi0gICAgICAgICAgICAg ICAgICBlLnJlc3BvbnNlSlNPTi5pbmZvID09ICdDT05ORUNUSU9OX0xPU1QnKSB7Ci0gICAgICAg ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgIHNlbGYu c2F2ZV9zdGF0ZSgnX2F1dG9fY29tbWl0JywgW10pOwotICAgICAgICAgICAgICAgICAgc2VsZi5o YW5kbGVfY29ubmVjdGlvbl9sb3N0KGZhbHNlLCBlKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCisgICAgICAgICAgICBsZXQgbXNnID0gdHJh bnNhY3Rpb24uaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgICAgICBwZ0FkbWlu LCBzZWxmLCBlLCAnX2F1dG9fY29tbWl0JywgbnVsbCwgdHJ1ZQorICAgICAgICAgICAgKTsKICAg ICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0F1dG8gQ29tbWl0IEVycm9yJyksIG1z Zyk7CiAgICAgICAgICAgfSwKICAgICAgICAgfSk7CkBAIC00MDM2LDIxICszNjkxLDEwIEBAIGRl ZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgfQogICAgICAgICAgIH0sCiAg ICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsKLQotICAgICAgICAgICAgaWYgKHBnQWRtaW4u QnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkpIHsKLSAgICAg ICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfZXhwbGFpbl92ZXJib3NlJywgW10pOwotICAgICAg ICAgICAgICByZXR1cm4gcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigp OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdfdHJh bnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdf ZXhwbGFpbl92ZXJib3NlJywgW10pOwotICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbml0X3Ry YW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0 KGdldHRleHQoJ0V4cGxhaW4gb3B0aW9ucyBlcnJvcicpLAotICAgICAgICAgICAgICBnZXR0ZXh0 KCdFcnJvciBvY2N1cnJlZCB3aGlsZSBzZXR0aW5nIHZlcmJvc2Ugb3B0aW9uIGluIGV4cGxhaW4u JykKKyAgICAgICAgICAgIGxldCBtc2cgPSB0cmFuc2FjdGlvbi5oYW5kbGVRdWVyeVRvb2xBamF4 RXJyb3IoCisgICAgICAgICAgICAgIHBnQWRtaW4sIHNlbGYsIGUsICdfZXhwbGFpbl92ZXJib3Nl JywgbnVsbCwgdHJ1ZQogICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg ICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0V4cGxhaW4gb3B0aW9ucyBlcnJvcicpLCBt c2cpOwogICAgICAgICAgIH0sCiAgICAgICAgIH0pOwogICAgICAgfSwKQEAgLTQwODYsMTkgKzM3 MzAsMTAgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgICB9CiAgICAg ICAgICAgfSwKICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgaWYg KHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkp IHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfZXhwbGFpbl9jb3N0cycsIFtdKTsK LSAgICAgICAgICAgICAgcmV0dXJuIHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2Ff bG9naW4oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYodHJhbnNhY3Rpb24uaXNf bmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9z dGF0ZSgnX2V4cGxhaW5fY29zdHMnLCBbXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBzZWxmLmlu aXRfdHJhbnNhY3Rpb24oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYWxlcnRpZnku YWxlcnQoZ2V0dGV4dCgnRXhwbGFpbiBvcHRpb25zIGVycm9yJyksCi0gICAgICAgICAgICAgIGdl dHRleHQoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIHNldHRpbmcgY29zdHMgb3B0aW9uIGluIGV4cGxh aW4uJykKKyAgICAgICAgICAgIGxldCBtc2cgPSB0cmFuc2FjdGlvbi5oYW5kbGVRdWVyeVRvb2xB amF4RXJyb3IoCisgICAgICAgICAgICAgIHBnQWRtaW4sIHNlbGYsIGUsICdfZXhwbGFpbl9jb3N0 cycsIG51bGwsIHRydWUKICAgICAgICAgICAgICk7CisgICAgICAgICAgICBhbGVydGlmeS5hbGVy dChnZXR0ZXh0KCdFeHBsYWluIG9wdGlvbnMgZXJyb3InKSwgbXNnKTsKICAgICAgICAgICB9LAog ICAgICAgICB9KTsKICAgICAgIH0sCkBAIC00MTM0LDE5ICszNzY5LDEwIEBAIGRlZmluZSgndG9v bHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgfQogICAgICAgICAgIH0sCiAgICAgICAgICAg ZXJyb3I6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGlmIChwZ0FkbWluLkJyb3dzZXIuVXNl ck1hbmFnZW1lbnQuaXNfcGdhX2xvZ2luX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNl bGYuc2F2ZV9zdGF0ZSgnX2V4cGxhaW5fYnVmZmVycycsIFtdKTsKLSAgICAgICAgICAgICAgcmV0 dXJuIHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKLSAgICAgICAg ICAgIH0KLQotICAgICAgICAgICAgaWYodHJhbnNhY3Rpb24uaXNfbmV3X3RyYW5zYWN0aW9uX3Jl cXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX2V4cGxhaW5fYnVm ZmVycycsIFtdKTsKLSAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdF90cmFuc2FjdGlvbigp OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdF eHBsYWluIG9wdGlvbnMgZXJyb3InKSwKLSAgICAgICAgICAgICAgZ2V0dGV4dCgnRXJyb3Igb2Nj dXJyZWQgd2hpbGUgc2V0dGluZyBidWZmZXJzIG9wdGlvbiBpbiBleHBsYWluLicpCisgICAgICAg ICAgICBsZXQgbXNnID0gdHJhbnNhY3Rpb24uaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAg ICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX2V4cGxhaW5fYnVmZmVycycsIG51bGwsIHRy dWUKICAgICAgICAgICAgICk7CisgICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdF eHBsYWluIG9wdGlvbnMgZXJyb3InKSwgbXNnKTsKICAgICAgICAgICB9LAogICAgICAgICB9KTsK ICAgICAgIH0sCkBAIC00MTgxLDE5ICszODA3LDEwIEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29s JywgWwogICAgICAgICAgICAgfQogICAgICAgICAgIH0sCiAgICAgICAgICAgZXJyb3I6IGZ1bmN0 aW9uKGUpIHsKLSAgICAgICAgICAgIGlmIChwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQu aXNfcGdhX2xvZ2luX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0 ZSgnX2V4cGxhaW5fdGltaW5nJywgW10pOwotICAgICAgICAgICAgICByZXR1cm4gcGdBZG1pbi5C cm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwotICAgICAgICAgICAgfQotCi0gICAg ICAgICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsK LSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfZXhwbGFpbl90aW1pbmcnLCBbXSk7Ci0g ICAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKLSAgICAgICAgICAg IH0KLQotICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnRXhwbGFpbiBvcHRpb25z IGVycm9yJyksCi0gICAgICAgICAgICAgIGdldHRleHQoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIHNl dHRpbmcgdGltaW5nIG9wdGlvbiBpbiBleHBsYWluLicpCisgICAgICAgICAgICBsZXQgbXNnID0g dHJhbnNhY3Rpb24uaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgICAgICBwZ0Fk bWluLCBzZWxmLCBlLCAnX2V4cGxhaW5fdGltaW5nJywgbnVsbCwgdHJ1ZQogICAgICAgICAgICAg KTsKKyAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0V4cGxhaW4gb3B0aW9ucyBl cnJvcicpLCBtc2cpOwogICAgICAgICAgIH0sCiAgICAgICAgIH0pOwogICAgICAgfSwKQEAgLTQy OTUsMjEgKzM5MTIsMTEgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAg ICB9CiAgICAgICAgICAgfSwKICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewotICAgICAg ICAgICAgaWYgKHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVx dWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdnZXRfcHJlZmVyZW5j ZXMnLCBbXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFn ZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmKHRyYW5z YWN0aW9uLmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBz ZWxmLnNhdmVfc3RhdGUoJ2dldF9wcmVmZXJlbmNlcycsIFtdKTsKLSAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuaW5pdF90cmFuc2FjdGlvbigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg ICB1cGRhdGVVSSgpOwotICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgICAg IGdldHRleHQoJ0dldCBQcmVmZXJlbmNlcyBlcnJvcicpLAotICAgICAgICAgICAgICBnZXR0ZXh0 KCdFcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIHF1ZXJ5IHRvb2wgb3B0aW9ucy4nKQorICAg ICAgICAgICAgbGV0IG1zZyA9IHRyYW5zYWN0aW9uLmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigK KyAgICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwgZSwgJ2dldF9wcmVmZXJlbmNlcycsIG51bGws IHRydWUKICAgICAgICAgICAgICk7CisgICAgICAgICAgICB1cGRhdGVVSSgpOworICAgICAgICAg ICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnR2V0IFByZWZlcmVuY2VzIGVycm9yJyksIG1zZyk7 CiAgICAgICAgICAgfSwKICAgICAgICAgfSk7CiAgICAgICB9LApkaWZmIC0tZ2l0IGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVk X3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9pc19uZXdfdHJh bnNhY3Rpb25fcmVxdWlyZWRfc3BlYy5qcwppbmRleCA5N2QxYmM1Li4yZmIxZjQ1IDEwMDY0NAot LS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9pc19uZXdfdHJhbnNhY3Rp b25fcmVxdWlyZWRfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVk aXRvci9pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWRfc3BlYy5qcwpAQCAtNyw3ICs3LDEwIEBA CiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotaW1wb3J0IHtpc19uZXdfdHJhbnNhY3Rpb25fcmVx dWlyZWR9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9pc19uZXdf dHJhbnNhY3Rpb25fcmVxdWlyZWQnOworaW1wb3J0IHsKKyAgaXNfbmV3X3RyYW5zYWN0aW9uX3Jl cXVpcmVkLAorICBoYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IKK30gZnJvbSAnLi4vLi4vLi4vcGdh ZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2lzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCc7CiAK IGRlc2NyaWJlKCcjaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkJywgKCkgPT4gewogICBkZXNj cmliZSgnd2hlbiBzdGF0dXMgaXMgbm90IDQwNCcsICgpID0+IHsKQEAgLTYzLDMgKzY2LDEyNiBA QCBkZXNjcmliZSgnI2lzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCcsICgpID0+IHsKICAgICB9 KTsKICAgfSk7CiB9KTsKKworCitkZXNjcmliZSgnI2hhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcics ICgpID0+IHsKKyAgbGV0IHNxbEVkaXRvckhhbmRsZXIsCisgICAgZXhjZXB0aW9uU3B5LCBzdGF0 ZVRvU2F2ZSwKKyAgICBzdGF0ZVBhcmFtZXRlcnMsIGNoZWNrVHJhbnNhY3Rpb24sIFVzZXJNYW5h Z2VtZW50TW9jaywKKyAgICBwZ0Jyb3dzZXJNb2NrOworCisgICAgYmVmb3JlRWFjaCgoKSA9PiB7 CisgICAgICBzdGF0ZVRvU2F2ZSA9ICd0ZXN0U3RhdGUnOworICAgICAgc3RhdGVQYXJhbWV0ZXJz ID0gW107CisgICAgICBjaGVja1RyYW5zYWN0aW9uID0gZmFsc2U7CisgICAgICBzcWxFZGl0b3JI YW5kbGVyID0gamFzbWluZS5jcmVhdGVTcHlPYmooCisgICAgICAgICdoYW5kbGVyJywgWydpbml0 X3RyYW5zYWN0aW9uJywgJ3NhdmVfc3RhdGUnLCAnaGFuZGxlX2Nvbm5lY3Rpb25fbG9zdCddCisg ICAgICApOworICAgICAgZXhjZXB0aW9uU3B5ID0geworICAgICAgICByZWFkeVN0YXRlOiAwLAor ICAgICAgICBzdGF0dXM6IDQwNCwKKyAgICAgICAgZGF0YTogeworICAgICAgICAgIGluZm86ICdD T05ORUNUSU9OX0xPU1QnLAorICAgICAgICB9LAorICAgICAgfTsKKyAgICAgIHBnQnJvd3Nlck1v Y2sgPSB7CisgICAgICAgICdCcm93c2VyJzogeworICAgICAgICAgICdVc2VyTWFuYWdlbWVudCc6 IGphc21pbmUuY3JlYXRlU3B5T2JqKCdVc2VyTWFuYWdlbWVudCcsIFsnaXNfcGdhX2xvZ2luX3Jl cXVpcmVkJywgJ3BnYV9sb2dpbiddKQorICAgICAgICB9CisgICAgICB9OworICAgIH0pOworCisg IGRlc2NyaWJlKCd3aGVuIHJlYWR5IHN0YXRlIGlzIDAnLCAoKSA9PiB7CisgICAgaXQoJ3Nob3Vs ZCByZXR1cm4gY29ubmVjdGlvbicsICgpID0+IHsKKyAgICAgIGV4cGVjdCgKKyAgICAgICAgaGFu ZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgIHBnQnJvd3Nlck1vY2ssIHNxbEVkaXRv ckhhbmRsZXIsIGV4Y2VwdGlvblNweSwgc3RhdGVUb1NhdmUsCisgICAgICAgICAgc3RhdGVQYXJh bWV0ZXJzLCBjaGVja1RyYW5zYWN0aW9uCisgICAgICAgICkKKyAgICAgICkudG9CZSgnTm90IGNv bm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFz IGJlZW4gY2xvc2VkLicpOworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnd2hlbiB0aGVy ZSBpcyBhbiBhamF4IGVycm9yIGR1ZSB0byBsb2dpbiBpcyByZXF1aXJlZCcsICgpID0+IHsKKyAg ICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGV4Y2VwdGlvblNweS5yZWFkeVN0YXRlID0gMTsK KyAgICAgIGV4Y2VwdGlvblNweS5zdGF0dXMgPSA0MDE7CisgICAgICBleGNlcHRpb25TcHkuZGF0 YS5pbmZvID0gJ1BHQURNSU5fTE9HSU5fUkVRVUlSRUQnOworICAgICAgcGdCcm93c2VyTW9jay5C cm93c2VyLlVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJlZC5hbmQucmV0dXJuVmFs dWUodHJ1ZSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHNhdmUgdGhlIGN1cnJlbnQgc3Rh dGUgYW5kIGNhbGwgbG9naW4gaGFuZGxlcicsICgpID0+IHsKKyAgICAgIGhhbmRsZVF1ZXJ5VG9v bEFqYXhFcnJvcigKKyAgICAgICAgcGdCcm93c2VyTW9jaywgc3FsRWRpdG9ySGFuZGxlciwgZXhj ZXB0aW9uU3B5LCBzdGF0ZVRvU2F2ZSwKKyAgICAgICAgc3RhdGVQYXJhbWV0ZXJzLCBjaGVja1Ry YW5zYWN0aW9uCisgICAgICApOworICAgICAgZXhwZWN0KHNxbEVkaXRvckhhbmRsZXIuc2F2ZV9z dGF0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoc3RhdGVUb1NhdmUsIHN0YXRlUGFyYW1ldGVycyk7 CisgICAgICBleHBlY3QocGdCcm93c2VyTW9jay5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9s b2dpbikudG9IYXZlQmVlbkNhbGxlZCgpOworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgn d2hlbiB0aGVyZSBpcyBhbiBhamF4IGVycm9yIGFuZCBuZXcgdHJhbnNhY3Rpb24gaW5pdGlhbGl6 YXRpb24gcmVxdWlyZWQnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBl eGNlcHRpb25TcHkucmVhZHlTdGF0ZSA9IDE7CisgICAgICBleGNlcHRpb25TcHkuc3RhdHVzID0g NDA0OworICAgICAgZXhjZXB0aW9uU3B5LmRhdGEuaW5mbyA9ICdEQVRBR1JJRF9UUkFOU0FDVElP Tl9SRVFVSVJFRCc7CisgICAgICBwZ0Jyb3dzZXJNb2NrLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQu aXNfcGdhX2xvZ2luX3JlcXVpcmVkLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7CisgICAgICBjaGVj a1RyYW5zYWN0aW9uID0gdHJ1ZTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgc2F2ZSB0aGUg Y3VycmVudCBzdGF0ZSBhbmQgY2FsbCBsb2dpbiBoYW5kbGVyJywgKCkgPT4geworICAgICAgaGFu ZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICBwZ0Jyb3dzZXJNb2NrLCBzcWxFZGl0b3JI YW5kbGVyLCBleGNlcHRpb25TcHksIHN0YXRlVG9TYXZlLAorICAgICAgICBzdGF0ZVBhcmFtZXRl cnMsIGNoZWNrVHJhbnNhY3Rpb24KKyAgICAgICk7CisgICAgICBleHBlY3QocGdCcm93c2VyTW9j ay5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbikubm90LnRvSGF2ZUJlZW5DYWxsZWQo KTsKKyAgICAgIGV4cGVjdChzcWxFZGl0b3JIYW5kbGVyLnNhdmVfc3RhdGUpLnRvSGF2ZUJlZW5D YWxsZWRXaXRoKHN0YXRlVG9TYXZlLCBzdGF0ZVBhcmFtZXRlcnMpOworICAgICAgZXhwZWN0KHNx bEVkaXRvckhhbmRsZXIuaW5pdF90cmFuc2FjdGlvbikudG9IYXZlQmVlbkNhbGxlZCgpOworICAg IH0pOworICB9KTsKKworICBkZXNjcmliZSgnd2hlbiB0aGVyZSBpcyBhbiBhamF4IGVycm9yIGR1 ZSB0byBkYXRhYmFzZSBjb25uZWN0aW9uIGhhcyBiZWVuIGxvc3QnLCAoKSA9PiB7CisgICAgYmVm b3JlRWFjaCgoKSA9PiB7CisgICAgICBleGNlcHRpb25TcHkucmVhZHlTdGF0ZSA9IDE7CisgICAg ICBleGNlcHRpb25TcHkuc3RhdHVzID0gNTAzOworICAgICAgZXhjZXB0aW9uU3B5LnJlc3BvbnNl SlNPTiA9IHsKKyAgICAgICAgJ2luZm8nOiAnQ09OTkVDVElPTl9MT1NUJworICAgICAgfTsKKyAg ICAgIHBnQnJvd3Nlck1vY2suQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVx dWlyZWQuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsKKyAgICAgIGNoZWNrVHJhbnNhY3Rpb24gPSBm YWxzZTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgc2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBh bmQgY2FsbCBjb25uZWN0aW9uIGxvc3QgaGFuZGxlcicsIChkb25lKSA9PiB7CisgICAgICBoYW5k bGVRdWVyeVRvb2xBamF4RXJyb3IoCisgICAgICAgIHBnQnJvd3Nlck1vY2ssIHNxbEVkaXRvckhh bmRsZXIsIGV4Y2VwdGlvblNweSwgc3RhdGVUb1NhdmUsCisgICAgICAgIHN0YXRlUGFyYW1ldGVy cywgY2hlY2tUcmFuc2FjdGlvbgorICAgICAgKTsKKyAgICAgIGV4cGVjdChwZ0Jyb3dzZXJNb2Nr LkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgp OworICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIGV4cGVjdChzcWxFZGl0b3JIYW5k bGVyLnNhdmVfc3RhdGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHN0YXRlVG9TYXZlLCBzdGF0ZVBh cmFtZXRlcnMpOworICAgICAgICBleHBlY3Qoc3FsRWRpdG9ySGFuZGxlci5oYW5kbGVfY29ubmVj dGlvbl9sb3N0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChmYWxzZSwgZXhjZXB0aW9uU3B5KTsKKyAg ICAgICAgZG9uZSgpOworICAgICAgfSwgMCk7CisgICAgfSk7CisgIH0pOworCisgIGRlc2NyaWJl KCd3aGVuIHRoZXJlIGlzIGFuIGFqYXggZXJyb3IgZHVlIHRvIHVua25vd24gcmVhc29uJywgKCkg PT4geworICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgZXhjZXB0aW9uU3B5LnJlYWR5U3Rh dGUgPSAxOworICAgICAgZXhjZXB0aW9uU3B5LnN0YXR1cyA9IDgwMzsKKyAgICAgIGV4Y2VwdGlv blNweS5yZXNwb25zZVRleHQgPSAnYWpheCBmYWlsZWQgd2l0aCB1bmtub3duIHJlYXNvbic7Cisg ICAgICBwZ0Jyb3dzZXJNb2NrLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQuaXNfcGdhX2xvZ2luX3Jl cXVpcmVkLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7CisgICAgICBjaGVja1RyYW5zYWN0aW9uID0g ZmFsc2U7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJldHVybiBwcm9wZXIgZXJyb3IgbWVz c2FnZSBmcm9tIGFqYXggZXhjZXB0aW9uJywgKCkgPT4geworICAgICAgZXhwZWN0KAorICAgICAg ICBoYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCisgICAgICAgICAgcGdCcm93c2VyTW9jaywgc3Fs RWRpdG9ySGFuZGxlciwgZXhjZXB0aW9uU3B5LCBzdGF0ZVRvU2F2ZSwKKyAgICAgICAgICBzdGF0 ZVBhcmFtZXRlcnMsIGNoZWNrVHJhbnNhY3Rpb24KKyAgICAgICAgKQorICAgICAgKS50b0JlKCdh amF4IGZhaWxlZCB3aXRoIHVua25vd24gcmVhc29uJyk7CisgICAgfSk7CisgIH0pOworCit9KTsK --000000000000a485f80568effece--