Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fRA1z-0002WO-7v for pgadmin-hackers@arkaria.postgresql.org; Fri, 08 Jun 2018 05:33:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fRA1x-0000xd-Q8 for pgadmin-hackers@arkaria.postgresql.org; Fri, 08 Jun 2018 05:33:45 +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 1fRA1x-0000xT-Dt for pgadmin-hackers@lists.postgresql.org; Fri, 08 Jun 2018 05:33:45 +0000 Received: from mail-ot0-x244.google.com ([2607:f8b0:4003:c0f::244]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fRA1g-0006mD-78 for pgadmin-hackers@postgresql.org; Fri, 08 Jun 2018 05:33:42 +0000 Received: by mail-ot0-x244.google.com with SMTP id d19-v6so8769207oti.8 for ; Thu, 07 Jun 2018 22:33:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=VRxRtoWH+r5ULXN4mDUuxUwEEB2e7+31lpZZeQ9wRQI=; b=GkRJOQY/85wg3DXdC4Kv87gVx0mAjZeDC2JT3YDSkF6A32VWxC/jCCYTK2Ehv720+S umhA5w/ibWo7K+lvHMkrA5UYpef6wMRC12317N3IAtlxEMvM23aQvQfuohv9Br7ijZ9W KoPZPU5UGTxCSF0GHZrzuiYsycfx4e0VXILk5Bk0vlDRd8Ra/uhM/2OHUCz6548NkrcU MJixBqx/LBhOP5D/AF1p/fgyrDVfU+ZdDjB28d9M5N2UXEZlbRoMrM70N3sEyUn/weYZ xhxhoBpTNFWTpl3wRXeOVPg0ZKspxLLS8uAk1OXnTmzfVRrWsbuwjlvs4jECJH3LNPH2 70dA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=VRxRtoWH+r5ULXN4mDUuxUwEEB2e7+31lpZZeQ9wRQI=; b=YkBd2kOe1BqPwLCaqehISI/JPybKUl8ZgdpfbWOvpYQBGpTHUYL87PM8uN7zrE4kAo CFzJayh0z9RzkQwgdzKW6zYD95TtIke78lRzp6Q8qo1Z3frOI+3knHpVdWtjeGpbeN05 bqjNCaW/8QXqlhcUcIJhXRXzCIImjTkf2Mixb8tbT2v5G/6DszlWW8oVwninD3Vypene 82uR/RNqW5riO4V7nv9xIYJzETS9Se9HW5rW1vtuWSipFPofnup8wWuMZQ63oHoTx+I8 KHrGQCOj40y5GkI1vVs3kRToAw3xYLuR4yged57li2j2ybdotE76cdu56EC+6ju8tsxu zD9g== X-Gm-Message-State: APt69E1nY6pP6FjC/Rez6pzoLsCF7cy8HfTEiULw8Qg7cA+oIz9HS8YJ 7vpqAGYvH/DRjnT0IEo9jpi+wgk1GH7ZNzM8SJ7ms68w X-Google-Smtp-Source: ADUXVKJZJqWqZDW2nzsA3AhuNb3y75bSSZ5a9te7NuXvccNMlToZJozu3BChdBy2mkYh9Pn5nymF9yEwqiM5N2ZU7CY= X-Received: by 2002:a9d:522:: with SMTP id 31-v6mr2987056otw.391.1528436005530; Thu, 07 Jun 2018 22:33:25 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:4081:0:0:0:0:0 with HTTP; Thu, 7 Jun 2018 22:33:24 -0700 (PDT) In-Reply-To: References: From: Khushboo Vashi Date: Fri, 8 Jun 2018 11:03:24 +0530 Message-ID: Subject: Re: [pgadmin4][Patch]: Test cases for the backup module To: Dave Page Cc: Victoria Henry , Joao De Almeida Pereira , pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000002c384a056e1abdb9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000002c384a056e1abdb9 Content-Type: multipart/alternative; boundary="0000000000002c3846056e1abdb7" --0000000000002c3846056e1abdb7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Dave, As per our discussion I have changed the window size to 1280X800, before it was 1280X900. Please find the attached updated patch. Thanks, Khushboo On Wed, Jun 6, 2018 at 3:54 PM, Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > > > On Wed, Jun 6, 2018 at 2:30 PM, Dave Page wrote: > >> Hi >> >> I'm seeing various failures with this patch. Many of them appear to be >> being caused by the notification popups obscuring elements. Perhaps they >> need to be explicitly closed? Errors below, screenshots attached. >> > Notifications should be taken care by test cases. On my MAC and Linux > these are working fine. > I will check with someone else's machine. > >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> ERROR: runTest (pgadmin.feature_tests.pg_util >> ities_backup_restore_test.PGUtilitiesBackupFeatureTest) >> Test for PG utilities - Backup and Restore >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities= _backup_restore_test.py", >> line 97, in runTest >> self.page.find_by_xpath("//div[contains(@class,'wcFloatingFocus')" >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 171, in find_by_xpath >> lambda driver: driver.find_element_by_xpath(xpath) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 263, in wait_for_element >> return self._wait_for("element to exist", element_if_it_exists) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 337, in _wait_for >> "Timed out waiting for " + waiting_for_message >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/support/wait.py", line 80, in until >> raise TimeoutException(message, screen, stacktrace) >> TimeoutException: Message: Timed out waiting for element to exist >> >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> ERROR: runTest (pgadmin.feature_tests.xss_che >> cks_file_manager_test.CheckFileManagerFeatureTest) >> Tests to check if File manager is vulnerable to XSS >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/base_feat= ure_test.py", >> line 66, in tearDown >> self.after() >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_f= ile_manager_test.py", >> line 46, in after >> self.page.close_query_tool('sql', False) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 104, in close_query_tool >> "//li[contains(@class, 'context-menu-item')]/span[contains(text()," >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 171, in find_by_xpath >> lambda driver: driver.find_element_by_xpath(xpath) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 263, in wait_for_element >> return self._wait_for("element to exist", element_if_it_exists) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 337, in _wait_for >> "Timed out waiting for " + waiting_for_message >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/support/wait.py", line 80, in until >> raise TimeoutException(message, screen, stacktrace) >> TimeoutException: Message: Timed out waiting for element to exist >> >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> ERROR: runTest (pgadmin.feature_tests.xss_che >> cks_panels_and_query_tool_test.CheckForXssFeatureTest) >> Test XSS check for panels and query tool >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_che >> cks_panels_and_query_tool_test.py", line 57, in runTest >> self.page.add_server(self.server) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 65, in add_server >> self.find_by_xpath("//button[contains(.,'Save')]").click() >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webelement.py", line 80, in click >> self._execute(Command.CLICK_ELEMENT) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webelement.py", line 628, in _execute >> return self._parent.execute(command, params) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webdriver.py", line 312, in execute >> self.error_handler.check_response(response) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/errorhandler.py", line 242, in >> check_response >> raise exception_class(message, screen, stacktrace) >> WebDriverException: Message: unknown error: Element is no= t >> clickable at point (661, 761). Other element would receive the click: > class=3D"pg-bg-etime">... >> (Session info: chrome=3D66.0.3359.181) >> (Driver info: chromedriver=3D2.38.552518 (183d19265345f54ce39cbb94cf81= ba5f15905011),platform=3DMac >> OS X 10.12.6 x86_64) >> >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> ERROR: runTest (pgadmin.feature_tests.xss_che >> cks_panels_and_query_tool_test.CheckForXssFeatureTest) >> Test XSS check for panels and query tool >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/base_feat= ure_test.py", >> line 66, in tearDown >> self.after() >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_che >> cks_panels_and_query_tool_test.py", line 69, in after >> self.page.remove_server(self.server) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 124, in remove_server >> "' and @class=3D'aciTreeItem']") >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 171, in find_by_xpath >> lambda driver: driver.find_element_by_xpath(xpath) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 263, in wait_for_element >> return self._wait_for("element to exist", element_if_it_exists) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 337, in _wait_for >> "Timed out waiting for " + waiting_for_message >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/support/wait.py", line 80, in until >> raise TimeoutException(message, screen, stacktrace) >> TimeoutException: Message: Timed out waiting for element to exist >> >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> ERROR: runTest (pgadmin.feature_tests.xss_che >> cks_pgadmin_debugger_test.CheckDebuggerForXssFeatureTest) >> Tests to check if Debugger is vulnerable to XSS >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_p= gadmin_debugger_test.py", >> line 41, in runTest >> self.page.add_server(self.server) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 65, in add_server >> self.find_by_xpath("//button[contains(.,'Save')]").click() >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webelement.py", line 80, in click >> self._execute(Command.CLICK_ELEMENT) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webelement.py", line 628, in _execute >> return self._parent.execute(command, params) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webdriver.py", line 312, in execute >> self.error_handler.check_response(response) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/errorhandler.py", line 242, in >> check_response >> raise exception_class(message, screen, stacktrace) >> WebDriverException: Message: unknown error: Element is no= t >> clickable at point (661, 761). Other element would receive the click: > class=3D"pg-bg-etime">... >> (Session info: chrome=3D66.0.3359.181) >> (Driver info: chromedriver=3D2.38.552518 (183d19265345f54ce39cbb94cf81= ba5f15905011),platform=3DMac >> OS X 10.12.6 x86_64) >> >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> ERROR: runTest (pgadmin.feature_tests.xss_che >> cks_pgadmin_debugger_test.CheckDebuggerForXssFeatureTest) >> Tests to check if Debugger is vulnerable to XSS >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/base_feat= ure_test.py", >> line 66, in tearDown >> self.after() >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_p= gadmin_debugger_test.py", >> line 46, in after >> self.page.remove_server(self.server) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 124, in remove_server >> "' and @class=3D'aciTreeItem']") >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 171, in find_by_xpath >> lambda driver: driver.find_element_by_xpath(xpath) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 263, in wait_for_element >> return self._wait_for("element to exist", element_if_it_exists) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 337, in _wait_for >> "Timed out waiting for " + waiting_for_message >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/support/wait.py", line 80, in until >> raise TimeoutException(message, screen, stacktrace) >> TimeoutException: Message: Timed out waiting for element to exist >> >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> ERROR: runTest (pgadmin.feature_tests.xss_che >> cks_roles_control_test.CheckRoleMembershipControlFeatureTest) >> Tests to check if Role membership control is vulnerable to XSS >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_r= oles_control_test.py", >> line 37, in runTest >> self.page.add_server(self.server) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 65, in add_server >> self.find_by_xpath("//button[contains(.,'Save')]").click() >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webelement.py", line 80, in click >> self._execute(Command.CLICK_ELEMENT) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webelement.py", line 628, in _execute >> return self._parent.execute(command, params) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webdriver.py", line 312, in execute >> self.error_handler.check_response(response) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/errorhandler.py", line 242, in >> check_response >> raise exception_class(message, screen, stacktrace) >> WebDriverException: Message: unknown error: Element is no= t >> clickable at point (661, 761). Other element would receive the click: > class=3D"pg-bg-etime">... >> (Session info: chrome=3D66.0.3359.181) >> (Driver info: chromedriver=3D2.38.552518 (183d19265345f54ce39cbb94cf81= ba5f15905011),platform=3DMac >> OS X 10.12.6 x86_64) >> >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> ERROR: runTest (pgadmin.feature_tests.xss_che >> cks_roles_control_test.CheckRoleMembershipControlFeatureTest) >> Tests to check if Role membership control is vulnerable to XSS >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/base_feat= ure_test.py", >> line 66, in tearDown >> self.after() >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_r= oles_control_test.py", >> line 42, in after >> self.page.remove_server(self.server) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 124, in remove_server >> "' and @class=3D'aciTreeItem']") >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 171, in find_by_xpath >> lambda driver: driver.find_element_by_xpath(xpath) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 263, in wait_for_element >> return self._wait_for("element to exist", element_if_it_exists) >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_p= age.py", >> line 337, in _wait_for >> "Timed out waiting for " + waiting_for_message >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/support/wait.py", line 80, in until >> raise TimeoutException(message, screen, stacktrace) >> TimeoutException: Message: Timed out waiting for element to exist >> >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> FAIL: runTest (pgadmin.feature_tests.pg_util >> ities_maintenance_test.PGUtilitiesMaintenanceFeatureTest) >> Test for PG maintenance: database pg_maintenance >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities= _maintenance_test.py", >> line 63, in runTest >> self._verify_command() >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities= _maintenance_test.py", >> line 90, in _verify_command >> self.assertEquals(command, "VACUUM " >> AssertionError: u'Backing up an object on the server \'Regression - PG >> 9.4 Feature Tests (localhost:5432)\' from database >> \'pg_utility_test_db\'...\nRunning command:\n/Library/PostgreSQL/9.4/bin= /pg_dump >> --file "/Users/dpage/test_backup" --host "localhost" --port "5432" >> --username "postgres" --no-password --verbose --format=3Dc --blobs >> "pg_utility_test_db"' !=3D 'VACUUM (VERBOSE)\nRunning Query:\nVACUUM VER= BOSE;' >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> FAIL: runTest (pgadmin.feature_tests.pg_util >> ities_maintenance_test.PGUtilitiesMaintenanceFeatureTest) >> Test for PG maintenance: database >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities= _maintenance_test.py", >> line 63, in runTest >> self._verify_command() >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities= _maintenance_test.py", >> line 97, in _verify_command >> " public." + self.table_name + ";") >> AssertionError: u'Backing up an object on the server \'Regression - PG >> 9.4 Feature Tests (localhost:5432)\' from database >> \'pg_utility_test_db\'...\nRunning command:\n/Library/PostgreSQL/9.4/bin= /pg_dump >> --file "/Users/dpage/test_backup" --host "localhost" --port "5432" >> --username "postgres" --no-password --verbose --format=3Dc --blobs >> "pg_utility_test_db"' !=3D 'VACUUM (VERBOSE)\nRunning Query:\nVACUUM VER= BOSE >> public.pg_maintenance_table;' >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> FAIL: runTest (pgadmin.tools.maintenance.tes >> ts.test_create_maintenance_job.MaintenanceJobTest) >> When maintenance the object with the default options >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/maintenance/tes >> ts/test_create_maintenance_job.py", line 85, in runTest >> self.assertIn(self.expected_cmd, process_list[0]['details']) >> AssertionError: 'VACUUM VERBOSE' not found in u'
Backin= g >> up an object on the server \'Regression - PG 9.4 Feature Tests >> (localhost:5432)\' from database \'pg_utility_test_db\'...
> class=3D"h5">Running command:
> enable-selection">/Library/PostgreSQL/9.4/bin/pg_dump --file >> "/Users/dpage/test_backup" --host "localhost" --port "5432" --username >> "postgres" --no-password --verbose --format=3Dc --blobs >> "pg_utility_test_db"
' >> >> ---------------------------------------------------------------------- >> Ran 369 tests in 493.707s >> >> FAILED (failures=3D3, errors=3D8, skipped=3D21) >> >> >> >> On Wed, Jun 6, 2018 at 7:57 AM, Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> Please find the atatched patch with the PEP8 fixes. >>> >>> On Wed, Jun 6, 2018 at 10:42 AM, Khushboo Vashi < >>> khushboo.vashi@enterprisedb.com> wrote: >>> >>>> Hi Dave, >>>> >>>> As per our discussion I have added the code to clean up the generated >>>> files. >>>> Please find the attached updated patch. >>>> >>>> Thanks, >>>> Khushboo >>>> >>>> On Wed, Jun 6, 2018 at 9:37 AM, Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> Hi Victoria, >>>>> >>>>> As per the logs, Restore job is failing only for GPDB. As I don't hav= e >>>>> setup for the greenplum database, can you please check this functiona= lity >>>>> works well in pgAdmin4 with GPDB? >>>>> >>>>> Thanks, >>>>> Khushboo >>>>> >>>>> On Wed, Jun 6, 2018 at 5:13 AM, Victoria Henry >>>>> wrote: >>>>> >>>>>> Hi Khushboo >>>>>> >>>>>> The tests are still failing and seems flaky: >>>>>> https://gpdb-dev.bosh.pivotalci.info/teams/pgadmin/pipelines >>>>>> /pgadmin-patch/jobs/run-tests/builds/113 >>>>>> >>>>>> Sincerely, >>>>>> >>>>>> Victoria >>>>>> >>>>>> On Tue, Jun 5, 2018 at 4:50 AM Khushboo Vashi < >>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Tue, Jun 5, 2018 at 2:09 PM, Dave Page wrote= : >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Jun 5, 2018 at 9:37 AM, Khushboo Vashi < >>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Tue, Jun 5, 2018 at 1:36 PM, Dave Page >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi >>>>>>>>>> >>>>>>>>>> On Tue, Jun 5, 2018 at 4:39 AM, Khushboo Vashi < >>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Mon, Jun 4, 2018 at 8:41 PM, Joao De Almeida Pereira < >>>>>>>>>>> jdealmeidapereira@pivotal.io> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi Khushboo, >>>>>>>>>>>> >>>>>>>>>>>> Some tests are failing in greenplum: >>>>>>>>>>>> https://gpdb-dev.bosh.pivotalci.info/teams/pgadmin/pipelines >>>>>>>>>>>> /pgadmin-patch/jobs/run-tests/builds/108 >>>>>>>>>>>> The piece of code responsible for the error is: >>>>>>>>>>>> >>>>>>>>>>>> if server['default_binary_paths'] is not None: >>>>>>>>>>>> test_utils.set_preference(server['default_binary_paths']) >>>>>>>>>>>> >>>>>>>>>>>> config.DEFAULT_BINARY_PATHS =3D { >>>>>>>>>>>> "pg": str(server['default_binary_paths']['pg']), >>>>>>>>>>>> "ppas": str(server['default_binary_paths']['ppas']), >>>>>>>>>>>> "gpdb": "" >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Can you send me the test_config.json file? The above code set= s >>>>>>>>>>> the paths to the SQLite database and through the logs couldn't = figure out >>>>>>>>>>> the exact failure. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> It seems clear from the code shown that it's not setting the >>>>>>>>>> binary paths for gpdb database servers. Shouldn't it be somethin= g like: >>>>>>>>>> >>>>>>>>>> config.DEFAULT_BINARY_PATHS =3D { >>>>>>>>>> "pg": str(server['default_binary_paths']['pg']), >>>>>>>>>> "ppas": str(server['default_binary_paths']['ppas']), >>>>>>>>>> "gpdb": str(server['default_binary_paths']['gpdb']) >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> Without this code, the test cases should work as I already set >>>>>>>>> paths through below code. >>>>>>>>> >>>>>>>>> test_utils.set_preference(server['default_binary_paths']) >>>>>>>>> >>>>>>>>> >>>>>>>> In that case, why is the code above required at all? >>>>>>>> >>>>>>>> My bad. Removed this code and also updated set_preference function >>>>>>> for greenplum database. >>>>>>> Please find the attached updated patch. >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>>> test_backup_utils.py file name is misleading, these are not >>>>>>>>>>>> tests, are helpers. >>>>>>>>>>>> =E2=80=8B >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Thanks >>>>>>>>>>>> Victoria & Joao >>>>>>>>>>>> >>>>>>>>>>>> On Mon, Jun 4, 2018 at 1:36 AM Khushboo Vashi < >>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Sat, Jun 2, 2018 at 3:01 AM, Dave Page >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi >>>>>>>>>>>>>> >>>>>>>>>>>>>> This looks good, except that it's leaving the >>>>>>>>>>>>>> test_restore_database behind. Can we clean that up please? >>>>>>>>>>>>>> >>>>>>>>>>>>>> PFA updated patch. >>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks. >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Fri, Jun 1, 2018 at 7:06 AM, Khushboo Vashi < >>>>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Victoria, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks for reviewing the patch. >>>>>>>>>>>>>>> The tests were failing due to the latest commit >>>>>>>>>>>>>>> #2b4605a9d390cb44e5dfe9967c3adf2b28d04f1f - Ensure >>>>>>>>>>>>>>> backup/restore/maintenance work via SSH tunnels. Fixes #335= 5 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I have fixed the issues and attached the updated patch. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> Khushboo >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Thu, May 31, 2018 at 10:00 PM, Victoria Henry < >>>>>>>>>>>>>>> vhenry@pivotal.io> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi there, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> We've been noticing some issues with the tests on both our >>>>>>>>>>>>>>>> CI and local Mac workstations. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 1. When the following code blocks are invoked - we get >>>>>>>>>>>>>>>> plenty of app.context() issues. It must not be valid >>>>>>>>>>>>>>>> when running tests. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> =E2=80=8B >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> from pgadmin.utils.driver import get_driver >>>>>>>>>>>>>>>> driver =3D get_driver(PG_DEFAULT_DRIVER) >>>>>>>>>>>>>>>> manager =3D driver.connection_manager(self.sid) >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> host =3D manager.local_bind_host if manager.use_ssh_tunnel= else s.host >>>>>>>>>>>>>>>> port =3D manager.local_bind_port if manager.use_ssh_tunnel= else s.port >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2. When we finally enable >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> "default_binary_paths": { >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> in our test_config, we get more failing tests that look >>>>>>>>>>>>>>>> like: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D >>>>>>>>>>>>>>>> FAIL: runTest (pgadmin.tools.restore.tests.test_restore_cr= eate_job_unit_test.RestoreCreateJobTest) >>>>>>>>>>>>>>>> When restore object with option - Miscellaneous >>>>>>>>>>>>>>>> ----------------------------------------------------------= ------------ >>>>>>>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>>>>>>> File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6= /unittest/mock.py", line 1179, in patched >>>>>>>>>>>>>>>> return func(*args, **keywargs) >>>>>>>>>>>>>>>> File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tool= s/restore/tests/test_restore_create_job_unit_test.py", line 295, in runTest >>>>>>>>>>>>>>>> self.assertEquals(response.status_code, 200) >>>>>>>>>>>>>>>> AssertionError: 410 !=3D 200 >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> And >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> When restore object with the sections options ... 2018-05-= 31 12:24:42,988: ERROR pgadmin: illegal environment variable name >>>>>>>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>>>>>>> File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tool= s/restore/__init__.py", line 352, in create_restore_job >>>>>>>>>>>>>>>> manager.export_password_env(p.id) >>>>>>>>>>>>>>>> File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/util= s/driver/psycopg2/server_manager.py", line 365, in export_password_env >>>>>>>>>>>>>>>> os.environ[str(env)] =3D password >>>>>>>>>>>>>>>> File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6= /os.py", line 675, in __setitem__ >>>>>>>>>>>>>>>> self.putenv(key, value) >>>>>>>>>>>>>>>> ValueError: illegal environment variable name >>>>>>>>>>>>>>>> FAIL >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> =E2=80=8B >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Sincerely, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Victoria && Anthony >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Thu, May 31, 2018 at 1:16 AM Khushboo Vashi < >>>>>>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Please find the attached updated patch with the fixes. >>>>>>>>>>>>>>>>> The test cases were only failing on MAC not on Linux. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>> Khushboo >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Wed, May 30, 2018 at 10:13 AM, Khushboo Vashi < >>>>>>>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Wed, May 30, 2018 at 1:05 AM, Dave Page < >>>>>>>>>>>>>>>>>> dpage@pgadmin.org> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Hi >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Mon, May 28, 2018 at 8:09 AM, Khushboo Vashi < >>>>>>>>>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> please find the attached updated patch for the test >>>>>>>>>>>>>>>>>>>> cases of Backup, Restore and Maintenance modules which= includes: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> 1. Unit test cases >>>>>>>>>>>>>>>>>>>> 2. End to end regression test cases >>>>>>>>>>>>>>>>>>>> 3. Feature test cases >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Thanks. I've yet to be able to run the feature tests >>>>>>>>>>>>>>>>>>> successfully. Here's what I've found so far: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> 1) DEFAULT_BINARY_PATHS should be default_binary_paths >>>>>>>>>>>>>>>>>>> in the JSON config file. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Will do. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> 2) I've hit screensize related issues: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> ERROR: runTest (pgadmin.feature_tests.pg_util >>>>>>>>>>>>>>>>>>> ities_maintenance_test.PGUtili >>>>>>>>>>>>>>>>>>> tiesMaintenanceFeatureTest) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Test for PG maintenance: database >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> ------------------------------ >>>>>>>>>>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>>>>>> /pgadmin/feature_tests/pg_utilities_maintenance_test.py= ", >>>>>>>>>>>>>>>>>>> line 56, in runTest >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> self._open_maintenance_dialogue() >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>>>>>> /pgadmin/feature_tests/pg_utilities_maintenance_test.py= ", >>>>>>>>>>>>>>>>>>> line 75, in _open_maintenance_dialogue >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> "*[.=3D'" + self.table_name + >>>>>>>>>>>>>>>>>>> "']/../*[@class=3D'aciTreeItem'" >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>>>>>>>>> dmin4/lib/python2.7/site-packa >>>>>>>>>>>>>>>>>>> ges/selenium/webdriver/remote/webelement.py", line 80, >>>>>>>>>>>>>>>>>>> in click >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> self._execute(Command.CLICK_ELEMENT) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>>>>>>>>> dmin4/lib/python2.7/site-packa >>>>>>>>>>>>>>>>>>> ges/selenium/webdriver/remote/webelement.py", line 628, >>>>>>>>>>>>>>>>>>> in _execute >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> return self._parent.execute(command, params) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>>>>>>>>> dmin4/lib/python2.7/site-packa >>>>>>>>>>>>>>>>>>> ges/selenium/webdriver/remote/webdriver.py", line 312, >>>>>>>>>>>>>>>>>>> in execute >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> self.error_handler.check_response(response) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>>>>>>>>> dmin4/lib/python2.7/site-packa >>>>>>>>>>>>>>>>>>> ges/selenium/webdriver/remote/errorhandler.py", line >>>>>>>>>>>>>>>>>>> 242, in check_response >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> raise exception_class(message, screen, stacktrace) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> WebDriverException: Message: unknown error: Element >>>>>>>>>>>>>>>>>>> ... is not clickable= at point (223, 604). >>>>>>>>>>>>>>>>>>> Other element would receive the click:
>>>>>>>>>>>>>>>>>> wcPanelBackground wcScrollableX wcScrollableY" style=3D= "left: 0px; right: >>>>>>>>>>>>>>>>>>> 0px; bottom: 0px;">...
>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> (Session info: chrome=3D66.0.3359.181) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> (Driver info: chromedriver=3D2.38.552518 >>>>>>>>>>>>>>>>>>> (183d19265345f54ce39cbb94cf81ba5f15905011),platform=3DM= ac >>>>>>>>>>>>>>>>>>> OS X 10.12.6 x86_64) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> 3) One time the test did start, but then I saw this >>>>>>>>>>>>>>>>>>> failure: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> ERROR: runTest (pgadmin.feature_tests.pg_util >>>>>>>>>>>>>>>>>>> ities_backup_restore_test.PGUtilitiesBackupFeatureTest) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Test for PG utilities - Backup and Restore >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> ------------------------------ >>>>>>>>>>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>>>>>> /pgadmin/feature_tests/pg_utilities_backup_restore_test= .py", >>>>>>>>>>>>>>>>>>> line 93, in runTest >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> self.page.fill_input_by_field_name("file", >>>>>>>>>>>>>>>>>>> "test_backup_file") >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>>>>>> /regression/feature_utils/pgadmin_page.py", line 211, >>>>>>>>>>>>>>>>>>> in fill_input_by_field_name >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> self.wait_for_input_field_content(field_name, >>>>>>>>>>>>>>>>>>> field_content) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>>>>>> /regression/feature_utils/pgadmin_page.py", line 251, >>>>>>>>>>>>>>>>>>> in wait_for_input_field_content >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> "field to contain '" + str(content) + "'", >>>>>>>>>>>>>>>>>>> input_field_has_content >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>>>>>> /regression/feature_utils/pgadmin_page.py", line 337, >>>>>>>>>>>>>>>>>>> in _wait_for >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> "Timed out waiting for " + waiting_for_message >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>>>>>>>>> dmin4/lib/python2.7/site-packa >>>>>>>>>>>>>>>>>>> ges/selenium/webdriver/support/wait.py", line 80, in >>>>>>>>>>>>>>>>>>> until >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> raise TimeoutException(message, screen, stacktrace) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> TimeoutException: Message: Timed out waiting for field >>>>>>>>>>>>>>>>>>> to contain 'test_backup_file' >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> (with screenshot attached) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Thanks. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I have ran the feature tests with multiple servers many >>>>>>>>>>>>>>>>>> times but didn't get a single failure. >>>>>>>>>>>>>>>>>> I have asked Akshay to run on his machine, let see what >>>>>>>>>>>>>>>>>> he gets. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>> Khushboo >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Wed, Apr 25, 2018 at 9:40 PM, Joao De Almeida >>>>>>>>>>>>>>>>>>>> Pereira wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Hi Khushboo, >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> We reviewed the patch and it is very nice to see some >>>>>>>>>>>>>>>>>>>>> more coverage in this area. Good job :D >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> We passed the tests through our CI the feature tests >>>>>>>>>>>>>>>>>>>>> are not passing, but the linter fails: >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:3= 7: [E501] line too long (91 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:5= 3: [E501] line too long (104 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:5= 9: [E501] line too long (85 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:6= 2: [E501] line too long (96 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:6= 3: [E501] line too long (91 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:7= 0: [E501] line too long (118 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:3= 7: [E121] continuation line under-indented for hanging indent >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:4= 8: [E122] continuation line missing indentation or outdented >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:4= 9: [E251] unexpected spaces around keyword / parameter equals >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:4= 9: [E251] unexpected spaces around keyword / parameter equals >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:5= 1: [E501] line too long (91 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:5= 2: [E501] line too long (94 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:5= 3: [E501] line too long (108 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:8= 1: [E501] line too long (113 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:8= 2: [E501] line too long (94 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:8= 3: [E501] line too long (108 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:1= 11: [E501] line too long (100 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:1= 13: [E501] line too long (94 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:1= 14: [E501] line too long (108 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:1= 47: [E501] line too long (93 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:40= : [E121] continuation line under-indented for hanging indent >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:51= : [E122] continuation line missing indentation or outdented >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:13= 5: [E501] line too long (80 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:13= 7: [E501] line too long (83 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:13= 8: [E122] continuation line missing indentation or outdented >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:13= 9: [E122] continuation line missing indentation or outdented >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:14= 0: [E122] continuation line missing indentation or outdented >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:19= 1: [E501] line too long (81 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:20= 3: [E501] line too long (80 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:20= 4: [E128] continuation line under-indented for visual indent >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:20= 4: [E501] line too long (94 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:20= 5: [E128] continuation line under-indented for visual indent >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:20= 5: [E501] line too long (94 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:21= 6: [W391] blank line at end of file >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.p= y:296: [E501] line too long (97 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.p= y:317: [E303] too many blank lines (2) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.p= y:336: [E501] line too long (84 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.p= y:371: [W391] blank line at end of file >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 2 E121 continuation line under-indented for han= ging indent >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 5 E122 continuation line missing indentation or= outdented >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 2 E128 continuation line under-indented for vis= ual indent >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 2 E251 unexpected spaces around keyword / param= eter equals >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 1 E303 too many blank lines (2) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 24 E501 line too long (91 > 79 characters) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 2 W391 blank line at end of file >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 38 >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> For the feature tests, we realized we had to update >>>>>>>>>>>>>>>>>>>>> the configuration, and we did that, but we get the fo= llowing error >>>>>>>>>>>>>>>>>>>>> attached. We spent some time trying to understand the= problem but we were >>>>>>>>>>>>>>>>>>>>> not successful. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Codewise: >>>>>>>>>>>>>>>>>>>>> - We just found some One Letter Variables in the >>>>>>>>>>>>>>>>>>>>> code... >>>>>>>>>>>>>>>>>>>>> - Looks like there is a bug report in this area of th= e >>>>>>>>>>>>>>>>>>>>> code and we do not have coverage for it: >>>>>>>>>>>>>>>>>>>>> https://redmine.postgresql.org/issues/3232 >>>>>>>>>>>>>>>>>>>>> Looks like in some of the unit tests we only have >>>>>>>>>>>>>>>>>>>>> happy path tests, maybe we should see if there are an= y sad paths that also >>>>>>>>>>>>>>>>>>>>> need coverage. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> The configuration change, maybe need to be updated. >>>>>>>>>>>>>>>>>>>>> When we install multiple versions of postgres the bin= aries live in >>>>>>>>>>>>>>>>>>>>> `/usr/lib/postgresql/{{db_version}}/bin`, which makes >>>>>>>>>>>>>>>>>>>>> us think that this configuration should live near the= server configuration, >>>>>>>>>>>>>>>>>>>>> maybe? Also to maintain coherency on the naming maybe= we should make it all >>>>>>>>>>>>>>>>>>>>> lower case. >>>>>>>>>>>>>>>>>>>>> Just as an aside, you can add the gpdb configuration >>>>>>>>>>>>>>>>>>>>> as well in you patch. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Thanks >>>>>>>>>>>>>>>>>>>>> Victoria & Joao >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> On Wed, Apr 25, 2018 at 5:20 AM Khushboo Vashi < >>>>>>>>>>>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Please find the attached patch which covers test >>>>>>>>>>>>>>>>>>>>>> cases for the backup module (RM #3206). >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> 1. Unit test cases >>>>>>>>>>>>>>>>>>>>>> 2. End to end regression test cases >>>>>>>>>>>>>>>>>>>>>> 3. Feature test cases >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>>> Khushboo >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>> >>>> >>> >> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --0000000000002c3846056e1abdb7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Dave,

As per our discussion I have c= hanged the window size to 1280X800, before it was 1280X900.
<= div style=3D"font-size:small;text-decoration-style:initial;text-decoration-= color:initial">Please find the attached updated patch.


Thanks,
Khushboo

On Wed, = Jun 6, 2018 at 3:54 PM, Khushboo Vashi <khushboo.vashi@enter= prisedb.com> wrote:


On = Wed, Jun 6, 2018 at 2:30 PM, Dave Page <dpage@pgadmin.org> w= rote:
Hi

<= div>I'm seeing various failures with this patch. Many of them appear to= be being caused by the notification popups obscuring elements. Perhaps the= y need to be explicitly closed? Errors below, screenshots attached.
Notifications should be taken care by test= cases. On my MAC and Linux these are working fine.
I will check = with someone else's machine.
=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: r= unTest (pgadmin.feature_tests.pg_utilities_backup_restore_test.PGUtilitiesBackupFeatureTest)
Test for PG utilities - Backup and Re= store
------------------------------------------------------= ----------------
Traceback (most recent call last):
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_test= s/pg_utilities_backup_restore_test.py", line 97, in runTest
=
=C2=A0 =C2=A0 self.page.find_by_xpath("//div[contains(@class= ,'wcFloatingFocus')"
=C2=A0 File "/Users/d= page/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py&qu= ot;, line 171, in find_by_xpath
=C2=A0 =C2=A0 lambda driver: driv= er.find_element_by_xpath(xpath)
=C2=A0 File "/Users/dpa= ge/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py"= ;, line 263, in wait_for_element
=C2=A0 =C2=A0 return self._wait_= for("element to exist", element_if_it_exists)
=C2=A0 Fi= le "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", line 337, in _wait_for
=C2=A0 =C2=A0 "= Timed out waiting for " + waiting_for_message
=C2=A0 File &q= uot;/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/selenium/webdriver/support/wait.py", line 80, in until
=C2=A0 =C2=A0 raise TimeoutException(message, screen, stacktrace)
TimeoutException: Message: Timed out waiting for element to exist
<= div>

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: runTest (pgadmin.feature_= tests.xss_checks_file_manager_test.CheckFileManagerFeatureTest)
Tests to check if File manager is vulnerable to XSS
----= -----------------------------------------------------------------= -
Traceback (most recent call last):
=C2=A0 File "= /Users/dpage/git/pgadmin4/web/regression/feature_utils/base_featu= re_test.py", line 66, in tearDown
=C2=A0 =C2=A0 self.after()=
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/fea= ture_tests/xss_checks_file_manager_test.py", line 46, in after
=C2=A0 =C2=A0 self.page.close_query_tool('sql', False)=
=C2=A0 File "/Users/dpage/git/pgadmin4/web/regression/= feature_utils/pgadmin_page.py", line 104, in close_query_tool
=C2=A0 =C2=A0 "//li[contains(@class, 'context-menu-item'= ;)]/span[contains(text(),"
=C2=A0 File "/Users/dpa= ge/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py"= ;, line 171, in find_by_xpath
=C2=A0 =C2=A0 lambda driver: driver= .find_element_by_xpath(xpath)
=C2=A0 File "/Users/dpage= /git/pgadmin4/web/regression/feature_utils/pgadmin_page.py",= line 263, in wait_for_element
=C2=A0 =C2=A0 return self._wait_fo= r("element to exist", element_if_it_exists)
=C2=A0 File= "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", line 337, in _wait_for
=C2=A0 =C2=A0 "Ti= med out waiting for " + waiting_for_message
=C2=A0 File &quo= t;/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/= selenium/webdriver/support/wait.py", line 80, in until
= =C2=A0 =C2=A0 raise TimeoutException(message, screen, stacktrace)
TimeoutException: Message: Timed out waiting for element to exist


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: runTest (pgadmin.feature_te= sts.xss_checks_panels_and_query_tool_test.CheckForXssFeatureTest)=
Test XSS check for panels and query tool
-------------= ---------------------------------------------------------
Traceback (most recent call last):
=C2=A0 File "/Users/dp= age/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_panels_and_= query_tool_test.py", line 57, in runTest
=C2=A0 =C2=A0 = self.page.add_server(self.server)
=C2=A0 File "/Users/d= page/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py&qu= ot;, line 65, in add_server
=C2=A0 =C2=A0 self.find_by_xpath(&quo= t;//button[contains(.,'Save')]").click()
=C2=A0= File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/selenium/webdriver/remote/webelement.py", line 80, in c= lick
=C2=A0 =C2=A0 self._execute(Command.CLICK_ELEMENT)
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2= .7/site-packages/selenium/webdriver/remote/webelement.py", l= ine 628, in _execute
=C2=A0 =C2=A0 return self._parent.execute(co= mmand, params)
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/selenium/webdriver/remote/web= driver.py", line 312, in execute
=C2=A0 =C2=A0 self.error_ha= ndler.check_response(response)
=C2=A0 File "/Users/dpag= e/.virtualenvs/pgadmin4/lib/python2.7/site-packages/selenium/webd= river/remote/errorhandler.py", line 242, in check_response
<= div>=C2=A0 =C2=A0 raise exception_class(message, screen, stacktrace)
<= div>WebDriverException: Message: unknown error: Element <button type=3D&= quot;save" class=3D"btn btn-primary" title=3D"Save this= object.">...</button> is not clickable at point (661, 761). = Other element would receive the click: <div class=3D"pg-bg-etime&qu= ot;>...</div>
=C2=A0 (Session info: chrome=3D66.0.3359.1= 81)
=C2=A0 (Driver info: chromedriver=3D2.38.552518 (183d19265345= f54ce39cbb94cf81ba5f15905011),platform=3DMac OS X 10.12.6 x86_64)


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: runTest (pgadmin.feature_= tests.xss_checks_panels_and_query_tool_test.CheckForXssFeatureTes= t)
Test XSS check for panels and query tool
-----------= -----------------------------------------------------------
=
Traceback (most recent call last):
=C2=A0 File "/Users/= dpage/git/pgadmin4/web/regression/feature_utils/base_feature_test= .py", line 66, in tearDown
=C2=A0 =C2=A0 self.after()
<= div>=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_te= sts/xss_checks_panels_and_query_tool_test.py", line 69, in a= fter
=C2=A0 =C2=A0 self.page.remove_server(self.server)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/regression/featu= re_utils/pgadmin_page.py", line 124, in remove_server
= =C2=A0 =C2=A0 "' and @class=3D'aciTreeItem']")
<= div>=C2=A0 File "/Users/dpage/git/pgadmin4/web/regression/feature= _utils/pgadmin_page.py", line 171, in find_by_xpath
=C2= =A0 =C2=A0 lambda driver: driver.find_element_by_xpath(xpath)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/regression/feature_u= tils/pgadmin_page.py", line 263, in wait_for_element
= =C2=A0 =C2=A0 return self._wait_for("element to exist", element_i= f_it_exists)
=C2=A0 File "/Users/dpage/git/pgadmin4/web= /regression/feature_utils/pgadmin_page.py", line 337, in _wait_fo= r
=C2=A0 =C2=A0 "Timed out waiting for " + waiting_for_= message
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4= /lib/python2.7/site-packages/selenium/webdriver/support/wait.py&q= uot;, line 80, in until
=C2=A0 =C2=A0 raise TimeoutException(mess= age, screen, stacktrace)
TimeoutException: Message: Timed out wai= ting for element to exist


=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ER= ROR: runTest (pgadmin.feature_tests.xss_checks_pgadmin_debugger_test.C= heckDebuggerForXssFeatureTest)
Tests to check if Debugger is= vulnerable to XSS
-----------------------------------------= -----------------------------
Traceback (most recent call la= st):
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin= /feature_tests/xss_checks_pgadmin_debugger_test.py", line 41, in = runTest
=C2=A0 =C2=A0 self.page.add_server(self.server)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/regression/featu= re_utils/pgadmin_page.py", line 65, in add_server
=C2= =A0 =C2=A0 self.find_by_xpath("//button[contains(.,'Save'= )]").click()
=C2=A0 File "/Users/dpage/.virtualenvs/pga= dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/= webelement.py", line 80, in click
=C2=A0 =C2=A0 self._execut= e(Command.CLICK_ELEMENT)
=C2=A0 File "/Users/dpage/.vir= tualenvs/pgadmin4/lib/python2.7/site-packages/selenium/webdriver/= remote/webelement.py", line 628, in _execute
=C2=A0 =C2= =A0 return self._parent.execute(command, params)
=C2=A0 File &quo= t;/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/= selenium/webdriver/remote/webdriver.py", line 312, in execute
=C2=A0 =C2=A0 self.error_handler.check_response(response)
=
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.= 7/site-packages/selenium/webdriver/remote/errorhandler.py", = line 242, in check_response
=C2=A0 =C2=A0 raise exception_class(m= essage, screen, stacktrace)
WebDriverException: Message: unknown = error: Element <button type=3D"save" class=3D"btn btn-pri= mary" title=3D"Save this object.">...</button> is n= ot clickable at point (661, 761). Other element would receive the click: &l= t;div class=3D"pg-bg-etime">...</div>
=C2=A0 (= Session info: chrome=3D66.0.3359.181)
=C2=A0 (Driver info: chrome= driver=3D2.38.552518 (183d19265345f54ce39cbb94cf81ba5f15905011),platfo= rm=3DMac OS X 10.12.6 x86_64)


=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
<= div>ERROR: runTest (pgadmin.feature_tests.xss_checks_pgadmin_debugger_= test.CheckDebuggerForXssFeatureTest)
Tests to check if Debug= ger is vulnerable to XSS
-----------------------------------= -----------------------------------
Traceback (most recent c= all last):
=C2=A0 File "/Users/dpage/git/pgadmin4/web/r= egression/feature_utils/base_feature_test.py", line 66, in tearDo= wn
=C2=A0 =C2=A0 self.after()
=C2=A0 File "/Users/= dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_pgadmin_d= ebugger_test.py", line 46, in after
=C2=A0 =C2=A0 self.page.= remove_server(self.server)
=C2=A0 File "/Users/dpage/gi= t/pgadmin4/web/regression/feature_utils/pgadmin_page.py", li= ne 124, in remove_server
=C2=A0 =C2=A0 "' and @class=3D&= #39;aciTreeItem']")
=C2=A0 File "/Users/dpage/git/p= gadmin4/web/regression/feature_utils/pgadmin_page.py", line = 171, in find_by_xpath
=C2=A0 =C2=A0 lambda driver: driver.find_el= ement_by_xpath(xpath)
=C2=A0 File "/Users/dpage/git/pga= dmin4/web/regression/feature_utils/pgadmin_page.py", line 26= 3, in wait_for_element
=C2=A0 =C2=A0 return self._wait_for("= element to exist", element_if_it_exists)
=C2=A0 File "/= Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_pag= e.py", line 337, in _wait_for
=C2=A0 =C2=A0 "Timed out = waiting for " + waiting_for_message
=C2=A0 File "/Users= /dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/selenium= /webdriver/support/wait.py", line 80, in until
=C2=A0 = =C2=A0 raise TimeoutException(message, screen, stacktrace)
Timeou= tException: Message: Timed out waiting for element to exist

<= /div>

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D
ERROR: runTest (pgadmin.feature_tests.xs= s_checks_roles_control_test.CheckRoleMembershipControlFeatureTest= )
Tests to check if Role membership control is vulnerable to= XSS
-------------------------------------------------------= ---------------
Traceback (most recent call last):
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests= /xss_checks_roles_control_test.py", line 37, in runTest
=C2=A0 =C2=A0 self.page.add_server(self.server)
=C2=A0 File= "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", line 65, in add_server
=C2=A0 =C2=A0 self.fin= d_by_xpath("//button[contains(.,'Save')]").click()
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/pyth= on2.7/site-packages/selenium/webdriver/remote/webelement.py"= , line 80, in click
=C2=A0 =C2=A0 self._execute(Command.CLICK_EL<= wbr>EMENT)
=C2=A0 File "/Users/dpage/.virtualenvs/pgadm= in4/lib/python2.7/site-packages/selenium/webdriver/remote/webelem= ent.py", line 628, in _execute
=C2=A0 =C2=A0 return self._pa= rent.execute(command, params)
=C2=A0 File "/Users/dpage/.vir= tualenvs/pgadmin4/lib/python2.7/site-packages/selenium/webdriver/= remote/webdriver.py", line 312, in execute
=C2=A0 =C2= =A0 self.error_handler.check_response(response)
=C2=A0 File = "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa= ges/selenium/webdriver/remote/errorhandler.py", line 242, in chec= k_response
=C2=A0 =C2=A0 raise exception_class(message, screen, s= tacktrace)
WebDriverException: Message: unknown error: Element &l= t;button type=3D"save" class=3D"btn btn-primary" title= =3D"Save this object.">...</button> is not clickable at = point (661, 761). Other element would receive the click: <div class=3D&q= uot;pg-bg-etime">...</div>
=C2=A0 (Session info: ch= rome=3D66.0.3359.181)
=C2=A0 (Driver info: chromedriver=3D2.38.55= 2518 (183d19265345f54ce39cbb94cf81ba5f15905011),platform=3DMac OS X 10= .12.6 x86_64)


=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: runTest= (pgadmin.feature_tests.xss_checks_roles_control_test.CheckRoleMe= mbershipControlFeatureTest)
Tests to check if Role membershi= p control is vulnerable to XSS
----------------------------------------------------------------------
Traceback (most re= cent call last):
=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/regression/feature_utils/base_feature_test.py", line 66, in = tearDown
=C2=A0 =C2=A0 self.after()
=C2=A0 File "/= Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_rol= es_control_test.py", line 42, in after
=C2=A0 =C2=A0 self.pa= ge.remove_server(self.server)
=C2=A0 File "/Users/dpage= /git/pgadmin4/web/regression/feature_utils/pgadmin_page.py",= line 124, in remove_server
=C2=A0 =C2=A0 "' and @class= =3D'aciTreeItem']")
=C2=A0 File "/Users/dpage/g= it/pgadmin4/web/regression/feature_utils/pgadmin_page.py", l= ine 171, in find_by_xpath
=C2=A0 =C2=A0 lambda driver: driver.fin= d_element_by_xpath(xpath)
=C2=A0 File "/Users/dpage/git= /pgadmin4/web/regression/feature_utils/pgadmin_page.py", lin= e 263, in wait_for_element
=C2=A0 =C2=A0 return self._wait_for(&q= uot;element to exist", element_if_it_exists)
=C2=A0 File &qu= ot;/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin= _page.py", line 337, in _wait_for
=C2=A0 =C2=A0 "Timed = out waiting for " + waiting_for_message
=C2=A0 File "/U= sers/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/sele= nium/webdriver/support/wait.py", line 80, in until
=C2= =A0 =C2=A0 raise TimeoutException(message, screen, stacktrace)
Ti= meoutException: Message: Timed out waiting for element to exist
<= br>

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D
FAIL: runTest (pgadmin.feature_tests.= pg_utilities_maintenance_test.PGUtilitiesMaintenanceFeatureTest)<= /div>
Test for PG maintenance: database pg_maintenance
------= ----------------------------------------------------------------<= /div>
Traceback (most recent call last):
=C2=A0 File "/U= sers/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_ma= intenance_test.py", line 63, in runTest
=C2=A0 =C2=A0 self._= verify_command()
=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/feature_tests/pg_utilities_maintenance_test.py", lin= e 90, in _verify_command
=C2=A0 =C2=A0 self.assertEquals(command,= "VACUUM "
AssertionError: u'Backing up an object o= n the server \'Regression - PG 9.4 Feature Tests (localhost:5432)\'= from database \'pg_utility_test_db\'...\nRunning command:\n/L= ibrary/PostgreSQL/9.4/bin/pg_dump --file "/Users/dpage/test_backu= p" --host "localhost" --port "5432" --username &qu= ot;postgres" --no-password --verbose --format=3Dc --blobs "pg_uti= lity_test_db"' !=3D 'VACUUM (VERBOSE)\nRunning Query:\nVACUUM = VERBOSE;'

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
FAIL: runTest (pgadmin.featur= e_tests.pg_utilities_maintenance_test.PGUtilitiesMaintenanceFeatu= reTest)
Test for PG maintenance: database
-------------= ---------------------------------------------------------
Traceback (most recent call last):
=C2=A0 File "/Users/dp= age/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintenan= ce_test.py", line 63, in runTest
=C2=A0 =C2=A0 self._verify_= command()
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pg= admin/feature_tests/pg_utilities_maintenance_test.py", line 97, i= n _verify_command
=C2=A0 =C2=A0 " public." + self.table= _name + ";")
AssertionError: u'Backing up an object= on the server \'Regression - PG 9.4 Feature Tests (localhost:5432)\= 9; from database \'pg_utility_test_db\'...\nRunning command:\n= /Library/PostgreSQL/9.4/bin/pg_dump --file "/Users/dpage/test_bac= kup" --host "localhost" --port "5432" --username &= quot;postgres" --no-password --verbose --format=3Dc --blobs "pg_u= tility_test_db"' !=3D 'VACUUM (VERBOSE)\nRunning Query:\nVACUU= M VERBOSE public.pg_maintenance_table;'

=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
FAIL: runTest (pgadmin.tools.maintenance.tests.test_create_maintenanc= e_job.MaintenanceJobTest)
When maintenance the object with t= he default options
-----------------------------------------= -----------------------------
Traceback (most recent call la= st):
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin= /tools/maintenance/tests/test_create_maintenance_job.py", li= ne 85, in runTest
=C2=A0 =C2=A0 self.assertIn(self.expected_cmd, process_list[0]['details'])
AssertionError: 'VAC= UUM VERBOSE' not found in u'<div class=3D"h5">Backi= ng up an object on the server \'Regression - PG 9.4 Feature Tests (loca= lhost:5432)\' from database \'pg_utility_test_db\'...</div><div class=3D"h5">Running command:</b><br&g= t;<span class=3D"pg-bg-cmd enable-selection">/Library/PostgreSQL/9.4/bin/pg_dump --file "/Users/dpage/test_backup" --ho= st "localhost" --port "5432" --username "postgres&= quot; --no-password --verbose --format=3Dc --blobs "pg_utility_test_db= "</span></div>'

--------= --------------------------------------------------------------
Ran 369 tests in 493.707s

FAILED (failures= =3D3, errors=3D8, skipped=3D21)


On Wed, Jun 6, 2018 at 7:57 AM, Khushboo = Vashi <khushboo.vashi@enterprisedb.com> w= rote:
Please find the atatched patch with the PEP8 fixes.

On Wed, Jun 6, 2018 at 10:42 AM, Khu= shboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi Dave,

As per our discussion I have added the= code to clean up the generated files.
Please find the attached u= pdated patch.

Thanks,
Khushboo

On Wed, Jun 6, = 2018 at 9:37 AM, Khushboo Vashi <khushboo.vashi@enterprisedb= .com> wrote:
Hi Victoria,

As per the logs= , Restore job is failing only for GPDB. As I don't have setup for the g= reenplum database, can you please check this functionality works well in pg= Admin4 with GPDB?

Thank= s,
Khushboo

On Wed, Jun 6, 2018 at 5:13 AM, Victoria He= nry <vhenry@pivotal.io> wrote:
Hi Khushboo



On Tue, Jun 5, 2018 at 2:09 PM, Dave Page <dpage@pgadmin.org> wrote:


On Tue, Jun 5, 2018 at 9:37 AM, Khushboo Vashi <khushboo.v= ashi@enterprisedb.com> wrote:

=
On Tue, Jun 5, 2018 at 1:36 PM, Dave P= age <dpage@pgadmin.org> wrote:
Hi

On Tue, Jun 5, 2018 at 4= :39 AM, Khushboo Vashi <khushboo.vashi@enterprisedb.com= > wrote:


On Mon, Jun 4, 2018 at 8:41 PM, Joao De Almeida Pereira <jdealmeidapereira@pivotal.io> wrote:
Hi Khushboo,
=
Some tests are failing in greenplum:
The piece of code responsible for the error is= :
if server['default_binary_paths'] is not None:
test_utils.set_preference(server['default_binary_paths'])
config.DEFAULT_BINARY_PATHS =3D {
"pg": str(server['default_bi= nary_paths']['pg&= #39;]),
"ppas": str(server['default_binary_paths']['ppas']),
&quo= t;gpdb": ""
=
}

Can you send me the test_config.json file?=C2= =A0 The above code sets the paths to the SQLite database and through the lo= gs couldn't figure out the exact failure.=C2=A0
=

It seems clear from the code shown = that it's not setting the binary paths for gpdb database servers. Shoul= dn't it be something like:

    config.DEFAULT_BINAR=
Y_PATHS =3D {
"pg&quo= t;: str(server['default_binary_paths'][= 'pg']),
= "ppas": = str(server['default_binary_paths']['ppas']),
= "gpdb": st= r(server['default_binary_paths']['gpdb'])
}
Witho= ut this code, the test cases should work as I already set=C2=A0 paths throu= gh below code.
    test_utils.set_preference(server['default_binary_paths'])
<= /div>

In that case= , why is the code above required at all?
<= div>
My bad. Remov= ed this code and also updated set_preference function for greenplum databas= e.
Please find the attached updated patch.
= =C2=A0
=C2=A0

test_backup= _utils.py file name is misleading, these are not tests, are helpers.=

=E2= =80=8B


Thanks
Victoria & Joao

= On Mon, Jun 4, 2018 at 1:36 AM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:


On Sat, Jun 2, 2018 at 3:01 AM, Dave Page <dpage@pgadmin.org&= gt; wrote:
Hi

This looks good, except that it's le= aving the test_restore_database behind. Can we clean that up please?
<= div>
PFA updated patch.=C2=A0
Thanks.

On Fri, Jun 1, 2018 at 7:06 AM, Khushboo Vashi &= lt;khu= shboo.vashi@enterprisedb.com> wrote:
Hi Victoria,

Thanks for reviewing the patch.
The tests were failing du= e to the latest commit #2b4605a9d390cb44e5dfe9967c3adf2b28d04f1f=C2=A0= - Ensure backup/restore/maintenance work via SSH tunnels. Fixes #3355

I have fixed the issues and attached the updated patch= .

Thanks,
Khushboo=C2=A0
On Thu, May 31, 2018 at 10:00 PM, Victoria Hen= ry <vhenry@pivotal.io> wrote:
Hi there,

We'= ;ve been noticing some issues with the tests on both our CI and local Mac w= orkstations.
  1. When the following code blocks are invoked -= we get plenty of app.context() issues. It must not= be valid when running tests.
=E2=80=8B
=
from pgadmin.utils.driver import get_driver
driver =3D get_driver(P= G_DEFAULT_DRIVER)
manager =3D driver.connection_manager(self.sid)

host =3D manager.local_b= ind_host if manager.use_ssh_tu= nnel else s.host
port =3D m= anager.local_bind_port if mana= ger.use_ssh_tunnel else s.port= =C2=A0
2. When we finally enable=C2=A0
"def=
ault_binary_paths": {
in our test_config, we get more failing tests that look= like:
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D
FAIL: runTest (pgadmin.tools.restore.tests.test_restore_create_job_uni=
t_test.RestoreCreateJobTest)
When restore object with option - Miscellaneous
-----------------------------------------------------------------=
-----
Traceback (most recent call last):
  File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/unitte=
st/mock.py", line 1179, in patched
    return func(*args, **keywargs)
  File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/resto=
re/tests/test_restore_create_job_unit_test.py", line 295, in=
 runTest
    self.assertEquals(response.status_code, 200)
AssertionError: 410 !=3D 200

And

Whe=
n restore object with the sections options ... 2018-05-31 12:24:42,988: ERR=
OR    pgadmin:    illegal environment variable name
Traceback (most recent call last):
  File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/resto=
re/__init__.py", line 352, in create_restore_job
    manager.export_password_env(p=
.id)
  File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/utils/drive=
r/psycopg2/server_manager.py", line 365, in export_password_env
    os.environ[str(env)] =3D password
  File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/os.py&=
quot;, line 675, in __setitem__
    self.putenv(key, value)
ValueError: illegal environment variable name
FAIL
=E2= =80=8B

Sincerely,

<= /div>
Victoria && Anthony

On Thu, May 31, 2018 at 1:16 AM Khus= hboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,

<= /div>
Please find the attached updated patch with the fixes.
= The test cases were only failing on MAC not on Linux.

<= div>Thanks,
Khushboo

On Wed, May 30, 2018 at 10:13 AM, Khushboo Vashi <= span dir=3D"ltr"><khushboo.vashi@enterprisedb.com> wrote:


On Wed, May 3= 0, 2018 at 1:05 AM, Dave Page <dpage@pgadmin.org> wrote:
=
Hi

On Mon, May 2= 8, 2018 at 8:09 AM, Khushboo Vashi <khushboo.vashi@enterpris= edb.com> wrote:
Hi,

please fi= nd the attached updated patch for the test cases of Backup, Restore and Mai= ntenance modules which includes:

1. Unit te= st cases
2. End to end regression test cases=C2=A0
3. Feature tes= t cases

Tha= nks. I've yet to be able to run the feature tests successfully. Here= 9;s what I've found so far:

1) DEFAULT_BINARY_= PATHS should be default_binary_paths in the JSON config file.
Will do.=C2=A0
=
2) I= 've hit screensize related issues:

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

ERROR: runTest (pgadmin.feature_tests.pg_utilities_ma= intenance_test.PGUtilitiesMaintenanceFeatureTest)

Test for PG maintenance: database

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web= /pgadmin/feature_tests/pg_utilities_maintenance_test.py", li= ne 56, in runTest

=C2=A0 =C2=A0 self._open_maintenance_dialogue()

=C2=A0 File "/Users/dpage/git/pgadmin4/web= /pgadmin/feature_tests/pg_utilities_maintenance_test.py", li= ne 75, in _open_maintenance_dialogue

=C2=A0 =C2=A0 "*[.=3D'" + self.ta= ble_name + "']/../*[@class=3D'aciTreeItem'"

=C2=A0 File "/Users/dpage/.virtualenvs/pga= dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/= webelement.py", line 80, in click

=C2=A0 =C2=A0 self._execute(Command.CLICK_ELEMENT)

=C2=A0 File "/Users/dpage/.virtualenvs/pga= dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/= webelement.py", line 628, in _execute

=C2=A0 =C2=A0 return self._parent.execute(comma= nd, params)

=C2=A0 File "/Users/dpage/.virtualenvs/pga= dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/= webdriver.py", line 312, in execute

=C2=A0 =C2=A0 self.error_handler.check_response(response)

=C2=A0 File "/Users/dpage/.virtualenvs/pga= dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/= errorhandler.py", line 242, in check_response

=C2=A0 =C2=A0 raise exception_class(message, sc= reen, stacktrace)

WebDriverException: Message: unknown error: Element <sp= an class=3D"aciTreeItem">...</span> is not clickable at = point (223, 604). Other element would receive the click: <div class=3D&q= uot;wcFrameCenter wcPanelBackground wcScrollableX wcScrollableY" style= =3D"left: 0px; right: 0px; bottom: 0px;">...</div>

=C2=A0 (Session info: chrome=3D66.0.3359.181)

=C2=A0 (Driver info: chromedriver=3D2.38.552518= (183d19265345f54ce39cbb94cf81ba5f15905011),platform=3DMac OS X 10.12.= 6 x86_64)


3) One time the test did start, but then I saw this failure:=

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

ERROR: runTest (pgadmin.feature_tests.pg_utilities_ba= ckup_restore_test.PGUtilitiesBackupFeatureTest)

Test for PG utilities - Backup and Restore

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web= /pgadmin/feature_tests/pg_utilities_backup_restore_test.py",= line 93, in runTest

=C2=A0 =C2=A0 self.page.fill_input_by_field_name("file", "test_backup_file")

=C2=A0 File "/Users/dpage/git/pgadmin4/web= /regression/feature_utils/pgadmin_page.py", line 211, in fil= l_input_by_field_name

=C2=A0 =C2=A0 self.wait_for_input_field_content(field_name, field_content)

=C2=A0 File "/Users/dpage/git/pgadmin4/web= /regression/feature_utils/pgadmin_page.py", line 251, in wai= t_for_input_field_content

=C2=A0 =C2=A0 "field to contain '"= ; + str(content) + "'", input_field_has_content

=C2=A0 File "/Users/dpage/git/pgadmin4/web= /regression/feature_utils/pgadmin_page.py", line 337, in _wa= it_for

=C2=A0 =C2=A0 "Timed out waiting for "= ; + waiting_for_message

=C2=A0 File "/Users/dpage/.virtualenvs/pga= dmin4/lib/python2.7/site-packages/selenium/webdriver/support= /wait.py", line 80, in until

=C2=A0 =C2=A0 raise TimeoutException(message, s= creen, stacktrace)

TimeoutException: Message: Timed out waiting for field to = contain 'test_backup_file'



(with screenshot attached)

Thanks.<= /div>

<= /div>
I have ran the feature tests with = multiple servers many times but didn't get a single failure.
= I have asked Akshay to run on his machine, let see what he gets.
=


=C2=A0
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">

Thanks,
Khushboo



<= div class=3D"m_856347366966095388m_-8583022084454813817gmail-m_-28415280140= 00430272m_1262248545146507593m_4431216195179572076m_-1264414637455024805m_3= 251447040477084952m_6691559589140134092m_-135466435915824739m_5453799416428= 512269m_-2106317768483674112m_-1197089741188147494m_7843895626344194407m_-3= 526725944893088734m_3381906355058094542m_70200867718538141m_428548535596522= 0446m_-8865948898208653791m_-2461637439845439354h5">

On Wed, Apr 25, 2018 at 9:40 PM, Joao De= Almeida Pereira <jdealmeidapereira@pivotal.io> w= rote:
Hi Khushboo,

We reviewed the patch and it is very nice = to see some more coverage in this area. Good job :D

We passed the tests through our CI the feature tests are not passing, but= the linter fails:
./pgadmin/feature_tests/pg_uti<= wbr>lities_backup_test.py:37: [E501] line too long (91 > 79 characters)<= /span>
./pgadmin/feature_tests/pg_utilities_backup= _test.py:53: [E501] line too long (104 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup= _test.py:59: [E501] line too long (85 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup= _test.py:62: [E501] line too long (96 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup= _test.py:63: [E501] line too long (91 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup= _test.py:70: [E501] line too long (118 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:37: [E121] continuation line under-indented for hanging indent
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:48: [E122] continuation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:49: [E251] unexpected spaces around keyword / parameter equals
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:49: [E251] unexpected spaces around keyword / parameter equals
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:51: [E501] line too long (91 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:52: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:53: [E501] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:81: [E501] line too long (113 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:82: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:83: [E501] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:111: [E501] line too long (100 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:113: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:114: [E501] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_me= ssage.py:147: [E501] line too long (93 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:40: [E121] continuation line under-indented for hanging indent
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:51: [E122] continuation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:135: [E501] line too long (80 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:137: [E501] line too long (83 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:138: [E122] continuation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:139: [E122] continuation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:140: [E122] continuation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:191: [E501] line too long (81 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:203: [E501] line too long (80 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:204: [E128] continuation line under-indented for visual indent
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:204: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:205: [E128] continuation line under-indented for visual indent
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:205: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_pro= cess.py:216: [W391] blank line at end of file
./pgadmin/tools/backup/tests/test_create_ba= ckup_job.py:296: [E501] line too long (97 > 79 characters)
./pgadmin/tools/backup/tests/test_create_ba= ckup_job.py:317: [E303] too many blank lines (2)
./pgadmin/tools/backup/tests/test_create_ba= ckup_job.py:336: [E501] line too long (84 > 79 characters)
./pgadmin/tools/backup/tests/test_create_ba= ckup_job.py:371: [W391] blank line at end of file
2 E121 continuation line under-indented fo= r hanging indent
5 E122 continuation line missing indentati= on or outdented
2 E128 continuation line under-indented fo= r visual indent
2 E251 unexpected spaces around keyword / = parameter equals
1 E303 too many blank lines (2)
24 E501 line too long (91 > 79 character= s)
2 W391 blank line at end of file
38

<= div>For the feature tests, we realized we had to update the configuration, = and we did that, but we get the following error attached. We spent some tim= e trying to understand the problem but we were not successful.

Codewise:
- We just found some One Le= tter Variables in the code...
- Looks like there is a bug report = in this area of the code and we do not have coverage for it:=C2=A0https://r= edmine.postgresql.org/issues/3232
=C2=A0 Looks like in s= ome of the unit tests we only have happy path tests, maybe we should see if= there are any sad paths that also need coverage.

= The configuration change, maybe need to be updated. When we install multipl= e versions of postgres the binaries live in `/usr/lib/postgresql/{{db_vers<= wbr>ion}}/bin`, which makes us think that this configuration should live ne= ar the server configuration, maybe? Also to maintain coherency on the namin= g maybe we should make it all lower case.
Just as an aside, you c= an add the gpdb configuration as well in you patch.

Thanks
Victoria & Joao

On Wed, Apr 25, 2018 at 5:20 AM Khushboo Vashi <khushboo= .vashi@enterprisedb.com> wrote:
Hi,

Please = find the attached patch which covers test cases for the backup module (RM #= 3206).

1. Unit test cases
2. End to end = regression test cases=C2=A0
3. Feature test cases

<= /div>
Thanks,
Khushboo

= <= /div>





--
Dave Page
Blog: http://pgsnake.blogspot.comTwitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise= PostgreSQL Company


--0000000000002c3846056e1abdb7-- --0000000000002c384a056e1abdb9 Content-Type: application/octet-stream; name="RM_3206_ver7.patch" Content-Disposition: attachment; filename="RM_3206_ver7.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ji5jb7ud0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfdXRpbGl0aWVzX2JhY2t1 cF9yZXN0b3JlX3Rlc3QucHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGll c19iYWNrdXBfcmVzdG9yZV90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjZiYzYwYTYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3Rz L3BnX3V0aWxpdGllc19iYWNrdXBfcmVzdG9yZV90ZXN0LnB5CkBAIC0wLDAgKzEsMTUxIEBACisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisj IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgdGltZQoraW1wb3J0IG9zCisKK2Zyb20g c2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFdlYkRyaXZlcldhaXQKK2Zyb20g c2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkKK2Zyb20gc2VsZW5pdW0ud2Vi ZHJpdmVyLnN1cHBvcnQgaW1wb3J0IGV4cGVjdGVkX2NvbmRpdGlvbnMgYXMgRUMKK2Zyb20gcmVn cmVzc2lvbi5mZWF0dXJlX3V0aWxzLmJhc2VfZmVhdHVyZV90ZXN0IGltcG9ydCBCYXNlRmVhdHVy ZVRlc3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGls cworCitpbXBvcnQgY29uZmlnCisKKworY2xhc3MgUEdVdGlsaXRpZXNCYWNrdXBGZWF0dXJlVGVz dChCYXNlRmVhdHVyZVRlc3QpOgorICAgICIiIiBUaGlzIGNsYXNzIHRlc3QgUEcgdXRpbGl0aWVz IC0gQmFja3VwIGFuZCBSZXN0b3JlIHRlc3Qgc2NlbmFyaW9zICIiIgorCisgICAgc2NlbmFyaW9z ID0gWworICAgICAgICAoIlRlc3QgZm9yIFBHIHV0aWxpdGllcyAtIEJhY2t1cCBhbmQgUmVzdG9y ZSIsIGRpY3QoKSkKKyAgICBdCisKKyAgICBkZWYgYmVmb3JlKHNlbGYpOgorICAgICAgICBpZiBz ZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAgICAg c2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMg bm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAg ICAgICAgY29ubmVjdGlvbiA9IHRlc3RfdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24oCisgICAgICAg ICAgICBzZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2VybmFt ZSddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAg ICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSwK KyAgICAgICAgICAgIHNlbGYuc2VydmVyWydzc2xtb2RlJ10KKyAgICAgICAgKQorICAgICAgICB0 ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgInBnX3V0aWxpdHlfdGVzdF9kYiIp CisKKyAgICAgICAgdGVzdF91dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIsICJwZ191 dGlsaXR5X3Rlc3RfZGIiKQorICAgICAgICBzZWxmLnBhZ2UuYWRkX3NlcnZlcihzZWxmLnNlcnZl cikKKworICAgICAgICBzZWxmLndhaXQgPSBXZWJEcml2ZXJXYWl0KHNlbGYucGFnZS5kcml2ZXIs IDIwKQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgIHNlbGYucGFnZS50b2dnbGVf b3Blbl9zZXJ2ZXIoc2VsZi5zZXJ2ZXJbJ25hbWUnXSkKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2ds ZV9vcGVuX3RyZWVfaXRlbSgnRGF0YWJhc2VzJykKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9v cGVuX3RyZWVfaXRlbSgncGdfdXRpbGl0eV90ZXN0X2RiJykKKyAgICAgICAgc2VsZi5kcml2ZXIu ZmluZF9lbGVtZW50X2J5X2xpbmtfdGV4dCgiVG9vbHMiKS5jbGljaygpCisKKyAgICAgICAgc2Vs Zi5wYWdlLmZpbmRfYnlfcGFydGlhbF9saW5rX3RleHQoIkJhY2t1cC4uLiIpLmNsaWNrKCkKKwor ICAgICAgICBzZWxmLndhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAor ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEJ5LlhQQVRILAorICAgICAgICAgICAgICAg ICIvL2xhYmVsW2NvbnRhaW5zKHN0cmluZygpLCAnRmlsZW5hbWUnKV0iCisgICAgICAgICAgICAp CisgICAgICAgICkpCisKKyAgICAgICAgc2VsZi53YWl0LnVudGlsKEVDLmVsZW1lbnRfdG9fYmVf Y2xpY2thYmxlKAorICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgIi5icm93c2VfZmlsZV9p bnB1dCIpKSkuY2xpY2soKQorCisgICAgICAgIHNlbGYucGFnZS5maWxsX2lucHV0X2J5X2ZpZWxk X25hbWUoImZpbGUiLCAidGVzdF9iYWNrdXAiKQorCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5 X3hwYXRoKCIvL2J1dHRvbltjb250YWlucyhAY2xhc3MsJ2ZhLXNhdmUnKSAiCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJhbmQgY29udGFpbnMoLiwnQmFja3VwJyldIikuY2xpY2so KQorCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9lbGVtZW50X3RvX2Rpc2FwcGVhcigKKyAg ICAgICAgICAgIGxhbWJkYSBkcml2ZXI6IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfY3NzX3NlbGVj dG9yKCIuYWpzLW1vZGFsIikKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cyA9IHNlbGYucGFn ZS5maW5kX2J5X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3MsIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JnLXN1Y2Nlc3MnKV0iKS50ZXh0CisKKyAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbHMoc3RhdHVzLCAiU3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZC4iKQor ICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9zcGFuW2NvbnRhaW5zKHN0cmluZygp LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInQ2xpY2sgaGVyZSBmb3IgZGV0 YWlscy4nKV0iKS5jbGljaygpCisgICAgICAgIGNvbW1hbmQgPSBzZWxmLnBhZ2UuZmluZF9ieV94 cGF0aCgiLy9wW2NvbnRhaW5zKEBjbGFzcywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIidiZy1kZXRhaWxlZC1kZXNjJyldIikudGV4dAorCisgICAgICAgIHNl bGYuYXNzZXJ0SW4oc2VsZi5zZXJ2ZXJbJ25hbWUnXSwgc3RyKGNvbW1hbmQpKQorICAgICAgICBz ZWxmLmFzc2VydEluKCJmcm9tIGRhdGFiYXNlICdwZ191dGlsaXR5X3Rlc3RfZGInIiwgc3RyKGNv bW1hbmQpKQorICAgICAgICBzZWxmLmFzc2VydEluKCJ0ZXN0X2JhY2t1cCIsIHN0cihjb21tYW5k KSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigicGdfZHVtcCIsIHN0cihjb21tYW5kKSkKKworICAg ICAgICBiYWNrdXBfZmlsZSA9IE5vbmUKKyAgICAgICAgaWYgY29tbWFuZDoKKyAgICAgICAgICAg IGJhY2t1cF9maWxlID0gY29tbWFuZFtpbnQoY29tbWFuZC5maW5kKCctLWZpbGUnKSkgKworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg6aW50KGNvbW1hbmQuZmluZCgnLS1ob3N0 JykpIC0gMl0KKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9kaXZbY29udGFp bnMoQGNsYXNzLCd3Y0Zsb2F0aW5nRm9jdXMnKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIl0vL2Rpdltjb250YWlucyhAY2xhc3MsJ2ZhLWNsb3NlJyldIikuY2xpY2soKQorCisg ICAgICAgIHNlbGYuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9saW5rX3RleHQoIlRvb2xzIikuY2xp Y2soKQorICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgiUmVzdG9y ZS4uLiIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLndhaXQudW50aWwoRUMucHJlc2VuY2Vfb2Zf ZWxlbWVudF9sb2NhdGVkKAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEJ5LlhQQVRI LAorICAgICAgICAgICAgICAgICIvL2xhYmVsW2NvbnRhaW5zKHN0cmluZygpLCAnRmlsZW5hbWUn KV0iCisgICAgICAgICAgICApCisgICAgICAgICkpCisKKyAgICAgICAgc2VsZi53YWl0LnVudGls KEVDLmVsZW1lbnRfdG9fYmVfY2xpY2thYmxlKAorICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RP UiwgIi5icm93c2VfZmlsZV9pbnB1dCIpKSkuY2xpY2soKQorCisgICAgICAgIHNlbGYucGFnZS5m aWxsX2lucHV0X2J5X2ZpZWxkX25hbWUoImZpbGUiLCAidGVzdF9iYWNrdXAiKQorICAgICAgICBz ZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9idXR0b25bY29udGFpbnMoQGNsYXNzLCdmYS11cGxv YWQnKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBhbmQgY29udGFpbnMoLiwn UmVzdG9yZScpXSIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfZWxlbWVu dF90b19kaXNhcHBlYXIoCisgICAgICAgICAgICBsYW1iZGEgZHJpdmVyOiBkcml2ZXIuZmluZF9l bGVtZW50X2J5X2Nzc19zZWxlY3RvcigiLmFqcy1tb2RhbCIpCisgICAgICAgICkKKworICAgICAg ICBzdGF0dXMgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9kaXZbY29udGFpbnMoQGNsYXNz LCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiZy1zdWNjZXNz JyldIikudGV4dAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0YXR1cywgIlN1Y2Nlc3Nm dWxseSBjb21wbGV0ZWQuIikKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vc3Bh bltjb250YWlucyhzdHJpbmcoKSwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg J0NsaWNrIGhlcmUgZm9yIGRldGFpbHMuJyldIikuY2xpY2soKQorICAgICAgICBjb21tYW5kID0g c2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vcFtjb250YWlucyhAY2xhc3MsIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAnYmctZGV0YWlsZWQtZGVzYycpXSIp LnRleHQKKworICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuc2VydmVyWyduYW1lJ10sIHN0cihj b21tYW5kKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigidGVzdF9iYWNrdXAiLCBzdHIoY29tbWFu ZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInBnX3Jlc3RvcmUiLCBzdHIoY29tbWFuZCkpCisK KyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vZGl2W2NvbnRhaW5zKEBjbGFzcywn d2NGbG9hdGluZ0ZvY3VzJyldIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9k aXZbY29udGFpbnMoQGNsYXNzLCdmYS1jbG9zZScpXSIpLmNsaWNrKCkKKworICAgICAgICBpZiBi YWNrdXBfZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGJh Y2t1cF9maWxlKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoYmFja3VwX2ZpbGUpCisKKyAg ICBkZWYgYWZ0ZXIoc2VsZik6CisgICAgICAgIHNlbGYucGFnZS5yZW1vdmVfc2VydmVyKHNlbGYu c2VydmVyKQorICAgICAgICBjb25uZWN0aW9uID0gdGVzdF91dGlscy5nZXRfZGJfY29ubmVjdGlv bigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYiddLAorICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dvcmQnXSwK KyAgICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisgICAgICAgICAgICBzZWxmLnNlcnZl clsncG9ydCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3NzbG1vZGUnXQorICAgICAgICAp CisgICAgICAgIHRlc3RfdXRpbHMuZHJvcF9kYXRhYmFzZShjb25uZWN0aW9uLCAicGdfdXRpbGl0 eV90ZXN0X2RiIikKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfdXRp bGl0aWVzX21haW50ZW5hbmNlX3Rlc3QucHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3Bn X3V0aWxpdGllc19tYWludGVuYW5jZV90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjc4MDYyNjgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9mZWF0dXJl X3Rlc3RzL3BnX3V0aWxpdGllc19tYWludGVuYW5jZV90ZXN0LnB5CkBAIC0wLDAgKzEsMTEyIEBA CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBfKl8gIGNvZGluZzogdXRmLTggXypfCitpbXBv cnQgdGltZQorZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydC51aSBpbXBvcnQgV2ViRHJp dmVyV2FpdAorZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY29tbW9uLmJ5IGltcG9ydCBCeQorZnJv bSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydCBpbXBvcnQgZXhwZWN0ZWRfY29uZGl0aW9ucyBh cyBFQworZnJvbSByZWdyZXNzaW9uLmZlYXR1cmVfdXRpbHMuYmFzZV9mZWF0dXJlX3Rlc3QgaW1w b3J0IEJhc2VGZWF0dXJlVGVzdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGlt cG9ydCB0ZXN0X3V0aWxzCisKKworY2xhc3MgUEdVdGlsaXRpZXNNYWludGVuYW5jZUZlYXR1cmVU ZXN0KEJhc2VGZWF0dXJlVGVzdCk6CisgICAgIiIiIFRoaXMgY2xhc3MgdGVzdCBQRyB1dGlsaXRp ZXMgdGVzdCBzY2VuYXJpb3MgIiIiCisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgiVGVz dCBmb3IgUEcgbWFpbnRlbmFuY2U6IGRhdGFiYXNlIHBnX21haW50ZW5hbmNlIiwgZGljdCgKKyAg ICAgICAgICAgIGRhdGFiYXNlX25hbWU9J3BnX21haW50ZW5hbmNlJywKKyAgICAgICAgICAgIHRh YmxlX25hbWU9J3BnX21haW50ZW5hbmNlX3RhYmxlJywKKyAgICAgICAgICAgIHRlc3RfbGV2ZWw9 J2RhdGFiYXNlJworICAgICAgICApKSwKKyAgICAgICAgKCJUZXN0IGZvciBQRyBtYWludGVuYW5j ZTogZGF0YWJhc2UiLCBkaWN0KAorICAgICAgICAgICAgZGF0YWJhc2VfbmFtZT0ncGdfbWFpbnRl bmFuY2UnLAorICAgICAgICAgICAgdGFibGVfbmFtZT0ncGdfbWFpbnRlbmFuY2VfdGFibGUnLAor ICAgICAgICAgICAgdGVzdF9sZXZlbD0ndGFibGUnCisgICAgICAgICkpLAorICAgIF0KKworICAg IGRlZiBiZWZvcmUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydkZWZhdWx0X2JpbmFy eV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAorICAgICAgICAg ICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0aGUgc2VydmVyIHsw fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnbmFtZSddCisgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBjb25uZWN0aW9uID0gdGVzdF91 dGlscy5nZXRfZGJfY29ubmVjdGlvbigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYiddLAor ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICBzZWxmLnNl cnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisg ICAgICAgICAgICBzZWxmLnNlcnZlclsncG9ydCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJb J3NzbG1vZGUnXQorICAgICAgICApCisgICAgICAgIHRlc3RfdXRpbHMuY3JlYXRlX2RhdGFiYXNl KHNlbGYuc2VydmVyLCBzZWxmLmRhdGFiYXNlX25hbWUpCisgICAgICAgIHRlc3RfdXRpbHMuY3Jl YXRlX3RhYmxlKHNlbGYuc2VydmVyLCBzZWxmLmRhdGFiYXNlX25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYudGFibGVfbmFtZSkKKyAgICAgICAgc2VsZi5wYWdlLmFk ZF9zZXJ2ZXIoc2VsZi5zZXJ2ZXIpCisgICAgICAgIHNlbGYud2FpdCA9IFdlYkRyaXZlcldhaXQo c2VsZi5wYWdlLmRyaXZlciwgMjApCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAg c2VsZi5fb3Blbl9tYWludGVuYW5jZV9kaWFsb2d1ZSgpCisgICAgICAgICMgdGltZS5zbGVlcAor ICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9idXR0b25bY29udGFpbnMoQGNsYXNz LCdmYS1zYXZlJykgYW5kIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGNvbnRh aW5zKC4sJ09LJyldIikuY2xpY2soKQorICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfZWxlbWVu dF90b19kaXNhcHBlYXIoCisgICAgICAgICAgICBsYW1iZGEgZHJpdmVyOiBkcml2ZXIuZmluZF9l bGVtZW50X2J5X2Nzc19zZWxlY3RvcigiLmFqcy1tb2RhbCIpCisgICAgICAgICkKKyAgICAgICAg c2VsZi5fdmVyaWZ5X2NvbW1hbmQoKQorCisgICAgZGVmIF9vcGVuX21haW50ZW5hbmNlX2RpYWxv Z3VlKHNlbGYpOgorICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29wZW5fc2VydmVyKHNlbGYuc2Vy dmVyWyduYW1lJ10pCisgICAgICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl90cmVlX2l0ZW0oJ0Rh dGFiYXNlcycpCisgICAgICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl90cmVlX2l0ZW0oc2VsZi5k YXRhYmFzZV9uYW1lKQorICAgICAgICBpZiBzZWxmLnRlc3RfbGV2ZWwgPT0gJ3RhYmxlJzoKKyAg ICAgICAgICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl90cmVlX2l0ZW0oJ1NjaGVtYXMnKQorICAg ICAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgncHVibGljJykKKyAgICAg ICAgICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl90cmVlX2l0ZW0oJ1RhYmxlcycpCisgICAgICAg ICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgKKyAgICAgICAgICAgICAgICAiLy8qW0BpZD0n dHJlZSddLy8iCisgICAgICAgICAgICAgICAgIipbLj0nIiArIHNlbGYudGFibGVfbmFtZSArICIn XS8uLi8qW0BjbGFzcz0nYWNpVHJlZUl0ZW0nIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiXSIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9l bGVtZW50X2J5X2xpbmtfdGV4dCgiVG9vbHMiKS5jbGljaygpCisgICAgICAgIHNlbGYucGFnZS5m aW5kX2J5X3BhcnRpYWxfbGlua190ZXh0KCJNYWludGVuYW5jZS4uLiIpLmNsaWNrKCkKKyAgICAg ICAgdGltZS5zbGVlcCgwLjUpCisKKyAgICBkZWYgX3ZlcmlmeV9jb21tYW5kKHNlbGYpOgorICAg ICAgICBzdGF0dXMgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9kaXZbY29udGFpbnMoQGNs YXNzLCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiZy1zdWNj ZXNzJyldIikudGV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzdGF0dXMsICJTdWNjZXNz ZnVsbHkgY29tcGxldGVkLiIpCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL3Nw YW5bY29udGFpbnMoc3RyaW5nKCksIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi ICdDbGljayBoZXJlIGZvciBkZXRhaWxzLicpXSIpLmNsaWNrKCkKKyAgICAgICAgY29tbWFuZCA9 IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL3BbY29udGFpbnMoQGNsYXNzLCIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJ2JnLWRldGFpbGVkLWRlc2MnKV0i KS50ZXh0CisgICAgICAgIGlmIHNlbGYudGVzdF9sZXZlbCA9PSAnZGF0YWJhc2UnOgorICAgICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29tbWFuZCwgIlZBQ1VVTSAiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiKFZFUkJPU0UpXG5SdW5uaW5nIFF1ZXJ5OiIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcblZBQ1VVTSBWRVJCT1NFOyIp CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21tYW5kLCAi VkFDVVVNICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoVkVSQk9T RSlcblJ1bm5pbmcgUXVlcnk6IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIlxuVkFDVVVNIFZFUkJPU0UiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiIHB1YmxpYy4iICsgc2VsZi50YWJsZV9uYW1lICsgIjsiKQorCisgICAgICAgIHNlbGYu cGFnZS5maW5kX2J5X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3MsJ3djRmxvYXRpbmdGb2N1 cycpXS8vIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGl2W2NvbnRhaW5zKEBj bGFzcywnZmEtY2xvc2UnKV0iKS5jbGljaygpCisKKyAgICBkZWYgYWZ0ZXIoc2VsZik6CisgICAg ICAgIHNlbGYucGFnZS5yZW1vdmVfc2VydmVyKHNlbGYuc2VydmVyKQorICAgICAgICBjb25uZWN0 aW9uID0gdGVzdF91dGlscy5nZXRfZGJfY29ubmVjdGlvbigKKyAgICAgICAgICAgIHNlbGYuc2Vy dmVyWydkYiddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAg ICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVy Wydob3N0J10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsncG9ydCddLAorICAgICAgICAgICAg c2VsZi5zZXJ2ZXJbJ3NzbG1vZGUnXQorICAgICAgICApCisgICAgICAgIHRlc3RfdXRpbHMuZHJv cF9kYXRhYmFzZShjb25uZWN0aW9uLCBzZWxmLmRhdGFiYXNlX25hbWUpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9i YWNrdXAvX19pbml0X18ucHkKaW5kZXggMTI1ZGI4MC4uMDUxMzM2NSAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vdG9vbHMvYmFja3VwL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L2JhY2t1cC9fX2luaXRfXy5weQpAQCAtMTA5LDggKzEwOSw3IEBAIGNsYXNzIEJhY2t1cE1lc3Nh Z2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2Vs Zi5jbWQgKz0gY21kQXJnKGFyZykKIAotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBtZXNzYWdlKHNl bGYpOgorICAgIGRlZiBnZXRfc2VydmVyX2RldGFpbHMoc2VsZik6CiAgICAgICAgICMgRmV0Y2gg dGhlIHNlcnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQsIHJvbGVzIGV0YwogICAgICAg ICBzID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKICAgICAgICAgICAgIGlkPXNlbGYuc2lkLCB1 c2VyX2lkPWN1cnJlbnRfdXNlci5pZApAQCAtMTIzLDEzICsxMjIsMTkgQEAgY2xhc3MgQmFja3Vw TWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICBob3N0ID0gbWFuYWdlci5sb2NhbF9iaW5k X2hvc3QgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMuaG9zdAogICAgICAgICBwb3J0 ID0gbWFuYWdlci5sb2NhbF9iaW5kX3BvcnQgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNl IHMucG9ydAogCisgICAgICAgIHJldHVybiBzLm5hbWUsIGhvc3QsIHBvcnQKKworICAgIEBwcm9w ZXJ0eQorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgorICAgICAgICBuYW1lLCBob3N0LCBwb3J0ID0g c2VsZi5nZXRfc2VydmVyX2RldGFpbHMoKQorCiAgICAgICAgIGlmIHNlbGYuYmFja3VwX3R5cGUg PT0gQkFDS1VQLk9CSkVDVDoKICAgICAgICAgICAgIHJldHVybiBfKAogICAgICAgICAgICAgICAg ICJCYWNraW5nIHVwIGFuIG9iamVjdCBvbiB0aGUgc2VydmVyICd7MH0nICIKICAgICAgICAgICAg ICAgICAiZnJvbSBkYXRhYmFzZSAnezF9Jy4uLiIKICAgICAgICAgICAgICkuZm9ybWF0KAogICAg ICAgICAgICAgICAgICJ7MH0gKHsxfTp7Mn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAg IHMubmFtZSwgaG9zdCwgcG9ydAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBob3N0LCBwb3J0 CiAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlCiAgICAg ICAgICAgICApCkBAIC0xMzcsMTMgKzE0MiwxMyBAQCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9j ZXNzRGVzYyk6CiAgICAgICAgICAgICByZXR1cm4gXygiQmFja2luZyB1cCB0aGUgZ2xvYmFsIG9i amVjdHMgb24gIgogICAgICAgICAgICAgICAgICAgICAgInRoZSBzZXJ2ZXIgJ3swfScuLi4iKS5m b3JtYXQoCiAgICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdCgKLSAgICAgICAg ICAgICAgICAgICAgcy5uYW1lLCBob3N0LCBwb3J0CisgICAgICAgICAgICAgICAgICAgIG5hbWUs IGhvc3QsIHBvcnQKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICApCiAgICAgICAgIGVs aWYgc2VsZi5iYWNrdXBfdHlwZSA9PSBCQUNLVVAuU0VSVkVSOgogICAgICAgICAgICAgcmV0dXJu IF8oIkJhY2tpbmcgdXAgdGhlIHNlcnZlciAnezB9Jy4uLiIpLmZvcm1hdCgKICAgICAgICAgICAg ICAgICAiezB9ICh7MX06ezJ9KSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBzLm5hbWUs IGhvc3QsIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwgaG9zdCwgcG9ydAogICAgICAg ICAgICAgICAgICkKICAgICAgICAgICAgICkKICAgICAgICAgZWxzZToKQEAgLTE1MSwxNyArMTU2 LDcgQEAgY2xhc3MgQmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgcmV0 dXJuICJVbmtub3duIEJhY2t1cCIKIAogICAgIGRlZiBkZXRhaWxzKHNlbGYsIGNtZCwgYXJncyk6 Ci0gICAgICAgICMgRmV0Y2ggdGhlIHNlcnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQs IHJvbGVzIGV0YwotICAgICAgICBzID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKLSAgICAgICAg ICAgIGlkPXNlbGYuc2lkLCB1c2VyX2lkPWN1cnJlbnRfdXNlci5pZAotICAgICAgICApLmZpcnN0 KCkKLQotICAgICAgICBmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVy Ci0gICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCi0gICAgICAg IG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNlbGYuc2lkKQotCi0gICAgICAg IGhvc3QgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfaG9zdCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVs IGVsc2Ugcy5ob3N0Ci0gICAgICAgIHBvcnQgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfcG9ydCBpZiBt YW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5wb3J0CisgICAgICAgIG5hbWUsIGhvc3QsIHBv cnQgPSBzZWxmLmdldF9zZXJ2ZXJfZGV0YWlscygpCiAKICAgICAgICAgcmVzID0gJzxkaXYgY2xh c3M9Img1Ij4nCiAKQEAgLTE3MSw3ICsxNjYsNyBAQCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9j ZXNzRGVzYyk6CiAgICAgICAgICAgICAgICAgImZyb20gZGF0YWJhc2UgJ3sxfScuLi4iCiAgICAg ICAgICAgICApLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9ybWF0 KAotICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKHMubmFtZSksCisgICAgICAgICAg ICAgICAgICAgIGh0bWwuc2FmZV9zdHIobmFtZSksCiAgICAgICAgICAgICAgICAgICAgIGh0bWwu c2FmZV9zdHIoaG9zdCksCiAgICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIocG9ydCks CiAgICAgICAgICAgICAgICAgKSwKQEAgLTE4MSw3ICsxNzYsNyBAQCBjbGFzcyBCYWNrdXBNZXNz YWdlKElQcm9jZXNzRGVzYyk6CiAgICAgICAgICAgICByZXMgKz0gXygiQmFja2luZyB1cCB0aGUg Z2xvYmFsIG9iamVjdHMgb24gIgogICAgICAgICAgICAgICAgICAgICAgInRoZSBzZXJ2ZXIgJ3sw fScuLi4iKS5mb3JtYXQoCiAgICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdCgK LSAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihzLm5hbWUpLAorICAgICAgICAgICAg ICAgICAgICBodG1sLnNhZmVfc3RyKG5hbWUpLAogICAgICAgICAgICAgICAgICAgICBodG1sLnNh ZmVfc3RyKGhvc3QpLAogICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKHBvcnQpCiAg ICAgICAgICAgICAgICAgKQpAQCAtMTg5LDcgKzE4NCw3IEBAIGNsYXNzIEJhY2t1cE1lc3NhZ2Uo SVByb2Nlc3NEZXNjKToKICAgICAgICAgZWxpZiBzZWxmLmJhY2t1cF90eXBlID09IEJBQ0tVUC5T RVJWRVI6CiAgICAgICAgICAgICByZXMgKz0gXygiQmFja2luZyB1cCB0aGUgc2VydmVyICd7MH0n Li4uIikuZm9ybWF0KAogICAgICAgICAgICAgICAgICJ7MH0gKHsxfTp7Mn0pIi5mb3JtYXQoCi0g ICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIocy5uYW1lKSwKKyAgICAgICAgICAgICAg ICAgICAgaHRtbC5zYWZlX3N0cihuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZl X3N0cihob3N0KSwKICAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihwb3J0KQogICAg ICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0 cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy9fX2luaXRfXy5w eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfY3JlYXRlX2pvYl91 bml0X3Rlc3QucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBf Y3JlYXRlX2pvYl91bml0X3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYTM3NmEzYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90 ZXN0cy90ZXN0X2JhY2t1cF9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpAQCAtMCwwICsxLDQ2MyBA QAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwor IworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBU ZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCitpbXBvcnQgc3lzCitpbXBvcnQgc2ltcGxl anNvbiBhcyBqc29uCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMgaW1w b3J0IEJhdGNoUHJvY2VzcworZnJvbSBwZ2FkbWluLnRvb2xzLmJhY2t1cCBpbXBvcnQgQmFja3Vw TWVzc2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRv cgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jlc3Np b24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcGdh ZG1pbi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBwZ2Fk bWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQg dXRpbHMgYXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCisKKworaWYgc3lzLnZlcnNpb25faW5mbyA8 ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vsc2U6Cisg ICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCisKKworY2xhc3Mg QmFja3VwQ3JlYXRlSm9iVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUg QmFja3VwQ3JlYXRlSm9iIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1do ZW4gYmFja3VwIG9iamVjdCB3aXRoIGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAor ICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwK KyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAg ICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAg ICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmls ZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisg ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3Vz dG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBi bG9icz1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAg ICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycKKyAgICAg ICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisg ICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9Yycs ICctLWJsb2JzJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAg ICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAg ICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gc2VjdGlvbnMgdG8gYWxs IGRhdGEnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFj a3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAg ICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVz JywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAg ICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAg ICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9 VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFi bGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICBkYXRhPVRydWUsCisgICAgICAgICAgICAgICAgIHByZV9kYXRhPVRydWUsCisgICAg ICAgICAgICAgICAgIHBvc3RfZGF0YT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2Nt ZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PWMnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnLS1zZWN0aW9uPXByZS1kYXRhJywgJy0tc2VjdGlvbj1kYXRhJywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tc2VjdGlvbj1wb3N0LWRhdGEnXSwKKyAgICAg ICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRf ZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAg dGhlIG9iamVjdCB3aXRoIG9wdGlvbiBvbmx5X2RhdGEnLAorICAgICAgICAgZGljdCgKKyAgICAg ICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAg ICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAg IHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAg ICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rl c3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAg ICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZp bGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3BsYWluJywK KyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFz PVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFi YXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1UcnVlLAorICAgICAg ICAgICAgICAgICBvbmx5X3NjaGVtYT1GYWxzZQorICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9j bWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZvcm1hdD1wJywgJy0tZGF0YS1vbmx5J10sCisgICAg ICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVk X2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3Vw IHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gb25seV9kYXRhJywKKyAgICAgICAgIGRpY3QoCisgICAg ICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAg ICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAg ICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0 ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAg ICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBm aWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdwbGFpbics CisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1h cz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRh YmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvbmx5X2RhdGE9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgb25seV9zY2hlbWE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX293bmVy PVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9 L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAn LS1mb3JtYXQ9cCcsICctLWRhdGEtb25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9j bWRfb3B0cz1bJy0tc2NoZW1hLW9ubHknLCAnLS1uby1vd25lciddLAorICAgICAgICAgICAgIGV4 cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4g YmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gb25seV9zY2hlbWEnLAorICAgICAgICAgZGlj dCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lk PTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAg ICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywK KyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAg YmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVz JworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9 J3BsYWluJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAg ICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAg ICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1GYWxz ZSwKKyAgICAgICAgICAgICAgICAgb25seV9zY2hlbWE9VHJ1ZQorICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBl eHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZvcm1hdD1wJywgJy0tc2NoZW1hLW9u bHknXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAg ICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgn V2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiAtIGZvcm1hdCBwbGFpbiBhbmQgZG5z X293bmVyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3Qo CisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2Jh Y2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAg ICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAg ICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAg ICAgICAgICAgICAgICAgZm9ybWF0PSdwbGFpbicsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9 VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFi bGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICBkbnNfb3duZXI9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJs PScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0 cz1bJy0tdmVyYm9zZScsICctLWZvcm1hdD1wJywgJy0tbm8tb3duZXInXSwKKyAgICAgICAgICAg ICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9j b2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9i amVjdCB3aXRoIG9wdGlvbiAtIERvIG5vdCBzYXZlIHByaXZpbGVnZSwnCisgICAgICAgICAnIHRh Ymxlc3BhY2UsIHVubG9nZ2VkIHRhYmxlIGRhdGEnLAorICAgICAgICAgZGljdCgKKyAgICAgICAg ICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAg ICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBv cnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3Rf YmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9 J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisg ICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1b XSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFz ZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBkbnNfcHJpdmlsZWdlPVRydWUsCisgICAg ICAgICAgICAgICAgIGRuc191bmxvZ2dlZF90YmxfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAg ICBkbnNfdGFibGVzcGFjZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9 Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRz PVsnLS1uby1wcml2aWxlZ2VzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0t bm8tdGFibGVzcGFjZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby11 bmxvZ2dlZC10YWJsZS1kYXRhJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRz PVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAg ICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBhbGwg cXVlcmllcycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0 KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9i YWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAg ICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAg ICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBw YXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisg ICAgICAgICAgICAgICAgIGZvcm1hdD0ncGxhaW4nLAorICAgICAgICAgICAgICAgICB2ZXJib3Nl PVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRh Ymxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAg ICAgICAgICAgdXNlX2NvbHVtbl9pbnNlcnRzPVRydWUsCisgICAgICAgICAgICAgICAgIGluY2x1 ZGVfY3JlYXRlX2RhdGFiYXNlPVRydWUsCisgICAgICAgICAgICAgICAgIHVzZV9pbnNlcnRfY29t bWFuZHM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgaW5jbHVkZV9kcm9wX2RhdGFiYXNlPVRydWUK KyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVj dCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWNyZWF0ZScsICctLWNsZWFu JywgJy0taW5zZXJ0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWNvbHVt bi1pbnNlcnRzJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAg ICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAg ICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBhbGwgcXVlcmllcyBh bmQgZm9ybWF0IGN1c3RvbScsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3Bh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFt ZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAg ICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFz ZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAg ICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAg ICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBf ZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAg ICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAg ICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jlcycs CisgICAgICAgICAgICAgICAgIHVzZV9jb2x1bW5faW5zZXJ0cz1UcnVlLAorICAgICAgICAgICAg ICAgICBpbmNsdWRlX2NyZWF0ZV9kYXRhYmFzZT1UcnVlLAorICAgICAgICAgICAgICAgICB1c2Vf aW5zZXJ0X2NvbW1hbmRzPVRydWUsCisgICAgICAgICAgICAgICAgIGluY2x1ZGVfZHJvcF9kYXRh YmFzZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9i L3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS1pbnNlcnRz JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY29sdW1uLWluc2VydHMnXSwK KyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9WyctLWNyZWF0ZScsICctLWNsZWFu J10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAg KSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiAtIG1pc2Nl bGxhbmVvdXMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3Rf YmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAg ICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3Rn cmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAg ICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAg cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAor ICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJv c2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAg dGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBkaXNhYmxlX3F1b3Rpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdXNlX3Nl dF9zZXNzaW9uX2F1dGg9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgd2l0aF9vaWRzPVRydWUsCisg ICAgICAgICAgICAgICAgIGRxb3V0ZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2Nt ZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tcXVvdGUtYWxsLWlkZW50aWZpZXJzJywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kb2xsYXItcXVvdGluZycsICctLW9p ZHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS11c2Utc2V0LXNlc3Npb24t YXV0aG9yaXphdGlvbiddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwK KyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwK KyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggZm9ybWF0IHRhcicsCisgICAg ICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAg ICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywK KyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2Nh bGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0n cG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAg ICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAg IGZvcm1hdD0ndGFyJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAg ICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJsb2JzPVRy dWUsCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9v YmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tYmxvYnMnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnLS1mb3JtYXQ9dCddLAorICAgICAgICAgICAgIG5vdF9leHBlY3Rl ZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVd CisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgc2VydmVyJywKKyAgICAg ICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAg ICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAor ICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2Fs aG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAg ICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdw b3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAg ICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9zZXJ2ZXJfZmlsZScsCisgICAgICAgICAg ICAgICAgIGRxb3V0ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAg ICAgICAgICAgICAgICB0eXBlPSdzZXJ2ZXInCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICB1cmw9Jy9iYWNrdXAvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9 WyctLXZlcmJvc2UnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisg ICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisg ICAgICAgICgnV2hlbiBiYWNrdXAgZ2xvYmFscycsCisgICAgICAgICBkaWN0KAorICAgICAgICAg ICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAg ICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9y dD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAg ICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9i YWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0n dGVzdF9iYWNrdXBfZ2xvYmFsX2ZpbGUnLAorICAgICAgICAgICAgICAgICBkcW91dGU9RmFsc2Us CisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdHlwZT0n Z2xvYmFscycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2Iv ezB9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZSddLAorICAg ICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3Rl ZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRV cChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10g aXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRl ZmF1bHRfYmluYXJ5X3BhdGhzIGlzIG5vdCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQo CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICApCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLlNl cnZlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLmJhY2t1cC5jdXJyZW50X3VzZXInKQor ICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuQmFja3VwTWVzc2FnZScpCisgICAgQHBh dGNoKCdwZ2FkbWluLnRvb2xzLmJhY2t1cC5maWxlbmFtZV93aXRoX2ZpbGVfbWFuYWdlcl9wYXRo JykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLkJhdGNoUHJvY2VzcycpCisgICAg QHBhdGNoKCdwZ2FkbWluLnV0aWxzLmRyaXZlci5wc3ljb3BnMi5zZXJ2ZXJfbWFuYWdlci5TZXJ2 ZXJNYW5hZ2VyLicKKyAgICAgICAgICAgJ2V4cG9ydF9wYXNzd29yZF9lbnYnKQorICAgIGRlZiBy dW5UZXN0KHNlbGYsIGV4cG9ydF9wYXNzd29yZF9lbnZfbW9jaywgYmF0Y2hfcHJvY2Vzc19tb2Nr LAorICAgICAgICAgICAgICAgIGZpbGVuYW1lX21vY2ssIGJhY2t1cF9tZXNzYWdlX21vY2ssCisg ICAgICAgICAgICAgICAgY3VycmVudF91c2VyX21vY2ssIHNlcnZlcl9tb2NrKToKKyAgICAgICAg Y2xhc3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBu YW1lLCBob3N0LCBwb3J0LCBpZCwgdXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg bWFpbnRlbmFuY2VfZGIpOgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAg ICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgICAgICAgICAgc2VsZi5wb3J0ID0g cG9ydAorICAgICAgICAgICAgICAgIHNlbGYuaWQgPSBpZAorICAgICAgICAgICAgICAgIHNlbGYu dXNlcm5hbWUgPSB1c2VybmFtZQorICAgICAgICAgICAgICAgIHNlbGYubWFpbnRlbmFuY2VfZGIg PSBtYWludGVuYW5jZV9kYgorCisgICAgICAgIHNlbGYuZGJfbmFtZSA9ICcnCisgICAgICAgIHNl bGYuc2VydmVyX2lkID0gcGFyZW50X25vZGVfZGljdFsic2VydmVyIl1bLTFdWyJzZXJ2ZXJfaWQi XQorICAgICAgICBtb2NrX29iaiA9IFRlc3RNb2NrU2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWydu YW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJh bXNbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNz X3BhcmFtc1sncG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c2VydmVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3Nf cGFyYW1zWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWydkYXRhYmFzZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICBtb2NrX3Jlc3VsdCA9IHNlcnZlcl9tb2NrLnF1ZXJ5LmZpbHRlcl9i eS5yZXR1cm5fdmFsdWUKKyAgICAgICAgbW9ja19yZXN1bHQuZmlyc3QucmV0dXJuX3ZhbHVlID0g bW9ja19vYmoKKworICAgICAgICBmaWxlbmFtZV9tb2NrLnJldHVybl92YWx1ZSA9IHNlbGYucGFy YW1zWydmaWxlJ10KKworICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suc2V0X2Vudl92YXJpYWJs ZXMgPSBNYWdpY01vY2soCisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICAp CisgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5zdGFydCA9IE1hZ2ljTW9jaygKKyAgICAgICAg ICAgIHJldHVybl92YWx1ZT1UcnVlCisgICAgICAgICkKKworICAgICAgICBleHBvcnRfcGFzc3dv cmRfZW52X21vY2sucmV0dXJuX3ZhbHVlID0gVHJ1ZQorCisgICAgICAgIHNlcnZlcl9yZXNwb25z ZSA9IHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAg ICAgICAgaWYgc2VydmVyX3Jlc3BvbnNlWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoK KyAgICAgICAgICAgIGRiX293bmVyID0gc2VydmVyX3Jlc3BvbnNlWydkYXRhJ11bJ3VzZXInXVsn bmFtZSddCisgICAgICAgICAgICBzZWxmLmRhdGEgPSBkYXRhYmFzZV91dGlscy5nZXRfZGJfZGF0 YShkYl9vd25lcikKKyAgICAgICAgICAgIHNlbGYuZGJfbmFtZSA9IHNlbGYuZGF0YVsnbmFtZSdd CisKKyAgICAgICAgdXJsID0gc2VsZi51cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkKQorCisgICAg ICAgICMgQ3JlYXRlIHRoZSBiYWNrdXAgam9iCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucG9zdCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpz b24uZHVtcHMoc2VsZi5wYXJhbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhy ZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5s b2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgam9iX2lkID0gcmVz cG9uc2VfZGF0YVsnZGF0YSddWydqb2JfaWQnXQorCisgICAgICAgIGFzc2VydCBiYWNrdXBfbWVz c2FnZV9tb2NrLmNhbGxlZAorICAgICAgICBhc3NlcnQgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxl ZAorCisgICAgICAgIGlmIHNlbGYuZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICBmb3Ig b3B0IGluIHNlbGYuZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3Nl cnRJbigKKyAgICAgICAgICAgICAgICAgICAgb3B0LAorICAgICAgICAgICAgICAgICAgICBiYXRj aF9wcm9jZXNzX21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXQorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgaWYgc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAg ICBmb3Igb3B0IGluIHNlbGYubm90X2V4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAg IHNlbGYuYXNzZXJ0Tm90SW4oCisgICAgICAgICAgICAgICAgICAgIG9wdCwKKyAgICAgICAgICAg ICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxfYXJnc19saXN0WzBdWzFdWydhcmdzJ10K KyAgICAgICAgICAgICAgICApCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAv dGVzdHMvdGVzdF9iYWNrdXBfbWVzc2FnZS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90 ZXN0cy90ZXN0X2JhY2t1cF9tZXNzYWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjM0ZWFjYzkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9iYWNr dXAvdGVzdHMvdGVzdF9iYWNrdXBfbWVzc2FnZS5weQpAQCAtMCwwICsxLDE0OSBAQAorIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5 cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9ydCBzeXMKKworZnJvbSBmbGFzayBpbXBvcnQgUmVzcG9u c2UKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWluLnRvb2xzLmJhY2t1 cCBpbXBvcnQgQmFja3VwTWVzc2FnZSwgQkFDS1VQCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUg aW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6 CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCitlbHNlOgorICAgIGZyb20g dW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworCisKK2NsYXNzIEJhY2t1cE1l c3NhZ2VUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBCYWNrdXBNZXNz YWdlIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gQmFja3VwIHNl cnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICB0eXBlPUJBQ0tVUC5TRVJWRVIsCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAg ICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcs CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg IGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAgICAg ICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgImJhY2t1cF9maWxl IiwKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAg ImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAg ICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAg ICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIsCisgICAgICAgICAgICAgICAgICAgICAnLS1u by1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAg ICAgICAgICAgICAgICAicG9zdGdyZXMiCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg ICAgICAgIGNtZD0iL3Rlc3RfcGF0aC9wZ19kdW1wIgorICAgICAgICAgICAgICksCisgICAgICAg ICAgICAgZXh0ZWN0ZWRfbXNnPSJCYWNraW5nIHVwIHRoZSBzZXJ2ZXIiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICIgJ3Rlc3RfYmFja3VwX3NlcnZlciAobG9jYWxob3N0OjU0NDQpJy4uLiIs CisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9Jy90ZXN0X3BhdGgvcGdfZHVtcCAt LWZpbGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciYmFja3VwX2ZpbGUi IC0taG9zdCAibG9jYWxob3N0IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jy0tcG9ydCAiNTQ0NCIgLS11c2VybmFtZSAicG9zdGdyZXMiICcKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCAtLWRhdGFiYXNlICJwb3N0Z3JlcyInCisK KyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gQmFja3VwIGdsb2JhbCcsCisgICAgICAgICBk aWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICB0 eXBlPUJBQ0tVUC5HTE9CQUxTLAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01 NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAg ICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNr dXAnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICctLWZp bGUnLAorICAgICAgICAgICAgICAgICAgICAgJ2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAg ICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsaG9zdCcsCisgICAg ICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICc1NDQ0JywK KyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAg ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAg ICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAncG9z dGdyZXMnCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0iL3Rlc3Rf cGF0aC9wZ19kdW1wIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNn PSJCYWNraW5nIHVwIHRoZSBnbG9iYWwgb2JqZWN0cyBvbiB0aGUgc2VydmVyICIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIid0ZXN0X2JhY2t1cF9zZXJ2ZXIgKGxvY2FsaG9zdDo1NDQ0KScu Li4iLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPScvdGVzdF9wYXRoL3BnX2R1 bXAgLS1maWxlICJiYWNrdXBfZmlsZSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICctLWhvc3QgImxvY2FsaG9zdCInCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJyAtLXBvcnQgIjU0NDQiIC0tdXNlcm5hbWUgInBvc3RncmVzIiAnCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQgLS1kYXRhYmFzZSAicG9zdGdyZXMi JworCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBvYmplY3QnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgdHlwZT1CQUNLVVAuT0JKRUNULAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAg ICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9y dD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAg ICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9i YWNrdXAnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICct LWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgJ2JhY2t1cF9maWxlJywKKyAgICAgICAgICAg ICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsaG9zdCcsCisg ICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICc1NDQ0 JywKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAg ICAgICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisg ICAgICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAn cG9zdGdyZXMnCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0iL3Rl c3RfcGF0aC9wZ19kdW1wIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRf bXNnPSJCYWNraW5nIHVwIGFuIG9iamVjdCBvbiB0aGUgc2VydmVyICIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIid0ZXN0X2JhY2t1cF9zZXJ2ZXIgKGxvY2FsaG9zdDo1NDQ0KSciCisgICAg ICAgICAgICAgICAgICAgICAgICAgICIgZnJvbSBkYXRhYmFzZSAncG9zdGdyZXMnLi4uIiwKKyAg ICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nL3Rlc3RfcGF0aC9wZ19kdW1wIC0tZmls ZSAiYmFja3VwX2ZpbGUiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1o b3N0ICJsb2NhbGhvc3QiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1w b3J0ICI1NDQ0IiAtLXVzZXJuYW1lICJwb3N0Z3JlcyIgJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkIC0tZGF0YWJhc2UgInBvc3RncmVzIicKKworICAg ICAgICAgKSkKKyAgICBdCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLkJhY2t1 cE1lc3NhZ2UuZ2V0X3NlcnZlcl9kZXRhaWxzJykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBnZXRf c2VydmVyX2RldGFpbHNfbW9jayk6CisgICAgICAgIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrLnJl dHVybl92YWx1ZSA9IFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyduYW1lJ10sXAor ICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSxcCisgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1sncG9ydCddCisKKyAgICAgICAgYmFja3VwX29iaiA9IEJhY2t1cE1lc3Nh Z2UoCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndHlwZSddLAorICAgICAgICAgICAg c2VsZi5jbGFzc19wYXJhbXNbJ3NpZCddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNb J2JmaWxlJ10sCisgICAgICAgICAgICAqc2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXSwKKyAgICAg ICAgICAgICoqeydkYXRhYmFzZSc6IHNlbGYuY2xhc3NfcGFyYW1zWydkYXRhYmFzZSddfQorICAg ICAgICApCisKKyAgICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQgbWVzc2FnZSByZXR1cm5lZAor ICAgICAgICBhc3NlcnQgYmFja3VwX29iai5tZXNzYWdlID09IHNlbGYuZXh0ZWN0ZWRfbXNnCisK KyAgICAgICAgIyBDaGVjayB0aGUgY29tbWFuZAorICAgICAgICBvYmpfZGV0YWlscyA9IGJhY2t1 cF9vYmouZGV0YWlscyhzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10pCisgICAg ICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5leHBldGNlZF9kZXRhaWxzX2NtZCwgb2JqX2RldGFpbHMp CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBf dXRpbHMucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfdXRp bHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMxM2VlOQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF91 dGlscy5weQpAQCAtMCwwICsxLDExOSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1w b3J0IHRpbWUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworCitk ZWYgY3JlYXRlX2JhY2t1cF9qb2IodGVzdGVyLCB1cmwsIHBhcmFtcyk6CisgICAgIyBDcmVhdGUg dGhlIGJhY2t1cCBqb2IKKyAgICByZXNwb25zZSA9IHRlc3Rlci5wb3N0KHVybCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhwYXJhbXMpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgIGFzc2VydCByZXNw b25zZS5zdGF0dXNfY29kZSA9PSAyMDAKKyAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2Fkcyhy ZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICBqb2JfaWQgPSByZXNwb25zZV9kYXRh WydkYXRhJ11bJ2pvYl9pZCddCisgICAgcmV0dXJuIGpvYl9pZAorCisKK2RlZiBydW5fYmFja3Vw X2pvYih0ZXN0ZXIsIGpvYl9pZCwgZXhwZWN0ZWRfcGFyYW1zLCBhc3NlcnRJbiwgYXNzZXJ0Tm90 SW4pOgorICAgIGNudCA9IDAKKyAgICB3aGlsZSAxOgorICAgICAgICBpZiBjbnQgPiAxOgorICAg ICAgICAgICAgYnJlYWsKKyAgICAgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAg IHJlc3BvbnNlMSA9IHRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1hdCgKKyAg ICAgICAgICAgIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKSkKKyAgICAgICAgYXNzZXJ0IHJl c3BvbnNlMS5zdGF0dXNfY29kZSA9PSAyMDAKKyAgICAgICAgcHJvY2Vzc19saXN0ID0ganNvbi5s b2FkcyhyZXNwb25zZTEuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgaWYgbGVuKHBy b2Nlc3NfbGlzdCkgPiAwIGFuZCAnZXhlY3V0aW9uX3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXToK KyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHRpbWUuc2xlZXAoMC41KQorICAgICAgICBjbnQg Kz0gMQorCisgICAgYXNzZXJ0ICdleGVjdXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisg ICAgYXNzZXJ0ICdzdGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgYXNzZXJ0ICdleGl0X2Nv ZGUnIGluIHByb2Nlc3NfbGlzdFswXQorICAgIGFzc2VydCBwcm9jZXNzX2xpc3RbMF1bJ2V4aXRf Y29kZSddIGluIGV4cGVjdGVkX3BhcmFtc1sKKyAgICAgICAgJ2V4cGVjdGVkX2V4aXRfY29kZScK KyAgICBdCisKKyAgICBiYWNrdXBfZmlsZSA9IE5vbmUKKyAgICBpZiAnZGV0YWlscycgaW4gcHJv Y2Vzc19saXN0WzBdOgorICAgICAgICBiYWNrdXBfZGV0ID0gcHJvY2Vzc19saXN0WzBdWydkZXRh aWxzJ10KKyAgICAgICAgYmFja3VwX2ZpbGUgPSBiYWNrdXBfZGV0W2ludChiYWNrdXBfZGV0LmZp bmQoJy0tZmlsZScpKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4OmludChi YWNrdXBfZGV0LmZpbmQoJy0taG9zdCcpKSAtIDJdCisKKyAgICBpZiBleHBlY3RlZF9wYXJhbXNb J2V4cGVjdGVkX2NtZF9vcHRzJ106CisgICAgICAgIGZvciBvcHQgaW4gZXhwZWN0ZWRfcGFyYW1z WydleHBlY3RlZF9jbWRfb3B0cyddOgorICAgICAgICAgICAgYXNzZXJ0SW4ob3B0LCBwcm9jZXNz X2xpc3RbMF1bJ2RldGFpbHMnXSkKKyAgICBpZiBleHBlY3RlZF9wYXJhbXNbJ25vdF9leHBlY3Rl ZF9jbWRfb3B0cyddOgorICAgICAgICBmb3Igb3B0IGluIGV4cGVjdGVkX3BhcmFtc1snbm90X2V4 cGVjdGVkX2NtZF9vcHRzJ106CisgICAgICAgICAgICBhc3NlcnROb3RJbihvcHQsIHByb2Nlc3Nf bGlzdFswXVsnZGV0YWlscyddKQorCisgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBkZXRhaWxzCisg ICAgcF9kZXRhaWxzID0gdGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfT9fPScuZm9ybWF0 KAorICAgICAgICBqb2JfaWQsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICkKKyAg ICBhc3NlcnQgcF9kZXRhaWxzLnN0YXR1c19jb2RlID09IDIwMAorICAgIHBfZGV0YWlsc19kYXRh ID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICBwX2Rl dGFpbHMgPSB0ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9L3sxfS97Mn0vP189Jy5mb3Jt YXQoCisgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisg ICAgKQorICAgIGFzc2VydCBwX2RldGFpbHMuc3RhdHVzX2NvZGUgPT0gMjAwCisgICAgcF9kZXRh aWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKwor ICAgIGNudCA9IDAKKyAgICAjIFJldHJpZXZlIHRoZSBiYWNrdXAgam9iIHByb2Nlc3MgbG9ncwor ICAgIHdoaWxlIDE6CisgICAgICAgIG91dCwgZXJyLCBzdGF0dXMgPSBnZXRfcGFyYW1zKHBfZGV0 YWlsc19kYXRhKQorICAgICAgICBpZiBzdGF0dXMgb3IgY250ID49IDEwOgorICAgICAgICAgICAg YnJlYWsKKworICAgICAgICBwX2RldGFpbHMgPSB0ZXN0ZXIuZ2V0KAorICAgICAgICAgICAgJy9t aXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz17M30nLmZvcm1hdCgKKyAgICAgICAgICAgICAg ICBqb2JfaWQsIG91dCwgZXJyLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAg KQorICAgICAgICBhc3NlcnQgcF9kZXRhaWxzLnN0YXR1c19jb2RlID09IDIwMAorICAgICAgICBw X2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcp KQorCisgICAgICAgIGNudCArPSAxCisgICAgICAgIHRpbWUuc2xlZXAoMSkKKworICAgICMgQ2hl Y2sgdGhlIGpvYiBpcyBjb21wbGV0ZS4KKyAgICBiYWNrdXBfYWNrID0gdGVzdGVyLnB1dCgnL21p c2MvYmdwcm9jZXNzL3swfScuZm9ybWF0KGpvYl9pZCkpCisgICAgYXNzZXJ0IGJhY2t1cF9hY2su c3RhdHVzX2NvZGUgPT0gMjAwCisgICAgYmFja3VwX2Fja19yZXMgPSBqc29uLmxvYWRzKGJhY2t1 cF9hY2suZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICBhc3NlcnQgYmFja3VwX2Fja19yZXNb J3N1Y2Nlc3MnXSA9PSAxCisKKyAgICByZXR1cm4gYmFja3VwX2ZpbGUKKworCitkZWYgZ2V0X3Bh cmFtcyhkYXRhKToKKyAgICBvdXQgPSAwCisgICAgb3V0X2RvbmUgPSBGYWxzZQorICAgIGVyciA9 IDAKKyAgICBlcnJfZG9uZSA9IEZhbHNlCisgICAgaWYgJ291dCcgaW4gZGF0YToKKyAgICAgICAg b3V0ID0gZGF0YVsnb3V0J10gYW5kIGRhdGFbJ291dCddWydwb3MnXQorCisgICAgICAgIGlmICdk b25lJyBpbiBkYXRhWydvdXQnXToKKyAgICAgICAgICAgIG91dF9kb25lID0gZGF0YVsnb3V0J11b J2RvbmUnXQorCisgICAgaWYgJ2VycicgaW4gZGF0YToKKyAgICAgICAgZXJyID0gZGF0YVsnZXJy J10gYW5kIGRhdGFbJ2VyciddWydwb3MnXQorCisgICAgICAgIGlmICdkb25lJyBpbiBkYXRhWydl cnInXToKKyAgICAgICAgICAgIGVycl9kb25lID0gZGF0YVsnZXJyJ11bJ2RvbmUnXQorCisgICAg cmV0dXJuIG91dCwgZXJyLCAob3V0X2RvbmUgYW5kIGVycl9kb25lKQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJvY2Vzcy5weSBiL3dlYi9w Z2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3MucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA3NGNhNQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3MucHkKQEAgLTAs MCArMSwyMTIgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCitpbXBvcnQg c2ltcGxlanNvbiBhcyBqc29uCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNz ZXMgaW1wb3J0IEJhdGNoUHJvY2VzcywgSVByb2Nlc3NEZXNjCitmcm9tIHBnYWRtaW4udG9vbHMu YmFja3VwIGltcG9ydCBCYWNrdXBNZXNzYWdlLCBCQUNLVVAKK2Zyb20gcGdhZG1pbi51dGlscy5y b3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcGlja2xlIGltcG9ydCBkdW1wcywg bG9hZHMKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1w b3J0IHBhdGNoCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKwor CitjbGFzcyBCYXRjaFByb2Nlc3NUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0 IHRoZSBCYXRjaFByb2Nlc3MgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgn V2hlbiBiYWNrdXAgc2VydmVyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3Nf cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9QkFDS1VQLlNFUlZFUiwKKyAgICAg ICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3Nl cnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9z dD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZp bGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgYXJncz1bCisgICAgICAgICAgICAg ICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICJiYWNrdXBfZmlsZSIsCisg ICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICJsb2Nh bGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAgICAgICAgICAgICAg ICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFtZScsCisgICAgICAg ICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFz c3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAgICAgICAgICAg ICAgICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg ICBjbWQ9J2JhY2t1cF9zZXJ2ZXInCisgICAgICAgICAgICAgKQorICAgICAgICAgKSksCisgICAg ICAgICgnV2hlbiBiYWNrdXAgZ2xvYmFscycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICB0eXBlPUJBQ0tVUC5HTE9CQUxT LAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9i YWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAg ICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAg ICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAg ICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgImJhY2t1cF9m aWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAg ICAgImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAg ICAgICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywK KyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIsCisgICAgICAgICAgICAgICAgICAgICAn LS1uby1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAg ICAgICAgICAgICAgICAgICAicG9zdGdyZXMiCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAg ICAgICAgICAgIGNtZD0nYmFja3VwJworICAgICAgICAgICAgICkKKyAgICAgICAgICkpLAorICAg ICAgICAoJ1doZW4gYmFja3VwIG9iamVjdCcsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICB0eXBlPUJBQ0tVUC5PQkpFQ1Qs CisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2Jh Y2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAg ICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAg ICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAg ICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAiYmFja3VwX2Zp bGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAgICAgICAgICAg ICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAg ICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAor ICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICct LW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlJywKKyAgICAg ICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg ICAgICAgICAgY21kPSdiYWNrdXAnCisgICAgICAgICAgICAgKQorICAgICAgICAgKSkKKyAgICBd CisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLkJhY2t1cE1lc3NhZ2UuZ2V0X3Nl cnZlcl9kZXRhaWxzJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vz c2VzLlBvcGVuJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2Vz LmN1cnJlbnRfYXBwJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vz c2VzLmRiJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLmN1cnJlbnRfdXNlcicp CisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5jdXJyZW50X3Vz ZXInKQorICAgIGRlZiBydW5UZXN0KHNlbGYsIGN1cnJlbnRfdXNlcl9tb2NrLCBjdXJyZW50X3Vz ZXIsIGRiX21vY2ssCisgICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywgcG9wZW5fbW9j aywgZ2V0X3NlcnZlcl9kZXRhaWxzX21vY2spOgorICAgICAgICBjdXJyZW50X3VzZXIuaWQgPSAx CisgICAgICAgIGN1cnJlbnRfdXNlcl9tb2NrLmlkID0gMQorICAgICAgICBjdXJyZW50X2FwcF9t b2NrLlBHQURNSU5fUlVOVElNRSA9IEZhbHNlCisKKyAgICAgICAgZGVmIGRiX3Nlc3Npb25fYWRk X21vY2soaik6CisgICAgICAgICAgICBjbWRfb2JqID0gbG9hZHMoai5kZXNjKQorICAgICAgICAg ICAgYXNzZXJ0IGlzaW5zdGFuY2UoY21kX29iaiwgSVByb2Nlc3NEZXNjKQorICAgICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbHMoY21kX29iai5iYWNrdXBfdHlwZSwgc2VsZi5jbGFzc19wYXJhbXNb J3R5cGUnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouYmZpbGUsIHNl bGYuY2xhc3NfcGFyYW1zWydiZmlsZSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo Y21kX29iai5kYXRhYmFzZSwgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ10pCisgICAgICAg ICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmNtZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICcgLS1maWxlICJiYWNrdXBfZmlsZSIgJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJy0taG9zdCAiezB9IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn LS1wb3J0ICJ7MX0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1l ICJ7Mn0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkICcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlICJ7M30iJy5mb3JtYXQo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hv c3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFt c1sncG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3Nf cGFyYW1zWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWydkYXRhYmFzZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApKQorCisgICAgICAgIGRiX21vY2suc2Vzc2lvbi5hZGQuc2lkZV9lZmZlY3QgPSBkYl9zZXNz aW9uX2FkZF9tb2NrCisKKyAgICAgICAgZ2V0X3NlcnZlcl9kZXRhaWxzX21vY2sucmV0dXJuX3Zh bHVlID0gXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ25hbWUnXSxcCisgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3Nf cGFyYW1zWydwb3J0J10KKworICAgICAgICBiYWNrdXBfb2JqID0gQmFja3VwTWVzc2FnZSgKKyAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd0eXBlJ10sCisgICAgICAgICAgICBzZWxmLmNs YXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYmZpbGUn XSwKKyAgICAgICAgICAgICpzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAg Kip7J2RhdGFiYXNlJzogc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ119CisgICAgICAgICkK KworICAgICAgICBwID0gQmF0Y2hQcm9jZXNzKAorICAgICAgICAgICAgZGVzYz1iYWNrdXBfb2Jq LAorICAgICAgICAgICAgY21kPXNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSwKKyAgICAgICAgICAg IGFyZ3M9c2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAgICAgICAgIyBD aGVjayB0aGF0IF9jcmVhdGVfcHJvY2VzcyBoYXMgYmVlbiBjYWxsZWQKKyAgICAgICAgYXNzZXJ0 IGRiX21vY2suc2Vzc2lvbi5hZGQuY2FsbGVkCisKKyAgICAgICAgIyBDaGVjayBzdGFydCBtZXRo b2QKKyAgICAgICAgc2VsZi5fY2hlY2tfc3RhcnQocG9wZW5fbW9jaywgcCkKKworICAgICAgICAj IENoZWNrIGxpc3QgbWV0aG9kCisgICAgICAgIHNlbGYuX2NoZWNrX2xpc3QocCwgYmFja3VwX29i aikKKworICAgIGRlZiBfY2hlY2tfc3RhcnQoc2VsZiwgcG9wZW5fbW9jaywgcCk6CisgICAgICAg IGNtZF90ZXN0ID0gc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisKKyAgICAgICAgY2xhc3MgcG9w ZW5Nb2NrU2lkZUVmZmVjdCgpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwg Kiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGFzc2VydCBjbWRfdGVzdCBpbiBjbWQKKyAgICAg ICAgICAgICAgICBhc3NlcnQgJ2VudicgaW4ga3dhcmdzCisKKyAgICAgICAgICAgIGRlZiBwb2xs KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBwb3Blbl9tb2NrLnNpZGVf ZWZmZWN0ID0gcG9wZW5Nb2NrU2lkZUVmZmVjdAorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAg ICBhc3NlcnQgcG9wZW5fbW9jay5jYWxsZWQKKworICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJn cHJvY2Vzcy5wcm9jZXNzZXMuUHJvY2VzcycpCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdw cm9jZXNzLnByb2Nlc3Nlcy5CYXRjaFByb2Nlc3MuJworICAgICAgICAgICAndXBkYXRlX3Byb2Nl c3NfaW5mbycpCisgICAgZGVmIF9jaGVja19saXN0KHNlbGYsIHAsIGJhY2t1cF9vYmosIHVwZGF0 ZV9wcm9jZXNzX2luZm9fbW9jaywKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19tb2NrKToK KyAgICAgICAgY2xhc3MgVGVzdE1vY2tQcm9jZXNzKCk6CisgICAgICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgZGVzYywgYXJncywgY21kKToKKyAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IDEK KyAgICAgICAgICAgICAgICBzZWxmLmV4aXRfY29kZSA9IDEKKyAgICAgICAgICAgICAgICBzZWxm LnN0YXJ0X3RpbWUgPSAnMjAxOC0wNC0xNyAwNjoxODo1Ni4zMTU0NDUgKzAwMDAnCisgICAgICAg ICAgICAgICAgc2VsZi5lbmRfdGltZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLmRlc2Mg PSBkdW1wcyhkZXNjKQorICAgICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRzID0gIiAiLmpvaW4o YXJncykKKyAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmQgPSBjbWQKKyAgICAgICAgICAgICAg ICBzZWxmLmFja25vd2xlZGdlID0gTm9uZQorCisgICAgICAgIHByb2Nlc3NfbW9jay5xdWVyeS5m aWx0ZXJfYnkucmV0dXJuX3ZhbHVlID0gWworICAgICAgICAgICAgVGVzdE1vY2tQcm9jZXNzKGJh Y2t1cF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNb J2FyZ3MnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sn Y21kJ10pXQorCisgICAgICAgIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jay5yZXR1cm5fdmFsdWUg PSBbVHJ1ZSwgVHJ1ZV0KKworICAgICAgICByZXRfdmFsdWUgPSBwLmxpc3QoKQorICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXRfdmFsdWUpKQorICAgICAgICBhc3NlcnQgJ2RldGFp bHMnIGluIHJldF92YWx1ZVswXQorICAgICAgICBhc3NlcnQgJ2Rlc2MnIGluIHJldF92YWx1ZVsw XQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfY3JlYXRl X2JhY2t1cF9qb2IucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9jcmVh dGVfYmFja3VwX2pvYi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTNm ZTkyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rl c3RfY3JlYXRlX2JhY2t1cF9qb2IucHkKQEAgLTAsMCArMSw2MyBAQAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMp IDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworaW1wb3J0IG9zCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJh c2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QK K2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1 dGlscworaW1wb3J0IHBnYWRtaW4udG9vbHMuYmFja3VwLnRlc3RzLnRlc3RfYmFja3VwX3V0aWxz IGFzIGJhY2t1cF91dGlscworCisKK2NsYXNzIEJhY2t1cEpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0 b3IpOgorICAgICIiIkJhY2t1cCBhcGkgdGVzdCBjYXNlcyIiIgorICAgIHNjZW5hcmlvcyA9IFsK KyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggdGhlIGRlZmF1bHQgb3B0aW9u cycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3Vz dG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBi bG9icz1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAg ICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycKKyAgICAg ICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisg ICAgICAgICAgICAgZXhwZWN0ZWRfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGV4cGVj dGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PWMnLCAnLS1ibG9icyddLAorICAg ICAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgICAg IGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICAgICApCisgICAgICAgICAp KQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJb J2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRl c3QoCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhzIGlzIG5vdCBzZXQgZm9y IHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVy WyduYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICBkZWYgcnVu VGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJz ZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHVybCA9IHNlbGYudXJsLmZvcm1hdChz ZWxmLnNlcnZlcl9pZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFja3VwIGpvYgorICAgICAg ICBqb2JfaWQgPSBiYWNrdXBfdXRpbHMuY3JlYXRlX2JhY2t1cF9qb2Ioc2VsZi50ZXN0ZXIsIHVy bCwgc2VsZi5wYXJhbXMpCisgICAgICAgIGJhY2t1cF9maWxlID0gYmFja3VwX3V0aWxzLnJ1bl9i YWNrdXBfam9iKHNlbGYudGVzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBqb2JfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRfcGFyYW1zLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5v dEluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkK KworICAgICAgICBpZiBiYWNrdXBfZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG9z LnBhdGguaXNmaWxlKGJhY2t1cF9maWxlKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoYmFj a3VwX2ZpbGUpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0 cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL19faW5p dF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJv Y2Vzc19tYWludGVuYW5jZS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3Rz L3Rlc3RfYmF0Y2hfcHJvY2Vzc19tYWludGVuYW5jZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi41NWMzZGI4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9v bHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzX21haW50ZW5hbmNlLnB5CkBA IC0wLDAgKzEsMTUzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHN5cworCitm cm9tIHBnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzIGltcG9ydCBCYXRjaFByb2Nlc3Ms IElQcm9jZXNzRGVzYworZnJvbSBwZ2FkbWluLnRvb2xzLm1haW50ZW5hbmNlIGltcG9ydCBNZXNz YWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitm cm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAo MywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZWxzZToKKyAgICBmcm9tIHVuaXR0 ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKKworY2xhc3MgQmF0Y2hQcm9jZXNzVGVzdChCYXNlVGVz dEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmF0Y2hQcm9jZXNzIGNsYXNzIiIiCisgICAg c2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gbWFpbnRhaW5lZCBzZXJ2ZXInLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAg ICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJywK KyAgICAgICAgICAgICAgICAgYXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywK KyAgICAgICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAg Jy0tcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAg ICAgICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYm5hbWUnLAorICAg ICAgICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICctLWNv bW1hbmQnLAorICAgICAgICAgICAgICAgICAgICAgIlZBQ1VVTSBWRVJCT1NFO1xuIgorICAgICAg ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAg ICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAn VkFDVVVNJywKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAor ICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAg ICAgICAgICAgICd2YWN1dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3Zl cmJvc2UnOiBUcnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0i VkFDVVVNIFZFUkJPU0U7XG4iCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBleHBlY3Rl ZF9tc2c9Ik1haW50ZW5hbmNlIChWYWN1dW0pIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRh aWxzX2NtZD0nVkFDVVVNIFZFUkJPU0U7JworICAgICAgICAgKSkKKyAgICBdCisKKyAgICBAcGF0 Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLlBvcGVuJykKKyAgICBAcGF0Y2go J3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLmN1cnJlbnRfYXBwJykKKyAgICBAcGF0 Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLmRiJykKKyAgICBAcGF0Y2goJ3Bn YWRtaW4udG9vbHMubWFpbnRlbmFuY2UuU2VydmVyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlz Yy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLmN1cnJlbnRfdXNlcicpCisgICAgZGVmIHJ1blRlc3Qoc2Vs ZiwgY3VycmVudF91c2VyX21vY2ssIHNlcnZlcl9tb2NrLCBkYl9tb2NrLAorICAgICAgICAgICAg ICAgIGN1cnJlbnRfYXBwX21vY2ssIHBvcGVuX21vY2spOgorICAgICAgICBjdXJyZW50X3VzZXJf bW9jay5pZCA9IDEKKyAgICAgICAgY3VycmVudF9hcHBfbW9jay5QR0FETUlOX1JVTlRJTUUgPSBG YWxzZQorCisgICAgICAgIGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6CisgICAgICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgbmFtZSwgaG9zdCwgcG9ydCk6CisgICAgICAgICAgICAgICAgc2VsZi5u YW1lID0gbmFtZQorICAgICAgICAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKKyAgICAgICAgICAg ICAgICBzZWxmLnBvcnQgPSBwb3J0CisKKyAgICAgICAgZGVmIGRiX3Nlc3Npb25fYWRkX21vY2so aik6CisgICAgICAgICAgICBjbWRfb2JqID0gbG9hZHMoai5kZXNjKQorICAgICAgICAgICAgYXNz ZXJ0IGlzaW5zdGFuY2UoY21kX29iaiwgSVByb2Nlc3NEZXNjKQorICAgICAgICAgICAgc2VsZi5h c3NlcnRFcXVhbHMoY21kX29iai5xdWVyeSwgc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddKQorICAg ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21kX29iai5tZXNzYWdlLCBzZWxmLmV4cGVjdGVk X21zZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouZGF0YSwgc2VsZi5j bGFzc19wYXJhbXNbJ2RhdGEnXSkKKworICAgICAgICBtb2NrX29iaiA9IFRlc3RNb2NrU2VydmVy KHNlbGYuY2xhc3NfcGFyYW1zWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSkKKyAgICAgICAgbW9ja19y ZXN1bHQgPSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAg IG1vY2tfcmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgZGJf bW9jay5zZXNzaW9uLmFkZC5zaWRlX2VmZmVjdCA9IGRiX3Nlc3Npb25fYWRkX21vY2sKKworICAg ICAgICBtYWludGVuYW5jZV9vYmogPSBNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19w YXJhbXNbJ3NpZCddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGEnXSwKKyAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXQorICAgICAgICApCisKKyAgICAgICAg cCA9IEJhdGNoUHJvY2VzcygKKyAgICAgICAgICAgIGRlc2M9bWFpbnRlbmFuY2Vfb2JqLAorICAg ICAgICAgICAgY21kPXNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSwKKyAgICAgICAgICAgIGFyZ3M9 c2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAgICAgICAgIyBDaGVjayB0 aGF0IF9jcmVhdGVfcHJvY2VzcyBoYXMgYmVlbiBjYWxsZWQKKyAgICAgICAgYXNzZXJ0IGRiX21v Y2suc2Vzc2lvbi5hZGQuY2FsbGVkCisKKyAgICAgICAgIyBDaGVjayBzdGFydCBtZXRob2QKKyAg ICAgICAgc2VsZi5fY2hlY2tfc3RhcnQocG9wZW5fbW9jaywgcCkKKworICAgICAgICAjIENoZWNr IGxpc3QgbWV0aG9kCisgICAgICAgIHNlbGYuX2NoZWNrX2xpc3QocCwgbWFpbnRlbmFuY2Vfb2Jq KQorCisgICAgZGVmIF9jaGVja19zdGFydChzZWxmLCBwb3Blbl9tb2NrLCBwKToKKyAgICAgICAg Y21kX3Rlc3QgPSBzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10KKworICAgICAgICBjbGFzcyBwb3Bl bk1vY2tTaWRlRWZmZWN0KCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY21kLCAq Kmt3YXJncyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGNtZF90ZXN0IGluIGNtZAorICAgICAg ICAgICAgICAgIGFzc2VydCAnZW52JyBpbiBrd2FyZ3MKKworICAgICAgICAgICAgZGVmIHBvbGwo c2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHBvcGVuX21vY2suc2lkZV9l ZmZlY3QgPSBwb3Blbk1vY2tTaWRlRWZmZWN0CisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAg IGFzc2VydCBwb3Blbl9tb2NrLmNhbGxlZAorCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdw cm9jZXNzLnByb2Nlc3Nlcy5Qcm9jZXNzJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3By b2Nlc3MucHJvY2Vzc2VzLkJhdGNoUHJvY2Vzcy4nCisgICAgICAgICAgICd1cGRhdGVfcHJvY2Vz c19pbmZvJykKKyAgICBkZWYgX2NoZWNrX2xpc3Qoc2VsZiwgcCwgbWFpbnRlbmFuY2Vfb2JqLCB1 cGRhdGVfcHJvY2Vzc19pbmZvX21vY2ssCisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfbW9j ayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrUHJvY2VzcygpOgorICAgICAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIGRlc2MsIGFyZ3MsIGNtZCk6CisgICAgICAgICAgICAgICAgc2VsZi5waWQg PSAxCisgICAgICAgICAgICAgICAgc2VsZi5leGl0X2NvZGUgPSAxCisgICAgICAgICAgICAgICAg c2VsZi5zdGFydF90aW1lID0gJzIwMTgtMDQtMTcgMDY6MTg6NTYuMzE1NDQ1ICswMDAwJworICAg ICAgICAgICAgICAgIHNlbGYuZW5kX3RpbWUgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5k ZXNjID0gZHVtcHMoZGVzYykKKyAgICAgICAgICAgICAgICBzZWxmLmFyZ3VtZW50cyA9ICIgIi5q b2luKGFyZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kID0gY21kCisgICAgICAgICAg ICAgICAgc2VsZi5hY2tub3dsZWRnZSA9IE5vbmUKKworICAgICAgICBwcm9jZXNzX21vY2sucXVl cnkuZmlsdGVyX2J5LnJldHVybl92YWx1ZSA9IFsKKyAgICAgICAgICAgIFRlc3RNb2NrUHJvY2Vz cyhtYWludGVuYW5jZV9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFz c19wYXJhbXNbJ2FyZ3MnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNz X3BhcmFtc1snY21kJ10pCisgICAgICAgIF0KKworICAgICAgICB1cGRhdGVfcHJvY2Vzc19pbmZv X21vY2sucmV0dXJuX3ZhbHVlID0gW1RydWUsIFRydWVdCisKKyAgICAgICAgcmV0X3ZhbHVlID0g cC5saXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmV0X3ZhbHVlKSkKKyAg ICAgICAgYXNzZXJ0ICdkZXRhaWxzJyBpbiByZXRfdmFsdWVbMF0KKyAgICAgICAgYXNzZXJ0ICdk ZXNjJyBpbiByZXRfdmFsdWVbMF0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50 ZW5hbmNlL3Rlc3RzL3Rlc3RfY3JlYXRlX21haW50ZW5hbmNlX2pvYi5weSBiL3dlYi9wZ2FkbWlu L3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfY3JlYXRlX21haW50ZW5hbmNlX2pvYi5weQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTAxZjFkCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9jcmVhdGVfbWFp bnRlbmFuY2Vfam9iLnB5CkBAIC0wLDAgKzEsMTQwIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIwor IyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyBy ZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworaW1wb3J0IHRpbWUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24K KworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJv bSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jlc3Npb24ucHl0 aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcGdhZG1pbi51 dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBwZ2FkbWluLmJy b3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMg YXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCisKKworY2xhc3MgTWFpbnRlbmFuY2VKb2JUZXN0KEJh c2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJNYWludGVuYW5jZSBhcGkgdGVzdCBjYXNlcyIiIgor ICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIG1haW50ZW5hbmNlIHRoZSBvYmplY3Qg d2l0aCB0aGUgZGVmYXVsdCBvcHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAg cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAg ICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdW QUNVVU0nLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9hbmFseXplJzogRmFsc2UsCisg ICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2ZyZWV6ZSc6IEZhbHNlLAorICAgICAgICAgICAg ICAgICAgICAgJ3ZhY3V1bV9mdWxsJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmVy Ym9zZSc6IFRydWUKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21kPSJW QUNVVU0gVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL21h aW50ZW5hbmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWQ9J1ZBQ1VV TSBWRVJCT1NFJywKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisg ICAgICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgc2Vs Zi5zZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAgICAgICAgIHNl bGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhzIGlzIG5v dCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNl bGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAg ICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5kYl9uYW1lID0gJycKKyAgICAgICAg c2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsic2VydmVy X2lkIl0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1b LTFdWyJkYl9pZCJdCisgICAgICAgIHVybCA9IHNlbGYudXJsLmZvcm1hdChzZWxmLnNlcnZlcl9p ZCwgc2VsZi5kYl9pZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFja3VwIGpvYgorICAgICAg ICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1zWydkYXRhJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24n KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQor ICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgn dXRmLTgnKSkKKyAgICAgICAgam9iX2lkID0gcmVzcG9uc2VfZGF0YVsnZGF0YSddWydqb2JfaWQn XQorCisgICAgICAgIGNudCA9IDAKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIGlmIGNu dCA+IDE6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICMgQ2hlY2sgdGhlIHBy b2Nlc3MgbGlzdAorICAgICAgICAgICAgcmVzcG9uc2UxID0gc2VsZi50ZXN0ZXIuZ2V0KCcvbWlz Yy9iZ3Byb2Nlc3MvP189Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgcmFuZG9tLnJhbmRpbnQo MSwgOTk5OTk5OSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2UxLnN0 YXR1c19jb2RlLCAyMDApCisgICAgICAgICAgICBwcm9jZXNzX2xpc3QgPSBqc29uLmxvYWRzKHJl c3BvbnNlMS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICAgICAgaWYgbGVuKHByb2Nl c3NfbGlzdCkgPiAwIGFuZCAnZXhlY3V0aW9uX3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXToKKyAg ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgdGltZS5zbGVlcCgwLjUpCisgICAgICAg ICAgICBjbnQgKz0gMQorCisgICAgICAgIGFzc2VydCAnZXhlY3V0aW9uX3RpbWUnIGluIHByb2Nl c3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgJ3N0aW1lJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAg ICAgICAgYXNzZXJ0ICdleGl0X2NvZGUnIGluIHByb2Nlc3NfbGlzdFswXQorICAgICAgICBhc3Nl cnQgcHJvY2Vzc19saXN0WzBdWydleGl0X2NvZGUnXSBpbiBzZWxmLmV4cGVjdGVkX2V4aXRfY29k ZQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5leHBlY3RlZF9jbWQsIHByb2Nlc3NfbGlz dFswXVsnZGV0YWlscyddKQorCisgICAgICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgZGV0YWlscwor ICAgICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0/ Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5 OSkpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1 c19jb2RlLCAyMDApCisgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFp bHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgcF9kZXRhaWxzID0gc2VsZi50ZXN0 ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9L3sxfS97Mn0vP189Jy5mb3JtYXQoCisgICAgICAg ICAgICBqb2JfaWQsIDAsIDAsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICAp CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBfZGV0YWlscy5zdGF0dXNfY29kZSwgMjAwKQor ICAgICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2Rl KCd1dGYtOCcpKQorCisgICAgICAgICMgUmV0cmlldmUgdGhlIGJhY2t1cCBqb2IgcHJvY2VzcyBs b2dzCisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICBvdXQsIGVyciwgc3RhdHVzID0gTWFp bnRlbmFuY2VKb2JUZXN0LmdldF9wYXJhbXMocF9kZXRhaWxzX2RhdGEpCisgICAgICAgICAgICBp ZiBzdGF0dXM6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgcF9kZXRhaWxz ID0gc2VsZi50ZXN0ZXIuZ2V0KAorICAgICAgICAgICAgICAgICcvbWlzYy9iZ3Byb2Nlc3MvezB9 L3sxfS97Mn0vP189ezN9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIGpvYl9pZCwgb3V0 LCBlcnIsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICAgICAgKQorICAgICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAyMDApCisgICAg ICAgICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2Rl KCd1dGYtOCcpKQorCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAgICAgICAgIyBDaGVj ayB0aGUgam9iIGlzIGNvbXBsZXRlLgorICAgICAgICBiYWNrdXBfYWNrID0gc2VsZi50ZXN0ZXIu cHV0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9Jy5mb3JtYXQoam9iX2lkKSkKKyAgICAgICAgc2VsZi5h c3NlcnRFcXVhbHMoYmFja3VwX2Fjay5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBiYWNrdXBf YWNrX3JlcyA9IGpzb24ubG9hZHMoYmFja3VwX2Fjay5kYXRhLmRlY29kZSgndXRmLTgnKSkKKwor ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhiYWNrdXBfYWNrX3Jlc1snc3VjY2VzcyddLCAxKQor CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfcGFyYW1zKGRhdGEpOgorICAgICAgICBv dXQgPSAwCisgICAgICAgIG91dF9kb25lID0gRmFsc2UKKyAgICAgICAgZXJyID0gMAorICAgICAg ICBlcnJfZG9uZSA9IEZhbHNlCisgICAgICAgIGlmICdvdXQnIGluIGRhdGE6CisgICAgICAgICAg ICBvdXQgPSBkYXRhWydvdXQnXSBhbmQgZGF0YVsnb3V0J11bJ3BvcyddCisKKyAgICAgICAgICAg IGlmICdkb25lJyBpbiBkYXRhWydvdXQnXToKKyAgICAgICAgICAgICAgICBvdXRfZG9uZSA9IGRh dGFbJ291dCddWydkb25lJ10KKworICAgICAgICBpZiAnZXJyJyBpbiBkYXRhOgorICAgICAgICAg ICAgZXJyID0gZGF0YVsnZXJyJ10gYW5kIGRhdGFbJ2VyciddWydwb3MnXQorCisgICAgICAgICAg ICBpZiAnZG9uZScgaW4gZGF0YVsnZXJyJ106CisgICAgICAgICAgICAgICAgZXJyX2RvbmUgPSBk YXRhWydlcnInXVsnZG9uZSddCisKKyAgICAgICAgcmV0dXJuIG91dCwgZXJyLCAob3V0X2RvbmUg YW5kIGVycl9kb25lKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uv dGVzdHMvdGVzdF9tYWludGVuYW5jZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weSBiL3dlYi9wZ2Fk bWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFuY2VfY3JlYXRlX2pvYl91 bml0X3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThhZWY1Ywot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rl c3RfbWFpbnRlbmFuY2VfY3JlYXRlX2pvYl91bml0X3Rlc3QucHkKQEAgLTAsMCArMSwxOTggQEAK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMK KyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKworaW1wb3J0IHN5cworaW1wb3J0IHNpbXBsZWpz b24gYXMganNvbgorCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMgaW1w b3J0IEJhdGNoUHJvY2VzcworZnJvbSBwZ2FkbWluLnRvb2xzLm1haW50ZW5hbmNlIGltcG9ydCBN ZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9y Citmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lv bi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2Fk bWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0aWxzCitmcm9tIHBnYWRt aW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1 dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKKworCitpZiBzeXMudmVyc2lvbl9pbmZvIDwg KDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworZWxzZToKKyAg ICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKKworCitjbGFzcyBN YWludGVuYW5jZUNyZWF0ZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3Qg dGhlIEJhY2t1cENyZWF0ZUpvYiBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAg KCdXaGVuIG1haW50ZW5hbmNlIG9iamVjdCB3aXRoIGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAg ICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9tYWludGVuYW5jZV9zZXJ2ZXIn LAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBkYXRh YmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvcD0nVkFDVVVNJywKKyAgICAgICAg ICAgICAgICAgdmFjdXVtX2FuYWx5emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9m cmVlemU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxsPUZhbHNlLAorICAgICAg ICAgICAgICAgICB2ZXJib3NlPVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVy bD0nL21haW50ZW5hbmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRf b3B0cz1bJ1ZBQ1VVTSBWRVJCT1NFO1xuJ10sCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVu IG1haW50ZW5hbmNlIG9iamVjdCB3aXRoIFZBQ1VVTSBGVUxMJywKKyAgICAgICAgIGRpY3QoCisg ICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAor ICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50ZW5hbmNlX3NlcnZlcicsCisgICAgICAg ICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywK KyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0 Z3JlcycsCisgICAgICAgICAgICAgICAgIG9wPSdWQUNVVU0nLAorICAgICAgICAgICAgICAgICB2 YWN1dW1fYW5hbHl6ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxz ZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2Z1bGw9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg dmVyYm9zZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9tYWludGVu YW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WydWQUNV VU0gRlVMTCBWRVJCT1NFO1xuJ10sCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1haW50 ZW5hbmNlIG9iamVjdCB3aXRoIHRoZSBBTkFMWVpFJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50ZW5hbmNlX3NlcnZlcicsCisgICAgICAgICAgICAg ICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAg ICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAg ICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jlcycs CisgICAgICAgICAgICAgICAgIG9wPSdBTkFMWVpFJywKKyAgICAgICAgICAgICAgICAgdmFjdXVt X2FuYWx5emU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxzZSwKKyAg ICAgICAgICAgICAgICAgdmFjdXVtX2Z1bGw9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJv c2U9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uv am9iL3swfS97MX0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnQU5BTFlaRSBW RVJCT1NFO1xuJ10sCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1haW50ZW5hbmNlIHRo ZSBvYmplY3Qgd2l0aCB0aGUgUkVJTkRFWCcsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgbmFtZT0ndGVzdF9tYWludGVuYW5jZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBw b3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAg ICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAg IHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICBvcD0nUkVJTkRFWCcsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9hbmFs eXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAg ICAgICAgICAgICB2YWN1dW1fZnVsbD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1G YWxzZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9i L3swfS97MX0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnUkVJTkRFWCBEQVRB QkFTRSBwb3N0Z3JlcztcbiddLAorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGVu YW5jZSB0aGUgb2JqZWN0IHdpdGggdGhlIENMVVNURVInLAorICAgICAgICAgZGljdCgKKyAgICAg ICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAg ICAgICAgICAgICAgIG5hbWU9J3Rlc3RfbWFpbnRlbmFuY2Vfc2VydmVyJywKKyAgICAgICAgICAg ICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAg ICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAg ICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVz JywKKyAgICAgICAgICAgICAgICAgb3A9J0NMVVNURVInLAorICAgICAgICAgICAgICAgICB2YWN1 dW1fYW5hbHl6ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxzZSwK KyAgICAgICAgICAgICAgICAgdmFjdXVtX2Z1bGw9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZl cmJvc2U9RmFsc2UKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL21haW50ZW5h bmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJ0NMVVNU RVI7XG4nXSwKKyAgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAg ICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAg ICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlf cGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICkKKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5jZS5TZXJ2ZXInKQor ICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5jZS5NZXNzYWdlJykKKyAgICBAcGF0 Y2goJ3BnYWRtaW4udG9vbHMubWFpbnRlbmFuY2UuQmF0Y2hQcm9jZXNzJykKKyAgICBAcGF0Y2go J3BnYWRtaW4udXRpbHMuZHJpdmVyLnBzeWNvcGcyLnNlcnZlcl9tYW5hZ2VyLlNlcnZlck1hbmFn ZXIuJworICAgICAgICAgICAnZXhwb3J0X3Bhc3N3b3JkX2VudicpCisgICAgZGVmIHJ1blRlc3Qo c2VsZiwgZXhwb3J0X3Bhc3N3b3JkX2Vudl9tb2NrLAorICAgICAgICAgICAgICAgIGJhdGNoX3By b2Nlc3NfbW9jaywgbWVzc2FnZV9tb2NrLCBzZXJ2ZXJfbW9jayk6CisgICAgICAgIHNlbGYuc2Vy dmVyX2lkID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bInNlcnZlcl9pZCJdCisg ICAgICAgIHNlbGYuZGJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJf aWQiXQorICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQsIHNlbGYu ZGJfaWQpCisKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCBpZCwgdXNlcm5hbWUpOgorICAgICAgICAgICAg ICAgIHNlbGYuaG9zdCA9IGhvc3QKKyAgICAgICAgICAgICAgICBzZWxmLnBvcnQgPSBwb3J0Cisg ICAgICAgICAgICAgICAgc2VsZi5pZCA9IGlkCisgICAgICAgICAgICAgICAgc2VsZi51c2VybmFt ZSA9IHVzZXJuYW1lCisKKyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1NlcnZlcihzZWxmLmNs YXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgIG1vY2tfcmVzdWx0ID0gc2VydmVyX21vY2sucXVlcnkuZmlsdGVyX2J5 LnJldHVybl92YWx1ZQorICAgICAgICBtb2NrX3Jlc3VsdC5maXJzdC5yZXR1cm5fdmFsdWUgPSBt b2NrX29iagorCisgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5zZXRfZW52X3ZhcmlhYmxlcyA9 IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVlCisgICAgICAgICkKKyAg ICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnN0YXJ0ID0gTWFnaWNNb2NrKAorICAgICAgICAgICAg cmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorICAgICAgICBleHBvcnRfcGFzc3dvcmRfZW52 X21vY2sucmV0dXJuX3ZhbHVlID0gVHJ1ZQorCisgICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNl cnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAg aWYgc2VydmVyX3Jlc3BvbnNlWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoKKyAgICAg ICAgICAgIGRiX293bmVyID0gc2VydmVyX3Jlc3BvbnNlWydkYXRhJ11bJ3VzZXInXVsnbmFtZSdd CisgICAgICAgICAgICBzZWxmLmRhdGEgPSBkYXRhYmFzZV91dGlscy5nZXRfZGJfZGF0YShkYl9v d25lcikKKyAgICAgICAgICAgIHNlbGYuZGJfbmFtZSA9IHNlbGYuZGF0YVsnbmFtZSddCisKKyAg ICAgICAgIyBDcmVhdGUgdGhlIGJhY2t1cCBqb2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRl c3Rlci5wb3N0KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 anNvbi5kdW1wcyhzZWxmLnBhcmFtcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29u LmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSBy ZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgYXNzZXJ0IG1lc3NhZ2Vf bW9jay5jYWxsZWQKKyAgICAgICAgYXNzZXJ0IGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsZWQKKwor ICAgICAgICBpZiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgZm9yIG9wdCBp biBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4o b3B0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLmNh bGxfYXJnc19saXN0WzBdWzFdWydhcmdzJ10pCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX21lc3NhZ2UucHkgYi93ZWIvcGdh ZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX21lc3NhZ2UucHkK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNiODllZAotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFu Y2VfbWVzc2FnZS5weQpAQCAtMCwwICsxLDEyNCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMg cGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAy MDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworZnJvbSBmbGFzayBpbXBvcnQgUmVzcG9uc2UKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24K KworZnJvbSBwZ2FkbWluLnRvb2xzLm1haW50ZW5hbmNlIGltcG9ydCBNZXNzYWdlCitmcm9tIHBn YWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCisKKworY2xhc3MgTWFp bnRlbmFuY2VNZXNzYWdlVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUg TWFpbnRlbmFuY2UgTWVzc2FnZSBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAg KCdXaGVuIG1haW50YWluZWQgdGhlIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAg ICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAg ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAg ICAgICAgICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2 YWN1dW1fZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwn OiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAg ICAgICAgICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IlZBQ1VVTSBWRVJCT1NFO1xuIgorICAg ICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJNYWludGVuYW5jZSAoVmFj dXVtKSIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9J1ZBQ1VVTSBWRVJCT1NF OycKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIg d2l0aCBGVUxMIFZFUkJPU0Ugb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAg ICAgICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1 dW1fZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBU cnVlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UnOiBUcnVlCisgICAgICAgICAgICAg ICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0iVkFDVVVNIEZVTEwgVkVSQk9TRTtcbiIKKyAg ICAgICAgICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZh Y3V1bSkiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gRlVMTCBW RVJCT1NFOycKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBz ZXJ2ZXIgd2l0aCBBTkFMWVpFJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3Nf cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBk YXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAg ICAgICAgICAgICAgICAgICAnb3AnOiAnQU5BTFlaRScsCisgICAgICAgICAgICAgICAgICAgICAn dmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJl ZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwK KyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgICAgICBjbWQ9IkFOQUxZWkUgVkVSQk9TRTtcbiIKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKEFuYWx5emUpIiwK KyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nQU5BTFlaRSBWRVJCT1NFOycKKwor ICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBS RUlOREVYJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3Qo CisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAg ICAgICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg ICAgICAnb3AnOiAnUkVJTkRFWCcsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5 emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2Us CisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAg ICAgICAgICAgICd2ZXJib3NlJzogRmFsc2UKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICAgICAgY21kPSJSRUlOREVYO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAg ZXh0ZWN0ZWRfbXNnPSJNYWludGVuYW5jZSAoUmVpbmRleCkiLAorICAgICAgICAgICAgIGV4cGV0 Y2VkX2RldGFpbHNfY21kPSdSRUlOREVYOycKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hl biBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBDTFVTVEVSJywKKyAgICAgICAgIGRpY3QoCisg ICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAor ICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSc6 ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnQ0xVU1RFUicsCisgICAg ICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAg ICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFj dXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQor ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IkNMVVNURVIgVkVSQk9T RTtcbiIKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRl bmFuY2UgKENsdXN0ZXIpIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nQ0xV U1RFUiBWRVJCT1NFOycKKworICAgICAgICAgKSksCisgICAgXQorCisgICAgZGVmIHJ1blRlc3Qo c2VsZik6CisgICAgICAgIG1haW50ZW5hbmNlX29iaiA9IE1lc3NhZ2UoCisgICAgICAgICAgICBz ZWxmLmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sn ZGF0YSddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisgICAgICAgICkK KworICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBtZXNzYWdlIHJldHVybmVkCisgICAgICAg IGFzc2VydCBtYWludGVuYW5jZV9vYmoubWVzc2FnZSA9PSBzZWxmLmV4dGVjdGVkX21zZworCisg ICAgICAgICMgQ2hlY2sgdGhlIGNvbW1hbmQKKyAgICAgICAgb2JqX2RldGFpbHMgPSBtYWludGVu YW5jZV9vYmouZGV0YWlscyhzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10sIE5vbmUpCisgICAgICAg IHNlbGYuYXNzZXJ0SW4oc2VsZi5leHBldGNlZF9kZXRhaWxzX2NtZCwgb2JqX2RldGFpbHMpCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5IGIvd2ViL3Bn YWRtaW4vdG9vbHMvcmVzdG9yZS9fX2luaXRfXy5weQppbmRleCA0NWQzODE2Li41OGJjMjUxIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5CisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvX19pbml0X18ucHkKQEAgLTg2LDggKzg2LDcgQEAgY2xh c3MgUmVzdG9yZU1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgIGVsc2U6CiAgICAg ICAgICAgICAgICAgc2VsZi5jbWQgKz0gY21kQXJnKGFyZykKIAotICAgIEBwcm9wZXJ0eQotICAg IGRlZiBtZXNzYWdlKHNlbGYpOgorICAgIGRlZiBnZXRfc2VydmVyX2RldGFpbHMoc2VsZik6CiAg ICAgICAgICMgRmV0Y2ggdGhlIHNlcnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQsIHJv bGVzIGV0YwogICAgICAgICBzID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKICAgICAgICAgICAg IGlkPXNlbGYuc2lkLCB1c2VyX2lkPWN1cnJlbnRfdXNlci5pZApAQCAtMTAwLDMwICs5OSwyNSBA QCBjbGFzcyBSZXN0b3JlTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICBob3N0ID0gbWFu YWdlci5sb2NhbF9iaW5kX2hvc3QgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMuaG9z dAogICAgICAgICBwb3J0ID0gbWFuYWdlci5sb2NhbF9iaW5kX3BvcnQgaWYgbWFuYWdlci51c2Vf c3NoX3R1bm5lbCBlbHNlIHMucG9ydAogCisgICAgICAgIHJldHVybiBzLm5hbWUsIGhvc3QsIHBv cnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgorICAgICAgICBuYW1l LCBob3N0LCBwb3J0ID0gc2VsZi5nZXRfc2VydmVyX2RldGFpbHMoKQorCiAgICAgICAgIHJldHVy biBfKCJSZXN0b3JpbmcgYmFja3VwIG9uIHRoZSBzZXJ2ZXIgJ3swfScuLi4iKS5mb3JtYXQoCi0g ICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9ybWF0KHMubmFtZSwgaG9zdCwgcG9ydCksCisg ICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9ybWF0KG5hbWUsIGhvc3QsIHBvcnQpLAogICAg ICAgICApCiAKICAgICBkZWYgZGV0YWlscyhzZWxmLCBjbWQsIGFyZ3MpOgotICAgICAgICAjIEZl dGNoIHRoZSBzZXJ2ZXIgZGV0YWlscyBsaWtlIGhvc3RuYW1lLCBwb3J0LCByb2xlcyBldGMKLSAg ICAgICAgcyA9IFNlcnZlci5xdWVyeS5maWx0ZXJfYnkoCi0gICAgICAgICAgICBpZD1zZWxmLnNp ZCwgdXNlcl9pZD1jdXJyZW50X3VzZXIuaWQKLSAgICAgICAgKS5maXJzdCgpCi0KLSAgICAgICAg ZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgotICAgICAgICBkcml2 ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKQotICAgICAgICBtYW5hZ2VyID0gZHJp dmVyLmNvbm5lY3Rpb25fbWFuYWdlcihzZWxmLnNpZCkKLQotICAgICAgICBob3N0ID0gbWFuYWdl ci5sb2NhbF9iaW5kX2hvc3QgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMuaG9zdAot ICAgICAgICBwb3J0ID0gbWFuYWdlci5sb2NhbF9iaW5kX3BvcnQgaWYgbWFuYWdlci51c2Vfc3No X3R1bm5lbCBlbHNlIHMucG9ydAotCisgICAgICAgIG5hbWUsIGhvc3QsIHBvcnQgPSBzZWxmLmdl dF9zZXJ2ZXJfZGV0YWlscygpCiAgICAgICAgIHJlcyA9ICc8ZGl2IGNsYXNzPSJoNSI+JwogCiAg ICAgICAgIHJlcyArPSBodG1sLnNhZmVfc3RyKAogICAgICAgICAgICAgXygKICAgICAgICAgICAg ICAgICAiUmVzdG9yaW5nIGJhY2t1cCBvbiB0aGUgc2VydmVyICd7MH0nLi4uIgogICAgICAgICAg ICAgKS5mb3JtYXQoCi0gICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdChzLm5h bWUsIGhvc3QsIHBvcnQpCisgICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdChu YW1lLCBob3N0LCBwb3J0KQogICAgICAgICAgICAgKQogICAgICAgICApCiAKQEAgLTIwNiw2ICsy MDAsNyBAQCBkZWYgY3JlYXRlX3Jlc3RvcmVfam9iKHNpZCk6CiAKICAgICBpZiBfZmlsZSBpcyBO b25lOgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgc3Rh dHVzPTQxMCwKICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKICAgICAgICAgICAgIGVycm9ybXNnPV8o IkZpbGUgY291bGQgbm90IGJlIGZvdW5kLiIpCiAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29s cy9yZXN0b3JlL3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmU2OWRlMjkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVz dHMvdGVzdF9iYXRjaF9wcm9jZXNzLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0 cy90ZXN0X2JhdGNoX3Byb2Nlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMjhkNjkyYQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUv dGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzLnB5CkBAIC0wLDAgKzEsMTU0IEBACisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdo dCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworaW1wb3J0IHN5cworCitmcm9tIHBnYWRtaW4ubWlzYy5iZ3Byb2Nlc3Mu cHJvY2Vzc2VzIGltcG9ydCBCYXRjaFByb2Nlc3MsIElQcm9jZXNzRGVzYworZnJvbSBwZ2FkbWlu LnRvb2xzLnJlc3RvcmUgaW1wb3J0IFJlc3RvcmVNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMu cm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMs IGxvYWRzCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGlt cG9ydCBwYXRjaAorZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisK KworY2xhc3MgQmF0Y2hQcm9jZXNzVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVz dCB0aGUgQmF0Y2hQcm9jZXNzIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAo J1doZW4gcmVzdG9yZSBzZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFz c19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IG5hbWU9J3Rlc3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQs CisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jlcycs CisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAg ICBhcmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAg ICAgICAgInJlc3RvcmVfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAg ICAgICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0t cG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAg ICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAg ICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0t ZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAg ICAgICBdLAorICAgICAgICAgICAgICAgICBjbWQ9J3Jlc3RvcmVfc2VydmVyJworICAgICAgICAg ICAgICkKKyAgICAgICAgICkpCisgICAgXQorCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJl c3RvcmUuUmVzdG9yZU1lc3NhZ2UuZ2V0X3NlcnZlcl9kZXRhaWxzJykKKyAgICBAcGF0Y2goJ3Bn YWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLlBvcGVuJykKKyAgICBAcGF0Y2goJ3BnYWRt aW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLmN1cnJlbnRfYXBwJykKKyAgICBAcGF0Y2goJ3Bn YWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLmRiJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4u dG9vbHMucmVzdG9yZS5jdXJyZW50X3VzZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJn cHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF91c2VyJykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBj dXJyZW50X3VzZXJfbW9jaywgY3VycmVudF91c2VyLCBkYl9tb2NrLAorICAgICAgICAgICAgICAg IGN1cnJlbnRfYXBwX21vY2ssIHBvcGVuX21vY2ssIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrKToK KyAgICAgICAgY3VycmVudF91c2VyLmlkID0gMQorICAgICAgICBjdXJyZW50X3VzZXJfbW9jay5p ZCA9IDEKKyAgICAgICAgY3VycmVudF9hcHBfbW9jay5QR0FETUlOX1JVTlRJTUUgPSBGYWxzZQor CisgICAgICAgIGRlZiBkYl9zZXNzaW9uX2FkZF9tb2NrKGopOgorICAgICAgICAgICAgY21kX29i aiA9IGxvYWRzKGouZGVzYykKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNtZF9vYmos IElQcm9jZXNzRGVzYykKKyAgICAgICAgICAgIHByaW50KGNtZF9vYmopCisgICAgICAgICAgICBz ZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmJmaWxlLCBzZWxmLmNsYXNzX3BhcmFtc1snYmZpbGUn XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouY21kLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJyAtLWZpbGUgInJlc3RvcmVfZmlsZSIgJworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCAiezB9IiAnCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnLS1wb3J0ICJ7MX0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICctLXVzZXJuYW1lICJ7Mn0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5v LXBhc3N3b3JkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlICJ7 M30iJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFz c19wYXJhbXNbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1sncG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuY2xhc3NfcGFyYW1zWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydkYXRhYmFzZSddCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApKQorCisgICAgICAgIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrLnJldHVy bl92YWx1ZSA9IFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyduYW1lJ10sXAorICAg ICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSxcCisgICAgICAgICAgICBzZWxmLmNs YXNzX3BhcmFtc1sncG9ydCddCisKKyAgICAgICAgZGJfbW9jay5zZXNzaW9uLmFkZC5zaWRlX2Vm ZmVjdCA9IGRiX3Nlc3Npb25fYWRkX21vY2sKKworICAgICAgICByZXN0b3JlX29iaiA9IFJlc3Rv cmVNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3NpZCddLAorICAgICAg ICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10sCisgICAgICAgICAgICAqc2VsZi5jbGFz c19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAgICAgICAgcCA9IEJhdGNoUHJvY2VzcygK KyAgICAgICAgICAgIGRlc2M9cmVzdG9yZV9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFz c19wYXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJn cyddCisgICAgICAgICkKKworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhh cyBiZWVuIGNhbGxlZAorICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQK KworICAgICAgICAjIENoZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFy dChwb3Blbl9tb2NrLCBwKQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAg c2VsZi5fY2hlY2tfbGlzdChwLCByZXN0b3JlX29iaikKKworICAgIGRlZiBfY2hlY2tfc3RhcnQo c2VsZiwgcG9wZW5fbW9jaywgcCk6CisgICAgICAgIGNtZF90ZXN0ID0gc2VsZi5jbGFzc19wYXJh bXNbJ2NtZCddCisKKyAgICAgICAgY2xhc3MgcG9wZW5Nb2NrU2lkZUVmZmVjdCgpOgorICAgICAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAg IGFzc2VydCBjbWRfdGVzdCBpbiBjbWQKKyAgICAgICAgICAgICAgICBhc3NlcnQgJ2VudicgaW4g a3dhcmdzCisKKyAgICAgICAgICAgIGRlZiBwb2xsKHNlbGYpOgorICAgICAgICAgICAgICAgIHBh c3MKKworICAgICAgICBwb3Blbl9tb2NrLnNpZGVfZWZmZWN0ID0gcG9wZW5Nb2NrU2lkZUVmZmVj dAorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICBhc3NlcnQgcG9wZW5fbW9jay5jYWxsZWQK KworICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUHJvY2Vzcycp CisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5CYXRjaFByb2Nl c3MuJworICAgICAgICAgICAndXBkYXRlX3Byb2Nlc3NfaW5mbycpCisgICAgZGVmIF9jaGVja19s aXN0KHNlbGYsIHAsIHJlc3RvcmVfb2JqLCB1cGRhdGVfcHJvY2Vzc19pbmZvX21vY2ssCisgICAg ICAgICAgICAgICAgICAgIHByb2Nlc3NfbW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrUHJv Y2VzcygpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlc2MsIGFyZ3MsIGNtZCk6 CisgICAgICAgICAgICAgICAgc2VsZi5waWQgPSAxCisgICAgICAgICAgICAgICAgc2VsZi5leGl0 X2NvZGUgPSAxCisgICAgICAgICAgICAgICAgc2VsZi5zdGFydF90aW1lID0gJzIwMTgtMDQtMTcg MDY6MTg6NTYuMzE1NDQ1ICswMDAwJworICAgICAgICAgICAgICAgIHNlbGYuZW5kX3RpbWUgPSBO b25lCisgICAgICAgICAgICAgICAgc2VsZi5kZXNjID0gZHVtcHMoZGVzYykKKyAgICAgICAgICAg ICAgICBzZWxmLmFyZ3VtZW50cyA9ICIgIi5qb2luKGFyZ3MpCisgICAgICAgICAgICAgICAgc2Vs Zi5jb21tYW5kID0gY21kCisgICAgICAgICAgICAgICAgc2VsZi5hY2tub3dsZWRnZSA9IE5vbmUK KworICAgICAgICBwcm9jZXNzX21vY2sucXVlcnkuZmlsdGVyX2J5LnJldHVybl92YWx1ZSA9IFsK KyAgICAgICAgICAgIFRlc3RNb2NrUHJvY2VzcyhyZXN0b3JlX29iaiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSkKKyAgICAgICAgXQorCisgICAg ICAgIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jay5yZXR1cm5fdmFsdWUgPSBbVHJ1ZSwgVHJ1ZV0K KworICAgICAgICByZXRfdmFsdWUgPSBwLmxpc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs KDEsIGxlbihyZXRfdmFsdWUpKQorICAgICAgICBhc3NlcnQgJ2RldGFpbHMnIGluIHJldF92YWx1 ZVswXQorICAgICAgICBhc3NlcnQgJ2Rlc2MnIGluIHJldF92YWx1ZVswXQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2NyZWF0ZV9yZXN0b3JlX2pvYi5w eSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9jcmVhdGVfcmVzdG9yZV9q b2IucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ExYWIyYwotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9jcmVhdGVf cmVzdG9yZV9qb2IucHkKQEAgLTAsMCArMSwyMDMgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisj IHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0g MjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IG9zCisKK2lt cG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9y dCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9k aWN0Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMg YXMgdXRpbHMKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZl cl91dGlscworaW1wb3J0IHBnYWRtaW4udG9vbHMuYmFja3VwLnRlc3RzLnRlc3RfYmFja3VwX3V0 aWxzIGFzIGJhY2t1cF91dGlscworCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6Cisg ICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCitlbHNlOgorICAgIGZyb20gdW5p dHRlc3QubW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworCisKK2NsYXNzIFJlc3RvcmVKb2JU ZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJCYWNrdXAgYXBpIHRlc3QgY2FzZXMiIiIK KyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiByZXN0b3JlIHRoZSBvYmplY3Qgd2l0 aCB0aGUgZGVmYXVsdCBvcHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAg ICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICBjdXN0b209 RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg YmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAg ICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ndGVzdF9yZXN0b3JlX2Rh dGFiYXNlJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvcmVzdG9yZS9qb2Iv ezB9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZSddLAorICAg ICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3Rl ZF9leGl0X2NvZGU9WzAsIE5vbmVdLAorICAgICAgICAgICAgIGJhY2t1cF9vcHRpb25zPWRpY3Qo CisgICAgICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICAgICAgZmls ZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0 b20nLAorICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAg ICAgICAgYmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAg ICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgICAgICBkYXRhYmFz ZT0ndGVzdF9yZXN0b3JlX2RhdGFiYXNlJworICAgICAgICAgICAgICAgICApLAorICAgICAgICAg ICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgICAgICBl eHBlY3RlZF9wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9v cHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PWMnLCAnLS1ibG9icyddLAorICAgICAgICAgICAg ICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgICAgICAgICAg ZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgICAgICApCisgICAgICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAg ICAgICAgaWYgc2VsZi5zZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAg ICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5 X3BhdGhzIGlzIG5vdCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAg ICAgICAgICAgIHNlbGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICApCisKKyAgICBkZWYgY3JlYXRlX2JhY2t1cChzZWxmKToKKyAgICAgICAgdXJsID0gc2Vs Zi5iYWNrdXBfb3B0aW9uc1sndXJsJ10uZm9ybWF0KHNlbGYuc2VydmVyX2lkKQorICAgICAgICBq b2JfaWQgPSBiYWNrdXBfdXRpbHMuY3JlYXRlX2JhY2t1cF9qb2Ioc2VsZi50ZXN0ZXIsIHVybCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmFj a3VwX29wdGlvbnNbJ3BhcmFtcyddKQorICAgICAgICBzZWxmLmJhY2t1cF9maWxlID0gYmFja3Vw X3V0aWxzLnJ1bl9iYWNrdXBfam9iKAorICAgICAgICAgICAgc2VsZi50ZXN0ZXIsCisgICAgICAg ICAgICBqb2JfaWQsCisgICAgICAgICAgICBzZWxmLmJhY2t1cF9vcHRpb25zWydleHBlY3RlZF9w YXJhbXMnXSwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4sCisgICAgICAgICAgICBzZWxmLmFz c2VydE5vdEluCisgICAgICAgICkKKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICBz ZWxmLmRiX25hbWUgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2Rp Y3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgc2VydmVyX3Jlc3BvbnNlID0g c2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYuc2VydmVyX2lkKQorICAgICAg ICBkYl9pZCA9IHV0aWxzLmNyZWF0ZV9kYXRhYmFzZShzZWxmLnNlcnZlciwgc2VsZi5wYXJhbXNb J2RhdGFiYXNlJ10pCisKKyAgICAgICAgc2VsZi5jcmVhdGVfYmFja3VwKCkKKyAgICAgICAgdXJs ID0gc2VsZi51cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkKQorCisgICAgICAgICMgQ3JlYXRlIHRo ZSByZXN0b3JlIGpvYgorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYu cGFyYW1zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlw ZT0naHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVz X2NvZGUsIDIwMCkKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2Uu ZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgIGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2Rh dGEnXVsnam9iX2lkJ10KKworICAgICAgICBjbnQgPSAwCisgICAgICAgIHdoaWxlIDE6CisgICAg ICAgICAgICBpZiBjbnQgPiAxOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAj IENoZWNrIHRoZSBwcm9jZXNzIGxpc3QKKyAgICAgICAgICAgIHJlc3BvbnNlMSA9IHNlbGYudGVz dGVyLmdldCgnL21pc2MvYmdwcm9jZXNzLz9fPScuZm9ybWF0KAorICAgICAgICAgICAgICAgIHJh bmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KHJlc3BvbnNlMS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICAgICAgcHJvY2Vzc19saXN0ID0g anNvbi5sb2FkcyhyZXNwb25zZTEuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgICAg IGlmIGxlbihwcm9jZXNzX2xpc3QpID4gMCBhbmQgJ2V4ZWN1dGlvbl90aW1lJyBpbiBwcm9jZXNz X2xpc3RbMF06CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHRpbWUuc2xlZXAo MC41KQorICAgICAgICAgICAgY250ICs9IDEKKworICAgICAgICBhc3NlcnQgJ2V4ZWN1dGlvbl90 aW1lJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAgICAgICAgYXNzZXJ0ICdzdGltZScgaW4gcHJvY2Vz c19saXN0WzBdCisgICAgICAgIGFzc2VydCAnZXhpdF9jb2RlJyBpbiBwcm9jZXNzX2xpc3RbMF0K KyAgICAgICAgYXNzZXJ0IHByb2Nlc3NfbGlzdFswXVsnZXhpdF9jb2RlJ10gaW4gc2VsZi5leHBl Y3RlZF9leGl0X2NvZGUKKworICAgICAgICBpZiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAg ICAgICAgICAgZm9yIG9wdCBpbiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAg ICAgIHNlbGYuYXNzZXJ0SW4ob3B0LCBwcm9jZXNzX2xpc3RbMF1bJ2RldGFpbHMnXSkKKyAgICAg ICAgaWYgc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGlu IHNlbGYubm90X2V4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0 Tm90SW4ob3B0LCBwcm9jZXNzX2xpc3RbMF1bJ2RldGFpbHMnXSkKKworICAgICAgICAjIENoZWNr IHRoZSBwcm9jZXNzIGRldGFpbHMKKyAgICAgICAgcF9kZXRhaWxzID0gc2VsZi50ZXN0ZXIuZ2V0 KCcvbWlzYy9iZ3Byb2Nlc3MvezB9P189Jy5mb3JtYXQoCisgICAgICAgICAgICBqb2JfaWQsIHJh bmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWxzKHBfZGV0YWlscy5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBwX2RldGFpbHNfZGF0 YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAg IHBfZGV0YWlscyA9IHNlbGYudGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfS97MX0vezJ9 Lz9fPScuZm9ybWF0KAorICAgICAgICAgICAgam9iX2lkLCAwLCAwLCByYW5kb20ucmFuZGludCgx LCA5OTk5OTk5KSkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwX2RldGFp bHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRz KHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICAjIFJldHJpZXZlIHRo ZSByZXN0b3JlIGpvYiBwcm9jZXNzIGxvZ3MKKyAgICAgICAgY250ID0gMAorICAgICAgICB3aGls ZSAxOgorICAgICAgICAgICAgb3V0LCBlcnIsIHN0YXR1cyA9IFJlc3RvcmVKb2JUZXN0LmdldF9w YXJhbXMocF9kZXRhaWxzX2RhdGEpCisgICAgICAgICAgICBpZiBzdGF0dXMgb3IgY250ID49IDEw OgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIHBfZGV0YWlscyA9IHNlbGYu dGVzdGVyLmdldCgKKyAgICAgICAgICAgICAgICAnL21pc2MvYmdwcm9jZXNzL3swfS97MX0vezJ9 Lz9fPXszfScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBqb2JfaWQsIG91dCwgZXJyLCBy YW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNl bGYuYXNzZXJ0RXF1YWxzKHBfZGV0YWlscy5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICAgICAg cF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgn KSkKKworICAgICAgICAgICAgY250ICs9IDEKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKwor ICAgICAgICAjIENoZWNrIHRoZSBqb2IgaXMgY29tcGxldGUuCisgICAgICAgIHJlc3RvcmVfYWNr ID0gc2VsZi50ZXN0ZXIucHV0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9Jy5mb3JtYXQoam9iX2lkKSkK KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzdG9yZV9hY2suc3RhdHVzX2NvZGUsIDIwMCkK KyAgICAgICAgcmVzdG9yZV9hY2tfcmVzID0ganNvbi5sb2FkcyhyZXN0b3JlX2Fjay5kYXRhLmRl Y29kZSgndXRmLTgnKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN0b3JlX2Fja19y ZXNbJ3N1Y2Nlc3MnXSwgMSkKKworICAgICAgICBpZiBzZWxmLmJhY2t1cF9maWxlIGlzIG5vdCBO b25lOgorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5iYWNrdXBfZmlsZSk6Cisg ICAgICAgICAgICAgICAgb3MucmVtb3ZlKHNlbGYuYmFja3VwX2ZpbGUpCisKKyAgICBAc3RhdGlj bWV0aG9kCisgICAgZGVmIGdldF9wYXJhbXMoZGF0YSk6CisgICAgICAgIG91dCA9IDAKKyAgICAg ICAgb3V0X2RvbmUgPSBGYWxzZQorICAgICAgICBlcnIgPSAwCisgICAgICAgIGVycl9kb25lID0g RmFsc2UKKyAgICAgICAgaWYgJ291dCcgaW4gZGF0YToKKyAgICAgICAgICAgIG91dCA9IGRhdGFb J291dCddIGFuZCBkYXRhWydvdXQnXVsncG9zJ10KKworICAgICAgICAgICAgaWYgJ2RvbmUnIGlu IGRhdGFbJ291dCddOgorICAgICAgICAgICAgICAgIG91dF9kb25lID0gZGF0YVsnb3V0J11bJ2Rv bmUnXQorCisgICAgICAgIGlmICdlcnInIGluIGRhdGE6CisgICAgICAgICAgICBlcnIgPSBkYXRh WydlcnInXSBhbmQgZGF0YVsnZXJyJ11bJ3BvcyddCisKKyAgICAgICAgICAgIGlmICdkb25lJyBp biBkYXRhWydlcnInXToKKyAgICAgICAgICAgICAgICBlcnJfZG9uZSA9IGRhdGFbJ2VyciddWydk b25lJ10KKworICAgICAgICByZXR1cm4gb3V0LCBlcnIsIChvdXRfZG9uZSBhbmQgZXJyX2RvbmUp CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGNvbm5lY3Rpb24gPSB1dGlscy5n ZXRfZGJfY29ubmVjdGlvbigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYiddLAorICAgICAg ICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsn ZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisgICAgICAg ICAgICBzZWxmLnNlcnZlclsncG9ydCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3NzbG1v ZGUnXQorICAgICAgICApCisgICAgICAgIHV0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwg c2VsZi5wYXJhbXNbJ2RhdGFiYXNlJ10pCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9y ZXN0b3JlL3Rlc3RzL3Rlc3RfcmVzdG9yZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weSBiL3dlYi9w Z2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX2NyZWF0ZV9qb2JfdW5pdF90 ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjljZDgKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVzdG9y ZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpAQCAtMCwwICsxLDMxOCBAQAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworaW1wb3J0IHN5cworaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitm cm9tIHBnYWRtaW4udG9vbHMucmVzdG9yZSBpbXBvcnQgUmVzdG9yZU1lc3NhZ2UKK2Zyb20gcGdh ZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lv biBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0 aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0 IHNlcnZlcl91dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZl cl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBk YXRhYmFzZV91dGlscworCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20g bW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1v Y2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKKworCitjbGFzcyBSZXN0b3JlQ3JlYXRlSm9iVGVz dChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgUmVzdG9yZUNyZWF0ZUpvYiBj bGFzcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgb2JqZWN0 IHdpdGggZGVmYXVsdCBvcHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xh c3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBuYW1lPSd0ZXN0X3Jlc3RvcmVfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0 LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBk YXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3Jl JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICks CisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3Rf cmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAg ICAgICAgICAgICBjdXN0b209RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwK KyAgICAgICAgICAgICAgICAgYmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1b XSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFz ZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3Jl L2pvYi97MH0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJ10s CisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4 cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4g cmVzdG9yZSBvYmplY3Qgd2l0aCB0aGUgc2VjdGlvbnMgb3B0aW9ucycsCisgICAgICAgICBkaWN0 KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9 MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAg ICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywK KyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAg YmZpbGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jl cycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBmaWxlPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1h dD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgbm9fb2Zfam9icz0nMicsCisgICAgICAgICAg ICAgICAgIGN1c3RvbT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAg ICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisg ICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGRh dGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgcHJlX2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAg ICAgcG9zdF9kYXRhPVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1UcnVlLAorICAg ICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAgICAgICAgICMgUGxlYXNlIGluY2x1 ZGUgc2VjdGlvbnMgZGF0YSBoZXJlLCByaWdodCBub3cgdGhpcyBpcyBhIGJ1ZworICAgICAgICAg ICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tam9icycsICcyJ10sCisgICAg ICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgICMgQmVsb3cg b3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCBvbmNlIHdlIGZpeCB0aGUgaXNzdWUgIzMzNjgKKyAg ICAgICAgICAgICAjIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bJy0tZGF0YS1vbmx5JywgJy0tc2No ZW1hLW9ubHknXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdLAor ICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIHRoZSBvYmplY3Qgd2l0aCBUeXBl IG9mIG9iamVjdHMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9 ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rl c3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAg ICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdw b3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAg ICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9yZXN0b3JlX2Zp bGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAg IG5vX29mX2pvYnM9JzInLAorICAgICAgICAgICAgICAgICBjdXN0b209RmFsc2UsCisgICAgICAg ICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAg ICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9z dGdyZXMnLAorICAgICAgICAgICAgICAgICBvbmx5X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAg ICAgb25seV9zY2hlbWE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX293bmVyPVRydWUKKyAg ICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAg ICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1kYXRhLW9ubHknXSwK KyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgIyBC ZWxvdyBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIG9uY2Ugd2UgZml4IHRoZSBpc3N1ZSAjMzM2 OAorICAgICAgICAgICAgICMgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVsnLS1zY2hlbWEtb25seScs ICctLW5vLW93bmVyJ10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25l XSwKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9yZSBvYmplY3Qgd2l0aCBvcHRp b24gLSBEbyBub3Qgc2F2ZScsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3Bh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFt ZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAg ICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisg ICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X3Jlc3Rv cmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAg ICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBjdXN0b209RmFsc2UsCisgICAg ICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAg ICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgZG5z X293bmVyPVRydWUsCisgICAgICAgICAgICAgICAgIGRuc19wcml2aWxlZ2U9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgZG5zX3RhYmxlc3BhY2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9k YXRhPUZhbHNlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pv Yi97MH0nLAorICAgICAgICAgICAgICMgQWRkICctLW5vLXByaXZpbGVnZXMnIHRvIHRoZSBleHBl Y3RlZF9jbWQgb25jZSAjMzM2MyBmaXhlZAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRz PVsnLS1uby1vd25lcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXRh Ymxlc3BhY2VzJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAg ICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAg ICAgICAoJ1doZW4gcmVzdG9yZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBRdWVyaWVzJywKKyAgICAg ICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAg ICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisg ICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxo b3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdw b3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAg ICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAg Zm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAg ICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAg ICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgY2xlYW49 VHJ1ZSwKKyAgICAgICAgICAgICAgICAgaW5jbHVkZV9jcmVhdGVfZGF0YWJhc2U9VHJ1ZSwKKyAg ICAgICAgICAgICAgICAgc2luZ2xlX3RyYW5zYWN0aW9uPVRydWUsCisgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAgICAgICAgIGV4cGVj dGVkX2NtZF9vcHRzPVsnLS1jcmVhdGUnLCAnLS1jbGVhbicsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICctLXNpbmdsZS10cmFuc2FjdGlvbiddLAorICAgICAgICAgICAgIG5vdF9l eHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAs IE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgb2JqZWN0IHdpdGgg b3B0aW9uIC0gRGlzYmFsZScsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3Bh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFt ZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAg ICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNl PSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAg ICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAg ICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBf ZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAg ICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAg ICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jlcycs CisgICAgICAgICAgICAgICAgIGRpc2FibGVfdHJpZ2dlcj1UcnVlLAorICAgICAgICAgICAgICAg ICBub19kYXRhX2ZhaWxfdGFibGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9zY2hlbWE9 RmFsc2UKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3sw fScsCisgICAgICAgICAgICAgIyBBZGQgJy0tbm8tZGF0YS1mb3ItZmFpbGVkLXRhYmxlcycgaW50 bworICAgICAgICAgICAgICMgZXhwZWN0ZWRfY21kX29wdHMgb25jZSAjMzM2MyBmaXhlZAorICAg ICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS1kaXNhYmxlLXRyaWdnZXJzJ10sCisgICAg ICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVk X2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9y ZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBNaXNjZWxsYW5lb3VzJywKKyAgICAgICAgIGRpY3QoCisg ICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAor ICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAg ICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAg ICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9 J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAg ICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0 b20nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNj aGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAg ZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlX3NldF9zZXNzaW9uX2F1 dGg9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZXhpdF9vbl9lcnJvcj1UcnVlLAorICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgdXJsPScvcmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAg ICAjIEFkZCAnLS11c2Vfc2V0X3Nlc3Npb25fYXV0aCcgaW50bworICAgICAgICAgICAgICMgZXhw ZWN0ZWRfY21kX29wdHMgb25jZSAjMzM2MyBmaXhlZAorICAgICAgICAgICAgIGV4cGVjdGVkX2Nt ZF9vcHRzPVsnLS1leGl0LW9uLWVycm9yJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2Nt ZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAg ICAgICAgICkpLAorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgc2Vs Zi5zZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAgICAgICAgIHNl bGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhzIGlzIG5v dCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNl bGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAg ICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5TZXJ2ZXInKQorICAgIEBwYXRjaCgncGdh ZG1pbi50b29scy5yZXN0b3JlLmN1cnJlbnRfdXNlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRv b2xzLnJlc3RvcmUuUmVzdG9yZU1lc3NhZ2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5y ZXN0b3JlLmZpbGVuYW1lX3dpdGhfZmlsZV9tYW5hZ2VyX3BhdGgnKQorICAgIEBwYXRjaCgncGdh ZG1pbi50b29scy5yZXN0b3JlLkJhdGNoUHJvY2VzcycpCisgICAgQHBhdGNoKCdwZ2FkbWluLnV0 aWxzLmRyaXZlci5wc3ljb3BnMi5zZXJ2ZXJfbWFuYWdlci5TZXJ2ZXJNYW5hZ2VyLicKKyAgICAg ICAgICAgJ2V4cG9ydF9wYXNzd29yZF9lbnYnKQorICAgIGRlZiBydW5UZXN0KHNlbGYsIGV4cG9y dF9wYXNzd29yZF9lbnZfbW9jaywgYmF0Y2hfcHJvY2Vzc19tb2NrLAorICAgICAgICAgICAgICAg IGZpbGVuYW1lX21vY2ssIHJlc3RvcmVfbWVzc2FnZV9tb2NrLAorICAgICAgICAgICAgICAgIGN1 cnJlbnRfdXNlcl9tb2NrLCBzZXJ2ZXJfbW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrU2Vy dmVyKCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgaG9zdCwgcG9ydCwg aWQsIHVzZXJuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAg ICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBv cnQKKyAgICAgICAgICAgICAgICBzZWxmLmlkID0gaWQKKyAgICAgICAgICAgICAgICBzZWxmLnVz ZXJuYW1lID0gdXNlcm5hbWUKKworICAgICAgICBzZWxmLmRiX25hbWUgPSAnJworICAgICAgICBz ZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lk Il0KKworICAgICAgICBtb2NrX29iaiA9IFRlc3RNb2NrU2VydmVyKHNlbGYuY2xhc3NfcGFyYW1z WyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19w YXJhbXNbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNs YXNzX3BhcmFtc1sncG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuc2VydmVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xh c3NfcGFyYW1zWyd1c2VybmFtZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KQorICAgICAgICBtb2NrX3Jlc3VsdCA9IHNlcnZlcl9tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1 cm5fdmFsdWUKKyAgICAgICAgbW9ja19yZXN1bHQuZmlyc3QucmV0dXJuX3ZhbHVlID0gbW9ja19v YmoKKworICAgICAgICBmaWxlbmFtZV9tb2NrLnJldHVybl92YWx1ZSA9IHNlbGYucGFyYW1zWydm aWxlJ10KKworICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suc2V0X2Vudl92YXJpYWJsZXMgPSBN YWdpY01vY2soCisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICApCisgICAg ICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5zdGFydCA9IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJl dHVybl92YWx1ZT1UcnVlCisgICAgICAgICkKKworICAgICAgICBleHBvcnRfcGFzc3dvcmRfZW52 X21vY2sucmV0dXJuX3ZhbHVlID0gVHJ1ZQorCisgICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNl cnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAg aWYgc2VydmVyX3Jlc3BvbnNlWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoKKyAgICAg ICAgICAgIGRiX293bmVyID0gc2VydmVyX3Jlc3BvbnNlWydkYXRhJ11bJ3VzZXInXVsnbmFtZSdd CisgICAgICAgICAgICBzZWxmLmRhdGEgPSBkYXRhYmFzZV91dGlscy5nZXRfZGJfZGF0YShkYl9v d25lcikKKyAgICAgICAgICAgIHNlbGYuZGJfbmFtZSA9IHNlbGYuZGF0YVsnbmFtZSddCisKKyAg ICAgICAgdXJsID0gc2VsZi51cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkKQorCisgICAgICAgICMg Q3JlYXRlIHRoZSByZXN0b3JlIGpvYgorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBv c3QodXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1 bXBzKHNlbGYucGFyYW1zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9u c2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMo cmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgIGpvYl9pZCA9IHJlc3BvbnNl X2RhdGFbJ2RhdGEnXVsnam9iX2lkJ10KKworICAgICAgICBhc3NlcnQgcmVzdG9yZV9tZXNzYWdl X21vY2suY2FsbGVkCisgICAgICAgIGFzc2VydCBiYXRjaF9wcm9jZXNzX21vY2suY2FsbGVkCisK KyAgICAgICAgaWYgc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZvciBvcHQg aW4gc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElu KAorICAgICAgICAgICAgICAgICAgICBvcHQsCisgICAgICAgICAgICAgICAgICAgIGJhdGNoX3By b2Nlc3NfbW9jay5jYWxsX2FyZ3NfbGlzdFswXVsxXVsnYXJncyddCisgICAgICAgICAgICAgICAg KQorICAgICAgICBpZiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZv ciBvcHQgaW4gc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAgICAgc2Vs Zi5hc3NlcnROb3RJbigKKyAgICAgICAgICAgICAgICAgICAgb3B0LAorICAgICAgICAgICAgICAg ICAgICBiYXRjaF9wcm9jZXNzX21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXQorICAg ICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVz dHMvdGVzdF9yZXN0b3JlX21lc3NhZ2UucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rl c3RzL3Rlc3RfcmVzdG9yZV9tZXNzYWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmJiNDUyODYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0 b3JlL3Rlc3RzL3Rlc3RfcmVzdG9yZV9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsNzYgQEAKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29w eXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCisKK2Zyb20gcGdhZG1pbi50b29scy5yZXN0 b3JlIGltcG9ydCBSZXN0b3JlTWVzc2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9y dCBCYXNlVGVzdEdlbmVyYXRvcgorCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAg IGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGlt cG9ydCBwYXRjaAorCisKK2NsYXNzIFJlc3RvcmVNZXNzYWdlVGVzdChCYXNlVGVzdEdlbmVyYXRv cik6CisgICAgIiIiVGVzdCB0aGUgUmVzdG9yZU1lc3NhZ2UgY2xhc3MiIiIKKyAgICBzY2VuYXJp b3MgPSBbCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCcsCisgICAgICAgICBkaWN0KAor ICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwK KyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAg ICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAg ICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZp bGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAg ICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAncmVzdG9yZV9maWxlJywK KyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgJ2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAg ICAgICAgICc1NDQ0JywKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAg ICAgICAgICAgICAgICAgICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnLS1uby1w YXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAgICAg ICAgICAgICAgICAncG9zdGdyZXMnCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg ICAgIGNtZD0iL3Rlc3RfcGF0aC9wZ19yZXN0b3JlIgorICAgICAgICAgICAgICksCisgICAgICAg ICAgICAgZXh0ZWN0ZWRfbXNnPSJSZXN0b3JpbmcgYmFja3VwIG9uIHRoZSBzZXJ2ZXIgIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RfcmVzdG9yZV9zZXJ2ZXIgKGxvY2FsaG9zdDo1 NDQ0KScuLi4iLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPScvdGVzdF9wYXRo L3BnX3Jlc3RvcmUgLS1maWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn InJlc3RvcmVfZmlsZSIgLS1ob3N0ICJsb2NhbGhvc3QiJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcgLS1wb3J0ICI1NDQ0IiAtLXVzZXJuYW1lICJwb3N0Z3JlcyIgJworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkIC0tZGF0YWJhc2Ug InBvc3RncmVzIicKKworICAgICAgICAgKSkKKyAgICBdCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4u dG9vbHMucmVzdG9yZS5SZXN0b3JlTWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIGRl ZiBydW5UZXN0KHNlbGYsIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrKToKKyAgICAgICAgZ2V0X3Nl cnZlcl9kZXRhaWxzX21vY2sucmV0dXJuX3ZhbHVlID0gXAorICAgICAgICAgICAgc2VsZi5jbGFz c19wYXJhbXNbJ25hbWUnXSxcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCdd LFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10KKworICAgICAgICByZXN0 b3JlX29iaiA9IFJlc3RvcmVNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNb J3NpZCddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10sCisgICAgICAg ICAgICAqc2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAgICAgICAgIyBD aGVjayB0aGUgZXhwZWN0ZWQgbWVzc2FnZSByZXR1cm5lZAorICAgICAgICBhc3NlcnQgcmVzdG9y ZV9vYmoubWVzc2FnZSA9PSBzZWxmLmV4dGVjdGVkX21zZworCisgICAgICAgICMgQ2hlY2sgdGhl IGNvbW1hbmQKKyAgICAgICAgb2JqX2RldGFpbHMgPSByZXN0b3JlX29iai5kZXRhaWxzKHNlbGYu Y2xhc3NfcGFyYW1zWydjbWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4o c2VsZi5leHBldGNlZF9kZXRhaWxzX2NtZCwgb2JqX2RldGFpbHMpCmRpZmYgLS1naXQgYS93ZWIv cmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5IGIvd2ViL3JlZ3Jlc3Np b24vcHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91dGlscy5weQppbmRleCAzZTUxN2I2Li42ZjU3YzY3 IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxz LnB5CisrKyBiL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkK QEAgLTIxLDYgKzIxLDggQEAgaW1wb3J0IGNvbmZpZwogaW1wb3J0IHJlZ3Jlc3Npb24KIGZyb20g cmVncmVzc2lvbiBpbXBvcnQgdGVzdF9zZXR1cAogCitmcm9tIHBnYWRtaW4udXRpbHMucHJlZmVy ZW5jZXMgaW1wb3J0IFByZWZlcmVuY2VzCisKIFNFUlZFUl9HUk9VUCA9IHRlc3Rfc2V0dXAuY29u ZmlnX2RhdGFbJ3NlcnZlcl9ncm91cCddCiBmaWxlX25hbWUgPSBvcy5wYXRoLnJlYWxwYXRoKF9f ZmlsZV9fKQogCkBAIC04Niw3ICs4OCw4IEBAIGRlZiBnZXRfY29uZmlnX2RhdGEoKToKICAgICAg ICAgICAgICAgICAiZGJfcGFzc3dvcmQiOiBzcnZbJ2RiX3Bhc3N3b3JkJ10sCiAgICAgICAgICAg ICAgICAgInJvbGUiOiAiIiwKICAgICAgICAgICAgICAgICAic3NsbW9kZSI6IHNydlsnc3NsbW9k ZSddLAotICAgICAgICAgICAgICAgICJ0YWJsZXNwYWNlX3BhdGgiOiBzcnYuZ2V0KCd0YWJsZXNw YWNlX3BhdGgnLCBOb25lKQorICAgICAgICAgICAgICAgICJ0YWJsZXNwYWNlX3BhdGgiOiBzcnYu Z2V0KCd0YWJsZXNwYWNlX3BhdGgnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9i aW5hcnlfcGF0aHMiOiBzcnYuZ2V0KCdkZWZhdWx0X2JpbmFyeV9wYXRocycsIE5vbmUpCiAgICAg ICAgICAgICB9CiAgICAgICAgICAgICBpZiAnZGJfdHlwZScgaW4gc3J2OgogICAgICAgICAgICAg ICAgIGRhdGFbJ2RiX3R5cGUnXSA9IHNydlsnZGJfdHlwZSddCkBAIC00NDUsNiArNDQ4LDEzIEBA IGRlZiBkZWxldGVfc2VydmVyX3dpdGhfYXBpKHRlc3Rlciwgc2lkKToKICAgICAgICAgdXJsID0g Jy9icm93c2VyL3NlcnZlci9vYmovJyArIHN0cihTRVJWRVJfR1JPVVApICsgIi8iCiAgICAgICAg ICMgQ2FsbCBBUEkgdG8gZGVsZXRlIHRoZSBzZXJ2ZXIKICAgICAgICAgcmVzcG9uc2UgPSB0ZXN0 ZXIuZGVsZXRlKHVybCArIHN0cihzaWQpKQorCisgICAgICAgIGNudCA9IDAKKyAgICAgICAgZm9y IHMgaW4gcmVncmVzc2lvbi5wYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXToKKyAgICAgICAgICAg IGlmIHNbJ3NlcnZlcl9pZCddID09IGludChzaWQpOgorICAgICAgICAgICAgICAgIGRlbCByZWdy ZXNzaW9uLnBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdW2NudF0KKyAgICAgICAgICAgIGNudCAr PSAxCisKICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhj KGZpbGU9c3lzLnN0ZGVycikKIApAQCAtNTk2LDYgKzYwNiw2NCBAQCBkZWYgZ2V0X2RiX3NlcnZl cihzaWQpOgogICAgIHJldHVybiBjb25uZWN0aW9uCiAKIAorZGVmIHNldF9wcmVmZXJlbmNlKGRl ZmF1bHRfYmluYXJ5X3BhdGgpOgorICAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoY29uZmlnLlRF U1RfU1FMSVRFX1BBVEgpCisgICAgY3VyID0gY29ubi5jdXJzb3IoKQorCisgICAgcGVyZiA9IFBy ZWZlcmVuY2VzLm1vZHVsZSgncGF0aHMnKQorICAgIHBnX3BhdGhfcHJlZiA9IHBlcmYucHJlZmVy ZW5jZSgncGdfYmluX2RpcicpCisKKyAgICB1c2VyX3ByZWYgPSBjdXIuZXhlY3V0ZSgKKyAgICAg ICAgJ1NFTEVDVCBwaWQsIHVpZCBGUk9NIHVzZXJfcHJlZmVyZW5jZXMgd2hlcmUgcGlkPSVzJyAl IHBnX3BhdGhfcHJlZi5waWQKKyAgICApCisgICAgdXNlcl9wcmVmID0gdXNlcl9wcmVmLmZldGNo b25lKCkKKworICAgIGlmIHVzZXJfcHJlZjoKKyAgICAgICAgY3VyLmV4ZWN1dGUoJ1VQREFURSB1 c2VyX3ByZWZlcmVuY2VzIFNFVCB2YWx1ZSA9ID8gV0hFUkUgcGlkID0gPycsCisgICAgICAgICAg ICAgICAgICAgIChkZWZhdWx0X2JpbmFyeV9wYXRoWydwZyddLCBwZ19wYXRoX3ByZWYucGlkKSkK KyAgICBlbHNlOgorICAgICAgICBwZ19wcmVmX2RldGFpbHMgPSAocGdfcGF0aF9wcmVmLnBpZCwg MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BnJ10p CisgICAgICAgIGN1ci5leGVjdXRlKCdJTlNFUlQgSU5UTyB1c2VyX3ByZWZlcmVuY2VzKHBpZCwg dWlkLCB2YWx1ZSknCisgICAgICAgICAgICAgICAgICAgICcgVkFMVUVTICg/LD8sPyknLCBwZ19w cmVmX2RldGFpbHMpCisKKyAgICBwcGFzX3BhdGhfcHJlZiA9IHBlcmYucHJlZmVyZW5jZSgncHBh c19iaW5fZGlyJykKKworICAgIHVzZXJfcHJlZiA9IGN1ci5leGVjdXRlKAorICAgICAgICAnU0VM RUNUIHBpZCwgdWlkIEZST00gdXNlcl9wcmVmZXJlbmNlcyB3aGVyZSBwaWQ9JXMnICUKKyAgICAg ICAgcHBhc19wYXRoX3ByZWYucGlkCisgICAgKQorICAgIHVzZXJfcHJlZiA9IHVzZXJfcHJlZi5m ZXRjaG9uZSgpCisKKyAgICBpZiB1c2VyX3ByZWY6CisgICAgICAgIGN1ci5leGVjdXRlKCdVUERB VEUgdXNlcl9wcmVmZXJlbmNlcyBTRVQgdmFsdWUgPSA/IFdIRVJFIHBpZCA9ID8gJywKKyAgICAg ICAgICAgICAgICAgICAgKGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BwYXMnXSwgcHBhc19wYXRoX3By ZWYucGlkKSkKKyAgICBlbHNlOgorICAgICAgICBwcGFzX3ByZWZfZGV0YWlscyA9IChwcGFzX3Bh dGhfcHJlZi5waWQsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfYmlu YXJ5X3BhdGhbJ3BwYXMnXSkKKyAgICAgICAgY3VyLmV4ZWN1dGUoJ0lOU0VSVCBJTlRPIHVzZXJf cHJlZmVyZW5jZXMocGlkLCB1aWQsIHZhbHVlKScKKyAgICAgICAgICAgICAgICAgICAgJyBWQUxV RVMgKD8sPyw/KScsIHBwYXNfcHJlZl9kZXRhaWxzKQorCisgICAgZ3BkYl9wYXRoX3ByZWYgPSBw ZXJmLnByZWZlcmVuY2UoJ2dwZGJfYmluX2RpcicpCisKKyAgICB1c2VyX3ByZWYgPSBjdXIuZXhl Y3V0ZSgKKyAgICAgICAgJ1NFTEVDVCBwaWQsIHVpZCBGUk9NIHVzZXJfcHJlZmVyZW5jZXMgd2hl cmUgcGlkPSVzJyAlCisgICAgICAgIGdwZGJfcGF0aF9wcmVmLnBpZAorICAgICkKKyAgICB1c2Vy X3ByZWYgPSB1c2VyX3ByZWYuZmV0Y2hvbmUoKQorCisgICAgaWYgdXNlcl9wcmVmOgorICAgICAg ICBjdXIuZXhlY3V0ZSgnVVBEQVRFIHVzZXJfcHJlZmVyZW5jZXMgU0VUIHZhbHVlID0gPyBXSEVS RSBwaWQgPSA/ICcsCisgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0X2JpbmFyeV9wYXRoWydn cGRiJ10sIGdwZGJfcGF0aF9wcmVmLnBpZCkpCisgICAgZWxzZToKKyAgICAgICAgZ3BkYl9wcmVm X2RldGFpbHMgPSAoZ3BkYl9wYXRoX3ByZWYucGlkLCAxLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWZhdWx0X2JpbmFyeV9wYXRoWydncGRiJ10pCisgICAgICAgIGN1ci5leGVjdXRl KCdJTlNFUlQgSU5UTyB1c2VyX3ByZWZlcmVuY2VzKHBpZCwgdWlkLCB2YWx1ZSknCisgICAgICAg ICAgICAgICAgICAgICcgVkFMVUVTICg/LD8sPyknLCBncGRiX3ByZWZfZGV0YWlscykKKworICAg IGNvbm4uY29tbWl0KCkKKworCiBkZWYgcmVtb3ZlX2RiX2ZpbGUoKToKICAgICAiIiJUaGlzIGZ1 bmN0aW9uIHVzZSB0byByZW1vdmUgU1FMaXRlIERCIGZpbGUiIiIKICAgICBpZiBvcy5wYXRoLmlz ZmlsZShjb25maWcuVEVTVF9TUUxJVEVfUEFUSCk6CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lv bi9ydW50ZXN0cy5weSBiL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CmluZGV4IGQ3ODY2OTIu LjI0N2UzZmIgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CisrKyBiL3dl Yi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CkBAIC0xMTQsNiArMTE0LDkgQEAgdGVzdF9jbGllbnQg PSBhcHAudGVzdF9jbGllbnQoKQogZHJpdmVyID0gTm9uZQogYXBwX3N0YXJ0ZXIgPSBOb25lCiBo YW5kbGVfY2xlYW51cCA9IE5vbmUKK2FwcC5QR0FETUlOX1JVTlRJTUUgPSBUcnVlCitpZiBjb25m aWcuU0VSVkVSX01PREUgaXMgVHJ1ZToKKyAgICBhcHAuUEdBRE1JTl9SVU5USU1FID0gRmFsc2UK IAogc2V0YXR0cih1bml0X3Rlc3QucmVzdWx0LlRlc3RSZXN1bHQsICJwYXNzZWQiLCBbXSkKIApA QCAtMjEzLDcgKzIxNiw3IEBAIGRlZiBnZXRfdGVzdF9tb2R1bGVzKGFyZ3VtZW50cyk6CiAgICAg ICAgICAgICAgICAgaWYgJ2hlYWRsZXNzX2Nocm9tZScgaW4gdGVzdF9zZXR1cC5jb25maWdfZGF0 YToKICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdF9zZXR1cC5jb25maWdfZGF0YVsnaGVhZGxl c3NfY2hyb21lJ106CiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmFkZF9hcmd1bWVu dCgiLS1oZWFkbGVzcyIpCi0gICAgICAgICAgICBvcHRpb25zLmFkZF9hcmd1bWVudCgiLS13aW5k b3ctc2l6ZT0xMjgweDEwMjQiKQorICAgICAgICAgICAgb3B0aW9ucy5hZGRfYXJndW1lbnQoIi0t d2luZG93LXNpemU9MTI4MHg4MDAiKQogICAgICAgICAgICAgZHJpdmVyID0gd2ViZHJpdmVyLkNo cm9tZShjaHJvbWVfb3B0aW9ucz1vcHRpb25zKQogCiAgICAgICAgIGFwcF9zdGFydGVyID0gQXBw U3RhcnRlcihkcml2ZXIsIGNvbmZpZykKQEAgLTIzNCw3ICsyMzcsNiBAQCBkZWYgZ2V0X3Rlc3Rf bW9kdWxlcyhhcmd1bWVudHMpOgogICAgICMgU29ydCBtb2R1bGUgbGlzdCBzbyB0aGF0IHRlc3Qg c3VpdGUgZXhlY3V0ZXMgdGhlIHRlc3QgY2FzZXMgc2VxdWVudGlhbGx5CiAgICAgbW9kdWxlX2xp c3QgPSBUZXN0c0dlbmVyYXRvclJlZ2lzdHJ5LnJlZ2lzdHJ5Lml0ZW1zKCkKICAgICBtb2R1bGVf bGlzdCA9IHNvcnRlZChtb2R1bGVfbGlzdCwga2V5PWxhbWJkYSBtb2R1bGVfdHVwbGU6IG1vZHVs ZV90dXBsZVswXSkKLQogICAgIHJldHVybiBtb2R1bGVfbGlzdAogCiAKQEAgLTM5Myw2ICszOTUs OSBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgICAgICAgIyBDcmVhdGUgdGVz dCBzZXJ2ZXIKICAgICAgICAgICAgIHNlcnZlcl9pbmZvcm1hdGlvbiA9IHRlc3RfdXRpbHMuY3Jl YXRlX3BhcmVudF9zZXJ2ZXJfbm9kZShzZXJ2ZXIpCiAKKyAgICAgICAgICAgIGlmIHNlcnZlclsn ZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0ZXN0 X3V0aWxzLnNldF9wcmVmZXJlbmNlKHNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSkKKwog ICAgICAgICAgICAgc3VpdGUgPSBnZXRfc3VpdGUodGVzdF9tb2R1bGVfbGlzdCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3RfY2xpZW50LApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vdGVzdF9jb25maWcu anNvbi5pbiBiL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4KaW5kZXggZWJjMTQ2 Ni4uMTViMTMzYSAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5p bgorKysgYi93ZWIvcmVncmVzc2lvbi90ZXN0X2NvbmZpZy5qc29uLmluCkBAIC0yMyw3ICsyMywx MiBAQAogICAgICAgIm1haW50ZW5hbmNlX2RiIjogInBvc3RncmVzIiwKICAgICAgICJzc2xtb2Rl IjogInByZWZlciIsCiAgICAgICAidGFibGVzcGFjZV9wYXRoIjogIiIsCi0gICAgICAiZW5hYmxl ZCI6IHRydWUKKyAgICAgICJlbmFibGVkIjogdHJ1ZSwKKyAgICAgICJkZWZhdWx0X2JpbmFyeV9w YXRocyI6IHsKKyAgICAgICAgInBnIjogIi9vcHQvUG9zdGdyZVNRTC85LjQvYmluLyIsCisgICAg ICAgICJwcGFzIjogIi9vcHQvZWRiL2FzMTAvYmluLyIsCisgICAgICAgICJncGRiIjogIiIKKyAg ICAgIH0KICAgICB9CiAgIF0sCiAgICJzZXJ2ZXJfdXBkYXRlX2RhdGEiOiBbCg== --0000000000002c384a056e1abdb9--