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 1fTivc-0005xT-Sq for pgadmin-hackers@arkaria.postgresql.org; Fri, 15 Jun 2018 07:13:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fTivb-0006fb-41 for pgadmin-hackers@arkaria.postgresql.org; Fri, 15 Jun 2018 07:13:47 +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 1fTiva-0006fL-Nw for pgadmin-hackers@lists.postgresql.org; Fri, 15 Jun 2018 07:13:46 +0000 Received: from mail-ot0-x243.google.com ([2607:f8b0:4003:c0f::243]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fTivP-0006HX-Q4 for pgadmin-hackers@postgresql.org; Fri, 15 Jun 2018 07:13:45 +0000 Received: by mail-ot0-x243.google.com with SMTP id 101-v6so9964134oth.4 for ; Fri, 15 Jun 2018 00:13:35 -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=wXlvW4jPFY5R7f/hYrAlltjH2wyfurm5O7N164n5/Fw=; b=kvet+asNFksNc1HSKsCqL/7IAJeINKrW1++iMIoVthM3z3lVW4gYHTkPm/5NJOAGcu YYksavhCOR2CwMzXn+KAt/fRGCIorbmWgwr5nmjZ6FuUDumchO1UWzBElx1zOZX9bA1r Y6teBbXvGCyv7agwGr9uut2Fqeeigjfacaqrd8z4jwg903HC1t6YLlqUrR2mW9oCeoy4 Pc81tmS4Jl8kuYZPr1m0uOvfh5bhulw1OBOAEmXpPLfLnbTkPRRhmoP/3PAQnC8yMZsw EUn5pFOABtDjhhMf8U/d3COtKoTGCGHnNJjPih8FxnJP3i5vVnQ4rPi/fxuK+cj203Wq kmaw== 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=wXlvW4jPFY5R7f/hYrAlltjH2wyfurm5O7N164n5/Fw=; b=Mlb9Ai1ac4fUVrisd2oz7PLhkciJvzoz0PKOXKMjsCzlqSy9g11m842nOwrPP3TR// xDdyiN5yuTzYVerN9RrVhA/a3wRq7tdAt8w+4f1WSmAl2jxTLrTKJaI94483Grq+7WO3 itdbVzZF1yXbw4BLx+FAbUtdGqxuoEPUwis8bYGMF1MPylnaz7LXwZQaNw8x0WRWIias uCQM3cQ4Yk6rAaWqmtpguLIXY0rIVHPIlh9sECQNgykBZl9JUuycbeY3Yra3/C+kcbO6 uT4LlUoXJcADVEL9iqH6wFfwZy4skHIEsd69O2ProvR6fxZYyJUbO6ha+0nTiTaptIsx iZuw== X-Gm-Message-State: APt69E0AFTXSuwXAjthu57zfnIYrjgZ05w9n0HscTR07Jyt3LS0qz0X5 Ib8ooYnt/BUr4j3y2o7D6afB4g5xr7k4fMW+5j7UDQ== X-Google-Smtp-Source: ADUXVKJR91tzPeczQlKkJKOoOqpCGiQu2vPbrkApEJ57s3QoqG2gr5+E6Y+FwX3ENWdyWTo7GhdwgM2Z5r79FVn9SyI= X-Received: by 2002:a9d:2010:: with SMTP id n16-v6mr259604ota.275.1529046813169; Fri, 15 Jun 2018 00:13:33 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:4081:0:0:0:0:0 with HTTP; Fri, 15 Jun 2018 00:13:31 -0700 (PDT) In-Reply-To: References: From: Khushboo Vashi Date: Fri, 15 Jun 2018 12:43:31 +0530 Message-ID: Subject: Re: [pgadmin4][Patch]: Test cases for the backup module To: Victoria Henry Cc: Dave Page , Joao De Almeida Pereira , pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000253ed0056ea8f493" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000253ed0056ea8f493 Content-Type: multipart/alternative; boundary="000000000000253ece056ea8f491" --000000000000253ece056ea8f491 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Please find the attached updated patch. On Wed, Jun 13, 2018 at 5:42 PM, Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > Hi Victoria, > > > On Tue, Jun 12, 2018 at 9:06 PM, Victoria Henry wrote= : > >> Hi Khushboo >> can you explain a little bit more this while loop? >> >> >> cnt =3D 0 >> while 1: >> if cnt > 1: >> break >> # Check the process list >> response1 =3D self.tester.get('/misc/bgprocess/?_=3D'.format( >> random.randint(1, 9999999))) >> self.assertEquals(response1.status_code, 200) >> process_list =3D json.loads(response1.data.decode('utf-8')) >> >> if len(process_list) > 0 and 'execution_time' in process_list[0]: >> break >> time.sleep(0.5) >> cnt +=3D 1 >> >> From what it looks like this will only run twice, maybe a for would be a >> better solution because we know it will only run twice. Also are we sure= we >> only want it to run twice? >> >> The code waits till the background process completes. So, while I > originally developed, not intended to run only twice. > But after that I put a kind of break point and that remains there. So, I > will remove that if condition which is not required. > I have made maximum 5 attempts. > We are using PyCharm to do our developments and we notice there are a big >> group of unused variables throughout. We should remove them if they are = not >> needed. Not sure if your editor also shows that information or not. >> > Do you know if there is a configuration in pycodestyle to enable the chec= k >> for unused variables? That would help a lot. >> >> Removed unused local variables. > Thanks for sharing the information. > >> The code >> >> assert 'execution_time' in process_list[0] >> assert 'stime' in process_list[0] >> assert 'exit_code' in process_list[0] >> assert process_list[0]['exit_code'] in self.expected_exit_code >> >> in test_Create_restore_job should use self.assertEqual or similar from >> unittest instead of plain assert. Because when something fails we do not >> have a way to understand what was wrong. >> > Will do. > Done > The tests on the restore are still failing GreenPlum. >> > It is failing because, Restore is not working with GreenPlum. Can you > please look into the Restore functionality for GPDB? > > > Thanks, > Khushboo > >> =E2=80=8B >> >> >> Thanks, Khushboo > >> Thanks >> Victoria & Joao >> >> On Tue, Jun 12, 2018 at 6:44 AM Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> Please find the attached updated patch with some code cleanup. >>> >>> On Tue, Jun 12, 2018 at 3:54 PM, Khushboo Vashi < >>> khushboo.vashi@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> Please find the attached patch excluding feature test cases. >>>> Python test cases are working fine, so we can commit this patch. I am >>>> working on fixing the feature tests which are failing on the different >>>> window sizes. >>>> >>>> Thanks, >>>> Khushboo >>>> >>>> On Fri, Jun 8, 2018 at 2:38 PM, Dave Page wrote: >>>> >>>>> Hi >>>>> >>>>> On Fri, Jun 8, 2018 at 6:33 AM, Khushboo Vashi < >>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>> >>>>>> Hi Dave, >>>>>> >>>>>> As per our discussion I have changed the window size to 1280X800, >>>>>> before it was 1280X900. >>>>>> Please find the attached updated patch >>>>>> >>>>> >>>>> I'm not sure that actually made any difference on my system. The >>>>> window continued to look taller than it is wide, so I wonder if the c= ode to >>>>> set the size is being ignored, or is at the wrong place? >>>>> >>>>> Anyway, I got 10 failures with this patch :-( >>>>> >>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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_utilit= ies_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/pgadmi= n_page.py", >>>>> line 171, in find_by_xpath >>>>> >>>>> lambda driver: driver.find_element_by_xpath(xpath) >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmi= n_page.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/pgadmi= n_page.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_check= s_pgadmin_debugger_test.py", >>>>> line 42, in runTest >>>>> >>>>> self._function_node_expandable() >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_check= s_pgadmin_debugger_test.py", >>>>> line 57, in _function_node_expandable >>>>> >>>>> self.page.select_tree_item("a_test_function()") >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmi= n_page.py", >>>>> line 135, in select_tree_item >>>>> >>>>> "' and @class=3D'aciTreeItem']").click() >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmi= n_page.py", >>>>> line 171, in find_by_xpath >>>>> >>>>> lambda driver: driver.find_element_by_xpath(xpath) >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmi= n_page.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/pgadmi= n_page.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.tools.backup.tests.te >>>>> st_create_backup_job.BackupJobTest) >>>>> >>>>> When backup the object with the default options >>>>> >>>>> ---------------------------------------------------------------------= - >>>>> >>>>> Traceback (most recent call last): >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/test= _create_backup_job.py", >>>>> line 58, in runTest >>>>> >>>>> self.assertNotIn >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/test= _backup_utils.py", >>>>> line 33, in run_backup_job >>>>> >>>>> random.randint(1, 9999999))) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 830, in get >>>>> >>>>> return self.open(*args, **kw) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/testing.py", >>>>> line 127, in open >>>>> >>>>> follow_redirects=3Dfollow_redirects) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 803, in open >>>>> >>>>> response =3D self.run_wsgi_app(environ, buffered=3Dbuffered) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 716, in run_wsgi_app >>>>> >>>>> rv =3D run_wsgi_app(self.application, environ, buffered=3Dbuffere= d) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 923, in run_wsgi_app >>>>> >>>>> app_rv =3D app(environ, start_response) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1997, in __call__ >>>>> >>>>> return self.wsgi_app(environ, start_response) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1985, in wsgi_app >>>>> >>>>> response =3D self.handle_exception(e) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1540, in handle_exception >>>>> >>>>> reraise(exc_type, exc_value, tb) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1982, in wsgi_app >>>>> >>>>> response =3D self.full_dispatch_request() >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1614, in full_dispatch_request >>>>> >>>>> rv =3D self.handle_user_exception(e) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1517, in handle_user_exception >>>>> >>>>> reraise(exc_type, exc_value, tb) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1612, in full_dispatch_request >>>>> >>>>> rv =3D self.dispatch_request() >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1598, in dispatch_request >>>>> >>>>> return self.view_functions[rule.endpoint](**req.view_args) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask_login.py", >>>>> line 792, in decorated_view >>>>> >>>>> return func(*args, **kwargs) >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/__init__= .py", >>>>> line 62, in index >>>>> >>>>> return make_response(response=3DBatchProcess.list()) >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/processe= s.py", >>>>> line 584, in list >>>>> >>>>> details =3D desc.details(p.command, args) >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.p= y", >>>>> line 159, in details >>>>> >>>>> name, host, port =3D self.get_server_details() >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.p= y", >>>>> line 122, in get_server_details >>>>> >>>>> host =3D manager.local_bind_host if manager.use_ssh_tunnel else >>>>> s.host >>>>> >>>>> AttributeError: 'NoneType' object has no attribute 'use_ssh_tunnel' >>>>> >>>>> >>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.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 71, in runTest >>>>> >>>>> random.randint(1, 9999999))) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 830, in get >>>>> >>>>> return self.open(*args, **kw) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/testing.py", >>>>> line 127, in open >>>>> >>>>> follow_redirects=3Dfollow_redirects) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 803, in open >>>>> >>>>> response =3D self.run_wsgi_app(environ, buffered=3Dbuffered) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 716, in run_wsgi_app >>>>> >>>>> rv =3D run_wsgi_app(self.application, environ, buffered=3Dbuffere= d) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 923, in run_wsgi_app >>>>> >>>>> app_rv =3D app(environ, start_response) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1997, in __call__ >>>>> >>>>> return self.wsgi_app(environ, start_response) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1985, in wsgi_app >>>>> >>>>> response =3D self.handle_exception(e) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1540, in handle_exception >>>>> >>>>> reraise(exc_type, exc_value, tb) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1982, in wsgi_app >>>>> >>>>> response =3D self.full_dispatch_request() >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1614, in full_dispatch_request >>>>> >>>>> rv =3D self.handle_user_exception(e) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1517, in handle_user_exception >>>>> >>>>> reraise(exc_type, exc_value, tb) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1612, in full_dispatch_request >>>>> >>>>> rv =3D self.dispatch_request() >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1598, in dispatch_request >>>>> >>>>> return self.view_functions[rule.endpoint](**req.view_args) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask_login.py", >>>>> line 792, in decorated_view >>>>> >>>>> return func(*args, **kwargs) >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/__init__= .py", >>>>> line 62, in index >>>>> >>>>> return make_response(response=3DBatchProcess.list()) >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/processe= s.py", >>>>> line 584, in list >>>>> >>>>> details =3D desc.details(p.command, args) >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.p= y", >>>>> line 159, in details >>>>> >>>>> name, host, port =3D self.get_server_details() >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.p= y", >>>>> line 122, in get_server_details >>>>> >>>>> host =3D manager.local_bind_host if manager.use_ssh_tunnel else >>>>> s.host >>>>> >>>>> AttributeError: 'NoneType' object has no attribute 'use_ssh_tunnel' >>>>> >>>>> >>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.tools.restore.tests.t >>>>> est_create_restore_job.RestoreJobTest) >>>>> >>>>> When restore the object with the default options >>>>> >>>>> ---------------------------------------------------------------------= - >>>>> >>>>> Traceback (most recent call last): >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/restore/tests/tes= t_create_restore_job.py", >>>>> line 95, in runTest >>>>> >>>>> self.create_backup() >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/restore/tests/tes= t_create_restore_job.py", >>>>> line 86, in create_backup >>>>> >>>>> self.assertNotIn >>>>> >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/test= _backup_utils.py", >>>>> line 33, in run_backup_job >>>>> >>>>> random.randint(1, 9999999))) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 830, in get >>>>> >>>>> return self.open(*args, **kw) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/testing.py", >>>>> line 127, in open >>>>> >>>>> follow_redirects=3Dfollow_redirects) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 803, in open >>>>> >>>>> response =3D self.run_wsgi_app(environ, buffered=3Dbuffered) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 716, in run_wsgi_app >>>>> >>>>> rv =3D run_wsgi_app(self.application, environ, buffered=3Dbuffere= d) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/test.py", >>>>> line 923, in run_wsgi_app >>>>> >>>>> app_rv =3D app(environ, start_response) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1997, in __call__ >>>>> >>>>> return self.wsgi_app(environ, start_response) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1985, in wsgi_app >>>>> >>>>> response =3D self.handle_exception(e) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1540, in handle_exception >>>>> >>>>> reraise(exc_type, exc_value, tb) >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1982, in wsgi_app >>>>> >>>>> response =3D self.full_dispatch_request() >>>>> >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/flask/app.py", >>>>> line 1614, in full_dispatch_request >>>>> >>>>> rv =3D self.handle_user_exception(e) >>>>> >>>>> > --000000000000253ece056ea8f491 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached updated pa= tch.

On Wed, J= un 13, 2018 at 5:42 PM, Khushboo Vashi <khushboo.vashi@enter= prisedb.com> wrote:
Hi Victoria,


On Tue, Jun 12, 2018 at 9:06 PM, Victoria Henry <vhenr= y@pivotal.io> wrote:
Hi Khushboo
can you explain a little bit more this while loo= p?

cnt =3D 0
while 1: if cnt > 1:
break
# Check the process list
response1 =3D self.tester.get('/misc/bgprocess/?_=3D'.format(
= random.randint(1, = 9999999)))
self.= assertEquals(response1.status_code= , 200)
process_list =3D json.loads(response1.data.de= code('utf-8'))
if len(process_list) > 0 and 'execution_time'
in process_list[0]:
break
time.sl= eep(0.5)
cnt +=3D 1
From what it looks like th= is will only run twice, maybe a for would be a better solution because we k= now it will only run twice. Also are we sure we only want it to run twice?<= /div>

The code waits till the backgro= und process completes. So, while I originally developed, not intended to ru= n only twice.=C2=A0
But after that I put a kind of break point an= d that remains there. So, I will remove that if condition which is not requ= ired.
I have made maximum 5 attemp= ts.=C2=A0
=
We are using PyCharm to do our development= s and we notice there are a big group of unused variables throughout. We sh= ould remove them if they are not needed. Not sure if your editor also shows= that information or not.=C2=A0=C2=A0
Do you know if there is a configura= tion in pycodestyle to enable the check for unused variables? That would he= lp a lot.

Removed unused local variables.=C2=A0
Thanks for sharing the information.=C2=A0
The code
assert 'execution_time=
' in process_list[<=
span style=3D"color:rgb(104,151,187)">0]
assert 'stim= e' in process_list[= 0]
assert 'exi= t_code' in process_= list[0]
assert process_list[0]['exit_code&#= 39;] in self.expected_exit_code
<= p style=3D"margin:0px 0px 1.2em!important">in test_Create_restore_job shoul= d use self.assertEqual or similar from unittest instead of plain assert. Beca= use when something fails we do not have a way to understand what was wrong.=

Will do.=C2=A0
Done=C2=A0

The tests on the restore are still failing GreenPlum.

It is failing because, Restore is not working with Gr= eenPlum. Can you please look into the Restore functionality for GPDB?
=


Thanks,
Khushboo=C2=A0
=E2=80=8B


Thanks,
Khushb= oo=C2=A0

Thanks
Victoria &= ; Joao

On Tue, J= un 12, 2018 at 6:44 AM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:

On Tue, Jun 12, 2018 at 3:5= 4 PM, Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,=

Please find the attached patch excluding feature test c= ases.
Python test cases are working fine, so we can commit this p= atch. I am working on fixing the feature tests which are failing on the dif= ferent window sizes.

Thanks,
Khushboo

On Fri, J= un 8, 2018 at 2:38 PM, Dave Page <dpage@pgadmin.org> wrote:<= br>
Hi

On Fri, Jun 8, 2018 at 6:33 AM, Khu= shboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi Dave,
As per our discussion I have changed the window size to 128= 0X800, before it was 1280X900.
Please find th= e attached updated patch
=C2=A0
I'm not sure that actually made any difference on my system. The wind= ow continued to look taller than it is wide, so I wonder if the code to set= the size is being ignored, or is at the wrong place?

<= div>Anyway, I got 10 failures with this patch :-(

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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_test= s.pg_utilities_backup_restore_test.PGUtilitiesBackupFeatureTest)<= /span>

Test for PG utilities - Backup and R= estore

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

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_uti= lities_backup_restore_test.py", line 97, in runTest

=C2=A0 =C2=A0= self.page.find_by_xpath("//div[contains(@class,'wcFlo= atingFocus')"

=C2=A0 File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pga= dmin_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/pga= dmin_page.py", line 263, in wait_for_element

=C2=A0 =C2=A0= return self._wait_for("element to exist", element_if_it_e= xists)

=C2=A0 File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pga= dmin_page.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-pack= ages/selenium/webdriver/support/wait.py", line 80, in until<= /span>

=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_test= s.xss_checks_pgadmin_debugger_test.CheckDebuggerForXssFeatureTest= )

Tests to check if Debugger is vulner= able to XSS

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

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_ch= ecks_pgadmin_debugger_test.py", line 42, in runTest

=C2=A0 =C2=A0= self._function_node_expandable()

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_ch= ecks_pgadmin_debugger_test.py", line 57, in _function_node_expand= able

=C2=A0 =C2=A0= self.page.select_tree_item("a_test_function()")

=C2=A0 File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pga= dmin_page.py", line 135, in select_tree_item

=C2=A0 =C2=A0= "' and @class=3D'aciTreeItem']").click()=

=C2=A0 File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pga= dmin_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/pga= dmin_page.py", line 263, in wait_for_element

=C2=A0 =C2=A0= return self._wait_for("element to exist", element_if_it_e= xists)

=C2=A0 File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pga= dmin_page.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-pack= ages/selenium/webdriver/support/wait.py", line 80, in until<= /span>

=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.tools.backup= .tests.test_create_backup_job.BackupJobTest)

When backup the object with the defa= ult options

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

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/<= wbr>test_create_backup_job.py", line 58, in runTest

=C2=A0 =C2=A0= self.assertNotIn

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/<= wbr>test_backup_utils.py", line 33, in run_backup_job

=C2=A0 =C2=A0= random.randint(1, 9999999)))

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 830, in get

=C2=A0 =C2=A0= return self.open(*args, **kw)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/testing.py", line 127, in open

=C2=A0 =C2=A0= follow_redirects=3Dfollow_redirects)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 803, in open

=C2=A0 =C2=A0= response =3D self.run_wsgi_app(environ, buffered=3Dbuffered)=

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 716, in run_wsgi_app

=C2=A0 =C2=A0= rv =3D run_wsgi_app(self.application, environ, buffered=3Dbuffered)=

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 923, in run_wsgi_app

=C2=A0 =C2=A0= app_rv =3D app(environ, start_response)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1997, in __call__

=C2=A0 =C2=A0= return self.wsgi_app(environ, start_response)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1985, in wsgi_app

=C2=A0 =C2=A0= response =3D self.handle_exception(e)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1540, in handle_exception

=C2=A0 =C2=A0= reraise(exc_type, exc_value, tb)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1982, in wsgi_app

=C2=A0 =C2=A0= response =3D self.full_dispatch_request()

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1614, in full_dispatch_request

=C2=A0 =C2=A0= rv =3D self.handle_user_exception(e)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1517, in handle_user_exception

=C2=A0 =C2=A0= reraise(exc_type, exc_value, tb)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1612, in full_dispatch_request

=C2=A0 =C2=A0= rv =3D self.dispatch_request()

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1598, in dispatch_request

=C2=A0 =C2=A0= return self.view_functions[rule.endpoint](**req.view_args)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask_login.py", line 792, in decorated_view

=C2=A0 =C2=A0= return func(*args, **kwargs)

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/__ini= t__.py", line 62, in index

=C2=A0 =C2=A0= return make_response(response=3DBatchProcess.list())

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/proce= sses.py", line 584, in list

=C2=A0 =C2=A0= details =3D desc.details(p.command, args)

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init_= _.py", line 159, in details

=C2=A0 =C2=A0= name, host, port =3D self.get_server_details()

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init_= _.py", line 122, in get_server_details

=C2=A0 =C2=A0= host =3D manager.local_bind_host if manager.use_ssh_tunnel else s.h= ost

AttributeError: 'NoneType' o= bject has no attribute 'use_ssh_tunnel'


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.tools.mainte= nance.tests.test_create_maintenance_job.MaintenanceJobTest)

When maintenance the object with the= default options

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

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/maintenance/te= sts/test_create_maintenance_job.py", line 71, in runTest

=C2=A0 =C2=A0= random.randint(1, 9999999)))

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 830, in get

=C2=A0 =C2=A0= return self.open(*args, **kw)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/testing.py", line 127, in open

=C2=A0 =C2=A0= follow_redirects=3Dfollow_redirects)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 803, in open

=C2=A0 =C2=A0= response =3D self.run_wsgi_app(environ, buffered=3Dbuffered)=

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 716, in run_wsgi_app

=C2=A0 =C2=A0= rv =3D run_wsgi_app(self.application, environ, buffered=3Dbuffered)=

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 923, in run_wsgi_app

=C2=A0 =C2=A0= app_rv =3D app(environ, start_response)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1997, in __call__

=C2=A0 =C2=A0= return self.wsgi_app(environ, start_response)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1985, in wsgi_app

=C2=A0 =C2=A0= response =3D self.handle_exception(e)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1540, in handle_exception

=C2=A0 =C2=A0= reraise(exc_type, exc_value, tb)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1982, in wsgi_app

=C2=A0 =C2=A0= response =3D self.full_dispatch_request()

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1614, in full_dispatch_request

=C2=A0 =C2=A0= rv =3D self.handle_user_exception(e)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1517, in handle_user_exception

=C2=A0 =C2=A0= reraise(exc_type, exc_value, tb)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1612, in full_dispatch_request

=C2=A0 =C2=A0= rv =3D self.dispatch_request()

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1598, in dispatch_request

=C2=A0 =C2=A0= return self.view_functions[rule.endpoint](**req.view_args)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask_login.py", line 792, in decorated_view

=C2=A0 =C2=A0= return func(*args, **kwargs)

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/__ini= t__.py", line 62, in index

=C2=A0 =C2=A0= return make_response(response=3DBatchProcess.list())

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/proce= sses.py", line 584, in list

=C2=A0 =C2=A0= details =3D desc.details(p.command, args)

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init_= _.py", line 159, in details

=C2=A0 =C2=A0= name, host, port =3D self.get_server_details()

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init_= _.py", line 122, in get_server_details

=C2=A0 =C2=A0= host =3D manager.local_bind_host if manager.use_ssh_tunnel else s.h= ost

AttributeError: 'NoneType' o= bject has no attribute 'use_ssh_tunnel'


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.tools.restor= e.tests.test_create_restore_job.RestoreJobTest)

When restore the object with the def= ault options

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

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/restore/tests/= test_create_restore_job.py", line 95, in runTest

=C2=A0 =C2=A0= self.create_backup()

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/restore/tests/= test_create_restore_job.py", line 86, in create_backup

=C2=A0 =C2=A0= self.assertNotIn

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/<= wbr>test_backup_utils.py", line 33, in run_backup_job

=C2=A0 =C2=A0= random.randint(1, 9999999)))

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 830, in get

=C2=A0 =C2=A0= return self.open(*args, **kw)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/testing.py", line 127, in open

=C2=A0 =C2=A0= follow_redirects=3Dfollow_redirects)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 803, in open

=C2=A0 =C2=A0= response =3D self.run_wsgi_app(environ, buffered=3Dbuffered)=

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 716, in run_wsgi_app

=C2=A0 =C2=A0= rv =3D run_wsgi_app(self.application, environ, buffered=3Dbuffered)=

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/werkzeug/test.py", line 923, in run_wsgi_app

=C2=A0 =C2=A0= app_rv =3D app(environ, start_response)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1997, in __call__

=C2=A0 =C2=A0= return self.wsgi_app(environ, start_response)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1985, in wsgi_app

=C2=A0 =C2=A0= response =3D self.handle_exception(e)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1540, in handle_exception

=C2=A0 =C2=A0= reraise(exc_type, exc_value, tb)

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1982, in wsgi_app

=C2=A0 =C2=A0= response =3D self.full_dispatch_request()

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/flask/app.py", line 1614, in full_dispatch_request

=C2=A0 =C2=A0= rv =3D self.handle_user_exception(e)



--000000000000253ece056ea8f491-- --000000000000253ed0056ea8f493 Content-Type: application/octet-stream; name="RM_3206_exclude_feature_tests_ver1.patch" Content-Disposition: attachment; filename="RM_3206_exclude_feature_tests_ver1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jifmzmbe0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9fX2luaXRfXy5weSBiL3dlYi9w Z2FkbWluL3Rvb2xzL2JhY2t1cC9fX2luaXRfXy5weQppbmRleCAxMjVkYjgwLi4wNTEzMzY1IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvX19pbml0X18ucHkKKysrIGIvd2Vi L3BnYWRtaW4vdG9vbHMvYmFja3VwL19faW5pdF9fLnB5CkBAIC0xMDksOCArMTA5LDcgQEAgY2xh c3MgQmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgZWxzZToKICAgICAg ICAgICAgICAgICBzZWxmLmNtZCArPSBjbWRBcmcoYXJnKQogCi0gICAgQHByb3BlcnR5Ci0gICAg ZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgZGVmIGdldF9zZXJ2ZXJfZGV0YWlscyhzZWxmKToKICAg ICAgICAgIyBGZXRjaCB0aGUgc2VydmVyIGRldGFpbHMgbGlrZSBob3N0bmFtZSwgcG9ydCwgcm9s ZXMgZXRjCiAgICAgICAgIHMgPSBTZXJ2ZXIucXVlcnkuZmlsdGVyX2J5KAogICAgICAgICAgICAg aWQ9c2VsZi5zaWQsIHVzZXJfaWQ9Y3VycmVudF91c2VyLmlkCkBAIC0xMjMsMTMgKzEyMiwxOSBA QCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAgICAgICAgIGhvc3QgPSBtYW5h Z2VyLmxvY2FsX2JpbmRfaG9zdCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5ob3N0 CiAgICAgICAgIHBvcnQgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfcG9ydCBpZiBtYW5hZ2VyLnVzZV9z c2hfdHVubmVsIGVsc2Ugcy5wb3J0CiAKKyAgICAgICAgcmV0dXJuIHMubmFtZSwgaG9zdCwgcG9y dAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG5hbWUs IGhvc3QsIHBvcnQgPSBzZWxmLmdldF9zZXJ2ZXJfZGV0YWlscygpCisKICAgICAgICAgaWYgc2Vs Zi5iYWNrdXBfdHlwZSA9PSBCQUNLVVAuT0JKRUNUOgogICAgICAgICAgICAgcmV0dXJuIF8oCiAg ICAgICAgICAgICAgICAgIkJhY2tpbmcgdXAgYW4gb2JqZWN0IG9uIHRoZSBzZXJ2ZXIgJ3swfScg IgogICAgICAgICAgICAgICAgICJmcm9tIGRhdGFiYXNlICd7MX0nLi4uIgogICAgICAgICAgICAg KS5mb3JtYXQoCiAgICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdCgKLSAgICAg ICAgICAgICAgICAgICAgcy5uYW1lLCBob3N0LCBwb3J0CisgICAgICAgICAgICAgICAgICAgIG5h bWUsIGhvc3QsIHBvcnQKICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIHNlbGYu ZGF0YWJhc2UKICAgICAgICAgICAgICkKQEAgLTEzNywxMyArMTQyLDEzIEBAIGNsYXNzIEJhY2t1 cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgIHJldHVybiBfKCJCYWNraW5nIHVw IHRoZSBnbG9iYWwgb2JqZWN0cyBvbiAiCiAgICAgICAgICAgICAgICAgICAgICAidGhlIHNlcnZl ciAnezB9Jy4uLiIpLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9y bWF0KAotICAgICAgICAgICAgICAgICAgICBzLm5hbWUsIGhvc3QsIHBvcnQKKyAgICAgICAgICAg ICAgICAgICAgbmFtZSwgaG9zdCwgcG9ydAogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg ICkKICAgICAgICAgZWxpZiBzZWxmLmJhY2t1cF90eXBlID09IEJBQ0tVUC5TRVJWRVI6CiAgICAg ICAgICAgICByZXR1cm4gXygiQmFja2luZyB1cCB0aGUgc2VydmVyICd7MH0nLi4uIikuZm9ybWF0 KAogICAgICAgICAgICAgICAgICJ7MH0gKHsxfTp7Mn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAg ICAgICAgIHMubmFtZSwgaG9zdCwgcG9ydAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBob3N0 LCBwb3J0CiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogICAgICAgICBlbHNlOgpA QCAtMTUxLDE3ICsxNTYsNyBAQCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAg ICAgICAgICAgICByZXR1cm4gIlVua25vd24gQmFja3VwIgogCiAgICAgZGVmIGRldGFpbHMoc2Vs ZiwgY21kLCBhcmdzKToKLSAgICAgICAgIyBGZXRjaCB0aGUgc2VydmVyIGRldGFpbHMgbGlrZSBo b3N0bmFtZSwgcG9ydCwgcm9sZXMgZXRjCi0gICAgICAgIHMgPSBTZXJ2ZXIucXVlcnkuZmlsdGVy X2J5KAotICAgICAgICAgICAgaWQ9c2VsZi5zaWQsIHVzZXJfaWQ9Y3VycmVudF91c2VyLmlkCi0g ICAgICAgICkuZmlyc3QoKQotCi0gICAgICAgIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1w b3J0IGdldF9kcml2ZXIKLSAgICAgICAgZHJpdmVyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RS SVZFUikKLSAgICAgICAgbWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoc2VsZi5z aWQpCi0KLSAgICAgICAgaG9zdCA9IG1hbmFnZXIubG9jYWxfYmluZF9ob3N0IGlmIG1hbmFnZXIu dXNlX3NzaF90dW5uZWwgZWxzZSBzLmhvc3QKLSAgICAgICAgcG9ydCA9IG1hbmFnZXIubG9jYWxf YmluZF9wb3J0IGlmIG1hbmFnZXIudXNlX3NzaF90dW5uZWwgZWxzZSBzLnBvcnQKKyAgICAgICAg bmFtZSwgaG9zdCwgcG9ydCA9IHNlbGYuZ2V0X3NlcnZlcl9kZXRhaWxzKCkKIAogICAgICAgICBy ZXMgPSAnPGRpdiBjbGFzcz0iaDUiPicKIApAQCAtMTcxLDcgKzE2Niw3IEBAIGNsYXNzIEJhY2t1 cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgICAgICAiZnJvbSBkYXRhYmFzZSAn ezF9Jy4uLiIKICAgICAgICAgICAgICkuZm9ybWF0KAogICAgICAgICAgICAgICAgICJ7MH0gKHsx fTp7Mn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIocy5uYW1l KSwKKyAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihuYW1lKSwKICAgICAgICAgICAg ICAgICAgICAgaHRtbC5zYWZlX3N0cihob3N0KSwKICAgICAgICAgICAgICAgICAgICAgaHRtbC5z YWZlX3N0cihwb3J0KSwKICAgICAgICAgICAgICAgICApLApAQCAtMTgxLDcgKzE3Niw3IEBAIGNs YXNzIEJhY2t1cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgIHJlcyArPSBfKCJC YWNraW5nIHVwIHRoZSBnbG9iYWwgb2JqZWN0cyBvbiAiCiAgICAgICAgICAgICAgICAgICAgICAi dGhlIHNlcnZlciAnezB9Jy4uLiIpLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7MX06 ezJ9KSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKHMubmFtZSks CisgICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIobmFtZSksCiAgICAgICAgICAgICAg ICAgICAgIGh0bWwuc2FmZV9zdHIoaG9zdCksCiAgICAgICAgICAgICAgICAgICAgIGh0bWwuc2Fm ZV9zdHIocG9ydCkKICAgICAgICAgICAgICAgICApCkBAIC0xODksNyArMTg0LDcgQEAgY2xhc3Mg QmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICBlbGlmIHNlbGYuYmFja3VwX3R5 cGUgPT0gQkFDS1VQLlNFUlZFUjoKICAgICAgICAgICAgIHJlcyArPSBfKCJCYWNraW5nIHVwIHRo ZSBzZXJ2ZXIgJ3swfScuLi4iKS5mb3JtYXQoCiAgICAgICAgICAgICAgICAgInswfSAoezF9Onsy fSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihzLm5hbWUpLAor ICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKG5hbWUpLAogICAgICAgICAgICAgICAg ICAgICBodG1sLnNhZmVfc3RyKGhvc3QpLAogICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVf c3RyKHBvcnQpCiAgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvYmFja3VwL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rl c3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRl MjkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1 cF9jcmVhdGVfam9iX3VuaXRfdGVzdC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0 cy90ZXN0X2JhY2t1cF9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41YjFkMjFmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5CkBA IC0wLDAgKzEsNDU3IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKK2ltcG9ydCBzeXMK K2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWluLm1pc2MuYmdwcm9jZXNz LnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzCitmcm9tIHBnYWRtaW4udG9vbHMuYmFja3Vw IGltcG9ydCBCYWNrdXBNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJh c2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QK K2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1 dGlscworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0 aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2Vz LnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKKworCitpZiBzeXMu dmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2lj TW9jaworZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01v Y2sKKworCitjbGFzcyBCYWNrdXBDcmVhdGVKb2JUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAg ICAiIiJUZXN0IHRoZSBCYWNrdXBDcmVhdGVKb2IgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBb CisgICAgICAgICgnV2hlbiBiYWNrdXAgb2JqZWN0IHdpdGggZGVmYXVsdCBvcHRpb25zJywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXIn LAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAg ICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1l PSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAg ICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAg ICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisg ICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97 MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScs ICctLWZvcm1hdD1jJywgJy0tYmxvYnMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiBz ZWN0aW9ucyB0byBhbGwgZGF0YScsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNz X3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAg bmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAor ICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRh YmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAor ICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNr dXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAg ICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAg ICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGRhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgcHJlX2Rh dGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgcG9zdF9kYXRhPVRydWUKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9YycsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICctLXNlY3Rpb249cHJlLWRhdGEnLCAnLS1zZWN0aW9u PWRhdGEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1zZWN0aW9uPXBvc3Qt ZGF0YSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAg ICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAg KCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIG9ubHlfZGF0YScsCisgICAgICAg ICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAg ICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhv c3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAg ICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9z dGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZv cm1hdD0ncGxhaW4nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAg ICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAg ICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb25seV9kYXRh PVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPUZhbHNlCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PXAnLCAnLS1kYXRh LW9ubHknXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAg ICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiBvbmx5X2RhdGEnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisg ICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxo b3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBm b3JtYXQ9J3BsYWluJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAg ICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0 YT1UcnVlLAorICAgICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1UcnVlLAorICAgICAgICAgICAg ICAgICBkbnNfb3duZXI9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScv YmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1b Jy0tdmVyYm9zZScsICctLWZvcm1hdD1wJywgJy0tZGF0YS1vbmx5J10sCisgICAgICAgICAgICAg bm90X2V4cGVjdGVkX2NtZF9vcHRzPVsnLS1zY2hlbWEtb25seScsICctLW5vLW93bmVyJ10sCisg ICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisg ICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiBvbmx5X3NjaGVtYScs CisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAg ICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2Vy dmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0 PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2Vy bmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAg ICAgICAgIGZvcm1hdD0ncGxhaW4nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisg ICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwK KyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAg b25seV9kYXRhPUZhbHNlLAorICAgICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1UcnVlCisgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAor ICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PXAn LCAnLS1zY2hlbWEtb25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1b XSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICAp KSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIC0gZm9ybWF0 IHBsYWluIGFuZCBkbnNfb3duZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFz c19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywK KyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFj a3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3BsYWluJywKKyAgICAgICAgICAg ICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAg ICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGRuc19vd25lcj1UcnVlCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4 cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PXAnLCAnLS1uby1vd25lcidd LAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBl eHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVu IGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIC0gRG8gbm90IHNhdmUgcHJpdmlsZWdlLCcK KyAgICAgICAgICcgdGFibGVzcGFjZSwgdW5sb2dnZWQgdGFibGUgZGF0YScsCisgICAgICAgICBk aWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBz aWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAg ICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3Qn LAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAg ICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdy ZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1h dD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAg ICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGRuc19wcml2aWxl Z2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX3VubG9nZ2VkX3RibF9kYXRhPVRydWUsCisg ICAgICAgICAgICAgICAgIGRuc190YWJsZXNwYWNlPVRydWUKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhw ZWN0ZWRfY21kX29wdHM9WyctLW5vLXByaXZpbGVnZXMnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnLS1uby10YWJsZXNwYWNlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICctLW5vLXVubG9nZ2VkLXRhYmxlLWRhdGEnXSwKKyAgICAgICAgICAgICBub3RfZXhw ZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBO b25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRo IG9wdGlvbiAtIGFsbCBxdWVyaWVzJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xh c3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQs CisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcs CisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2Jh Y2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdwbGFpbicsCisgICAgICAgICAg ICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAg ICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICB1c2VfY29sdW1uX2luc2VydHM9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgaW5jbHVkZV9jcmVhdGVfZGF0YWJhc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg dXNlX2luc2VydF9jb21tYW5kcz1UcnVlLAorICAgICAgICAgICAgICAgICBpbmNsdWRlX2Ryb3Bf ZGF0YWJhc2U9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3Vw L2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tY3Jl YXRlJywgJy0tY2xlYW4nLCAnLS1pbnNlcnRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0tY29sdW1uLWluc2VydHMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiAt IGFsbCBxdWVyaWVzIGFuZCBmb3JtYXQgY3VzdG9tJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBw b3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0 X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxl PSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAor ICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9 W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlX2NvbHVtbl9pbnNlcnRzPVRydWUs CisgICAgICAgICAgICAgICAgIGluY2x1ZGVfY3JlYXRlX2RhdGFiYXNlPVRydWUsCisgICAgICAg ICAgICAgICAgIHVzZV9pbnNlcnRfY29tbWFuZHM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgaW5j bHVkZV9kcm9wX2RhdGFiYXNlPVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVy bD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29w dHM9WyctLWluc2VydHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1jb2x1 bW4taW5zZXJ0cyddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bJy0tY3Jl YXRlJywgJy0tY2xlYW4nXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5v bmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGgg b3B0aW9uIC0gbWlzY2VsbGFuZW91cycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNs YXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAg ICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0 LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBk YXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAn LAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9i YWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAg ICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAg ICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0 Z3JlcycsCisgICAgICAgICAgICAgICAgIGRpc2FibGVfcXVvdGluZz1UcnVlLAorICAgICAgICAg ICAgICAgICB1c2Vfc2V0X3Nlc3Npb25fYXV0aD1UcnVlLAorICAgICAgICAgICAgICAgICB3aXRo X29pZHM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZHFvdXRlPVRydWUKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1xdW90ZS1hbGwtaWRlbnRpZmll cnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLWRvbGxhci1x dW90aW5nJywgJy0tb2lkcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXVz ZS1zZXQtc2Vzc2lvbi1hdXRob3JpemF0aW9uJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVk X2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0K KyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBmb3Jt YXQgdGFyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3Qo CisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2Jh Y2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAg ICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAg ICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAg ICAgICAgICAgICAgICAgZm9ybWF0PSd0YXInLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRy dWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxl cz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2Jh Y2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9Wyct LXZlcmJvc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ibG9icycsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWZvcm1hdD10J10sCisgICAgICAgICAg ICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRf Y29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBz ZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFj a3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAg ICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVz JywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAg ICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX3NlcnZlcl9maWxl JywKKyAgICAgICAgICAgICAgICAgZHFvdXRlPUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJi b3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHR5cGU9J3NlcnZlcicKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9JywKKyAgICAgICAgICAgICBleHBl Y3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9j bWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisg ICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBnbG9iYWxzJywKKyAgICAgICAgIGRp Y3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAg ICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcs CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg IGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jl cycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9nbG9iYWxfZmlsZScsCisgICAgICAgICAgICAgICAg IGRxb3V0ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAg ICAgICAgICB0eXBlPSdnbG9iYWxzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJs PScvYmFja3VwL2pvYi97MH0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12 ZXJib3NlJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAg ICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpCisgICAgXQor CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9i aW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAg ICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZl ciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIEBwYXRjaCgncGdhZG1pbi50 b29scy5iYWNrdXAuU2VydmVyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLkJh Y2t1cE1lc3NhZ2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuZmlsZW5hbWVf d2l0aF9maWxlX21hbmFnZXJfcGF0aCcpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLmJhY2t1 cC5CYXRjaFByb2Nlc3MnKQorICAgIEBwYXRjaCgncGdhZG1pbi51dGlscy5kcml2ZXIucHN5Y29w ZzIuc2VydmVyX21hbmFnZXIuU2VydmVyTWFuYWdlci4nCisgICAgICAgICAgICdleHBvcnRfcGFz c3dvcmRfZW52JykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBleHBvcnRfcGFzc3dvcmRfZW52X21v Y2ssIGJhdGNoX3Byb2Nlc3NfbW9jaywKKyAgICAgICAgICAgICAgICBmaWxlbmFtZV9tb2NrLCBi YWNrdXBfbWVzc2FnZV9tb2NrLCBzZXJ2ZXJfbW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2Nr U2VydmVyKCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgaG9zdCwgcG9y dCwgaWQsIHVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50ZW5hbmNlX2Ri KToKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2Vs Zi5ob3N0ID0gaG9zdAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAg ICAgICAgICBzZWxmLmlkID0gaWQKKyAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNl cm5hbWUKKyAgICAgICAgICAgICAgICBzZWxmLm1haW50ZW5hbmNlX2RiID0gbWFpbnRlbmFuY2Vf ZGIKKworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJd Wy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1NlcnZlcihzZWxm LmNsYXNzX3BhcmFtc1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJhc2UnXQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgbW9ja19yZXN1bHQgPSBzZXJ2ZXJfbW9j ay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAgIG1vY2tfcmVzdWx0LmZpcnN0 LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgZmlsZW5hbWVfbW9jay5yZXR1cm5f dmFsdWUgPSBzZWxmLnBhcmFtc1snZmlsZSddCisKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2Nr LnNldF9lbnZfdmFyaWFibGVzID0gTWFnaWNNb2NrKAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVl PVRydWUKKyAgICAgICAgKQorICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suc3RhcnQgPSBNYWdp Y01vY2soCisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICApCisKKyAgICAg ICAgZXhwb3J0X3Bhc3N3b3JkX2Vudl9tb2NrLnJldHVybl92YWx1ZSA9IFRydWUKKworICAgICAg ICBzZXJ2ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwgc2Vs Zi5zZXJ2ZXJfaWQpCisgICAgICAgIGlmIHNlcnZlcl9yZXNwb25zZVsiaW5mbyJdID09ICJTZXJ2 ZXIgY29ubmVjdGVkLiI6CisgICAgICAgICAgICBkYl9vd25lciA9IHNlcnZlcl9yZXNwb25zZVsn ZGF0YSddWyd1c2VyJ11bJ25hbWUnXQorICAgICAgICAgICAgc2VsZi5kYXRhID0gZGF0YWJhc2Vf dXRpbHMuZ2V0X2RiX2RhdGEoZGJfb3duZXIpCisKKyAgICAgICAgdXJsID0gc2VsZi51cmwuZm9y bWF0KHNlbGYuc2VydmVyX2lkKQorCisgICAgICAgICMgQ3JlYXRlIHRoZSBiYWNrdXAgam9iCisg ICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1cmwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoc2VsZi5wYXJhbXMpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQor ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisKKyAg ICAgICAgc2VsZi5hc3NlcnRUcnVlKGJhY2t1cF9tZXNzYWdlX21vY2suY2FsbGVkKQorICAgICAg ICBzZWxmLmFzc2VydFRydWUoYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxlZCkKKworICAgICAgICBp ZiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgZm9yIG9wdCBpbiBzZWxmLmV4 cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAg ICAgICAgICAgICAgIG9wdCwKKyAgICAgICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2Nr LmNhbGxfYXJnc19saXN0WzBdWzFdWydhcmdzJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAg IGlmIHNlbGYubm90X2V4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgZm9yIG9wdCBpbiBz ZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5v dEluKAorICAgICAgICAgICAgICAgICAgICBvcHQsCisgICAgICAgICAgICAgICAgICAgIGJhdGNo X3Byb2Nlc3NfbW9jay5jYWxsX2FyZ3NfbGlzdFswXVsxXVsnYXJncyddCisgICAgICAgICAgICAg ICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFj a3VwX21lc3NhZ2UucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNr dXBfbWVzc2FnZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTMwNWE2 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3Rf YmFja3VwX21lc3NhZ2UucHkKQEAgLTAsMCArMSwxNDkgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj CisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEz IC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCitpbXBvcnQgc3lzCisKK2Zyb20gZmxhc2sgaW1wb3J0IFJlc3BvbnNlCitpbXBvcnQgc2lt cGxlanNvbiBhcyBqc29uCisKK2Zyb20gcGdhZG1pbi50b29scy5iYWNrdXAgaW1wb3J0IEJhY2t1 cE1lc3NhZ2UsIEJBQ0tVUAorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVz dEdlbmVyYXRvcgorCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9j ayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sg aW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKKworCitjbGFzcyBCYWNrdXBNZXNzYWdlVGVzdChCYXNl VGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmFja3VwTWVzc2FnZSBjbGFzcyIiIgor ICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIEJhY2t1cCBzZXJ2ZXInLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgdHlwZT1CQUNLVVAuU0VSVkVSLAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAg ICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9y dD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAg ICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9y ZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgYXJncz1bCisgICAgICAgICAgICAgICAgICAgICAn LS1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICJiYWNrdXBfZmlsZSIsCisgICAgICAgICAg ICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAor ICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0 NCIsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAg ICAgICAicG9zdGdyZXMiLAorICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAor ICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAg InBvc3RncmVzIgorICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICBjbWQ9Ii90 ZXN0X3BhdGgvcGdfZHVtcCIKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVk X21zZz0iQmFja2luZyB1cCB0aGUgc2VydmVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi ICd0ZXN0X2JhY2t1cF9zZXJ2ZXIgKGxvY2FsaG9zdDo1NDQ0KScuLi4iLAorICAgICAgICAgICAg IGV4cGV0Y2VkX2RldGFpbHNfY21kPScvdGVzdF9wYXRoL3BnX2R1bXAgLS1maWxlICcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnImJhY2t1cF9maWxlIiAtLWhvc3QgImxvY2Fs aG9zdCIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXBvcnQgIjU0NDQi IC0tdXNlcm5hbWUgInBvc3RncmVzIiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJy0tbm8tcGFzc3dvcmQgLS1kYXRhYmFzZSAicG9zdGdyZXMiJworCisgICAgICAgICApKSwK KyAgICAgICAgKCdXaGVuIEJhY2t1cCBnbG9iYWwnLAorICAgICAgICAgZGljdCgKKyAgICAgICAg ICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgdHlwZT1CQUNLVVAuR0xP QkFMUywKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rl c3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAg ICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAg ICAgICAgICAgYXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAg ICAgICAgICAgICAgICdiYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0 JywKKyAgICAgICAgICAgICAgICAgICAgICdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAg ICAgJy0tcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAnNTQ0NCcsCisgICAgICAgICAgICAg ICAgICAgICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAncG9zdGdyZXMnLAor ICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAg ICAgJy0tZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgJ3Bvc3RncmVzJworICAgICAg ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICBjbWQ9Ii90ZXN0X3BhdGgvcGdfZHVtcCIK KyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iQmFja2luZyB1cCB0 aGUgZ2xvYmFsIG9iamVjdHMgb24gdGhlIHNlcnZlciAiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICIndGVzdF9iYWNrdXBfc2VydmVyIChsb2NhbGhvc3Q6NTQ0NCknLi4uIiwKKyAgICAgICAg ICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nL3Rlc3RfcGF0aC9wZ19kdW1wIC0tZmlsZSAiYmFj a3VwX2ZpbGUiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0ICJs b2NhbGhvc3QiJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLS1wb3J0ICI1 NDQ0IiAtLXVzZXJuYW1lICJwb3N0Z3JlcyIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICctLW5vLXBhc3N3b3JkIC0tZGF0YWJhc2UgInBvc3RncmVzIicKKworICAgICAgICAg KSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgb2JqZWN0JywKKyAgICAgICAgIGRpY3QoCisgICAg ICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9QkFDS1VQ Lk9CSkVDVCwKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9 J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAg ICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9 J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAg ICAgICAgICAgICAgYXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAg ICAgICAgICAgICAgICAgICdiYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAnLS1o b3N0JywKKyAgICAgICAgICAgICAgICAgICAgICdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAg ICAgICAgJy0tcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAnNTQ0NCcsCisgICAgICAgICAg ICAgICAgICAgICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAg ICAgICAgJy0tZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgJ3Bvc3RncmVzJworICAg ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICBjbWQ9Ii90ZXN0X3BhdGgvcGdfZHVt cCIKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iQmFja2luZyB1 cCBhbiBvYmplY3Qgb24gdGhlIHNlcnZlciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIn dGVzdF9iYWNrdXBfc2VydmVyIChsb2NhbGhvc3Q6NTQ0NCknIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAiIGZyb20gZGF0YWJhc2UgJ3Bvc3RncmVzJy4uLiIsCisgICAgICAgICAgICAgZXhw ZXRjZWRfZGV0YWlsc19jbWQ9Jy90ZXN0X3BhdGgvcGdfZHVtcCAtLWZpbGUgImJhY2t1cF9maWxl IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCAibG9jYWxob3N0 IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCAiNTQ0NCIgLS11 c2VybmFtZSAicG9zdGdyZXMiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn LS1uby1wYXNzd29yZCAtLWRhdGFiYXNlICJwb3N0Z3JlcyInCisKKyAgICAgICAgICkpCisgICAg XQorCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLmJhY2t1cC5CYWNrdXBNZXNzYWdlLmdldF9z ZXJ2ZXJfZGV0YWlscycpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgZ2V0X3NlcnZlcl9kZXRhaWxz X21vY2spOgorICAgICAgICBnZXRfc2VydmVyX2RldGFpbHNfbW9jay5yZXR1cm5fdmFsdWUgPSBc CisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snbmFtZSddLFwKKyAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWydob3N0J10sXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNb J3BvcnQnXQorCisgICAgICAgIGJhY2t1cF9vYmogPSBCYWNrdXBNZXNzYWdlKAorICAgICAgICAg ICAgc2VsZi5jbGFzc19wYXJhbXNbJ3R5cGUnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFy YW1zWydzaWQnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydiZmlsZSddLAorICAg ICAgICAgICAgKnNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10sCisgICAgICAgICAgICAqKnsnZGF0 YWJhc2UnOiBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJhc2UnXX0KKyAgICAgICAgKQorCisgICAg ICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVkIG1lc3NhZ2UgcmV0dXJuZWQKKyAgICAgICAgc2VsZi5h c3NlcnRFcXVhbChiYWNrdXBfb2JqLm1lc3NhZ2UsIHNlbGYuZXh0ZWN0ZWRfbXNnKQorCisgICAg ICAgICMgQ2hlY2sgdGhlIGNvbW1hbmQKKyAgICAgICAgb2JqX2RldGFpbHMgPSBiYWNrdXBfb2Jq LmRldGFpbHMoc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddKQorICAgICAgICBz ZWxmLmFzc2VydEluKHNlbGYuZXhwZXRjZWRfZGV0YWlsc19jbWQsIG9ial9kZXRhaWxzKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX3V0aWxz LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX3V0aWxzLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNzg2NzUKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfdXRpbHMu cHkKQEAgLTAsMCArMSwxMTkgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVy IHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCB0 aW1lCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKKworZGVmIGNy ZWF0ZV9iYWNrdXBfam9iKHRlc3RlciwgdXJsLCBwYXJhbXMsIGFzc2VydF9lcXVhbCk6CisgICAg IyBDcmVhdGUgdGhlIGJhY2t1cCBqb2IKKyAgICByZXNwb25zZSA9IHRlc3Rlci5wb3N0KHVybCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhwYXJhbXMpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgIGFz c2VydF9lcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgIHJlc3BvbnNlX2RhdGEg PSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgIGpvYl9pZCA9 IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnam9iX2lkJ10KKyAgICByZXR1cm4gam9iX2lkCisKKwor ZGVmIHJ1bl9iYWNrdXBfam9iKHRlc3Rlciwgam9iX2lkLCBleHBlY3RlZF9wYXJhbXMsIGFzc2Vy dF9pbiwgYXNzZXJ0X25vdF9pbiwKKyAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWwpOgor ICAgIGNudCA9IDAKKyAgICB3aGlsZSAxOgorICAgICAgICBpZiBjbnQgPj0gNToKKyAgICAgICAg ICAgIGJyZWFrCisgICAgICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgbGlzdAorICAgICAgICByZXNw b25zZTEgPSB0ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nlc3MvP189Jy5mb3JtYXQoCisgICAgICAg ICAgICByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkpCisgICAgICAgIGFzc2VydF9lcXVhbChy ZXNwb25zZTEuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcHJvY2Vzc19saXN0ID0ganNvbi5s b2FkcyhyZXNwb25zZTEuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgaWYgbGVuKHBy b2Nlc3NfbGlzdCkgPiAwIGFuZCAnZXhlY3V0aW9uX3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXToK KyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHRpbWUuc2xlZXAoMC41KQorICAgICAgICBjbnQg Kz0gMQorCisgICAgYXNzZXJ0X2VxdWFsKCdleGVjdXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0 WzBdLCBUcnVlKQorICAgIGFzc2VydF9lcXVhbCgnc3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXSwg VHJ1ZSkKKyAgICBhc3NlcnRfZXF1YWwoJ2V4aXRfY29kZScgaW4gcHJvY2Vzc19saXN0WzBdLCBU cnVlKQorICAgIGFzc2VydF9lcXVhbChwcm9jZXNzX2xpc3RbMF1bJ2V4aXRfY29kZSddIGluIGV4 cGVjdGVkX3BhcmFtc1sKKyAgICAgICAgJ2V4cGVjdGVkX2V4aXRfY29kZScKKyAgICBdLCBUcnVl KQorCisgICAgYmFja3VwX2ZpbGUgPSBOb25lCisgICAgaWYgJ2RldGFpbHMnIGluIHByb2Nlc3Nf bGlzdFswXToKKyAgICAgICAgYmFja3VwX2RldCA9IHByb2Nlc3NfbGlzdFswXVsnZGV0YWlscydd CisgICAgICAgIGJhY2t1cF9maWxlID0gYmFja3VwX2RldFtpbnQoYmFja3VwX2RldC5maW5kKCct LWZpbGUnKSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODppbnQoYmFja3Vw X2RldC5maW5kKCctLWhvc3QnKSkgLSAyXQorCisgICAgaWYgZXhwZWN0ZWRfcGFyYW1zWydleHBl Y3RlZF9jbWRfb3B0cyddOgorICAgICAgICBmb3Igb3B0IGluIGV4cGVjdGVkX3BhcmFtc1snZXhw ZWN0ZWRfY21kX29wdHMnXToKKyAgICAgICAgICAgIGFzc2VydF9pbihvcHQsIHByb2Nlc3NfbGlz dFswXVsnZGV0YWlscyddKQorICAgIGlmIGV4cGVjdGVkX3BhcmFtc1snbm90X2V4cGVjdGVkX2Nt ZF9vcHRzJ106CisgICAgICAgIGZvciBvcHQgaW4gZXhwZWN0ZWRfcGFyYW1zWydub3RfZXhwZWN0 ZWRfY21kX29wdHMnXToKKyAgICAgICAgICAgIGFzc2VydF9ub3RfaW4ob3B0LCBwcm9jZXNzX2xp c3RbMF1bJ2RldGFpbHMnXSkKKworICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgZGV0YWlscworICAg IHBfZGV0YWlscyA9IHRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0/Xz0nLmZvcm1hdCgK KyAgICAgICAgam9iX2lkLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICApCisgICAg YXNzZXJ0X2VxdWFsKHBfZGV0YWlscy5zdGF0dXNfY29kZSwgMjAwKQorCisgICAgcF9kZXRhaWxz ID0gdGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfS97MX0vezJ9Lz9fPScuZm9ybWF0KAor ICAgICAgICBqb2JfaWQsIDAsIDAsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICkK KyAgICBhc3NlcnRfZXF1YWwocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAyMDApCisgICAgcF9kZXRh aWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKwor ICAgIGNudCA9IDAKKyAgICAjIFJldHJpZXZlIHRoZSBiYWNrdXAgam9iIHByb2Nlc3MgbG9ncwor ICAgIHdoaWxlIDE6CisgICAgICAgIG91dCwgZXJyLCBzdGF0dXMgPSBnZXRfcGFyYW1zKHBfZGV0 YWlsc19kYXRhKQorICAgICAgICBpZiBzdGF0dXMgb3IgY250ID49IDU6CisgICAgICAgICAgICBi cmVhaworCisgICAgICAgIHBfZGV0YWlscyA9IHRlc3Rlci5nZXQoCisgICAgICAgICAgICAnL21p c2MvYmdwcm9jZXNzL3swfS97MX0vezJ9Lz9fPXszfScuZm9ybWF0KAorICAgICAgICAgICAgICAg IGpvYl9pZCwgb3V0LCBlcnIsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICAp CisgICAgICAgIGFzc2VydF9lcXVhbChwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAg ICAgcF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRm LTgnKSkKKworICAgICAgICBjbnQgKz0gMQorICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAgICAj IENoZWNrIHRoZSBqb2IgaXMgY29tcGxldGUuCisgICAgYmFja3VwX2FjayA9IHRlc3Rlci5wdXQo Jy9taXNjL2JncHJvY2Vzcy97MH0nLmZvcm1hdChqb2JfaWQpKQorICAgIGFzc2VydF9lcXVhbChi YWNrdXBfYWNrLnN0YXR1c19jb2RlLCAyMDApCisgICAgYmFja3VwX2Fja19yZXMgPSBqc29uLmxv YWRzKGJhY2t1cF9hY2suZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICBhc3NlcnRfZXF1YWwo YmFja3VwX2Fja19yZXNbJ3N1Y2Nlc3MnXSwgMSkKKworICAgIHJldHVybiBiYWNrdXBfZmlsZQor CisKK2RlZiBnZXRfcGFyYW1zKGRhdGEpOgorICAgIG91dCA9IDAKKyAgICBvdXRfZG9uZSA9IEZh bHNlCisgICAgZXJyID0gMAorICAgIGVycl9kb25lID0gRmFsc2UKKyAgICBpZiAnb3V0JyBpbiBk YXRhOgorICAgICAgICBvdXQgPSBkYXRhWydvdXQnXSBhbmQgZGF0YVsnb3V0J11bJ3BvcyddCisK KyAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291dCddOgorICAgICAgICAgICAgb3V0X2RvbmUg PSBkYXRhWydvdXQnXVsnZG9uZSddCisKKyAgICBpZiAnZXJyJyBpbiBkYXRhOgorICAgICAgICBl cnIgPSBkYXRhWydlcnInXSBhbmQgZGF0YVsnZXJyJ11bJ3BvcyddCisKKyAgICAgICAgaWYgJ2Rv bmUnIGluIGRhdGFbJ2VyciddOgorICAgICAgICAgICAgZXJyX2RvbmUgPSBkYXRhWydlcnInXVsn ZG9uZSddCisKKyAgICByZXR1cm4gb3V0LCBlcnIsIChvdXRfZG9uZSBhbmQgZXJyX2RvbmUpCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYXRjaF9wcm9j ZXNzLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJvY2Vz cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZThhNjY2Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJv Y2Vzcy5weQpAQCAtMCwwICsxLDIxMyBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9y dCBzeXMKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWluLm1pc2MuYmdw cm9jZXNzLnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzLCBJUHJvY2Vzc0Rlc2MKK2Zyb20g cGdhZG1pbi50b29scy5iYWNrdXAgaW1wb3J0IEJhY2t1cE1lc3NhZ2UsIEJBQ0tVUAorZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSBwaWNrbGUg aW1wb3J0IGR1bXBzLCBsb2FkcworCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAg IGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGlt cG9ydCBwYXRjaAorCisKK2NsYXNzIEJhdGNoUHJvY2Vzc1Rlc3QoQmFzZVRlc3RHZW5lcmF0b3Ip OgorICAgICIiIlRlc3QgdGhlIEJhdGNoUHJvY2VzcyBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9 IFsKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBzZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAg ICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgdHlwZT1CQUNLVVAu U0VSVkVSLAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0n dGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAg ICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0n cG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICBhcmdzPVsK KyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgImJh Y2t1cF9maWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAg ICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAg ICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJu YW1lJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIsCisgICAgICAgICAgICAgICAg ICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScs CisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiCisgICAgICAgICAgICAgICAgIF0sCisg ICAgICAgICAgICAgICAgIGNtZD0nYmFja3VwX3NlcnZlcicKKyAgICAgICAgICAgICApCisgICAg ICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBnbG9iYWxzJywKKyAgICAgICAgIGRpY3Qo CisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9 QkFDS1VQLkdMT0JBTFMsCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQs CisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jlcycs CisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAg IGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAg ICAgICAiYmFja3VwX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAg ICAgICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXBv cnQnLAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAgICAgICAgICAgICAg Jy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAg ICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRh dGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAgICAgICAgICAgICAg ICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSdiYWNrdXAnCisgICAgICAgICAgICAgKQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgb2JqZWN0JywKKyAgICAgICAgIGRpY3Qo CisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9 QkFDS1VQLk9CSkVDVCwKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJywK KyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAg YXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAg ICAgICJiYWNrdXBfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAg ICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9y dCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAgICAn LS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAg ICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0 YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAgICAg ICBdLAorICAgICAgICAgICAgICAgICBjbWQ9J2JhY2t1cCcKKyAgICAgICAgICAgICApCisgICAg ICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuQmFja3Vw TWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJn cHJvY2Vzcy5wcm9jZXNzZXMuUG9wZW4nKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMuY3VycmVudF9hcHAnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJn cHJvY2Vzcy5wcm9jZXNzZXMuZGInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAu Y3VycmVudF91c2VyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vz c2VzLmN1cnJlbnRfdXNlcicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgY3VycmVudF91c2VyX21v Y2ssIGN1cnJlbnRfdXNlciwgZGJfbW9jaywKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FwcF9t b2NrLCBwb3Blbl9tb2NrLCBnZXRfc2VydmVyX2RldGFpbHNfbW9jayk6CisgICAgICAgIGN1cnJl bnRfdXNlci5pZCA9IDEKKyAgICAgICAgY3VycmVudF91c2VyX21vY2suaWQgPSAxCisgICAgICAg IGN1cnJlbnRfYXBwX21vY2suUEdBRE1JTl9SVU5USU1FID0gRmFsc2UKKworICAgICAgICBkZWYg ZGJfc2Vzc2lvbl9hZGRfbW9jayhqKToKKyAgICAgICAgICAgIGNtZF9vYmogPSBsb2FkcyhqLmRl c2MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShjbWRfb2JqLCBJUHJv Y2Vzc0Rlc2MpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWRfb2JqLmJhY2t1cF90 eXBlLCBzZWxmLmNsYXNzX3BhcmFtc1sndHlwZSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF cXVhbChjbWRfb2JqLmJmaWxlLCBzZWxmLmNsYXNzX3BhcmFtc1snYmZpbGUnXSkKKyAgICAgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kX29iai5kYXRhYmFzZSwgc2VsZi5jbGFzc19wYXJhbXNb J2RhdGFiYXNlJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZF9vYmouY21kLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC0tZmlsZSAiYmFja3VwX2ZpbGUiICcKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCAiezB9IiAnCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICctLXBvcnQgInsxfSIgJworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnLS11c2VybmFtZSAiezJ9IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct LW5vLXBhc3N3b3JkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2Ug InszfSInLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xh c3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1sncG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJhc2UnXQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApKQorCisgICAgICAgIGRiX21vY2suc2Vzc2lvbi5hZGQuc2lkZV9lZmZlY3Qg PSBkYl9zZXNzaW9uX2FkZF9tb2NrCisKKyAgICAgICAgZ2V0X3NlcnZlcl9kZXRhaWxzX21vY2su cmV0dXJuX3ZhbHVlID0gXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ25hbWUnXSxc CisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLFwKKyAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWydwb3J0J10KKworICAgICAgICBiYWNrdXBfb2JqID0gQmFja3VwTWVz c2FnZSgKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd0eXBlJ10sCisgICAgICAgICAg ICBzZWxmLmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFt c1snYmZpbGUnXSwKKyAgICAgICAgICAgICpzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAg ICAgICAgICAgKip7J2RhdGFiYXNlJzogc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ119Cisg ICAgICAgICkKKworICAgICAgICBwID0gQmF0Y2hQcm9jZXNzKAorICAgICAgICAgICAgZGVzYz1i YWNrdXBfb2JqLAorICAgICAgICAgICAgY21kPXNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSwKKyAg ICAgICAgICAgIGFyZ3M9c2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAg ICAgICAgIyBDaGVjayB0aGF0IF9jcmVhdGVfcHJvY2VzcyBoYXMgYmVlbiBjYWxsZWQKKyAgICAg ICAgc2VsZi5hc3NlcnRUcnVlKGRiX21vY2suc2Vzc2lvbi5hZGQuY2FsbGVkKQorCisgICAgICAg ICMgQ2hlY2sgc3RhcnQgbWV0aG9kCisgICAgICAgIHNlbGYuX2NoZWNrX3N0YXJ0KHBvcGVuX21v Y2ssIHApCisKKyAgICAgICAgIyBDaGVjayBsaXN0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVj a19saXN0KHAsIGJhY2t1cF9vYmopCisKKyAgICBkZWYgX2NoZWNrX3N0YXJ0KHNlbGYsIHBvcGVu X21vY2ssIHApOgorICAgICAgICBjbWRfdGVzdCA9IHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXQor ICAgICAgICBhc3NlcnRfdHJ1ZSA9IHNlbGYuYXNzZXJ0VHJ1ZQorCisgICAgICAgIGNsYXNzIHBv cGVuTW9ja1NpZGVFZmZlY3QoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbWQs ICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjbWRfdGVzdCBpbiBjbWQp CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoJ2VudicgaW4ga3dhcmdzKQorCisgICAgICAg ICAgICBkZWYgcG9sbChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcG9w ZW5fbW9jay5zaWRlX2VmZmVjdCA9IHBvcGVuTW9ja1NpZGVFZmZlY3QKKyAgICAgICAgcC5zdGFy dCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcGVuX21vY2suY2FsbGVkKQorCisgICAg QHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5Qcm9jZXNzJykKKyAgICBA cGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLkJhdGNoUHJvY2Vzcy4nCisg ICAgICAgICAgICd1cGRhdGVfcHJvY2Vzc19pbmZvJykKKyAgICBkZWYgX2NoZWNrX2xpc3Qoc2Vs ZiwgcCwgYmFja3VwX29iaiwgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2NrLAorICAgICAgICAgICAg ICAgICAgICBwcm9jZXNzX21vY2spOgorICAgICAgICBjbGFzcyBUZXN0TW9ja1Byb2Nlc3MoKToK KyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNjLCBhcmdzLCBjbWQpOgorICAgICAg ICAgICAgICAgIHNlbGYucGlkID0gMQorICAgICAgICAgICAgICAgIHNlbGYuZXhpdF9jb2RlID0g MQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9ICcyMDE4LTA0LTE3IDA2OjE4OjU2 LjMxNTQ0NSArMDAwMCcKKyAgICAgICAgICAgICAgICBzZWxmLmVuZF90aW1lID0gTm9uZQorICAg ICAgICAgICAgICAgIHNlbGYuZGVzYyA9IGR1bXBzKGRlc2MpCisgICAgICAgICAgICAgICAgc2Vs Zi5hcmd1bWVudHMgPSAiICIuam9pbihhcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuY29tbWFu ZCA9IGNtZAorICAgICAgICAgICAgICAgIHNlbGYuYWNrbm93bGVkZ2UgPSBOb25lCisKKyAgICAg ICAgcHJvY2Vzc19tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUgPSBbCisgICAgICAg ICAgICBUZXN0TW9ja1Byb2Nlc3MoYmFja3VwX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSldCisKKyAgICAgICAgdXBkYXRlX3Byb2Nlc3Nf aW5mb19tb2NrLnJldHVybl92YWx1ZSA9IFtUcnVlLCBUcnVlXQorCisgICAgICAgIHJldF92YWx1 ZSA9IHAubGlzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJldF92YWx1ZSkp CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZGV0YWlscycgaW4gcmV0X3ZhbHVlWzBdKQorICAg ICAgICBzZWxmLmFzc2VydFRydWUoJ2Rlc2MnIGluIHJldF92YWx1ZVswXSkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2NyZWF0ZV9iYWNrdXBfam9iLnB5 IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfY3JlYXRlX2JhY2t1cF9qb2Iu cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ5NTY3MgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2NyZWF0ZV9iYWNr dXBfam9iLnB5CkBAIC0wLDAgKzEsNjUgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwg VGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk IHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2lt cG9ydCBvcworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRv cgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jlc3Np b24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2ltcG9ydCBw Z2FkbWluLnRvb2xzLmJhY2t1cC50ZXN0cy50ZXN0X2JhY2t1cF91dGlscyBhcyBiYWNrdXBfdXRp bHMKKworCitjbGFzcyBCYWNrdXBKb2JUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJC YWNrdXAgYXBpIHRlc3QgY2FzZXMiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hl biBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IG9wdGlvbnMnLAorICAgICAgICAg ZGljdCgKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0n dGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAg ICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgYmxvYnM9VHJ1ZSwKKyAg ICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAor ICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4 cGVjdGVkX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1b Jy0tdmVyYm9zZScsICctLWZvcm1hdD1jJywgJy0tYmxvYnMnXSwKKyAgICAgICAgICAgICAgICAg bm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0 X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICAgICAgKQorICAgICAgICAgKSkKKyAgICBdCisKKyAg ICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydkZWZhdWx0X2JpbmFy eV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAorICAgICAgICAg ICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0aGUgc2VydmVyIHsw fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnbmFtZSddCisgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6Cisg ICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFyZW50X25vZGVfZGljdFsic2VydmVyIl1bLTFdWyJz ZXJ2ZXJfaWQiXQorICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQp CisKKyAgICAgICAgIyBDcmVhdGUgdGhlIGJhY2t1cCBqb2IKKyAgICAgICAgam9iX2lkID0gYmFj a3VwX3V0aWxzLmNyZWF0ZV9iYWNrdXBfam9iKHNlbGYudGVzdGVyLCB1cmwsIHNlbGYucGFyYW1z LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5h c3NlcnRFcXVhbCkKKyAgICAgICAgYmFja3VwX2ZpbGUgPSBiYWNrdXBfdXRpbHMucnVuX2JhY2t1 cF9qb2Ioc2VsZi50ZXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGpvYl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZF9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKQorCisgICAgICAgIGlmIGJhY2t1cF9maWxlIGlzIG5vdCBOb25lOgorICAgICAgICAg ICAgaWYgb3MucGF0aC5pc2ZpbGUoYmFja3VwX2ZpbGUpOgorICAgICAgICAgICAgICAgIG9zLnJl bW92ZShiYWNrdXBfZmlsZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5h bmNlL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVz dHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUy OQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9i YXRjaF9wcm9jZXNzX21haW50ZW5hbmNlLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFu Y2UvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzX21haW50ZW5hbmNlLnB5Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0OGE0NTYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3NfbWFpbnRlbmFu Y2UucHkKQEAgLTAsMCArMSwxNTQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4g NCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVu ZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQg c3lzCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMgaW1wb3J0IEJhdGNo UHJvY2VzcywgSVByb2Nlc3NEZXNjCitmcm9tIHBnYWRtaW4udG9vbHMubWFpbnRlbmFuY2UgaW1w b3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5l cmF0b3IKK2Zyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMKKworaWYgc3lzLnZlcnNpb25f aW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoCitlbHNlOgorICAgIGZy b20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKworCitjbGFzcyBCYXRjaFByb2Nlc3NUZXN0 KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBCYXRjaFByb2Nlc3MgY2xhc3Mi IiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHNlcnZlcics CisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAg ICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAg ICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9z dGdyZXMnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICct LWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAgICAgICAg ICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAg ICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRibmFt ZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAgICAgICAgICAg ICAgJy0tY29tbWFuZCcsCisgICAgICAgICAgICAgICAgICAgICAiVkFDVVVNIFZFUkJPU0U7XG4i CisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAg ICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAg ICdvcCc6ICdWQUNVVU0nLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9hbmFseXplJzog RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2ZyZWV6ZSc6IEZhbHNlLAorICAg ICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mdWxsJzogRmFsc2UsCisgICAgICAgICAgICAgICAg ICAgICAndmVyYm9zZSc6IFRydWUKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg ICAgY21kPSJWQUNVVU0gVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAg IGV4cGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZhY3V1bSkiLAorICAgICAgICAgICAgIGV4cGV0 Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gVkVSQk9TRTsnCisgICAgICAgICApKQorICAgIF0KKwor ICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUG9wZW4nKQorICAg IEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF9hcHAnKQor ICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuZGInKQorICAgIEBw YXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5jZS5TZXJ2ZXInKQorICAgIEBwYXRjaCgncGdh ZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF91c2VyJykKKyAgICBkZWYgcnVu VGVzdChzZWxmLCBjdXJyZW50X3VzZXJfbW9jaywgc2VydmVyX21vY2ssIGRiX21vY2ssCisgICAg ICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywgcG9wZW5fbW9jayk6CisgICAgICAgIGN1cnJl bnRfdXNlcl9tb2NrLmlkID0gMQorICAgICAgICBjdXJyZW50X2FwcF9tb2NrLlBHQURNSU5fUlVO VElNRSA9IEZhbHNlCisKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBob3N0LCBwb3J0KToKKyAgICAgICAgICAgICAg ICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAg ICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKworICAgICAgICBkZWYgZGJfc2Vzc2lvbl9h ZGRfbW9jayhqKToKKyAgICAgICAgICAgIGNtZF9vYmogPSBsb2FkcyhqLmRlc2MpCisgICAgICAg ICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShjbWRfb2JqLCBJUHJvY2Vzc0Rlc2MpKQor ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWRfb2JqLnF1ZXJ5LCBzZWxmLmNsYXNzX3Bh cmFtc1snY21kJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZF9vYmoubWVzc2Fn ZSwgc2VsZi5leHBlY3RlZF9tc2cpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZF9v YmouZGF0YSwgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGEnXSkKKworICAgICAgICBtb2NrX29iaiA9 IFRlc3RNb2NrU2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWyd1c2VybmFtZSddLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSkK KyAgICAgICAgbW9ja19yZXN1bHQgPSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJu X3ZhbHVlCisgICAgICAgIG1vY2tfcmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2Jq CisKKyAgICAgICAgZGJfbW9jay5zZXNzaW9uLmFkZC5zaWRlX2VmZmVjdCA9IGRiX3Nlc3Npb25f YWRkX21vY2sKKworICAgICAgICBtYWludGVuYW5jZV9vYmogPSBNZXNzYWdlKAorICAgICAgICAg ICAgc2VsZi5jbGFzc19wYXJhbXNbJ3NpZCddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJh bXNbJ2RhdGEnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXQorICAgICAg ICApCisKKyAgICAgICAgcCA9IEJhdGNoUHJvY2VzcygKKyAgICAgICAgICAgIGRlc2M9bWFpbnRl bmFuY2Vfb2JqLAorICAgICAgICAgICAgY21kPXNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSwKKyAg ICAgICAgICAgIGFyZ3M9c2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAg ICAgICAgIyBDaGVjayB0aGF0IF9jcmVhdGVfcHJvY2VzcyBoYXMgYmVlbiBjYWxsZWQKKyAgICAg ICAgc2VsZi5hc3NlcnRUcnVlKGRiX21vY2suc2Vzc2lvbi5hZGQuY2FsbGVkKQorCisgICAgICAg ICMgQ2hlY2sgc3RhcnQgbWV0aG9kCisgICAgICAgIHNlbGYuX2NoZWNrX3N0YXJ0KHBvcGVuX21v Y2ssIHApCisKKyAgICAgICAgIyBDaGVjayBsaXN0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVj a19saXN0KHAsIG1haW50ZW5hbmNlX29iaikKKworICAgIGRlZiBfY2hlY2tfc3RhcnQoc2VsZiwg cG9wZW5fbW9jaywgcCk6CisgICAgICAgIGNtZF90ZXN0ID0gc2VsZi5jbGFzc19wYXJhbXNbJ2Nt ZCddCisgICAgICAgIGFzc2VydF90cnVlID0gc2VsZi5hc3NlcnRUcnVlCisKKyAgICAgICAgY2xh c3MgcG9wZW5Nb2NrU2lkZUVmZmVjdCgpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IGNtZCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGNtZF90ZXN0IGlu IGNtZCkKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSgnZW52JyBpbiBrd2FyZ3MpCisKKyAg ICAgICAgICAgIGRlZiBwb2xsKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAg ICBwb3Blbl9tb2NrLnNpZGVfZWZmZWN0ID0gcG9wZW5Nb2NrU2lkZUVmZmVjdAorICAgICAgICBw LnN0YXJ0KCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUocG9wZW5fbW9jay5jYWxsZWQpCisK KyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLlByb2Nlc3MnKQor ICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuQmF0Y2hQcm9jZXNz LicKKyAgICAgICAgICAgJ3VwZGF0ZV9wcm9jZXNzX2luZm8nKQorICAgIGRlZiBfY2hlY2tfbGlz dChzZWxmLCBwLCBtYWludGVuYW5jZV9vYmosIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jaywKKyAg ICAgICAgICAgICAgICAgICAgcHJvY2Vzc19tb2NrKToKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tQ cm9jZXNzKCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGVzYywgYXJncywgY21k KToKKyAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLmV4 aXRfY29kZSA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSAnMjAxOC0wNC0x NyAwNjoxODo1Ni4zMTU0NDUgKzAwMDAnCisgICAgICAgICAgICAgICAgc2VsZi5lbmRfdGltZSA9 IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLmRlc2MgPSBkdW1wcyhkZXNjKQorICAgICAgICAg ICAgICAgIHNlbGYuYXJndW1lbnRzID0gIiAiLmpvaW4oYXJncykKKyAgICAgICAgICAgICAgICBz ZWxmLmNvbW1hbmQgPSBjbWQKKyAgICAgICAgICAgICAgICBzZWxmLmFja25vd2xlZGdlID0gTm9u ZQorCisgICAgICAgIHByb2Nlc3NfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlID0g WworICAgICAgICAgICAgVGVzdE1vY2tQcm9jZXNzKG1haW50ZW5hbmNlX29iaiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSkKKyAgICAgICAgXQor CisgICAgICAgIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jay5yZXR1cm5fdmFsdWUgPSBbVHJ1ZSwg VHJ1ZV0KKworICAgICAgICByZXRfdmFsdWUgPSBwLmxpc3QoKQorICAgICAgICBzZWxmLmFzc2Vy dEVxdWFsKDEsIGxlbihyZXRfdmFsdWUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2RldGFp bHMnIGluIHJldF92YWx1ZVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdkZXNjJyBpbiBy ZXRfdmFsdWVbMF0pCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90 ZXN0cy90ZXN0X2NyZWF0ZV9tYWludGVuYW5jZV9qb2IucHkgYi93ZWIvcGdhZG1pbi90b29scy9t YWludGVuYW5jZS90ZXN0cy90ZXN0X2NyZWF0ZV9tYWludGVuYW5jZV9qb2IucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc2ZjFkOQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfY3JlYXRlX21haW50ZW5hbmNl X2pvYi5weQpAQCAtMCwwICsxLDEzOSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9y dCB0aW1lCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKK2Zyb20g cGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVz c2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0 X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1w b3J0IHNlcnZlcl91dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAg ICBkYXRhYmFzZV91dGlscworCisKK2NsYXNzIE1haW50ZW5hbmNlSm9iVGVzdChCYXNlVGVzdEdl bmVyYXRvcik6CisgICAgIiIiTWFpbnRlbmFuY2UgYXBpIHRlc3QgY2FzZXMiIiIKKyAgICBzY2Vu YXJpb3MgPSBbCisgICAgICAgICgnV2hlbiBtYWludGVuYW5jZSB0aGUgb2JqZWN0IHdpdGggdGhl IGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIHBhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRh YmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnVkFDVVVNJywK KyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAgICAgICAg ICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg ICd2YWN1dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UnOiBU cnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0iVkFDVVVNIFZF UkJPU0U7XG4iCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9tYWludGVuYW5j ZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kPSdWQUNVVU0gVkVSQk9T RScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAg KSkKKyAgICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVy WydkZWZhdWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBU ZXN0KAorICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZv ciB0aGUgc2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZl clsnbmFtZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHJ1 blRlc3Qoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFyZW50X25vZGVfZGljdFsi ZGF0YWJhc2UiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYuZGJfaWQgPSBwYXJlbnRf bm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfaWQiXQorICAgICAgICB1cmwgPSBzZWxmLnVy bC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCisKKyAgICAgICAgIyBDcmVhdGUg dGhlIGJhY2t1cCBqb2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVybCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxm LnBhcmFtc1snZGF0YSddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z ZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2Fkcyhy ZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgam9iX2lkID0gcmVzcG9uc2Vf ZGF0YVsnZGF0YSddWydqb2JfaWQnXQorCisgICAgICAgIGNudCA9IDAKKyAgICAgICAgd2hpbGUg MToKKyAgICAgICAgICAgIGlmIGNudCA+PSAxMDoKKyAgICAgICAgICAgICAgICBicmVhaworICAg ICAgICAgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAgICAgICByZXNwb25zZTEg PSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkpCisgICAgICAgICAgICBzZWxmLmFz c2VydEVxdWFsKHJlc3BvbnNlMS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICAgICAgcHJvY2Vz c19saXN0ID0ganNvbi5sb2FkcyhyZXNwb25zZTEuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAg ICAgICAgICAgIGlmIGxlbihwcm9jZXNzX2xpc3QpID4gMCBhbmQgJ2V4ZWN1dGlvbl90aW1lJyBp biBwcm9jZXNzX2xpc3RbMF06CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHRp bWUuc2xlZXAoMC41KQorICAgICAgICAgICAgY250ICs9IDEKKworICAgICAgICBzZWxmLmFzc2Vy dFRydWUoJ2V4ZWN1dGlvbl90aW1lJyBpbiBwcm9jZXNzX2xpc3RbMF0pCisgICAgICAgIHNlbGYu YXNzZXJ0VHJ1ZSgnc3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXSkKKyAgICAgICAgc2VsZi5hc3Nl cnRUcnVlKCdleGl0X2NvZGUnIGluIHByb2Nlc3NfbGlzdFswXSkKKyAgICAgICAgc2VsZi5hc3Nl cnRUcnVlKHByb2Nlc3NfbGlzdFswXVsnZXhpdF9jb2RlJ10gaW4KKyAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuZXhwZWN0ZWRfZXhpdF9jb2RlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4o c2VsZi5leHBlY3RlZF9jbWQsIHByb2Nlc3NfbGlzdFswXVsnZGV0YWlscyddKQorCisgICAgICAg ICMgQ2hlY2sgdGhlIHByb2Nlc3MgZGV0YWlscworICAgICAgICBwX2RldGFpbHMgPSBzZWxmLnRl c3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgIGpv Yl9pZCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICkKKyAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKworICAgICAgICBwX2Rl dGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz0n LmZvcm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5 OTk5OSkpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwX2RldGFpbHMuc3Rh dHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0 YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICAjIFJldHJpZXZlIHRoZSBiYWNr dXAgam9iIHByb2Nlc3MgbG9ncworICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgb3V0LCBl cnIsIHN0YXR1cyA9IE1haW50ZW5hbmNlSm9iVGVzdC5nZXRfcGFyYW1zKHBfZGV0YWlsc19kYXRh KQorICAgICAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAg ICAgICAgIHBfZGV0YWlscyA9IHNlbGYudGVzdGVyLmdldCgKKyAgICAgICAgICAgICAgICAnL21p c2MvYmdwcm9jZXNzL3swfS97MX0vezJ9Lz9fPXszfScuZm9ybWF0KAorICAgICAgICAgICAgICAg ICAgICBqb2JfaWQsIG91dCwgZXJyLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAg ICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocF9kZXRhaWxzLnN0YXR1c19j b2RlLCAyMDApCisgICAgICAgICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRh aWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisK KyAgICAgICAgIyBDaGVjayB0aGUgam9iIGlzIGNvbXBsZXRlLgorICAgICAgICBiYWNrdXBfYWNr ID0gc2VsZi50ZXN0ZXIucHV0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9Jy5mb3JtYXQoam9iX2lkKSkK KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYWNrdXBfYWNrLnN0YXR1c19jb2RlLCAyMDApCisg ICAgICAgIGJhY2t1cF9hY2tfcmVzID0ganNvbi5sb2FkcyhiYWNrdXBfYWNrLmRhdGEuZGVjb2Rl KCd1dGYtOCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFja3VwX2Fja19yZXNbJ3N1 Y2Nlc3MnXSwgMSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X3BhcmFtcyhkYXRh KToKKyAgICAgICAgb3V0ID0gMAorICAgICAgICBvdXRfZG9uZSA9IEZhbHNlCisgICAgICAgIGVy ciA9IDAKKyAgICAgICAgZXJyX2RvbmUgPSBGYWxzZQorICAgICAgICBpZiAnb3V0JyBpbiBkYXRh OgorICAgICAgICAgICAgb3V0ID0gZGF0YVsnb3V0J10gYW5kIGRhdGFbJ291dCddWydwb3MnXQor CisgICAgICAgICAgICBpZiAnZG9uZScgaW4gZGF0YVsnb3V0J106CisgICAgICAgICAgICAgICAg b3V0X2RvbmUgPSBkYXRhWydvdXQnXVsnZG9uZSddCisKKyAgICAgICAgaWYgJ2VycicgaW4gZGF0 YToKKyAgICAgICAgICAgIGVyciA9IGRhdGFbJ2VyciddIGFuZCBkYXRhWydlcnInXVsncG9zJ10K KworICAgICAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ2VyciddOgorICAgICAgICAgICAgICAg IGVycl9kb25lID0gZGF0YVsnZXJyJ11bJ2RvbmUnXQorCisgICAgICAgIHJldHVybiBvdXQsIGVy ciwgKG91dF9kb25lIGFuZCBlcnJfZG9uZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xz L21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFuY2VfY3JlYXRlX2pvYl91bml0X3Rlc3Qu cHkgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNl X2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjQwYzFiMmMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVu YW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5CkBAIC0w LDAgKzEsMTk2IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKK2ltcG9ydCBzeXMKK2lt cG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworCitmcm9tIHBnYWRtaW4ubWlzYy5iZ3Byb2Nlc3Mu cHJvY2Vzc2VzIGltcG9ydCBCYXRjaFByb2Nlc3MKK2Zyb20gcGdhZG1pbi50b29scy5tYWludGVu YW5jZSBpbXBvcnQgTWVzc2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNl VGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citm cm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRp bHMKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGls cworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50 ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCisKKworaWYgc3lzLnZl cnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01v Y2sKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2Nr CisKKworY2xhc3MgTWFpbnRlbmFuY2VDcmVhdGVKb2JUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToK KyAgICAiIiJUZXN0IHRoZSBCYWNrdXBDcmVhdGVKb2IgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3Mg PSBbCisgICAgICAgICgnV2hlbiBtYWludGVuYW5jZSBvYmplY3Qgd2l0aCBkZWZhdWx0IG9wdGlv bnMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAg ICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfbWFpbnRl bmFuY2Vfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAg ICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdy ZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb3A9J1ZBQ1VV TScsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAorICAgICAgICAgICAg ICAgICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnVsbD1G YWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICB1cmw9Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAg ZXhwZWN0ZWRfY21kX29wdHM9WydWQUNVVU0gVkVSQk9TRTtcbiddLAorICAgICAgICAgKSksCisg ICAgICAgICgnV2hlbiBtYWludGVuYW5jZSBvYmplY3Qgd2l0aCBWQUNVVU0gRlVMTCcsCisgICAg ICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAg ICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9tYWludGVuYW5jZV9zZXJ2 ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9 J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAg ICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBk YXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvcD0nVkFDVVVNJywKKyAgICAg ICAgICAgICAgICAgdmFjdXVtX2FuYWx5emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1 bV9mcmVlemU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxsPVRydWUsCisgICAg ICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAg dXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2Nt ZF9vcHRzPVsnVkFDVVVNIEZVTEwgVkVSQk9TRTtcbiddLAorICAgICAgICAgKSksCisgICAgICAg ICgnV2hlbiBtYWludGVuYW5jZSBvYmplY3Qgd2l0aCB0aGUgQU5BTFlaRScsCisgICAgICAgICBk aWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBz aWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9tYWludGVuYW5jZV9zZXJ2ZXInLAor ICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2Fs aG9zdCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBkYXRhYmFz ZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvcD0nQU5BTFlaRScsCisgICAgICAgICAg ICAgICAgIHZhY3V1bV9hbmFseXplPVRydWUsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mcmVl emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxsPUZhbHNlLAorICAgICAgICAg ICAgICAgICB2ZXJib3NlPVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0n L21haW50ZW5hbmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0 cz1bJ0FOQUxZWkUgVkVSQk9TRTtcbiddLAorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBt YWludGVuYW5jZSB0aGUgb2JqZWN0IHdpdGggdGhlIFJFSU5ERVgnLAorICAgICAgICAgZGljdCgK KyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEs CisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfbWFpbnRlbmFuY2Vfc2VydmVyJywKKyAgICAg ICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3Qn LAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgb3A9J1JFSU5ERVgnLAorICAgICAgICAgICAgICAg ICB2YWN1dW1fYW5hbHl6ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2ZyZWV6ZT1G YWxzZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2Z1bGw9RmFsc2UsCisgICAgICAgICAgICAg ICAgIHZlcmJvc2U9RmFsc2UKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL21h aW50ZW5hbmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1b J1JFSU5ERVggREFUQUJBU0UgcG9zdGdyZXM7XG4nXSwKKyAgICAgICAgICkpLAorICAgICAgICAo J1doZW4gbWFpbnRlbmFuY2UgdGhlIG9iamVjdCB3aXRoIHRoZSBDTFVTVEVSJywKKyAgICAgICAg IGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAg IHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50ZW5hbmNlX3NlcnZlcics CisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9j YWxob3N0JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGFi YXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9wPSdDTFVTVEVSJywKKyAgICAgICAg ICAgICAgICAgdmFjdXVtX2FuYWx5emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9m cmVlemU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxsPUZhbHNlLAorICAgICAg ICAgICAgICAgICB2ZXJib3NlPUZhbHNlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1 cmw9Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21k X29wdHM9WydDTFVTVEVSO1xuJ10sCisgICAgICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRV cChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10g aXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRl ZmF1bHRfYmluYXJ5X3BhdGhzIGlzIG5vdCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQo CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICApCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMubWFpbnRlbmFu Y2UuU2VydmVyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMubWFpbnRlbmFuY2UuTWVzc2Fn ZScpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLm1haW50ZW5hbmNlLkJhdGNoUHJvY2Vzcycp CisgICAgQHBhdGNoKCdwZ2FkbWluLnV0aWxzLmRyaXZlci5wc3ljb3BnMi5zZXJ2ZXJfbWFuYWdl ci5TZXJ2ZXJNYW5hZ2VyLicKKyAgICAgICAgICAgJ2V4cG9ydF9wYXNzd29yZF9lbnYnKQorICAg IGRlZiBydW5UZXN0KHNlbGYsIGV4cG9ydF9wYXNzd29yZF9lbnZfbW9jaywKKyAgICAgICAgICAg ICAgICBiYXRjaF9wcm9jZXNzX21vY2ssIG1lc3NhZ2VfbW9jaywgc2VydmVyX21vY2spOgorICAg ICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJz ZXJ2ZXJfaWQiXQorICAgICAgICBzZWxmLmRiX2lkID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJh c2UiXVstMV1bImRiX2lkIl0KKyAgICAgICAgdXJsID0gc2VsZi51cmwuZm9ybWF0KHNlbGYuc2Vy dmVyX2lkLCBzZWxmLmRiX2lkKQorCisgICAgICAgIGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6Cisg ICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgaWQsIHVzZXJuYW1lKToK KyAgICAgICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgICAgICAgICAgc2VsZi5w b3J0ID0gcG9ydAorICAgICAgICAgICAgICAgIHNlbGYuaWQgPSBpZAorICAgICAgICAgICAgICAg IHNlbGYudXNlcm5hbWUgPSB1c2VybmFtZQorCisgICAgICAgIG1vY2tfb2JqID0gVGVzdE1vY2tT ZXJ2ZXIoc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9ydCddLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd1c2VybmFtZSddCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICBtb2NrX3Jlc3VsdCA9IHNlcnZlcl9tb2NrLnF1 ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUKKyAgICAgICAgbW9ja19yZXN1bHQuZmlyc3QucmV0 dXJuX3ZhbHVlID0gbW9ja19vYmoKKworICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suc2V0X2Vu dl92YXJpYWJsZXMgPSBNYWdpY01vY2soCisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQor ICAgICAgICApCisgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5zdGFydCA9IE1hZ2ljTW9jaygK KyAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVlCisgICAgICAgICkKKyAgICAgICAgZXhwb3J0 X3Bhc3N3b3JkX2Vudl9tb2NrLnJldHVybl92YWx1ZSA9IFRydWUKKworICAgICAgICBzZXJ2ZXJf cmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwgc2VsZi5zZXJ2ZXJf aWQpCisgICAgICAgIGlmIHNlcnZlcl9yZXNwb25zZVsiaW5mbyJdID09ICJTZXJ2ZXIgY29ubmVj dGVkLiI6CisgICAgICAgICAgICBkYl9vd25lciA9IHNlcnZlcl9yZXNwb25zZVsnZGF0YSddWyd1 c2VyJ11bJ25hbWUnXQorICAgICAgICAgICAgc2VsZi5kYXRhID0gZGF0YWJhc2VfdXRpbHMuZ2V0 X2RiX2RhdGEoZGJfb3duZXIpCisgICAgICAgICAgICBzZWxmLmRiX25hbWUgPSBzZWxmLmRhdGFb J25hbWUnXQorCisgICAgICAgICMgQ3JlYXRlIHRoZSBiYWNrdXAgam9iCisgICAgICAgIHJlc3Bv bnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhPWpzb24uZHVtcHMoc2VsZi5wYXJhbXMpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICBzZWxm LmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisKKyAgICAgICAgc2VsZi5h c3NlcnRUcnVlKG1lc3NhZ2VfbW9jay5jYWxsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShi YXRjaF9wcm9jZXNzX21vY2suY2FsbGVkKQorCisgICAgICAgIGlmIHNlbGYuZXhwZWN0ZWRfY21k X29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGluIHNlbGYuZXhwZWN0ZWRfY21kX29wdHM6Cisg ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcHQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXSkK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFp bnRlbmFuY2VfbWVzc2FnZS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3Rz L3Rlc3RfbWFpbnRlbmFuY2VfbWVzc2FnZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi44YjMwNzUyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFp bnRlbmFuY2UvdGVzdHMvdGVzdF9tYWludGVuYW5jZV9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsMTI0 IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xz CisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50 IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitmcm9tIGZsYXNrIGltcG9ydCBSZXNwb25z ZQoraW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udG9vbHMubWFpbnRl bmFuY2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFz ZVRlc3RHZW5lcmF0b3IKKworCitjbGFzcyBNYWludGVuYW5jZU1lc3NhZ2VUZXN0KEJhc2VUZXN0 R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBNYWludGVuYW5jZSBNZXNzYWdlIGNsYXNzIiIi CisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gbWFpbnRhaW5lZCB0aGUgc2VydmVy JywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg ICAgICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAn b3AnOiAnVkFDVVVNJywKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZh bHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAg ICAgICAgICAgICAgICAgICd2YWN1dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAg ICAgJ3ZlcmJvc2UnOiBUcnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg IGNtZD0iVkFDVVVNIFZFUkJPU0U7XG4iCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBl eHRlY3RlZF9tc2c9Ik1haW50ZW5hbmNlIChWYWN1dW0pIiwKKyAgICAgICAgICAgICBleHBldGNl ZF9kZXRhaWxzX2NtZD0nVkFDVVVNIFZFUkJPU0U7JworCisgICAgICAgICApKSwKKyAgICAgICAg KCdXaGVuIG1haW50YWluZWQgdGhlIHNlcnZlciB3aXRoIEZVTEwgVkVSQk9TRSBvcHRpb25zJywK KyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAg ICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3An OiAnVkFDVVVNJywKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNl LAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAg ICAgICAgICAgICAgICd2YWN1dW1fZnVsbCc6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAn dmVyYm9zZSc6IFRydWUKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21k PSJWQUNVVU0gRlVMTCBWRVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAg ZXh0ZWN0ZWRfbXNnPSJNYWludGVuYW5jZSAoVmFjdXVtKSIsCisgICAgICAgICAgICAgZXhwZXRj ZWRfZGV0YWlsc19jbWQ9J1ZBQ1VVTSBGVUxMIFZFUkJPU0U7JworCisgICAgICAgICApKSwKKyAg ICAgICAgKCdXaGVuIG1haW50YWluZWQgdGhlIHNlcnZlciB3aXRoIEFOQUxZWkUnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAg J2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdBTkFM WVpFJywKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAg ICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAg ICAgICAgICd2YWN1dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJv c2UnOiBUcnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0iQU5B TFlaRSBWRVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRf bXNnPSJNYWludGVuYW5jZSAoQW5hbHl6ZSkiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFp bHNfY21kPSdBTkFMWVpFIFZFUkJPU0U7JworCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVu IG1haW50YWluZWQgdGhlIHNlcnZlciB3aXRoIFJFSU5ERVgnLAorICAgICAgICAgZGljdCgKKyAg ICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisg ICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzog J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdSRUlOREVYJywKKyAgICAg ICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAg ICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1 dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UnOiBGYWxzZQor ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IlJFSU5ERVg7XG4iCisg ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9Ik1haW50ZW5hbmNlIChS ZWluZGV4KSIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9J1JFSU5ERVg7Jwor CisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1haW50YWluZWQgdGhlIHNlcnZlciB3aXRo IENMVVNURVInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIGRhdGE9eworICAg ICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgICAgICdvcCc6ICdDTFVTVEVSJywKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5h bHl6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxz ZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAg ICAgICAgICAgICAgJ3ZlcmJvc2UnOiBUcnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICAgICAgIGNtZD0iQ0xVU1RFUiBWRVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisgICAg ICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJNYWludGVuYW5jZSAoQ2x1c3RlcikiLAorICAgICAgICAg ICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdDTFVTVEVSIFZFUkJPU0U7JworCisgICAgICAgICAp KSwKKyAgICBdCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgbWFpbnRlbmFuY2Vf b2JqID0gTWVzc2FnZSgKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwKKyAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydkYXRhJ10sCisgICAgICAgICAgICBzZWxmLmNs YXNzX3BhcmFtc1snY21kJ10KKyAgICAgICAgKQorCisgICAgICAgICMgQ2hlY2sgdGhlIGV4cGVj dGVkIG1lc3NhZ2UgcmV0dXJuZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWludGVuYW5j ZV9vYmoubWVzc2FnZSwgc2VsZi5leHRlY3RlZF9tc2cpCisKKyAgICAgICAgIyBDaGVjayB0aGUg Y29tbWFuZAorICAgICAgICBvYmpfZGV0YWlscyA9IG1haW50ZW5hbmNlX29iai5kZXRhaWxzKHNl bGYuY2xhc3NfcGFyYW1zWydjbWQnXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxm LmV4cGV0Y2VkX2RldGFpbHNfY21kLCBvYmpfZGV0YWlscykKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL3Jlc3RvcmUvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3Jl L19faW5pdF9fLnB5CmluZGV4IDQ1ZDM4MTYuLjU4YmMyNTEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3Rvb2xzL3Jlc3RvcmUvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVz dG9yZS9fX2luaXRfXy5weQpAQCAtODYsOCArODYsNyBAQCBjbGFzcyBSZXN0b3JlTWVzc2FnZShJ UHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmNt ZCArPSBjbWRBcmcoYXJnKQogCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG1lc3NhZ2Uoc2VsZik6 CisgICAgZGVmIGdldF9zZXJ2ZXJfZGV0YWlscyhzZWxmKToKICAgICAgICAgIyBGZXRjaCB0aGUg c2VydmVyIGRldGFpbHMgbGlrZSBob3N0bmFtZSwgcG9ydCwgcm9sZXMgZXRjCiAgICAgICAgIHMg PSBTZXJ2ZXIucXVlcnkuZmlsdGVyX2J5KAogICAgICAgICAgICAgaWQ9c2VsZi5zaWQsIHVzZXJf aWQ9Y3VycmVudF91c2VyLmlkCkBAIC0xMDAsMzAgKzk5LDI1IEBAIGNsYXNzIFJlc3RvcmVNZXNz YWdlKElQcm9jZXNzRGVzYyk6CiAgICAgICAgIGhvc3QgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfaG9z dCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5ob3N0CiAgICAgICAgIHBvcnQgPSBt YW5hZ2VyLmxvY2FsX2JpbmRfcG9ydCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5w b3J0CiAKKyAgICAgICAgcmV0dXJuIHMubmFtZSwgaG9zdCwgcG9ydAorCisgICAgQHByb3BlcnR5 CisgICAgZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG5hbWUsIGhvc3QsIHBvcnQgPSBzZWxm LmdldF9zZXJ2ZXJfZGV0YWlscygpCisKICAgICAgICAgcmV0dXJuIF8oIlJlc3RvcmluZyBiYWNr dXAgb24gdGhlIHNlcnZlciAnezB9Jy4uLiIpLmZvcm1hdCgKLSAgICAgICAgICAgICJ7MH0gKHsx fTp7Mn0pIi5mb3JtYXQocy5uYW1lLCBob3N0LCBwb3J0KSwKKyAgICAgICAgICAgICJ7MH0gKHsx fTp7Mn0pIi5mb3JtYXQobmFtZSwgaG9zdCwgcG9ydCksCiAgICAgICAgICkKIAogICAgIGRlZiBk ZXRhaWxzKHNlbGYsIGNtZCwgYXJncyk6Ci0gICAgICAgICMgRmV0Y2ggdGhlIHNlcnZlciBkZXRh aWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQsIHJvbGVzIGV0YwotICAgICAgICBzID0gU2VydmVyLnF1 ZXJ5LmZpbHRlcl9ieSgKLSAgICAgICAgICAgIGlkPXNlbGYuc2lkLCB1c2VyX2lkPWN1cnJlbnRf dXNlci5pZAotICAgICAgICApLmZpcnN0KCkKLQotICAgICAgICBmcm9tIHBnYWRtaW4udXRpbHMu ZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCi0gICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdf REVGQVVMVF9EUklWRVIpCi0gICAgICAgIG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5h Z2VyKHNlbGYuc2lkKQotCi0gICAgICAgIGhvc3QgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfaG9zdCBp ZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5ob3N0Ci0gICAgICAgIHBvcnQgPSBtYW5h Z2VyLmxvY2FsX2JpbmRfcG9ydCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5wb3J0 Ci0KKyAgICAgICAgbmFtZSwgaG9zdCwgcG9ydCA9IHNlbGYuZ2V0X3NlcnZlcl9kZXRhaWxzKCkK ICAgICAgICAgcmVzID0gJzxkaXYgY2xhc3M9Img1Ij4nCiAKICAgICAgICAgcmVzICs9IGh0bWwu c2FmZV9zdHIoCiAgICAgICAgICAgICBfKAogICAgICAgICAgICAgICAgICJSZXN0b3JpbmcgYmFj a3VwIG9uIHRoZSBzZXJ2ZXIgJ3swfScuLi4iCiAgICAgICAgICAgICApLmZvcm1hdCgKLSAgICAg ICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9ybWF0KHMubmFtZSwgaG9zdCwgcG9ydCkKKyAg ICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9ybWF0KG5hbWUsIGhvc3QsIHBvcnQpCiAg ICAgICAgICAgICApCiAgICAgICAgICkKIApAQCAtMjA2LDYgKzIwMCw3IEBAIGRlZiBjcmVhdGVf cmVzdG9yZV9qb2Ioc2lkKToKIAogICAgIGlmIF9maWxlIGlzIE5vbmU6CiAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBzdGF0dXM9NDEwLAogICAgICAgICAg ICAgc3VjY2Vzcz0wLAogICAgICAgICAgICAgZXJyb3Jtc2c9XygiRmlsZSBjb3VsZCBub3QgYmUg Zm91bmQuIikKICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9y ZS90ZXN0cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvX19p bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nl c3MucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJvY2Vz cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTUwMzBjCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2JhdGNoX3By b2Nlc3MucHkKQEAgLTAsMCArMSwxNTQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwg VGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk IHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBv cnQgc3lzCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMgaW1wb3J0IEJh dGNoUHJvY2VzcywgSVByb2Nlc3NEZXNjCitmcm9tIHBnYWRtaW4udG9vbHMucmVzdG9yZSBpbXBv cnQgUmVzdG9yZU1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRl c3RHZW5lcmF0b3IKK2Zyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMKKworaWYgc3lzLnZl cnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoCitlbHNlOgor ICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKworCitjbGFzcyBCYXRjaFByb2Nl c3NUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBCYXRjaFByb2Nlc3Mg Y2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiByZXN0b3JlIHNlcnZl cicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAg ICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3Jl X3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAg aG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywK KyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAg YmZpbGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAg ICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAicmVzdG9yZV9maWxl IiwKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAg ImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAg ICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAg ICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIsCisgICAgICAgICAgICAgICAgICAgICAnLS1u by1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAg ICAgICAgICAgICAgICAicG9zdGdyZXMiCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg ICAgICAgIGNtZD0ncmVzdG9yZV9zZXJ2ZXInCisgICAgICAgICAgICAgKQorICAgICAgICAgKSkK KyAgICBdCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5SZXN0b3JlTWVzc2Fn ZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vz cy5wcm9jZXNzZXMuUG9wZW4nKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5w cm9jZXNzZXMuY3VycmVudF9hcHAnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vz cy5wcm9jZXNzZXMuZGInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0b3JlLmN1cnJl bnRfdXNlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5j dXJyZW50X3VzZXInKQorICAgIGRlZiBydW5UZXN0KHNlbGYsIGN1cnJlbnRfdXNlcl9tb2NrLCBj dXJyZW50X3VzZXIsIGRiX21vY2ssCisgICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywg cG9wZW5fbW9jaywgZ2V0X3NlcnZlcl9kZXRhaWxzX21vY2spOgorICAgICAgICBjdXJyZW50X3Vz ZXIuaWQgPSAxCisgICAgICAgIGN1cnJlbnRfdXNlcl9tb2NrLmlkID0gMQorICAgICAgICBjdXJy ZW50X2FwcF9tb2NrLlBHQURNSU5fUlVOVElNRSA9IEZhbHNlCisKKyAgICAgICAgZGVmIGRiX3Nl c3Npb25fYWRkX21vY2soaik6CisgICAgICAgICAgICBjbWRfb2JqID0gbG9hZHMoai5kZXNjKQor ICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoY21kX29iaiwgSVByb2Nlc3NE ZXNjKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kX29iai5iZmlsZSwgc2VsZi5j bGFzc19wYXJhbXNbJ2JmaWxlJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZF9v YmouY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC0tZmlsZSAicmVzdG9yZV9m aWxlIiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWhvc3QgInswfSIgJworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0ICJ7MX0iICcKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUgInsyfSIgJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnLS1uby1wYXNzd29yZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct LWRhdGFiYXNlICJ7M30iJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ10KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKSkKKworICAgICAgICBnZXRfc2VydmVyX2RldGFpbHNfbW9j ay5yZXR1cm5fdmFsdWUgPSBcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snbmFtZSdd LFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sXAorICAgICAgICAgICAg c2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXQorCisgICAgICAgIGRiX21vY2suc2Vzc2lvbi5hZGQu c2lkZV9lZmZlY3QgPSBkYl9zZXNzaW9uX2FkZF9tb2NrCisKKyAgICAgICAgcmVzdG9yZV9vYmog PSBSZXN0b3JlTWVzc2FnZSgKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwK KyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydiZmlsZSddLAorICAgICAgICAgICAgKnNl bGYuY2xhc3NfcGFyYW1zWydhcmdzJ10KKyAgICAgICAgKQorCisgICAgICAgIHAgPSBCYXRjaFBy b2Nlc3MoCisgICAgICAgICAgICBkZXNjPXJlc3RvcmVfb2JqLAorICAgICAgICAgICAgY21kPXNl bGYuY2xhc3NfcGFyYW1zWydjbWQnXSwKKyAgICAgICAgICAgIGFyZ3M9c2VsZi5jbGFzc19wYXJh bXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAgICAgICAgIyBDaGVjayB0aGF0IF9jcmVhdGVfcHJv Y2VzcyBoYXMgYmVlbiBjYWxsZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRiX21vY2suc2Vz c2lvbi5hZGQuY2FsbGVkKQorCisgICAgICAgICMgQ2hlY2sgc3RhcnQgbWV0aG9kCisgICAgICAg IHNlbGYuX2NoZWNrX3N0YXJ0KHBvcGVuX21vY2ssIHApCisKKyAgICAgICAgIyBDaGVjayBsaXN0 IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19saXN0KHAsIHJlc3RvcmVfb2JqKQorCisgICAg ZGVmIF9jaGVja19zdGFydChzZWxmLCBwb3Blbl9tb2NrLCBwKToKKyAgICAgICAgY21kX3Rlc3Qg PSBzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10KKyAgICAgICAgYXNzZXJ0X3RydWUgPSBzZWxmLmFz c2VydFRydWUKKworICAgICAgICBjbGFzcyBwb3Blbk1vY2tTaWRlRWZmZWN0KCk6CisgICAgICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgY21kLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAg YXNzZXJ0X3RydWUoY21kX3Rlc3QgaW4gY21kKQorICAgICAgICAgICAgICAgIGFzc2VydF90cnVl KCdlbnYnIGluIGt3YXJncykKKworICAgICAgICAgICAgZGVmIHBvbGwoc2VsZik6CisgICAgICAg ICAgICAgICAgcGFzcworCisgICAgICAgIHBvcGVuX21vY2suc2lkZV9lZmZlY3QgPSBwb3Blbk1v Y2tTaWRlRWZmZWN0CisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1 ZShwb3Blbl9tb2NrLmNhbGxlZCkKKworICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vz cy5wcm9jZXNzZXMuUHJvY2VzcycpCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNz LnByb2Nlc3Nlcy5CYXRjaFByb2Nlc3MuJworICAgICAgICAgICAndXBkYXRlX3Byb2Nlc3NfaW5m bycpCisgICAgZGVmIF9jaGVja19saXN0KHNlbGYsIHAsIHJlc3RvcmVfb2JqLCB1cGRhdGVfcHJv Y2Vzc19pbmZvX21vY2ssCisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfbW9jayk6CisgICAg ICAgIGNsYXNzIFRlc3RNb2NrUHJvY2VzcygpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIGRlc2MsIGFyZ3MsIGNtZCk6CisgICAgICAgICAgICAgICAgc2VsZi5waWQgPSAxCisgICAg ICAgICAgICAgICAgc2VsZi5leGl0X2NvZGUgPSAxCisgICAgICAgICAgICAgICAgc2VsZi5zdGFy dF90aW1lID0gJzIwMTgtMDQtMTcgMDY6MTg6NTYuMzE1NDQ1ICswMDAwJworICAgICAgICAgICAg ICAgIHNlbGYuZW5kX3RpbWUgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5kZXNjID0gZHVt cHMoZGVzYykKKyAgICAgICAgICAgICAgICBzZWxmLmFyZ3VtZW50cyA9ICIgIi5qb2luKGFyZ3Mp CisgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kID0gY21kCisgICAgICAgICAgICAgICAgc2Vs Zi5hY2tub3dsZWRnZSA9IE5vbmUKKworICAgICAgICBwcm9jZXNzX21vY2sucXVlcnkuZmlsdGVy X2J5LnJldHVybl92YWx1ZSA9IFsKKyAgICAgICAgICAgIFRlc3RNb2NrUHJvY2VzcyhyZXN0b3Jl X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJn cyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQn XSkKKyAgICAgICAgXQorCisgICAgICAgIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jay5yZXR1cm5f dmFsdWUgPSBbVHJ1ZSwgVHJ1ZV0KKworICAgICAgICByZXRfdmFsdWUgPSBwLmxpc3QoKQorICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXRfdmFsdWUpKQorICAgICAgICBzZWxmLmFz c2VydFRydWUoJ2RldGFpbHMnIGluIHJldF92YWx1ZVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRU cnVlKCdkZXNjJyBpbiByZXRfdmFsdWVbMF0pCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9yZXN0b3JlL3Rlc3RzL3Rlc3RfY3JlYXRlX3Jlc3RvcmVfam9iLnB5IGIvd2ViL3BnYWRtaW4v dG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2NyZWF0ZV9yZXN0b3JlX2pvYi5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODA5ZmZjCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2NyZWF0ZV9yZXN0b3JlX2pvYi5weQpA QCAtMCwwICsxLDIwNiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1p biBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhl IFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9ydCBzeXMKK2lt cG9ydCB0aW1lCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgb3MKKworaW1wb3J0IHNpbXBsZWpzb24g YXMganNvbgorCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJh dG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVz c2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSBw Z2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0aWxzCitpbXBvcnQg cGdhZG1pbi50b29scy5iYWNrdXAudGVzdHMudGVzdF9iYWNrdXBfdXRpbHMgYXMgYmFja3VwX3V0 aWxzCisKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1w b3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9y dCBwYXRjaCwgTWFnaWNNb2NrCisKKworY2xhc3MgUmVzdG9yZUpvYlRlc3QoQmFzZVRlc3RHZW5l cmF0b3IpOgorICAgICIiIkJhY2t1cCBhcGkgdGVzdCBjYXNlcyIiIgorICAgIHNjZW5hcmlvcyA9 IFsKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgdGhlIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IG9w dGlvbnMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgZmlsZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICBm b3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIGN1c3RvbT1GYWxzZSwKKyAgICAgICAg ICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAg ICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisg ICAgICAgICAgICAgICAgIGRhdGFiYXNlPSd0ZXN0X3Jlc3RvcmVfZGF0YWJhc2UnCisgICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJ10sCisgICAgICAgICAgICAgbm90X2V4 cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwg Tm9uZV0sCisgICAgICAgICAgICAgYmFja3VwX29wdGlvbnM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X3Jlc3RvcmVf ZmlsZScsCisgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAg ICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICBibG9icz1UcnVl LAorICAgICAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgICAg IHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSd0ZXN0X3Jlc3RvcmVf ZGF0YWJhc2UnCisgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgIHVybD0nL2Jh Y2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2Un LCAnLS1mb3JtYXQ9YycsICctLWJsb2JzJ10sCisgICAgICAgICAgICAgICAgICAgICBub3RfZXhw ZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2Nv ZGU9WzAsIE5vbmVdCisgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICkKKyAgICAg ICAgICkpCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNl cnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5z a2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNl dCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z ZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRl ZiBjcmVhdGVfYmFja3VwKHNlbGYpOgorICAgICAgICB1cmwgPSBzZWxmLmJhY2t1cF9vcHRpb25z Wyd1cmwnXS5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQpCisgICAgICAgIGpvYl9pZCA9IGJhY2t1cF91 dGlscy5jcmVhdGVfYmFja3VwX2pvYihzZWxmLnRlc3RlciwgdXJsLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5iYWNrdXBfb3B0aW9uc1sncGFy YW1zJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKQorICAgICAgICBzZWxmLmJhY2t1cF9maWxlID0gYmFja3VwX3V0aWxz LnJ1bl9iYWNrdXBfam9iKAorICAgICAgICAgICAgc2VsZi50ZXN0ZXIsCisgICAgICAgICAgICBq b2JfaWQsCisgICAgICAgICAgICBzZWxmLmJhY2t1cF9vcHRpb25zWydleHBlY3RlZF9wYXJhbXMn XSwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydE5v dEluLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICApCisKKyAgICBkZWYg cnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5kYl9uYW1lID0gJycKKyAgICAgICAgc2VsZi5z ZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisg ICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxm LCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgZGJfaWQgPSB1dGlscy5jcmVhdGVfZGF0YWJhc2Uo c2VsZi5zZXJ2ZXIsIHNlbGYucGFyYW1zWydkYXRhYmFzZSddKQorCisgICAgICAgIHNlbGYuY3Jl YXRlX2JhY2t1cCgpCisgICAgICAgIHVybCA9IHNlbGYudXJsLmZvcm1hdChzZWxmLnNlcnZlcl9p ZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgcmVzdG9yZSBqb2IKKyAgICAgICAgcmVzcG9uc2Ug PSBzZWxmLnRlc3Rlci5wb3N0KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGE9anNvbi5kdW1wcyhzZWxmLnBhcmFtcyksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcmVzcG9uc2VfZGF0 YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgIGpv Yl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnam9iX2lkJ10KKworICAgICAgICBjbnQgPSAw CisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICBpZiBjbnQgPj0gNToKKyAgICAgICAgICAg ICAgICBicmVhaworICAgICAgICAgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAg ICAgICByZXNwb25zZTEgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZv cm1hdCgKKyAgICAgICAgICAgICAgICByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkpCisgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlMS5zdGF0dXNfY29kZSwgMjAwKQorICAg ICAgICAgICAgcHJvY2Vzc19saXN0ID0ganNvbi5sb2FkcyhyZXNwb25zZTEuZGF0YS5kZWNvZGUo J3V0Zi04JykpCisKKyAgICAgICAgICAgIGlmIGxlbihwcm9jZXNzX2xpc3QpID4gMCBhbmQgJ2V4 ZWN1dGlvbl90aW1lJyBpbiBwcm9jZXNzX2xpc3RbMF06CisgICAgICAgICAgICAgICAgYnJlYWsK KyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC41KQorICAgICAgICAgICAgY250ICs9IDEKKworICAg ICAgICBzZWxmLmFzc2VydFRydWUoJ2V4ZWN1dGlvbl90aW1lJyBpbiBwcm9jZXNzX2xpc3RbMF0p CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnc3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXSkKKyAg ICAgICAgc2VsZi5hc3NlcnRUcnVlKCdleGl0X2NvZGUnIGluIHByb2Nlc3NfbGlzdFswXSkKKyAg ICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nlc3NfbGlzdFswXVsnZXhpdF9jb2RlJ10gaW4KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRfZXhpdF9jb2RlKQorCisgICAgICAg IGlmIHNlbGYuZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGluIHNlbGYu ZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcHQsIHBy b2Nlc3NfbGlzdFswXVsnZGV0YWlscyddKQorICAgICAgICBpZiBzZWxmLm5vdF9leHBlY3RlZF9j bWRfb3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29w dHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihvcHQsIHByb2Nlc3NfbGlzdFsw XVsnZGV0YWlscyddKQorCisgICAgICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgZGV0YWlscworICAg ICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0/Xz0n LmZvcm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkp CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwX2RldGFpbHMuc3RhdHVzX2Nv ZGUsIDIwMCkKKyAgICAgICAgcF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5k YXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5n ZXQoJy9taXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAg IGpvYl9pZCwgMCwgMCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICkKKyAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAg ICAgcF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRm LTgnKSkKKworICAgICAgICAjIFJldHJpZXZlIHRoZSByZXN0b3JlIGpvYiBwcm9jZXNzIGxvZ3MK KyAgICAgICAgY250ID0gMAorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgb3V0LCBlcnIs IHN0YXR1cyA9IFJlc3RvcmVKb2JUZXN0LmdldF9wYXJhbXMocF9kZXRhaWxzX2RhdGEpCisgICAg ICAgICAgICBpZiBzdGF0dXMgb3IgY250ID49IDU6CisgICAgICAgICAgICAgICAgYnJlYWsKKwor ICAgICAgICAgICAgcF9kZXRhaWxzID0gc2VsZi50ZXN0ZXIuZ2V0KAorICAgICAgICAgICAgICAg ICcvbWlzYy9iZ3Byb2Nlc3MvezB9L3sxfS97Mn0vP189ezN9Jy5mb3JtYXQoCisgICAgICAgICAg ICAgICAgICAgIGpvYl9pZCwgb3V0LCBlcnIsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQor ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwX2RldGFpbHMuc3Rh dHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2Fkcyhw X2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgICAgIGNudCArPSAxCisg ICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAgICAgICAgIyBDaGVjayB0aGUgam9iIGlzIGNv bXBsZXRlLgorICAgICAgICByZXN0b3JlX2FjayA9IHNlbGYudGVzdGVyLnB1dCgnL21pc2MvYmdw cm9jZXNzL3swfScuZm9ybWF0KGpvYl9pZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz dG9yZV9hY2suc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcmVzdG9yZV9hY2tfcmVzID0ganNv bi5sb2FkcyhyZXN0b3JlX2Fjay5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICBzZWxm LmFzc2VydEVxdWFsKHJlc3RvcmVfYWNrX3Jlc1snc3VjY2VzcyddLCAxKQorCisgICAgICAgIGlm IHNlbGYuYmFja3VwX2ZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlz ZmlsZShzZWxmLmJhY2t1cF9maWxlKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi5i YWNrdXBfZmlsZSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X3BhcmFtcyhkYXRh KToKKyAgICAgICAgb3V0ID0gMAorICAgICAgICBvdXRfZG9uZSA9IEZhbHNlCisgICAgICAgIGVy ciA9IDAKKyAgICAgICAgZXJyX2RvbmUgPSBGYWxzZQorICAgICAgICBpZiAnb3V0JyBpbiBkYXRh OgorICAgICAgICAgICAgb3V0ID0gZGF0YVsnb3V0J10gYW5kIGRhdGFbJ291dCddWydwb3MnXQor CisgICAgICAgICAgICBpZiAnZG9uZScgaW4gZGF0YVsnb3V0J106CisgICAgICAgICAgICAgICAg b3V0X2RvbmUgPSBkYXRhWydvdXQnXVsnZG9uZSddCisKKyAgICAgICAgaWYgJ2VycicgaW4gZGF0 YToKKyAgICAgICAgICAgIGVyciA9IGRhdGFbJ2VyciddIGFuZCBkYXRhWydlcnInXVsncG9zJ10K KworICAgICAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ2VyciddOgorICAgICAgICAgICAgICAg IGVycl9kb25lID0gZGF0YVsnZXJyJ11bJ2RvbmUnXQorCisgICAgICAgIHJldHVybiBvdXQsIGVy ciwgKG91dF9kb25lIGFuZCBlcnJfZG9uZSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAg ICAgICAgY29ubmVjdGlvbiA9IHV0aWxzLmdldF9kYl9jb25uZWN0aW9uKAorICAgICAgICAgICAg c2VsZi5zZXJ2ZXJbJ2RiJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwK KyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgc2Vs Zi5zZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10sCisgICAg ICAgICAgICBzZWxmLnNlcnZlclsnc3NsbW9kZSddCisgICAgICAgICkKKyAgICAgICAgdXRpbHMu ZHJvcF9kYXRhYmFzZShjb25uZWN0aW9uLCBzZWxmLnBhcmFtc1snZGF0YWJhc2UnXSkKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX2NyZWF0 ZV9qb2JfdW5pdF90ZXN0LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0 X3Jlc3RvcmVfY3JlYXRlX2pvYl91bml0X3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uYjgwNTQxZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5CkBAIC0w LDAgKzEsMzE4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgc3lzCitpbXBv cnQgc2ltcGxlanNvbiBhcyBqc29uCisKK2Zyb20gcGdhZG1pbi50b29scy5yZXN0b3JlIGltcG9y dCBSZXN0b3JlTWVzc2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVz dEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9t IHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMK K2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscwor ZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0 cyBpbXBvcnQgdXRpbHMgYXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCisKK2lmIHN5cy52ZXJzaW9u X2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCitl bHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworCisK K2NsYXNzIFJlc3RvcmVDcmVhdGVKb2JUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJU ZXN0IHRoZSBSZXN0b3JlQ3JlYXRlSm9iIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAg ICAgICAoJ1doZW4gcmVzdG9yZSBvYmplY3Qgd2l0aCBkZWZhdWx0IG9wdGlvbnMnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9zZXJ2ZXInLAor ICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2Fs aG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAg ICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0n cG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAg ICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAg ICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIGN1c3RvbT1GYWxzZSwKKyAgICAg ICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBibG9icz1UcnVlLAor ICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10s CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0 ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIHRoZSBzZWN0aW9u cyBvcHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0 X3Jlc3RvcmVfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAg ICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9z dGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAg ICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxl JywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICBu b19vZl9qb2JzPScyJywKKyAgICAgICAgICAgICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAg ICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAg ICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3Rn cmVzJywKKyAgICAgICAgICAgICAgICAgZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBwcmVf ZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBwb3N0X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAg ICAgICAgb25seV9kYXRhPVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPVRydWUK KyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisg ICAgICAgICAgICAgIyBQbGVhc2UgaW5jbHVkZSBzZWN0aW9ucyBkYXRhIGhlcmUsIHJpZ2h0IG5v dyB0aGlzIGlzIGEgYnVnCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJv c2UnLCAnLS1qb2JzJywgJzInXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9 W10sCisgICAgICAgICAgICAgIyBCZWxvdyBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIG9uY2Ug d2UgZml4IHRoZSBpc3N1ZSAjMzM2OAorICAgICAgICAgICAgICMgbm90X2V4cGVjdGVkX2NtZF9v cHRzPVsnLS1kYXRhLW9ubHknLCAnLS1zY2hlbWEtb25seSddLAorICAgICAgICAgICAgIGV4cGVj dGVkX2V4aXRfY29kZT1bMCwgTm9uZV0sCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHJl c3RvcmUgdGhlIG9iamVjdCB3aXRoIFR5cGUgb2Ygb2JqZWN0cycsCisgICAgICAgICBkaWN0KAor ICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwK KyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAg ICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAg ICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZp bGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycK KyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAg ICAgICBmaWxlPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0n Y3VzdG9tJywKKyAgICAgICAgICAgICAgICAgbm9fb2Zfam9icz0nMicsCisgICAgICAgICAgICAg ICAgIGN1c3RvbT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAg ICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAg ICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9ubHlf ZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1UcnVlLAorICAgICAgICAg ICAgICAgICBkbnNfb3duZXI9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJs PScvcmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0t dmVyYm9zZScsICctLWRhdGEtb25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRf b3B0cz1bXSwKKyAgICAgICAgICAgICAjIEJlbG93IG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQg b25jZSB3ZSBmaXggdGhlIGlzc3VlICMzMzY4CisgICAgICAgICAgICAgIyBub3RfZXhwZWN0ZWRf Y21kX29wdHM9WyctLXNjaGVtYS1vbmx5JywgJy0tbm8tb3duZXInXSwKKyAgICAgICAgICAgICBl eHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdLAorICAgICAgICAgKSksCisgICAgICAgICgnV2hl biByZXN0b3JlIG9iamVjdCB3aXRoIG9wdGlvbiAtIERvIG5vdCBzYXZlJywKKyAgICAgICAgIGRp Y3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfc2VydmVyJywKKyAgICAg ICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3Qn LAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAg ICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3Rn cmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9y bWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAg ICAgICAgIGN1c3RvbT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAg ICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICBkbnNfb3duZXI9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg ZG5zX3ByaXZpbGVnZT1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNfdGFibGVzcGFjZT1UcnVl LAorICAgICAgICAgICAgICAgICBvbmx5X2RhdGE9RmFsc2UKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgIyBBZGQgJy0t bm8tcHJpdmlsZWdlcycgdG8gdGhlIGV4cGVjdGVkX2NtZCBvbmNlICMzMzYzIGZpeGVkCisgICAg ICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLW5vLW93bmVyJywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJy0tbm8tdGFibGVzcGFjZXMnXSwKKyAgICAgICAgICAgICBub3Rf ZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVsw LCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRo IG9wdGlvbiAtIFF1ZXJpZXMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19w YXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5h bWU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAg ICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFz ZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAg ICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAg ICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3Vw X2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAg ICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAg ICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICBjbGVhbj1UcnVlLAorICAgICAgICAgICAgICAgICBpbmNsdWRl X2NyZWF0ZV9kYXRhYmFzZT1UcnVlLAorICAgICAgICAgICAgICAgICBzaW5nbGVfdHJhbnNhY3Rp b249VHJ1ZSwKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9i L3swfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWNyZWF0ZScsICctLWNs ZWFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tc2luZ2xlLXRyYW5zYWN0 aW9uJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAo J1doZW4gcmVzdG9yZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBEaXNiYWxlJywKKyAgICAgICAgIGRp Y3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAg ICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywK KyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAg YmZpbGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jl cycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0 PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAg ICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgZGlzYWJsZV90cmln Z2VyPVRydWUsCisgICAgICAgICAgICAgICAgIG5vX2RhdGFfZmFpbF90YWJsZT1UcnVlLAorICAg ICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1GYWxzZQorICAgICAgICAgICAgICksCisgICAgICAg ICAgICAgdXJsPScvcmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAgICAjIEFkZCAnLS1uby1k YXRhLWZvci1mYWlsZWQtdGFibGVzJyBpbnRvCisgICAgICAgICAgICAgIyBleHBlY3RlZF9jbWRf b3B0cyBvbmNlICMzMzYzIGZpeGVkCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9Wyct LWRpc2FibGUtdHJpZ2dlcnMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9 W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAg KSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIG9wdGlvbiAtIE1pc2NlbGxh bmVvdXMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVz dG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAg ICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAg ICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAg ICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9 VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFi bGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICB1c2Vfc2V0X3Nlc3Npb25fYXV0aD1UcnVlLAorICAgICAgICAgICAgICAgICBleGl0 X29uX2Vycm9yPVRydWUsCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0 b3JlL2pvYi97MH0nLAorICAgICAgICAgICAgICMgQWRkICctLXVzZV9zZXRfc2Vzc2lvbl9hdXRo JyBpbnRvCisgICAgICAgICAgICAgIyBleHBlY3RlZF9jbWRfb3B0cyBvbmNlICMzMzYzIGZpeGVk CisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWV4aXQtb24tZXJyb3InXSwKKyAg ICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0 ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgXQorCisgICAgZGVmIHNl dFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMn XSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAi ZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1h dCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICkKKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0b3Jl LlNlcnZlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuY3VycmVudF91c2Vy JykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5SZXN0b3JlTWVzc2FnZScpCisg ICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuZmlsZW5hbWVfd2l0aF9maWxlX21hbmFn ZXJfcGF0aCcpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuQmF0Y2hQcm9jZXNz JykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udXRpbHMuZHJpdmVyLnBzeWNvcGcyLnNlcnZlcl9tYW5h Z2VyLlNlcnZlck1hbmFnZXIuJworICAgICAgICAgICAnZXhwb3J0X3Bhc3N3b3JkX2VudicpCisg ICAgZGVmIHJ1blRlc3Qoc2VsZiwgZXhwb3J0X3Bhc3N3b3JkX2Vudl9tb2NrLCBiYXRjaF9wcm9j ZXNzX21vY2ssCisgICAgICAgICAgICAgICAgZmlsZW5hbWVfbW9jaywgcmVzdG9yZV9tZXNzYWdl X21vY2ssCisgICAgICAgICAgICAgICAgY3VycmVudF91c2VyX21vY2ssIHNlcnZlcl9tb2NrKToK KyAgICAgICAgY2xhc3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBuYW1lLCBob3N0LCBwb3J0LCBpZCwgdXNlcm5hbWUpOgorICAgICAgICAgICAgICAg IHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAg ICAgICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAorICAgICAgICAgICAgICAgIHNlbGYuaWQgPSBp ZAorICAgICAgICAgICAgICAgIHNlbGYudXNlcm5hbWUgPSB1c2VybmFtZQorCisgICAgICAgIHNl bGYuZGJfbmFtZSA9ICcnCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFyZW50X25vZGVfZGlj dFsic2VydmVyIl1bLTFdWyJzZXJ2ZXJfaWQiXQorCisgICAgICAgIG1vY2tfb2JqID0gVGVzdE1v Y2tTZXJ2ZXIoc2VsZi5jbGFzc19wYXJhbXNbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIG1vY2tfcmVzdWx0ID0gc2VydmVy X21vY2sucXVlcnkuZmlsdGVyX2J5LnJldHVybl92YWx1ZQorICAgICAgICBtb2NrX3Jlc3VsdC5m aXJzdC5yZXR1cm5fdmFsdWUgPSBtb2NrX29iagorCisgICAgICAgIGZpbGVuYW1lX21vY2sucmV0 dXJuX3ZhbHVlID0gc2VsZi5wYXJhbXNbJ2ZpbGUnXQorCisgICAgICAgIGJhdGNoX3Byb2Nlc3Nf bW9jay5zZXRfZW52X3ZhcmlhYmxlcyA9IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92 YWx1ZT1UcnVlCisgICAgICAgICkKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnN0YXJ0ID0g TWFnaWNNb2NrKAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorCisg ICAgICAgIGV4cG9ydF9wYXNzd29yZF9lbnZfbW9jay5yZXR1cm5fdmFsdWUgPSBUcnVlCisKKyAg ICAgICAgc2VydmVyX3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYs IHNlbGYuc2VydmVyX2lkKQorICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9uc2VbImluZm8iXSA9PSAi U2VydmVyIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgZGJfb3duZXIgPSBzZXJ2ZXJfcmVzcG9u c2VbJ2RhdGEnXVsndXNlciddWyduYW1lJ10KKyAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGFi YXNlX3V0aWxzLmdldF9kYl9kYXRhKGRiX293bmVyKQorICAgICAgICAgICAgc2VsZi5kYl9uYW1l ID0gc2VsZi5kYXRhWyduYW1lJ10KKworICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2Vs Zi5zZXJ2ZXJfaWQpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIHJlc3RvcmUgam9iCisgICAgICAg IHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoc2VsZi5wYXJhbXMpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAg ICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJl c3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQor ICAgICAgICBqb2JfaWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAg ICAgc2VsZi5hc3NlcnRUcnVlKHJlc3RvcmVfbWVzc2FnZV9tb2NrLmNhbGxlZCkKKyAgICAgICAg c2VsZi5hc3NlcnRUcnVlKGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsZWQpCisKKyAgICAgICAgaWYg c2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5leHBl Y3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAg ICAgICAgICAgICBvcHQsCisgICAgICAgICAgICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5j YWxsX2FyZ3NfbGlzdFswXVsxXVsnYXJncyddCisgICAgICAgICAgICAgICAgKQorICAgICAgICBp ZiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2Vs Zi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJ bigKKyAgICAgICAgICAgICAgICAgICAgb3B0LAorICAgICAgICAgICAgICAgICAgICBiYXRjaF9w cm9jZXNzX21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXQorICAgICAgICAgICAgICAg ICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0 b3JlX21lc3NhZ2UucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVz dG9yZV9tZXNzYWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MDE3 ZjgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rl c3RfcmVzdG9yZV9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsNzYgQEAKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCitpbXBvcnQgc3lzCisKK2Zyb20gcGdhZG1pbi50b29scy5yZXN0b3JlIGltcG9ydCBS ZXN0b3JlTWVzc2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdl bmVyYXRvcgorCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBp bXBvcnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAor CisKK2NsYXNzIFJlc3RvcmVNZXNzYWdlVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIi VGVzdCB0aGUgUmVzdG9yZU1lc3NhZ2UgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAg ICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCcsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9 NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAg ICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVz dG9yZScsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0t ZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAncmVzdG9yZV9maWxlJywKKyAgICAgICAgICAg ICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsaG9zdCcsCisg ICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICc1NDQ0 JywKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAg ICAgICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisg ICAgICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAn cG9zdGdyZXMnCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0iL3Rl c3RfcGF0aC9wZ19yZXN0b3JlIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0 ZWRfbXNnPSJSZXN0b3JpbmcgYmFja3VwIG9uIHRoZSBzZXJ2ZXIgIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAiJ3Rlc3RfcmVzdG9yZV9zZXJ2ZXIgKGxvY2FsaG9zdDo1NDQ0KScuLi4iLAor ICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPScvdGVzdF9wYXRoL3BnX3Jlc3RvcmUg LS1maWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnInJlc3RvcmVfZmls ZSIgLS1ob3N0ICJsb2NhbGhvc3QiJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICcgLS1wb3J0ICI1NDQ0IiAtLXVzZXJuYW1lICJwb3N0Z3JlcyIgJworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkIC0tZGF0YWJhc2UgInBvc3RncmVzIicK KworICAgICAgICAgKSkKKyAgICBdCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9y ZS5SZXN0b3JlTWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIGRlZiBydW5UZXN0KHNl bGYsIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrKToKKyAgICAgICAgZ2V0X3NlcnZlcl9kZXRhaWxz X21vY2sucmV0dXJuX3ZhbHVlID0gXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ25h bWUnXSxcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLFwKKyAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10KKworICAgICAgICByZXN0b3JlX29iaiA9IFJl c3RvcmVNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3NpZCddLAorICAg ICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10sCisgICAgICAgICAgICAqc2VsZi5j bGFzc19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAgICAgICAgIyBDaGVjayB0aGUgZXhw ZWN0ZWQgbWVzc2FnZSByZXR1cm5lZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3RvcmVf b2JqLm1lc3NhZ2UsIHNlbGYuZXh0ZWN0ZWRfbXNnKQorCisgICAgICAgICMgQ2hlY2sgdGhlIGNv bW1hbmQKKyAgICAgICAgb2JqX2RldGFpbHMgPSByZXN0b3JlX29iai5kZXRhaWxzKHNlbGYuY2xh c3NfcGFyYW1zWydjbWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2Vs Zi5leHBldGNlZF9kZXRhaWxzX2NtZCwgb2JqX2RldGFpbHMpCmRpZmYgLS1naXQgYS93ZWIvcmVn cmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5IGIvd2ViL3JlZ3Jlc3Npb24v cHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91dGlscy5weQppbmRleCAzZTUxN2I2Li42ZjU3YzY3IDEw MDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5 CisrKyBiL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkKQEAg LTIxLDYgKzIxLDggQEAgaW1wb3J0IGNvbmZpZwogaW1wb3J0IHJlZ3Jlc3Npb24KIGZyb20gcmVn cmVzc2lvbiBpbXBvcnQgdGVzdF9zZXR1cAogCitmcm9tIHBnYWRtaW4udXRpbHMucHJlZmVyZW5j ZXMgaW1wb3J0IFByZWZlcmVuY2VzCisKIFNFUlZFUl9HUk9VUCA9IHRlc3Rfc2V0dXAuY29uZmln X2RhdGFbJ3NlcnZlcl9ncm91cCddCiBmaWxlX25hbWUgPSBvcy5wYXRoLnJlYWxwYXRoKF9fZmls ZV9fKQogCkBAIC04Niw3ICs4OCw4IEBAIGRlZiBnZXRfY29uZmlnX2RhdGEoKToKICAgICAgICAg ICAgICAgICAiZGJfcGFzc3dvcmQiOiBzcnZbJ2RiX3Bhc3N3b3JkJ10sCiAgICAgICAgICAgICAg ICAgInJvbGUiOiAiIiwKICAgICAgICAgICAgICAgICAic3NsbW9kZSI6IHNydlsnc3NsbW9kZSdd LAotICAgICAgICAgICAgICAgICJ0YWJsZXNwYWNlX3BhdGgiOiBzcnYuZ2V0KCd0YWJsZXNwYWNl X3BhdGgnLCBOb25lKQorICAgICAgICAgICAgICAgICJ0YWJsZXNwYWNlX3BhdGgiOiBzcnYuZ2V0 KCd0YWJsZXNwYWNlX3BhdGgnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5h cnlfcGF0aHMiOiBzcnYuZ2V0KCdkZWZhdWx0X2JpbmFyeV9wYXRocycsIE5vbmUpCiAgICAgICAg ICAgICB9CiAgICAgICAgICAgICBpZiAnZGJfdHlwZScgaW4gc3J2OgogICAgICAgICAgICAgICAg IGRhdGFbJ2RiX3R5cGUnXSA9IHNydlsnZGJfdHlwZSddCkBAIC00NDUsNiArNDQ4LDEzIEBAIGRl ZiBkZWxldGVfc2VydmVyX3dpdGhfYXBpKHRlc3Rlciwgc2lkKToKICAgICAgICAgdXJsID0gJy9i cm93c2VyL3NlcnZlci9vYmovJyArIHN0cihTRVJWRVJfR1JPVVApICsgIi8iCiAgICAgICAgICMg Q2FsbCBBUEkgdG8gZGVsZXRlIHRoZSBzZXJ2ZXIKICAgICAgICAgcmVzcG9uc2UgPSB0ZXN0ZXIu ZGVsZXRlKHVybCArIHN0cihzaWQpKQorCisgICAgICAgIGNudCA9IDAKKyAgICAgICAgZm9yIHMg aW4gcmVncmVzc2lvbi5wYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXToKKyAgICAgICAgICAgIGlm IHNbJ3NlcnZlcl9pZCddID09IGludChzaWQpOgorICAgICAgICAgICAgICAgIGRlbCByZWdyZXNz aW9uLnBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdW2NudF0KKyAgICAgICAgICAgIGNudCArPSAx CisKICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZp bGU9c3lzLnN0ZGVycikKIApAQCAtNTk2LDYgKzYwNiw2NCBAQCBkZWYgZ2V0X2RiX3NlcnZlcihz aWQpOgogICAgIHJldHVybiBjb25uZWN0aW9uCiAKIAorZGVmIHNldF9wcmVmZXJlbmNlKGRlZmF1 bHRfYmluYXJ5X3BhdGgpOgorICAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoY29uZmlnLlRFU1Rf U1FMSVRFX1BBVEgpCisgICAgY3VyID0gY29ubi5jdXJzb3IoKQorCisgICAgcGVyZiA9IFByZWZl cmVuY2VzLm1vZHVsZSgncGF0aHMnKQorICAgIHBnX3BhdGhfcHJlZiA9IHBlcmYucHJlZmVyZW5j ZSgncGdfYmluX2RpcicpCisKKyAgICB1c2VyX3ByZWYgPSBjdXIuZXhlY3V0ZSgKKyAgICAgICAg J1NFTEVDVCBwaWQsIHVpZCBGUk9NIHVzZXJfcHJlZmVyZW5jZXMgd2hlcmUgcGlkPSVzJyAlIHBn X3BhdGhfcHJlZi5waWQKKyAgICApCisgICAgdXNlcl9wcmVmID0gdXNlcl9wcmVmLmZldGNob25l KCkKKworICAgIGlmIHVzZXJfcHJlZjoKKyAgICAgICAgY3VyLmV4ZWN1dGUoJ1VQREFURSB1c2Vy X3ByZWZlcmVuY2VzIFNFVCB2YWx1ZSA9ID8gV0hFUkUgcGlkID0gPycsCisgICAgICAgICAgICAg ICAgICAgIChkZWZhdWx0X2JpbmFyeV9wYXRoWydwZyddLCBwZ19wYXRoX3ByZWYucGlkKSkKKyAg ICBlbHNlOgorICAgICAgICBwZ19wcmVmX2RldGFpbHMgPSAocGdfcGF0aF9wcmVmLnBpZCwgMSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BnJ10pCisg ICAgICAgIGN1ci5leGVjdXRlKCdJTlNFUlQgSU5UTyB1c2VyX3ByZWZlcmVuY2VzKHBpZCwgdWlk LCB2YWx1ZSknCisgICAgICAgICAgICAgICAgICAgICcgVkFMVUVTICg/LD8sPyknLCBwZ19wcmVm X2RldGFpbHMpCisKKyAgICBwcGFzX3BhdGhfcHJlZiA9IHBlcmYucHJlZmVyZW5jZSgncHBhc19i aW5fZGlyJykKKworICAgIHVzZXJfcHJlZiA9IGN1ci5leGVjdXRlKAorICAgICAgICAnU0VMRUNU IHBpZCwgdWlkIEZST00gdXNlcl9wcmVmZXJlbmNlcyB3aGVyZSBwaWQ9JXMnICUKKyAgICAgICAg cHBhc19wYXRoX3ByZWYucGlkCisgICAgKQorICAgIHVzZXJfcHJlZiA9IHVzZXJfcHJlZi5mZXRj aG9uZSgpCisKKyAgICBpZiB1c2VyX3ByZWY6CisgICAgICAgIGN1ci5leGVjdXRlKCdVUERBVEUg dXNlcl9wcmVmZXJlbmNlcyBTRVQgdmFsdWUgPSA/IFdIRVJFIHBpZCA9ID8gJywKKyAgICAgICAg ICAgICAgICAgICAgKGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BwYXMnXSwgcHBhc19wYXRoX3ByZWYu cGlkKSkKKyAgICBlbHNlOgorICAgICAgICBwcGFzX3ByZWZfZGV0YWlscyA9IChwcGFzX3BhdGhf cHJlZi5waWQsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfYmluYXJ5 X3BhdGhbJ3BwYXMnXSkKKyAgICAgICAgY3VyLmV4ZWN1dGUoJ0lOU0VSVCBJTlRPIHVzZXJfcHJl ZmVyZW5jZXMocGlkLCB1aWQsIHZhbHVlKScKKyAgICAgICAgICAgICAgICAgICAgJyBWQUxVRVMg KD8sPyw/KScsIHBwYXNfcHJlZl9kZXRhaWxzKQorCisgICAgZ3BkYl9wYXRoX3ByZWYgPSBwZXJm LnByZWZlcmVuY2UoJ2dwZGJfYmluX2RpcicpCisKKyAgICB1c2VyX3ByZWYgPSBjdXIuZXhlY3V0 ZSgKKyAgICAgICAgJ1NFTEVDVCBwaWQsIHVpZCBGUk9NIHVzZXJfcHJlZmVyZW5jZXMgd2hlcmUg cGlkPSVzJyAlCisgICAgICAgIGdwZGJfcGF0aF9wcmVmLnBpZAorICAgICkKKyAgICB1c2VyX3By ZWYgPSB1c2VyX3ByZWYuZmV0Y2hvbmUoKQorCisgICAgaWYgdXNlcl9wcmVmOgorICAgICAgICBj dXIuZXhlY3V0ZSgnVVBEQVRFIHVzZXJfcHJlZmVyZW5jZXMgU0VUIHZhbHVlID0gPyBXSEVSRSBw aWQgPSA/ICcsCisgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0X2JpbmFyeV9wYXRoWydncGRi J10sIGdwZGJfcGF0aF9wcmVmLnBpZCkpCisgICAgZWxzZToKKyAgICAgICAgZ3BkYl9wcmVmX2Rl dGFpbHMgPSAoZ3BkYl9wYXRoX3ByZWYucGlkLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkZWZhdWx0X2JpbmFyeV9wYXRoWydncGRiJ10pCisgICAgICAgIGN1ci5leGVjdXRlKCdJ TlNFUlQgSU5UTyB1c2VyX3ByZWZlcmVuY2VzKHBpZCwgdWlkLCB2YWx1ZSknCisgICAgICAgICAg ICAgICAgICAgICcgVkFMVUVTICg/LD8sPyknLCBncGRiX3ByZWZfZGV0YWlscykKKworICAgIGNv bm4uY29tbWl0KCkKKworCiBkZWYgcmVtb3ZlX2RiX2ZpbGUoKToKICAgICAiIiJUaGlzIGZ1bmN0 aW9uIHVzZSB0byByZW1vdmUgU1FMaXRlIERCIGZpbGUiIiIKICAgICBpZiBvcy5wYXRoLmlzZmls ZShjb25maWcuVEVTVF9TUUxJVEVfUEFUSCk6CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9y dW50ZXN0cy5weSBiL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CmluZGV4IGQ3ODY2OTIuLjI2 YjI1YzcgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CisrKyBiL3dlYi9y ZWdyZXNzaW9uL3J1bnRlc3RzLnB5CkBAIC0xMTQsNiArMTE0LDkgQEAgdGVzdF9jbGllbnQgPSBh cHAudGVzdF9jbGllbnQoKQogZHJpdmVyID0gTm9uZQogYXBwX3N0YXJ0ZXIgPSBOb25lCiBoYW5k bGVfY2xlYW51cCA9IE5vbmUKK2FwcC5QR0FETUlOX1JVTlRJTUUgPSBUcnVlCitpZiBjb25maWcu U0VSVkVSX01PREUgaXMgVHJ1ZToKKyAgICBhcHAuUEdBRE1JTl9SVU5USU1FID0gRmFsc2UKIAog c2V0YXR0cih1bml0X3Rlc3QucmVzdWx0LlRlc3RSZXN1bHQsICJwYXNzZWQiLCBbXSkKIApAQCAt MjM0LDcgKzIzNyw2IEBAIGRlZiBnZXRfdGVzdF9tb2R1bGVzKGFyZ3VtZW50cyk6CiAgICAgIyBT b3J0IG1vZHVsZSBsaXN0IHNvIHRoYXQgdGVzdCBzdWl0ZSBleGVjdXRlcyB0aGUgdGVzdCBjYXNl cyBzZXF1ZW50aWFsbHkKICAgICBtb2R1bGVfbGlzdCA9IFRlc3RzR2VuZXJhdG9yUmVnaXN0cnku cmVnaXN0cnkuaXRlbXMoKQogICAgIG1vZHVsZV9saXN0ID0gc29ydGVkKG1vZHVsZV9saXN0LCBr ZXk9bGFtYmRhIG1vZHVsZV90dXBsZTogbW9kdWxlX3R1cGxlWzBdKQotCiAgICAgcmV0dXJuIG1v ZHVsZV9saXN0CiAKIApAQCAtMzkzLDYgKzM5NSw5IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5f Xyc6CiAgICAgICAgICAgICAjIENyZWF0ZSB0ZXN0IHNlcnZlcgogICAgICAgICAgICAgc2VydmVy X2luZm9ybWF0aW9uID0gdGVzdF91dGlscy5jcmVhdGVfcGFyZW50X3NlcnZlcl9ub2RlKHNlcnZl cikKIAorICAgICAgICAgICAgaWYgc2VydmVyWydkZWZhdWx0X2JpbmFyeV9wYXRocyddIGlzIG5v dCBOb25lOgorICAgICAgICAgICAgICAgIHRlc3RfdXRpbHMuc2V0X3ByZWZlcmVuY2Uoc2VydmVy WydkZWZhdWx0X2JpbmFyeV9wYXRocyddKQorCiAgICAgICAgICAgICBzdWl0ZSA9IGdldF9zdWl0 ZSh0ZXN0X21vZHVsZV9saXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jbGllbnQsCmRpZmYgLS1naXQg YS93ZWIvcmVncmVzc2lvbi90ZXN0X2NvbmZpZy5qc29uLmluIGIvd2ViL3JlZ3Jlc3Npb24vdGVz dF9jb25maWcuanNvbi5pbgppbmRleCBlYmMxNDY2Li4xNWIxMzNhIDEwMDY0NAotLS0gYS93ZWIv cmVncmVzc2lvbi90ZXN0X2NvbmZpZy5qc29uLmluCisrKyBiL3dlYi9yZWdyZXNzaW9uL3Rlc3Rf Y29uZmlnLmpzb24uaW4KQEAgLTIzLDcgKzIzLDEyIEBACiAgICAgICAibWFpbnRlbmFuY2VfZGIi OiAicG9zdGdyZXMiLAogICAgICAgInNzbG1vZGUiOiAicHJlZmVyIiwKICAgICAgICJ0YWJsZXNw YWNlX3BhdGgiOiAiIiwKLSAgICAgICJlbmFibGVkIjogdHJ1ZQorICAgICAgImVuYWJsZWQiOiB0 cnVlLAorICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhzIjogeworICAgICAgICAicGciOiAiL29w dC9Qb3N0Z3JlU1FMLzkuNC9iaW4vIiwKKyAgICAgICAgInBwYXMiOiAiL29wdC9lZGIvYXMxMC9i aW4vIiwKKyAgICAgICAgImdwZGIiOiAiIgorICAgICAgfQogICAgIH0KICAgXSwKICAgInNlcnZl cl91cGRhdGVfZGF0YSI6IFsK --000000000000253ed0056ea8f493--