Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l6uZU-0000Uc-Jc for pgadmin-hackers@arkaria.postgresql.org; Tue, 02 Feb 2021 12:14:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l6uZS-0004b3-QH for pgadmin-hackers@arkaria.postgresql.org; Tue, 02 Feb 2021 12:14:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l6uZS-0004Vl-2y for pgadmin-hackers@lists.postgresql.org; Tue, 02 Feb 2021 12:14:14 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1l6uZP-00077U-8j for pgadmin-hackers@postgresql.org; Tue, 02 Feb 2021 12:14:12 +0000 Received: by mail-lf1-x135.google.com with SMTP id m22so27596365lfg.5 for ; Tue, 02 Feb 2021 04:14:10 -0800 (PST) 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=w0m+HXKjze0QVkDLdnZcX2OaEgDPWcvQeq06rgLFy0M=; b=jESHPaVzOk7CmkdSkDW30AZ55jumnk3SgOGcoUKuuXWMbnC9elPhDPrs2nubST4P29 JRvyogiYNpAH+9DBqlf7bo5rV5aXNqyiBNxHf6l6ozkz1XfOQHw5eQ+R0VHflF0PNysy NRKA90CEMllHK5I1NY485WI69NRJKND4gI9owglsJB7rJLcSlsQ0JPLsz2PbAd1cNuWH H4gjH0dWMAa23to3dMWoe3woErYTvBLVSP4DftzngjVWcfsK9jJkTkbtyZarwhyHYUjs wl4WW8s7ft0fhcMhBhYJ3z4iaAjI2hRT8ESPgXdlflMO031tz1rOsf/fa37+l+Zue2FM O0fA== 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=w0m+HXKjze0QVkDLdnZcX2OaEgDPWcvQeq06rgLFy0M=; b=hI5e+WmBxGFoibI32t+s1+fOW+D2bdZJmhJZHYkwfBhHeYuGa2bZuOYNBvwe1dKtXs AO0QBUZuUuq7Nj81BfHX4VqZmupcwiT9WPAikMQlUX7nQUGOFrTyQD9/S/rmPibQDE9w aEPuaXL5+CFGG5iyqv/kAnwg3ERAblzaGKZxmz5o1FhDZuNvunliTeC0SFSt0nnkb5Yn 0oxHqG/vn9OM69K3msW9ZIiE6haI1i3+gHx/Ns/u9PLlapu3b36NPwtXqh2+6OwlK7hV rqQHkw5C7gX8C8okRxmg66blBdXqZqc8Or7Xo7gkixfHj73sX9acocdaeV4UC5+ETVmW EcmA== X-Gm-Message-State: AOAM531zQUvEglW2tcvC6fN8DLpbAoOTy2oR3Tz9sBAnQ0ljBSHRaPW9 ivyhbP72i30hgFX59qh5JK1jxG4NbtGqXGDPcMwjwOnVLCdklQ0I/m/eQ8e50h4zj9AdUolFflq Ny2rAbKDgIxbYRChUbjUVI09ar7cYoXU9xi9/IYQLd9rZ4QWM+c13wFxaTW2K9Xql2bP3+2a5Yh 5X/y2fDmWnuStfqmGPWBQoDWcVy/QJi3hF23TS9AOYo0zKiV32cRQIz9FZQuijv2MnaiM6 X-Google-Smtp-Source: ABdhPJzDEeB7uF78a3EnBgrTUeAmleWE0SnMWvRP+/iSCJOhnHLDRy0xcMbdHHDl/QC+bK9OqaUDhTsYdiSCIfZcs18= X-Received: by 2002:a19:fc06:: with SMTP id a6mr11228578lfi.529.1612268047805; Tue, 02 Feb 2021 04:14:07 -0800 (PST) MIME-Version: 1.0 From: Aditya Toshniwal Date: Tue, 2 Feb 2021 17:43:31 +0530 Message-ID: Subject: [pgAdmin][RM5091] Option to hide Statistics, Dependencies, Dependants tab To: pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000004627ba05ba5968ae" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000004627ba05ba5968ae Content-Type: multipart/alternative; boundary="0000000000004627b705ba5968ac" --0000000000004627b705ba5968ac Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached patch will allow closing Statistics, Dependencies, Dependants tabs. The tabs can be added back by right clicking on the tab strip and selecting "Add panel", similar to that of Dashboard. Changes are also made to make sure statistics, dependencies, dependants are fetched only when they're visible, to avoid unnecessary ajax calls. Please review. -- Thanks, Aditya Toshniwal pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* "Don't Complain about Heat, Plant a TREE" --0000000000004627b705ba5968ac Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached patch will allow closing=C2=A0Statist= ics, Dependencies, Dependants tabs. The tabs can be added back=C2=A0by righ= t clicking on the tab strip and selecting "Add panel", similar to= that of Dashboard.
Changes are als= o made to make sure statistics, dependencies, dependants are fetched only w= hen they're visible, to avoid unnecessary ajax calls.
=
Please review.

--
Thanks,
Aditya Toshniwal
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"
--0000000000004627b705ba5968ac-- --0000000000004627ba05ba5968ae Content-Type: application/octet-stream; name="RM5091.patch" Content-Disposition: attachment; filename="RM5091.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kknyq20l0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Jyb3dzZXIuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9icm93c2VyLmpzCmluZGV4IDQ3NTQxMmJmNy4u MTZiOThhOGQ5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9icm93 c2VyLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Jyb3dzZXIuanMKQEAg LTI1MSw4ICsyNTEsOSBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3NlcicsIFsKICAgICAgICAgdGl0 bGU6IGdldHRleHQoJ1N0YXRpc3RpY3MnKSwKICAgICAgICAgaWNvbjogJycsCiAgICAgICAgIHdp ZHRoOiA1MDAsCi0gICAgICAgIGlzQ2xvc2VhYmxlOiBmYWxzZSwKLSAgICAgICAgaXNQcml2YXRl OiB0cnVlLAorICAgICAgICBpc0Nsb3NlYWJsZTogdHJ1ZSwKKyAgICAgICAgaXNQcml2YXRlOiBm YWxzZSwKKyAgICAgICAgY2FuSGlkZTogdHJ1ZSwKICAgICAgICAgY29udGVudDogJzxkaXYgY2xh c3M9Im5lZ2F0aXZlLXNwYWNlIHAtMiI+PGRpdiByb2xlPSJzdGF0dXMiIGNsYXNzPSJwZy1wYW5l bC1tZXNzYWdlIHBnLXBhbmVsLXN0YXRpc3RpY3MtbWVzc2FnZSI+JyArIHNlbGVjdF9vYmplY3Rf bXNnICsgJzwvZGl2PjxkaXYgY2xhc3M9InBnLXBhbmVsLXN0YXRpc3RpY3MtY29udGFpbmVyIGQt bm9uZSI+PC9kaXY+PC9kaXY+JywKICAgICAgICAgZXZlbnRzOiBwYW5lbEV2ZW50cywKICAgICAg IH0pLApAQCAtMjcyLDggKzI3Myw5IEBAIGRlZmluZSgncGdhZG1pbi5icm93c2VyJywgWwogICAg ICAgICB0aXRsZTogZ2V0dGV4dCgnRGVwZW5kZW5jaWVzJyksCiAgICAgICAgIGljb246ICcnLAog ICAgICAgICB3aWR0aDogNTAwLAotICAgICAgICBpc0Nsb3NlYWJsZTogZmFsc2UsCi0gICAgICAg IGlzUHJpdmF0ZTogdHJ1ZSwKKyAgICAgICAgaXNDbG9zZWFibGU6IHRydWUsCisgICAgICAgIGlz UHJpdmF0ZTogZmFsc2UsCisgICAgICAgIGNhbkhpZGU6IHRydWUsCiAgICAgICAgIGNvbnRlbnQ6 ICc8ZGl2IGNsYXNzPSJuZWdhdGl2ZS1zcGFjZSBwLTIiPjxkaXYgcm9sZT0ic3RhdHVzIiBjbGFz cz0icGctcGFuZWwtbWVzc2FnZSBwZy1wYW5lbC1kZXBlbmRzLW1lc3NhZ2UiPicgKyBzZWxlY3Rf b2JqZWN0X21zZyArICc8L2Rpdj48ZGl2IGNsYXNzPSJwZy1wYW5lbC1kZXBlbmRlbmNpZXMtY29u dGFpbmVyIGQtbm9uZSI+PC9kaXY+PC9kaXY+JywKICAgICAgICAgZXZlbnRzOiBwYW5lbEV2ZW50 cywKICAgICAgIH0pLApAQCAtMjgzLDggKzI4NSw5IEBAIGRlZmluZSgncGdhZG1pbi5icm93c2Vy JywgWwogICAgICAgICB0aXRsZTogZ2V0dGV4dCgnRGVwZW5kZW50cycpLAogICAgICAgICBpY29u OiAnJywKICAgICAgICAgd2lkdGg6IDUwMCwKLSAgICAgICAgaXNDbG9zZWFibGU6IGZhbHNlLAot ICAgICAgICBpc1ByaXZhdGU6IHRydWUsCisgICAgICAgIGlzQ2xvc2VhYmxlOiB0cnVlLAorICAg ICAgICBpc1ByaXZhdGU6IGZhbHNlLAorICAgICAgICBjYW5IaWRlOiB0cnVlLAogICAgICAgICBj b250ZW50OiAnPGRpdiBjbGFzcz0ibmVnYXRpdmUtc3BhY2UgcC0yIj48ZGl2IHJvbGU9InN0YXR1 cyIgY2xhc3M9InBnLXBhbmVsLW1lc3NhZ2UgcGctcGFuZWwtZGVwZW5kcy1tZXNzYWdlIj4nICsg c2VsZWN0X29iamVjdF9tc2cgKyAnPC9kaXY+PGRpdiBjbGFzcz0icGctcGFuZWwtZGVwZW5kZW50 cy1jb250YWluZXIgZC1ub25lIj48L2Rpdj48L2Rpdj4nLAogICAgICAgICBldmVudHM6IHBhbmVs RXZlbnRzLAogICAgICAgfSksCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRp Yy9qcy9wYW5lbC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL3BhbmVsLmpzCmlu ZGV4IGVkYWQ4NTAxOC4uZGE3Y2IyYWRiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2Vy L3N0YXRpYy9qcy9wYW5lbC5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9w YW5lbC5qcwpAQCAtMTgzLDI2ICsxODMsMjYgQEAgZGVmaW5lKAogICAgICAgICB9CiAgICAgICB9 LAogICAgICAgaGFuZGxlVmlzaWJpbGl0eTogZnVuY3Rpb24oZXZlbnROYW1lKSB7Ci0gICAgICAg IC8vIEN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uIG9ubHkgd29ya3Mgd2l0aCBkYXNoYm9hcmQgcGFu ZWwgYnV0Ci0gICAgICAgIC8vIGFzIHBlciBuZWVkIGl0IGNhbiBiZSBleHRlbmRlZAotICAgICAg ICBpZiAodGhpcy5fdHlwZSAhPSAnZGFzaGJvYXJkJyB8fCBfLmlzVW5kZWZpbmVkKHBnQWRtaW4u RGFzaGJvYXJkKSkKKyAgICAgICAgLy8gU3VwcG9ydGVkIG1vZHVsZXMKKyAgICAgICAgbGV0IHR5 cGVfbW9kdWxlID0geworICAgICAgICAgICdkYXNoYm9hcmQnOiBwZ0FkbWluLkRhc2hib2FyZCwK KyAgICAgICAgICAnc3RhdGlzdGljcyc6IHBnQnJvd3Nlci5Ob2RlU3RhdGlzdGljcywKKyAgICAg ICAgICAnZGVwZW5kZW5jaWVzJzogcGdCcm93c2VyLk5vZGVEZXBlbmRlbmNpZXMsCisgICAgICAg ICAgJ2RlcGVuZGVudHMnOiBwZ0Jyb3dzZXIuTm9kZURlcGVuZGVudHMsCisgICAgICAgIH07CisK KyAgICAgICAgbGV0IG1vZHVsZSA9IHR5cGVfbW9kdWxlW3RoaXMuX3R5cGVdOworICAgICAgICBp ZihfLmlzVW5kZWZpbmVkKG1vZHVsZSkpCisgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm KF8uaXNVbmRlZmluZWQobW9kdWxlLnRvZ2dsZVZpc2liaWxpdHkpKQogICAgICAgICAgIHJldHVy bjsKIAogICAgICAgICBpZiAoZXZlbnROYW1lID09ICdwYW5lbENsb3NlZCcpIHsKICAgICAgICAg ICAvKiBQYXNzIHRoZSBjbG9zZWQgZmxhZyBhbHNvICovCi0gICAgICAgICAgcGdBZG1pbi5EYXNo Ym9hcmQudG9nZ2xlVmlzaWJpbGl0eShmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgbW9kdWxlLnRv Z2dsZVZpc2liaWxpdHkuY2FsbChtb2R1bGUsIFtmYWxzZSwgdHJ1ZV0pOwogICAgICAgICB9IGVs c2UgaWYgKGV2ZW50TmFtZSA9PSAncGFuZWxWaXNpYmlsaXR5Q2hhbmdlZCcpIHsKLSAgICAgICAg ICBpZiAocGdCcm93c2VyLnRyZWUpIHsKLSAgICAgICAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSBw Z0Jyb3dzZXIudHJlZS5zZWxlY3RlZCgpOwotICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVk KHBnQWRtaW4uRGFzaGJvYXJkKSkgewotICAgICAgICAgICAgICBwZ0FkbWluLkRhc2hib2FyZC50 b2dnbGVWaXNpYmlsaXR5KHBnQnJvd3Nlci5wYW5lbHMuZGFzaGJvYXJkLnBhbmVsLmlzVmlzaWJs ZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEV4cGxpY2l0bHkgdHJpZ2dlciB0 cmVlIHNlbGVjdGVkIGV2ZW50IHdoZW4gd2UgYWRkIHRoZSB0YWIuCi0gICAgICAgICAgICBpZihz ZWxlY3RlZE5vZGUubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJp Z2dlcigncGdhZG1pbi1icm93c2VyOnRyZWU6c2VsZWN0ZWQnLCBzZWxlY3RlZE5vZGUsCi0gICAg ICAgICAgICAgICAgcGdCcm93c2VyLnRyZWUuaXRlbURhdGEoc2VsZWN0ZWROb2RlKSwgcGdCcm93 c2VyLk5vZGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KKyAgICAgICAgICBtb2R1bGUu dG9nZ2xlVmlzaWJpbGl0eS5jYWxsKG1vZHVsZSwgW3BnQnJvd3Nlci5kb2NrZXIuZmluZFBhbmVs cyh0aGlzLl90eXBlKVswXS5pc1Zpc2libGUoKV0pOwogICAgICAgICB9CiAgICAgICB9LAogCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL2Rhc2hib2FyZC5qcyBi L3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvZGFzaGJvYXJkLmpzCmluZGV4IDFmNjFh MmU2Mi4uZDhjMjk4MjAxIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGlj L2pzL2Rhc2hib2FyZC5qcworKysgYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL2Rh c2hib2FyZC5qcwpAQCAtMjI1LDcgKzIyNSw2IEBAIGRlZmluZSgncGdhZG1pbi5kYXNoYm9hcmQn LCBbCiAgICAgICB2YXIgZGFzaGJvYXJkUGFuZWwgPSBwZ0Jyb3dzZXIucGFuZWxzWydkYXNoYm9h cmQnXS5wYW5lbDsKICAgICAgIGlmIChkYXNoYm9hcmRQYW5lbCkgewogICAgICAgICB2YXIgZGl2 ID0gZGFzaGJvYXJkUGFuZWwubGF5b3V0KCkuc2NlbmUoKS5maW5kKCcucGctcGFuZWwtY29udGVu dCcpOwotCiAgICAgICAgIGlmIChkaXYpIHsKICAgICAgICAgICB2YXIgYWpheEhvb2sgPSBmdW5j dGlvbigpIHsKICAgICAgICAgICAgICQuYWpheCh7CkBAIC0xMTAwLDcgKzEwOTksMTMgQEAgZGVm aW5lKCdwZ2FkbWluLmRhc2hib2FyZCcsIFsKICAgICAgIGlmKGNsb3NlZCkgewogICAgICAgICB0 aGlzLmNoYXJ0c0RvbU9iaiAmJiB0aGlzLmNoYXJ0c0RvbU9iai51bm1vdW50KCk7CiAgICAgICB9 IGVsc2UgeworICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAorICAgICAgICAgIGkgPSB0 LnNlbGVjdGVkKCksCisgICAgICAgICAgZCA9IGkgJiYgdC5pdGVtRGF0YShpKSwKKyAgICAgICAg ICBuID0gaSAmJiBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsKKwogICAgICAgICB0aGlz LmNoYXJ0c0RvbU9iaiAmJiB0aGlzLmNoYXJ0c0RvbU9iai5zZXRQYWdlVmlzaWJsZShkYXNoYm9h cmRWaXNpYmxlKTsKKyAgICAgICAgdGhpcy5vYmplY3Rfc2VsZWN0ZWQoaSwgZCwgbik7CiAgICAg ICB9CiAgICAgfSwKICAgICBjYW5fdGFrZV9hY3Rpb246IGZ1bmN0aW9uKG0pIHsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL21pc2MvZGVwZW5kZW5jaWVzL3N0YXRpYy9qcy9kZXBlbmRlbmNpZXMu anMgYi93ZWIvcGdhZG1pbi9taXNjL2RlcGVuZGVuY2llcy9zdGF0aWMvanMvZGVwZW5kZW5jaWVz LmpzCmluZGV4IGM4OWQwM2I0MS4uNjczNzdjOWE1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9t aXNjL2RlcGVuZGVuY2llcy9zdGF0aWMvanMvZGVwZW5kZW5jaWVzLmpzCisrKyBiL3dlYi9wZ2Fk bWluL21pc2MvZGVwZW5kZW5jaWVzL3N0YXRpYy9qcy9kZXBlbmRlbmNpZXMuanMKQEAgLTMxLDcg KzMxLDggQEAgZGVmaW5lKCdtaXNjLmRlcGVuZGVuY2llcycsIFsKICAgICAgIC8qIFBhcmFtZXRl ciBpcyB1c2VkIHRvIHNldCB0aGUgcHJvcGVyIGxhYmVsIG9mIHRoZQogICAgICAgICogYmFja2dy aWQgaGVhZGVyIGNlbGwuCiAgICAgICAgKi8KLSAgICAgIF8uYmluZEFsbCh0aGlzLCAnc2hvd0Rl cGVuZGVuY2llcycsICdfX2xvYWRNb3JlUm93cycsICdfX2FwcGVuZEdyaWRUb1BhbmVsJyk7Cisg ICAgICBfLmJpbmRBbGwodGhpcywgJ3Nob3dEZXBlbmRlbmNpZXMnLCAnX191cGRhdGVDb2xsZWN0 aW9uJywgJ19fbG9hZE1vcmVSb3dzJywKKyAgICAgICAgJ19fYXBwZW5kR3JpZFRvUGFuZWwnLCAn dG9nZ2xlVmlzaWJpbGl0eScpOwogCiAgICAgICAvLyBEZWZpbmluZyBCYWNrYm9uZSBNb2RlbCBm b3IgRGVwZW5kZW5jaWVzLgogICAgICAgdmFyIE1vZGVsID0gQmFja2JvbmUuTW9kZWwuZXh0ZW5k KHsKQEAgLTYzLDggKzY0LDI4IEBAIGRlZmluZSgnbWlzYy5kZXBlbmRlbmNpZXMnLCBbCiAgICAg ICAgIG1vZGVsOiBNb2RlbCwKICAgICAgIH0pKShudWxsKTsKIAotICAgICAgcGdCcm93c2VyLkV2 ZW50cy5vbigncGdhZG1pbi1icm93c2VyOnRyZWU6c2VsZWN0ZWQnLCB0aGlzLnNob3dEZXBlbmRl bmNpZXMpOwotICAgICAgdGhpcy5fX2FwcGVuZEdyaWRUb1BhbmVsKCk7CisgICAgICBpZih0aGlz LmRlcGVuZGVuY2llc1BhbmVsKSB0aGlzLnRvZ2dsZVZpc2liaWxpdHkodGhpcy5kZXBlbmRlbmNp ZXNQYW5lbC5pc1Zpc2libGUoKSk7CisgICAgfSwKKworICAgIHRvZ2dsZVZpc2liaWxpdHk6IGZ1 bmN0aW9uKHZpc2libGUsIGNsb3NlZD1mYWxzZSkgeworICAgICAgaWYgKHZpc2libGUpIHsKKyAg ICAgICAgdGhpcy5kZXBlbmRlbmNpZXNQYW5lbCA9IHBnQnJvd3Nlci5kb2NrZXIuZmluZFBhbmVs cygnZGVwZW5kZW5jaWVzJylbMF07CisgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCisg ICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwKKyAgICAgICAgICBkID0gaSAmJiB0Lml0ZW1EYXRh KGkpLAorICAgICAgICAgIG4gPSBpICYmIGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdOwor CisgICAgICAgIHRoaXMuc2hvd0RlcGVuZGVuY2llcyhpLCBkLCBuKTsKKworICAgICAgICAvLyBX ZSB3aWxsIHN0YXJ0IGxpc3RlbmluZyB0aGUgdHJlZSBzZWxlY3Rpb24gZXZlbnQuCisgICAgICAg IHBnQnJvd3Nlci5FdmVudHMub24oJ3BnYWRtaW4tYnJvd3Nlcjp0cmVlOnNlbGVjdGVkJywgdGhp cy5zaG93RGVwZW5kZW5jaWVzKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmKGNsb3NlZCkg eworICAgICAgICAgICQodGhpcy5kZXBlbmRlbmNpZXNQYW5lbCkuZGF0YSgnbm9kZS1wcm9wJywg JycpOworICAgICAgICB9CisgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gbGlzdGVuIHRoZSB0 cmVlIGl0ZW0gc2VsZWN0aW9uIGV2ZW50LgorICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9mZign cGdhZG1pbi1icm93c2VyOnRyZWU6c2VsZWN0ZWQnLCB0aGlzLnNob3dEZXBlbmRlbmNpZXMpOwor ICAgICAgfQogICAgIH0sCiAKICAgICAvKiBGdW5jdGlvbiBpcyB1c2VkIHRvIGNyZWF0ZSBhbmQg cmVuZGVyIGJhY2tncmlkIHdpdGgKQEAgLTExMiw2ICsxMzMsNyBAQCBkZWZpbmUoJ21pc2MuZGVw ZW5kZW5jaWVzJywgWwogICAgICAgLy8gQ29uZGl0aW9uIGlzIHVzZWQgdG8gc2F2ZSBncmlkIG9i amVjdCB0byBjaGFuZ2UgdGhlIGxhYmVsIG9mIHRoZSBoZWFkZXIuCiAgICAgICB0aGlzLmRlcGVu ZGVuY2llc0dyaWQgPSBncmlkOwogCisgICAgICAkZ3JpZENvbnRhaW5lci5lbXB0eSgpOwogICAg ICAgJGdyaWRDb250YWluZXIuYXBwZW5kKGdyaWQucmVuZGVyKCkuZWwpOwogCiAgICAgICByZXR1 cm4gdHJ1ZTsKQEAgLTExOSwxNSArMTQxLDM0IEBAIGRlZmluZSgnbWlzYy5kZXBlbmRlbmNpZXMn LCBbCiAKICAgICAvLyBGZXRjaCB0aGUgYWN0dWFsIGRhdGEgYW5kIHVwZGF0ZSB0aGUgY29sbGVj dGlvbgogICAgIHNob3dEZXBlbmRlbmNpZXM6IGZ1bmN0aW9uKGl0ZW0sIGRhdGEsIG5vZGUpIHsK KyAgICAgIGlmICghbm9kZSkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIC8q KgorICAgICAgICogV2UgY2FuJ3Qgc3RhcnQgZmV0Y2hpbmcgdGhlIHN0YXRpc3RpY3MgaW1tZWRp YXRlbHksIGl0IGlzIHBvc3NpYmxlIC0KKyAgICAgICAqIHRoZSB1c2VyIGlzIGp1c3QgdXNpbmcg a2V5Ym9hcmRzIHRvIHNlbGVjdCB0aGUgbm9kZSwgYW5kIGp1c3QKKyAgICAgICAqIHRyYXZlcnNp bmcgdGhyb3VnaC4KKyAgICAgICAqCisgICAgICAgKiBXZSB3aWxsIHdhaXQgZm9yIHNvbWUgdGlt ZSBiZWZvcmUgZmV0Y2hpbmcKKyAgICAgICAqKi8KKyAgICAgIGlmICh0aGlzLnRpbWVvdXQpIHsK KyAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7CisgICAgICB9CisgICAgICB0aGlz LnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgdGhpcy5fX3VwZGF0ZUNvbGxl Y3Rpb24obm9kZS5nZW5lcmF0ZV91cmwoaXRlbSwgJ2RlcGVuZGVuY3knLCBkYXRhLCB0cnVlKSwg bm9kZSwgaXRlbSwgZGF0YS5fdHlwZSk7CisgICAgICB9LCA0MDApOworICAgIH0sCisKKyAgICAv LyBGZXRjaCB0aGUgYWN0dWFsIGRhdGEgYW5kIHVwZGF0ZSB0aGUgY29sbGVjdGlvbgorICAgIF9f dXBkYXRlQ29sbGVjdGlvbjogZnVuY3Rpb24odXJsLCBub2RlLCBpdGVtLCBub2RlX3R5cGUpIHsK ICAgICAgIGxldCBzZWxmID0gdGhpcywKICAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIHNl bGVjdCBhbiBvYmplY3QgaW4gdGhlIHRyZWUgdmlldy4nKSwKICAgICAgICAgcGFuZWwgPSB0aGlz LmRlcGVuZGVuY2llc1BhbmVsLAogICAgICAgICAkY29udGFpbmVyID0gcGFuZWwubGF5b3V0KCku c2NlbmUoKS5maW5kKCcucGctcGFuZWwtY29udGVudCcpLAogICAgICAgICAkbXNnQ29udGFpbmVy ID0gJGNvbnRhaW5lci5maW5kKCcucGctcGFuZWwtZGVwZW5kcy1tZXNzYWdlJyksCiAgICAgICAg ICRncmlkQ29udGFpbmVyID0gJGNvbnRhaW5lci5maW5kKCcucGctcGFuZWwtZGVwZW5kZW5jaWVz LWNvbnRhaW5lcicpLAotICAgICAgICB0cmVlSGllcmFyY2h5ID0gbm9kZS5nZXRUcmVlTm9kZUhp ZXJhcmNoeShpdGVtKSwKLSAgICAgICAgbl90eXBlID0gZGF0YS5fdHlwZSwKLSAgICAgICAgdXJs ID0gbm9kZS5nZW5lcmF0ZV91cmwoaXRlbSwgJ2RlcGVuZGVuY3knLCBkYXRhLCB0cnVlKTsKKyAg ICAgICAgdHJlZUhpZXJhcmNoeSA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkoaXRlbSk7CiAK ICAgICAgIGlmIChub2RlKSB7CiAgICAgICAgIC8qIFdlIGZldGNoIHRoZSBEZXBlbmRlbmNpZXMg YW5kIERlcGVuZGVuY2llcyB0YWIgb25seSBmb3IKQEAgLTEzNSwxMiArMTc2LDI0IEBAIGRlZmlu ZSgnbWlzYy5kZXBlbmRlbmNpZXMnLCBbCiAgICAgICAgICAqLwogICAgICAgICBtc2cgPSBnZXR0 ZXh0KCdObyBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgdGhlIHNlbGVj dGVkIG9iamVjdC4nKTsKICAgICAgICAgaWYgKG5vZGUuaGFzRGVwZW5kcykgeworICAgICAgICAg IC8vIEF2b2lkIHVubmVjZXNzYXJ5IHJlbG9hZHMKKyAgICAgICAgICB2YXIgY2FjaGVfZmxhZyA9 IHsKKyAgICAgICAgICAgIG5vZGVfdHlwZTogbm9kZV90eXBlLAorICAgICAgICAgICAgdXJsOiB1 cmwsCisgICAgICAgICAgfTsKKyAgICAgICAgICBpZiAoXy5pc0VxdWFsKCQocGFuZWwpLmRhdGEo J25vZGUtcHJvcCcpLCBjYWNoZV9mbGFnKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICAgIH0KKyAgICAgICAgICAvLyBDYWNoZSB0aGUgY3VycmVudCBJRHMgZm9yIG5leHQgdGltZQor ICAgICAgICAgICQocGFuZWwpLmRhdGEoJ25vZGUtcHJvcCcsIGNhY2hlX2ZsYWcpOworCiAgICAg ICAgICAgLyogVXBkYXRpbmcgdGhlIGxhYmVsIGZvciB0aGUgJ2ZpZWxkJyB0eXBlIG9mIHRoZSBi YWNrYm9uZSBtb2RlbC4KICAgICAgICAgICAgKiBMYWJlbCBzaG91bGQgYmUgIkRhdGFiYXNlIiBp ZiB0aGUgbm9kZSB0eXBlIGlzIHRhYmxlc3BhY2Ugb3Igcm9sZQogICAgICAgICAgICAqIGFuZCBk ZXBlbmRlbmNpZXMgdGFiIGlzIHNlbGVjdGVkLiBGb3Igb3RoZXIgbm9kZXMgYW5kIGRlcGVuZGVu Y2llcyB0YWIKICAgICAgICAgICAgKiBpdCBzaG91bGQgYmUgJ1Jlc3RyaWN0aW9uJy4KICAgICAg ICAgICAgKi8KIAorICAgICAgICAgIHNlbGYuX19hcHBlbmRHcmlkVG9QYW5lbCgpOwogICAgICAg ICAgIHRoaXMuZGVwZW5kZW5jaWVzR3JpZC5jb2x1bW5zLm1vZGVsc1syXS5zZXQoewogICAgICAg ICAgICAgJ2xhYmVsJzogZ2V0dGV4dCgnUmVzdHJpY3Rpb24nKSwKICAgICAgICAgICB9KTsKQEAg LTE1MCw4NSArMjAzLDg3IEBAIGRlZmluZSgnbWlzYy5kZXBlbmRlbmNpZXMnLCBbCiAgICAgICAg ICAgJGdyaWRDb250YWluZXIucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpOwogCiAgICAgICAgICAgdmFy IHRpbWVyID0gJyc7Ci0gICAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICAgIHVybDogdXJsLAot ICAgICAgICAgICAgdHlwZTogJ0dFVCcsCi0gICAgICAgICAgICBiZWZvcmVTZW5kOiBmdW5jdGlv bih4aHIpIHsKLSAgICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIocGdBZG1pbi5jc3Jm X3Rva2VuX2hlYWRlciwgcGdBZG1pbi5jc3JmX3Rva2VuKTsKLSAgICAgICAgICAgICAgLy8gR2Vu ZXJhdGUgYSB0aW1lciBmb3IgdGhlIHJlcXVlc3QKLSAgICAgICAgICAgICAgdGltZXIgPSBzZXRU aW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIC8vIG5vdGlmeSB1c2VyIGlmIHJl cXVlc3QgaXMgdGFraW5nIGxvbmdlciB0aGFuIDEgc2Vjb25kCi0KLSAgICAgICAgICAgICAgICAk bXNnQ29udGFpbmVyLnRleHQoZ2V0dGV4dCgnRmV0Y2hpbmcgZGVwZW5kZW5jeSBpbmZvcm1hdGlv biBmcm9tIHRoZSBzZXJ2ZXIuLi4nKSk7Ci0gICAgICAgICAgICAgICAgJG1zZ0NvbnRhaW5lci5y ZW1vdmVDbGFzcygnZC1ub25lJyk7Ci0gICAgICAgICAgICAgICAgbXNnID0gJyc7Ci0KLSAgICAg ICAgICAgICAgfSwgMTAwMCk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgIH0pCi0gICAgICAg ICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRp bWVyKTsKLQotICAgICAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHsKLQotICAgICAgICAg ICAgICAgIGlmICghJG1zZ0NvbnRhaW5lci5oYXNDbGFzcygnZC1ub25lJykpIHsKLSAgICAgICAg ICAgICAgICAgICRtc2dDb250YWluZXIuYWRkQ2xhc3MoJ2Qtbm9uZScpOworICAgICAgICAgIHZh ciBhamF4SG9vayA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAg ICAgICAgdXJsOiB1cmwsCisgICAgICAgICAgICAgIHR5cGU6ICdHRVQnLAorICAgICAgICAgICAg ICBiZWZvcmVTZW5kOiBmdW5jdGlvbih4aHIpIHsKKyAgICAgICAgICAgICAgICB4aHIuc2V0UmVx dWVzdEhlYWRlcihwZ0FkbWluLmNzcmZfdG9rZW5faGVhZGVyLCBwZ0FkbWluLmNzcmZfdG9rZW4p OworICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGEgdGltZXIgZm9yIHRoZSByZXF1ZXN0Cisg ICAgICAgICAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAg ICAgICAgICAgLy8gbm90aWZ5IHVzZXIgaWYgcmVxdWVzdCBpcyB0YWtpbmcgbG9uZ2VyIHRoYW4g MSBzZWNvbmQKKworICAgICAgICAgICAgICAgICAgJG1zZ0NvbnRhaW5lci50ZXh0KGdldHRleHQo J0ZldGNoaW5nIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2VydmVyLi4uJykpOwor ICAgICAgICAgICAgICAgICAgJG1zZ0NvbnRhaW5lci5yZW1vdmVDbGFzcygnZC1ub25lJyk7Cisg ICAgICAgICAgICAgICAgICBtc2cgPSAnJzsKKworICAgICAgICAgICAgICAgIH0sIDEwMDApOwor ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgLmRvbmUoZnVu Y3Rpb24ocmVzKSB7CisgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKKworICAg ICAgICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMCkgeworCisgICAgICAgICAgICAgICAgICBp ZiAoISRtc2dDb250YWluZXIuaGFzQ2xhc3MoJ2Qtbm9uZScpKSB7CisgICAgICAgICAgICAgICAg ICAgICRtc2dDb250YWluZXIuYWRkQ2xhc3MoJ2Qtbm9uZScpOworICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgJGdyaWRDb250YWluZXIucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScp OworCisgICAgICAgICAgICAgICAgICBzZWxmLmRlcGVuZGVuY2llc0RhdGEgPSByZXM7CisKKyAg ICAgICAgICAgICAgICAgIC8vIExvYWQgb25seSAxMDAgcm93cworICAgICAgICAgICAgICAgICAg c2VsZi5kZXBlbmRlbmNpZXNDb2xsZWN0aW9uLnJlc2V0KHNlbGYuZGVwZW5kZW5jaWVzRGF0YS5z cGxpY2UoMCwgMTAwKSwge3BhcnNlOiB0cnVlfSk7CisKKyAgICAgICAgICAgICAgICAgIC8vIExv YWQgbW9yZSByb3dzIG9uIHNjcm9sbCBkb3duCisgICAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIu RXZlbnRzLm9uKAorICAgICAgICAgICAgICAgICAgICAncGdhZG1pbi1icm93c2VyOnBhbmVsLWRl cGVuZGVuY2llczonICsKKyAgICAgICAgICAgICAgICAgIHdjRG9ja2VyLkVWRU5ULlNDUk9MTEVE LAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fbG9hZE1vcmVSb3dzCisgICAgICAgICAgICAg ICAgICApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAvLyBE byBub3QgbGlzdGVuIHRoZSBzY3JvbGwgZXZlbnQKKyAgICAgICAgICAgICAgICAgIHBnQnJvd3Nl ci5FdmVudHMub2ZmKAorICAgICAgICAgICAgICAgICAgICAncGdhZG1pbi1icm93c2VyOnBhbmVs LWRlcGVuZGVuY2llczonICsKKyAgICAgICAgICAgICAgICAgIHdjRG9ja2VyLkVWRU5ULlNDUk9M TEVECisgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgICBzZWxmLmRlcGVu ZGVuY2llc0NvbGxlY3Rpb24ucmVzZXQoe3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgICAgICAg ICAgJG1zZ0NvbnRhaW5lci50ZXh0KG1zZyk7CisgICAgICAgICAgICAgICAgICAkbXNnQ29udGFp bmVyLnJlbW92ZUNsYXNzKCdkLW5vbmUnKTsKKworICAgICAgICAgICAgICAgICAgaWYgKCEkZ3Jp ZENvbnRhaW5lci5oYXNDbGFzcygnZC1ub25lJykpIHsKKyAgICAgICAgICAgICAgICAgICAgJGdy aWRDb250YWluZXIuYWRkQ2xhc3MoJ2Qtbm9uZScpOworICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAkZ3JpZENvbnRhaW5lci5yZW1vdmVDbGFz cygnZC1ub25lJyk7Ci0KLSAgICAgICAgICAgICAgICBzZWxmLmRlcGVuZGVuY2llc0RhdGEgPSBy ZXM7Ci0KLSAgICAgICAgICAgICAgICAvLyBMb2FkIG9ubHkgMTAwIHJvd3MKLSAgICAgICAgICAg ICAgICBzZWxmLmRlcGVuZGVuY2llc0NvbGxlY3Rpb24ucmVzZXQoc2VsZi5kZXBlbmRlbmNpZXNE YXRhLnNwbGljZSgwLCAxMDApLCB7cGFyc2U6IHRydWV9KTsKIAotICAgICAgICAgICAgICAgIC8v IExvYWQgbW9yZSByb3dzIG9uIHNjcm9sbCBkb3duCi0gICAgICAgICAgICAgICAgcGdCcm93c2Vy LkV2ZW50cy5vbigKLSAgICAgICAgICAgICAgICAgICdwZ2FkbWluLWJyb3dzZXI6cGFuZWwtZGVw ZW5kZW5jaWVzOicgKwotICAgICAgICAgICAgICAgIHdjRG9ja2VyLkVWRU5ULlNDUk9MTEVELAot ICAgICAgICAgICAgICAgICAgc2VsZi5fX2xvYWRNb3JlUm93cwotICAgICAgICAgICAgICAgICk7 CiAKLSAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBEbyBub3QgbGlz dGVuIHRoZSBzY3JvbGwgZXZlbnQKLSAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9m ZigKLSAgICAgICAgICAgICAgICAgICdwZ2FkbWluLWJyb3dzZXI6cGFuZWwtZGVwZW5kZW5jaWVz OicgKwotICAgICAgICAgICAgICAgIHdjRG9ja2VyLkVWRU5ULlNDUk9MTEVECisgICAgICAgICAg ICAgIH0pCisgICAgICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKHhociwgZXJyb3IsIG1lc3NhZ2Up IHsKKyAgICAgICAgICAgICAgICB2YXIgX2xhYmVsID0gdHJlZUhpZXJhcmNoeVtub2RlX3R5cGVd LmxhYmVsOworICAgICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigKKyAgICAg ICAgICAgICAgICAgICdwZ2FkbWluOm5vZGU6cmV0cmlldmFsOmVycm9yJywgJ2RlcGVuZHMnLCB4 aHIsIGVycm9yLCBtZXNzYWdlCiAgICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICAg IHNlbGYuZGVwZW5kZW5jaWVzQ29sbGVjdGlvbi5yZXNldCh7c2lsZW50OiB0cnVlfSk7Ci0gICAg ICAgICAgICAgICAgJG1zZ0NvbnRhaW5lci50ZXh0KG1zZyk7Ci0gICAgICAgICAgICAgICAgJG1z Z0NvbnRhaW5lci5yZW1vdmVDbGFzcygnZC1ub25lJyk7Ci0KLSAgICAgICAgICAgICAgICBpZiAo ISRncmlkQ29udGFpbmVyLmhhc0NsYXNzKCdkLW5vbmUnKSkgewotICAgICAgICAgICAgICAgICAg JGdyaWRDb250YWluZXIuYWRkQ2xhc3MoJ2Qtbm9uZScpOworICAgICAgICAgICAgICAgIGlmICgh QWxlcnRpZnkucGdIYW5kbGVJdGVtRXJyb3IoeGhyLCBlcnJvciwgbWVzc2FnZSwgeworICAgICAg ICAgICAgICAgICAgaXRlbTogaXRlbSwKKyAgICAgICAgICAgICAgICAgIGluZm86IHRyZWVIaWVy YXJjaHksCisgICAgICAgICAgICAgICAgfSkpIHsKKyAgICAgICAgICAgICAgICAgIEFsZXJ0aWZ5 LnBnTm90aWZpZXIoCisgICAgICAgICAgICAgICAgICAgIGVycm9yLCB4aHIsCisgICAgICAgICAg ICAgICAgICAgIGdldHRleHQoJ0Vycm9yIHJldHJpZXZpbmcgZGF0YSBmcm9tIHRoZSBzZXJ2ZXI6 ICVzJywgbWVzc2FnZSB8fCBfbGFiZWwpLAorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihh bGVydE1zZykgeworICAgICAgICAgICAgICAgICAgICAgIGlmKGFsZXJ0TXNnID09PSAnQ1JZUFRL RVlfU0VUJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYWpheEhvb2soKTsKKyAgICAgICAg ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53 YXJuKGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICB9KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLQotCi0gICAgICAg ICAgICB9KQotICAgICAgICAgICAgLmZhaWwoZnVuY3Rpb24oeGhyLCBlcnJvciwgbWVzc2FnZSkg ewotICAgICAgICAgICAgICB2YXIgX2xhYmVsID0gdHJlZUhpZXJhcmNoeVtuX3R5cGVdLmxhYmVs OwotICAgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIoCi0gICAgICAgICAgICAg ICAgJ3BnYWRtaW46bm9kZTpyZXRyaWV2YWw6ZXJyb3InLCAnZGVwZW5kcycsIHhociwgZXJyb3Is IG1lc3NhZ2UKLSAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgaWYgKCFBbGVydGlmeS5w Z0hhbmRsZUl0ZW1FcnJvcih4aHIsIGVycm9yLCBtZXNzYWdlLCB7Ci0gICAgICAgICAgICAgICAg aXRlbTogaXRlbSwKLSAgICAgICAgICAgICAgICBpbmZvOiB0cmVlSGllcmFyY2h5LAotICAgICAg ICAgICAgICB9KSkgewotICAgICAgICAgICAgICAgIEFsZXJ0aWZ5LnBnTm90aWZpZXIoCi0gICAg ICAgICAgICAgICAgICBlcnJvciwgeGhyLAotICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgnRXJy b3IgcmV0cmlldmluZyBkYXRhIGZyb20gdGhlIHNlcnZlcjogJXMnLCBtZXNzYWdlIHx8IF9sYWJl bCksCi0gICAgICAgICAgICAgICAgICBmdW5jdGlvbihhbGVydE1zZykgewotICAgICAgICAgICAg ICAgICAgICBpZihhbGVydE1zZyA9PT0gJ0NSWVBUS0VZX1NFVCcpIHsKLSAgICAgICAgICAgICAg ICAgICAgICBzZWxmLnNob3dEZXBlbmRlbmNpZXMoaXRlbSwgZGF0YSwgbm9kZSk7Ci0gICAgICAg ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJu KGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0p OwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIC8vIHNob3cgZmFpbGVkIG1lc3NhZ2Uu Ci0gICAgICAgICAgICAgICRtc2dDb250YWluZXIudGV4dChnZXR0ZXh0KCdGYWlsZWQgdG8gcmV0 cmlldmUgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuJykpOwotICAgICAgICAgICAgfSk7CisgICAgICAg ICAgICAgICAgLy8gc2hvdyBmYWlsZWQgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAkbXNnQ29u dGFpbmVyLnRleHQoZ2V0dGV4dCgnRmFpbGVkIHRvIHJldHJpZXZlIGRhdGEgZnJvbSB0aGUgc2Vy dmVyLicpKTsKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgfTsKKyAgICAgICAgICBhamF4 SG9vaygpOwogICAgICAgICB9CiAgICAgICB9CiAgICAgICBpZiAobXNnICE9ICcnKSB7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9taXNjL2RlcGVuZGVudHMvc3RhdGljL2pzL2RlcGVuZGVudHMu anMgYi93ZWIvcGdhZG1pbi9taXNjL2RlcGVuZGVudHMvc3RhdGljL2pzL2RlcGVuZGVudHMuanMK aW5kZXggY2E0NmRkZTVhLi42NTY0OTc5ZDcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL21pc2Mv ZGVwZW5kZW50cy9zdGF0aWMvanMvZGVwZW5kZW50cy5qcworKysgYi93ZWIvcGdhZG1pbi9taXNj L2RlcGVuZGVudHMvc3RhdGljL2pzL2RlcGVuZGVudHMuanMKQEAgLTMxLDcgKzMxLDggQEAgZGVm aW5lKCdtaXNjLmRlcGVuZGVudHMnLCBbCiAgICAgICAvKiBQYXJhbWV0ZXIgaXMgdXNlZCB0byBz ZXQgdGhlIHByb3BlciBsYWJlbCBvZiB0aGUKICAgICAgICAqIGJhY2tncmlkIGhlYWRlciBjZWxs LgogICAgICAgICovCi0gICAgICBfLmJpbmRBbGwodGhpcywgJ3Nob3dEZXBlbmRlbnRzJywgJ19f bG9hZE1vcmVSb3dzJywgJ19fYXBwZW5kR3JpZFRvUGFuZWwnKTsKKyAgICAgIF8uYmluZEFsbCh0 aGlzLCAnc2hvd0RlcGVuZGVudHMnLCAnX191cGRhdGVDb2xsZWN0aW9uJywgJ19fbG9hZE1vcmVS b3dzJywKKyAgICAgICAgJ19fYXBwZW5kR3JpZFRvUGFuZWwnLCAndG9nZ2xlVmlzaWJpbGl0eScp OwogCiAgICAgICAvLyBEZWZpbmluZyBCYWNrYm9uZSBNb2RlbCBmb3IgRGVwZW5kZW50cy4KICAg ICAgIHZhciBNb2RlbCA9IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7CkBAIC02Myw5ICs2NCwyOCBA QCBkZWZpbmUoJ21pc2MuZGVwZW5kZW50cycsIFsKICAgICAgICAgbW9kZWw6IE1vZGVsLAogICAg ICAgfSkpKG51bGwpOwogCi0gICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9uKCdwZ2FkbWluLWJyb3dz ZXI6dHJlZTpzZWxlY3RlZCcsIHRoaXMuc2hvd0RlcGVuZGVudHMpOwotICAgICAgcGdCcm93c2Vy LkV2ZW50cy5vbigncGdhZG1pbi1icm93c2VyOnRyZWU6cmVmcmVzaGluZycsIHRoaXMucmVmcmVz aERlcGVuZGVudHMsIHRoaXMpOwotICAgICAgdGhpcy5fX2FwcGVuZEdyaWRUb1BhbmVsKCk7Cisg ICAgICBpZih0aGlzLmRlcGVuZGVudHNQYW5lbCkgdGhpcy50b2dnbGVWaXNpYmlsaXR5KHRoaXMu ZGVwZW5kZW50c1BhbmVsLmlzVmlzaWJsZSgpKTsKKyAgICB9LAorCisgICAgdG9nZ2xlVmlzaWJp bGl0eTogZnVuY3Rpb24odmlzaWJsZSwgY2xvc2VkPWZhbHNlKSB7CisgICAgICBpZiAodmlzaWJs ZSkgeworICAgICAgICB0aGlzLmRlcGVuZGVudHNQYW5lbCA9IHBnQnJvd3Nlci5kb2NrZXIuZmlu ZFBhbmVscygnZGVwZW5kZW50cycpWzBdOworICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVl LAorICAgICAgICAgIGkgPSB0LnNlbGVjdGVkKCksCisgICAgICAgICAgZCA9IGkgJiYgdC5pdGVt RGF0YShpKSwKKyAgICAgICAgICBuID0gaSAmJiBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBl XTsKKworICAgICAgICB0aGlzLnNob3dEZXBlbmRlbnRzKGksIGQsIG4pOworCisgICAgICAgIC8v IFdlIHdpbGwgc3RhcnQgbGlzdGVuaW5nIHRoZSB0cmVlIHNlbGVjdGlvbiBldmVudC4KKyAgICAg ICAgcGdCcm93c2VyLkV2ZW50cy5vbigncGdhZG1pbi1icm93c2VyOnRyZWU6c2VsZWN0ZWQnLCB0 aGlzLnNob3dEZXBlbmRlbnRzKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmKGNsb3NlZCkg eworICAgICAgICAgICQodGhpcy5kZXBlbmRlbnRzUGFuZWwpLmRhdGEoJ25vZGUtcHJvcCcsICcn KTsKKyAgICAgICAgfQorICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGxpc3RlbiB0aGUgdHJl ZSBpdGVtIHNlbGVjdGlvbiBldmVudC4KKyAgICAgICAgcGdCcm93c2VyLkV2ZW50cy5vZmYoJ3Bn YWRtaW4tYnJvd3Nlcjp0cmVlOnNlbGVjdGVkJywgdGhpcy5zaG93RGVwZW5kZW50cyk7CisgICAg ICB9CiAgICAgfSwKIAogICAgIC8qIEZ1bmN0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIGFuZCByZW5k ZXIgYmFja2dyaWQgd2l0aApAQCAtMTEzLDYgKzEzMyw3IEBAIGRlZmluZSgnbWlzYy5kZXBlbmRl bnRzJywgWwogICAgICAgLy8gQ29uZGl0aW9uIGlzIHVzZWQgdG8gc2F2ZSBncmlkIG9iamVjdCB0 byBjaGFuZ2UgdGhlIGxhYmVsIG9mIHRoZSBoZWFkZXIuCiAgICAgICB0aGlzLmRlcGVuZGVudEdy aWQgPSBncmlkOwogCisgICAgICAkZ3JpZENvbnRhaW5lci5lbXB0eSgpOwogICAgICAgJGdyaWRD b250YWluZXIuYXBwZW5kKGdyaWQucmVuZGVyKCkuZWwpOwogCiAgICAgICByZXR1cm4gdHJ1ZTsK QEAgLTEyMCwxNSArMTQxLDM0IEBAIGRlZmluZSgnbWlzYy5kZXBlbmRlbnRzJywgWwogCiAgICAg Ly8gRmV0Y2ggdGhlIGFjdHVhbCBkYXRhIGFuZCB1cGRhdGUgdGhlIGNvbGxlY3Rpb24KICAgICBz aG93RGVwZW5kZW50czogZnVuY3Rpb24oaXRlbSwgZGF0YSwgbm9kZSkgeworICAgICAgaWYgKCFu b2RlKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgLyoqCisgICAgICAgKiBX ZSBjYW4ndCBzdGFydCBmZXRjaGluZyB0aGUgc3RhdGlzdGljcyBpbW1lZGlhdGVseSwgaXQgaXMg cG9zc2libGUgLQorICAgICAgICogdGhlIHVzZXIgaXMganVzdCB1c2luZyBrZXlib2FyZHMgdG8g c2VsZWN0IHRoZSBub2RlLCBhbmQganVzdAorICAgICAgICogdHJhdmVyc2luZyB0aHJvdWdoLgor ICAgICAgICoKKyAgICAgICAqIFdlIHdpbGwgd2FpdCBmb3Igc29tZSB0aW1lIGJlZm9yZSBmZXRj aGluZworICAgICAgICoqLworICAgICAgaWYgKHRoaXMudGltZW91dCkgeworICAgICAgICBjbGVh clRpbWVvdXQodGhpcy50aW1lb3V0KTsKKyAgICAgIH0KKyAgICAgIHRoaXMudGltZW91dCA9IHNl dFRpbWVvdXQoKCkgPT4geworICAgICAgICB0aGlzLl9fdXBkYXRlQ29sbGVjdGlvbihub2RlLmdl bmVyYXRlX3VybChpdGVtLCAnZGVwZW5kZW50JywgZGF0YSwgdHJ1ZSksIG5vZGUsIGl0ZW0sIGRh dGEuX3R5cGUpOworICAgICAgfSwgNDAwKTsKKyAgICB9LAorCisgICAgLy8gRmV0Y2ggdGhlIGFj dHVhbCBkYXRhIGFuZCB1cGRhdGUgdGhlIGNvbGxlY3Rpb24KKyAgICBfX3VwZGF0ZUNvbGxlY3Rp b246IGZ1bmN0aW9uKHVybCwgbm9kZSwgaXRlbSwgbm9kZV90eXBlKSB7CiAgICAgICBsZXQgc2Vs ZiA9IHRoaXMsCiAgICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBzZWxlY3QgYW4gb2JqZWN0 IGluIHRoZSB0cmVlIHZpZXcuJyksCiAgICAgICAgIHBhbmVsID0gdGhpcy5kZXBlbmRlbnRzUGFu ZWwsCiAgICAgICAgICRjb250YWluZXIgPSBwYW5lbC5sYXlvdXQoKS5zY2VuZSgpLmZpbmQoJy5w Zy1wYW5lbC1jb250ZW50JyksCiAgICAgICAgICRtc2dDb250YWluZXIgPSAkY29udGFpbmVyLmZp bmQoJy5wZy1wYW5lbC1kZXBlbmRzLW1lc3NhZ2UnKSwKICAgICAgICAgJGdyaWRDb250YWluZXIg PSAkY29udGFpbmVyLmZpbmQoJy5wZy1wYW5lbC1kZXBlbmRlbnRzLWNvbnRhaW5lcicpLAotICAg ICAgICB0cmVlSGllcmFyY2h5ID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShpdGVtKSwKLSAg ICAgICAgbl90eXBlID0gZGF0YS5fdHlwZSwKLSAgICAgICAgdXJsID0gbm9kZS5nZW5lcmF0ZV91 cmwoaXRlbSwgJ2RlcGVuZGVudCcsIGRhdGEsIHRydWUpOworICAgICAgICB0cmVlSGllcmFyY2h5 ID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShpdGVtKTsKIAogICAgICAgaWYgKG5vZGUpIHsK ICAgICAgICAgLyogV2UgZmV0Y2ggdGhlIERlcGVuZGVuY2llcyBhbmQgRGVwZW5kZW50cyB0YWIg b25seSBmb3IKQEAgLTEzNiwxMSArMTc2LDIzIEBAIGRlZmluZSgnbWlzYy5kZXBlbmRlbnRzJywg WwogICAgICAgICAgKi8KICAgICAgICAgbXNnID0gZ2V0dGV4dCgnTm8gZGVwZW5kZW50IGluZm9y bWF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgdGhlIHNlbGVjdGVkIG9iamVjdC4nKTsKICAgICAgICAg aWYgKG5vZGUuaGFzRGVwZW5kcykgeworICAgICAgICAgIC8vIEF2b2lkIHVubmVjZXNzYXJ5IHJl bG9hZHMKKyAgICAgICAgICB2YXIgY2FjaGVfZmxhZyA9IHsKKyAgICAgICAgICAgIG5vZGVfdHlw ZTogbm9kZV90eXBlLAorICAgICAgICAgICAgdXJsOiB1cmwsCisgICAgICAgICAgfTsKKyAgICAg ICAgICBpZiAoXy5pc0VxdWFsKCQocGFuZWwpLmRhdGEoJ25vZGUtcHJvcCcpLCBjYWNoZV9mbGFn KSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKyAgICAgICAgICAvLyBDYWNo ZSB0aGUgY3VycmVudCBJRHMgZm9yIG5leHQgdGltZQorICAgICAgICAgICQocGFuZWwpLmRhdGEo J25vZGUtcHJvcCcsIGNhY2hlX2ZsYWcpOworCiAgICAgICAgICAgLyogVXBkYXRpbmcgdGhlIGxh YmVsIGZvciB0aGUgJ2ZpZWxkJyB0eXBlIG9mIHRoZSBiYWNrYm9uZSBtb2RlbC4KICAgICAgICAg ICAgKiBMYWJlbCBzaG91bGQgYmUgIkRhdGFiYXNlIiBpZiB0aGUgbm9kZSB0eXBlIGlzIHRhYmxl c3BhY2Ugb3Igcm9sZQogICAgICAgICAgICAqIGFuZCBkZXBlbmRlbnQgdGFiIGlzIHNlbGVjdGVk LiBGb3Igb3RoZXIgbm9kZXMgYW5kIGRlcGVuZGVuY2llcyB0YWIKICAgICAgICAgICAgKiBpdCBz aG91bGQgYmUgJ1Jlc3RyaWN0aW9uJy4KICAgICAgICAgICAgKi8KKyAgICAgICAgICB0aGlzLl9f YXBwZW5kR3JpZFRvUGFuZWwoKTsKICAgICAgICAgICBpZiAobm9kZS50eXBlID09ICd0YWJsZXNw YWNlJyB8fCBub2RlLnR5cGUgPT0gJ3JvbGUnKSB7CiAgICAgICAgICAgICB0aGlzLmRlcGVuZGVu dEdyaWQuY29sdW1ucy5tb2RlbHNbMl0uc2V0KHsKICAgICAgICAgICAgICAgJ2xhYmVsJzogZ2V0 dGV4dCgnRGF0YWJhc2UnKSwKQEAgLTE1Niw4NSArMjA4LDg4IEBAIGRlZmluZSgnbWlzYy5kZXBl bmRlbnRzJywgWwogICAgICAgICAgICRncmlkQ29udGFpbmVyLnJlbW92ZUNsYXNzKCdkLW5vbmUn KTsKIAogICAgICAgICAgIHZhciB0aW1lciA9ICcnOwotICAgICAgICAgICQuYWpheCh7Ci0gICAg ICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgICAgIHR5cGU6ICdHRVQnLAotICAgICAgICAgICAg YmVmb3JlU2VuZDogZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0 SGVhZGVyKHBnQWRtaW4uY3NyZl90b2tlbl9oZWFkZXIsIHBnQWRtaW4uY3NyZl90b2tlbik7Ci0g ICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGEgdGltZXIgZm9yIHRoZSByZXF1ZXN0Ci0gICAgICAg ICAgICAgIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAv LyBub3RpZnkgdXNlciBpZiByZXF1ZXN0IGlzIHRha2luZyBsb25nZXIgdGhhbiAxIHNlY29uZAot Ci0gICAgICAgICAgICAgICAgJG1zZ0NvbnRhaW5lci50ZXh0KGdldHRleHQoJ0ZldGNoaW5nIGRl cGVuZGVudCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzZXJ2ZXIuLi4nKSk7Ci0gICAgICAgICAgICAg ICAgJG1zZ0NvbnRhaW5lci5yZW1vdmVDbGFzcygnZC1ub25lJyk7Ci0gICAgICAgICAgICAgICAg bXNnID0gJyc7Ci0KLSAgICAgICAgICAgICAgfSwgMTAwMCk7Ci0gICAgICAgICAgICB9LAotICAg ICAgICAgIH0pCi0gICAgICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAg ICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKLQotICAgICAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+ IDApIHsKLQotICAgICAgICAgICAgICAgIGlmICghJG1zZ0NvbnRhaW5lci5oYXNDbGFzcygnZC1u b25lJykpIHsKLSAgICAgICAgICAgICAgICAgICRtc2dDb250YWluZXIuYWRkQ2xhc3MoJ2Qtbm9u ZScpOworICAgICAgICAgIHZhciBhamF4SG9vayA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg JC5hamF4KHsKKyAgICAgICAgICAgICAgdXJsOiB1cmwsCisgICAgICAgICAgICAgIHR5cGU6ICdH RVQnLAorICAgICAgICAgICAgICBiZWZvcmVTZW5kOiBmdW5jdGlvbih4aHIpIHsKKyAgICAgICAg ICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihwZ0FkbWluLmNzcmZfdG9rZW5faGVhZGVyLCBw Z0FkbWluLmNzcmZfdG9rZW4pOworICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGEgdGltZXIg Zm9yIHRoZSByZXF1ZXN0CisgICAgICAgICAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0 aW9uKCkgeworICAgICAgICAgICAgICAgICAgLy8gbm90aWZ5IHVzZXIgaWYgcmVxdWVzdCBpcyB0 YWtpbmcgbG9uZ2VyIHRoYW4gMSBzZWNvbmQKKworICAgICAgICAgICAgICAgICAgJG1zZ0NvbnRh aW5lci50ZXh0KGdldHRleHQoJ0ZldGNoaW5nIGRlcGVuZGVudCBpbmZvcm1hdGlvbiBmcm9tIHRo ZSBzZXJ2ZXIuLi4nKSk7CisgICAgICAgICAgICAgICAgICAkbXNnQ29udGFpbmVyLnJlbW92ZUNs YXNzKCdkLW5vbmUnKTsKKyAgICAgICAgICAgICAgICAgIG1zZyA9ICcnOworCisgICAgICAgICAg ICAgICAgfSwgMTAwMCk7CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9KQorICAgICAg ICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgICBjbGVhclRpbWVv dXQodGltZXIpOworCisgICAgICAgICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKSB7CisKKyAg ICAgICAgICAgICAgICAgIGlmICghJG1zZ0NvbnRhaW5lci5oYXNDbGFzcygnZC1ub25lJykpIHsK KyAgICAgICAgICAgICAgICAgICAgJG1zZ0NvbnRhaW5lci5hZGRDbGFzcygnZC1ub25lJyk7Cisg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAkZ3JpZENvbnRhaW5lci5yZW1v dmVDbGFzcygnZC1ub25lJyk7CisKKyAgICAgICAgICAgICAgICAgIHNlbGYuZGVwZW5kZW50RGF0 YSA9IHJlczsKKworICAgICAgICAgICAgICAgICAgLy8gTG9hZCBvbmx5IDEwMCByb3dzCisgICAg ICAgICAgICAgICAgICBzZWxmLmRlcGVuZGVudENvbGxlY3Rpb24ucmVzZXQoc2VsZi5kZXBlbmRl bnREYXRhLnNwbGljZSgwLCAxMDApLCB7cGFyc2U6IHRydWV9KTsKKworICAgICAgICAgICAgICAg ICAgLy8gTG9hZCBtb3JlIHJvd3Mgb24gc2Nyb2xsIGRvd24KKyAgICAgICAgICAgICAgICAgIHBn QnJvd3Nlci5FdmVudHMub24oCisgICAgICAgICAgICAgICAgICAgICdwZ2FkbWluLWJyb3dzZXI6 cGFuZWwtZGVwZW5kZW50czonICsKKyAgICAgICAgICAgICAgICAgIHdjRG9ja2VyLkVWRU5ULlND Uk9MTEVELAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fbG9hZE1vcmVSb3dzCisgICAgICAg ICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg ICAgIC8vIERvIG5vdCBsaXN0ZW4gdGhlIHNjcm9sbCBldmVudAorICAgICAgICAgICAgICAgICAg cGdCcm93c2VyLkV2ZW50cy5vZmYoCisgICAgICAgICAgICAgICAgICAgICdwZ2FkbWluLWJyb3dz ZXI6cGFuZWwtZGVwZW5kZW50czonICsKKyAgICAgICAgICAgICAgICAgIHdjRG9ja2VyLkVWRU5U LlNDUk9MTEVECisgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgICBzZWxm LmRlcGVuZGVudENvbGxlY3Rpb24ucmVzZXQoe3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgICAg ICAgICAgJG1zZ0NvbnRhaW5lci50ZXh0KG1zZyk7CisgICAgICAgICAgICAgICAgICAkbXNnQ29u dGFpbmVyLnJlbW92ZUNsYXNzKCdkLW5vbmUnKTsKKworICAgICAgICAgICAgICAgICAgaWYgKCEk Z3JpZENvbnRhaW5lci5oYXNDbGFzcygnZC1ub25lJykpIHsKKyAgICAgICAgICAgICAgICAgICAg JGdyaWRDb250YWluZXIuYWRkQ2xhc3MoJ2Qtbm9uZScpOworICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAkZ3JpZENvbnRhaW5lci5yZW1vdmVD bGFzcygnZC1ub25lJyk7CiAKLSAgICAgICAgICAgICAgICBzZWxmLmRlcGVuZGVudERhdGEgPSBy ZXM7Ci0KLSAgICAgICAgICAgICAgICAvLyBMb2FkIG9ubHkgMTAwIHJvd3MKLSAgICAgICAgICAg ICAgICBzZWxmLmRlcGVuZGVudENvbGxlY3Rpb24ucmVzZXQoc2VsZi5kZXBlbmRlbnREYXRhLnNw bGljZSgwLCAxMDApLCB7cGFyc2U6IHRydWV9KTsKLQotICAgICAgICAgICAgICAgIC8vIExvYWQg bW9yZSByb3dzIG9uIHNjcm9sbCBkb3duCi0gICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50 cy5vbigKLSAgICAgICAgICAgICAgICAgICdwZ2FkbWluLWJyb3dzZXI6cGFuZWwtZGVwZW5kZW50 czonICsKLSAgICAgICAgICAgICAgICB3Y0RvY2tlci5FVkVOVC5TQ1JPTExFRCwKLSAgICAgICAg ICAgICAgICAgIHNlbGYuX19sb2FkTW9yZVJvd3MKLSAgICAgICAgICAgICAgICApOwogCi0gICAg ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gRG8gbm90IGxpc3RlbiB0aGUg c2Nyb2xsIGV2ZW50Ci0gICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy5vZmYoCi0gICAg ICAgICAgICAgICAgICAncGdhZG1pbi1icm93c2VyOnBhbmVsLWRlcGVuZGVudHM6JyArCi0gICAg ICAgICAgICAgICAgd2NEb2NrZXIuRVZFTlQuU0NST0xMRUQKKyAgICAgICAgICAgICAgfSkKKyAg ICAgICAgICAgICAgLmZhaWwoZnVuY3Rpb24oeGhyLCBlcnJvciwgbWVzc2FnZSkgeworICAgICAg ICAgICAgICAgIHZhciBfbGFiZWwgPSB0cmVlSGllcmFyY2h5W25vZGVfdHlwZV0ubGFiZWw7Cisg ICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKAorICAgICAgICAgICAgICAg ICAgJ3BnYWRtaW46bm9kZTpyZXRyaWV2YWw6ZXJyb3InLCAnZGVwZW5kcycsIHhociwgZXJyb3Is IG1lc3NhZ2UKICAgICAgICAgICAgICAgICApOwotCi0gICAgICAgICAgICAgICAgc2VsZi5kZXBl bmRlbnRDb2xsZWN0aW9uLnJlc2V0KHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICAgICAgICAk bXNnQ29udGFpbmVyLnRleHQobXNnKTsKLSAgICAgICAgICAgICAgICAkbXNnQ29udGFpbmVyLnJl bW92ZUNsYXNzKCdkLW5vbmUnKTsKLQotICAgICAgICAgICAgICAgIGlmICghJGdyaWRDb250YWlu ZXIuaGFzQ2xhc3MoJ2Qtbm9uZScpKSB7Ci0gICAgICAgICAgICAgICAgICAkZ3JpZENvbnRhaW5l ci5hZGRDbGFzcygnZC1ub25lJyk7CisgICAgICAgICAgICAgICAgaWYgKCFBbGVydGlmeS5wZ0hh bmRsZUl0ZW1FcnJvcih4aHIsIGVycm9yLCBtZXNzYWdlLCB7CisgICAgICAgICAgICAgICAgICBp dGVtOiBpdGVtLAorICAgICAgICAgICAgICAgICAgaW5mbzogdHJlZUhpZXJhcmNoeSwKKyAgICAg ICAgICAgICAgICB9KSkgeworICAgICAgICAgICAgICAgICAgQWxlcnRpZnkucGdOb3RpZmllcigK KyAgICAgICAgICAgICAgICAgICAgZXJyb3IsIHhociwKKyAgICAgICAgICAgICAgICAgICAgZ2V0 dGV4dCgnRXJyb3IgcmV0cmlldmluZyBkYXRhIGZyb20gdGhlIHNlcnZlcjogJXMnLCBtZXNzYWdl IHx8IF9sYWJlbCksCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGFsZXJ0TXNnKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgaWYoYWxlcnRNc2cgPT09ICdDUllQVEtFWV9TRVQnKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgICBhamF4SG9vaygpOworICAgICAgICAgICAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYXJndW1lbnRz KTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0pOwogICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotCi0KLSAgICAgICAgICAgIH0pCi0gICAg ICAgICAgICAuZmFpbChmdW5jdGlvbih4aHIsIGVycm9yLCBtZXNzYWdlKSB7Ci0gICAgICAgICAg ICAgIHZhciBfbGFiZWwgPSB0cmVlSGllcmFyY2h5W25fdHlwZV0ubGFiZWw7Ci0gICAgICAgICAg ICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigKLSAgICAgICAgICAgICAgICAncGdhZG1pbjpu b2RlOnJldHJpZXZhbDplcnJvcicsICdkZXBlbmRzJywgeGhyLCBlcnJvciwgbWVzc2FnZQotICAg ICAgICAgICAgICApOwotICAgICAgICAgICAgICBpZiAoIUFsZXJ0aWZ5LnBnSGFuZGxlSXRlbUVy cm9yKHhociwgZXJyb3IsIG1lc3NhZ2UsIHsKLSAgICAgICAgICAgICAgICBpdGVtOiBpdGVtLAot ICAgICAgICAgICAgICAgIGluZm86IHRyZWVIaWVyYXJjaHksCi0gICAgICAgICAgICAgIH0pKSB7 Ci0gICAgICAgICAgICAgICAgQWxlcnRpZnkucGdOb3RpZmllcigKLSAgICAgICAgICAgICAgICAg IGVycm9yLCB4aHIsCi0gICAgICAgICAgICAgICAgICBnZXR0ZXh0KCdFcnJvciByZXRyaWV2aW5n IGRhdGEgZnJvbSB0aGUgc2VydmVyOiAlcycsIG1lc3NhZ2UgfHwgX2xhYmVsKSwKLSAgICAgICAg ICAgICAgICAgIGZ1bmN0aW9uKGFsZXJ0TXNnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmKGFs ZXJ0TXNnID09PSAnQ1JZUFRLRVlfU0VUJykgewotICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c2hvd0RlcGVuZGVudHMoaXRlbSwgZGF0YSwgbm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGFyZ3VtZW50cyk7Ci0g ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgIC8vIHNob3cgZmFpbGVkIG1lc3NhZ2UuCi0gICAgICAgICAgICAg ICRtc2dDb250YWluZXIudGV4dChnZXR0ZXh0KCdGYWlsZWQgdG8gcmV0cmlldmUgZGF0YSBmcm9t IHRoZSBzZXJ2ZXIuJykpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgLy8gc2hv dyBmYWlsZWQgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAkbXNnQ29udGFpbmVyLnRleHQoZ2V0 dGV4dCgnRmFpbGVkIHRvIHJldHJpZXZlIGRhdGEgZnJvbSB0aGUgc2VydmVyLicpKTsKKyAgICAg ICAgICAgICAgfSk7CisgICAgICAgICAgfTsKKyAgICAgICAgICBhamF4SG9vaygpOwogICAgICAg ICB9CiAgICAgICB9CiAgICAgICBpZiAobXNnICE9ICcnKSB7CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9taXNjL3N0YXRpc3RpY3Mvc3RhdGljL2pzL3N0YXRpc3RpY3MuanMgYi93ZWIvcGdhZG1p bi9taXNjL3N0YXRpc3RpY3Mvc3RhdGljL2pzL3N0YXRpc3RpY3MuanMKaW5kZXggZTE2NjBlZmE5 Li5mMGRiYzZhM2IgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL21pc2Mvc3RhdGlzdGljcy9zdGF0 aWMvanMvc3RhdGlzdGljcy5qcworKysgYi93ZWIvcGdhZG1pbi9taXNjL3N0YXRpc3RpY3Mvc3Rh dGljL2pzL3N0YXRpc3RpY3MuanMKQEAgLTExNiwxMiArMTE2LDExIEBAIGRlZmluZSgnbWlzYy5z dGF0aXN0aWNzJywgWwogICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CiAgICAgICBfLmJp bmRBbGwoCiAgICAgICAgIHRoaXMsCi0gICAgICAgICdzaG93U3RhdGlzdGljcycsICdwYW5lbFZp c2liaWxpdHlDaGFuZ2VkJywKKyAgICAgICAgJ3Nob3dTdGF0aXN0aWNzJywgJ3RvZ2dsZVZpc2li aWxpdHknLAogICAgICAgICAnX19jcmVhdGVNdWx0aUxpbmVTdGF0aXN0aWNzJywgJ19fY3JlYXRl U2luZ2xlTGluZVN0YXRpc3RpY3MnLCAnX19sb2FkTW9yZVJvd3MnKTsKIAogICAgICAgXy5leHRl bmQoCiAgICAgICAgIHRoaXMsIHsKLSAgICAgICAgICBpbml0aWFsaXplZDogdHJ1ZSwKICAgICAg ICAgICBjb2xsZWN0aW9uOiBuZXcoQmFja2JvbmUuQ29sbGVjdGlvbikobnVsbCksCiAgICAgICAg ICAgc3RhdGlzdGljX2NvbHVtbnM6IFt7CiAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCkBA IC0xMzYsNjYgKzEzNSw0OSBAQCBkZWZpbmUoJ21pc2Muc3RhdGlzdGljcycsIFsKICAgICAgICAg ICAgIGxhYmVsOiBnZXR0ZXh0KCdWYWx1ZScpLAogICAgICAgICAgICAgY2VsbDogJ3N0cmluZycs CiAgICAgICAgICAgfV0sCi0gICAgICAgICAgcGFuZWw6IHBnQnJvd3Nlci5kb2NrZXIuZmluZFBh bmVscygnc3RhdGlzdGljcycpLAogICAgICAgICAgIGNvbHVtbnM6IG51bGwsCiAgICAgICAgICAg Z3JpZDogbnVsbCwKICAgICAgICAgfSk7CiAKLSAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAg IHRoaXMucGFuZWwgPSBwZ0Jyb3dzZXIuZG9ja2VyLmZpbmRQYW5lbHMoJ3N0YXRpc3RpY3MnKTsK KyAgICAgIGlmKHRoaXMucGFuZWwubGVuZ3RoID4gMCkgdGhpcy50b2dnbGVWaXNpYmlsaXR5KHRo aXMucGFuZWxbMF0uaXNWaXNpYmxlKCkpOworICAgIH0sCiAKLSAgICAgIC8vIFdlIHdpbGwgbGlz dGVuIHRvIHRoZSB2aXNpYmlsaXR5IGNoYW5nZSBvZiB0aGUgc3RhdGlzdGljcyBwYW5lbAotICAg ICAgcGdCcm93c2VyLkV2ZW50cy5vbigKLSAgICAgICAgJ3BnYWRtaW4tYnJvd3NlcjpwYW5lbC1z dGF0aXN0aWNzOicgKwotICAgICAgICB3Y0RvY2tlci5FVkVOVC5WSVNJQklMSVRZX0NIQU5HRUQs Ci0gICAgICAgIHRoaXMucGFuZWxWaXNpYmlsaXR5Q2hhbmdlZAotICAgICAgKTsKKyAgICB0b2dn bGVWaXNpYmlsaXR5OiBmdW5jdGlvbih2aXNpYmxlLCBjbG9zZWQ9ZmFsc2UpIHsKKyAgICAgIGlm ICh2aXNpYmxlKSB7CisgICAgICAgIHRoaXMucGFuZWwgPSBwZ0Jyb3dzZXIuZG9ja2VyLmZpbmRQ YW5lbHMoJ3N0YXRpc3RpY3MnKTsKKyAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKKyAg ICAgICAgICBpID0gdC5zZWxlY3RlZCgpLAorICAgICAgICAgIGQgPSBpICYmIHQuaXRlbURhdGEo aSksCisgICAgICAgICAgbiA9IGkgJiYgZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07CiAK LSAgICAgIHBnQnJvd3Nlci5FdmVudHMub24oCi0gICAgICAgICdwZ2FkbWluOmJyb3dzZXI6bm9k ZTp1cGRhdGVkJywKLSAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYgKHRoaXMucGFu ZWwgJiYgdGhpcy5wYW5lbC5sZW5ndGgpIHsKLSAgICAgICAgICAgICQodGhpcy5wYW5lbFswXSku ZGF0YSgnbm9kZS1wcm9wJywgJycpOwotICAgICAgICAgICAgdGhpcy5wYW5lbFZpc2liaWxpdHlD aGFuZ2VkKHRoaXMucGFuZWxbMF0pOwotICAgICAgICAgIH0KLSAgICAgICAgfSwgdGhpcwotICAg ICAgKTsKLQotICAgICAgLy8gSG1tLi4gRGlkIHdlIGZpbmQgdGhlIHN0YXRpc3RpY3MgcGFuZWws IGFuZCBpcyBpdCB2aXNpYmxlIChvcGVubmVkKT8KLSAgICAgIC8vIElmIHRoYXQgaXMgdGhlIGNh c2UgLSB3ZSBuZWVkIHRvIGxpc3RlbiB0aGUgYnJvd3NlciB0cmVlIHNlbGVjdGlvbgotICAgICAg Ly8gZXZlbnRzLgotICAgICAgaWYgKHRoaXMucGFuZWwubGVuZ3RoID09IDApIHsKKyAgICAgICAg cGdCcm93c2VyLk5vZGVTdGF0aXN0aWNzLnNob3dTdGF0aXN0aWNzLmFwcGx5KAorICAgICAgICAg IHBnQnJvd3Nlci5Ob2RlU3RhdGlzdGljcywgW2ksIGQsIG5dCisgICAgICAgICk7CisKKyAgICAg ICAgLy8gV2Ugd2lsbCBzdGFydCBsaXN0ZW5pbmcgdGhlIHRyZWUgc2VsZWN0aW9uIGV2ZW50Lgog ICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9uKAotICAgICAgICAgICdwZ2FkbWluLWJyb3dzZXI6 cGFuZWwtc3RhdGlzdGljczonICsgd2NEb2NrZXIuRVZFTlQuSU5JVCwKLSAgICAgICAgICBmdW5j dGlvbigpIHsKLSAgICAgICAgICAgIHNlbGYucGFuZWwgPSBwZ0Jyb3dzZXIuZG9ja2VyLmZpbmRQ YW5lbHMoJ3N0YXRpc3RpY3MnKTsKLSAgICAgICAgICAgIGlmIChzZWxmLnBhbmVsWzBdLmlzVmlz aWJsZSgpIHx8Ci0gICAgICAgICAgICAgIHNlbGYucGFuZWwubGVuZ3RoICE9IDEpIHsKLSAgICAg ICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy5vbigKLSAgICAgICAgICAgICAgICAncGdhZG1pbi1i cm93c2VyOnRyZWU6c2VsZWN0ZWQnLCB0aGlzLnNob3dTdGF0aXN0aWNzCi0gICAgICAgICAgICAg ICk7Ci0gICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMub24oCi0gICAgICAgICAgICAgICAg J3BnYWRtaW4tYnJvd3Nlcjp0cmVlOnJlZnJlc2hpbmcnLCB0aGlzLnJlZnJlc2hTdGF0aXN0aWNz LCB0aGlzCi0gICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfS5iaW5k KHRoaXMpCisgICAgICAgICAgJ3BnYWRtaW4tYnJvd3Nlcjp0cmVlOnNlbGVjdGVkJywKKyAgICAg ICAgICBwZ0Jyb3dzZXIuTm9kZVN0YXRpc3RpY3Muc2hvd1N0YXRpc3RpY3MKKyAgICAgICAgKTsK KyAgICAgICAgcGdCcm93c2VyLkV2ZW50cy5vbigKKyAgICAgICAgICAncGdhZG1pbi1icm93c2Vy OnRyZWU6cmVmcmVzaGluZycsCisgICAgICAgICAgcGdCcm93c2VyLk5vZGVTdGF0aXN0aWNzLnJl ZnJlc2hTdGF0aXN0aWNzLAorICAgICAgICAgIHRoaXMKICAgICAgICAgKTsKICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgIGlmIChzZWxmLnBhbmVsWzBdLmlzVmlzaWJsZSgpIHx8Ci0gICAgICAgICAg c2VsZi5wYW5lbC5sZW5ndGggIT0gMSkgewotICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMub24o Ci0gICAgICAgICAgICAncGdhZG1pbi1icm93c2VyOnRyZWU6c2VsZWN0ZWQnLCB0aGlzLnNob3dT dGF0aXN0aWNzCi0gICAgICAgICAgKTsKLSAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9uKAot ICAgICAgICAgICAgJ3BnYWRtaW4tYnJvd3Nlcjp0cmVlOnJlZnJlc2hpbmcnLCB0aGlzLnJlZnJl c2hTdGF0aXN0aWNzLCB0aGlzCi0gICAgICAgICAgKTsKKyAgICAgICAgaWYoY2xvc2VkKSB7Cisg ICAgICAgICAgJCh0aGlzLnBhbmVsWzBdKS5kYXRhKCdub2RlLXByb3AnLCAnJyk7CiAgICAgICAg IH0KLSAgICAgIH0KLSAgICAgIGlmIChzZWxmLnBhbmVsLmxlbmd0aCA+IDAgJiYgc2VsZi5wYW5l bFswXS5pc1Zpc2libGUoKSkgewotICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9uKAotICAgICAg ICAgICdwZ2FkbWluLWJyb3dzZXI6dHJlZTpzZWxlY3RlZCcsIHRoaXMuc2hvd1N0YXRpc3RpY3MK KyAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBsaXN0ZW4gdGhlIHRyZWUgaXRlbSBzZWxlY3Rp b24gZXZlbnQuCisgICAgICAgIHBnQnJvd3Nlci5FdmVudHMub2ZmKAorICAgICAgICAgICdwZ2Fk bWluLWJyb3dzZXI6dHJlZTpzZWxlY3RlZCcsCisgICAgICAgICAgcGdCcm93c2VyLk5vZGVTdGF0 aXN0aWNzLnNob3dTdGF0aXN0aWNzCiAgICAgICAgICk7Ci0gICAgICAgIHBnQnJvd3Nlci5FdmVu dHMub24oCi0gICAgICAgICAgJ3BnYWRtaW4tYnJvd3Nlcjp0cmVlOnJlZnJlc2hpbmcnLCB0aGlz LnJlZnJlc2hTdGF0aXN0aWNzLCB0aGlzCisgICAgICAgIHBnQnJvd3Nlci5FdmVudHMub2ZmKAor ICAgICAgICAgICdwZ2FkbWluLWJyb3dzZXI6dHJlZTpyZWZyZXNoaW5nJywKKyAgICAgICAgICBw Z0Jyb3dzZXIuTm9kZVN0YXRpc3RpY3MucmVmcmVzaFN0YXRpc3RpY3MsCisgICAgICAgICAgdGhp cwogICAgICAgICApOwogICAgICAgfQogICAgIH0sCkBAIC00NDAsNDEgKzQyMiw2IEBAIGRlZmlu ZSgnbWlzYy5zdGF0aXN0aWNzJywgWwogCiAgICAgICB0aGlzLmNvbGxlY3Rpb24ucmVzZXQocmVz KTsKICAgICB9LAotCi0gICAgcGFuZWxWaXNpYmlsaXR5Q2hhbmdlZDogZnVuY3Rpb24ocGFuZWwp IHsKLSAgICAgIGlmIChwYW5lbC5pc1Zpc2libGUoKSkgewotICAgICAgICB2YXIgdCA9IHBnQnJv d3Nlci50cmVlLAotICAgICAgICAgIGkgPSB0LnNlbGVjdGVkKCksCi0gICAgICAgICAgZCA9IGkg JiYgdC5pdGVtRGF0YShpKSwKLSAgICAgICAgICBuID0gaSAmJiBkICYmIHBnQnJvd3Nlci5Ob2Rl c1tkLl90eXBlXTsKLQotICAgICAgICBwZ0Jyb3dzZXIuTm9kZVN0YXRpc3RpY3Muc2hvd1N0YXRp c3RpY3MuYXBwbHkoCi0gICAgICAgICAgcGdCcm93c2VyLk5vZGVTdGF0aXN0aWNzLCBbaSwgZCwg bl0KLSAgICAgICAgKTsKLQotICAgICAgICAvLyBXZSB3aWxsIHN0YXJ0IGxpc3RlbmluZyB0aGUg dHJlZSBzZWxlY3Rpb24gZXZlbnQuCi0gICAgICAgIHBnQnJvd3Nlci5FdmVudHMub24oCi0gICAg ICAgICAgJ3BnYWRtaW4tYnJvd3Nlcjp0cmVlOnNlbGVjdGVkJywKLSAgICAgICAgICBwZ0Jyb3dz ZXIuTm9kZVN0YXRpc3RpY3Muc2hvd1N0YXRpc3RpY3MKLSAgICAgICAgKTsKLSAgICAgICAgcGdC cm93c2VyLkV2ZW50cy5vbigKLSAgICAgICAgICAncGdhZG1pbi1icm93c2VyOnRyZWU6cmVmcmVz aGluZycsCi0gICAgICAgICAgcGdCcm93c2VyLk5vZGVTdGF0aXN0aWNzLnJlZnJlc2hTdGF0aXN0 aWNzLAotICAgICAgICAgIHRoaXMKLSAgICAgICAgKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAg IC8vIFdlIGRvbid0IG5lZWQgdG8gbGlzdGVuIHRoZSB0cmVlIGl0ZW0gc2VsZWN0aW9uIGV2ZW50 LgotICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9mZigKLSAgICAgICAgICAncGdhZG1pbi1icm93 c2VyOnRyZWU6c2VsZWN0ZWQnLAotICAgICAgICAgIHBnQnJvd3Nlci5Ob2RlU3RhdGlzdGljcy5z aG93U3RhdGlzdGljcwotICAgICAgICApOwotICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9mZigK LSAgICAgICAgICAncGdhZG1pbi1icm93c2VyOnRyZWU6cmVmcmVzaGluZycsCi0gICAgICAgICAg cGdCcm93c2VyLk5vZGVTdGF0aXN0aWNzLnJlZnJlc2hTdGF0aXN0aWNzLAotICAgICAgICAgIHRo aXMKLSAgICAgICAgKTsKLSAgICAgIH0KLSAgICB9LAogICB9KTsKIAogICByZXR1cm4gcGdCcm93 c2VyLk5vZGVTdGF0aXN0aWNzOwo= --0000000000004627ba05ba5968ae--