<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>184914</bug_id>
          
          <creation_ts>2018-04-24 06:31:33 -0700</creation_ts>
          <short_desc>Export changes to web-platform-test as part of the webkit-patch upload workflow</short_desc>
          <delta_ts>2018-05-29 14:30:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>185750</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brendan McLoughlin">brendan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>amal</cc>
    
    <cc>brendan</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>lforschler</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1417139</commentid>
    <comment_count>0</comment_count>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-04-24 06:31:33 -0700</bug_when>
    <thetext>Export changes to web-platform-test as part of the webkit-patch upload workflow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417141</commentid>
    <comment_count>1</comment_count>
      <attachid>338645</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-04-24 06:46:39 -0700</bug_when>
    <thetext>Created attachment 338645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417145</commentid>
    <comment_count>2</comment_count>
      <attachid>338648</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-04-24 07:07:53 -0700</bug_when>
    <thetext>Created attachment 338648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417538</commentid>
    <comment_count>3</comment_count>
      <attachid>338734</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-04-25 07:30:46 -0700</bug_when>
    <thetext>Created attachment 338734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417995</commentid>
    <comment_count>4</comment_count>
      <attachid>338734</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-25 23:42:48 -0700</bug_when>
    <thetext>Comment on attachment 338734
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=338734&amp;action=review

&gt; Tools/Scripts/webkitpy/tool/commands/upload.py:289
&gt; +        steps.W3CTestExport,

We should rename this to WPTChangeExport since this is all about web-platform-tests,
and doesn&apos;t apply to other W3C test repositories.

&gt; Tools/Scripts/webkitpy/tool/steps/w3ctestexport.py:46
&gt; +        args = []

The initial declaration of this variable should contain --bug, and other options that area always specified
instead of adding each one separately down below.

&gt; Tools/Scripts/webkitpy/tool/steps/w3ctestexport.py:52
&gt; +        bug_id = state.get(&quot;bug_id&quot;)
&gt; +        if not bug_id:

Please check this condition first.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:53
&gt; +    &quot;&quot;&quot;the W3cChangeset class is responsible for deteching changes in
&gt; +    the web-platform-test directory and generating patches exporting
&gt; +    those changes.
&gt; +    &quot;&quot;&quot;

We don&apos;t add these comments. If we find ourselves needing to a comment like this,
it&apos;s a good indication that the class name isn&apos;t descriptive enough. Please remove the comment.
I would call this class WebPlatformTestPatchGenerator instead.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:67
&gt; +        git_commit = &quot;HEAD....&quot; if not self._options.git_commit else self._options.git_commit + &quot;~1..&quot; + self._options.git_commit
&gt; +        patch_data = self._host.scm().create_patch(git_commit, [WEBKIT_WPT_DIR])

This assumes scm is a git. This is simply not true for many WebKit contributors.
r- because of this. Use scm.create_patch instead.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:73
&gt; +        patch_file = &apos;./patch.temp.&apos; + str(time.clock())

Please create a temporary file in a temporary directory via self._filesystem.open_binary_tempfile
r- because of this as well.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:139
&gt; +        &quot;&quot;&quot;
&gt; +        Ask the user to provide a username and token if the
&gt; +        --interactive flag is passed and username and token
&gt; +        are not already set.
&gt; +        &quot;&quot;&quot;

This comment repeats the code below. Please remove.
In general, we don&apos;t add these kinds of &quot;what&quot; comment in WebKit.
We only add &quot;why&quot; comments.
r- due to this and the earlier class-level &quot;what&quot; comments.
Also, please use https://trac.webkit.org/browser/webkit/trunk/Tools/Scripts/webkitpy/common/system/user.py

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:142
&gt; +            self._username = self._git.local_config(&apos;github.username&apos;).rstrip()

Please use https://trac.webkit.org/browser/webkit/trunk/Tools/Scripts/webkitpy/common/net/credentials.py
and read username/password from KeyChain as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421254</commentid>
    <comment_count>5</comment_count>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-07 05:37:55 -0700</bug_when>
    <thetext>Thanks for the feedback Ryosuke. I was out of town last week but I&apos;m now back and will address your comments today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422766</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-10 10:47:55 -0700</bug_when>
    <thetext>&gt; &gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:67
&gt; &gt; +        git_commit = &quot;HEAD....&quot; if not self._options.git_commit else self._options.git_commit + &quot;~1..&quot; + self._options.git_commit
&gt; &gt; +        patch_data = self._host.scm().create_patch(git_commit, [WEBKIT_WPT_DIR])
&gt; 
&gt; This assumes scm is a git. This is simply not true for many WebKit
&gt; contributors.
&gt; r- because of this. Use scm.create_patch instead.

This code is already using scm.create_patch so it should work with SVN (although I never tested it).

&gt; &gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:142
&gt; &gt; +            self._username = self._git.local_config(&apos;github.username&apos;).rstrip()
&gt; 
&gt; Please use
&gt; https://trac.webkit.org/browser/webkit/trunk/Tools/Scripts/webkitpy/common/
&gt; net/credentials.py
&gt; and read username/password from KeyChain as well.

That would indeed be good to do.
That said, I would separate the integration refactoring from adding additional support like reading from KeyChain.
Seems fine to do those in parallel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423178</commentid>
    <comment_count>7</comment_count>
      <attachid>340201</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-11 10:47:43 -0700</bug_when>
    <thetext>Created attachment 340201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423185</commentid>
    <comment_count>8</comment_count>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-11 10:56:36 -0700</bug_when>
    <thetext>I&apos;ve updated this patch based on the provided feedback. I&apos;m going to take Youenn&apos;s suggestion and make a separate patch to move storing the github username and token into the KeyChain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423595</commentid>
    <comment_count>9</comment_count>
      <attachid>340201</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-14 07:38:28 -0700</bug_when>
    <thetext>Comment on attachment 340201
Patch

Looks almost ready to go for me.
A couple of neats and some questions below.
Btw, I created a test bugzilla entry on https://bugs.webkit.org/show_bug.cgi?id=185610.
It worked like a charm.

View in context: https://bugs.webkit.org/attachment.cgi?id=340201&amp;action=review

&gt; Tools/ChangeLog:6
&gt; +        Reviewed by NOBODY (OOPS!).

That seems really nice.
I wonder whether we should provide the possibility to just create a remote branch but not create the PR right away.
The main advantage I see is that in that case, you do not have to provide the OAuth token.
Maybe, if the OAuth token is not provided, we could still create the remote branch?

&gt; Tools/Scripts/webkitpy/tool/steps/wptchangeexport.py:1
&gt; +# Copyright (C) 2018 Apple Inc. All rights reserved.

I think you have the right to put your own copyright.

&gt; Tools/Scripts/webkitpy/tool/steps/wptchangeexport.py:13
&gt; +#     * Neither the name of Google Inc. nor the names of its

Probably Apple Inc. here instead.
Also we now use a two clause license like in test_exporter.py.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:128
&gt; +    def _ensure_username_and_token(self, options):

Can we add a FIXME to use the keychain?

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:362
&gt; +    parser.add_argument(&apos;-i&apos;, &apos;--interactive&apos;, dest=&apos;interactive_mode&apos;, action=&apos;store_true&apos;, default=False, help=&apos;Prompts the user for their github credentials and asks for confirmation before exporting the changes.&apos;)

Would it make sense to set the default value to true, or to add a no-interactive mode?

I also wonder whether it would make sense to ask user whether it is fine to store the credentials.
I think we might want to do that once we will be using the key chain.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:395
&gt; +    host = host or Host()

Could be inlined maybe.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:402
&gt; +        _log.info(&apos;No changes to upstream. Exiting...&apos;)

This is only style but we usually do early return.
Something like:
if not wpt_patch_generator.has_wpt_changes():
    if not silence_noop:
        log.info(&apos;No changes to upstream. Exiting...&apos;)
    return;

test_exporter = ...

Maybe silent_noop should be inverted to be something like log_if_nowptchange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423601</commentid>
    <comment_count>10</comment_count>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-14 07:46:45 -0700</bug_when>
    <thetext>
&gt; I wonder whether we should provide the possibility to just create a remote branch but not create the PR right away.
&gt; The main advantage I see is that in that case, you do not have to provide the OAuth token.
&gt; Maybe, if the OAuth token is not provided, we could still create the remote branch?

Sounds like a good idea. I&apos;ll try it out.

&gt; Can we add a FIXME to use the keychain?

Will do.

&gt; Would it make sense to set the default value to true, or to add a no-interactive mode?

I was originally trying to avoid changing the existing behavior but a no-interactive seems like a better option.


&gt; This is only style but we usually do early return.

I&apos;ll update this to use the early return.


&gt; Maybe silent_noop should be inverted to be something like log_if_nowptchange.
I like the log_if_nowptchange suggestion. I&apos;ll make that change too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423744</commentid>
    <comment_count>11</comment_count>
      <attachid>340348</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-14 13:26:02 -0700</bug_when>
    <thetext>Created attachment 340348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423756</commentid>
    <comment_count>12</comment_count>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-14 13:49:10 -0700</bug_when>
    <thetext>I&apos;ve updated the workflow so it now prompts the user to check if they would like to export the patch before asking them for their github username/token. If a user doesn&apos;t provide a token when prompted it creates the remote fork but does not attempt to open a pull request. Youenn, should I make the prompt for the token be more upfront about this behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423952</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-15 00:11:48 -0700</bug_when>
    <thetext>(In reply to Brendan McLoughlin from comment #12)
&gt; I&apos;ve updated the workflow so it now prompts the user to check if they would
&gt; like to export the patch before asking them for their github username/token.

Sounds good.

&gt; If a user doesn&apos;t provide a token when prompted it creates the remote fork
&gt; but does not attempt to open a pull request. Youenn, should I make the
&gt; prompt for the token be more upfront about this behavior?

I&apos;ll try the new workflow later today but this seems fine to me, as long as it is clear that not providing the OAuth token will remove the ability to create the PR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423953</commentid>
    <comment_count>14</comment_count>
      <attachid>340348</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-15 00:17:51 -0700</bug_when>
    <thetext>Comment on attachment 340348
Patch

Some minor comments.
I&apos;ll try the workflow later today before r+ing it.

View in context: https://bugs.webkit.org/attachment.cgi?id=340348&amp;action=review

&gt; Tools/Scripts/webkitpy/tool/commands/upload.py:539
&gt; +    help_text = &quot;Opens a pull request to sync any changes in the LayoutTests/imported/w3c/web-platform-tests directory&quot;

s/sync/synchronize

&gt; Tools/Scripts/webkitpy/tool/steps/wptchangeexport.py:51
&gt; +        message = &apos;web-platform-tests changes detected. Would you like to create a pull-request to the WPT github repo now?&apos;

Maybe rephrase to something like: &quot;Would you like to export the changes and/or create a PR to the WPT GitHub repository?:

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:125
&gt; +        return self._host.user.prompt_password(&apos;Enter github OAuth token: &apos;)

s/github/GitHub/
Maybe make it more explicit that the token is for the creation of the PR.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:130
&gt; +        return self._host.user.prompt(&apos;Enter github username: &apos;)

s/github/your GitHub/

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:250
&gt; +            _log.info(&apos;Skipping pull request because OAuth token was not provided. You can open the pull request manually using the branch &apos; + self.wpt_fork_branch_github_url)

OK, message seems clear to me.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:399
&gt; +    wpt_patch_generator = WebPlatformTestPatchGenerator(host, options)

Might not be worth creating twice the same wpt_patch_generator.
Maybe there is a way to improve this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423954</commentid>
    <comment_count>15</comment_count>
      <attachid>340348</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-15 00:17:53 -0700</bug_when>
    <thetext>Comment on attachment 340348
Patch

Some minor comments.
I&apos;ll try the workflow later today before r+ing it.

View in context: https://bugs.webkit.org/attachment.cgi?id=340348&amp;action=review

&gt; Tools/Scripts/webkitpy/tool/commands/upload.py:539
&gt; +    help_text = &quot;Opens a pull request to sync any changes in the LayoutTests/imported/w3c/web-platform-tests directory&quot;

s/sync/synchronize

&gt; Tools/Scripts/webkitpy/tool/steps/wptchangeexport.py:51
&gt; +        message = &apos;web-platform-tests changes detected. Would you like to create a pull-request to the WPT github repo now?&apos;

Maybe rephrase to something like: &quot;Would you like to export the changes and/or create a PR to the WPT GitHub repository?:

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:125
&gt; +        return self._host.user.prompt_password(&apos;Enter github OAuth token: &apos;)

s/github/GitHub/
Maybe make it more explicit that the token is for the creation of the PR.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:130
&gt; +        return self._host.user.prompt(&apos;Enter github username: &apos;)

s/github/your GitHub/

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:250
&gt; +            _log.info(&apos;Skipping pull request because OAuth token was not provided. You can open the pull request manually using the branch &apos; + self.wpt_fork_branch_github_url)

OK, message seems clear to me.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:399
&gt; +    wpt_patch_generator = WebPlatformTestPatchGenerator(host, options)

Might not be worth creating twice the same wpt_patch_generator.
Maybe there is a way to improve this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424069</commentid>
    <comment_count>16</comment_count>
      <attachid>340423</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-15 11:30:37 -0700</bug_when>
    <thetext>Created attachment 340423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424072</commentid>
    <comment_count>17</comment_count>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-15 11:39:35 -0700</bug_when>
    <thetext>I updated the wording of most of the messaging based on your feedback Youenn. 

I also refactored the TestExporter class to lazily instantiate many of
the properties that have side effects. This made it possible to get
rid of the WebPlatformTestPatchGenerator class because I originally
introduced that class to be able to check if there were WPT changes
before instantiating the TestExporter class with the side effect of
prompting the user for their github username / token and cloning the
web-platform-test github repo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424079</commentid>
    <comment_count>18</comment_count>
      <attachid>340424</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-15 11:58:14 -0700</bug_when>
    <thetext>Created attachment 340424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424532</commentid>
    <comment_count>19</comment_count>
      <attachid>340424</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-16 16:10:31 -0700</bug_when>
    <thetext>Comment on attachment 340424
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=340424&amp;action=review

&gt; Tools/Scripts/webkitpy/tool/steps/wptchangeexport.py:52
&gt; +        message = &apos;Would you like to export the web-platform-tests changes and/or create a PR to the WPT GitHub repository?&apos;

Sorry to change my mind.
I think that we should phrase it as: &quot;Would you like to export the web-platform-tests changes to a WPT GitHub repository?&quot;
&quot; and/or ...&quot; is not very clear.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:140
&gt; +        return bool(self._create_patch())

We will probably create twice the patch, once when we will check for changes and once when writing the git patch file.
Maybe we should store the patch data in TestExporter.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:195
&gt; +        # validate token and username

Comment is probably not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424699</commentid>
    <comment_count>20</comment_count>
      <attachid>340579</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-17 07:01:08 -0700</bug_when>
    <thetext>Created attachment 340579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424701</commentid>
    <comment_count>21</comment_count>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-17 07:05:43 -0700</bug_when>
    <thetext>&gt; I think that we should phrase it as: &quot;Would you like to export the web-platform-tests changes to a WPT GitHub repository?&quot;
&quot; and/or ...&quot; is not very clear.

I&apos;ve updated this line to use your suggestion.

&gt; We will probably create twice the patch, once when we will check for changes and once when writing the git patch file.
&gt; Maybe we should store the patch data in TestExporter.

I changed this function into a property with @memoized so the result gets cached the first time it is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424826</commentid>
    <comment_count>22</comment_count>
      <attachid>340579</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-17 11:29:06 -0700</bug_when>
    <thetext>Comment on attachment 340579
Patch

Clearing flags on attachment: 340579

Committed r231912: &lt;https://trac.webkit.org/changeset/231912&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424827</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-17 11:29:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424829</commentid>
    <comment_count>24</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-17 11:30:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/40338343&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424919</commentid>
    <comment_count>25</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-17 14:34:16 -0700</bug_when>
    <thetext>Brendan, I updated my build and did changes to -expected.txt files in LayoutTests/imported/w3c/web-platform-tests.
It was then suggesting me to export the changes to WPT GitHub, while it should not.
Can you look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424922</commentid>
    <comment_count>26</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-17 14:39:00 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #25)
&gt; Brendan, I updated my build and did changes to -expected.txt files in
&gt; LayoutTests/imported/w3c/web-platform-tests.
&gt; It was then suggesting me to export the changes to WPT GitHub, while it
&gt; should not.
&gt; Can you look at this?

The issue is that we are currently filtering out expected.txt files at the time we do apply_mail_patch.
Maybe we could do it at time of creation of the patch instead.
Or we could update our heuristic to check for lines starting with diff and without &apos;-expected.txt&apos; in it.

If it is difficult to fix it quickly, we can roll the patch out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424929</commentid>
    <comment_count>27</comment_count>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-17 14:47:15 -0700</bug_when>
    <thetext>I will look into filtering out expected files when the patch is created. If I think it&apos;s going to take longer then an hour I&apos;ll let you know so we can back out this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424954</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-17 15:10:56 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 185750</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428189</commentid>
    <comment_count>29</comment_count>
      <attachid>341510</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-29 13:38:20 -0700</bug_when>
    <thetext>Created attachment 341510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428197</commentid>
    <comment_count>30</comment_count>
      <attachid>341514</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-29 13:47:54 -0700</bug_when>
    <thetext>Created attachment 341514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428198</commentid>
    <comment_count>31</comment_count>
      <attachid>341514</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-29 13:52:04 -0700</bug_when>
    <thetext>Comment on attachment 341514
Patch

LGTM.
Is it ready for cq+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428203</commentid>
    <comment_count>32</comment_count>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-05-29 14:01:14 -0700</bug_when>
    <thetext>Thanks Youenn. I think it is ready for cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428211</commentid>
    <comment_count>33</comment_count>
      <attachid>341514</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-29 14:30:03 -0700</bug_when>
    <thetext>Comment on attachment 341514
Patch

Clearing flags on attachment: 341514

Committed r232274: &lt;https://trac.webkit.org/changeset/232274&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428212</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-29 14:30:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338645</attachid>
            <date>2018-04-24 06:46:39 -0700</date>
            <delta_ts>2018-04-24 07:07:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184914-20180424094637.patch</filename>
            <type>text/plain</type>
            <size>23814</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTE2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTg2Y2U2NjIzNDM5NDE1ZjE2Y2JmYmZkY2Y0MjAyYTdj
OGRmNWZhOC4uMWVlYTk2MTg1MGVjODlhNzI0MzI5NTMxMWU5MDZlYjcyNzE1MjQ1MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4
IEBACisyMDE4LTA0LTI0ICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgRXhwb3J0IGNoYW5nZXMgdG8gd2ViLXBsYXRmb3JtLXRlc3QgYXMgcGFydCBv
ZiB0aGUgd2Via2l0LXBhdGNoIHVwbG9hZCB3b3JrZmxvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
d2ViX21vY2sucHk6CisgICAgICAgIChNb2NrUmVzcG9uc2UuX19pbml0X18pOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9sb2d1dGlscy5weToKKyAgICAgICAgKGNv
bmZpZ3VyZV9sb2dnaW5nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5OgorICAgICAgICAoVXBsb2FkKToKKyAgICAgICAgKENyZWF0ZUJ1Zy5leGVj
dXRlKToKKyAgICAgICAgKFczQ1Rlc3RFeHBvcnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvdzNjdGVzdGV4cG9ydC5weTogQWRkZWQuCisgICAgICAgIChXM0NUZXN0RXhwb3J0
KToKKyAgICAgICAgKFczQ1Rlc3RFeHBvcnQub3B0aW9ucyk6CisgICAgICAgIChXM0NUZXN0RXhw
b3J0LnJ1bik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHk6CisgICAgICAgIChX
M2NDaGFuZ2VzZXQpOgorICAgICAgICAoVzNjQ2hhbmdlc2V0Ll9faW5pdF9fKToKKyAgICAgICAg
KFczY0NoYW5nZXNldC5oYXNfd3B0X2NoYW5nZXMpOgorICAgICAgICAoVzNjQ2hhbmdlc2V0Ll9j
cmVhdGVfcGF0Y2gpOgorICAgICAgICAoVzNjQ2hhbmdlc2V0LmNyZWF0ZV9naXRfcGF0Y2hfZmls
ZSk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdEV4cG9y
dGVyLl9wcm9tcHRfZm9yX3Rva2VuKToKKyAgICAgICAgKFRlc3RFeHBvcnRlcik6CisgICAgICAg
IChUZXN0RXhwb3J0ZXIuX3Byb21wdF9mb3JfdXNlcm5hbWUpOgorICAgICAgICAoVGVzdEV4cG9y
dGVyLl9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2VuKToKKyAgICAgICAgKFRlc3RFeHBvcnRlci5f
dmFsaWRhdGVfYW5kX3NhdmVfdG9rZW4pOgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNyZWF0ZV9n
aXRfcGF0Y2gpOgorICAgICAgICAoVGVzdEV4cG9ydGVyLl9jb25maXJtX2V4cG9ydCk6CisgICAg
ICAgIChUZXN0RXhwb3J0ZXIuZG9fZXhwb3J0KToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHk6Cisg
ICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0KToKKyAgICAgICAgKFRlc3RFeHBv
cnRlclRlc3QudGVzdF9leHBvcnRfd2l0aF9zcGVjaWZpY19icmFuY2gpOgorICAgICAgICAoVGVz
dEV4cG9ydGVyVGVzdCk6CisgICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X2lu
dGVyYWN0aXZlX21vZGUpOgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0X2V4cG9ydF9p
bnZhbGlkX3Rva2VuKToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVzdF9leHBvcnRfd3Jv
bmdfdG9rZW4pOgorCiAyMDE4LTA0LTIzICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9A
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFRlc3RTU0wgZmFpbHMgZHVlIHRvIGFk
ZGl0aW9uYWwgVExTIGVycm9ycyByZXR1cm5lZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggOTMzZGIyZDA4NTIwZDg2MGM1MjgzZjdhZjQ5
NmZhMWI5NDIxNTMwMy4uZjAwODE5NGI2NWJhZWY3NTU1YzA0MmQ1NzY5Mzc5ZGEzNzMwYmFjNiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CkBA
IC0yODYsNiArMjg2LDcgQEAgY2xhc3MgVXBsb2FkKEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21t
YW5kKToKICAgICAgICAgc3RlcHMuRW5zdXJlQnVnSXNPcGVuQW5kQXNzaWduZWQsCiAgICAgICAg
IHN0ZXBzLlBvc3REaWZmLAogICAgICAgICBzdGVwcy5TdWJtaXRUb0VXUywKKyAgICAgICAgc3Rl
cHMuVzNDVGVzdEV4cG9ydCwKICAgICBdCiAgICAgbG9uZ19oZWxwID0gIiIidXBsb2FkIHVwbG9h
ZHMgdGhlIGN1cnJlbnQgZGlmZiB0byBidWdzLndlYmtpdC5vcmcuCiAgICAgSWYgbm8gYnVnIGlk
IGlzIHByb3ZpZGVkLCB1cGxvYWQgd2lsbCBjcmVhdGUgYSBidWcuCkBAIC01MzEsMyArNTMyLDI1
IEBAIGNsYXNzIENyZWF0ZUJ1ZyhDb21tYW5kKToKICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2J1
Z19mcm9tX2NvbW1pdChvcHRpb25zLCBhcmdzLCB0b29sKQogICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgc2VsZi5jcmVhdGVfYnVnX2Zyb21fcGF0Y2gob3B0aW9ucywgYXJncywgdG9vbCkKKwor
CitjbGFzcyBXM0NUZXN0RXhwb3J0KEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21tYW5kKToKKyAg
ICBuYW1lID0gInczYy10ZXN0LWV4cG9ydCIKKyAgICBoZWxwX3RleHQgPSAiT3BlbnMgYSBwdWxs
IHJlcXVlc3QgdG8gc3luYyBhbnkgY2hhbmdlcyBpbiB0aGUgTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkiCisgICAgYXJndW1lbnRfbmFtZXMgPSAi
W0JVR0lEXSIKKyAgICBzdGVwcyA9IFsKKyAgICAgICAgc3RlcHMuVzNDVGVzdEV4cG9ydCwKKyAg
ICBdCisKKyAgICBsb25nX2hlbHAgPSAiIiJPcGVucyBhIHB1bGwgcmVxdWVzdCB0byB0aGUgdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cworICAgIGdpdGh1YiByZXBvIGZvciBhbnkgY2hhbmdlcyBpbiB0
aGUKKyAgICBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzIGRpcmVj
dG9yeS4gVGhpcyBzdGVwCisgICAgd2lsbCBub29wIGlmIHRoZXJlIGFyZSBubyBjaGFuZ2VzIGlu
IHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMgZGlyZWN0b3J5LgorICAgIFRoZSB1c2VyIHdpbGwgYmUg
cHJvbXB0ZWQgdG8gcHJvdmlkZSBhIGdpdGh1YiB1c2VybmFtZSBhbmQgT0F1dGggdG9rZW4KKyAg
ICB0aGUgZmlyc3QgdGltZSB0aGlzIGlzIHJ1bi4KKyAgICAiIiIKKworICAgIGRlZiBfcHJlcGFy
ZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgc3RhdGUgPSB7fQor
ICAgICAgICBzdGF0ZVsiYnVnX2lkIl0gPSBzZWxmLl9idWdfaWQob3B0aW9ucywgYXJncywgdG9v
bCwgc3RhdGUpCisgICAgICAgIHJldHVybiBzdGF0ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL19faW5pdF9fLnB5CmluZGV4IGYzYzE3MGUzMTJlZGQ3ODY0ZjlkODVhZDlj
Nzc1OWYyYmM5MWM5M2YuLjE0YjI0NWUyN2Y5NTYwZDdmZTY2ZWVjM2JjMjg4OGJkNjk3NDg0MGQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKQEAg
LTY2LDMgKzY2LDQgQEAgZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnVwZGF0ZSBpbXBvcnQgVXBk
YXRlCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdl
ciBpbXBvcnQgVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlcgogZnJvbSB3ZWJraXRweS50b29s
LnN0ZXBzLnZhbGlkYXRlY2hhbmdlbG9ncyBpbXBvcnQgVmFsaWRhdGVDaGFuZ2VMb2dzCiBmcm9t
IHdlYmtpdHB5LnRvb2wuc3RlcHMudmFsaWRhdGVyZXZpZXdlciBpbXBvcnQgVmFsaWRhdGVSZXZp
ZXdlcgorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnczY3Rlc3RleHBvcnQgaW1wb3J0IFczQ1Rl
c3RFeHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy93
M2N0ZXN0ZXhwb3J0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3czY3Rl
c3RleHBvcnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2MyZWMzZmU2Njk0YzVjNmI5ZmZiMzJmMTFkMmFhODAw
ZWRlYjk5NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy93M2N0ZXN0ZXhwb3J0LnB5CkBAIC0wLDAgKzEsNjAgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJv
cgorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RT
dGVwCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucworZnJv
bSB3ZWJraXRweS53M2MudGVzdF9leHBvcnRlciBpbXBvcnQgZXhwb3J0X3dwdF90ZXN0X2NoYW5n
ZXMKKworCitjbGFzcyBXM0NUZXN0RXhwb3J0KEFic3RyYWN0U3RlcCk6CisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIG9wdGlvbnMoY2xzKToKKyAgICAgICAgcmV0dXJuIEFic3RyYWN0U3RlcC5v
cHRpb25zKCkgKyBbCisgICAgICAgICAgICBPcHRpb25zLm5vbl9pbnRlcmFjdGl2ZSwKKyAgICAg
ICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKKyAgICAgICAgXQorCisgICAgZGVmIHJ1bihzZWxm
LCBzdGF0ZSk6CisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMubm9uX2ludGVyYWN0aXZlOgorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgIGFyZ3MgPSBbIi0tZ2l0LWNvbW1pdCJdCisgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdDoKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHNl
bGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKCJIRUFEIikKKworICAgICAgICBidWdfaWQgPSBzdGF0ZS5nZXQoImJ1Z19pZCIpCisg
ICAgICAgIGlmIG5vdCBidWdfaWQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgYXJncy5h
cHBlbmQoIi0tYnVnIikKKyAgICAgICAgYXJncy5hcHBlbmQoYnVnX2lkKQorICAgICAgICBhcmdz
LmFwcGVuZCgiLS1pbnRlcmFjdGl2ZSIpCisgICAgICAgIGFyZ3MuYXBwZW5kKCItLWNyZWF0ZS1w
ciIpCisKKyAgICAgICAgZXhwb3J0X3dwdF90ZXN0X2NoYW5nZXMoYXJncywgc2lsZW50X25vb3A9
VHJ1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1vbi5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1vbi5weQppbmRleCBhMTRhYTk1MzU0Yjkw
NjczOTQxMDE3NmMxYjAzNzhjN2Q3MjM1MzMyLi42NmZhMzRmMmE3ZTlhZjE3Mzc2YjY0M2NiNGMx
YTY0YTk4ODhiMjBmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9jb21t
b24ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5CkBAIC0zMCwx
MCArMzAsMTEgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKIAog
Ci1XUFRfR0hfT1JHID0gJ3czYycKLVdQVF9HSF9SRVBPX05BTUUgPSAnd2ViLXBsYXRmb3JtLXRl
c3RzJworV1BUX0dIX09SRyA9IG9zLmVudmlyb24uZ2V0KCdXUFRfR0hfT1JHJywgJ3czYycpCitX
UFRfR0hfUkVQT19OQU1FID0gb3MuZW52aXJvbi5nZXQoJ1dQVF9HSF9SRVBPX05BTUUnLCAnd2Vi
LXBsYXRmb3JtLXRlc3RzJykKIFdQVF9HSF9VUkwgPSAnaHR0cHM6Ly9naXRodWIuY29tLyVzLyVz
LycgJSAoV1BUX0dIX09SRywgV1BUX0dIX1JFUE9fTkFNRSkKIFdQVF9NSVJST1JfVVJMID0gJ2h0
dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9leHRlcm5hbC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzLmdpdCcKIFdQVF9HSF9TU0hfVVJMX1RFTVBMQVRFID0gJ2h0dHBzOi8ve31AZ2l0aHVi
LmNvbS8lcy8lcy5naXQnICUgKFdQVF9HSF9PUkcsIFdQVF9HSF9SRVBPX05BTUUpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weQppbmRleCA2YTljYTViYjcyYzFm
ODQ4MzA2NDgwMzgzMmIyZWI3NTUxMTljYTZjLi5hODI3MmM2MzM3MWU4ZDQ1ZmU5OGI4NzdiZTE5
YjQzODUyNWZkOTNkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0
X2V4cG9ydGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0
ZXIucHkKQEAgLTI4LDYgKzI4LDggQEAgaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZwog
aW1wb3J0IG9zCiBpbXBvcnQgdGltZQoraW1wb3J0IGpzb24KK2Zyb20gdXJsbGliMiBpbXBvcnQg
SFRUUEVycm9yCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5naXQgaW1wb3J0
IEdpdAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdApAQCAtMzUsMjAgKzM3
LDU3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEK
IGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgog
ZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1YiBpbXBvcnQgV1BUR2l0SHViCiBmcm9tIHdlYmtp
dHB5LnczYy53cHRfbGludGVyIGltcG9ydCBXUFRMaW50ZXIKK2Zyb20gd2Via2l0cHkudzNjLmNv
bW1vbiBpbXBvcnQgV1BUX0dIX09SRwogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCiAKIFdFQktJVF9XUFRfRElSID0gJ0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMnCi1XUFRfUFJfVVJMID0gImh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3B1bGwvIgorV1BUX1BSX1VSTCA9ICJodHRwczovL2dpdGh1Yi5jb20vJXMv
d2ViLXBsYXRmb3JtLXRlc3RzL3B1bGwvIiAlIChXUFRfR0hfT1JHLCkKIFdFQktJVF9FWFBPUlRf
UFJfTEFCRUwgPSAnd2Via2l0LWV4cG9ydCcKIAogCitjbGFzcyBXM2NDaGFuZ2VzZXQob2JqZWN0
KToKKyAgICAiIiJ0aGUgVzNjQ2hhbmdlc2V0IGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBkZXRl
Y2hpbmcgY2hhbmdlcyBpbgorICAgIHRoZSB3ZWItcGxhdGZvcm0tdGVzdCBkaXJlY3RvcnkgYW5k
IGdlbmVyYXRpbmcgcGF0Y2hlcyBleHBvcnRpbmcKKyAgICB0aG9zZSBjaGFuZ2VzLgorICAgICIi
IgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIG9wdGlvbnMpOgorICAgICAgICBzZWxm
Ll9ob3N0ID0gaG9zdAorICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gaG9zdC5maWxlc3lzdGVt
CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisKKyAgICAgICAgc2VsZi5faG9zdC5p
bml0aWFsaXplX3NjbSgpCisKKyAgICBkZWYgaGFzX3dwdF9jaGFuZ2VzKHNlbGYpOgorICAgICAg
ICByZXR1cm4gYm9vbChzZWxmLl9jcmVhdGVfcGF0Y2goKSkKKworICAgIGRlZiBfY3JlYXRlX3Bh
dGNoKHNlbGYpOgorICAgICAgICBnaXRfY29tbWl0ID0gIkhFQUQuLi4uIiBpZiBub3Qgc2VsZi5f
b3B0aW9ucy5naXRfY29tbWl0IGVsc2Ugc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0ICsgIn4xLi4i
ICsgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0CisgICAgICAgIHBhdGNoX2RhdGEgPSBzZWxmLl9o
b3N0LnNjbSgpLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0LCBbV0VCS0lUX1dQVF9ESVJdKQorICAg
ICAgICBpZiBub3QgcGF0Y2hfZGF0YSBvciBub3QgJ2RpZmYnIGluIHBhdGNoX2RhdGE6CisgICAg
ICAgICAgICByZXR1cm4gJycKKyAgICAgICAgcmV0dXJuIHBhdGNoX2RhdGEKKworICAgIGRlZiBj
cmVhdGVfZ2l0X3BhdGNoX2ZpbGUoc2VsZik6CisgICAgICAgIHBhdGNoX2ZpbGUgPSAnLi9wYXRj
aC50ZW1wLicgKyBzdHIodGltZS5jbG9jaygpKQorICAgICAgICBwYXRjaF9kYXRhID0gc2VsZi5f
Y3JlYXRlX3BhdGNoKCkKKyAgICAgICAgaWYgbm90ICdkaWZmJyBpbiBwYXRjaF9kYXRhOgorICAg
ICAgICAgICAgX2xvZy5pbmZvKCdObyBjaGFuZ2VzIHRvIHVwc3RyZWFtLCBwYXRjaCBkYXRhIGlz
OiAiJXMiJyAlIChwYXRjaF9kYXRhKSkKKyAgICAgICAgICAgIHJldHVybiAnJworICAgICAgICAj
IEZJWE1FOiBXZSBjYW4gcHJvYmFibHkgdHJ5IHRvIHVzZSAtLXJlbGF0aXZlIGdpdCBwYXJhbWV0
ZXIgdG8gbm90IGRvIHRoYXQgcmVwbGFjZW1lbnQuCisgICAgICAgIHBhdGNoX2RhdGEgPSBwYXRj
aF9kYXRhLnJlcGxhY2UoV0VCS0lUX1dQVF9ESVIgKyAnLycsICcnKQorICAgICAgICBwYXRjaF9m
aWxlID0gc2VsZi5fZmlsZXN5c3RlbS5hYnNwYXRoKHBhdGNoX2ZpbGUpCisgICAgICAgIHNlbGYu
X2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBhdGNoX2ZpbGUsIHBhdGNoX2RhdGEpCisgICAg
ICAgIHJldHVybiBwYXRjaF9maWxlCisKIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIG9wdGlvbnMsIGdpdENsYXNzPUdpdCwgYnVnemls
bGFDbGFzcz1CdWd6aWxsYSwgV1BUR2l0SHViQ2xhc3M9V1BUR2l0SHViLCBXUFRMaW50ZXJDbGFz
cz1XUFRMaW50ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBvcHRpb25zLCB3M2Nf
Y2hhbmdlc2V0LCBnaXRDbGFzcz1HaXQsIGJ1Z3ppbGxhQ2xhc3M9QnVnemlsbGEsIFdQVEdpdEh1
YkNsYXNzPVdQVEdpdEh1YiwgV1BUTGludGVyQ2xhc3M9V1BUTGludGVyKToKICAgICAgICAgc2Vs
Zi5faG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGhvc3QuZmlsZXN5c3Rl
bQogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxmLl93M2NfY2hh
bmdlc2V0ID0gdzNjX2NoYW5nZXNldAogCiAgICAgICAgIHNlbGYuX2hvc3QuaW5pdGlhbGl6ZV9z
Y20oKQogCkBAIC02NywyNSArMTA2LDcgQEAgY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuX2dpdCA9IHNlbGYuX2Vuc3VyZV93cHRfcmVwb3NpdG9yeSgiaHR0cHM6Ly9n
aXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0Iiwgc2VsZi5fb3B0aW9ucy5yZXBv
c2l0b3J5X2RpcmVjdG9yeSwgZ2l0Q2xhc3MpCiAgICAgICAgIHNlbGYuX2xpbnRlciA9IFdQVExp
bnRlckNsYXNzKHNlbGYuX29wdGlvbnMucmVwb3NpdG9yeV9kaXJlY3RvcnksIGhvc3QuZmlsZXN5
c3RlbSkKIAotICAgICAgICBzZWxmLl91c2VybmFtZSA9IG9wdGlvbnMudXNlcm5hbWUKLSAgICAg
ICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgotICAgICAgICAgICAgc2VsZi5fdXNlcm5hbWUgPSBz
ZWxmLl9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnKS5yc3RyaXAoKQotICAgICAg
ICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgotICAgICAgICAgICAgICAgIHNlbGYuX3VzZXJu
YW1lID0gb3MuZW52aXJvbi5nZXQoJ0dJVEhVQl9VU0VSTkFNRScpCi0gICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fdXNlcm5hbWU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTWlz
c2luZyBHaXRIdWIgdXNlcm5hbWUsIHBsZWFzZSBwcm92aWRlIGl0IGFzIGEgY29tbWFuZCBhcmd1
bWVudCAoc2VlIGhlbHAgZm9yIHRoZSBjb21tYW5kKS4iKQotICAgICAgICBlbGlmIG5vdCBzZWxm
Ll9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnKToKLSAgICAgICAgICAgIHNlbGYu
X2dpdC5zZXRfbG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnLCBzZWxmLl91c2VybmFtZSkK
LQotICAgICAgICBzZWxmLl90b2tlbiA9IG9wdGlvbnMudG9rZW4KLSAgICAgICAgaWYgbm90IHNl
bGYuX3Rva2VuOgotICAgICAgICAgICAgc2VsZi5fdG9rZW4gPSBzZWxmLl9naXQubG9jYWxfY29u
ZmlnKCdnaXRodWIudG9rZW4nKS5yc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Rv
a2VuOgotICAgICAgICAgICAgICAgIHNlbGYuX3Rva2VuID0gb3MuZW52aXJvbi5nZXQoJ0dJVEhV
Ql9UT0tFTicpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46Ci0gICAgICAgICAgICAg
ICAgX2xvZy5pbmZvKCJNaXNzaW5nIEdpdEh1YiB0b2tlbiwgdGhlIHNjcmlwdCB3aWxsIG5vdCBi
ZSBhYmxlIHRvIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCB0byBXM0Mgd2ViLXBsYXRmb3JtLXRlc3Rz
IHJlcG9zaXRvcnkuIikKLSAgICAgICAgZWxpZiBub3Qgc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygn
Z2l0aHViLnRva2VuJyk6Ci0gICAgICAgICAgICBzZWxmLl9naXQuc2V0X2xvY2FsX2NvbmZpZygn
Z2l0aHViLnRva2VuJywgc2VsZi5fdG9rZW4pCisgICAgICAgIHNlbGYuX2Vuc3VyZV91c2VybmFt
ZV9hbmRfdG9rZW4ob3B0aW9ucykKIAogICAgICAgICBzZWxmLl9naXRodWIgPSBXUFRHaXRIdWJD
bGFzcyhzZWxmLl9ob3N0LCBzZWxmLl91c2VybmFtZSwgc2VsZi5fdG9rZW4pIGlmIHNlbGYuX3Vz
ZXJuYW1lIGFuZCBzZWxmLl90b2tlbiBlbHNlIE5vbmUKIApAQCAtMTA0LDYgKzEyNSw2MCBAQCBj
bGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAgICAgaWYgbm90IHNlbGYuX3dwdF9mb3Jr
X3B1c2hfdXJsOgogICAgICAgICAgICAgc2VsZi5fd3B0X2ZvcmtfcHVzaF91cmwgPSAiaHR0cHM6
Ly8iICsgc2VsZi5fdXNlcm5hbWUgKyAiQGdpdGh1Yi5jb20vIiArIHNlbGYuX3VzZXJuYW1lICsg
Ii93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0IgogCisgICAgZGVmIF9wcm9tcHRfZm9yX3Rva2VuKHNl
bGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faG9zdC51c2VyLnByb21wdF9wYXNzd29yZCgnRW50
ZXIgZ2l0aHViIE9BdXRoIHRva2VuOiAnKQorCisgICAgZGVmIF9wcm9tcHRfZm9yX3VzZXJuYW1l
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faG9zdC51c2VyLnByb21wdCgnRW50ZXIgZ2l0
aHViIHVzZXJuYW1lOiAnKQorCisgICAgZGVmIF9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2VuKHNl
bGYsIG9wdGlvbnMpOgorICAgICAgICAiIiIKKyAgICAgICAgQXNrIHRoZSB1c2VyIHRvIHByb3Zp
ZGUgYSB1c2VybmFtZSBhbmQgdG9rZW4gaWYgdGhlCisgICAgICAgIC0taW50ZXJhY3RpdmUgZmxh
ZyBpcyBwYXNzZWQgYW5kIHVzZXJuYW1lIGFuZCB0b2tlbgorICAgICAgICBhcmUgbm90IGFscmVh
ZHkgc2V0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fdXNlcm5hbWUgPSBvcHRpb25zLnVz
ZXJuYW1lCisgICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToKKyAgICAgICAgICAgIHNlbGYu
X3VzZXJuYW1lID0gc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJuYW1lJykucnN0
cmlwKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToKKyAgICAgICAgICAgICAg
ICBzZWxmLl91c2VybmFtZSA9IG9zLmVudmlyb24uZ2V0KCdHSVRIVUJfVVNFUk5BTUUnKQorICAg
ICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lIGFuZCBvcHRpb25zLmludGVyYWN0aXZlX21v
ZGU6CisgICAgICAgICAgICAgICAgc2VsZi5fdXNlcm5hbWUgPSBzZWxmLl9wcm9tcHRfZm9yX3Vz
ZXJuYW1lKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToKKyAgICAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCJNaXNzaW5nIEdpdEh1YiB1c2VybmFtZSwgcGxlYXNlIHBy
b3ZpZGUgaXQgYXMgYSBjb21tYW5kIGFyZ3VtZW50IChzZWUgaGVscCBmb3IgdGhlIGNvbW1hbmQp
LiIpCisKKyAgICAgICAgc2VsZi5fdG9rZW4gPSBvcHRpb25zLnRva2VuCisgICAgICAgIGlmIG5v
dCBzZWxmLl90b2tlbjoKKyAgICAgICAgICAgIHNlbGYuX3Rva2VuID0gc2VsZi5fZ2l0LmxvY2Fs
X2NvbmZpZygnZ2l0aHViLnRva2VuJykucnN0cmlwKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll90b2tlbjoKKyAgICAgICAgICAgICAgICBzZWxmLl90b2tlbiA9IG9zLmVudmlyb24uZ2V0KCdH
SVRIVUJfVE9LRU4nKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Rva2VuIGFuZCBvcHRpb25z
LmludGVyYWN0aXZlX21vZGU6CisgICAgICAgICAgICAgICAgc2VsZi5fdG9rZW4gPSBzZWxmLl9w
cm9tcHRfZm9yX3Rva2VuKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90b2tlbjoKKyAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oIk1pc3NpbmcgR2l0SHViIHRva2VuLCB0aGUgc2NyaXB0IHdp
bGwgbm90IGJlIGFibGUgdG8gY3JlYXRlIGEgcHVsbCByZXF1ZXN0IHRvIFczQyB3ZWItcGxhdGZv
cm0tdGVzdHMgcmVwb3NpdG9yeS4iKQorCisgICAgICAgIGlmIHNlbGYuX3Rva2VuOgorICAgICAg
ICAgICAgc2VsZi5fdmFsaWRhdGVfYW5kX3NhdmVfdG9rZW4oc2VsZi5fdXNlcm5hbWUsIHNlbGYu
X3Rva2VuKQorCisgICAgZGVmIF92YWxpZGF0ZV9hbmRfc2F2ZV90b2tlbihzZWxmLCB1c2VybmFt
ZSwgdG9rZW4pOgorICAgICAgICAjIHZhbGlkYXRlIHRva2VuIGFuZCB1c2VybmFtZQorICAgICAg
ICB1cmwgPSAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2VyP2FjY2Vzc190b2tlbj0lcycgJSAo
dG9rZW4sKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYuX2hvc3Qu
d2ViLnJlcXVlc3QobWV0aG9kPSdHRVQnLCB1cmw9dXJsLCBkYXRhPU5vbmUpCisgICAgICAgIGV4
Y2VwdCBIVFRQRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiT0F1dGgg
dG9rZW4gaXMgbm90IHZhbGlkIikKKyAgICAgICAgZGF0YSA9IGpzb24ubG9hZChyZXNwb25zZSkK
KyAgICAgICAgbG9naW4gPSBkYXRhLmdldCgnbG9naW4nLCBOb25lKQorICAgICAgICBpZiBsb2dp
biAhPSB1c2VybmFtZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiT0F1dGggdG9rZW4g
ZG9lcyBub3QgbWF0Y2ggdGhlIHByb3ZpZGVkIHVzZXJuYW1lLiBQcm92aWRlZCB1c2VyOiAlcywg
Z2l0aHViIGxvZ2luOiAlcyIgJSAodXNlcm5hbWUsIGxvZ2luKSkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICMgVXNlcm5hbWUgYW5kIHRva2VuIGFyZSB2YWxpZC4gU2F2ZSB0aGVtIGluIHRo
ZSBnaXQgY29uZmlnIHNvIHdlCisgICAgICAgICAgICAjIGRvIG5vdCBuZWVkIHRvIGFzayBmb3Ig
dGhlbSBhZ2FpbgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dp
dGh1Yi50b2tlbicpOgorICAgICAgICAgICAgICAgIHNlbGYuX2dpdC5zZXRfbG9jYWxfY29uZmln
KCdnaXRodWIudG9rZW4nLCB0b2tlbikKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9naXQubG9j
YWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnKToKKyAgICAgICAgICAgICAgICBzZWxmLl9naXQu
c2V0X2xvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJuYW1lJywgdXNlcm5hbWUpCisKICAgICBkZWYg
X2Vuc3VyZV93cHRfcmVwb3NpdG9yeShzZWxmLCB1cmwsIHdwdF9yZXBvc2l0b3J5X2RpcmVjdG9y
eSwgZ2l0Q2xhc3MpOgogICAgICAgICBnaXQgPSBOb25lCiAgICAgICAgIGlmIG5vdCBzZWxmLl9m
aWxlc3lzdGVtLmV4aXN0cyh3cHRfcmVwb3NpdG9yeV9kaXJlY3RvcnkpOgpAQCAtMjA4LDIyICsy
ODMsMTkgQEAgY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2dpdC5k
ZWxldGVfYnJhbmNoKHNlbGYuX2JyYW5jaF9uYW1lKQogCiAgICAgZGVmIGNyZWF0ZV9naXRfcGF0
Y2goc2VsZik6Ci0gICAgICAgIHBhdGNoX2ZpbGUgPSAnLi9wYXRjaC50ZW1wLicgKyBzdHIodGlt
ZS5jbG9jaygpKQotICAgICAgICBnaXRfY29tbWl0ID0gIkhFQUQuLi4uIiBpZiBub3Qgc2VsZi5f
b3B0aW9ucy5naXRfY29tbWl0IGVsc2Ugc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0ICsgIn4xLi4i
ICsgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0Ci0gICAgICAgIHBhdGNoX2RhdGEgPSBzZWxmLl9o
b3N0LnNjbSgpLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0LCBbV0VCS0lUX1dQVF9ESVJdKQotICAg
ICAgICBpZiBub3QgcGF0Y2hfZGF0YSBvciBub3QgJ2RpZmYnIGluIHBhdGNoX2RhdGE6Ci0gICAg
ICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0sIHBhdGNoIGRhdGEgaXM6
ICIlcyInICUgKHBhdGNoX2RhdGEpKQotICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgICMg
RklYTUU6IFdlIGNhbiBwcm9iYWJseSB0cnkgdG8gdXNlIC0tcmVsYXRpdmUgZ2l0IHBhcmFtZXRl
ciB0byBub3QgZG8gdGhhdCByZXBsYWNlbWVudC4KLSAgICAgICAgcGF0Y2hfZGF0YSA9IHBhdGNo
X2RhdGEucmVwbGFjZShXRUJLSVRfV1BUX0RJUiArICcvJywgJycpCi0gICAgICAgIHBhdGNoX2Zp
bGUgPSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgocGF0Y2hfZmlsZSkKLSAgICAgICAgc2VsZi5f
ZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0Y2hfZmlsZSwgcGF0Y2hfZGF0YSkKLSAgICAg
ICAgcmV0dXJuIHBhdGNoX2ZpbGUKKyAgICAgICAgcmV0dXJuIHNlbGYuX3czY19jaGFuZ2VzZXQu
Y3JlYXRlX2dpdF9wYXRjaF9maWxlKCkKIAogICAgIGRlZiBjcmVhdGVfdXBsb2FkX3JlbW90ZV9p
Zl9uZWVkZWQoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl93cHRfZm9ya19yZW1vdGUgaW4g
c2VsZi5fZ2l0LnJlbW90ZShbXSk6CiAgICAgICAgICAgICBzZWxmLl9naXQucmVtb3RlKFsiYWRk
Iiwgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlLCBzZWxmLl93cHRfZm9ya19wdXNoX3VybF0pCiAKKyAg
ICBkZWYgX2NvbmZpcm1fZXhwb3J0KHNlbGYpOgorICAgICAgICBtZXNzYWdlID0gIndlYi1wbGF0
Zm9ybS10ZXN0cyBjaGFuZ2VzIGRldGVjdGVkLiBXb3VsZCB5b3UgbGlrZSB0byBjcmVhdGUgYSBw
dWxsLXJlcXVlc3QgdG8gdGhlIFdQVCBnaXRodWIgcmVwbyBub3c/IgorICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLmludGVyYWN0aXZlX21vZGU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5faG9z
dC51c2VyLmNvbmZpcm0obWVzc2FnZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVy
biBUcnVlCisKICAgICBkZWYgZG9fZXhwb3J0KHNlbGYpOgogICAgICAgICBnaXRfcGF0Y2hfZmls
ZSA9IHNlbGYuY3JlYXRlX2dpdF9wYXRjaCgpCiAKQEAgLTIzMSw2ICszMDMsOSBAQCBjbGFzcyBU
ZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIlVuYWJsZSB0byBj
cmVhdGUgYSBwYXRjaCB0byBhcHBseSB0byB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeSIp
CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBpZiBub3Qgc2VsZi5fY29uZmlybV9leHBv
cnQoKToKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHNlbGYuX2ZldGNoX3dwdF9yZXBv
c2l0b3J5KCkKICAgICAgICAgc2VsZi5jbGVhbigpCiAKQEAgLTI5MCw2ICszNjUsNyBAQCBkZWYg
cGFyc2VfYXJncyhhcmdzKToKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdScsICctLXJlbW90
ZS11cmwnLCBkZXN0PSdyZXBvc2l0b3J5X3JlbW90ZV91cmwnLCBkZWZhdWx0PU5vbmUsIGhlbHA9
J3JlcG9zaXRvcnkgdXJsIHRvIHVzZSB0byBwdXNoJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCctZCcsICctLXJlcG9zaXRvcnknLCBkZXN0PSdyZXBvc2l0b3J5X2RpcmVjdG9yeScsIGRlZmF1
bHQ9Tm9uZSwgaGVscD0ncmVwb3NpdG9yeSBkaXJlY3RvcnknKQogICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoJy1jJywgJy0tY3JlYXRlLXByJywgZGVzdD0nY3JlYXRlX3B1bGxfcmVxdWVzdCcsIGFj
dGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J2NyZWF0ZSBwdWxsIHJlcXVl
c3QgdG8gdzNjIHdlYi1wbGF0Zm9ybS10ZXN0cycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgn
LWknLCAnLS1pbnRlcmFjdGl2ZScsIGRlc3Q9J2ludGVyYWN0aXZlX21vZGUnLCBhY3Rpb249J3N0
b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdQcm9tcHRzIHRoZSB1c2VyIGZvciB0aGVp
ciBnaXRodWIgY3JlZGVudGlhbHMgYW5kIGFza3MgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgZXhw
b3J0aW5nIHRoZSBjaGFuZ2VzLicpCiAKICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNl
X2tub3duX2FyZ3MoYXJncykKIApAQCAtMzA1LDYgKzM4MSw3IEBAIGRlZiBjb25maWd1cmVfbG9n
Z2luZygpOgogICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5nZXRNZXNzYWdlKCkKIAogICAgIGxv
Z2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3ZWJraXRweS53M2MudGVzdF9leHBvcnRlcicpCisg
ICAgbG9nZ2VyLnByb3BhZ2F0ZSA9IEZhbHNlCiAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcu
SU5GTykKICAgICBoYW5kbGVyID0gTG9nSGFuZGxlcigpCiAgICAgaGFuZGxlci5zZXRMZXZlbChs
b2dnaW5nLklORk8pCkBAIC0zMTMsMTAgKzM5MCwxOSBAQCBkZWYgY29uZmlndXJlX2xvZ2dpbmco
KToKIAogCiBkZWYgbWFpbihfYXJndiwgX3N0ZG91dCwgX3N0ZGVycik6Ci0gICAgb3B0aW9ucyA9
IHBhcnNlX2FyZ3MoX2FyZ3YpCisgICAgZXhwb3J0X3dwdF90ZXN0X2NoYW5nZXMoX2FyZ3YsIHNp
bGVudF9ub29wPUZhbHNlKQorCisKK2RlZiBleHBvcnRfd3B0X3Rlc3RfY2hhbmdlcyhhcmdzLCBz
aWxlbnRfbm9vcD1GYWxzZSk6CisgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoYXJncykKIAogICAg
IGNvbmZpZ3VyZV9sb2dnaW5nKCkKIAotICAgIHRlc3RfZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIo
SG9zdCgpLCBvcHRpb25zKQorICAgIGhvc3QgPSBIb3N0KCkKKyAgICB3M2NfY2hhbmdlc2V0ID0g
VzNjQ2hhbmdlc2V0KGhvc3QsIG9wdGlvbnMpCiAKLSAgICB0ZXN0X2V4cG9ydGVyLmRvX2V4cG9y
dCgpCisgICAgaWYgdzNjX2NoYW5nZXNldC5oYXNfd3B0X2NoYW5nZXMoKToKKyAgICAgICAgdGVz
dF9leHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCB3M2NfY2hhbmdlc2V0KQor
ICAgICAgICB0ZXN0X2V4cG9ydGVyLmRvX2V4cG9ydCgpCisgICAgZWxpZiBub3Qgc2lsZW50X25v
b3A6CisgICAgICAgIF9sb2cuaW5mbygnTm8gY2hhbmdlcyB0byB1cHN0cmVhbS4gRXhpdGluZy4u
LicpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVy
X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91
bml0dGVzdC5weQppbmRleCBiODMzNGE5NDljNjEyODY3MmUzYzQ3MjRmMTYxMDNjMDRmOWNiOTg5
Li5kZWQyYzEzNmQwMzZiNGY5YmM2ZTNmODhmYmFkY2UyZTEzNDUwY2NlIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkKQEAg
LTI1LDcgKzI1LDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0
X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5
c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlMgotZnJvbSB3ZWJraXRweS53
M2MudGVzdF9leHBvcnRlciBpbXBvcnQgVGVzdEV4cG9ydGVyLCBwYXJzZV9hcmdzCitmcm9tIHdl
YmtpdHB5LnczYy50ZXN0X2V4cG9ydGVyIGltcG9ydCBUZXN0RXhwb3J0ZXIsIFczY0NoYW5nZXNl
dCwgcGFyc2VfYXJncwogZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1Yl9tb2NrIGltcG9ydCBN
b2NrV1BUR2l0SHViCiAKIG1vY2tfbGludGVyID0gTm9uZQpAQCAtMTIyLDggKzEyMiwxMCBAQCBj
bGFzcyBUZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0
X2V4cG9ydChzZWxmKToKICAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9z
dCgpCisgICAgICAgIGhvc3Qud2ViLnJlc3BvbnNlcy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDIw
MCwgJ2JvZHknOiAneyJsb2dpbiI6ICJVU0VSIn0nfSkKICAgICAgICAgb3B0aW9ucyA9IHBhcnNl
X2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICct
YycsICctbicsICdVU0VSJywgJy10JywgJ1RPS0VOJ10pCi0gICAgICAgIGV4cG9ydGVyID0gVGVz
dEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4
cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3Qu
TW9ja1dQVExpbnRlcikKKyAgICAgICAgdzNjX2NoYW5nZXNldCA9IFczY0NoYW5nZXNldChob3N0
LCBvcHRpb25zKQorICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25z
LCB3M2NfY2hhbmdlc2V0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRl
c3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRM
aW50ZXIpCiAgICAgICAgIGV4cG9ydGVyLmRvX2V4cG9ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGV4cG9ydGVyLl9naXRodWIuY2FsbHMsIFsnY3JlYXRlX3ByJywgJ2FkZF9sYWJlbCAi
d2Via2l0LWV4cG9ydCInXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdXZWJLaXQgZXhwb3J0
JyBpbiBleHBvcnRlci5fZ2l0aHViLnB1bGxfcmVxdWVzdHNfY3JlYXRlZFswXVsxXSkKQEAgLTE1
MCw4ICsxNTIsMTAgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAKICAgICBkZWYgdGVzdF9leHBvcnRfd2l0aF9zcGVjaWZpY19icmFuY2goc2VsZik6CiAgICAg
ICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQorICAgICAgICBob3N0Lndl
Yi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUnOiAyMDAsICdib2R5JzogJ3sibG9naW4i
OiAiVVNFUiJ9J30pCiAgICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRl
ci5weScsICctZycsICdIRUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICct
dCcsICdUT0tFTicsICctYm4nLCAnd3B0LWV4cG9ydC1icmFuY2gnXSkKLSAgICAgICAgZXhwb3J0
ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0
LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9y
dGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICB3M2NfY2hhbmdlc2V0ID0gVzNjQ2hhbmdl
c2V0KGhvc3QsIG9wdGlvbnMpCisgICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3Qs
IG9wdGlvbnMsIHczY19jaGFuZ2VzZXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4
cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3Qu
TW9ja1dQVExpbnRlcikKICAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoZXhwb3J0ZXIuX2dpdC5jYWxscywgWwogICAgICAgICAgICAgJy9tb2Nr
LWNoZWNrb3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0cy93ZWItcGxhdGZvcm0tdGVzdHMnLApAQCAt
MTY5LDMgKzE3MywyOSBAQCBjbGFzcyBUZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgICdkZWxldGUgYnJhbmNoIHdwdC1leHBvcnQtZm9yLXdlYmtpdC0xMjM0
JywKICAgICAgICAgICAgICdjaGVja291dCBtYXN0ZXInLAogICAgICAgICAgICAgJ3Jlc2V0IGhh
cmQgb3JpZ2luL21hc3RlciddKQorCisgICAgZGVmIHRlc3RfZXhwb3J0X2ludGVyYWN0aXZlX21v
ZGUoc2VsZik6CisgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQor
ICAgICAgICBob3N0LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUnOiAyMDAsICdi
b2R5JzogJ3sibG9naW4iOiAiVVNFUiJ9J30pCisgICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdz
KFsndGVzdF9leHBvcnRlci5weScsICctZycsICdIRUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAn
LW4nLCAnVVNFUicsICctdCcsICdUT0tFTicsICctLWludGVyYWN0aXZlJ10pCisgICAgICAgIHcz
Y19jaGFuZ2VzZXQgPSBXM2NDaGFuZ2VzZXQoaG9zdCwgb3B0aW9ucykKKyAgICAgICAgZXhwb3J0
ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgdzNjX2NoYW5nZXNldCwgVGVzdEV4cG9y
dGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdp
dEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICBleHBvcnRlci5k
b19leHBvcnQoKQorCisgICAgZGVmIHRlc3RfZXhwb3J0X2ludmFsaWRfdG9rZW4oc2VsZik6Cisg
ICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQorICAgICAgICBob3N0
LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUnOiA0MDF9KQorICAgICAgICBvcHRp
b25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYics
ICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nXSkKKyAgICAgICAgdzNj
X2NoYW5nZXNldCA9IFczY0NoYW5nZXNldChob3N0LCBvcHRpb25zKQorICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikgYXMgY29udGV4dDoKKyAgICAgICAgICAgIGV4cG9y
dGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIHczY19jaGFuZ2VzZXQsIFRlc3RFeHBv
cnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRH
aXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRJbignT0F1dGggdG9rZW4gaXMgbm90IHZhbGlkJywgc3RyKGNvbnRleHQuZXhjZXB0aW9uKSkK
KworICAgIGRlZiB0ZXN0X2V4cG9ydF93cm9uZ190b2tlbihzZWxmKToKKyAgICAgICAgaG9zdCA9
IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAgIGhvc3Qud2ViLnJlc3BvbnNl
cy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDIwMCwgJ2JvZHknOiAneyJsb2dpbiI6ICJESUZGX1VT
RVIifSd9KQorICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHkn
LCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAn
VE9LRU4nXSkKKyAgICAgICAgdzNjX2NoYW5nZXNldCA9IFczY0NoYW5nZXNldChob3N0LCBvcHRp
b25zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikgYXMgY29udGV4
dDoKKyAgICAgICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIHcz
Y19jaGFuZ2VzZXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5N
b2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRl
cikKKyAgICAgICAgc2VsZi5hc3NlcnRJbignT0F1dGggdG9rZW4gZG9lcyBub3QgbWF0Y2ggdGhl
IHByb3ZpZGVkIHVzZXJuYW1lJywgc3RyKGNvbnRleHQuZXhjZXB0aW9uKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338648</attachid>
            <date>2018-04-24 07:07:53 -0700</date>
            <delta_ts>2018-04-25 07:30:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184914-20180424100752.patch</filename>
            <type>text/plain</type>
            <size>23819</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTE2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTg2Y2U2NjIzNDM5NDE1ZjE2Y2JmYmZkY2Y0MjAyYTdj
OGRmNWZhOC4uMWVlYTk2MTg1MGVjODlhNzI0MzI5NTMxMWU5MDZlYjcyNzE1MjQ1MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4
IEBACisyMDE4LTA0LTI0ICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgRXhwb3J0IGNoYW5nZXMgdG8gd2ViLXBsYXRmb3JtLXRlc3QgYXMgcGFydCBv
ZiB0aGUgd2Via2l0LXBhdGNoIHVwbG9hZCB3b3JrZmxvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
d2ViX21vY2sucHk6CisgICAgICAgIChNb2NrUmVzcG9uc2UuX19pbml0X18pOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9sb2d1dGlscy5weToKKyAgICAgICAgKGNv
bmZpZ3VyZV9sb2dnaW5nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5OgorICAgICAgICAoVXBsb2FkKToKKyAgICAgICAgKENyZWF0ZUJ1Zy5leGVj
dXRlKToKKyAgICAgICAgKFczQ1Rlc3RFeHBvcnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvdzNjdGVzdGV4cG9ydC5weTogQWRkZWQuCisgICAgICAgIChXM0NUZXN0RXhwb3J0
KToKKyAgICAgICAgKFczQ1Rlc3RFeHBvcnQub3B0aW9ucyk6CisgICAgICAgIChXM0NUZXN0RXhw
b3J0LnJ1bik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHk6CisgICAgICAgIChX
M2NDaGFuZ2VzZXQpOgorICAgICAgICAoVzNjQ2hhbmdlc2V0Ll9faW5pdF9fKToKKyAgICAgICAg
KFczY0NoYW5nZXNldC5oYXNfd3B0X2NoYW5nZXMpOgorICAgICAgICAoVzNjQ2hhbmdlc2V0Ll9j
cmVhdGVfcGF0Y2gpOgorICAgICAgICAoVzNjQ2hhbmdlc2V0LmNyZWF0ZV9naXRfcGF0Y2hfZmls
ZSk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdEV4cG9y
dGVyLl9wcm9tcHRfZm9yX3Rva2VuKToKKyAgICAgICAgKFRlc3RFeHBvcnRlcik6CisgICAgICAg
IChUZXN0RXhwb3J0ZXIuX3Byb21wdF9mb3JfdXNlcm5hbWUpOgorICAgICAgICAoVGVzdEV4cG9y
dGVyLl9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2VuKToKKyAgICAgICAgKFRlc3RFeHBvcnRlci5f
dmFsaWRhdGVfYW5kX3NhdmVfdG9rZW4pOgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNyZWF0ZV9n
aXRfcGF0Y2gpOgorICAgICAgICAoVGVzdEV4cG9ydGVyLl9jb25maXJtX2V4cG9ydCk6CisgICAg
ICAgIChUZXN0RXhwb3J0ZXIuZG9fZXhwb3J0KToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHk6Cisg
ICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0KToKKyAgICAgICAgKFRlc3RFeHBv
cnRlclRlc3QudGVzdF9leHBvcnRfd2l0aF9zcGVjaWZpY19icmFuY2gpOgorICAgICAgICAoVGVz
dEV4cG9ydGVyVGVzdCk6CisgICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X2lu
dGVyYWN0aXZlX21vZGUpOgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0X2V4cG9ydF9p
bnZhbGlkX3Rva2VuKToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVzdF9leHBvcnRfd3Jv
bmdfdG9rZW4pOgorCiAyMDE4LTA0LTIzICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9A
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFRlc3RTU0wgZmFpbHMgZHVlIHRvIGFk
ZGl0aW9uYWwgVExTIGVycm9ycyByZXR1cm5lZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggOTMzZGIyZDA4NTIwZDg2MGM1MjgzZjdhZjQ5
NmZhMWI5NDIxNTMwMy4uZjAwODE5NGI2NWJhZWY3NTU1YzA0MmQ1NzY5Mzc5ZGEzNzMwYmFjNiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CkBA
IC0yODYsNiArMjg2LDcgQEAgY2xhc3MgVXBsb2FkKEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21t
YW5kKToKICAgICAgICAgc3RlcHMuRW5zdXJlQnVnSXNPcGVuQW5kQXNzaWduZWQsCiAgICAgICAg
IHN0ZXBzLlBvc3REaWZmLAogICAgICAgICBzdGVwcy5TdWJtaXRUb0VXUywKKyAgICAgICAgc3Rl
cHMuVzNDVGVzdEV4cG9ydCwKICAgICBdCiAgICAgbG9uZ19oZWxwID0gIiIidXBsb2FkIHVwbG9h
ZHMgdGhlIGN1cnJlbnQgZGlmZiB0byBidWdzLndlYmtpdC5vcmcuCiAgICAgSWYgbm8gYnVnIGlk
IGlzIHByb3ZpZGVkLCB1cGxvYWQgd2lsbCBjcmVhdGUgYSBidWcuCkBAIC01MzEsMyArNTMyLDI1
IEBAIGNsYXNzIENyZWF0ZUJ1ZyhDb21tYW5kKToKICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2J1
Z19mcm9tX2NvbW1pdChvcHRpb25zLCBhcmdzLCB0b29sKQogICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgc2VsZi5jcmVhdGVfYnVnX2Zyb21fcGF0Y2gob3B0aW9ucywgYXJncywgdG9vbCkKKwor
CitjbGFzcyBXM0NUZXN0RXhwb3J0KEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21tYW5kKToKKyAg
ICBuYW1lID0gInczYy10ZXN0LWV4cG9ydCIKKyAgICBoZWxwX3RleHQgPSAiT3BlbnMgYSBwdWxs
IHJlcXVlc3QgdG8gc3luYyBhbnkgY2hhbmdlcyBpbiB0aGUgTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkiCisgICAgYXJndW1lbnRfbmFtZXMgPSAi
W0JVR0lEXSIKKyAgICBzdGVwcyA9IFsKKyAgICAgICAgc3RlcHMuVzNDVGVzdEV4cG9ydCwKKyAg
ICBdCisKKyAgICBsb25nX2hlbHAgPSAiIiJPcGVucyBhIHB1bGwgcmVxdWVzdCB0byB0aGUgdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cworICAgIGdpdGh1YiByZXBvIGZvciBhbnkgY2hhbmdlcyBpbiB0
aGUKKyAgICBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzIGRpcmVj
dG9yeS4gVGhpcyBzdGVwCisgICAgd2lsbCBub29wIGlmIHRoZXJlIGFyZSBubyBjaGFuZ2VzIGlu
IHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMgZGlyZWN0b3J5LgorICAgIFRoZSB1c2VyIHdpbGwgYmUg
cHJvbXB0ZWQgdG8gcHJvdmlkZSBhIGdpdGh1YiB1c2VybmFtZSBhbmQgT0F1dGggdG9rZW4KKyAg
ICB0aGUgZmlyc3QgdGltZSB0aGlzIGlzIHJ1bi4KKyAgICAiIiIKKworICAgIGRlZiBfcHJlcGFy
ZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgc3RhdGUgPSB7fQor
ICAgICAgICBzdGF0ZVsiYnVnX2lkIl0gPSBzZWxmLl9idWdfaWQob3B0aW9ucywgYXJncywgdG9v
bCwgc3RhdGUpCisgICAgICAgIHJldHVybiBzdGF0ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL19faW5pdF9fLnB5CmluZGV4IGYzYzE3MGUzMTJlZGQ3ODY0ZjlkODVhZDlj
Nzc1OWYyYmM5MWM5M2YuLjE0YjI0NWUyN2Y5NTYwZDdmZTY2ZWVjM2JjMjg4OGJkNjk3NDg0MGQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKQEAg
LTY2LDMgKzY2LDQgQEAgZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnVwZGF0ZSBpbXBvcnQgVXBk
YXRlCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdl
ciBpbXBvcnQgVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlcgogZnJvbSB3ZWJraXRweS50b29s
LnN0ZXBzLnZhbGlkYXRlY2hhbmdlbG9ncyBpbXBvcnQgVmFsaWRhdGVDaGFuZ2VMb2dzCiBmcm9t
IHdlYmtpdHB5LnRvb2wuc3RlcHMudmFsaWRhdGVyZXZpZXdlciBpbXBvcnQgVmFsaWRhdGVSZXZp
ZXdlcgorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnczY3Rlc3RleHBvcnQgaW1wb3J0IFczQ1Rl
c3RFeHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy93
M2N0ZXN0ZXhwb3J0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3czY3Rl
c3RleHBvcnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkxOWFkMDU3N2ZmYTY3YzQzYzdmOTY4MTc2NzAwMmU2
YTNhODAzYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy93M2N0ZXN0ZXhwb3J0LnB5CkBAIC0wLDAgKzEsNjAgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJv
cgorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RT
dGVwCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucworZnJv
bSB3ZWJraXRweS53M2MudGVzdF9leHBvcnRlciBpbXBvcnQgZXhwb3J0X3dwdF90ZXN0X2NoYW5n
ZXMKKworCitjbGFzcyBXM0NUZXN0RXhwb3J0KEFic3RyYWN0U3RlcCk6CisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIG9wdGlvbnMoY2xzKToKKyAgICAgICAgcmV0dXJuIEFic3RyYWN0U3RlcC5v
cHRpb25zKCkgKyBbCisgICAgICAgICAgICBPcHRpb25zLm5vbl9pbnRlcmFjdGl2ZSwKKyAgICAg
ICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKKyAgICAgICAgXQorCisgICAgZGVmIHJ1bihzZWxm
LCBzdGF0ZSk6CisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMubm9uX2ludGVyYWN0aXZlOgorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgIGFyZ3MgPSBbIi0tZ2l0LWNvbW1pdCJdCisgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdDoKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHNl
bGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKCJIRUFEIikKKworICAgICAgICBidWdfaWQgPSBzdGF0ZS5nZXQoImJ1Z19pZCIpCisg
ICAgICAgIGlmIG5vdCBidWdfaWQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgYXJncy5h
cHBlbmQoIi0tYnVnIikKKyAgICAgICAgYXJncy5hcHBlbmQoc3RyKGJ1Z19pZCkpCisgICAgICAg
IGFyZ3MuYXBwZW5kKCItLWludGVyYWN0aXZlIikKKyAgICAgICAgYXJncy5hcHBlbmQoIi0tY3Jl
YXRlLXByIikKKworICAgICAgICBleHBvcnRfd3B0X3Rlc3RfY2hhbmdlcyhhcmdzLCBzaWxlbnRf
bm9vcD1UcnVlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9u
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5CmluZGV4IGExNGFhOTUz
NTRiOTA2NzM5NDEwMTc2YzFiMDM3OGM3ZDcyMzUzMzIuLjY2ZmEzNGYyYTdlOWFmMTczNzZiNjQz
Y2I0YzFhNjRhOTg4OGIyMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L2NvbW1vbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9jb21tb24ucHkKQEAg
LTMwLDEwICszMCwxMSBAQAogCiBpbXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBv
cwogCiAKLVdQVF9HSF9PUkcgPSAndzNjJwotV1BUX0dIX1JFUE9fTkFNRSA9ICd3ZWItcGxhdGZv
cm0tdGVzdHMnCitXUFRfR0hfT1JHID0gb3MuZW52aXJvbi5nZXQoJ1dQVF9HSF9PUkcnLCAndzNj
JykKK1dQVF9HSF9SRVBPX05BTUUgPSBvcy5lbnZpcm9uLmdldCgnV1BUX0dIX1JFUE9fTkFNRScs
ICd3ZWItcGxhdGZvcm0tdGVzdHMnKQogV1BUX0dIX1VSTCA9ICdodHRwczovL2dpdGh1Yi5jb20v
JXMvJXMvJyAlIChXUFRfR0hfT1JHLCBXUFRfR0hfUkVQT19OQU1FKQogV1BUX01JUlJPUl9VUkwg
PSAnaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2V4dGVybmFsL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMuZ2l0JwogV1BUX0dIX1NTSF9VUkxfVEVNUExBVEUgPSAnaHR0cHM6Ly97fUBn
aXRodWIuY29tLyVzLyVzLmdpdCcgJSAoV1BUX0dIX09SRywgV1BUX0dIX1JFUE9fTkFNRSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5CmluZGV4IDZhOWNhNWJi
NzJjMWY4NDgzMDY0ODAzODMyYjJlYjc1NTExOWNhNmMuLmE4MjcyYzYzMzcxZThkNDVmZTk4Yjg3
N2JlMTliNDM4NTI1ZmQ5M2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfZXhwb3J0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9l
eHBvcnRlci5weQpAQCAtMjgsNiArMjgsOCBAQCBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsb2dn
aW5nCiBpbXBvcnQgb3MKIGltcG9ydCB0aW1lCitpbXBvcnQganNvbgorZnJvbSB1cmxsaWIyIGlt
cG9ydCBIVFRQRXJyb3IKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmdpdCBp
bXBvcnQgR2l0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CkBAIC0zNSwy
MCArMzcsNTcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBCdWd6
aWxsYQogZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0Rmlu
ZGVyCiBmcm9tIHdlYmtpdHB5LnczYy53cHRfZ2l0aHViIGltcG9ydCBXUFRHaXRIdWIKIGZyb20g
d2Via2l0cHkudzNjLndwdF9saW50ZXIgaW1wb3J0IFdQVExpbnRlcgorZnJvbSB3ZWJraXRweS53
M2MuY29tbW9uIGltcG9ydCBXUFRfR0hfT1JHCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKIAogV0VCS0lUX1dQVF9ESVIgPSAnTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cycKLVdQVF9QUl9VUkwgPSAiaHR0cHM6Ly9naXRodWIuY29tL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvcHVsbC8iCitXUFRfUFJfVVJMID0gImh0dHBzOi8vZ2l0aHViLmNv
bS8lcy93ZWItcGxhdGZvcm0tdGVzdHMvcHVsbC8iICUgKFdQVF9HSF9PUkcsKQogV0VCS0lUX0VY
UE9SVF9QUl9MQUJFTCA9ICd3ZWJraXQtZXhwb3J0JwogCiAKK2NsYXNzIFczY0NoYW5nZXNldChv
YmplY3QpOgorICAgICIiInRoZSBXM2NDaGFuZ2VzZXQgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9y
IGRldGVjaGluZyBjaGFuZ2VzIGluCisgICAgdGhlIHdlYi1wbGF0Zm9ybS10ZXN0IGRpcmVjdG9y
eSBhbmQgZ2VuZXJhdGluZyBwYXRjaGVzIGV4cG9ydGluZworICAgIHRob3NlIGNoYW5nZXMuCisg
ICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgb3B0aW9ucyk6CisgICAgICAg
IHNlbGYuX2hvc3QgPSBob3N0CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBob3N0LmZpbGVz
eXN0ZW0KKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKKworICAgICAgICBzZWxmLl9o
b3N0LmluaXRpYWxpemVfc2NtKCkKKworICAgIGRlZiBoYXNfd3B0X2NoYW5nZXMoc2VsZik6Cisg
ICAgICAgIHJldHVybiBib29sKHNlbGYuX2NyZWF0ZV9wYXRjaCgpKQorCisgICAgZGVmIF9jcmVh
dGVfcGF0Y2goc2VsZik6CisgICAgICAgIGdpdF9jb21taXQgPSAiSEVBRC4uLi4iIGlmIG5vdCBz
ZWxmLl9vcHRpb25zLmdpdF9jb21taXQgZWxzZSBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQgKyAi
fjEuLiIgKyBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQKKyAgICAgICAgcGF0Y2hfZGF0YSA9IHNl
bGYuX2hvc3Quc2NtKCkuY3JlYXRlX3BhdGNoKGdpdF9jb21taXQsIFtXRUJLSVRfV1BUX0RJUl0p
CisgICAgICAgIGlmIG5vdCBwYXRjaF9kYXRhIG9yIG5vdCAnZGlmZicgaW4gcGF0Y2hfZGF0YToK
KyAgICAgICAgICAgIHJldHVybiAnJworICAgICAgICByZXR1cm4gcGF0Y2hfZGF0YQorCisgICAg
ZGVmIGNyZWF0ZV9naXRfcGF0Y2hfZmlsZShzZWxmKToKKyAgICAgICAgcGF0Y2hfZmlsZSA9ICcu
L3BhdGNoLnRlbXAuJyArIHN0cih0aW1lLmNsb2NrKCkpCisgICAgICAgIHBhdGNoX2RhdGEgPSBz
ZWxmLl9jcmVhdGVfcGF0Y2goKQorICAgICAgICBpZiBub3QgJ2RpZmYnIGluIHBhdGNoX2RhdGE6
CisgICAgICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0sIHBhdGNoIGRh
dGEgaXM6ICIlcyInICUgKHBhdGNoX2RhdGEpKQorICAgICAgICAgICAgcmV0dXJuICcnCisgICAg
ICAgICMgRklYTUU6IFdlIGNhbiBwcm9iYWJseSB0cnkgdG8gdXNlIC0tcmVsYXRpdmUgZ2l0IHBh
cmFtZXRlciB0byBub3QgZG8gdGhhdCByZXBsYWNlbWVudC4KKyAgICAgICAgcGF0Y2hfZGF0YSA9
IHBhdGNoX2RhdGEucmVwbGFjZShXRUJLSVRfV1BUX0RJUiArICcvJywgJycpCisgICAgICAgIHBh
dGNoX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgocGF0Y2hfZmlsZSkKKyAgICAgICAg
c2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0Y2hfZmlsZSwgcGF0Y2hfZGF0YSkK
KyAgICAgICAgcmV0dXJuIHBhdGNoX2ZpbGUKKwogY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6
CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgb3B0aW9ucywgZ2l0Q2xhc3M9R2l0LCBi
dWd6aWxsYUNsYXNzPUJ1Z3ppbGxhLCBXUFRHaXRIdWJDbGFzcz1XUFRHaXRIdWIsIFdQVExpbnRl
ckNsYXNzPVdQVExpbnRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIG9wdGlvbnMs
IHczY19jaGFuZ2VzZXQsIGdpdENsYXNzPUdpdCwgYnVnemlsbGFDbGFzcz1CdWd6aWxsYSwgV1BU
R2l0SHViQ2xhc3M9V1BUR2l0SHViLCBXUFRMaW50ZXJDbGFzcz1XUFRMaW50ZXIpOgogICAgICAg
ICBzZWxmLl9ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gaG9zdC5maWxl
c3lzdGVtCiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuX3cz
Y19jaGFuZ2VzZXQgPSB3M2NfY2hhbmdlc2V0CiAKICAgICAgICAgc2VsZi5faG9zdC5pbml0aWFs
aXplX3NjbSgpCiAKQEAgLTY3LDI1ICsxMDYsNyBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0
KToKICAgICAgICAgc2VsZi5fZ2l0ID0gc2VsZi5fZW5zdXJlX3dwdF9yZXBvc2l0b3J5KCJodHRw
czovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiLCBzZWxmLl9vcHRpb25z
LnJlcG9zaXRvcnlfZGlyZWN0b3J5LCBnaXRDbGFzcykKICAgICAgICAgc2VsZi5fbGludGVyID0g
V1BUTGludGVyQ2xhc3Moc2VsZi5fb3B0aW9ucy5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgaG9zdC5m
aWxlc3lzdGVtKQogCi0gICAgICAgIHNlbGYuX3VzZXJuYW1lID0gb3B0aW9ucy51c2VybmFtZQot
ICAgICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6Ci0gICAgICAgICAgICBzZWxmLl91c2VybmFt
ZSA9IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScpLnJzdHJpcCgpCi0g
ICAgICAgICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
dXNlcm5hbWUgPSBvcy5lbnZpcm9uLmdldCgnR0lUSFVCX1VTRVJOQU1FJykKLSAgICAgICAgICAg
IGlmIG5vdCBzZWxmLl91c2VybmFtZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJNaXNzaW5nIEdpdEh1YiB1c2VybmFtZSwgcGxlYXNlIHByb3ZpZGUgaXQgYXMgYSBjb21tYW5k
IGFyZ3VtZW50IChzZWUgaGVscCBmb3IgdGhlIGNvbW1hbmQpLiIpCi0gICAgICAgIGVsaWYgbm90
IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScpOgotICAgICAgICAgICAg
c2VsZi5fZ2l0LnNldF9sb2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScsIHNlbGYuX3VzZXJu
YW1lKQotCi0gICAgICAgIHNlbGYuX3Rva2VuID0gb3B0aW9ucy50b2tlbgotICAgICAgICBpZiBu
b3Qgc2VsZi5fdG9rZW46Ci0gICAgICAgICAgICBzZWxmLl90b2tlbiA9IHNlbGYuX2dpdC5sb2Nh
bF9jb25maWcoJ2dpdGh1Yi50b2tlbicpLnJzdHJpcCgpCi0gICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5fdG9rZW46Ci0gICAgICAgICAgICAgICAgc2VsZi5fdG9rZW4gPSBvcy5lbnZpcm9uLmdldCgn
R0lUSFVCX1RPS0VOJykKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90b2tlbjoKLSAgICAgICAg
ICAgICAgICBfbG9nLmluZm8oIk1pc3NpbmcgR2l0SHViIHRva2VuLCB0aGUgc2NyaXB0IHdpbGwg
bm90IGJlIGFibGUgdG8gY3JlYXRlIGEgcHVsbCByZXF1ZXN0IHRvIFczQyB3ZWItcGxhdGZvcm0t
dGVzdHMgcmVwb3NpdG9yeS4iKQotICAgICAgICBlbGlmIG5vdCBzZWxmLl9naXQubG9jYWxfY29u
ZmlnKCdnaXRodWIudG9rZW4nKToKLSAgICAgICAgICAgIHNlbGYuX2dpdC5zZXRfbG9jYWxfY29u
ZmlnKCdnaXRodWIudG9rZW4nLCBzZWxmLl90b2tlbikKKyAgICAgICAgc2VsZi5fZW5zdXJlX3Vz
ZXJuYW1lX2FuZF90b2tlbihvcHRpb25zKQogCiAgICAgICAgIHNlbGYuX2dpdGh1YiA9IFdQVEdp
dEh1YkNsYXNzKHNlbGYuX2hvc3QsIHNlbGYuX3VzZXJuYW1lLCBzZWxmLl90b2tlbikgaWYgc2Vs
Zi5fdXNlcm5hbWUgYW5kIHNlbGYuX3Rva2VuIGVsc2UgTm9uZQogCkBAIC0xMDQsNiArMTI1LDYw
IEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICBpZiBub3Qgc2VsZi5fd3B0
X2ZvcmtfcHVzaF91cmw6CiAgICAgICAgICAgICBzZWxmLl93cHRfZm9ya19wdXNoX3VybCA9ICJo
dHRwczovLyIgKyBzZWxmLl91c2VybmFtZSArICJAZ2l0aHViLmNvbS8iICsgc2VsZi5fdXNlcm5h
bWUgKyAiL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiCiAKKyAgICBkZWYgX3Byb21wdF9mb3JfdG9r
ZW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9ob3N0LnVzZXIucHJvbXB0X3Bhc3N3b3Jk
KCdFbnRlciBnaXRodWIgT0F1dGggdG9rZW46ICcpCisKKyAgICBkZWYgX3Byb21wdF9mb3JfdXNl
cm5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9ob3N0LnVzZXIucHJvbXB0KCdFbnRl
ciBnaXRodWIgdXNlcm5hbWU6ICcpCisKKyAgICBkZWYgX2Vuc3VyZV91c2VybmFtZV9hbmRfdG9r
ZW4oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgICIiIgorICAgICAgICBBc2sgdGhlIHVzZXIgdG8g
cHJvdmlkZSBhIHVzZXJuYW1lIGFuZCB0b2tlbiBpZiB0aGUKKyAgICAgICAgLS1pbnRlcmFjdGl2
ZSBmbGFnIGlzIHBhc3NlZCBhbmQgdXNlcm5hbWUgYW5kIHRva2VuCisgICAgICAgIGFyZSBub3Qg
YWxyZWFkeSBzZXQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl91c2VybmFtZSA9IG9wdGlv
bnMudXNlcm5hbWUKKyAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgorICAgICAgICAgICAg
c2VsZi5fdXNlcm5hbWUgPSBzZWxmLl9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUn
KS5yc3RyaXAoKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgorICAgICAgICAg
ICAgICAgIHNlbGYuX3VzZXJuYW1lID0gb3MuZW52aXJvbi5nZXQoJ0dJVEhVQl9VU0VSTkFNRScp
CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWUgYW5kIG9wdGlvbnMuaW50ZXJhY3Rp
dmVfbW9kZToKKyAgICAgICAgICAgICAgICBzZWxmLl91c2VybmFtZSA9IHNlbGYuX3Byb21wdF9m
b3JfdXNlcm5hbWUoKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgorICAgICAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk1pc3NpbmcgR2l0SHViIHVzZXJuYW1lLCBwbGVh
c2UgcHJvdmlkZSBpdCBhcyBhIGNvbW1hbmQgYXJndW1lbnQgKHNlZSBoZWxwIGZvciB0aGUgY29t
bWFuZCkuIikKKworICAgICAgICBzZWxmLl90b2tlbiA9IG9wdGlvbnMudG9rZW4KKyAgICAgICAg
aWYgbm90IHNlbGYuX3Rva2VuOgorICAgICAgICAgICAgc2VsZi5fdG9rZW4gPSBzZWxmLl9naXQu
bG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nKS5yc3RyaXAoKQorICAgICAgICAgICAgaWYgbm90
IHNlbGYuX3Rva2VuOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rva2VuID0gb3MuZW52aXJvbi5n
ZXQoJ0dJVEhVQl9UT0tFTicpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW4gYW5kIG9w
dGlvbnMuaW50ZXJhY3RpdmVfbW9kZToKKyAgICAgICAgICAgICAgICBzZWxmLl90b2tlbiA9IHNl
bGYuX3Byb21wdF9mb3JfdG9rZW4oKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Rva2VuOgor
ICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiTWlzc2luZyBHaXRIdWIgdG9rZW4sIHRoZSBzY3Jp
cHQgd2lsbCBub3QgYmUgYWJsZSB0byBjcmVhdGUgYSBwdWxsIHJlcXVlc3QgdG8gVzNDIHdlYi1w
bGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5LiIpCisKKyAgICAgICAgaWYgc2VsZi5fdG9rZW46Cisg
ICAgICAgICAgICBzZWxmLl92YWxpZGF0ZV9hbmRfc2F2ZV90b2tlbihzZWxmLl91c2VybmFtZSwg
c2VsZi5fdG9rZW4pCisKKyAgICBkZWYgX3ZhbGlkYXRlX2FuZF9zYXZlX3Rva2VuKHNlbGYsIHVz
ZXJuYW1lLCB0b2tlbik6CisgICAgICAgICMgdmFsaWRhdGUgdG9rZW4gYW5kIHVzZXJuYW1lCisg
ICAgICAgIHVybCA9ICdodHRwczovL2FwaS5naXRodWIuY29tL3VzZXI/YWNjZXNzX3Rva2VuPSVz
JyAlICh0b2tlbiwpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5f
aG9zdC53ZWIucmVxdWVzdChtZXRob2Q9J0dFVCcsIHVybD11cmwsIGRhdGE9Tm9uZSkKKyAgICAg
ICAgZXhjZXB0IEhUVFBFcnJvciBhcyBlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJP
QXV0aCB0b2tlbiBpcyBub3QgdmFsaWQiKQorICAgICAgICBkYXRhID0ganNvbi5sb2FkKHJlc3Bv
bnNlKQorICAgICAgICBsb2dpbiA9IGRhdGEuZ2V0KCdsb2dpbicsIE5vbmUpCisgICAgICAgIGlm
IGxvZ2luICE9IHVzZXJuYW1lOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJPQXV0aCB0
b2tlbiBkb2VzIG5vdCBtYXRjaCB0aGUgcHJvdmlkZWQgdXNlcm5hbWUuIFByb3ZpZGVkIHVzZXI6
ICVzLCBnaXRodWIgbG9naW46ICVzIiAlICh1c2VybmFtZSwgbG9naW4pKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgIyBVc2VybmFtZSBhbmQgdG9rZW4gYXJlIHZhbGlkLiBTYXZlIHRoZW0g
aW4gdGhlIGdpdCBjb25maWcgc28gd2UKKyAgICAgICAgICAgICMgZG8gbm90IG5lZWQgdG8gYXNr
IGZvciB0aGVtIGFnYWluCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZ2l0LmxvY2FsX2NvbmZp
ZygnZ2l0aHViLnRva2VuJyk6CisgICAgICAgICAgICAgICAgc2VsZi5fZ2l0LnNldF9sb2NhbF9j
b25maWcoJ2dpdGh1Yi50b2tlbicsIHRva2VuKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2dp
dC5sb2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScpOgorICAgICAgICAgICAgICAgIHNlbGYu
X2dpdC5zZXRfbG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnLCB1c2VybmFtZSkKKwogICAg
IGRlZiBfZW5zdXJlX3dwdF9yZXBvc2l0b3J5KHNlbGYsIHVybCwgd3B0X3JlcG9zaXRvcnlfZGly
ZWN0b3J5LCBnaXRDbGFzcyk6CiAgICAgICAgIGdpdCA9IE5vbmUKICAgICAgICAgaWYgbm90IHNl
bGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHdwdF9yZXBvc2l0b3J5X2RpcmVjdG9yeSk6CkBAIC0yMDgs
MjIgKzI4MywxOSBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5f
Z2l0LmRlbGV0ZV9icmFuY2goc2VsZi5fYnJhbmNoX25hbWUpCiAKICAgICBkZWYgY3JlYXRlX2dp
dF9wYXRjaChzZWxmKToKLSAgICAgICAgcGF0Y2hfZmlsZSA9ICcuL3BhdGNoLnRlbXAuJyArIHN0
cih0aW1lLmNsb2NrKCkpCi0gICAgICAgIGdpdF9jb21taXQgPSAiSEVBRC4uLi4iIGlmIG5vdCBz
ZWxmLl9vcHRpb25zLmdpdF9jb21taXQgZWxzZSBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQgKyAi
fjEuLiIgKyBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQKLSAgICAgICAgcGF0Y2hfZGF0YSA9IHNl
bGYuX2hvc3Quc2NtKCkuY3JlYXRlX3BhdGNoKGdpdF9jb21taXQsIFtXRUJLSVRfV1BUX0RJUl0p
Ci0gICAgICAgIGlmIG5vdCBwYXRjaF9kYXRhIG9yIG5vdCAnZGlmZicgaW4gcGF0Y2hfZGF0YToK
LSAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gY2hhbmdlcyB0byB1cHN0cmVhbSwgcGF0Y2ggZGF0
YSBpczogIiVzIicgJSAocGF0Y2hfZGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gJycKLSAgICAg
ICAgIyBGSVhNRTogV2UgY2FuIHByb2JhYmx5IHRyeSB0byB1c2UgLS1yZWxhdGl2ZSBnaXQgcGFy
YW1ldGVyIHRvIG5vdCBkbyB0aGF0IHJlcGxhY2VtZW50LgotICAgICAgICBwYXRjaF9kYXRhID0g
cGF0Y2hfZGF0YS5yZXBsYWNlKFdFQktJVF9XUFRfRElSICsgJy8nLCAnJykKLSAgICAgICAgcGF0
Y2hfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChwYXRjaF9maWxlKQotICAgICAgICBz
ZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRjaF9maWxlLCBwYXRjaF9kYXRhKQot
ICAgICAgICByZXR1cm4gcGF0Y2hfZmlsZQorICAgICAgICByZXR1cm4gc2VsZi5fdzNjX2NoYW5n
ZXNldC5jcmVhdGVfZ2l0X3BhdGNoX2ZpbGUoKQogCiAgICAgZGVmIGNyZWF0ZV91cGxvYWRfcmVt
b3RlX2lmX25lZWRlZChzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX3dwdF9mb3JrX3JlbW90
ZSBpbiBzZWxmLl9naXQucmVtb3RlKFtdKToKICAgICAgICAgICAgIHNlbGYuX2dpdC5yZW1vdGUo
WyJhZGQiLCBzZWxmLl93cHRfZm9ya19yZW1vdGUsIHNlbGYuX3dwdF9mb3JrX3B1c2hfdXJsXSkK
IAorICAgIGRlZiBfY29uZmlybV9leHBvcnQoc2VsZik6CisgICAgICAgIG1lc3NhZ2UgPSAid2Vi
LXBsYXRmb3JtLXRlc3RzIGNoYW5nZXMgZGV0ZWN0ZWQuIFdvdWxkIHlvdSBsaWtlIHRvIGNyZWF0
ZSBhIHB1bGwtcmVxdWVzdCB0byB0aGUgV1BUIGdpdGh1YiByZXBvIG5vdz8iCisgICAgICAgIGlm
IHNlbGYuX29wdGlvbnMuaW50ZXJhY3RpdmVfbW9kZToKKyAgICAgICAgICAgIHJldHVybiBzZWxm
Ll9ob3N0LnVzZXIuY29uZmlybShtZXNzYWdlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cmV0dXJuIFRydWUKKwogICAgIGRlZiBkb19leHBvcnQoc2VsZik6CiAgICAgICAgIGdpdF9wYXRj
aF9maWxlID0gc2VsZi5jcmVhdGVfZ2l0X3BhdGNoKCkKIApAQCAtMjMxLDYgKzMwMyw5IEBAIGNs
YXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgX2xvZy5lcnJvcigiVW5hYmxl
IHRvIGNyZWF0ZSBhIHBhdGNoIHRvIGFwcGx5IHRvIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0
b3J5IikKICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGlmIG5vdCBzZWxmLl9jb25maXJt
X2V4cG9ydCgpOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgc2VsZi5fZmV0Y2hfd3B0
X3JlcG9zaXRvcnkoKQogICAgICAgICBzZWxmLmNsZWFuKCkKIApAQCAtMjkwLDYgKzM2NSw3IEBA
IGRlZiBwYXJzZV9hcmdzKGFyZ3MpOgogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy11JywgJy0t
cmVtb3RlLXVybCcsIGRlc3Q9J3JlcG9zaXRvcnlfcmVtb3RlX3VybCcsIGRlZmF1bHQ9Tm9uZSwg
aGVscD0ncmVwb3NpdG9yeSB1cmwgdG8gdXNlIHRvIHB1c2gnKQogICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoJy1kJywgJy0tcmVwb3NpdG9yeScsIGRlc3Q9J3JlcG9zaXRvcnlfZGlyZWN0b3J5Jywg
ZGVmYXVsdD1Ob25lLCBoZWxwPSdyZXBvc2l0b3J5IGRpcmVjdG9yeScpCiAgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgnLWMnLCAnLS1jcmVhdGUtcHInLCBkZXN0PSdjcmVhdGVfcHVsbF9yZXF1ZXN0
JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwgaGVscD0nY3JlYXRlIHB1bGwg
cmVxdWVzdCB0byB3M2Mgd2ViLXBsYXRmb3JtLXRlc3RzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCctaScsICctLWludGVyYWN0aXZlJywgZGVzdD0naW50ZXJhY3RpdmVfbW9kZScsIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J1Byb21wdHMgdGhlIHVzZXIgZm9y
IHRoZWlyIGdpdGh1YiBjcmVkZW50aWFscyBhbmQgYXNrcyBmb3IgY29uZmlybWF0aW9uIGJlZm9y
ZSBleHBvcnRpbmcgdGhlIGNoYW5nZXMuJykKIAogICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIu
cGFyc2Vfa25vd25fYXJncyhhcmdzKQogCkBAIC0zMDUsNiArMzgxLDcgQEAgZGVmIGNvbmZpZ3Vy
ZV9sb2dnaW5nKCk6CiAgICAgICAgICAgICByZXR1cm4gcmVjb3JkLmdldE1lc3NhZ2UoKQogCiAg
ICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dlYmtpdHB5LnczYy50ZXN0X2V4cG9ydGVy
JykKKyAgICBsb2dnZXIucHJvcGFnYXRlID0gRmFsc2UKICAgICBsb2dnZXIuc2V0TGV2ZWwobG9n
Z2luZy5JTkZPKQogICAgIGhhbmRsZXIgPSBMb2dIYW5kbGVyKCkKICAgICBoYW5kbGVyLnNldExl
dmVsKGxvZ2dpbmcuSU5GTykKQEAgLTMxMywxMCArMzkwLDE5IEBAIGRlZiBjb25maWd1cmVfbG9n
Z2luZygpOgogCiAKIGRlZiBtYWluKF9hcmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKLSAgICBvcHRp
b25zID0gcGFyc2VfYXJncyhfYXJndikKKyAgICBleHBvcnRfd3B0X3Rlc3RfY2hhbmdlcyhfYXJn
diwgc2lsZW50X25vb3A9RmFsc2UpCisKKworZGVmIGV4cG9ydF93cHRfdGVzdF9jaGFuZ2VzKGFy
Z3MsIHNpbGVudF9ub29wPUZhbHNlKToKKyAgICBvcHRpb25zID0gcGFyc2VfYXJncyhhcmdzKQog
CiAgICAgY29uZmlndXJlX2xvZ2dpbmcoKQogCi0gICAgdGVzdF9leHBvcnRlciA9IFRlc3RFeHBv
cnRlcihIb3N0KCksIG9wdGlvbnMpCisgICAgaG9zdCA9IEhvc3QoKQorICAgIHczY19jaGFuZ2Vz
ZXQgPSBXM2NDaGFuZ2VzZXQoaG9zdCwgb3B0aW9ucykKIAotICAgIHRlc3RfZXhwb3J0ZXIuZG9f
ZXhwb3J0KCkKKyAgICBpZiB3M2NfY2hhbmdlc2V0Lmhhc193cHRfY2hhbmdlcygpOgorICAgICAg
ICB0ZXN0X2V4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIHczY19jaGFuZ2Vz
ZXQpCisgICAgICAgIHRlc3RfZXhwb3J0ZXIuZG9fZXhwb3J0KCkKKyAgICBlbGlmIG5vdCBzaWxl
bnRfbm9vcDoKKyAgICAgICAgX2xvZy5pbmZvKCdObyBjaGFuZ2VzIHRvIHVwc3RyZWFtLiBFeGl0
aW5nLi4uJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhw
b3J0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9y
dGVyX3VuaXR0ZXN0LnB5CmluZGV4IGI4MzM0YTk0OWM2MTI4NjcyZTNjNDcyNGYxNjEwM2MwNGY5
Y2I5ODkuLmRlZDJjMTM2ZDAzNmI0ZjliYzZlM2Y4OGZiYWRjZTJlMTM0NTBjY2UgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5w
eQpAQCAtMjUsNyArMjUsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHkuY29tbW9u
Lmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5m
aWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCi1mcm9tIHdlYmtp
dHB5LnczYy50ZXN0X2V4cG9ydGVyIGltcG9ydCBUZXN0RXhwb3J0ZXIsIHBhcnNlX2FyZ3MKK2Zy
b20gd2Via2l0cHkudzNjLnRlc3RfZXhwb3J0ZXIgaW1wb3J0IFRlc3RFeHBvcnRlciwgVzNjQ2hh
bmdlc2V0LCBwYXJzZV9hcmdzCiBmcm9tIHdlYmtpdHB5LnczYy53cHRfZ2l0aHViX21vY2sgaW1w
b3J0IE1vY2tXUFRHaXRIdWIKIAogbW9ja19saW50ZXIgPSBOb25lCkBAIC0xMjIsOCArMTIyLDEw
IEBAIGNsYXNzIFRlc3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVm
IHRlc3RfZXhwb3J0KHNlbGYpOgogICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1v
Y2tIb3N0KCkKKyAgICAgICAgaG9zdC53ZWIucmVzcG9uc2VzLmFwcGVuZCh7J3N0YXR1c19jb2Rl
JzogMjAwLCAnYm9keSc6ICd7ImxvZ2luIjogIlVTRVIifSd9KQogICAgICAgICBvcHRpb25zID0g
cGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0
JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nXSkKLSAgICAgICAgZXhwb3J0ZXIg
PSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBU
ZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVy
VGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICB3M2NfY2hhbmdlc2V0ID0gVzNjQ2hhbmdlc2V0
KGhvc3QsIG9wdGlvbnMpCisgICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9w
dGlvbnMsIHczY19jaGFuZ2VzZXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9y
dGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9j
a1dQVExpbnRlcikKICAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoZXhwb3J0ZXIuX2dpdGh1Yi5jYWxscywgWydjcmVhdGVfcHInLCAnYWRkX2xh
YmVsICJ3ZWJraXQtZXhwb3J0IiddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1dlYktpdCBl
eHBvcnQnIGluIGV4cG9ydGVyLl9naXRodWIucHVsbF9yZXF1ZXN0c19jcmVhdGVkWzBdWzFdKQpA
QCAtMTUwLDggKzE1MiwxMCBAQCBjbGFzcyBUZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKIAogICAgIGRlZiB0ZXN0X2V4cG9ydF93aXRoX3NwZWNpZmljX2JyYW5jaChzZWxmKToK
ICAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAgIGhv
c3Qud2ViLnJlc3BvbnNlcy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDIwMCwgJ2JvZHknOiAneyJs
b2dpbiI6ICJVU0VSIn0nfSkKICAgICAgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoWyd0ZXN0X2V4
cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICctYycsICctbicsICdVU0VS
JywgJy10JywgJ1RPS0VOJywgJy1ibicsICd3cHQtZXhwb3J0LWJyYW5jaCddKQotICAgICAgICBl
eHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1v
Y2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0
RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIHczY19jaGFuZ2VzZXQgPSBXM2ND
aGFuZ2VzZXQoaG9zdCwgb3B0aW9ucykKKyAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIo
aG9zdCwgb3B0aW9ucywgdzNjX2NoYW5nZXNldCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBU
ZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVy
VGVzdC5Nb2NrV1BUTGludGVyKQogICAgICAgICBleHBvcnRlci5kb19leHBvcnQoKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhleHBvcnRlci5fZ2l0LmNhbGxzLCBbCiAgICAgICAgICAgICAn
L21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3dlYi1wbGF0Zm9ybS10ZXN0cycs
CkBAIC0xNjksMyArMTczLDI5IEBAIGNsYXNzIFRlc3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICAgICAgJ2RlbGV0ZSBicmFuY2ggd3B0LWV4cG9ydC1mb3Itd2Via2l0
LTEyMzQnLAogICAgICAgICAgICAgJ2NoZWNrb3V0IG1hc3RlcicsCiAgICAgICAgICAgICAncmVz
ZXQgaGFyZCBvcmlnaW4vbWFzdGVyJ10pCisKKyAgICBkZWYgdGVzdF9leHBvcnRfaW50ZXJhY3Rp
dmVfbW9kZShzZWxmKToKKyAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9z
dCgpCisgICAgICAgIGhvc3Qud2ViLnJlc3BvbnNlcy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDIw
MCwgJ2JvZHknOiAneyJsb2dpbiI6ICJVU0VSIn0nfSkKKyAgICAgICAgb3B0aW9ucyA9IHBhcnNl
X2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICct
YycsICctbicsICdVU0VSJywgJy10JywgJ1RPS0VOJywgJy0taW50ZXJhY3RpdmUnXSkKKyAgICAg
ICAgdzNjX2NoYW5nZXNldCA9IFczY0NoYW5nZXNldChob3N0LCBvcHRpb25zKQorICAgICAgICBl
eHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCB3M2NfY2hhbmdlc2V0LCBUZXN0
RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2Nr
V1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIGV4cG9y
dGVyLmRvX2V4cG9ydCgpCisKKyAgICBkZWYgdGVzdF9leHBvcnRfaW52YWxpZF90b2tlbihzZWxm
KToKKyAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAg
IGhvc3Qud2ViLnJlc3BvbnNlcy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDQwMX0pCisgICAgICAg
IG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICctZycsICdIRUFEJywg
Jy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tFTiddKQorICAgICAg
ICB3M2NfY2hhbmdlc2V0ID0gVzNjQ2hhbmdlc2V0KGhvc3QsIG9wdGlvbnMpCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgorICAgICAgICAgICAg
ZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgdzNjX2NoYW5nZXNldCwgVGVz
dEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9j
a1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICBzZWxm
LmFzc2VydEluKCdPQXV0aCB0b2tlbiBpcyBub3QgdmFsaWQnLCBzdHIoY29udGV4dC5leGNlcHRp
b24pKQorCisgICAgZGVmIHRlc3RfZXhwb3J0X3dyb25nX3Rva2VuKHNlbGYpOgorICAgICAgICBo
b3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC53ZWIucmVz
cG9uc2VzLmFwcGVuZCh7J3N0YXR1c19jb2RlJzogMjAwLCAnYm9keSc6ICd7ImxvZ2luIjogIkRJ
RkZfVVNFUiJ9J30pCisgICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRl
ci5weScsICctZycsICdIRUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICct
dCcsICdUT0tFTiddKQorICAgICAgICB3M2NfY2hhbmdlc2V0ID0gVzNjQ2hhbmdlc2V0KGhvc3Qs
IG9wdGlvbnMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBj
b250ZXh0OgorICAgICAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9u
cywgdzNjX2NoYW5nZXNldCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJU
ZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BU
TGludGVyKQorICAgICAgICBzZWxmLmFzc2VydEluKCdPQXV0aCB0b2tlbiBkb2VzIG5vdCBtYXRj
aCB0aGUgcHJvdmlkZWQgdXNlcm5hbWUnLCBzdHIoY29udGV4dC5leGNlcHRpb24pKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338734</attachid>
            <date>2018-04-25 07:30:46 -0700</date>
            <delta_ts>2018-05-11 10:47:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184914-20180425103045.patch</filename>
            <type>text/plain</type>
            <size>23807</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTkyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGVlZmMwZDY2ZTdlYjAyZWEyYmRhNjQ2ZmRjZmZmMmU3
YmMyODdmMS4uMDk0YWQzOWE2MzhkMDYwZWE3OWNlODBlYzQ3YjU1M2MyYWYwNDBhZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4
IEBACisyMDE4LTA0LTI1ICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgRXhwb3J0IGNoYW5nZXMgdG8gd2ViLXBsYXRmb3JtLXRlc3QgYXMgcGFydCBv
ZiB0aGUgd2Via2l0LXBhdGNoIHVwbG9hZCB3b3JrZmxvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
d2ViX21vY2sucHk6CisgICAgICAgIChNb2NrUmVzcG9uc2UuX19pbml0X18pOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9sb2d1dGlscy5weToKKyAgICAgICAgKGNv
bmZpZ3VyZV9sb2dnaW5nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5OgorICAgICAgICAoVXBsb2FkKToKKyAgICAgICAgKENyZWF0ZUJ1Zy5leGVj
dXRlKToKKyAgICAgICAgKFczQ1Rlc3RFeHBvcnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvdzNjdGVzdGV4cG9ydC5weTogQWRkZWQuCisgICAgICAgIChXM0NUZXN0RXhwb3J0
KToKKyAgICAgICAgKFczQ1Rlc3RFeHBvcnQub3B0aW9ucyk6CisgICAgICAgIChXM0NUZXN0RXhw
b3J0LnJ1bik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHk6CisgICAgICAgIChX
M2NDaGFuZ2VzZXQpOgorICAgICAgICAoVzNjQ2hhbmdlc2V0Ll9faW5pdF9fKToKKyAgICAgICAg
KFczY0NoYW5nZXNldC5oYXNfd3B0X2NoYW5nZXMpOgorICAgICAgICAoVzNjQ2hhbmdlc2V0Ll9j
cmVhdGVfcGF0Y2gpOgorICAgICAgICAoVzNjQ2hhbmdlc2V0LmNyZWF0ZV9naXRfcGF0Y2hfZmls
ZSk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdEV4cG9y
dGVyLl9wcm9tcHRfZm9yX3Rva2VuKToKKyAgICAgICAgKFRlc3RFeHBvcnRlcik6CisgICAgICAg
IChUZXN0RXhwb3J0ZXIuX3Byb21wdF9mb3JfdXNlcm5hbWUpOgorICAgICAgICAoVGVzdEV4cG9y
dGVyLl9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2VuKToKKyAgICAgICAgKFRlc3RFeHBvcnRlci5f
dmFsaWRhdGVfYW5kX3NhdmVfdG9rZW4pOgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNyZWF0ZV9n
aXRfcGF0Y2gpOgorICAgICAgICAoVGVzdEV4cG9ydGVyLl9jb25maXJtX2V4cG9ydCk6CisgICAg
ICAgIChUZXN0RXhwb3J0ZXIuZG9fZXhwb3J0KToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHk6Cisg
ICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0KToKKyAgICAgICAgKFRlc3RFeHBv
cnRlclRlc3QudGVzdF9leHBvcnRfd2l0aF9zcGVjaWZpY19icmFuY2gpOgorICAgICAgICAoVGVz
dEV4cG9ydGVyVGVzdCk6CisgICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X2lu
dGVyYWN0aXZlX21vZGUpOgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0X2V4cG9ydF9p
bnZhbGlkX3Rva2VuKToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVzdF9leHBvcnRfd3Jv
bmdfdG9rZW4pOgorCiAyMDE4LTA0LTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBJbXBsZW1lbnQgTW91c2VFdmVudC5idXR0b25z
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2Fk
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQppbmRl
eCA5MzNkYjJkMDg1MjBkODYwYzUyODNmN2FmNDk2ZmExYjk0MjE1MzAzLi5mMDA4MTk0YjY1YmFl
Zjc1NTVjMDQyZDU3NjkzNzlkYTM3MzBiYWM2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKQEAgLTI4Niw2ICsyODYsNyBAQCBjbGFzcyBVcGxv
YWQoQWJzdHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgogICAgICAgICBzdGVwcy5FbnN1cmVC
dWdJc09wZW5BbmRBc3NpZ25lZCwKICAgICAgICAgc3RlcHMuUG9zdERpZmYsCiAgICAgICAgIHN0
ZXBzLlN1Ym1pdFRvRVdTLAorICAgICAgICBzdGVwcy5XM0NUZXN0RXhwb3J0LAogICAgIF0KICAg
ICBsb25nX2hlbHAgPSAiIiJ1cGxvYWQgdXBsb2FkcyB0aGUgY3VycmVudCBkaWZmIHRvIGJ1Z3Mu
d2Via2l0Lm9yZy4KICAgICBJZiBubyBidWcgaWQgaXMgcHJvdmlkZWQsIHVwbG9hZCB3aWxsIGNy
ZWF0ZSBhIGJ1Zy4KQEAgLTUzMSwzICs1MzIsMjUgQEAgY2xhc3MgQ3JlYXRlQnVnKENvbW1hbmQp
OgogICAgICAgICAgICAgc2VsZi5jcmVhdGVfYnVnX2Zyb21fY29tbWl0KG9wdGlvbnMsIGFyZ3Ms
IHRvb2wpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9idWdfZnJvbV9w
YXRjaChvcHRpb25zLCBhcmdzLCB0b29sKQorCisKK2NsYXNzIFczQ1Rlc3RFeHBvcnQoQWJzdHJh
Y3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgorICAgIG5hbWUgPSAidzNjLXRlc3QtZXhwb3J0Igor
ICAgIGhlbHBfdGV4dCA9ICJPcGVucyBhIHB1bGwgcmVxdWVzdCB0byBzeW5jIGFueSBjaGFuZ2Vz
IGluIHRoZSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzIGRpcmVj
dG9yeSIKKyAgICBhcmd1bWVudF9uYW1lcyA9ICJbQlVHSURdIgorICAgIHN0ZXBzID0gWworICAg
ICAgICBzdGVwcy5XM0NUZXN0RXhwb3J0LAorICAgIF0KKworICAgIGxvbmdfaGVscCA9ICIiIk9w
ZW5zIGEgcHVsbCByZXF1ZXN0IHRvIHRoZSB3M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCisgICAgZ2l0
aHViIHJlcG8gZm9yIGFueSBjaGFuZ2VzIGluIHRoZQorICAgIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMgZGlyZWN0b3J5LiBUaGlzIHN0ZXAKKyAgICB3aWxsIG5v
b3AgaWYgdGhlcmUgYXJlIG5vIGNoYW5nZXMgaW4gdGhlIHdlYi1wbGF0Zm9ybS10ZXN0cyBkaXJl
Y3RvcnkuCisgICAgVGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBwcm92aWRlIGEgZ2l0aHVi
IHVzZXJuYW1lIGFuZCBPQXV0aCB0b2tlbgorICAgIHRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgcnVu
LgorICAgICIiIgorCisgICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3Ms
IHRvb2wpOgorICAgICAgICBzdGF0ZSA9IHt9CisgICAgICAgIHN0YXRlWyJidWdfaWQiXSA9IHNl
bGYuX2J1Z19pZChvcHRpb25zLCBhcmdzLCB0b29sLCBzdGF0ZSkKKyAgICAgICAgcmV0dXJuIHN0
YXRlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0
X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKaW5k
ZXggZjNjMTcwZTMxMmVkZDc4NjRmOWQ4NWFkOWM3NzU5ZjJiYzkxYzkzZi4uMTRiMjQ1ZTI3Zjk1
NjBkN2ZlNjZlZWMzYmMyODg4YmQ2OTc0ODQwZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQpAQCAtNjYsMyArNjYsNCBAQCBmcm9tIHdlYmtpdHB5
LnRvb2wuc3RlcHMudXBkYXRlIGltcG9ydCBVcGRhdGUKIGZyb20gd2Via2l0cHkudG9vbC5zdGVw
cy51cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyIGltcG9ydCBVcGRhdGVDaGFuZ2VMb2dzV2l0
aFJldmlld2VyCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudmFsaWRhdGVjaGFuZ2Vsb2dzIGlt
cG9ydCBWYWxpZGF0ZUNoYW5nZUxvZ3MKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy52YWxpZGF0
ZXJldmlld2VyIGltcG9ydCBWYWxpZGF0ZVJldmlld2VyCitmcm9tIHdlYmtpdHB5LnRvb2wuc3Rl
cHMudzNjdGVzdGV4cG9ydCBpbXBvcnQgVzNDVGVzdEV4cG9ydApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3czY3Rlc3RleHBvcnQucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdzNjdGVzdGV4cG9ydC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODMx
MmNlNWU4ZDc1NTZjZDI1YmFiNTUzZDUyY2I0MTQ4YmM1OTJkCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3czY3Rlc3RleHBvcnQucHkKQEAgLTAs
MCArMSw2MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5h
YnN0cmFjdHN0ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBz
Lm9wdGlvbnMgaW1wb3J0IE9wdGlvbnMKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfZXhwb3J0ZXIg
aW1wb3J0IGV4cG9ydF93cHRfdGVzdF9jaGFuZ2VzCisKKworY2xhc3MgVzNDVGVzdEV4cG9ydChB
YnN0cmFjdFN0ZXApOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvcHRpb25zKGNscyk6Cisg
ICAgICAgIHJldHVybiBBYnN0cmFjdFN0ZXAub3B0aW9ucygpICsgWworICAgICAgICAgICAgT3B0
aW9ucy5ub25faW50ZXJhY3RpdmUsCisgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCisg
ICAgICAgIF0KKworICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgorICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBhcmdz
ID0gW10KKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0OgorICAgICAgICAgICAg
YXJncy5hcHBlbmQoIi0tZ2l0LWNvbW1pdCIpCisgICAgICAgICAgICBhcmdzLmFwcGVuZChzZWxm
Ll9vcHRpb25zLmdpdF9jb21taXQpCisKKyAgICAgICAgYnVnX2lkID0gc3RhdGUuZ2V0KCJidWdf
aWQiKQorICAgICAgICBpZiBub3QgYnVnX2lkOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgYXJncy5hcHBlbmQoIi0tYnVnIikKKyAgICAgICAgYXJncy5hcHBlbmQoc3RyKGJ1Z19pZCkp
CisgICAgICAgIGFyZ3MuYXBwZW5kKCItLWludGVyYWN0aXZlIikKKyAgICAgICAgYXJncy5hcHBl
bmQoIi0tY3JlYXRlLXByIikKKworICAgICAgICBleHBvcnRfd3B0X3Rlc3RfY2hhbmdlcyhhcmdz
LCBzaWxlbnRfbm9vcD1UcnVlLCBob3N0PXNlbGYuX3Rvb2wpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3czYy9jb21tb24ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy9jb21tb24ucHkKaW5kZXggYTE0YWE5NTM1NGI5MDY3Mzk0MTAxNzZjMWIwMzc4YzdkNzIzNTMz
Mi4uNjZmYTM0ZjJhN2U5YWYxNzM3NmI2NDNjYjRjMWE2NGE5ODg4YjIwZiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL2NvbW1vbi5weQpAQCAtMzAsMTAgKzMwLDExIEBACiAKIGltcG9ydCBqc29u
CiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCiAKIAotV1BUX0dIX09SRyA9ICd3M2MnCi1XUFRf
R0hfUkVQT19OQU1FID0gJ3dlYi1wbGF0Zm9ybS10ZXN0cycKK1dQVF9HSF9PUkcgPSBvcy5lbnZp
cm9uLmdldCgnV1BUX0dIX09SRycsICd3M2MnKQorV1BUX0dIX1JFUE9fTkFNRSA9IG9zLmVudmly
b24uZ2V0KCdXUFRfR0hfUkVQT19OQU1FJywgJ3dlYi1wbGF0Zm9ybS10ZXN0cycpCiBXUFRfR0hf
VVJMID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS8lcy8lcy8nICUgKFdQVF9HSF9PUkcsIFdQVF9HSF9S
RVBPX05BTUUpCiBXUFRfTUlSUk9SX1VSTCA9ICdodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJj
ZS5jb20vZXh0ZXJuYWwvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQnCiBXUFRfR0hfU1NIX1VS
TF9URU1QTEFURSA9ICdodHRwczovL3t9QGdpdGh1Yi5jb20vJXMvJXMuZ2l0JyAlIChXUFRfR0hf
T1JHLCBXUFRfR0hfUkVQT19OQU1FKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvdGVzdF9leHBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3Rf
ZXhwb3J0ZXIucHkKaW5kZXggNmE5Y2E1YmI3MmMxZjg0ODMwNjQ4MDM4MzJiMmViNzU1MTE5Y2E2
Yy4uZjA5YjRjYTI4NGQxODY0MjEyOTA0OGM1NzFhNDBhNDgzODgxZjY0YiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5CkBAIC0yOCw2ICsyOCw4IEBAIGlt
cG9ydCBhcmdwYXJzZQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHRpbWUKK2lt
cG9ydCBqc29uCitmcm9tIHVybGxpYjIgaW1wb3J0IEhUVFBFcnJvcgogCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jaGVja291dC5zY20uZ2l0IGltcG9ydCBHaXQKIGZyb20gd2Via2l0cHkuY29tbW9u
Lmhvc3QgaW1wb3J0IEhvc3QKQEAgLTM1LDIwICszNyw1NyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5uZXQuYnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJr
aXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKIGZyb20gd2Via2l0cHkudzNjLndwdF9naXRo
dWIgaW1wb3J0IFdQVEdpdEh1YgogZnJvbSB3ZWJraXRweS53M2Mud3B0X2xpbnRlciBpbXBvcnQg
V1BUTGludGVyCitmcm9tIHdlYmtpdHB5LnczYy5jb21tb24gaW1wb3J0IFdQVF9HSF9PUkcKIAog
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiBXRUJLSVRfV1BUX0RJUiA9ICdM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzJwotV1BUX1BSX1VSTCA9
ICJodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wdWxsLyIKK1dQVF9Q
Ul9VUkwgPSAiaHR0cHM6Ly9naXRodWIuY29tLyVzL3dlYi1wbGF0Zm9ybS10ZXN0cy9wdWxsLyIg
JSAoV1BUX0dIX09SRywpCiBXRUJLSVRfRVhQT1JUX1BSX0xBQkVMID0gJ3dlYmtpdC1leHBvcnQn
CiAKIAorY2xhc3MgVzNjQ2hhbmdlc2V0KG9iamVjdCk6CisgICAgIiIidGhlIFczY0NoYW5nZXNl
dCBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgZGV0ZWNoaW5nIGNoYW5nZXMgaW4KKyAgICB0aGUg
d2ViLXBsYXRmb3JtLXRlc3QgZGlyZWN0b3J5IGFuZCBnZW5lcmF0aW5nIHBhdGNoZXMgZXhwb3J0
aW5nCisgICAgdGhvc2UgY2hhbmdlcy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBob3N0LCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKKyAgICAgICAgc2Vs
Zi5fZmlsZXN5c3RlbSA9IGhvc3QuZmlsZXN5c3RlbQorICAgICAgICBzZWxmLl9vcHRpb25zID0g
b3B0aW9ucworCisgICAgICAgIHNlbGYuX2hvc3QuaW5pdGlhbGl6ZV9zY20oKQorCisgICAgZGVm
IGhhc193cHRfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fY3JlYXRl
X3BhdGNoKCkpCisKKyAgICBkZWYgX2NyZWF0ZV9wYXRjaChzZWxmKToKKyAgICAgICAgZ2l0X2Nv
bW1pdCA9ICJIRUFELi4uLiIgaWYgbm90IHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCBlbHNlIHNl
bGYuX29wdGlvbnMuZ2l0X2NvbW1pdCArICJ+MS4uIiArIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1p
dAorICAgICAgICBwYXRjaF9kYXRhID0gc2VsZi5faG9zdC5zY20oKS5jcmVhdGVfcGF0Y2goZ2l0
X2NvbW1pdCwgW1dFQktJVF9XUFRfRElSXSkKKyAgICAgICAgaWYgbm90IHBhdGNoX2RhdGEgb3Ig
bm90ICdkaWZmJyBpbiBwYXRjaF9kYXRhOgorICAgICAgICAgICAgcmV0dXJuICcnCisgICAgICAg
IHJldHVybiBwYXRjaF9kYXRhCisKKyAgICBkZWYgY3JlYXRlX2dpdF9wYXRjaF9maWxlKHNlbGYp
OgorICAgICAgICBwYXRjaF9maWxlID0gJy4vcGF0Y2gudGVtcC4nICsgc3RyKHRpbWUuY2xvY2so
KSkKKyAgICAgICAgcGF0Y2hfZGF0YSA9IHNlbGYuX2NyZWF0ZV9wYXRjaCgpCisgICAgICAgIGlm
IG5vdCAnZGlmZicgaW4gcGF0Y2hfZGF0YToKKyAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gY2hh
bmdlcyB0byB1cHN0cmVhbSwgcGF0Y2ggZGF0YSBpczogIiVzIicgJSAocGF0Y2hfZGF0YSkpCisg
ICAgICAgICAgICByZXR1cm4gJycKKyAgICAgICAgIyBGSVhNRTogV2UgY2FuIHByb2JhYmx5IHRy
eSB0byB1c2UgLS1yZWxhdGl2ZSBnaXQgcGFyYW1ldGVyIHRvIG5vdCBkbyB0aGF0IHJlcGxhY2Vt
ZW50LgorICAgICAgICBwYXRjaF9kYXRhID0gcGF0Y2hfZGF0YS5yZXBsYWNlKFdFQktJVF9XUFRf
RElSICsgJy8nLCAnJykKKyAgICAgICAgcGF0Y2hfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uYWJz
cGF0aChwYXRjaF9maWxlKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmls
ZShwYXRjaF9maWxlLCBwYXRjaF9kYXRhKQorICAgICAgICByZXR1cm4gcGF0Y2hfZmlsZQorCiBj
bGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0
LCBvcHRpb25zLCBnaXRDbGFzcz1HaXQsIGJ1Z3ppbGxhQ2xhc3M9QnVnemlsbGEsIFdQVEdpdEh1
YkNsYXNzPVdQVEdpdEh1YiwgV1BUTGludGVyQ2xhc3M9V1BUTGludGVyKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgaG9zdCwgb3B0aW9ucywgdzNjX2NoYW5nZXNldCwgZ2l0Q2xhc3M9R2l0LCBi
dWd6aWxsYUNsYXNzPUJ1Z3ppbGxhLCBXUFRHaXRIdWJDbGFzcz1XUFRHaXRIdWIsIFdQVExpbnRl
ckNsYXNzPVdQVExpbnRlcik6CiAgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CiAgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0gPSBob3N0LmZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5fb3B0aW9ucyA9
IG9wdGlvbnMKKyAgICAgICAgc2VsZi5fdzNjX2NoYW5nZXNldCA9IHczY19jaGFuZ2VzZXQKIAog
ICAgICAgICBzZWxmLl9ob3N0LmluaXRpYWxpemVfc2NtKCkKIApAQCAtNjcsMjUgKzEwNiw3IEBA
IGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9naXQgPSBzZWxmLl9l
bnN1cmVfd3B0X3JlcG9zaXRvcnkoImh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzLmdpdCIsIHNlbGYuX29wdGlvbnMucmVwb3NpdG9yeV9kaXJlY3RvcnksIGdpdENsYXNz
KQogICAgICAgICBzZWxmLl9saW50ZXIgPSBXUFRMaW50ZXJDbGFzcyhzZWxmLl9vcHRpb25zLnJl
cG9zaXRvcnlfZGlyZWN0b3J5LCBob3N0LmZpbGVzeXN0ZW0pCiAKLSAgICAgICAgc2VsZi5fdXNl
cm5hbWUgPSBvcHRpb25zLnVzZXJuYW1lCi0gICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToK
LSAgICAgICAgICAgIHNlbGYuX3VzZXJuYW1lID0gc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0
aHViLnVzZXJuYW1lJykucnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFt
ZToKLSAgICAgICAgICAgICAgICBzZWxmLl91c2VybmFtZSA9IG9zLmVudmlyb24uZ2V0KCdHSVRI
VUJfVVNFUk5BTUUnKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgotICAgICAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk1pc3NpbmcgR2l0SHViIHVzZXJuYW1lLCBwbGVh
c2UgcHJvdmlkZSBpdCBhcyBhIGNvbW1hbmQgYXJndW1lbnQgKHNlZSBoZWxwIGZvciB0aGUgY29t
bWFuZCkuIikKLSAgICAgICAgZWxpZiBub3Qgc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHVi
LnVzZXJuYW1lJyk6Ci0gICAgICAgICAgICBzZWxmLl9naXQuc2V0X2xvY2FsX2NvbmZpZygnZ2l0
aHViLnVzZXJuYW1lJywgc2VsZi5fdXNlcm5hbWUpCi0KLSAgICAgICAgc2VsZi5fdG9rZW4gPSBv
cHRpb25zLnRva2VuCi0gICAgICAgIGlmIG5vdCBzZWxmLl90b2tlbjoKLSAgICAgICAgICAgIHNl
bGYuX3Rva2VuID0gc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnRva2VuJykucnN0cmlw
KCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90b2tlbjoKLSAgICAgICAgICAgICAgICBzZWxm
Ll90b2tlbiA9IG9zLmVudmlyb24uZ2V0KCdHSVRIVUJfVE9LRU4nKQotICAgICAgICAgICAgaWYg
bm90IHNlbGYuX3Rva2VuOgotICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiTWlzc2luZyBHaXRI
dWIgdG9rZW4sIHRoZSBzY3JpcHQgd2lsbCBub3QgYmUgYWJsZSB0byBjcmVhdGUgYSBwdWxsIHJl
cXVlc3QgdG8gVzNDIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5LiIpCi0gICAgICAgIGVs
aWYgbm90IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dpdGh1Yi50b2tlbicpOgotICAgICAgICAg
ICAgc2VsZi5fZ2l0LnNldF9sb2NhbF9jb25maWcoJ2dpdGh1Yi50b2tlbicsIHNlbGYuX3Rva2Vu
KQorICAgICAgICBzZWxmLl9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2VuKG9wdGlvbnMpCiAKICAg
ICAgICAgc2VsZi5fZ2l0aHViID0gV1BUR2l0SHViQ2xhc3Moc2VsZi5faG9zdCwgc2VsZi5fdXNl
cm5hbWUsIHNlbGYuX3Rva2VuKSBpZiBzZWxmLl91c2VybmFtZSBhbmQgc2VsZi5fdG9rZW4gZWxz
ZSBOb25lCiAKQEAgLTEwNCw2ICsxMjUsNjAgQEAgY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6
CiAgICAgICAgIGlmIG5vdCBzZWxmLl93cHRfZm9ya19wdXNoX3VybDoKICAgICAgICAgICAgIHNl
bGYuX3dwdF9mb3JrX3B1c2hfdXJsID0gImh0dHBzOi8vIiArIHNlbGYuX3VzZXJuYW1lICsgIkBn
aXRodWIuY29tLyIgKyBzZWxmLl91c2VybmFtZSArICIvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCIK
IAorICAgIGRlZiBfcHJvbXB0X2Zvcl90b2tlbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2hvc3QudXNlci5wcm9tcHRfcGFzc3dvcmQoJ0VudGVyIGdpdGh1YiBPQXV0aCB0b2tlbjogJykK
KworICAgIGRlZiBfcHJvbXB0X2Zvcl91c2VybmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2hvc3QudXNlci5wcm9tcHQoJ0VudGVyIGdpdGh1YiB1c2VybmFtZTogJykKKworICAgIGRl
ZiBfZW5zdXJlX3VzZXJuYW1lX2FuZF90b2tlbihzZWxmLCBvcHRpb25zKToKKyAgICAgICAgIiIi
CisgICAgICAgIEFzayB0aGUgdXNlciB0byBwcm92aWRlIGEgdXNlcm5hbWUgYW5kIHRva2VuIGlm
IHRoZQorICAgICAgICAtLWludGVyYWN0aXZlIGZsYWcgaXMgcGFzc2VkIGFuZCB1c2VybmFtZSBh
bmQgdG9rZW4KKyAgICAgICAgYXJlIG5vdCBhbHJlYWR5IHNldC4KKyAgICAgICAgIiIiCisgICAg
ICAgIHNlbGYuX3VzZXJuYW1lID0gb3B0aW9ucy51c2VybmFtZQorICAgICAgICBpZiBub3Qgc2Vs
Zi5fdXNlcm5hbWU6CisgICAgICAgICAgICBzZWxmLl91c2VybmFtZSA9IHNlbGYuX2dpdC5sb2Nh
bF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScpLnJzdHJpcCgpCisgICAgICAgICAgICBpZiBub3Qg
c2VsZi5fdXNlcm5hbWU6CisgICAgICAgICAgICAgICAgc2VsZi5fdXNlcm5hbWUgPSBvcy5lbnZp
cm9uLmdldCgnR0lUSFVCX1VTRVJOQU1FJykKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91c2Vy
bmFtZSBhbmQgb3B0aW9ucy5pbnRlcmFjdGl2ZV9tb2RlOgorICAgICAgICAgICAgICAgIHNlbGYu
X3VzZXJuYW1lID0gc2VsZi5fcHJvbXB0X2Zvcl91c2VybmFtZSgpCisgICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fdXNlcm5hbWU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTWlz
c2luZyBHaXRIdWIgdXNlcm5hbWUsIHBsZWFzZSBwcm92aWRlIGl0IGFzIGEgY29tbWFuZCBhcmd1
bWVudCAoc2VlIGhlbHAgZm9yIHRoZSBjb21tYW5kKS4iKQorCisgICAgICAgIHNlbGYuX3Rva2Vu
ID0gb3B0aW9ucy50b2tlbgorICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46CisgICAgICAgICAg
ICBzZWxmLl90b2tlbiA9IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dpdGh1Yi50b2tlbicpLnJz
dHJpcCgpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46CisgICAgICAgICAgICAgICAg
c2VsZi5fdG9rZW4gPSBvcy5lbnZpcm9uLmdldCgnR0lUSFVCX1RPS0VOJykKKyAgICAgICAgICAg
IGlmIG5vdCBzZWxmLl90b2tlbiBhbmQgb3B0aW9ucy5pbnRlcmFjdGl2ZV9tb2RlOgorICAgICAg
ICAgICAgICAgIHNlbGYuX3Rva2VuID0gc2VsZi5fcHJvbXB0X2Zvcl90b2tlbigpCisgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5fdG9rZW46CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJNaXNz
aW5nIEdpdEh1YiB0b2tlbiwgdGhlIHNjcmlwdCB3aWxsIG5vdCBiZSBhYmxlIHRvIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCB0byBXM0Mgd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRvcnkuIikKKwor
ICAgICAgICBpZiBzZWxmLl90b2tlbjoKKyAgICAgICAgICAgIHNlbGYuX3ZhbGlkYXRlX2FuZF9z
YXZlX3Rva2VuKHNlbGYuX3VzZXJuYW1lLCBzZWxmLl90b2tlbikKKworICAgIGRlZiBfdmFsaWRh
dGVfYW5kX3NhdmVfdG9rZW4oc2VsZiwgdXNlcm5hbWUsIHRva2VuKToKKyAgICAgICAgIyB2YWxp
ZGF0ZSB0b2tlbiBhbmQgdXNlcm5hbWUKKyAgICAgICAgdXJsID0gJ2h0dHBzOi8vYXBpLmdpdGh1
Yi5jb20vdXNlcj9hY2Nlc3NfdG9rZW49JXMnICUgKHRva2VuLCkKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9ob3N0LndlYi5yZXF1ZXN0KG1ldGhvZD0nR0VUJywg
dXJsPXVybCwgZGF0YT1Ob25lKQorICAgICAgICBleGNlcHQgSFRUUEVycm9yIGFzIGU6CisgICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oIk9BdXRoIHRva2VuIGlzIG5vdCB2YWxpZCIpCisgICAg
ICAgIGRhdGEgPSBqc29uLmxvYWQocmVzcG9uc2UpCisgICAgICAgIGxvZ2luID0gZGF0YS5nZXQo
J2xvZ2luJywgTm9uZSkKKyAgICAgICAgaWYgbG9naW4gIT0gdXNlcm5hbWU6CisgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oIk9BdXRoIHRva2VuIGRvZXMgbm90IG1hdGNoIHRoZSBwcm92aWRl
ZCB1c2VybmFtZS4gUHJvdmlkZWQgdXNlcjogJXMsIGdpdGh1YiBsb2dpbjogJXMiICUgKHVzZXJu
YW1lLCBsb2dpbikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFVzZXJuYW1lIGFuZCB0
b2tlbiBhcmUgdmFsaWQuIFNhdmUgdGhlbSBpbiB0aGUgZ2l0IGNvbmZpZyBzbyB3ZQorICAgICAg
ICAgICAgIyBkbyBub3QgbmVlZCB0byBhc2sgZm9yIHRoZW0gYWdhaW4KKyAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nKToKKyAgICAgICAgICAg
ICAgICBzZWxmLl9naXQuc2V0X2xvY2FsX2NvbmZpZygnZ2l0aHViLnRva2VuJywgdG9rZW4pCisg
ICAgICAgICAgICBpZiBub3Qgc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJuYW1l
Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5fZ2l0LnNldF9sb2NhbF9jb25maWcoJ2dpdGh1Yi51
c2VybmFtZScsIHVzZXJuYW1lKQorCiAgICAgZGVmIF9lbnN1cmVfd3B0X3JlcG9zaXRvcnkoc2Vs
ZiwgdXJsLCB3cHRfcmVwb3NpdG9yeV9kaXJlY3RvcnksIGdpdENsYXNzKToKICAgICAgICAgZ2l0
ID0gTm9uZQogICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMod3B0X3JlcG9z
aXRvcnlfZGlyZWN0b3J5KToKQEAgLTIwOCwyMiArMjgzLDE5IEBAIGNsYXNzIFRlc3RFeHBvcnRl
cihvYmplY3QpOgogICAgICAgICBzZWxmLl9naXQuZGVsZXRlX2JyYW5jaChzZWxmLl9icmFuY2hf
bmFtZSkKIAogICAgIGRlZiBjcmVhdGVfZ2l0X3BhdGNoKHNlbGYpOgotICAgICAgICBwYXRjaF9m
aWxlID0gJy4vcGF0Y2gudGVtcC4nICsgc3RyKHRpbWUuY2xvY2soKSkKLSAgICAgICAgZ2l0X2Nv
bW1pdCA9ICJIRUFELi4uLiIgaWYgbm90IHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCBlbHNlIHNl
bGYuX29wdGlvbnMuZ2l0X2NvbW1pdCArICJ+MS4uIiArIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1p
dAotICAgICAgICBwYXRjaF9kYXRhID0gc2VsZi5faG9zdC5zY20oKS5jcmVhdGVfcGF0Y2goZ2l0
X2NvbW1pdCwgW1dFQktJVF9XUFRfRElSXSkKLSAgICAgICAgaWYgbm90IHBhdGNoX2RhdGEgb3Ig
bm90ICdkaWZmJyBpbiBwYXRjaF9kYXRhOgotICAgICAgICAgICAgX2xvZy5pbmZvKCdObyBjaGFu
Z2VzIHRvIHVwc3RyZWFtLCBwYXRjaCBkYXRhIGlzOiAiJXMiJyAlIChwYXRjaF9kYXRhKSkKLSAg
ICAgICAgICAgIHJldHVybiAnJwotICAgICAgICAjIEZJWE1FOiBXZSBjYW4gcHJvYmFibHkgdHJ5
IHRvIHVzZSAtLXJlbGF0aXZlIGdpdCBwYXJhbWV0ZXIgdG8gbm90IGRvIHRoYXQgcmVwbGFjZW1l
bnQuCi0gICAgICAgIHBhdGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJlcGxhY2UoV0VCS0lUX1dQVF9E
SVIgKyAnLycsICcnKQotICAgICAgICBwYXRjaF9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5hYnNw
YXRoKHBhdGNoX2ZpbGUpCi0gICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxl
KHBhdGNoX2ZpbGUsIHBhdGNoX2RhdGEpCi0gICAgICAgIHJldHVybiBwYXRjaF9maWxlCisgICAg
ICAgIHJldHVybiBzZWxmLl93M2NfY2hhbmdlc2V0LmNyZWF0ZV9naXRfcGF0Y2hfZmlsZSgpCiAK
ICAgICBkZWYgY3JlYXRlX3VwbG9hZF9yZW1vdGVfaWZfbmVlZGVkKHNlbGYpOgogICAgICAgICBp
ZiBub3Qgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlIGluIHNlbGYuX2dpdC5yZW1vdGUoW10pOgogICAg
ICAgICAgICAgc2VsZi5fZ2l0LnJlbW90ZShbImFkZCIsIHNlbGYuX3dwdF9mb3JrX3JlbW90ZSwg
c2VsZi5fd3B0X2ZvcmtfcHVzaF91cmxdKQogCisgICAgZGVmIF9jb25maXJtX2V4cG9ydChzZWxm
KToKKyAgICAgICAgbWVzc2FnZSA9ICJ3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyBkZXRlY3Rl
ZC4gV291bGQgeW91IGxpa2UgdG8gY3JlYXRlIGEgcHVsbC1yZXF1ZXN0IHRvIHRoZSBXUFQgZ2l0
aHViIHJlcG8gbm93PyIKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5pbnRlcmFjdGl2ZV9tb2Rl
OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3QudXNlci5jb25maXJtKG1lc3NhZ2UpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCiAgICAgZGVmIGRvX2V4cG9y
dChzZWxmKToKICAgICAgICAgZ2l0X3BhdGNoX2ZpbGUgPSBzZWxmLmNyZWF0ZV9naXRfcGF0Y2go
KQogCkBAIC0yMzEsNiArMzAzLDkgQEAgY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAgICAg
ICAgICAgICBfbG9nLmVycm9yKCJVbmFibGUgdG8gY3JlYXRlIGEgcGF0Y2ggdG8gYXBwbHkgdG8g
d2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRvcnkiKQogICAgICAgICAgICAgcmV0dXJuCiAKKyAg
ICAgICAgaWYgbm90IHNlbGYuX2NvbmZpcm1fZXhwb3J0KCk6CisgICAgICAgICAgICByZXR1cm4K
KwogICAgICAgICBzZWxmLl9mZXRjaF93cHRfcmVwb3NpdG9yeSgpCiAgICAgICAgIHNlbGYuY2xl
YW4oKQogCkBAIC0yOTAsNiArMzY1LDcgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncyk6CiAgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgnLXUnLCAnLS1yZW1vdGUtdXJsJywgZGVzdD0ncmVwb3NpdG9yeV9y
ZW1vdGVfdXJsJywgZGVmYXVsdD1Ob25lLCBoZWxwPSdyZXBvc2l0b3J5IHVybCB0byB1c2UgdG8g
cHVzaCcpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWQnLCAnLS1yZXBvc2l0b3J5JywgZGVz
dD0ncmVwb3NpdG9yeV9kaXJlY3RvcnknLCBkZWZhdWx0PU5vbmUsIGhlbHA9J3JlcG9zaXRvcnkg
ZGlyZWN0b3J5JykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsICctLWNyZWF0ZS1wcics
IGRlc3Q9J2NyZWF0ZV9wdWxsX3JlcXVlc3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0
PUZhbHNlLCBoZWxwPSdjcmVhdGUgcHVsbCByZXF1ZXN0IHRvIHczYyB3ZWItcGxhdGZvcm0tdGVz
dHMnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1pJywgJy0taW50ZXJhY3RpdmUnLCBkZXN0
PSdpbnRlcmFjdGl2ZV9tb2RlJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwg
aGVscD0nUHJvbXB0cyB0aGUgdXNlciBmb3IgdGhlaXIgZ2l0aHViIGNyZWRlbnRpYWxzIGFuZCBh
c2tzIGZvciBjb25maXJtYXRpb24gYmVmb3JlIGV4cG9ydGluZyB0aGUgY2hhbmdlcy4nKQogCiAg
ICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3MpCiAKQEAgLTMw
NSw2ICszODEsNyBAQCBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICAgICAgICAgIHJldHVy
biByZWNvcmQuZ2V0TWVzc2FnZSgpCiAKICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcign
d2Via2l0cHkudzNjLnRlc3RfZXhwb3J0ZXInKQorICAgIGxvZ2dlci5wcm9wYWdhdGUgPSBGYWxz
ZQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCiAgICAgaGFuZGxlciA9IExvZ0hh
bmRsZXIoKQogICAgIGhhbmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQpAQCAtMzEzLDEwICsz
OTAsMTkgQEAgZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAKIAogZGVmIG1haW4oX2FyZ3YsIF9z
dGRvdXQsIF9zdGRlcnIpOgotICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKF9hcmd2KQorICAgIGV4
cG9ydF93cHRfdGVzdF9jaGFuZ2VzKF9hcmd2LCBzaWxlbnRfbm9vcD1GYWxzZSkKKworCitkZWYg
ZXhwb3J0X3dwdF90ZXN0X2NoYW5nZXMoYXJncywgc2lsZW50X25vb3A9RmFsc2UsIGhvc3Q9Tm9u
ZSk6CisgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoYXJncykKIAogICAgIGNvbmZpZ3VyZV9sb2dn
aW5nKCkKIAotICAgIHRlc3RfZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoSG9zdCgpLCBvcHRpb25z
KQorICAgIGhvc3QgPSBob3N0IG9yIEhvc3QoKQorICAgIHczY19jaGFuZ2VzZXQgPSBXM2NDaGFu
Z2VzZXQoaG9zdCwgb3B0aW9ucykKIAotICAgIHRlc3RfZXhwb3J0ZXIuZG9fZXhwb3J0KCkKKyAg
ICBpZiB3M2NfY2hhbmdlc2V0Lmhhc193cHRfY2hhbmdlcygpOgorICAgICAgICB0ZXN0X2V4cG9y
dGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIHczY19jaGFuZ2VzZXQpCisgICAgICAg
IHRlc3RfZXhwb3J0ZXIuZG9fZXhwb3J0KCkKKyAgICBlbGlmIG5vdCBzaWxlbnRfbm9vcDoKKyAg
ICAgICAgX2xvZy5pbmZvKCdObyBjaGFuZ2VzIHRvIHVwc3RyZWFtLiBFeGl0aW5nLi4uJykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0
LnB5CmluZGV4IGI4MzM0YTk0OWM2MTI4NjcyZTNjNDcyNGYxNjEwM2MwNGY5Y2I5ODkuLmRlZDJj
MTM2ZDAzNmI0ZjliYzZlM2Y4OGZiYWRjZTJlMTM0NTBjY2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weQpAQCAtMjUsNyAr
MjUsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBp
bXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21v
Y2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCi1mcm9tIHdlYmtpdHB5LnczYy50ZXN0
X2V4cG9ydGVyIGltcG9ydCBUZXN0RXhwb3J0ZXIsIHBhcnNlX2FyZ3MKK2Zyb20gd2Via2l0cHku
dzNjLnRlc3RfZXhwb3J0ZXIgaW1wb3J0IFRlc3RFeHBvcnRlciwgVzNjQ2hhbmdlc2V0LCBwYXJz
ZV9hcmdzCiBmcm9tIHdlYmtpdHB5LnczYy53cHRfZ2l0aHViX21vY2sgaW1wb3J0IE1vY2tXUFRH
aXRIdWIKIAogbW9ja19saW50ZXIgPSBOb25lCkBAIC0xMjIsOCArMTIyLDEwIEBAIGNsYXNzIFRl
c3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZXhwb3J0
KHNlbGYpOgogICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAg
ICAgICAgaG9zdC53ZWIucmVzcG9uc2VzLmFwcGVuZCh7J3N0YXR1c19jb2RlJzogMjAwLCAnYm9k
eSc6ICd7ImxvZ2luIjogIlVTRVIifSd9KQogICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhb
J3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1u
JywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nXSkKLSAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0
ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJU
ZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BU
TGludGVyKQorICAgICAgICB3M2NfY2hhbmdlc2V0ID0gVzNjQ2hhbmdlc2V0KGhvc3QsIG9wdGlv
bnMpCisgICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIHczY19j
aGFuZ2VzZXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2Nr
QnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikK
ICAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
ZXhwb3J0ZXIuX2dpdGh1Yi5jYWxscywgWydjcmVhdGVfcHInLCAnYWRkX2xhYmVsICJ3ZWJraXQt
ZXhwb3J0IiddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1dlYktpdCBleHBvcnQnIGluIGV4
cG9ydGVyLl9naXRodWIucHVsbF9yZXF1ZXN0c19jcmVhdGVkWzBdWzFdKQpAQCAtMTUwLDggKzE1
MiwxMCBAQCBjbGFzcyBUZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAg
IGRlZiB0ZXN0X2V4cG9ydF93aXRoX3NwZWNpZmljX2JyYW5jaChzZWxmKToKICAgICAgICAgaG9z
dCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAgIGhvc3Qud2ViLnJlc3Bv
bnNlcy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDIwMCwgJ2JvZHknOiAneyJsb2dpbiI6ICJVU0VS
In0nfSkKICAgICAgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5Jywg
Jy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICctYycsICctbicsICdVU0VSJywgJy10JywgJ1RP
S0VOJywgJy1ibicsICd3cHQtZXhwb3J0LWJyYW5jaCddKQotICAgICAgICBleHBvcnRlciA9IFRl
c3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RF
eHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0
Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIHczY19jaGFuZ2VzZXQgPSBXM2NDaGFuZ2VzZXQoaG9z
dCwgb3B0aW9ucykKKyAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9u
cywgdzNjX2NoYW5nZXNldCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJU
ZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BU
TGludGVyKQogICAgICAgICBleHBvcnRlci5kb19leHBvcnQoKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhleHBvcnRlci5fZ2l0LmNhbGxzLCBbCiAgICAgICAgICAgICAnL21vY2stY2hlY2tv
dXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3dlYi1wbGF0Zm9ybS10ZXN0cycsCkBAIC0xNjksMyAr
MTczLDI5IEBAIGNsYXNzIFRlc3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICAgICAgJ2RlbGV0ZSBicmFuY2ggd3B0LWV4cG9ydC1mb3Itd2Via2l0LTEyMzQnLAogICAg
ICAgICAgICAgJ2NoZWNrb3V0IG1hc3RlcicsCiAgICAgICAgICAgICAncmVzZXQgaGFyZCBvcmln
aW4vbWFzdGVyJ10pCisKKyAgICBkZWYgdGVzdF9leHBvcnRfaW50ZXJhY3RpdmVfbW9kZShzZWxm
KToKKyAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAg
IGhvc3Qud2ViLnJlc3BvbnNlcy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDIwMCwgJ2JvZHknOiAn
eyJsb2dpbiI6ICJVU0VSIn0nfSkKKyAgICAgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoWyd0ZXN0
X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICctYycsICctbicsICdV
U0VSJywgJy10JywgJ1RPS0VOJywgJy0taW50ZXJhY3RpdmUnXSkKKyAgICAgICAgdzNjX2NoYW5n
ZXNldCA9IFczY0NoYW5nZXNldChob3N0LCBvcHRpb25zKQorICAgICAgICBleHBvcnRlciA9IFRl
c3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCB3M2NfY2hhbmdlc2V0LCBUZXN0RXhwb3J0ZXJUZXN0
Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBU
ZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIGV4cG9ydGVyLmRvX2V4cG9y
dCgpCisKKyAgICBkZWYgdGVzdF9leHBvcnRfaW52YWxpZF90b2tlbihzZWxmKToKKyAgICAgICAg
aG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAgIGhvc3Qud2ViLnJl
c3BvbnNlcy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDQwMX0pCisgICAgICAgIG9wdGlvbnMgPSBw
YXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICctZycsICdIRUFEJywgJy1iJywgJzEyMzQn
LCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tFTiddKQorICAgICAgICB3M2NfY2hhbmdl
c2V0ID0gVzNjQ2hhbmdlc2V0KGhvc3QsIG9wdGlvbnMpCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgorICAgICAgICAgICAgZXhwb3J0ZXIgPSBU
ZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgdzNjX2NoYW5nZXNldCwgVGVzdEV4cG9ydGVyVGVz
dC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1Yiwg
VGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICBzZWxmLmFzc2VydEluKCdP
QXV0aCB0b2tlbiBpcyBub3QgdmFsaWQnLCBzdHIoY29udGV4dC5leGNlcHRpb24pKQorCisgICAg
ZGVmIHRlc3RfZXhwb3J0X3dyb25nX3Rva2VuKHNlbGYpOgorICAgICAgICBob3N0ID0gVGVzdEV4
cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC53ZWIucmVzcG9uc2VzLmFwcGVu
ZCh7J3N0YXR1c19jb2RlJzogMjAwLCAnYm9keSc6ICd7ImxvZ2luIjogIkRJRkZfVVNFUiJ9J30p
CisgICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICctZycs
ICdIRUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tFTidd
KQorICAgICAgICB3M2NfY2hhbmdlc2V0ID0gVzNjQ2hhbmdlc2V0KGhvc3QsIG9wdGlvbnMpCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgorICAg
ICAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgdzNjX2NoYW5n
ZXNldCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6
aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAg
ICAgICBzZWxmLmFzc2VydEluKCdPQXV0aCB0b2tlbiBkb2VzIG5vdCBtYXRjaCB0aGUgcHJvdmlk
ZWQgdXNlcm5hbWUnLCBzdHIoY29udGV4dC5leGNlcHRpb24pKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340201</attachid>
            <date>2018-05-11 10:47:43 -0700</date>
            <delta_ts>2018-05-14 13:25:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184914-20180511134742.patch</filename>
            <type>text/plain</type>
            <size>23649</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNzAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWIwODI2NDAyMGE3YmJkYWNkYjlkY2ZiZWNiYjllYzc2
YTc3MTBkMS4uZjM5M2UzNWIzMjY2MTBjYTU5YmRkMzk3OTk3Nzk1YzY5N2ZiMTcyNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDE4LTA1LTExICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgRXhwb3J0IGNoYW5nZXMgdG8gd2ViLXBsYXRmb3JtLXRlc3QgYXMgcGFydCBv
ZiB0aGUgd2Via2l0LXBhdGNoIHVwbG9hZCB3b3JrZmxvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5OgorICAgICAgICAoVXBsb2FkKToKKyAgICAgICAgKENyZWF0ZUJ1Zy5leGVj
dXRlKToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy93cHRjaGFuZ2VleHBvcnQucHk6IEFkZGVkLgorICAgICAgICAoV1BUQ2hhbmdl
RXhwb3J0KToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydC5vcHRpb25zKToKKyAgICAgICAgKFdQ
VENoYW5nZUV4cG9ydC5ydW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1v
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5Ogor
ICAgICAgICAoV2ViUGxhdGZvcm1UZXN0UGF0Y2hHZW5lcmF0b3IpOgorICAgICAgICAoV2ViUGxh
dGZvcm1UZXN0UGF0Y2hHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoV2ViUGxhdGZvcm1U
ZXN0UGF0Y2hHZW5lcmF0b3IuaGFzX3dwdF9jaGFuZ2VzKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
VGVzdFBhdGNoR2VuZXJhdG9yLl9jcmVhdGVfcGF0Y2gpOgorICAgICAgICAoV2ViUGxhdGZvcm1U
ZXN0UGF0Y2hHZW5lcmF0b3IuY3JlYXRlX2dpdF9wYXRjaF9maWxlKToKKyAgICAgICAgKFRlc3RF
eHBvcnRlcik6CisgICAgICAgIChUZXN0RXhwb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoVGVz
dEV4cG9ydGVyLl9wcm9tcHRfZm9yX3Rva2VuKToKKyAgICAgICAgKFRlc3RFeHBvcnRlci5fcHJv
bXB0X2Zvcl91c2VybmFtZSk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIuX2Vuc3VyZV91c2VybmFt
ZV9hbmRfdG9rZW4pOgorICAgICAgICAoVGVzdEV4cG9ydGVyLl92YWxpZGF0ZV9hbmRfc2F2ZV90
b2tlbik6CisgICAgICAgIChUZXN0RXhwb3J0ZXIuY3JlYXRlX2dpdF9wYXRjaCk6CisgICAgICAg
IChUZXN0RXhwb3J0ZXIuX2NvbmZpcm1fZXhwb3J0KToKKyAgICAgICAgKFRlc3RFeHBvcnRlci5k
b19leHBvcnQpOgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RFeHBvcnRl
clRlc3QudGVzdF9leHBvcnQpOgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0X2V4cG9y
dF93aXRoX3NwZWNpZmljX2JyYW5jaCk6CisgICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0KToKKyAg
ICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVzdF9leHBvcnRfaW50ZXJhY3RpdmVfbW9kZSk6Cisg
ICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X2ludmFsaWRfdG9rZW4pOgorICAg
ICAgICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0X2V4cG9ydF93cm9uZ190b2tlbik6CisKIDIwMTgt
MDUtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtKU0NdW0dMSUJdIEFkZCBpbnRyb3NwZWN0YWJsZSBhbHRlcm5hdGl2ZXMgdG8gZnVuY3Rp
b25zIHVzaW5nIHZhcmdhcnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy91cGxvYWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5CmluZGV4IDkzM2RiMmQwODUyMGQ4NjBjNTI4M2Y3YWY0OTZmYTFiOTQyMTUz
MDMuLmYyOGI5NDJiZjI5Y2FiODM3NjQzYzJjOTIwY2IyOWI5YmFkZmFiNmUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQpAQCAtMjg2LDYgKzI4
Niw3IEBAIGNsYXNzIFVwbG9hZChBYnN0cmFjdFBhdGNoVXBsb2FkaW5nQ29tbWFuZCk6CiAgICAg
ICAgIHN0ZXBzLkVuc3VyZUJ1Z0lzT3BlbkFuZEFzc2lnbmVkLAogICAgICAgICBzdGVwcy5Qb3N0
RGlmZiwKICAgICAgICAgc3RlcHMuU3VibWl0VG9FV1MsCisgICAgICAgIHN0ZXBzLldQVENoYW5n
ZUV4cG9ydCwKICAgICBdCiAgICAgbG9uZ19oZWxwID0gIiIidXBsb2FkIHVwbG9hZHMgdGhlIGN1
cnJlbnQgZGlmZiB0byBidWdzLndlYmtpdC5vcmcuCiAgICAgSWYgbm8gYnVnIGlkIGlzIHByb3Zp
ZGVkLCB1cGxvYWQgd2lsbCBjcmVhdGUgYSBidWcuCkBAIC01MzEsMyArNTMyLDI1IEBAIGNsYXNz
IENyZWF0ZUJ1ZyhDb21tYW5kKToKICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2J1Z19mcm9tX2Nv
bW1pdChvcHRpb25zLCBhcmdzLCB0b29sKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2Vs
Zi5jcmVhdGVfYnVnX2Zyb21fcGF0Y2gob3B0aW9ucywgYXJncywgdG9vbCkKKworCitjbGFzcyBX
UFRDaGFuZ2VFeHBvcnQoQWJzdHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgorICAgIG5hbWUg
PSAid3B0LWNoYW5nZS1leHBvcnQiCisgICAgaGVscF90ZXh0ID0gIk9wZW5zIGEgcHVsbCByZXF1
ZXN0IHRvIHN5bmMgYW55IGNoYW5nZXMgaW4gdGhlIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMgZGlyZWN0b3J5IgorICAgIGFyZ3VtZW50X25hbWVzID0gIltCVUdJ
RF0iCisgICAgc3RlcHMgPSBbCisgICAgICAgIHN0ZXBzLldQVENoYW5nZUV4cG9ydCwKKyAgICBd
CisKKyAgICBsb25nX2hlbHAgPSAiIiJPcGVucyBhIHB1bGwgcmVxdWVzdCB0byB0aGUgdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cworICAgIGdpdGh1YiByZXBvIGZvciBhbnkgY2hhbmdlcyBpbiB0aGUK
KyAgICBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzIGRpcmVjdG9y
eS4gVGhpcyBzdGVwCisgICAgd2lsbCBub29wIGlmIHRoZXJlIGFyZSBubyBjaGFuZ2VzIGluIHRo
ZSB3ZWItcGxhdGZvcm0tdGVzdHMgZGlyZWN0b3J5LgorICAgIFRoZSB1c2VyIHdpbGwgYmUgcHJv
bXB0ZWQgdG8gcHJvdmlkZSBhIGdpdGh1YiB1c2VybmFtZSBhbmQgT0F1dGggdG9rZW4KKyAgICB0
aGUgZmlyc3QgdGltZSB0aGlzIGlzIHJ1bi4KKyAgICAiIiIKKworICAgIGRlZiBfcHJlcGFyZV9z
dGF0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgc3RhdGUgPSB7fQorICAg
ICAgICBzdGF0ZVsiYnVnX2lkIl0gPSBzZWxmLl9idWdfaWQob3B0aW9ucywgYXJncywgdG9vbCwg
c3RhdGUpCisgICAgICAgIHJldHVybiBzdGF0ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL19faW5pdF9fLnB5CmluZGV4IGYzYzE3MGUzMTJlZGQ3ODY0ZjlkODVhZDljNzc1
OWYyYmM5MWM5M2YuLmRjMDc4NGY2MTUxZThhZmY4Nzk0YTY5MDc2ZDdlN2ZjMmM4ZmNhOTEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKQEAgLTY2
LDMgKzY2LDQgQEAgZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnVwZGF0ZSBpbXBvcnQgVXBkYXRl
CiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlciBp
bXBvcnQgVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlcgogZnJvbSB3ZWJraXRweS50b29sLnN0
ZXBzLnZhbGlkYXRlY2hhbmdlbG9ncyBpbXBvcnQgVmFsaWRhdGVDaGFuZ2VMb2dzCiBmcm9tIHdl
YmtpdHB5LnRvb2wuc3RlcHMudmFsaWRhdGVyZXZpZXdlciBpbXBvcnQgVmFsaWRhdGVSZXZpZXdl
cgorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLndwdGNoYW5nZWV4cG9ydCBpbXBvcnQgV1BUQ2hh
bmdlRXhwb3J0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
d3B0Y2hhbmdlZXhwb3J0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3dw
dGNoYW5nZWV4cG9ydC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzY1OGM0ZTg0ZDk3ZDk4NjI3M2Y3MGE5ZTQw
NzFiYWJmNTU4NDgxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3dwdGNoYW5nZWV4cG9ydC5weQpAQCAtMCwwICsxLDU3IEBACisjIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3Jp
cHRFcnJvcgorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJz
dHJhY3RTdGVwCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9u
cworZnJvbSB3ZWJraXRweS53M2MudGVzdF9leHBvcnRlciBpbXBvcnQgZXhwb3J0X3dwdF90ZXN0
X2NoYW5nZXMKKworCitjbGFzcyBXUFRDaGFuZ2VFeHBvcnQoQWJzdHJhY3RTdGVwKToKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgorICAgICAgICByZXR1cm4gQWJzdHJh
Y3RTdGVwLm9wdGlvbnMoKSArIFsKKyAgICAgICAgICAgIE9wdGlvbnMubm9uX2ludGVyYWN0aXZl
LAorICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAorICAgICAgICBdCisKKyAgICBkZWYg
cnVuKHNlbGYsIHN0YXRlKToKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3Rp
dmU6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBidWdfaWQgPSBzdGF0ZS5nZXQoImJ1
Z19pZCIpCisgICAgICAgIGlmIG5vdCBidWdfaWQ6CisgICAgICAgICAgICByZXR1cm4KKworICAg
ICAgICBhcmdzID0gWyItLWJ1ZyIsIHN0cihidWdfaWQpLCAiLS1pbnRlcmFjdGl2ZSIsICItLWNy
ZWF0ZS1wciJdCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0OgorICAgICAg
ICAgICAgYXJncy5hcHBlbmQoIi0tZ2l0LWNvbW1pdCIpCisgICAgICAgICAgICBhcmdzLmFwcGVu
ZChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpCisKKyAgICAgICAgZXhwb3J0X3dwdF90ZXN0X2No
YW5nZXMoYXJncywgc2lsZW50X25vb3A9VHJ1ZSwgaG9zdD1zZWxmLl90b29sKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2MvY29tbW9uLnB5CmluZGV4IGExNGFhOTUzNTRiOTA2NzM5NDEwMTc2YzFiMDM3
OGM3ZDcyMzUzMzIuLjY2ZmEzNGYyYTdlOWFmMTczNzZiNjQzY2I0YzFhNjRhOTg4OGIyMGYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1vbi5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy9jb21tb24ucHkKQEAgLTMwLDEwICszMCwxMSBAQAogCiBp
bXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcwogCiAKLVdQVF9HSF9PUkcgPSAn
dzNjJwotV1BUX0dIX1JFUE9fTkFNRSA9ICd3ZWItcGxhdGZvcm0tdGVzdHMnCitXUFRfR0hfT1JH
ID0gb3MuZW52aXJvbi5nZXQoJ1dQVF9HSF9PUkcnLCAndzNjJykKK1dQVF9HSF9SRVBPX05BTUUg
PSBvcy5lbnZpcm9uLmdldCgnV1BUX0dIX1JFUE9fTkFNRScsICd3ZWItcGxhdGZvcm0tdGVzdHMn
KQogV1BUX0dIX1VSTCA9ICdodHRwczovL2dpdGh1Yi5jb20vJXMvJXMvJyAlIChXUFRfR0hfT1JH
LCBXUFRfR0hfUkVQT19OQU1FKQogV1BUX01JUlJPUl9VUkwgPSAnaHR0cHM6Ly9jaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2V4dGVybmFsL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0JwogV1BU
X0dIX1NTSF9VUkxfVEVNUExBVEUgPSAnaHR0cHM6Ly97fUBnaXRodWIuY29tLyVzLyVzLmdpdCcg
JSAoV1BUX0dIX09SRywgV1BUX0dIX1JFUE9fTkFNRSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2V4cG9ydGVyLnB5CmluZGV4IDZhOWNhNWJiNzJjMWY4NDgzMDY0ODAzODMyYjJl
Yjc1NTExOWNhNmMuLmY2NzdhZmFlOGU5NzczZjRlZmI1MjUxM2IyYTU3MDY1ZDAxMTBkYWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weQpAQCAtMjgsNiAr
MjgsOCBAQCBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9y
dCB0aW1lCitpbXBvcnQganNvbgorZnJvbSB1cmxsaWIyIGltcG9ydCBIVFRQRXJyb3IKIAogZnJv
bSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmdpdCBpbXBvcnQgR2l0CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CkBAIC0zNSwyMCArMzcsNTEgQEAgZnJvbSB3ZWJr
aXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBCdWd6aWxsYQogZnJvbSB3ZWJraXRweS5j
b21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0RmluZGVyCiBmcm9tIHdlYmtpdHB5Lncz
Yy53cHRfZ2l0aHViIGltcG9ydCBXUFRHaXRIdWIKIGZyb20gd2Via2l0cHkudzNjLndwdF9saW50
ZXIgaW1wb3J0IFdQVExpbnRlcgorZnJvbSB3ZWJraXRweS53M2MuY29tbW9uIGltcG9ydCBXUFRf
R0hfT1JHCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogV0VCS0lUX1dQ
VF9ESVIgPSAnTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cycKLVdQ
VF9QUl9VUkwgPSAiaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcHVs
bC8iCitXUFRfUFJfVVJMID0gImh0dHBzOi8vZ2l0aHViLmNvbS8lcy93ZWItcGxhdGZvcm0tdGVz
dHMvcHVsbC8iICUgKFdQVF9HSF9PUkcsKQogV0VCS0lUX0VYUE9SVF9QUl9MQUJFTCA9ICd3ZWJr
aXQtZXhwb3J0JwogCiAKLWNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgorY2xhc3MgV2ViUGxh
dGZvcm1UZXN0UGF0Y2hHZW5lcmF0b3Iob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBob3N0LCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKKyAgICAgICAgc2Vs
Zi5fZmlsZXN5c3RlbSA9IGhvc3QuZmlsZXN5c3RlbQorICAgICAgICBzZWxmLl9vcHRpb25zID0g
b3B0aW9ucworCisgICAgICAgIHNlbGYuX2hvc3QuaW5pdGlhbGl6ZV9zY20oKQorCisgICAgZGVm
IGhhc193cHRfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fY3JlYXRl
X3BhdGNoKCkpCisKKyAgICBkZWYgX2NyZWF0ZV9wYXRjaChzZWxmKToKKyAgICAgICAgcGF0Y2hf
ZGF0YSA9IHNlbGYuX2hvc3Quc2NtKCkuY3JlYXRlX3BhdGNoKHNlbGYuX29wdGlvbnMuZ2l0X2Nv
bW1pdCwgW1dFQktJVF9XUFRfRElSXSkKKyAgICAgICAgaWYgbm90IHBhdGNoX2RhdGEgb3Igbm90
ICdkaWZmJyBpbiBwYXRjaF9kYXRhOgorICAgICAgICAgICAgcmV0dXJuICcnCisgICAgICAgIHJl
dHVybiBwYXRjaF9kYXRhCisKKyAgICBkZWYgY3JlYXRlX2dpdF9wYXRjaF9maWxlKHNlbGYpOgor
ICAgICAgICBfLCBwYXRjaF9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5vcGVuX2JpbmFyeV90ZW1w
ZmlsZSgnd3B0X2V4cG9ydF9wYXRjaCcpCisgICAgICAgIHBhdGNoX2RhdGEgPSBzZWxmLl9jcmVh
dGVfcGF0Y2goKQorICAgICAgICBpZiBub3QgJ2RpZmYnIGluIHBhdGNoX2RhdGE6CisgICAgICAg
ICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0sIHBhdGNoIGRhdGEgaXM6ICIl
cyInICUgKHBhdGNoX2RhdGEpKQorICAgICAgICAgICAgcmV0dXJuICcnCisgICAgICAgICMgRklY
TUU6IFdlIGNhbiBwcm9iYWJseSB0cnkgdG8gdXNlIC0tcmVsYXRpdmUgZ2l0IHBhcmFtZXRlciB0
byBub3QgZG8gdGhhdCByZXBsYWNlbWVudC4KKyAgICAgICAgcGF0Y2hfZGF0YSA9IHBhdGNoX2Rh
dGEucmVwbGFjZShXRUJLSVRfV1BUX0RJUiArICcvJywgJycpCisgICAgICAgIHNlbGYuX2ZpbGVz
eXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBhdGNoX2ZpbGUsIHBhdGNoX2RhdGEpCisgICAgICAgIHJl
dHVybiBwYXRjaF9maWxlCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgb3B0aW9ucywg
Z2l0Q2xhc3M9R2l0LCBidWd6aWxsYUNsYXNzPUJ1Z3ppbGxhLCBXUFRHaXRIdWJDbGFzcz1XUFRH
aXRIdWIsIFdQVExpbnRlckNsYXNzPVdQVExpbnRlcik6CisKK2NsYXNzIFRlc3RFeHBvcnRlcihv
YmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBvcHRpb25zLCB3cHRfcGF0Y2hf
Z2VuZXJhdG9yLCBnaXRDbGFzcz1HaXQsIGJ1Z3ppbGxhQ2xhc3M9QnVnemlsbGEsIFdQVEdpdEh1
YkNsYXNzPVdQVEdpdEh1YiwgV1BUTGludGVyQ2xhc3M9V1BUTGludGVyKToKICAgICAgICAgc2Vs
Zi5faG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGhvc3QuZmlsZXN5c3Rl
bQogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxmLl93cHRfcGF0
Y2hfZ2VuZXJhdG9yID0gd3B0X3BhdGNoX2dlbmVyYXRvcgogCiAgICAgICAgIHNlbGYuX2hvc3Qu
aW5pdGlhbGl6ZV9zY20oKQogCkBAIC02NywyNSArMTAwLDcgQEAgY2xhc3MgVGVzdEV4cG9ydGVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2dpdCA9IHNlbGYuX2Vuc3VyZV93cHRfcmVwb3NpdG9y
eSgiaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0Iiwgc2VsZi5f
b3B0aW9ucy5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgZ2l0Q2xhc3MpCiAgICAgICAgIHNlbGYuX2xp
bnRlciA9IFdQVExpbnRlckNsYXNzKHNlbGYuX29wdGlvbnMucmVwb3NpdG9yeV9kaXJlY3Rvcnks
IGhvc3QuZmlsZXN5c3RlbSkKIAotICAgICAgICBzZWxmLl91c2VybmFtZSA9IG9wdGlvbnMudXNl
cm5hbWUKLSAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgotICAgICAgICAgICAgc2VsZi5f
dXNlcm5hbWUgPSBzZWxmLl9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnKS5yc3Ry
aXAoKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgotICAgICAgICAgICAgICAg
IHNlbGYuX3VzZXJuYW1lID0gb3MuZW52aXJvbi5nZXQoJ0dJVEhVQl9VU0VSTkFNRScpCi0gICAg
ICAgICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcigiTWlzc2luZyBHaXRIdWIgdXNlcm5hbWUsIHBsZWFzZSBwcm92aWRlIGl0IGFzIGEg
Y29tbWFuZCBhcmd1bWVudCAoc2VlIGhlbHAgZm9yIHRoZSBjb21tYW5kKS4iKQotICAgICAgICBl
bGlmIG5vdCBzZWxmLl9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnKToKLSAgICAg
ICAgICAgIHNlbGYuX2dpdC5zZXRfbG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnLCBzZWxm
Ll91c2VybmFtZSkKLQotICAgICAgICBzZWxmLl90b2tlbiA9IG9wdGlvbnMudG9rZW4KLSAgICAg
ICAgaWYgbm90IHNlbGYuX3Rva2VuOgotICAgICAgICAgICAgc2VsZi5fdG9rZW4gPSBzZWxmLl9n
aXQubG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nKS5yc3RyaXAoKQotICAgICAgICAgICAgaWYg
bm90IHNlbGYuX3Rva2VuOgotICAgICAgICAgICAgICAgIHNlbGYuX3Rva2VuID0gb3MuZW52aXJv
bi5nZXQoJ0dJVEhVQl9UT0tFTicpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46Ci0g
ICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJNaXNzaW5nIEdpdEh1YiB0b2tlbiwgdGhlIHNjcmlw
dCB3aWxsIG5vdCBiZSBhYmxlIHRvIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCB0byBXM0Mgd2ViLXBs
YXRmb3JtLXRlc3RzIHJlcG9zaXRvcnkuIikKLSAgICAgICAgZWxpZiBub3Qgc2VsZi5fZ2l0Lmxv
Y2FsX2NvbmZpZygnZ2l0aHViLnRva2VuJyk6Ci0gICAgICAgICAgICBzZWxmLl9naXQuc2V0X2xv
Y2FsX2NvbmZpZygnZ2l0aHViLnRva2VuJywgc2VsZi5fdG9rZW4pCisgICAgICAgIHNlbGYuX2Vu
c3VyZV91c2VybmFtZV9hbmRfdG9rZW4ob3B0aW9ucykKIAogICAgICAgICBzZWxmLl9naXRodWIg
PSBXUFRHaXRIdWJDbGFzcyhzZWxmLl9ob3N0LCBzZWxmLl91c2VybmFtZSwgc2VsZi5fdG9rZW4p
IGlmIHNlbGYuX3VzZXJuYW1lIGFuZCBzZWxmLl90b2tlbiBlbHNlIE5vbmUKIApAQCAtMTA0LDYg
KzExOSw2MCBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAgICAgaWYgbm90IHNl
bGYuX3dwdF9mb3JrX3B1c2hfdXJsOgogICAgICAgICAgICAgc2VsZi5fd3B0X2ZvcmtfcHVzaF91
cmwgPSAiaHR0cHM6Ly8iICsgc2VsZi5fdXNlcm5hbWUgKyAiQGdpdGh1Yi5jb20vIiArIHNlbGYu
X3VzZXJuYW1lICsgIi93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0IgogCisgICAgZGVmIF9wcm9tcHRf
Zm9yX3Rva2VuKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faG9zdC51c2VyLnByb21wdF9w
YXNzd29yZCgnRW50ZXIgZ2l0aHViIE9BdXRoIHRva2VuOiAnKQorCisgICAgZGVmIF9wcm9tcHRf
Zm9yX3VzZXJuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faG9zdC51c2VyLnByb21w
dCgnRW50ZXIgZ2l0aHViIHVzZXJuYW1lOiAnKQorCisgICAgZGVmIF9lbnN1cmVfdXNlcm5hbWVf
YW5kX3Rva2VuKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICAiIiIKKyAgICAgICAgQXNrIHRoZSB1
c2VyIHRvIHByb3ZpZGUgYSB1c2VybmFtZSBhbmQgdG9rZW4gaWYgdGhlCisgICAgICAgIC0taW50
ZXJhY3RpdmUgZmxhZyBpcyBwYXNzZWQgYW5kIHVzZXJuYW1lIGFuZCB0b2tlbgorICAgICAgICBh
cmUgbm90IGFscmVhZHkgc2V0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fdXNlcm5hbWUg
PSBvcHRpb25zLnVzZXJuYW1lCisgICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToKKyAgICAg
ICAgICAgIHNlbGYuX3VzZXJuYW1lID0gc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnVz
ZXJuYW1lJykucnN0cmlwKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToKKyAg
ICAgICAgICAgICAgICBzZWxmLl91c2VybmFtZSA9IG9zLmVudmlyb24uZ2V0KCdHSVRIVUJfVVNF
Uk5BTUUnKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lIGFuZCBvcHRpb25zLmlu
dGVyYWN0aXZlX21vZGU6CisgICAgICAgICAgICAgICAgc2VsZi5fdXNlcm5hbWUgPSBzZWxmLl9w
cm9tcHRfZm9yX3VzZXJuYW1lKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToK
KyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNaXNzaW5nIEdpdEh1YiB1c2VybmFt
ZSwgcGxlYXNlIHByb3ZpZGUgaXQgYXMgYSBjb21tYW5kIGFyZ3VtZW50IChzZWUgaGVscCBmb3Ig
dGhlIGNvbW1hbmQpLiIpCisKKyAgICAgICAgc2VsZi5fdG9rZW4gPSBvcHRpb25zLnRva2VuCisg
ICAgICAgIGlmIG5vdCBzZWxmLl90b2tlbjoKKyAgICAgICAgICAgIHNlbGYuX3Rva2VuID0gc2Vs
Zi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnRva2VuJykucnN0cmlwKCkKKyAgICAgICAgICAg
IGlmIG5vdCBzZWxmLl90b2tlbjoKKyAgICAgICAgICAgICAgICBzZWxmLl90b2tlbiA9IG9zLmVu
dmlyb24uZ2V0KCdHSVRIVUJfVE9LRU4nKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Rva2Vu
IGFuZCBvcHRpb25zLmludGVyYWN0aXZlX21vZGU6CisgICAgICAgICAgICAgICAgc2VsZi5fdG9r
ZW4gPSBzZWxmLl9wcm9tcHRfZm9yX3Rva2VuKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90
b2tlbjoKKyAgICAgICAgICAgICAgICBfbG9nLmluZm8oIk1pc3NpbmcgR2l0SHViIHRva2VuLCB0
aGUgc2NyaXB0IHdpbGwgbm90IGJlIGFibGUgdG8gY3JlYXRlIGEgcHVsbCByZXF1ZXN0IHRvIFcz
QyB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeS4iKQorCisgICAgICAgIGlmIHNlbGYuX3Rv
a2VuOgorICAgICAgICAgICAgc2VsZi5fdmFsaWRhdGVfYW5kX3NhdmVfdG9rZW4oc2VsZi5fdXNl
cm5hbWUsIHNlbGYuX3Rva2VuKQorCisgICAgZGVmIF92YWxpZGF0ZV9hbmRfc2F2ZV90b2tlbihz
ZWxmLCB1c2VybmFtZSwgdG9rZW4pOgorICAgICAgICAjIHZhbGlkYXRlIHRva2VuIGFuZCB1c2Vy
bmFtZQorICAgICAgICB1cmwgPSAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2VyP2FjY2Vzc190
b2tlbj0lcycgJSAodG9rZW4sKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXNwb25zZSA9
IHNlbGYuX2hvc3Qud2ViLnJlcXVlc3QobWV0aG9kPSdHRVQnLCB1cmw9dXJsLCBkYXRhPU5vbmUp
CisgICAgICAgIGV4Y2VwdCBIVFRQRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbigiT0F1dGggdG9rZW4gaXMgbm90IHZhbGlkIikKKyAgICAgICAgZGF0YSA9IGpzb24ubG9h
ZChyZXNwb25zZSkKKyAgICAgICAgbG9naW4gPSBkYXRhLmdldCgnbG9naW4nLCBOb25lKQorICAg
ICAgICBpZiBsb2dpbiAhPSB1c2VybmFtZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigi
T0F1dGggdG9rZW4gZG9lcyBub3QgbWF0Y2ggdGhlIHByb3ZpZGVkIHVzZXJuYW1lLiBQcm92aWRl
ZCB1c2VyOiAlcywgZ2l0aHViIGxvZ2luOiAlcyIgJSAodXNlcm5hbWUsIGxvZ2luKSkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICMgVXNlcm5hbWUgYW5kIHRva2VuIGFyZSB2YWxpZC4gU2F2
ZSB0aGVtIGluIHRoZSBnaXQgY29uZmlnIHNvIHdlCisgICAgICAgICAgICAjIGRvIG5vdCBuZWVk
IHRvIGFzayBmb3IgdGhlbSBhZ2FpbgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2dpdC5sb2Nh
bF9jb25maWcoJ2dpdGh1Yi50b2tlbicpOgorICAgICAgICAgICAgICAgIHNlbGYuX2dpdC5zZXRf
bG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nLCB0b2tlbikKKyAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLl9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnKToKKyAgICAgICAgICAgICAg
ICBzZWxmLl9naXQuc2V0X2xvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJuYW1lJywgdXNlcm5hbWUp
CisKICAgICBkZWYgX2Vuc3VyZV93cHRfcmVwb3NpdG9yeShzZWxmLCB1cmwsIHdwdF9yZXBvc2l0
b3J5X2RpcmVjdG9yeSwgZ2l0Q2xhc3MpOgogICAgICAgICBnaXQgPSBOb25lCiAgICAgICAgIGlm
IG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyh3cHRfcmVwb3NpdG9yeV9kaXJlY3RvcnkpOgpA
QCAtMjA4LDIyICsyNzcsMTkgQEAgY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAgICAgICAg
IHNlbGYuX2dpdC5kZWxldGVfYnJhbmNoKHNlbGYuX2JyYW5jaF9uYW1lKQogCiAgICAgZGVmIGNy
ZWF0ZV9naXRfcGF0Y2goc2VsZik6Ci0gICAgICAgIHBhdGNoX2ZpbGUgPSAnLi9wYXRjaC50ZW1w
LicgKyBzdHIodGltZS5jbG9jaygpKQotICAgICAgICBnaXRfY29tbWl0ID0gIkhFQUQuLi4uIiBp
ZiBub3Qgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0IGVsc2Ugc2VsZi5fb3B0aW9ucy5naXRfY29t
bWl0ICsgIn4xLi4iICsgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0Ci0gICAgICAgIHBhdGNoX2Rh
dGEgPSBzZWxmLl9ob3N0LnNjbSgpLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0LCBbV0VCS0lUX1dQ
VF9ESVJdKQotICAgICAgICBpZiBub3QgcGF0Y2hfZGF0YSBvciBub3QgJ2RpZmYnIGluIHBhdGNo
X2RhdGE6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0sIHBh
dGNoIGRhdGEgaXM6ICIlcyInICUgKHBhdGNoX2RhdGEpKQotICAgICAgICAgICAgcmV0dXJuICcn
Ci0gICAgICAgICMgRklYTUU6IFdlIGNhbiBwcm9iYWJseSB0cnkgdG8gdXNlIC0tcmVsYXRpdmUg
Z2l0IHBhcmFtZXRlciB0byBub3QgZG8gdGhhdCByZXBsYWNlbWVudC4KLSAgICAgICAgcGF0Y2hf
ZGF0YSA9IHBhdGNoX2RhdGEucmVwbGFjZShXRUJLSVRfV1BUX0RJUiArICcvJywgJycpCi0gICAg
ICAgIHBhdGNoX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgocGF0Y2hfZmlsZSkKLSAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0Y2hfZmlsZSwgcGF0Y2hf
ZGF0YSkKLSAgICAgICAgcmV0dXJuIHBhdGNoX2ZpbGUKKyAgICAgICAgcmV0dXJuIHNlbGYuX3dw
dF9wYXRjaF9nZW5lcmF0b3IuY3JlYXRlX2dpdF9wYXRjaF9maWxlKCkKIAogICAgIGRlZiBjcmVh
dGVfdXBsb2FkX3JlbW90ZV9pZl9uZWVkZWQoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl93
cHRfZm9ya19yZW1vdGUgaW4gc2VsZi5fZ2l0LnJlbW90ZShbXSk6CiAgICAgICAgICAgICBzZWxm
Ll9naXQucmVtb3RlKFsiYWRkIiwgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlLCBzZWxmLl93cHRfZm9y
a19wdXNoX3VybF0pCiAKKyAgICBkZWYgX2NvbmZpcm1fZXhwb3J0KHNlbGYpOgorICAgICAgICBt
ZXNzYWdlID0gIndlYi1wbGF0Zm9ybS10ZXN0cyBjaGFuZ2VzIGRldGVjdGVkLiBXb3VsZCB5b3Ug
bGlrZSB0byBjcmVhdGUgYSBwdWxsLXJlcXVlc3QgdG8gdGhlIFdQVCBnaXRodWIgcmVwbyBub3c/
IgorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmludGVyYWN0aXZlX21vZGU6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5faG9zdC51c2VyLmNvbmZpcm0obWVzc2FnZSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHJldHVybiBUcnVlCisKICAgICBkZWYgZG9fZXhwb3J0KHNlbGYpOgogICAg
ICAgICBnaXRfcGF0Y2hfZmlsZSA9IHNlbGYuY3JlYXRlX2dpdF9wYXRjaCgpCiAKQEAgLTIzMSw2
ICsyOTcsOSBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoIlVuYWJsZSB0byBjcmVhdGUgYSBwYXRjaCB0byBhcHBseSB0byB3ZWItcGxhdGZvcm0t
dGVzdHMgcmVwb3NpdG9yeSIpCiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBpZiBub3Qg
c2VsZi5fY29uZmlybV9leHBvcnQoKToKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHNl
bGYuX2ZldGNoX3dwdF9yZXBvc2l0b3J5KCkKICAgICAgICAgc2VsZi5jbGVhbigpCiAKQEAgLTI5
MCw2ICszNTksNyBAQCBkZWYgcGFyc2VfYXJncyhhcmdzKToKICAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCctdScsICctLXJlbW90ZS11cmwnLCBkZXN0PSdyZXBvc2l0b3J5X3JlbW90ZV91cmwnLCBk
ZWZhdWx0PU5vbmUsIGhlbHA9J3JlcG9zaXRvcnkgdXJsIHRvIHVzZSB0byBwdXNoJykKICAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsICctLXJlcG9zaXRvcnknLCBkZXN0PSdyZXBvc2l0b3J5
X2RpcmVjdG9yeScsIGRlZmF1bHQ9Tm9uZSwgaGVscD0ncmVwb3NpdG9yeSBkaXJlY3RvcnknKQog
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1jJywgJy0tY3JlYXRlLXByJywgZGVzdD0nY3JlYXRl
X3B1bGxfcmVxdWVzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9
J2NyZWF0ZSBwdWxsIHJlcXVlc3QgdG8gdzNjIHdlYi1wbGF0Zm9ybS10ZXN0cycpCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pbnRlcmFjdGl2ZScsIGRlc3Q9J2ludGVyYWN0aXZl
X21vZGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdQcm9tcHRz
IHRoZSB1c2VyIGZvciB0aGVpciBnaXRodWIgY3JlZGVudGlhbHMgYW5kIGFza3MgZm9yIGNvbmZp
cm1hdGlvbiBiZWZvcmUgZXhwb3J0aW5nIHRoZSBjaGFuZ2VzLicpCiAKICAgICBvcHRpb25zLCBh
cmdzID0gcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoYXJncykKIApAQCAtMzA1LDYgKzM3NSw3IEBA
IGRlZiBjb25maWd1cmVfbG9nZ2luZygpOgogICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5nZXRN
ZXNzYWdlKCkKIAogICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3ZWJraXRweS53M2Mu
dGVzdF9leHBvcnRlcicpCisgICAgbG9nZ2VyLnByb3BhZ2F0ZSA9IEZhbHNlCiAgICAgbG9nZ2Vy
LnNldExldmVsKGxvZ2dpbmcuSU5GTykKICAgICBoYW5kbGVyID0gTG9nSGFuZGxlcigpCiAgICAg
aGFuZGxlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCkBAIC0zMTMsMTAgKzM4NCwxOSBAQCBkZWYg
Y29uZmlndXJlX2xvZ2dpbmcoKToKIAogCiBkZWYgbWFpbihfYXJndiwgX3N0ZG91dCwgX3N0ZGVy
cik6Ci0gICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoX2FyZ3YpCisgICAgZXhwb3J0X3dwdF90ZXN0
X2NoYW5nZXMoX2FyZ3YsIHNpbGVudF9ub29wPUZhbHNlKQorCisKK2RlZiBleHBvcnRfd3B0X3Rl
c3RfY2hhbmdlcyhhcmdzLCBzaWxlbnRfbm9vcD1GYWxzZSwgaG9zdD1Ob25lKToKKyAgICBvcHRp
b25zID0gcGFyc2VfYXJncyhhcmdzKQogCiAgICAgY29uZmlndXJlX2xvZ2dpbmcoKQogCi0gICAg
dGVzdF9leHBvcnRlciA9IFRlc3RFeHBvcnRlcihIb3N0KCksIG9wdGlvbnMpCisgICAgaG9zdCA9
IGhvc3Qgb3IgSG9zdCgpCisgICAgd3B0X3BhdGNoX2dlbmVyYXRvciA9IFdlYlBsYXRmb3JtVGVz
dFBhdGNoR2VuZXJhdG9yKGhvc3QsIG9wdGlvbnMpCiAKLSAgICB0ZXN0X2V4cG9ydGVyLmRvX2V4
cG9ydCgpCisgICAgaWYgd3B0X3BhdGNoX2dlbmVyYXRvci5oYXNfd3B0X2NoYW5nZXMoKToKKyAg
ICAgICAgdGVzdF9leHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCB3cHRfcGF0
Y2hfZ2VuZXJhdG9yKQorICAgICAgICB0ZXN0X2V4cG9ydGVyLmRvX2V4cG9ydCgpCisgICAgZWxp
ZiBub3Qgc2lsZW50X25vb3A6CisgICAgICAgIF9sb2cuaW5mbygnTm8gY2hhbmdlcyB0byB1cHN0
cmVhbS4gRXhpdGluZy4uLicpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9leHBvcnRlcl91bml0dGVzdC5weQppbmRleCBiODMzNGE5NDljNjEyODY3MmUzYzQ3MjRm
MTYxMDNjMDRmOWNiOTg5Li5mNGJkNjJiZTY3OGExNWI2NDRjYmZiMGY3ZDQwNzM0ZmQ5NzRjMWQx
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3Vu
aXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJf
dW5pdHRlc3QucHkKQEAgLTI1LDcgKzI1LDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlMgot
ZnJvbSB3ZWJraXRweS53M2MudGVzdF9leHBvcnRlciBpbXBvcnQgVGVzdEV4cG9ydGVyLCBwYXJz
ZV9hcmdzCitmcm9tIHdlYmtpdHB5LnczYy50ZXN0X2V4cG9ydGVyIGltcG9ydCBUZXN0RXhwb3J0
ZXIsIFdlYlBsYXRmb3JtVGVzdFBhdGNoR2VuZXJhdG9yLCBwYXJzZV9hcmdzCiBmcm9tIHdlYmtp
dHB5LnczYy53cHRfZ2l0aHViX21vY2sgaW1wb3J0IE1vY2tXUFRHaXRIdWIKIAogbW9ja19saW50
ZXIgPSBOb25lCkBAIC0xMjIsOCArMTIyLDEwIEBAIGNsYXNzIFRlc3RFeHBvcnRlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZXhwb3J0KHNlbGYpOgogICAgICAgICBo
b3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC53ZWIucmVz
cG9uc2VzLmFwcGVuZCh7J3N0YXR1c19jb2RlJzogMjAwLCAnYm9keSc6ICd7ImxvZ2luIjogIlVT
RVIifSd9KQogICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHkn
LCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAn
VE9LRU4nXSkKLSAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywg
VGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwg
TW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICB3
M2NfcGF0Y2hfZ2VuZXJhdG9yID0gV2ViUGxhdGZvcm1UZXN0UGF0Y2hHZW5lcmF0b3IoaG9zdCwg
b3B0aW9ucykKKyAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywg
dzNjX3BhdGNoX2dlbmVyYXRvciwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0
ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2Nr
V1BUTGludGVyKQogICAgICAgICBleHBvcnRlci5kb19leHBvcnQoKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhleHBvcnRlci5fZ2l0aHViLmNhbGxzLCBbJ2NyZWF0ZV9wcicsICdhZGRfbGFi
ZWwgIndlYmtpdC1leHBvcnQiJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnV2ViS2l0IGV4
cG9ydCcgaW4gZXhwb3J0ZXIuX2dpdGh1Yi5wdWxsX3JlcXVlc3RzX2NyZWF0ZWRbMF1bMV0pCkBA
IC0xNTAsOCArMTUyLDEwIEBAIGNsYXNzIFRlc3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogCiAgICAgZGVmIHRlc3RfZXhwb3J0X3dpdGhfc3BlY2lmaWNfYnJhbmNoKHNlbGYpOgog
ICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAgaG9z
dC53ZWIucmVzcG9uc2VzLmFwcGVuZCh7J3N0YXR1c19jb2RlJzogMjAwLCAnYm9keSc6ICd7Imxv
Z2luIjogIlVTRVIifSd9KQogICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhw
b3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVIn
LCAnLXQnLCAnVE9LRU4nLCAnLWJuJywgJ3dwdC1leHBvcnQtYnJhbmNoJ10pCi0gICAgICAgIGV4
cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9j
a0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RF
eHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikKKyAgICAgICAgdzNjX3BhdGNoX2dlbmVyYXRvciA9
IFdlYlBsYXRmb3JtVGVzdFBhdGNoR2VuZXJhdG9yKGhvc3QsIG9wdGlvbnMpCisgICAgICAgIGV4
cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIHczY19wYXRjaF9nZW5lcmF0b3Is
IFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEs
IE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikKICAgICAgICAg
ZXhwb3J0ZXIuZG9fZXhwb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwb3J0ZXIu
X2dpdC5jYWxscywgWwogICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3cz
Yy10ZXN0cy93ZWItcGxhdGZvcm0tdGVzdHMnLApAQCAtMTY5LDMgKzE3MywyOSBAQCBjbGFzcyBU
ZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICdkZWxldGUg
YnJhbmNoIHdwdC1leHBvcnQtZm9yLXdlYmtpdC0xMjM0JywKICAgICAgICAgICAgICdjaGVja291
dCBtYXN0ZXInLAogICAgICAgICAgICAgJ3Jlc2V0IGhhcmQgb3JpZ2luL21hc3RlciddKQorCisg
ICAgZGVmIHRlc3RfZXhwb3J0X2ludGVyYWN0aXZlX21vZGUoc2VsZik6CisgICAgICAgIGhvc3Qg
PSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQorICAgICAgICBob3N0LndlYi5yZXNwb25z
ZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUnOiAyMDAsICdib2R5JzogJ3sibG9naW4iOiAiVVNFUiJ9
J30pCisgICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICct
ZycsICdIRUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tF
TicsICctLWludGVyYWN0aXZlJ10pCisgICAgICAgIHczY19wYXRjaF9nZW5lcmF0b3IgPSBXZWJQ
bGF0Zm9ybVRlc3RQYXRjaEdlbmVyYXRvcihob3N0LCBvcHRpb25zKQorICAgICAgICBleHBvcnRl
ciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCB3M2NfcGF0Y2hfZ2VuZXJhdG9yLCBUZXN0
RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2Nr
V1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIGV4cG9y
dGVyLmRvX2V4cG9ydCgpCisKKyAgICBkZWYgdGVzdF9leHBvcnRfaW52YWxpZF90b2tlbihzZWxm
KToKKyAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAg
IGhvc3Qud2ViLnJlc3BvbnNlcy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDQwMX0pCisgICAgICAg
IG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICctZycsICdIRUFEJywg
Jy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tFTiddKQorICAgICAg
ICB3M2NfcGF0Y2hfZ2VuZXJhdG9yID0gV2ViUGxhdGZvcm1UZXN0UGF0Y2hHZW5lcmF0b3IoaG9z
dCwgb3B0aW9ucykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFz
IGNvbnRleHQ6CisgICAgICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRp
b25zLCB3M2NfcGF0Y2hfZ2VuZXJhdG9yLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RF
eHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0
Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ09BdXRoIHRva2VuIGlzIG5v
dCB2YWxpZCcsIHN0cihjb250ZXh0LmV4Y2VwdGlvbikpCisKKyAgICBkZWYgdGVzdF9leHBvcnRf
d3JvbmdfdG9rZW4oc2VsZik6CisgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9j
a0hvc3QoKQorICAgICAgICBob3N0LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUn
OiAyMDAsICdib2R5JzogJ3sibG9naW4iOiAiRElGRl9VU0VSIn0nfSkKKyAgICAgICAgb3B0aW9u
cyA9IHBhcnNlX2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAn
MTIzNCcsICctYycsICctbicsICdVU0VSJywgJy10JywgJ1RPS0VOJ10pCisgICAgICAgIHczY19w
YXRjaF9nZW5lcmF0b3IgPSBXZWJQbGF0Zm9ybVRlc3RQYXRjaEdlbmVyYXRvcihob3N0LCBvcHRp
b25zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikgYXMgY29udGV4
dDoKKyAgICAgICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIHcz
Y19wYXRjaF9nZW5lcmF0b3IsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVy
VGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQ
VExpbnRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJbignT0F1dGggdG9rZW4gZG9lcyBub3QgbWF0
Y2ggdGhlIHByb3ZpZGVkIHVzZXJuYW1lJywgc3RyKGNvbnRleHQuZXhjZXB0aW9uKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340348</attachid>
            <date>2018-05-14 13:26:02 -0700</date>
            <delta_ts>2018-05-15 11:30:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184914-20180514162601.patch</filename>
            <type>text/plain</type>
            <size>24638</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNzAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWIwODI2NDAyMGE3YmJkYWNkYjlkY2ZiZWNiYjllYzc2
YTc3MTBkMS4uMjkyZmI2YTFiNGNiMjU3MzE1M2NlZjJlZDljNGU0MDk5MjMzZTFjZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDE4LTA1LTE0ICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgRXhwb3J0IGNoYW5nZXMgdG8gd2ViLXBsYXRmb3JtLXRlc3QgYXMgcGFydCBv
ZiB0aGUgd2Via2l0LXBhdGNoIHVwbG9hZCB3b3JrZmxvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5OgorICAgICAgICAoVXBsb2FkKToKKyAgICAgICAgKENyZWF0ZUJ1Zy5leGVj
dXRlKToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy93cHRjaGFuZ2VleHBvcnQucHk6IEFkZGVkLgorICAgICAgICAoV1BUQ2hhbmdl
RXhwb3J0KToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydC5vcHRpb25zKToKKyAgICAgICAgKFdQ
VENoYW5nZUV4cG9ydC5ydW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1v
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5Ogor
ICAgICAgICAoV2ViUGxhdGZvcm1UZXN0UGF0Y2hHZW5lcmF0b3IpOgorICAgICAgICAoV2ViUGxh
dGZvcm1UZXN0UGF0Y2hHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoV2ViUGxhdGZvcm1U
ZXN0UGF0Y2hHZW5lcmF0b3IuaGFzX3dwdF9jaGFuZ2VzKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
VGVzdFBhdGNoR2VuZXJhdG9yLl9jcmVhdGVfcGF0Y2gpOgorICAgICAgICAoV2ViUGxhdGZvcm1U
ZXN0UGF0Y2hHZW5lcmF0b3IuY3JlYXRlX2dpdF9wYXRjaF9maWxlKToKKyAgICAgICAgKFRlc3RF
eHBvcnRlcik6CisgICAgICAgIChUZXN0RXhwb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoVGVz
dEV4cG9ydGVyLl9wcm9tcHRfZm9yX3Rva2VuKToKKyAgICAgICAgKFRlc3RFeHBvcnRlci5fcHJv
bXB0X2Zvcl91c2VybmFtZSk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIuX2Vuc3VyZV91c2VybmFt
ZV9hbmRfdG9rZW4pOgorICAgICAgICAoVGVzdEV4cG9ydGVyLl92YWxpZGF0ZV9hbmRfc2F2ZV90
b2tlbik6CisgICAgICAgIChUZXN0RXhwb3J0ZXIud3B0X2ZvcmtfYnJhbmNoX2dpdGh1Yl91cmwp
OgorICAgICAgICAoVGVzdEV4cG9ydGVyLnB1c2hfdG9fd3B0X2ZvcmspOgorICAgICAgICAoVGVz
dEV4cG9ydGVyLm1ha2VfcHVsbF9yZXF1ZXN0KToKKyAgICAgICAgKFRlc3RFeHBvcnRlci5kZWxl
dGVfbG9jYWxfYnJhbmNoKToKKyAgICAgICAgKFRlc3RFeHBvcnRlci5jcmVhdGVfZ2l0X3BhdGNo
KToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRl
c3RfZXhwb3J0KToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVzdF9leHBvcnRfd2l0aF9z
cGVjaWZpY19icmFuY2gpOgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdCk6CisgICAgICAgIChU
ZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X2ludGVyYWN0aXZlX21vZGUpOgorICAgICAgICAo
VGVzdEV4cG9ydGVyVGVzdC50ZXN0X2V4cG9ydF9pbnZhbGlkX3Rva2VuKToKKyAgICAgICAgKFRl
c3RFeHBvcnRlclRlc3QudGVzdF9leHBvcnRfd3JvbmdfdG9rZW4pOgorCiAyMDE4LTA1LTEwICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlND
XVtHTElCXSBBZGQgaW50cm9zcGVjdGFibGUgYWx0ZXJuYXRpdmVzIHRvIGZ1bmN0aW9ucyB1c2lu
ZyB2YXJnYXJzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9h
ZC5weQppbmRleCA5MzNkYjJkMDg1MjBkODYwYzUyODNmN2FmNDk2ZmExYjk0MjE1MzAzLi5mMjhi
OTQyYmYyOWNhYjgzNzY0M2MyYzkyMGNiMjliOWJhZGZhYjZlIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKQEAgLTI4Niw2ICsyODYsNyBAQCBj
bGFzcyBVcGxvYWQoQWJzdHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgogICAgICAgICBzdGVw
cy5FbnN1cmVCdWdJc09wZW5BbmRBc3NpZ25lZCwKICAgICAgICAgc3RlcHMuUG9zdERpZmYsCiAg
ICAgICAgIHN0ZXBzLlN1Ym1pdFRvRVdTLAorICAgICAgICBzdGVwcy5XUFRDaGFuZ2VFeHBvcnQs
CiAgICAgXQogICAgIGxvbmdfaGVscCA9ICIiInVwbG9hZCB1cGxvYWRzIHRoZSBjdXJyZW50IGRp
ZmYgdG8gYnVncy53ZWJraXQub3JnLgogICAgIElmIG5vIGJ1ZyBpZCBpcyBwcm92aWRlZCwgdXBs
b2FkIHdpbGwgY3JlYXRlIGEgYnVnLgpAQCAtNTMxLDMgKzUzMiwyNSBAQCBjbGFzcyBDcmVhdGVC
dWcoQ29tbWFuZCk6CiAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9idWdfZnJvbV9jb21taXQob3B0
aW9ucywgYXJncywgdG9vbCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuY3JlYXRl
X2J1Z19mcm9tX3BhdGNoKG9wdGlvbnMsIGFyZ3MsIHRvb2wpCisKKworY2xhc3MgV1BUQ2hhbmdl
RXhwb3J0KEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21tYW5kKToKKyAgICBuYW1lID0gIndwdC1j
aGFuZ2UtZXhwb3J0IgorICAgIGhlbHBfdGV4dCA9ICJPcGVucyBhIHB1bGwgcmVxdWVzdCB0byBz
eW5jIGFueSBjaGFuZ2VzIGluIHRoZSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzIGRpcmVjdG9yeSIKKyAgICBhcmd1bWVudF9uYW1lcyA9ICJbQlVHSURdIgorICAg
IHN0ZXBzID0gWworICAgICAgICBzdGVwcy5XUFRDaGFuZ2VFeHBvcnQsCisgICAgXQorCisgICAg
bG9uZ19oZWxwID0gIiIiT3BlbnMgYSBwdWxsIHJlcXVlc3QgdG8gdGhlIHczYy93ZWItcGxhdGZv
cm0tdGVzdHMKKyAgICBnaXRodWIgcmVwbyBmb3IgYW55IGNoYW5nZXMgaW4gdGhlCisgICAgTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkuIFRoaXMg
c3RlcAorICAgIHdpbGwgbm9vcCBpZiB0aGVyZSBhcmUgbm8gY2hhbmdlcyBpbiB0aGUgd2ViLXBs
YXRmb3JtLXRlc3RzIGRpcmVjdG9yeS4KKyAgICBUaGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRv
IHByb3ZpZGUgYSBnaXRodWIgdXNlcm5hbWUgYW5kIE9BdXRoIHRva2VuCisgICAgdGhlIGZpcnN0
IHRpbWUgdGhpcyBpcyBydW4uCisgICAgIiIiCisKKyAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2Vs
Ziwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIHN0YXRlID0ge30KKyAgICAgICAgc3Rh
dGVbImJ1Z19pZCJdID0gc2VsZi5fYnVnX2lkKG9wdGlvbnMsIGFyZ3MsIHRvb2wsIHN0YXRlKQor
ICAgICAgICByZXR1cm4gc3RhdGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9fX2luaXRfXy5weQppbmRleCBmM2MxNzBlMzEyZWRkNzg2NGY5ZDg1YWQ5Yzc3NTlmMmJjOTFj
OTNmLi5kYzA3ODRmNjE1MWU4YWZmODc5NGE2OTA3NmQ3ZTdmYzJjOGZjYTkxIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5CkBAIC02NiwzICs2Niw0
IEBAIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy51cGRhdGUgaW1wb3J0IFVwZGF0ZQogZnJvbSB3
ZWJraXRweS50b29sLnN0ZXBzLnVwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3ZXIgaW1wb3J0IFVw
ZGF0ZUNoYW5nZUxvZ3NXaXRoUmV2aWV3ZXIKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy52YWxp
ZGF0ZWNoYW5nZWxvZ3MgaW1wb3J0IFZhbGlkYXRlQ2hhbmdlTG9ncwogZnJvbSB3ZWJraXRweS50
b29sLnN0ZXBzLnZhbGlkYXRlcmV2aWV3ZXIgaW1wb3J0IFZhbGlkYXRlUmV2aWV3ZXIKK2Zyb20g
d2Via2l0cHkudG9vbC5zdGVwcy53cHRjaGFuZ2VleHBvcnQgaW1wb3J0IFdQVENoYW5nZUV4cG9y
dApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3dwdGNoYW5n
ZWV4cG9ydC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy93cHRjaGFuZ2Vl
eHBvcnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBhZDVhMGViNzA2NDRlYjJiZDRiZDM3M2I4MmY4MjAzYTNj
Yzg4NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy93cHRjaGFuZ2VleHBvcnQucHkKQEAgLTAsMCArMSw1MyBAQAorIyBDb3B5cmlnaHQgKGMpIDIw
MTgsIEJvY291cCBMTEMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5hYnN0cmFj
dHN0ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLm9wdGlv
bnMgaW1wb3J0IE9wdGlvbnMKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfZXhwb3J0ZXIgaW1wb3J0
IGhhc193cHRfdGVzdF9jaGFuZ2VzLCBleHBvcnRfd3B0X3Rlc3RfY2hhbmdlcworCisKK2NsYXNz
IFdQVENoYW5nZUV4cG9ydChBYnN0cmFjdFN0ZXApOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiBvcHRpb25zKGNscyk6CisgICAgICAgIHJldHVybiBBYnN0cmFjdFN0ZXAub3B0aW9ucygpICsg
WworICAgICAgICAgICAgT3B0aW9ucy5ub25faW50ZXJhY3RpdmUsCisgICAgICAgICAgICBPcHRp
b25zLmdpdF9jb21taXQsCisgICAgICAgIF0KKworICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgor
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKKyAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgIGJ1Z19pZCA9IHN0YXRlLmdldCgiYnVnX2lkIikKKyAgICAgICAgaWYg
bm90IGJ1Z19pZDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGFyZ3MgPSBbIi0tYnVn
Iiwgc3RyKGJ1Z19pZCksICItLWNyZWF0ZS1wciJdCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5naXRfY29tbWl0OgorICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZ2l0LWNvbW1pdCIpCisg
ICAgICAgICAgICBhcmdzLmFwcGVuZChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpCisKKyAgICAg
ICAgbWVzc2FnZSA9ICd3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyBkZXRlY3RlZC4gV291bGQg
eW91IGxpa2UgdG8gY3JlYXRlIGEgcHVsbC1yZXF1ZXN0IHRvIHRoZSBXUFQgZ2l0aHViIHJlcG8g
bm93PycKKyAgICAgICAgaWYgaGFzX3dwdF90ZXN0X2NoYW5nZXMoYXJncywgc2VsZi5fdG9vbCkg
YW5kIHNlbGYuX3Rvb2wudXNlci5jb25maXJtKG1lc3NhZ2UpOgorICAgICAgICAgICAgZXhwb3J0
X3dwdF90ZXN0X2NoYW5nZXMoYXJncywgc2VsZi5fdG9vbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL2NvbW1vbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L2NvbW1vbi5weQppbmRleCBhMTRhYTk1MzU0YjkwNjczOTQxMDE3NmMxYjAzNzhjN2Q3MjM1MzMy
Li42NmZhMzRmMmE3ZTlhZjE3Mzc2YjY0M2NiNGMxYTY0YTk4ODhiMjBmIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9jb21tb24ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2MvY29tbW9uLnB5CkBAIC0zMCwxMCArMzAsMTEgQEAKIAogaW1wb3J0IGpzb24K
IGltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKIAogCi1XUFRfR0hfT1JHID0gJ3czYycKLVdQVF9H
SF9SRVBPX05BTUUgPSAnd2ViLXBsYXRmb3JtLXRlc3RzJworV1BUX0dIX09SRyA9IG9zLmVudmly
b24uZ2V0KCdXUFRfR0hfT1JHJywgJ3czYycpCitXUFRfR0hfUkVQT19OQU1FID0gb3MuZW52aXJv
bi5nZXQoJ1dQVF9HSF9SRVBPX05BTUUnLCAnd2ViLXBsYXRmb3JtLXRlc3RzJykKIFdQVF9HSF9V
UkwgPSAnaHR0cHM6Ly9naXRodWIuY29tLyVzLyVzLycgJSAoV1BUX0dIX09SRywgV1BUX0dIX1JF
UE9fTkFNRSkKIFdQVF9NSVJST1JfVVJMID0gJ2h0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNl
LmNvbS9leHRlcm5hbC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCcKIFdQVF9HSF9TU0hfVVJM
X1RFTVBMQVRFID0gJ2h0dHBzOi8ve31AZ2l0aHViLmNvbS8lcy8lcy5naXQnICUgKFdQVF9HSF9P
UkcsIFdQVF9HSF9SRVBPX05BTUUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2V4cG9ydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9l
eHBvcnRlci5weQppbmRleCA2YTljYTViYjcyYzFmODQ4MzA2NDgwMzgzMmIyZWI3NTUxMTljYTZj
Li5lYWZlMWJjM2ZkZGMyYjM5ODMzNWMwZTY4Zjk5MDQzNTNhZGM1MjRlIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKQEAgLTI4LDYgKzI4LDggQEAgaW1w
b3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgdGltZQoraW1w
b3J0IGpzb24KK2Zyb20gdXJsbGliMiBpbXBvcnQgSFRUUEVycm9yCiAKIGZyb20gd2Via2l0cHku
Y29tbW9uLmNoZWNrb3V0LnNjbS5naXQgaW1wb3J0IEdpdAogZnJvbSB3ZWJraXRweS5jb21tb24u
aG9zdCBpbXBvcnQgSG9zdApAQCAtMzUsMjAgKzM3LDUxIEBAIGZyb20gd2Via2l0cHkuY29tbW9u
Lm5ldC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtp
dF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgogZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1
YiBpbXBvcnQgV1BUR2l0SHViCiBmcm9tIHdlYmtpdHB5LnczYy53cHRfbGludGVyIGltcG9ydCBX
UFRMaW50ZXIKK2Zyb20gd2Via2l0cHkudzNjLmNvbW1vbiBpbXBvcnQgV1BUX0dIX09SRwogCiBf
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIFdFQktJVF9XUFRfRElSID0gJ0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMnCi1XUFRfUFJfVVJMID0g
Imh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3B1bGwvIgorV1BUX1BS
X1VSTCA9ICJodHRwczovL2dpdGh1Yi5jb20vJXMvd2ViLXBsYXRmb3JtLXRlc3RzL3B1bGwvIiAl
IFdQVF9HSF9PUkcKIFdFQktJVF9FWFBPUlRfUFJfTEFCRUwgPSAnd2Via2l0LWV4cG9ydCcKIAog
Ci1jbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKK2NsYXNzIFdlYlBsYXRmb3JtVGVzdFBhdGNo
R2VuZXJhdG9yKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgb3B0aW9u
cyk6CisgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0g
PSBob3N0LmZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKKworICAg
ICAgICBzZWxmLl9ob3N0LmluaXRpYWxpemVfc2NtKCkKKworICAgIGRlZiBoYXNfd3B0X2NoYW5n
ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBib29sKHNlbGYuX2NyZWF0ZV9wYXRjaCgpKQorCisg
ICAgZGVmIF9jcmVhdGVfcGF0Y2goc2VsZik6CisgICAgICAgIHBhdGNoX2RhdGEgPSBzZWxmLl9o
b3N0LnNjbSgpLmNyZWF0ZV9wYXRjaChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIFtXRUJLSVRf
V1BUX0RJUl0pCisgICAgICAgIGlmIG5vdCBwYXRjaF9kYXRhIG9yIG5vdCAnZGlmZicgaW4gcGF0
Y2hfZGF0YToKKyAgICAgICAgICAgIHJldHVybiAnJworICAgICAgICByZXR1cm4gcGF0Y2hfZGF0
YQorCisgICAgZGVmIGNyZWF0ZV9naXRfcGF0Y2hfZmlsZShzZWxmKToKKyAgICAgICAgXywgcGF0
Y2hfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0ub3Blbl9iaW5hcnlfdGVtcGZpbGUoJ3dwdF9leHBv
cnRfcGF0Y2gnKQorICAgICAgICBwYXRjaF9kYXRhID0gc2VsZi5fY3JlYXRlX3BhdGNoKCkKKyAg
ICAgICAgaWYgbm90ICdkaWZmJyBpbiBwYXRjaF9kYXRhOgorICAgICAgICAgICAgX2xvZy5pbmZv
KCdObyBjaGFuZ2VzIHRvIHVwc3RyZWFtLCBwYXRjaCBkYXRhIGlzOiAiJXMiJyAlIChwYXRjaF9k
YXRhKSkKKyAgICAgICAgICAgIHJldHVybiAnJworICAgICAgICAjIEZJWE1FOiBXZSBjYW4gcHJv
YmFibHkgdHJ5IHRvIHVzZSAtLXJlbGF0aXZlIGdpdCBwYXJhbWV0ZXIgdG8gbm90IGRvIHRoYXQg
cmVwbGFjZW1lbnQuCisgICAgICAgIHBhdGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJlcGxhY2UoV0VC
S0lUX1dQVF9ESVIgKyAnLycsICcnKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3Rl
eHRfZmlsZShwYXRjaF9maWxlLCBwYXRjaF9kYXRhKQorICAgICAgICByZXR1cm4gcGF0Y2hfZmls
ZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIG9wdGlvbnMsIGdpdENsYXNzPUdpdCwg
YnVnemlsbGFDbGFzcz1CdWd6aWxsYSwgV1BUR2l0SHViQ2xhc3M9V1BUR2l0SHViLCBXUFRMaW50
ZXJDbGFzcz1XUFRMaW50ZXIpOgorCitjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgaG9zdCwgb3B0aW9ucywgd3B0X3BhdGNoX2dlbmVyYXRvciwgZ2l0
Q2xhc3M9R2l0LCBidWd6aWxsYUNsYXNzPUJ1Z3ppbGxhLCBXUFRHaXRIdWJDbGFzcz1XUFRHaXRI
dWIsIFdQVExpbnRlckNsYXNzPVdQVExpbnRlcik6CiAgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0
CiAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBob3N0LmZpbGVzeXN0ZW0KICAgICAgICAgc2Vs
Zi5fb3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5fd3B0X3BhdGNoX2dlbmVyYXRvciA9
IHdwdF9wYXRjaF9nZW5lcmF0b3IKIAogICAgICAgICBzZWxmLl9ob3N0LmluaXRpYWxpemVfc2Nt
KCkKIApAQCAtNjcsMjUgKzEwMCw3IEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAg
ICAgICBzZWxmLl9naXQgPSBzZWxmLl9lbnN1cmVfd3B0X3JlcG9zaXRvcnkoImh0dHBzOi8vZ2l0
aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCIsIHNlbGYuX29wdGlvbnMucmVwb3Np
dG9yeV9kaXJlY3RvcnksIGdpdENsYXNzKQogICAgICAgICBzZWxmLl9saW50ZXIgPSBXUFRMaW50
ZXJDbGFzcyhzZWxmLl9vcHRpb25zLnJlcG9zaXRvcnlfZGlyZWN0b3J5LCBob3N0LmZpbGVzeXN0
ZW0pCiAKLSAgICAgICAgc2VsZi5fdXNlcm5hbWUgPSBvcHRpb25zLnVzZXJuYW1lCi0gICAgICAg
IGlmIG5vdCBzZWxmLl91c2VybmFtZToKLSAgICAgICAgICAgIHNlbGYuX3VzZXJuYW1lID0gc2Vs
Zi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJuYW1lJykucnN0cmlwKCkKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToKLSAgICAgICAgICAgICAgICBzZWxmLl91c2VybmFt
ZSA9IG9zLmVudmlyb24uZ2V0KCdHSVRIVUJfVVNFUk5BTUUnKQotICAgICAgICAgICAgaWYgbm90
IHNlbGYuX3VzZXJuYW1lOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk1pc3Np
bmcgR2l0SHViIHVzZXJuYW1lLCBwbGVhc2UgcHJvdmlkZSBpdCBhcyBhIGNvbW1hbmQgYXJndW1l
bnQgKHNlZSBoZWxwIGZvciB0aGUgY29tbWFuZCkuIikKLSAgICAgICAgZWxpZiBub3Qgc2VsZi5f
Z2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJuYW1lJyk6Ci0gICAgICAgICAgICBzZWxmLl9n
aXQuc2V0X2xvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJuYW1lJywgc2VsZi5fdXNlcm5hbWUpCi0K
LSAgICAgICAgc2VsZi5fdG9rZW4gPSBvcHRpb25zLnRva2VuCi0gICAgICAgIGlmIG5vdCBzZWxm
Ll90b2tlbjoKLSAgICAgICAgICAgIHNlbGYuX3Rva2VuID0gc2VsZi5fZ2l0LmxvY2FsX2NvbmZp
ZygnZ2l0aHViLnRva2VuJykucnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90b2tl
bjoKLSAgICAgICAgICAgICAgICBzZWxmLl90b2tlbiA9IG9zLmVudmlyb24uZ2V0KCdHSVRIVUJf
VE9LRU4nKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Rva2VuOgotICAgICAgICAgICAgICAg
IF9sb2cuaW5mbygiTWlzc2luZyBHaXRIdWIgdG9rZW4sIHRoZSBzY3JpcHQgd2lsbCBub3QgYmUg
YWJsZSB0byBjcmVhdGUgYSBwdWxsIHJlcXVlc3QgdG8gVzNDIHdlYi1wbGF0Zm9ybS10ZXN0cyBy
ZXBvc2l0b3J5LiIpCi0gICAgICAgIGVsaWYgbm90IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dp
dGh1Yi50b2tlbicpOgotICAgICAgICAgICAgc2VsZi5fZ2l0LnNldF9sb2NhbF9jb25maWcoJ2dp
dGh1Yi50b2tlbicsIHNlbGYuX3Rva2VuKQorICAgICAgICBzZWxmLl9lbnN1cmVfdXNlcm5hbWVf
YW5kX3Rva2VuKG9wdGlvbnMpCiAKICAgICAgICAgc2VsZi5fZ2l0aHViID0gV1BUR2l0SHViQ2xh
c3Moc2VsZi5faG9zdCwgc2VsZi5fdXNlcm5hbWUsIHNlbGYuX3Rva2VuKSBpZiBzZWxmLl91c2Vy
bmFtZSBhbmQgc2VsZi5fdG9rZW4gZWxzZSBOb25lCiAKQEAgLTEwNCw2ICsxMTksNjAgQEAgY2xh
c3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl93cHRfZm9ya19w
dXNoX3VybDoKICAgICAgICAgICAgIHNlbGYuX3dwdF9mb3JrX3B1c2hfdXJsID0gImh0dHBzOi8v
IiArIHNlbGYuX3VzZXJuYW1lICsgIkBnaXRodWIuY29tLyIgKyBzZWxmLl91c2VybmFtZSArICIv
d2ViLXBsYXRmb3JtLXRlc3RzLmdpdCIKIAorICAgIGRlZiBfcHJvbXB0X2Zvcl90b2tlbihzZWxm
LCBvcHRpb25zKToKKyAgICAgICAgaWYgb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6CisgICAgICAg
ICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5faG9zdC51c2VyLnByb21wdF9w
YXNzd29yZCgnRW50ZXIgZ2l0aHViIE9BdXRoIHRva2VuOiAnKQorCisgICAgZGVmIF9wcm9tcHRf
Zm9yX3VzZXJuYW1lKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBpZiBvcHRpb25zLm5vbl9pbnRl
cmFjdGl2ZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9o
b3N0LnVzZXIucHJvbXB0KCdFbnRlciBnaXRodWIgdXNlcm5hbWU6ICcpCisKKyAgICBkZWYgX2Vu
c3VyZV91c2VybmFtZV9hbmRfdG9rZW4oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgIHNlbGYuX3Vz
ZXJuYW1lID0gb3B0aW9ucy51c2VybmFtZQorICAgICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6
CisgICAgICAgICAgICAjIEZJWE1FOiBVc2UgdGhlIGtleWNoYWluIHRvIHN0b3JlIHVzZXJuYW1l
IGFuZCBvYXV0aCB0b2tlbiBpbnN0ZWFkIG9mIC5naXQvY29uZmlnCisgICAgICAgICAgICBzZWxm
Ll91c2VybmFtZSA9IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScpLnJz
dHJpcCgpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6CisgICAgICAgICAgICAg
ICAgc2VsZi5fdXNlcm5hbWUgPSBvcy5lbnZpcm9uLmdldCgnR0lUSFVCX1VTRVJOQU1FJykKKyAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToKKyAgICAgICAgICAgICAgICBzZWxmLl91
c2VybmFtZSA9IHNlbGYuX3Byb21wdF9mb3JfdXNlcm5hbWUob3B0aW9ucykKKyAgICAgICAgICAg
IGlmIG5vdCBzZWxmLl91c2VybmFtZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJNaXNzaW5nIEdpdEh1YiB1c2VybmFtZSwgcGxlYXNlIHByb3ZpZGUgaXQgYXMgYSBjb21tYW5k
IGFyZ3VtZW50IChzZWUgaGVscCBmb3IgdGhlIGNvbW1hbmQpLiIpCisKKyAgICAgICAgc2VsZi5f
dG9rZW4gPSBvcHRpb25zLnRva2VuCisgICAgICAgIGlmIG5vdCBzZWxmLl90b2tlbjoKKyAgICAg
ICAgICAgIHNlbGYuX3Rva2VuID0gc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnRva2Vu
JykucnN0cmlwKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90b2tlbjoKKyAgICAgICAgICAg
ICAgICBzZWxmLl90b2tlbiA9IG9zLmVudmlyb24uZ2V0KCdHSVRIVUJfVE9LRU4nKQorICAgICAg
ICAgICAgaWYgbm90IHNlbGYuX3Rva2VuOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rva2VuID0g
c2VsZi5fcHJvbXB0X2Zvcl90b2tlbihvcHRpb25zKQorICAgICAgICAgICAgaWYgbm90IHNlbGYu
X3Rva2VuOgorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiTWlzc2luZyBHaXRIdWIgdG9rZW4s
IHRoZSBzY3JpcHQgd2lsbCBub3QgYmUgYWJsZSB0byBjcmVhdGUgYSBwdWxsIHJlcXVlc3QgdG8g
VzNDIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5LiIpCisKKyAgICAgICAgaWYgc2VsZi5f
dG9rZW46CisgICAgICAgICAgICBzZWxmLl92YWxpZGF0ZV9hbmRfc2F2ZV90b2tlbihzZWxmLl91
c2VybmFtZSwgc2VsZi5fdG9rZW4pCisKKyAgICBkZWYgX3ZhbGlkYXRlX2FuZF9zYXZlX3Rva2Vu
KHNlbGYsIHVzZXJuYW1lLCB0b2tlbik6CisgICAgICAgICMgdmFsaWRhdGUgdG9rZW4gYW5kIHVz
ZXJuYW1lCisgICAgICAgIHVybCA9ICdodHRwczovL2FwaS5naXRodWIuY29tL3VzZXI/YWNjZXNz
X3Rva2VuPSVzJyAlICh0b2tlbiwpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3BvbnNl
ID0gc2VsZi5faG9zdC53ZWIucmVxdWVzdChtZXRob2Q9J0dFVCcsIHVybD11cmwsIGRhdGE9Tm9u
ZSkKKyAgICAgICAgZXhjZXB0IEhUVFBFcnJvciBhcyBlOgorICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCJPQXV0aCB0b2tlbiBpcyBub3QgdmFsaWQiKQorICAgICAgICBkYXRhID0ganNvbi5s
b2FkKHJlc3BvbnNlKQorICAgICAgICBsb2dpbiA9IGRhdGEuZ2V0KCdsb2dpbicsIE5vbmUpCisg
ICAgICAgIGlmIGxvZ2luICE9IHVzZXJuYW1lOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCJPQXV0aCB0b2tlbiBkb2VzIG5vdCBtYXRjaCB0aGUgcHJvdmlkZWQgdXNlcm5hbWUuIFByb3Zp
ZGVkIHVzZXI6ICVzLCBnaXRodWIgbG9naW46ICVzIiAlICh1c2VybmFtZSwgbG9naW4pKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgIyBVc2VybmFtZSBhbmQgdG9rZW4gYXJlIHZhbGlkLiBT
YXZlIHRoZW0gaW4gdGhlIGdpdCBjb25maWcgc28gd2UKKyAgICAgICAgICAgICMgZG8gbm90IG5l
ZWQgdG8gYXNrIGZvciB0aGVtIGFnYWluCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZ2l0Lmxv
Y2FsX2NvbmZpZygnZ2l0aHViLnRva2VuJyk6CisgICAgICAgICAgICAgICAgc2VsZi5fZ2l0LnNl
dF9sb2NhbF9jb25maWcoJ2dpdGh1Yi50b2tlbicsIHRva2VuKQorICAgICAgICAgICAgaWYgbm90
IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScpOgorICAgICAgICAgICAg
ICAgIHNlbGYuX2dpdC5zZXRfbG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnLCB1c2VybmFt
ZSkKKwogICAgIGRlZiBfZW5zdXJlX3dwdF9yZXBvc2l0b3J5KHNlbGYsIHVybCwgd3B0X3JlcG9z
aXRvcnlfZGlyZWN0b3J5LCBnaXRDbGFzcyk6CiAgICAgICAgIGdpdCA9IE5vbmUKICAgICAgICAg
aWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHdwdF9yZXBvc2l0b3J5X2RpcmVjdG9yeSk6
CkBAIC0xNjQsMTggKzIzMywyMSBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAg
ICAgc2VsZi5fZ2l0LmNvbW1pdChbJy1hJywgJy1tJywgc2VsZi5fY29tbWl0X21lc3NhZ2VdKQog
ICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdwdF9mb3JrX2Jy
YW5jaF9naXRodWJfdXJsKHNlbGYpOgorICAgICAgICByZXR1cm4gImh0dHBzOi8vZ2l0aHViLmNv
bS8iICsgc2VsZi5fdXNlcm5hbWUgKyAiL3dlYi1wbGF0Zm9ybS10ZXN0cy90cmVlLyIgKyBzZWxm
Ll9wdWJsaWNfYnJhbmNoX25hbWUKKwogICAgIGRlZiBwdXNoX3RvX3dwdF9mb3JrKHNlbGYpOgog
ICAgICAgICBzZWxmLmNyZWF0ZV91cGxvYWRfcmVtb3RlX2lmX25lZWRlZCgpCi0gICAgICAgIHdw
dF9mb3JrX2JyYW5jaF9naXRodWJfdXJsID0gImh0dHBzOi8vZ2l0aHViLmNvbS8iICsgc2VsZi5f
dXNlcm5hbWUgKyAiL3dlYi1wbGF0Zm9ybS10ZXN0cy90cmVlLyIgKyBzZWxmLl9wdWJsaWNfYnJh
bmNoX25hbWUKICAgICAgICAgX2xvZy5pbmZvKCdQdXNoaW5nIGJyYW5jaCAnICsgc2VsZi5fYnJh
bmNoX25hbWUgKyAiIHRvICIgKyBzZWxmLl9naXQucmVtb3RlKFsiZ2V0LXVybCIsIHNlbGYuX3dw
dF9mb3JrX3JlbW90ZV0pLnJzdHJpcCgpKQogICAgICAgICBfbG9nLmluZm8oJ1RoaXMgbWF5IHRh
a2Ugc29tZSB0aW1lJykKICAgICAgICAgc2VsZi5fZ2l0LnB1c2goW3NlbGYuX3dwdF9mb3JrX3Jl
bW90ZSwgc2VsZi5fYnJhbmNoX25hbWUgKyAiOiIgKyBzZWxmLl9wdWJsaWNfYnJhbmNoX25hbWUs
ICctZiddKQotICAgICAgICBfbG9nLmluZm8oJ0JyYW5jaCBhdmFpbGFibGUgYXQgJyArIHdwdF9m
b3JrX2JyYW5jaF9naXRodWJfdXJsKQorICAgICAgICBfbG9nLmluZm8oJ0JyYW5jaCBhdmFpbGFi
bGUgYXQgJyArIHNlbGYud3B0X2ZvcmtfYnJhbmNoX2dpdGh1Yl91cmwpCiAgICAgICAgIHJldHVy
biBUcnVlCiAKICAgICBkZWYgbWFrZV9wdWxsX3JlcXVlc3Qoc2VsZik6CiAgICAgICAgIGlmIG5v
dCBzZWxmLl9naXRodWI6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJ01pc3NpbmcgaW5mb3JtYXRp
b24gdG8gY3JlYXRlIGEgcHVsbCByZXF1ZXN0JykKKyAgICAgICAgICAgIF9sb2cuaW5mbygnU2tp
cHBpbmcgcHVsbCByZXF1ZXN0IGJlY2F1c2UgT0F1dGggdG9rZW4gd2FzIG5vdCBwcm92aWRlZC4g
WW91IGNhbiBvcGVuIHRoZSBwdWxsIHJlcXVlc3QgbWFudWFsbHkgdXNpbmcgdGhlIGJyYW5jaCAn
ICsgc2VsZi53cHRfZm9ya19icmFuY2hfZ2l0aHViX3VybCkKICAgICAgICAgICAgIHJldHVybgog
CiAgICAgICAgIF9sb2cuaW5mbygnTWFraW5nIHB1bGwgcmVxdWVzdCcpCkBAIC0yMDMsMjIgKzI3
NSwxMiBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHByX251
bWJlcgogCiAgICAgZGVmIGRlbGV0ZV9sb2NhbF9icmFuY2goc2VsZik6Ci0gICAgICAgIF9sb2cu
aW5mbygnUmVtb3ZpbmcgYnJhbmNoICcgKyBzZWxmLl9icmFuY2hfbmFtZSkKKyAgICAgICAgX2xv
Zy5pbmZvKCdSZW1vdmluZyBsb2NhbCBicmFuY2ggJyArIHNlbGYuX2JyYW5jaF9uYW1lKQogICAg
ICAgICBzZWxmLl9naXQuY2hlY2tvdXQoJ21hc3RlcicpCiAgICAgICAgIHNlbGYuX2dpdC5kZWxl
dGVfYnJhbmNoKHNlbGYuX2JyYW5jaF9uYW1lKQogCiAgICAgZGVmIGNyZWF0ZV9naXRfcGF0Y2go
c2VsZik6Ci0gICAgICAgIHBhdGNoX2ZpbGUgPSAnLi9wYXRjaC50ZW1wLicgKyBzdHIodGltZS5j
bG9jaygpKQotICAgICAgICBnaXRfY29tbWl0ID0gIkhFQUQuLi4uIiBpZiBub3Qgc2VsZi5fb3B0
aW9ucy5naXRfY29tbWl0IGVsc2Ugc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0ICsgIn4xLi4iICsg
c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0Ci0gICAgICAgIHBhdGNoX2RhdGEgPSBzZWxmLl9ob3N0
LnNjbSgpLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0LCBbV0VCS0lUX1dQVF9ESVJdKQotICAgICAg
ICBpZiBub3QgcGF0Y2hfZGF0YSBvciBub3QgJ2RpZmYnIGluIHBhdGNoX2RhdGE6Ci0gICAgICAg
ICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0sIHBhdGNoIGRhdGEgaXM6ICIl
cyInICUgKHBhdGNoX2RhdGEpKQotICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgICMgRklY
TUU6IFdlIGNhbiBwcm9iYWJseSB0cnkgdG8gdXNlIC0tcmVsYXRpdmUgZ2l0IHBhcmFtZXRlciB0
byBub3QgZG8gdGhhdCByZXBsYWNlbWVudC4KLSAgICAgICAgcGF0Y2hfZGF0YSA9IHBhdGNoX2Rh
dGEucmVwbGFjZShXRUJLSVRfV1BUX0RJUiArICcvJywgJycpCi0gICAgICAgIHBhdGNoX2ZpbGUg
PSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgocGF0Y2hfZmlsZSkKLSAgICAgICAgc2VsZi5fZmls
ZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0Y2hfZmlsZSwgcGF0Y2hfZGF0YSkKLSAgICAgICAg
cmV0dXJuIHBhdGNoX2ZpbGUKKyAgICAgICAgcmV0dXJuIHNlbGYuX3dwdF9wYXRjaF9nZW5lcmF0
b3IuY3JlYXRlX2dpdF9wYXRjaF9maWxlKCkKIAogICAgIGRlZiBjcmVhdGVfdXBsb2FkX3JlbW90
ZV9pZl9uZWVkZWQoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl93cHRfZm9ya19yZW1vdGUg
aW4gc2VsZi5fZ2l0LnJlbW90ZShbXSk6CkBAIC0yOTAsNiArMzUyLDcgQEAgZGVmIHBhcnNlX2Fy
Z3MoYXJncyk6CiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXUnLCAnLS1yZW1vdGUtdXJsJywg
ZGVzdD0ncmVwb3NpdG9yeV9yZW1vdGVfdXJsJywgZGVmYXVsdD1Ob25lLCBoZWxwPSdyZXBvc2l0
b3J5IHVybCB0byB1c2UgdG8gcHVzaCcpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWQnLCAn
LS1yZXBvc2l0b3J5JywgZGVzdD0ncmVwb3NpdG9yeV9kaXJlY3RvcnknLCBkZWZhdWx0PU5vbmUs
IGhlbHA9J3JlcG9zaXRvcnkgZGlyZWN0b3J5JykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCct
YycsICctLWNyZWF0ZS1wcicsIGRlc3Q9J2NyZWF0ZV9wdWxsX3JlcXVlc3QnLCBhY3Rpb249J3N0
b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdjcmVhdGUgcHVsbCByZXF1ZXN0IHRvIHcz
YyB3ZWItcGxhdGZvcm0tdGVzdHMnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm9uLWlu
dGVyYWN0aXZlJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nbm9uX2ludGVyYWN0aXZlJywg
ZGVmYXVsdD1GYWxzZSwgaGVscD0nTmV2ZXIgcHJvbXB0IHRoZSB1c2VyLCBmYWlsIGFzIGZhc3Qg
YXMgcG9zc2libGUuJykKIAogICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2Vfa25vd25f
YXJncyhhcmdzKQogCkBAIC0zMDUsNiArMzY4LDcgQEAgZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6
CiAgICAgICAgICAgICByZXR1cm4gcmVjb3JkLmdldE1lc3NhZ2UoKQogCiAgICAgbG9nZ2VyID0g
bG9nZ2luZy5nZXRMb2dnZXIoJ3dlYmtpdHB5LnczYy50ZXN0X2V4cG9ydGVyJykKKyAgICBsb2dn
ZXIucHJvcGFnYXRlID0gRmFsc2UKICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQog
ICAgIGhhbmRsZXIgPSBMb2dIYW5kbGVyKCkKICAgICBoYW5kbGVyLnNldExldmVsKGxvZ2dpbmcu
SU5GTykKQEAgLTMxMywxMCArMzc3LDI0IEBAIGRlZiBjb25maWd1cmVfbG9nZ2luZygpOgogCiAK
IGRlZiBtYWluKF9hcmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKLSAgICBvcHRpb25zID0gcGFyc2Vf
YXJncyhfYXJndikKLQogICAgIGNvbmZpZ3VyZV9sb2dnaW5nKCkKKyAgICBob3N0ID0gSG9zdCgp
CiAKLSAgICB0ZXN0X2V4cG9ydGVyID0gVGVzdEV4cG9ydGVyKEhvc3QoKSwgb3B0aW9ucykKKyAg
ICBpZiBub3QgaGFzX3dwdF90ZXN0X2NoYW5nZXMoX2FyZ3YsIGhvc3QpOgorICAgICAgICBfbG9n
LmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0uIEV4aXRpbmcuLi4nKQorICAgICAgICByZXR1
cm4KIAorICAgIGV4cG9ydF93cHRfdGVzdF9jaGFuZ2VzKF9hcmd2LCBob3N0KQorCisKK2RlZiBl
eHBvcnRfd3B0X3Rlc3RfY2hhbmdlcyhhcmdzLCBob3N0KToKKyAgICBvcHRpb25zID0gcGFyc2Vf
YXJncyhhcmdzKQorICAgIHdwdF9wYXRjaF9nZW5lcmF0b3IgPSBXZWJQbGF0Zm9ybVRlc3RQYXRj
aEdlbmVyYXRvcihob3N0LCBvcHRpb25zKQorICAgIHRlc3RfZXhwb3J0ZXIgPSBUZXN0RXhwb3J0
ZXIoaG9zdCwgb3B0aW9ucywgd3B0X3BhdGNoX2dlbmVyYXRvcikKICAgICB0ZXN0X2V4cG9ydGVy
LmRvX2V4cG9ydCgpCisKKworZGVmIGhhc193cHRfdGVzdF9jaGFuZ2VzKGFyZ3MsIGhvc3QpOgor
ICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKGFyZ3MpCisgICAgd3B0X3BhdGNoX2dlbmVyYXRvciA9
IFdlYlBsYXRmb3JtVGVzdFBhdGNoR2VuZXJhdG9yKGhvc3QsIG9wdGlvbnMpCisgICAgcmV0dXJu
IHdwdF9wYXRjaF9nZW5lcmF0b3IuaGFzX3dwdF9jaGFuZ2VzKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5CmluZGV4IGI4MzM0
YTk0OWM2MTI4NjcyZTNjNDcyNGYxNjEwM2MwNGY5Y2I5ODkuLmY0YmQ2MmJlNjc4YTE1YjY0NGNi
ZmIwZjdkNDA3MzRmZDk3NGMxZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weQpAQCAtMjUsNyArMjUsNyBAQCBpbXBvcnQg
dW5pdHRlc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tG
aWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1w
b3J0IE1vY2tFeGVjdXRpdmUyCi1mcm9tIHdlYmtpdHB5LnczYy50ZXN0X2V4cG9ydGVyIGltcG9y
dCBUZXN0RXhwb3J0ZXIsIHBhcnNlX2FyZ3MKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfZXhwb3J0
ZXIgaW1wb3J0IFRlc3RFeHBvcnRlciwgV2ViUGxhdGZvcm1UZXN0UGF0Y2hHZW5lcmF0b3IsIHBh
cnNlX2FyZ3MKIGZyb20gd2Via2l0cHkudzNjLndwdF9naXRodWJfbW9jayBpbXBvcnQgTW9ja1dQ
VEdpdEh1YgogCiBtb2NrX2xpbnRlciA9IE5vbmUKQEAgLTEyMiw4ICsxMjIsMTAgQEAgY2xhc3Mg
VGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9leHBv
cnQoc2VsZik6CiAgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQor
ICAgICAgICBob3N0LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUnOiAyMDAsICdi
b2R5JzogJ3sibG9naW4iOiAiVVNFUiJ9J30pCiAgICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdz
KFsndGVzdF9leHBvcnRlci5weScsICctZycsICdIRUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAn
LW4nLCAnVVNFUicsICctdCcsICdUT0tFTiddKQotICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBv
cnRlcihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRl
clRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tX
UFRMaW50ZXIpCisgICAgICAgIHczY19wYXRjaF9nZW5lcmF0b3IgPSBXZWJQbGF0Zm9ybVRlc3RQ
YXRjaEdlbmVyYXRvcihob3N0LCBvcHRpb25zKQorICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBv
cnRlcihob3N0LCBvcHRpb25zLCB3M2NfcGF0Y2hfZ2VuZXJhdG9yLCBUZXN0RXhwb3J0ZXJUZXN0
Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBU
ZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCiAgICAgICAgIGV4cG9ydGVyLmRvX2V4cG9y
dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cG9ydGVyLl9naXRodWIuY2FsbHMsIFsn
Y3JlYXRlX3ByJywgJ2FkZF9sYWJlbCAid2Via2l0LWV4cG9ydCInXSkKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKCdXZWJLaXQgZXhwb3J0JyBpbiBleHBvcnRlci5fZ2l0aHViLnB1bGxfcmVxdWVz
dHNfY3JlYXRlZFswXVsxXSkKQEAgLTE1MCw4ICsxNTIsMTAgQEAgY2xhc3MgVGVzdEV4cG9ydGVy
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9leHBvcnRfd2l0aF9zcGVj
aWZpY19icmFuY2goc2VsZik6CiAgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9j
a0hvc3QoKQorICAgICAgICBob3N0LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUn
OiAyMDAsICdib2R5JzogJ3sibG9naW4iOiAiVVNFUiJ9J30pCiAgICAgICAgIG9wdGlvbnMgPSBw
YXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICctZycsICdIRUFEJywgJy1iJywgJzEyMzQn
LCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tFTicsICctYm4nLCAnd3B0LWV4cG9ydC1i
cmFuY2gnXSkKLSAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywg
VGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwg
TW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICB3
M2NfcGF0Y2hfZ2VuZXJhdG9yID0gV2ViUGxhdGZvcm1UZXN0UGF0Y2hHZW5lcmF0b3IoaG9zdCwg
b3B0aW9ucykKKyAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywg
dzNjX3BhdGNoX2dlbmVyYXRvciwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0
ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2Nr
V1BUTGludGVyKQogICAgICAgICBleHBvcnRlci5kb19leHBvcnQoKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhleHBvcnRlci5fZ2l0LmNhbGxzLCBbCiAgICAgICAgICAgICAnL21vY2stY2hl
Y2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3dlYi1wbGF0Zm9ybS10ZXN0cycsCkBAIC0xNjks
MyArMTczLDI5IEBAIGNsYXNzIFRlc3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICAgICAgJ2RlbGV0ZSBicmFuY2ggd3B0LWV4cG9ydC1mb3Itd2Via2l0LTEyMzQnLAog
ICAgICAgICAgICAgJ2NoZWNrb3V0IG1hc3RlcicsCiAgICAgICAgICAgICAncmVzZXQgaGFyZCBv
cmlnaW4vbWFzdGVyJ10pCisKKyAgICBkZWYgdGVzdF9leHBvcnRfaW50ZXJhY3RpdmVfbW9kZShz
ZWxmKToKKyAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAg
ICAgIGhvc3Qud2ViLnJlc3BvbnNlcy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDIwMCwgJ2JvZHkn
OiAneyJsb2dpbiI6ICJVU0VSIn0nfSkKKyAgICAgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoWyd0
ZXN0X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICctYycsICctbics
ICdVU0VSJywgJy10JywgJ1RPS0VOJywgJy0taW50ZXJhY3RpdmUnXSkKKyAgICAgICAgdzNjX3Bh
dGNoX2dlbmVyYXRvciA9IFdlYlBsYXRmb3JtVGVzdFBhdGNoR2VuZXJhdG9yKGhvc3QsIG9wdGlv
bnMpCisgICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIHczY19w
YXRjaF9nZW5lcmF0b3IsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVz
dC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExp
bnRlcikKKyAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKKworICAgIGRlZiB0ZXN0X2V4cG9y
dF9pbnZhbGlkX3Rva2VuKHNlbGYpOgorICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5N
eU1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC53ZWIucmVzcG9uc2VzLmFwcGVuZCh7J3N0YXR1c19j
b2RlJzogNDAxfSkKKyAgICAgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoWyd0ZXN0X2V4cG9ydGVy
LnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICctYycsICctbicsICdVU0VSJywgJy10
JywgJ1RPS0VOJ10pCisgICAgICAgIHczY19wYXRjaF9nZW5lcmF0b3IgPSBXZWJQbGF0Zm9ybVRl
c3RQYXRjaEdlbmVyYXRvcihob3N0LCBvcHRpb25zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKEV4Y2VwdGlvbikgYXMgY29udGV4dDoKKyAgICAgICAgICAgIGV4cG9ydGVyID0gVGVz
dEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIHczY19wYXRjaF9nZW5lcmF0b3IsIFRlc3RFeHBvcnRl
clRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRI
dWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJ
bignT0F1dGggdG9rZW4gaXMgbm90IHZhbGlkJywgc3RyKGNvbnRleHQuZXhjZXB0aW9uKSkKKwor
ICAgIGRlZiB0ZXN0X2V4cG9ydF93cm9uZ190b2tlbihzZWxmKToKKyAgICAgICAgaG9zdCA9IFRl
c3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAgIGhvc3Qud2ViLnJlc3BvbnNlcy5h
cHBlbmQoeydzdGF0dXNfY29kZSc6IDIwMCwgJ2JvZHknOiAneyJsb2dpbiI6ICJESUZGX1VTRVIi
fSd9KQorICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHknLCAn
LWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAnVE9L
RU4nXSkKKyAgICAgICAgdzNjX3BhdGNoX2dlbmVyYXRvciA9IFdlYlBsYXRmb3JtVGVzdFBhdGNo
R2VuZXJhdG9yKGhvc3QsIG9wdGlvbnMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
RXhjZXB0aW9uKSBhcyBjb250ZXh0OgorICAgICAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0
ZXIoaG9zdCwgb3B0aW9ucywgdzNjX3BhdGNoX2dlbmVyYXRvciwgVGVzdEV4cG9ydGVyVGVzdC5N
b2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVz
dEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICBzZWxmLmFzc2VydEluKCdPQXV0
aCB0b2tlbiBkb2VzIG5vdCBtYXRjaCB0aGUgcHJvdmlkZWQgdXNlcm5hbWUnLCBzdHIoY29udGV4
dC5leGNlcHRpb24pKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340423</attachid>
            <date>2018-05-15 11:30:37 -0700</date>
            <delta_ts>2018-05-15 11:58:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184914-20180515143036.patch</filename>
            <type>text/plain</type>
            <size>27435</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNzAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWIwODI2NDAyMGE3YmJkYWNkYjlkY2ZiZWNiYjllYzc2
YTc3MTBkMS4uYmJjNTlhN2Y0Y2RjMzBmOWNmMTZjZGJjMmFiZTBmMzBmNTAwYTY4YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2
IEBACisyMDE4LTA1LTE1ICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgRXhwb3J0IGNoYW5nZXMgdG8gd2ViLXBsYXRmb3JtLXRlc3QgYXMgcGFydCBv
ZiB0aGUgd2Via2l0LXBhdGNoIHVwbG9hZCB3b3JrZmxvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5OgorICAgICAgICAoVXBsb2FkKToKKyAgICAgICAgKENyZWF0ZUJ1Zy5leGVj
dXRlKToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy93cHRjaGFuZ2VleHBvcnQucHk6IEFkZGVkLgorICAgICAgICAoV1BUQ2hhbmdl
RXhwb3J0KToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydC5vcHRpb25zKToKKyAgICAgICAgKFdQ
VENoYW5nZUV4cG9ydC5ydW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1v
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5Ogor
ICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIpOgorICAgICAgICAoV2ViUGxhdGZvcm1U
ZXN0RXhwb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIu
dXNlcm5hbWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIudG9rZW4pOgorICAg
ICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX2dpdGh1Yik6CisgICAgICAgIChXZWJQbGF0
Zm9ybVRlc3RFeHBvcnRlci5fd3B0X2ZvcmtfYnJhbmNoX2dpdGh1Yl91cmwpOgorICAgICAgICAo
V2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX3dwdF9mb3JrX3JlbW90ZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVRlc3RFeHBvcnRlci5fd3B0X2ZvcmtfcHVzaF91cmwpOgorICAgICAgICAoV2ViUGxh
dGZvcm1UZXN0RXhwb3J0ZXIuX2dpdCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRl
ci5fYnJhbmNoX25hbWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX3B1Ymxp
Y19icmFuY2hfbmFtZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5oYXNfd3B0
X2NoYW5nZXMpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX2NyZWF0ZV9wYXRj
aCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5jcmVhdGVfZ2l0X3BhdGNoKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl9wcm9tcHRfZm9yX3Rva2VuKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl9wcm9tcHRfZm9yX3VzZXJuYW1lKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2Vu
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl92YWxpZGF0ZV9hbmRfc2F2ZV90
b2tlbik6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5wdXNoX3RvX3dwdF9mb3Jr
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLm1ha2VfcHVsbF9yZXF1ZXN0KToK
KyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLmRlbGV0ZV9sb2NhbF9icmFuY2gpOgor
ICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIpOiBEZWxldGVkLgor
ICAgICAgICAoVGVzdEV4cG9ydGVyLl9faW5pdF9fKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RF
eHBvcnRlci5fZW5zdXJlX3dwdF9yZXBvc2l0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RF
eHBvcnRlci5fZmV0Y2hfd3B0X3JlcG9zaXRvcnkpOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4
cG9ydGVyLl9lbnN1cmVfbmV3X2JyYW5jaF9uYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RF
eHBvcnRlci5kb3dubG9hZF9hbmRfY29tbWl0X3BhdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFRl
c3RFeHBvcnRlci5jbGVhbik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIuY3JlYXRl
X2JyYW5jaF93aXRoX3BhdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5wdXNo
X3RvX3dwdF9mb3JrKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5tYWtlX3B1bGxf
cmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIuY3JlYXRlX3dwdF9wdWxs
X3JlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmRlbGV0ZV9sb2NhbF9i
cmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNyZWF0ZV9naXRfcGF0Y2gp
OiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNyZWF0ZV91cGxvYWRfcmVtb3RlX2lm
X25lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIuZG9fZXhwb3J0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0
ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0X2V4cG9ydCk6CisgICAgICAg
IChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X3dpdGhfc3BlY2lmaWNfYnJhbmNoKToKKyAg
ICAgICAgKFRlc3RFeHBvcnRlclRlc3QpOgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0
X2V4cG9ydF9pbnRlcmFjdGl2ZV9tb2RlKToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVz
dF9leHBvcnRfaW52YWxpZF90b2tlbik6CisgICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3Rf
ZXhwb3J0X3dyb25nX3Rva2VuKToKKwogMjAxOC0wNS0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ11bR0xJQl0gQWRkIGludHJvc3Bl
Y3RhYmxlIGFsdGVybmF0aXZlcyB0byBmdW5jdGlvbnMgdXNpbmcgdmFyZ2FycwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggOTMzZGIyZDA4
NTIwZDg2MGM1MjgzZjdhZjQ5NmZhMWI5NDIxNTMwMy4uY2QxNDNhODJhMWE5MzE5MDVlODYxNjNl
ZjgyYTkzZTBhNWE3MmRhNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3VwbG9hZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5CkBAIC0yODYsNiArMjg2LDcgQEAgY2xhc3MgVXBsb2FkKEFic3RyYWN0
UGF0Y2hVcGxvYWRpbmdDb21tYW5kKToKICAgICAgICAgc3RlcHMuRW5zdXJlQnVnSXNPcGVuQW5k
QXNzaWduZWQsCiAgICAgICAgIHN0ZXBzLlBvc3REaWZmLAogICAgICAgICBzdGVwcy5TdWJtaXRU
b0VXUywKKyAgICAgICAgc3RlcHMuV1BUQ2hhbmdlRXhwb3J0LAogICAgIF0KICAgICBsb25nX2hl
bHAgPSAiIiJ1cGxvYWQgdXBsb2FkcyB0aGUgY3VycmVudCBkaWZmIHRvIGJ1Z3Mud2Via2l0Lm9y
Zy4KICAgICBJZiBubyBidWcgaWQgaXMgcHJvdmlkZWQsIHVwbG9hZCB3aWxsIGNyZWF0ZSBhIGJ1
Zy4KQEAgLTUzMSwzICs1MzIsMjUgQEAgY2xhc3MgQ3JlYXRlQnVnKENvbW1hbmQpOgogICAgICAg
ICAgICAgc2VsZi5jcmVhdGVfYnVnX2Zyb21fY29tbWl0KG9wdGlvbnMsIGFyZ3MsIHRvb2wpCiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9idWdfZnJvbV9wYXRjaChvcHRp
b25zLCBhcmdzLCB0b29sKQorCisKK2NsYXNzIFdQVENoYW5nZUV4cG9ydChBYnN0cmFjdFBhdGNo
VXBsb2FkaW5nQ29tbWFuZCk6CisgICAgbmFtZSA9ICJ3cHQtY2hhbmdlLWV4cG9ydCIKKyAgICBo
ZWxwX3RleHQgPSAiT3BlbnMgYSBwdWxsIHJlcXVlc3QgdG8gc3luY2hyb25pemUgYW55IGNoYW5n
ZXMgaW4gdGhlIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMgZGly
ZWN0b3J5IgorICAgIGFyZ3VtZW50X25hbWVzID0gIltCVUdJRF0iCisgICAgc3RlcHMgPSBbCisg
ICAgICAgIHN0ZXBzLldQVENoYW5nZUV4cG9ydCwKKyAgICBdCisKKyAgICBsb25nX2hlbHAgPSAi
IiJPcGVucyBhIHB1bGwgcmVxdWVzdCB0byB0aGUgdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cworICAg
IGdpdGh1YiByZXBvIGZvciBhbnkgY2hhbmdlcyBpbiB0aGUKKyAgICBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzIGRpcmVjdG9yeS4gVGhpcyBzdGVwCisgICAgd2ls
bCBub29wIGlmIHRoZXJlIGFyZSBubyBjaGFuZ2VzIGluIHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMg
ZGlyZWN0b3J5LgorICAgIFRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gcHJvdmlkZSBhIGdp
dGh1YiB1c2VybmFtZSBhbmQgT0F1dGggdG9rZW4KKyAgICB0aGUgZmlyc3QgdGltZSB0aGlzIGlz
IHJ1bi4KKyAgICAiIiIKKworICAgIGRlZiBfcHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBh
cmdzLCB0b29sKToKKyAgICAgICAgc3RhdGUgPSB7fQorICAgICAgICBzdGF0ZVsiYnVnX2lkIl0g
PSBzZWxmLl9idWdfaWQob3B0aW9ucywgYXJncywgdG9vbCwgc3RhdGUpCisgICAgICAgIHJldHVy
biBzdGF0ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19f
aW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5
CmluZGV4IGYzYzE3MGUzMTJlZGQ3ODY0ZjlkODVhZDljNzc1OWYyYmM5MWM5M2YuLmRjMDc4NGY2
MTUxZThhZmY4Nzk0YTY5MDc2ZDdlN2ZjMmM4ZmNhOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKQEAgLTY2LDMgKzY2LDQgQEAgZnJvbSB3ZWJr
aXRweS50b29sLnN0ZXBzLnVwZGF0ZSBpbXBvcnQgVXBkYXRlCiBmcm9tIHdlYmtpdHB5LnRvb2wu
c3RlcHMudXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlciBpbXBvcnQgVXBkYXRlQ2hhbmdlTG9n
c1dpdGhSZXZpZXdlcgogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnZhbGlkYXRlY2hhbmdlbG9n
cyBpbXBvcnQgVmFsaWRhdGVDaGFuZ2VMb2dzCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudmFs
aWRhdGVyZXZpZXdlciBpbXBvcnQgVmFsaWRhdGVSZXZpZXdlcgorZnJvbSB3ZWJraXRweS50b29s
LnN0ZXBzLndwdGNoYW5nZWV4cG9ydCBpbXBvcnQgV1BUQ2hhbmdlRXhwb3J0CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvd3B0Y2hhbmdlZXhwb3J0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3dwdGNoYW5nZWV4cG9ydC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZGVlMzg0NmQ3OTM1MTVkNTI1MTRkY2QyY2ViOWMxYjJlZDg4OWUwCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3dwdGNoYW5nZWV4
cG9ydC5weQpAQCAtMCwwICsxLDU0IEBACisjIENvcHlyaWdodCAoYykgMjAxOCwgQm9jb3VwIExM
Qy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisj
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBT
Y3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQg
QWJzdHJhY3RTdGVwCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0
aW9ucworZnJvbSB3ZWJraXRweS53M2MudGVzdF9leHBvcnRlciBpbXBvcnQgV2ViUGxhdGZvcm1U
ZXN0RXhwb3J0ZXIsIHBhcnNlX2FyZ3MKKworCitjbGFzcyBXUFRDaGFuZ2VFeHBvcnQoQWJzdHJh
Y3RTdGVwKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgorICAgICAg
ICByZXR1cm4gQWJzdHJhY3RTdGVwLm9wdGlvbnMoKSArIFsKKyAgICAgICAgICAgIE9wdGlvbnMu
bm9uX2ludGVyYWN0aXZlLAorICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAorICAgICAg
ICBdCisKKyAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5ub25faW50ZXJhY3RpdmU6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBidWdfaWQg
PSBzdGF0ZS5nZXQoImJ1Z19pZCIpCisgICAgICAgIGlmIG5vdCBidWdfaWQ6CisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBhcmdzID0gWyItLWJ1ZyIsIHN0cihidWdfaWQpLCAiLS1jcmVh
dGUtcHIiXQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdDoKKyAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKCItLWdpdC1jb21taXQiKQorICAgICAgICAgICAgYXJncy5hcHBlbmQo
c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KQorCisgICAgICAgIHRlc3RfZXhwb3J0ZXIgPSBXZWJQ
bGF0Zm9ybVRlc3RFeHBvcnRlcihzZWxmLl90b29sLCBwYXJzZV9hcmdzKGFyZ3MpKQorICAgICAg
ICBtZXNzYWdlID0gJ1dvdWxkIHlvdSBsaWtlIHRvIGV4cG9ydCB0aGUgd2ViLXBsYXRmb3JtLXRl
c3RzIGNoYW5nZXMgYW5kL29yIGNyZWF0ZSBhIFBSIHRvIHRoZSBXUFQgR2l0SHViIHJlcG9zaXRv
cnk/JworICAgICAgICBpZiB0ZXN0X2V4cG9ydGVyLmhhc193cHRfY2hhbmdlcygpIGFuZCBzZWxm
Ll90b29sLnVzZXIuY29uZmlybShtZXNzYWdlKToKKyAgICAgICAgICAgIHRlc3RfZXhwb3J0ZXIu
ZG9fZXhwb3J0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1v
bi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1vbi5weQppbmRleCBhMTRhYTk1
MzU0YjkwNjczOTQxMDE3NmMxYjAzNzhjN2Q3MjM1MzMyLi42NmZhMzRmMmE3ZTlhZjE3Mzc2YjY0
M2NiNGMxYTY0YTk4ODhiMjBmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy9jb21tb24ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5CkBA
IC0zMCwxMCArMzAsMTEgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCitpbXBvcnQg
b3MKIAogCi1XUFRfR0hfT1JHID0gJ3czYycKLVdQVF9HSF9SRVBPX05BTUUgPSAnd2ViLXBsYXRm
b3JtLXRlc3RzJworV1BUX0dIX09SRyA9IG9zLmVudmlyb24uZ2V0KCdXUFRfR0hfT1JHJywgJ3cz
YycpCitXUFRfR0hfUkVQT19OQU1FID0gb3MuZW52aXJvbi5nZXQoJ1dQVF9HSF9SRVBPX05BTUUn
LCAnd2ViLXBsYXRmb3JtLXRlc3RzJykKIFdQVF9HSF9VUkwgPSAnaHR0cHM6Ly9naXRodWIuY29t
LyVzLyVzLycgJSAoV1BUX0dIX09SRywgV1BUX0dIX1JFUE9fTkFNRSkKIFdQVF9NSVJST1JfVVJM
ID0gJ2h0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9leHRlcm5hbC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzLmdpdCcKIFdQVF9HSF9TU0hfVVJMX1RFTVBMQVRFID0gJ2h0dHBzOi8ve31A
Z2l0aHViLmNvbS8lcy8lcy5naXQnICUgKFdQVF9HSF9PUkcsIFdQVF9HSF9SRVBPX05BTUUpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weQppbmRleCA2YTljYTVi
YjcyYzFmODQ4MzA2NDgwMzgzMmIyZWI3NTUxMTljYTZjLi4xYTBhZjUwYTEwMGFkOGJjODMwMmJl
ZmM5MzFjY2M4YjIwOTU1NGZjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2V4cG9ydGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3Rf
ZXhwb3J0ZXIucHkKQEAgLTI4LDYgKzI4LDggQEAgaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9n
Z2luZwogaW1wb3J0IG9zCiBpbXBvcnQgdGltZQoraW1wb3J0IGpzb24KK2Zyb20gdXJsbGliMiBp
bXBvcnQgSFRUUEVycm9yCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5naXQg
aW1wb3J0IEdpdAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdApAQCAtMzUs
MTYgKzM3LDE3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVn
emlsbGEKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZp
bmRlcgogZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1YiBpbXBvcnQgV1BUR2l0SHViCiBmcm9t
IHdlYmtpdHB5LnczYy53cHRfbGludGVyIGltcG9ydCBXUFRMaW50ZXIKK2Zyb20gd2Via2l0cHku
dzNjLmNvbW1vbiBpbXBvcnQgV1BUX0dIX09SRworZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6
ZWQgaW1wb3J0IG1lbW9pemVkCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
IAogV0VCS0lUX1dQVF9ESVIgPSAnTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cycKLVdQVF9QUl9VUkwgPSAiaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvcHVsbC8iCitXUFRfUFJfVVJMID0gImh0dHBzOi8vZ2l0aHViLmNvbS8lcy93ZWIt
cGxhdGZvcm0tdGVzdHMvcHVsbC8iICUgV1BUX0dIX09SRwogV0VCS0lUX0VYUE9SVF9QUl9MQUJF
TCA9ICd3ZWJraXQtZXhwb3J0JwogCiAKLWNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgotCitj
bGFzcyBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBob3N0LCBvcHRpb25zLCBnaXRDbGFzcz1HaXQsIGJ1Z3ppbGxhQ2xhc3M9QnVnemlsbGEs
IFdQVEdpdEh1YkNsYXNzPVdQVEdpdEh1YiwgV1BUTGludGVyQ2xhc3M9V1BUTGludGVyKToKICAg
ICAgICAgc2VsZi5faG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGhvc3Qu
ZmlsZXN5c3RlbQpAQCAtNTIsNiArNTUsOCBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToK
IAogICAgICAgICBzZWxmLl9ob3N0LmluaXRpYWxpemVfc2NtKCkKIAorICAgICAgICBzZWxmLl9X
UFRHaXRIdWJDbGFzcyA9IFdQVEdpdEh1YkNsYXNzCisgICAgICAgIHNlbGYuX2dpdENsYXNzID0g
Z2l0Q2xhc3MKICAgICAgICAgc2VsZi5fYnVnemlsbGEgPSBidWd6aWxsYUNsYXNzKCkKICAgICAg
ICAgc2VsZi5fYnVnX2lkID0gb3B0aW9ucy5idWdfaWQKICAgICAgICAgaWYgbm90IHNlbGYuX2J1
Z19pZDoKQEAgLTY0LDQ1ICs2OSwxNDYgQEAgY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAg
ICAgICAgICAgICB3ZWJraXRfZmluZGVyID0gV2ViS2l0RmluZGVyKHNlbGYuX2ZpbGVzeXN0ZW0p
CiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlcG9zaXRvcnlfZGlyZWN0b3J5ID0gd2Via2l0
X2ZpbmRlci5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1dlYktpdEJ1aWxkJywgJ3czYy10ZXN0cycs
ICd3ZWItcGxhdGZvcm0tdGVzdHMnKQogCi0gICAgICAgIHNlbGYuX2dpdCA9IHNlbGYuX2Vuc3Vy
ZV93cHRfcmVwb3NpdG9yeSgiaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMuZ2l0Iiwgc2VsZi5fb3B0aW9ucy5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgZ2l0Q2xhc3MpCiAg
ICAgICAgIHNlbGYuX2xpbnRlciA9IFdQVExpbnRlckNsYXNzKHNlbGYuX29wdGlvbnMucmVwb3Np
dG9yeV9kaXJlY3RvcnksIGhvc3QuZmlsZXN5c3RlbSkKIAorICAgICAgICBzZWxmLl9idWd6aWxs
YV91cmwgPSAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPSIgKyBzdHIo
c2VsZi5fYnVnX2lkKQorICAgICAgICBzZWxmLl9jb21taXRfbWVzc2FnZSA9IG9wdGlvbnMubWVz
c2FnZQorICAgICAgICBpZiBub3Qgc2VsZi5fY29tbWl0X21lc3NhZ2U6CisgICAgICAgICAgICBz
ZWxmLl9jb21taXRfbWVzc2FnZSA9ICdXZWJLaXQgZXhwb3J0IG9mICcgKyBzZWxmLl9idWd6aWxs
YV91cmwgaWYgc2VsZi5fYnVnX2lkIGVsc2UgJ0V4cG9ydCBtYWRlIGZyb20gYSBXZWJLaXQgcmVw
b3NpdG9yeScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB1c2VybmFtZShzZWxmKToKKyAgICAg
ICAgaWYgaGFzYXR0cihzZWxmLCAnX3VzZXJuYW1lJyk6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fdXNlcm5hbWUKKworICAgICAgICBzZWxmLl9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2VuKHNl
bGYuX29wdGlvbnMpCisgICAgICAgIHJldHVybiBzZWxmLl91c2VybmFtZQorCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIHRva2VuKHNlbGYpOgorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfdG9r
ZW4nKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl90b2tlbgorCisgICAgICAgIHNlbGYuX2Vu
c3VyZV91c2VybmFtZV9hbmRfdG9rZW4oc2VsZi5fb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3Rva2VuCisKKyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX2dpdGh1
YihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX1dQVEdpdEh1YkNsYXNzKHNlbGYuX2hvc3Qs
IHNlbGYudXNlcm5hbWUsIHNlbGYudG9rZW4pIGlmIHNlbGYudXNlcm5hbWUgYW5kIHNlbGYudG9r
ZW4gZWxzZSBOb25lCisKKyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX3dw
dF9mb3JrX2JyYW5jaF9naXRodWJfdXJsKHNlbGYpOgorICAgICAgICByZXR1cm4gImh0dHBzOi8v
Z2l0aHViLmNvbS8iICsgc2VsZi51c2VybmFtZSArICIvd2ViLXBsYXRmb3JtLXRlc3RzL3RyZWUv
IiArIHNlbGYuX3B1YmxpY19icmFuY2hfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgQG1lbW9p
emVkCisgICAgZGVmIF93cHRfZm9ya19yZW1vdGUoc2VsZik6CisgICAgICAgIHdwdF9mb3JrX3Jl
bW90ZSA9IHNlbGYuX29wdGlvbnMucmVwb3NpdG9yeV9yZW1vdGUKKyAgICAgICAgaWYgbm90IHdw
dF9mb3JrX3JlbW90ZToKKyAgICAgICAgICAgIHdwdF9mb3JrX3JlbW90ZSA9IHNlbGYudXNlcm5h
bWUKKworICAgICAgICByZXR1cm4gd3B0X2ZvcmtfcmVtb3RlCisKKyAgICBAcHJvcGVydHkKKyAg
ICBAbWVtb2l6ZWQKKyAgICBkZWYgX3dwdF9mb3JrX3B1c2hfdXJsKHNlbGYpOgorICAgICAgICB3
cHRfZm9ya19wdXNoX3VybCA9IHNlbGYuX29wdGlvbnMucmVwb3NpdG9yeV9yZW1vdGVfdXJsCisg
ICAgICAgIGlmIG5vdCB3cHRfZm9ya19wdXNoX3VybDoKKyAgICAgICAgICAgIHdwdF9mb3JrX3B1
c2hfdXJsID0gImh0dHBzOi8vIiArIHNlbGYudXNlcm5hbWUgKyAiQGdpdGh1Yi5jb20vIiArIHNl
bGYudXNlcm5hbWUgKyAiL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiCisKKyAgICAgICAgcmV0dXJu
IHdwdF9mb3JrX3B1c2hfdXJsCisKKyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBk
ZWYgX2dpdChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Vuc3VyZV93cHRfcmVwb3NpdG9y
eSgiaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0Iiwgc2VsZi5f
b3B0aW9ucy5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgc2VsZi5fZ2l0Q2xhc3MpCisKKyAgICBAcHJv
cGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX2JyYW5jaF9uYW1lKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fZW5zdXJlX25ld19icmFuY2hfbmFtZSgpCisKKyAgICBAcHJvcGVydHkK
KyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX3B1YmxpY19icmFuY2hfbmFtZShzZWxmKToKKyAgICAg
ICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKKyAgICAgICAgcmV0dXJuIG9wdGlvbnMucHVibGlj
X2JyYW5jaF9uYW1lIGlmIG9wdGlvbnMucHVibGljX2JyYW5jaF9uYW1lIGVsc2Ugc2VsZi5fYnJh
bmNoX25hbWUKKworICAgIGRlZiBoYXNfd3B0X2NoYW5nZXMoc2VsZik6CisgICAgICAgIHJldHVy
biBib29sKHNlbGYuX2NyZWF0ZV9wYXRjaCgpKQorCisgICAgZGVmIF9jcmVhdGVfcGF0Y2goc2Vs
Zik6CisgICAgICAgIHBhdGNoX2RhdGEgPSBzZWxmLl9ob3N0LnNjbSgpLmNyZWF0ZV9wYXRjaChz
ZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIFtXRUJLSVRfV1BUX0RJUl0pCisgICAgICAgIGlmIG5v
dCBwYXRjaF9kYXRhIG9yIG5vdCAnZGlmZicgaW4gcGF0Y2hfZGF0YToKKyAgICAgICAgICAgIHJl
dHVybiAnJworICAgICAgICByZXR1cm4gcGF0Y2hfZGF0YQorCisgICAgZGVmIGNyZWF0ZV9naXRf
cGF0Y2goc2VsZik6CisgICAgICAgIF8sIHBhdGNoX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLm9w
ZW5fYmluYXJ5X3RlbXBmaWxlKCd3cHRfZXhwb3J0X3BhdGNoJykKKyAgICAgICAgcGF0Y2hfZGF0
YSA9IHNlbGYuX2NyZWF0ZV9wYXRjaCgpCisgICAgICAgIGlmIG5vdCAnZGlmZicgaW4gcGF0Y2hf
ZGF0YToKKyAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gY2hhbmdlcyB0byB1cHN0cmVhbSwgcGF0
Y2ggZGF0YSBpczogIiVzIicgJSAocGF0Y2hfZGF0YSkpCisgICAgICAgICAgICByZXR1cm4gJycK
KyAgICAgICAgIyBGSVhNRTogV2UgY2FuIHByb2JhYmx5IHRyeSB0byB1c2UgLS1yZWxhdGl2ZSBn
aXQgcGFyYW1ldGVyIHRvIG5vdCBkbyB0aGF0IHJlcGxhY2VtZW50LgorICAgICAgICBwYXRjaF9k
YXRhID0gcGF0Y2hfZGF0YS5yZXBsYWNlKFdFQktJVF9XUFRfRElSICsgJy8nLCAnJykKKyAgICAg
ICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0Y2hfZmlsZSwgcGF0Y2hfZGF0
YSkKKyAgICAgICAgcmV0dXJuIHBhdGNoX2ZpbGUKKworICAgIGRlZiBfcHJvbXB0X2Zvcl90b2tl
bihzZWxmLCBvcHRpb25zKToKKyAgICAgICAgaWYgb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6Cisg
ICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5faG9zdC51c2VyLnBy
b21wdF9wYXNzd29yZCgnRW50ZXIgR2l0SHViIE9BdXRoIHRva2VuIChvciBlbXB0eSBzdHJpbmcg
dG8gc2tpcCBjcmVhdGluZyBhIHB1bGwgcmVxdWVzdCk6ICcpCisKKyAgICBkZWYgX3Byb21wdF9m
b3JfdXNlcm5hbWUoc2VsZiwgb3B0aW9ucyk6CisgICAgICAgIGlmIG9wdGlvbnMubm9uX2ludGVy
YWN0aXZlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hv
c3QudXNlci5wcm9tcHQoJ0VudGVyIHlvdXIgR2l0SHViIHVzZXJuYW1lOiAnKQorCisgICAgZGVm
IF9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2VuKHNlbGYsIG9wdGlvbnMpOgogICAgICAgICBzZWxm
Ll91c2VybmFtZSA9IG9wdGlvbnMudXNlcm5hbWUKICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJu
YW1lOgorICAgICAgICAgICAgIyBGSVhNRTogVXNlIHRoZSBrZXljaGFpbiB0byBzdG9yZSB1c2Vy
bmFtZSBhbmQgb2F1dGggdG9rZW4gaW5zdGVhZCBvZiAuZ2l0L2NvbmZpZwogICAgICAgICAgICAg
c2VsZi5fdXNlcm5hbWUgPSBzZWxmLl9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUn
KS5yc3RyaXAoKQogICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgogICAgICAgICAg
ICAgICAgIHNlbGYuX3VzZXJuYW1lID0gb3MuZW52aXJvbi5nZXQoJ0dJVEhVQl9VU0VSTkFNRScp
CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fdXNlcm5hbWUgPSBzZWxmLl9wcm9tcHRfZm9yX3VzZXJuYW1lKG9wdGlvbnMpCiAgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiTWlzc2luZyBHaXRIdWIgdXNlcm5hbWUsIHBsZWFzZSBwcm92aWRlIGl0IGFzIGEgY29t
bWFuZCBhcmd1bWVudCAoc2VlIGhlbHAgZm9yIHRoZSBjb21tYW5kKS4iKQotICAgICAgICBlbGlm
IG5vdCBzZWxmLl9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnKToKLSAgICAgICAg
ICAgIHNlbGYuX2dpdC5zZXRfbG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnLCBzZWxmLl91
c2VybmFtZSkKIAogICAgICAgICBzZWxmLl90b2tlbiA9IG9wdGlvbnMudG9rZW4KICAgICAgICAg
aWYgbm90IHNlbGYuX3Rva2VuOgogICAgICAgICAgICAgc2VsZi5fdG9rZW4gPSBzZWxmLl9naXQu
bG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nKS5yc3RyaXAoKQogICAgICAgICAgICAgaWYgbm90
IHNlbGYuX3Rva2VuOgogICAgICAgICAgICAgICAgIHNlbGYuX3Rva2VuID0gb3MuZW52aXJvbi5n
ZXQoJ0dJVEhVQl9UT0tFTicpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46CisgICAg
ICAgICAgICAgICAgc2VsZi5fdG9rZW4gPSBzZWxmLl9wcm9tcHRfZm9yX3Rva2VuKG9wdGlvbnMp
CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46CiAgICAgICAgICAgICAgICAgX2xvZy5p
bmZvKCJNaXNzaW5nIEdpdEh1YiB0b2tlbiwgdGhlIHNjcmlwdCB3aWxsIG5vdCBiZSBhYmxlIHRv
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCB0byBXM0Mgd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRv
cnkuIikKLSAgICAgICAgZWxpZiBub3Qgc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnRv
a2VuJyk6Ci0gICAgICAgICAgICBzZWxmLl9naXQuc2V0X2xvY2FsX2NvbmZpZygnZ2l0aHViLnRv
a2VuJywgc2VsZi5fdG9rZW4pCi0KLSAgICAgICAgc2VsZi5fZ2l0aHViID0gV1BUR2l0SHViQ2xh
c3Moc2VsZi5faG9zdCwgc2VsZi5fdXNlcm5hbWUsIHNlbGYuX3Rva2VuKSBpZiBzZWxmLl91c2Vy
bmFtZSBhbmQgc2VsZi5fdG9rZW4gZWxzZSBOb25lCi0KLSAgICAgICAgc2VsZi5fYnJhbmNoX25h
bWUgPSBzZWxmLl9lbnN1cmVfbmV3X2JyYW5jaF9uYW1lKCkKLSAgICAgICAgc2VsZi5fcHVibGlj
X2JyYW5jaF9uYW1lID0gb3B0aW9ucy5wdWJsaWNfYnJhbmNoX25hbWUgaWYgb3B0aW9ucy5wdWJs
aWNfYnJhbmNoX25hbWUgZWxzZSBzZWxmLl9icmFuY2hfbmFtZQotICAgICAgICBzZWxmLl9idWd6
aWxsYV91cmwgPSAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPSIgKyBz
dHIoc2VsZi5fYnVnX2lkKQotICAgICAgICBzZWxmLl9jb21taXRfbWVzc2FnZSA9IG9wdGlvbnMu
bWVzc2FnZQotICAgICAgICBpZiBub3Qgc2VsZi5fY29tbWl0X21lc3NhZ2U6Ci0gICAgICAgICAg
ICBzZWxmLl9jb21taXRfbWVzc2FnZSA9ICdXZWJLaXQgZXhwb3J0IG9mICcgKyBzZWxmLl9idWd6
aWxsYV91cmwgaWYgc2VsZi5fYnVnX2lkIGVsc2UgJ0V4cG9ydCBtYWRlIGZyb20gYSBXZWJLaXQg
cmVwb3NpdG9yeScKIAotICAgICAgICBzZWxmLl93cHRfZm9ya19yZW1vdGUgPSBvcHRpb25zLnJl
cG9zaXRvcnlfcmVtb3RlCi0gICAgICAgIGlmIG5vdCBzZWxmLl93cHRfZm9ya19yZW1vdGU6Ci0g
ICAgICAgICAgICBzZWxmLl93cHRfZm9ya19yZW1vdGUgPSBzZWxmLl91c2VybmFtZQorICAgICAg
ICBpZiBzZWxmLl90b2tlbjoKKyAgICAgICAgICAgIHNlbGYuX3ZhbGlkYXRlX2FuZF9zYXZlX3Rv
a2VuKHNlbGYuX3VzZXJuYW1lLCBzZWxmLl90b2tlbikKIAotICAgICAgICBzZWxmLl93cHRfZm9y
a19wdXNoX3VybCA9IG9wdGlvbnMucmVwb3NpdG9yeV9yZW1vdGVfdXJsCi0gICAgICAgIGlmIG5v
dCBzZWxmLl93cHRfZm9ya19wdXNoX3VybDoKLSAgICAgICAgICAgIHNlbGYuX3dwdF9mb3JrX3B1
c2hfdXJsID0gImh0dHBzOi8vIiArIHNlbGYuX3VzZXJuYW1lICsgIkBnaXRodWIuY29tLyIgKyBz
ZWxmLl91c2VybmFtZSArICIvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCIKKyAgICBkZWYgX3ZhbGlk
YXRlX2FuZF9zYXZlX3Rva2VuKHNlbGYsIHVzZXJuYW1lLCB0b2tlbik6CisgICAgICAgICMgdmFs
aWRhdGUgdG9rZW4gYW5kIHVzZXJuYW1lCisgICAgICAgIHVybCA9ICdodHRwczovL2FwaS5naXRo
dWIuY29tL3VzZXI/YWNjZXNzX3Rva2VuPSVzJyAlICh0b2tlbiwpCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5faG9zdC53ZWIucmVxdWVzdChtZXRob2Q9J0dFVCcs
IHVybD11cmwsIGRhdGE9Tm9uZSkKKyAgICAgICAgZXhjZXB0IEhUVFBFcnJvciBhcyBlOgorICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJPQXV0aCB0b2tlbiBpcyBub3QgdmFsaWQiKQorICAg
ICAgICBkYXRhID0ganNvbi5sb2FkKHJlc3BvbnNlKQorICAgICAgICBsb2dpbiA9IGRhdGEuZ2V0
KCdsb2dpbicsIE5vbmUpCisgICAgICAgIGlmIGxvZ2luICE9IHVzZXJuYW1lOgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCJPQXV0aCB0b2tlbiBkb2VzIG5vdCBtYXRjaCB0aGUgcHJvdmlk
ZWQgdXNlcm5hbWUuIFByb3ZpZGVkIHVzZXI6ICVzLCBnaXRodWIgbG9naW46ICVzIiAlICh1c2Vy
bmFtZSwgbG9naW4pKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBVc2VybmFtZSBhbmQg
dG9rZW4gYXJlIHZhbGlkLiBTYXZlIHRoZW0gaW4gdGhlIGdpdCBjb25maWcgc28gd2UKKyAgICAg
ICAgICAgICMgZG8gbm90IG5lZWQgdG8gYXNrIGZvciB0aGVtIGFnYWluCisgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnRva2VuJyk6CisgICAgICAgICAg
ICAgICAgc2VsZi5fZ2l0LnNldF9sb2NhbF9jb25maWcoJ2dpdGh1Yi50b2tlbicsIHRva2VuKQor
ICAgICAgICAgICAgaWYgbm90IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFt
ZScpOgorICAgICAgICAgICAgICAgIHNlbGYuX2dpdC5zZXRfbG9jYWxfY29uZmlnKCdnaXRodWIu
dXNlcm5hbWUnLCB1c2VybmFtZSkKIAogICAgIGRlZiBfZW5zdXJlX3dwdF9yZXBvc2l0b3J5KHNl
bGYsIHVybCwgd3B0X3JlcG9zaXRvcnlfZGlyZWN0b3J5LCBnaXRDbGFzcyk6CiAgICAgICAgIGdp
dCA9IE5vbmUKQEAgLTE2NiwxNiArMjcyLDE1IEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3Qp
OgogCiAgICAgZGVmIHB1c2hfdG9fd3B0X2Zvcmsoc2VsZik6CiAgICAgICAgIHNlbGYuY3JlYXRl
X3VwbG9hZF9yZW1vdGVfaWZfbmVlZGVkKCkKLSAgICAgICAgd3B0X2ZvcmtfYnJhbmNoX2dpdGh1
Yl91cmwgPSAiaHR0cHM6Ly9naXRodWIuY29tLyIgKyBzZWxmLl91c2VybmFtZSArICIvd2ViLXBs
YXRmb3JtLXRlc3RzL3RyZWUvIiArIHNlbGYuX3B1YmxpY19icmFuY2hfbmFtZQogICAgICAgICBf
bG9nLmluZm8oJ1B1c2hpbmcgYnJhbmNoICcgKyBzZWxmLl9icmFuY2hfbmFtZSArICIgdG8gIiAr
IHNlbGYuX2dpdC5yZW1vdGUoWyJnZXQtdXJsIiwgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlXSkucnN0
cmlwKCkpCiAgICAgICAgIF9sb2cuaW5mbygnVGhpcyBtYXkgdGFrZSBzb21lIHRpbWUnKQogICAg
ICAgICBzZWxmLl9naXQucHVzaChbc2VsZi5fd3B0X2ZvcmtfcmVtb3RlLCBzZWxmLl9icmFuY2hf
bmFtZSArICI6IiArIHNlbGYuX3B1YmxpY19icmFuY2hfbmFtZSwgJy1mJ10pCi0gICAgICAgIF9s
b2cuaW5mbygnQnJhbmNoIGF2YWlsYWJsZSBhdCAnICsgd3B0X2ZvcmtfYnJhbmNoX2dpdGh1Yl91
cmwpCisgICAgICAgIF9sb2cuaW5mbygnQnJhbmNoIGF2YWlsYWJsZSBhdCAnICsgc2VsZi5fd3B0
X2ZvcmtfYnJhbmNoX2dpdGh1Yl91cmwpCiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYg
bWFrZV9wdWxsX3JlcXVlc3Qoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9naXRodWI6Ci0g
ICAgICAgICAgICBfbG9nLmluZm8oJ01pc3NpbmcgaW5mb3JtYXRpb24gdG8gY3JlYXRlIGEgcHVs
bCByZXF1ZXN0JykKKyAgICAgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgcHVsbCByZXF1ZXN0
IGJlY2F1c2UgT0F1dGggdG9rZW4gd2FzIG5vdCBwcm92aWRlZC4gWW91IGNhbiBvcGVuIHRoZSBw
dWxsIHJlcXVlc3QgbWFudWFsbHkgdXNpbmcgdGhlIGJyYW5jaCAnICsgc2VsZi5fd3B0X2Zvcmtf
YnJhbmNoX2dpdGh1Yl91cmwpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBfbG9nLmlu
Zm8oJ01ha2luZyBwdWxsIHJlcXVlc3QnKQpAQCAtMTg2LDcgKzI5MSw3IEBAIGNsYXNzIFRlc3RF
eHBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuX2dpdGh1Yi5hZGRfbGFiZWwo
cHJfbnVtYmVyLCBXRUJLSVRfRVhQT1JUX1BSX0xBQkVMKQogICAgICAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgIF9sb2cud2FybmluZyhlKQotICAgICAgICAg
ICAgICAgIF9sb2cuaW5mbygnQ291bGQgbm90IGFkZCBsYWJlbCAiJXMiIHRvIHByICMlcy4gVXNl
ciAiJXMiIG1heSBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHVwZGF0ZSBsYWJlbHMgaW4gdGhlIHcz
Yy93ZWItcGxhdGZvcm0tdGVzdCByZXBvLicgJSAoV0VCS0lUX0VYUE9SVF9QUl9MQUJFTCwgcHJf
bnVtYmVyLCBzZWxmLl91c2VybmFtZSkpCisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdDb3Vs
ZCBub3QgYWRkIGxhYmVsICIlcyIgdG8gcHIgIyVzLiBVc2VyICIlcyIgbWF5IG5vdCBoYXZlIHBl
cm1pc3Npb24gdG8gdXBkYXRlIGxhYmVscyBpbiB0aGUgdzNjL3dlYi1wbGF0Zm9ybS10ZXN0IHJl
cG8uJyAlIChXRUJLSVRfRVhQT1JUX1BSX0xBQkVMLCBwcl9udW1iZXIsIHNlbGYudXNlcm5hbWUp
KQogICAgICAgICBpZiBzZWxmLl9idWdfaWQgYW5kIHByX251bWJlcjoKICAgICAgICAgICAgIHNl
bGYuX2J1Z3ppbGxhLnBvc3RfY29tbWVudF90b19idWcoc2VsZi5fYnVnX2lkLCAiU3VibWl0dGVk
IHdlYi1wbGF0Zm9ybS10ZXN0cyBwdWxsIHJlcXVlc3Q6ICIgKyBXUFRfUFJfVVJMICsgc3RyKHBy
X251bWJlcikpCiAKQEAgLTIwMywyMyArMzA4LDEwIEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmpl
Y3QpOgogICAgICAgICByZXR1cm4gcHJfbnVtYmVyCiAKICAgICBkZWYgZGVsZXRlX2xvY2FsX2Jy
YW5jaChzZWxmKToKLSAgICAgICAgX2xvZy5pbmZvKCdSZW1vdmluZyBicmFuY2ggJyArIHNlbGYu
X2JyYW5jaF9uYW1lKQorICAgICAgICBfbG9nLmluZm8oJ1JlbW92aW5nIGxvY2FsIGJyYW5jaCAn
ICsgc2VsZi5fYnJhbmNoX25hbWUpCiAgICAgICAgIHNlbGYuX2dpdC5jaGVja291dCgnbWFzdGVy
JykKICAgICAgICAgc2VsZi5fZ2l0LmRlbGV0ZV9icmFuY2goc2VsZi5fYnJhbmNoX25hbWUpCiAK
LSAgICBkZWYgY3JlYXRlX2dpdF9wYXRjaChzZWxmKToKLSAgICAgICAgcGF0Y2hfZmlsZSA9ICcu
L3BhdGNoLnRlbXAuJyArIHN0cih0aW1lLmNsb2NrKCkpCi0gICAgICAgIGdpdF9jb21taXQgPSAi
SEVBRC4uLi4iIGlmIG5vdCBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQgZWxzZSBzZWxmLl9vcHRp
b25zLmdpdF9jb21taXQgKyAifjEuLiIgKyBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQKLSAgICAg
ICAgcGF0Y2hfZGF0YSA9IHNlbGYuX2hvc3Quc2NtKCkuY3JlYXRlX3BhdGNoKGdpdF9jb21taXQs
IFtXRUJLSVRfV1BUX0RJUl0pCi0gICAgICAgIGlmIG5vdCBwYXRjaF9kYXRhIG9yIG5vdCAnZGlm
ZicgaW4gcGF0Y2hfZGF0YToKLSAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gY2hhbmdlcyB0byB1
cHN0cmVhbSwgcGF0Y2ggZGF0YSBpczogIiVzIicgJSAocGF0Y2hfZGF0YSkpCi0gICAgICAgICAg
ICByZXR1cm4gJycKLSAgICAgICAgIyBGSVhNRTogV2UgY2FuIHByb2JhYmx5IHRyeSB0byB1c2Ug
LS1yZWxhdGl2ZSBnaXQgcGFyYW1ldGVyIHRvIG5vdCBkbyB0aGF0IHJlcGxhY2VtZW50LgotICAg
ICAgICBwYXRjaF9kYXRhID0gcGF0Y2hfZGF0YS5yZXBsYWNlKFdFQktJVF9XUFRfRElSICsgJy8n
LCAnJykKLSAgICAgICAgcGF0Y2hfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChwYXRj
aF9maWxlKQotICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRjaF9m
aWxlLCBwYXRjaF9kYXRhKQotICAgICAgICByZXR1cm4gcGF0Y2hfZmlsZQotCiAgICAgZGVmIGNy
ZWF0ZV91cGxvYWRfcmVtb3RlX2lmX25lZWRlZChzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYu
X3dwdF9mb3JrX3JlbW90ZSBpbiBzZWxmLl9naXQucmVtb3RlKFtdKToKICAgICAgICAgICAgIHNl
bGYuX2dpdC5yZW1vdGUoWyJhZGQiLCBzZWxmLl93cHRfZm9ya19yZW1vdGUsIHNlbGYuX3dwdF9m
b3JrX3B1c2hfdXJsXSkKQEAgLTI5MCw2ICszODIsNyBAQCBkZWYgcGFyc2VfYXJncyhhcmdzKToK
ICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdScsICctLXJlbW90ZS11cmwnLCBkZXN0PSdyZXBv
c2l0b3J5X3JlbW90ZV91cmwnLCBkZWZhdWx0PU5vbmUsIGhlbHA9J3JlcG9zaXRvcnkgdXJsIHRv
IHVzZSB0byBwdXNoJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsICctLXJlcG9zaXRv
cnknLCBkZXN0PSdyZXBvc2l0b3J5X2RpcmVjdG9yeScsIGRlZmF1bHQ9Tm9uZSwgaGVscD0ncmVw
b3NpdG9yeSBkaXJlY3RvcnknKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1jJywgJy0tY3Jl
YXRlLXByJywgZGVzdD0nY3JlYXRlX3B1bGxfcmVxdWVzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScs
IGRlZmF1bHQ9RmFsc2UsIGhlbHA9J2NyZWF0ZSBwdWxsIHJlcXVlc3QgdG8gdzNjIHdlYi1wbGF0
Zm9ybS10ZXN0cycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1ub24taW50ZXJhY3RpdmUn
LCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdub25faW50ZXJhY3RpdmUnLCBkZWZhdWx0PUZh
bHNlLCBoZWxwPSdOZXZlciBwcm9tcHQgdGhlIHVzZXIsIGZhaWwgYXMgZmFzdCBhcyBwb3NzaWJs
ZS4nKQogCiAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3Mp
CiAKQEAgLTMwNSw2ICszOTgsNyBAQCBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICAgICAg
ICAgIHJldHVybiByZWNvcmQuZ2V0TWVzc2FnZSgpCiAKICAgICBsb2dnZXIgPSBsb2dnaW5nLmdl
dExvZ2dlcignd2Via2l0cHkudzNjLnRlc3RfZXhwb3J0ZXInKQorICAgIGxvZ2dlci5wcm9wYWdh
dGUgPSBGYWxzZQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCiAgICAgaGFuZGxl
ciA9IExvZ0hhbmRsZXIoKQogICAgIGhhbmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQpAQCAt
MzE2LDcgKzQxMCwxMCBAQCBkZWYgbWFpbihfYXJndiwgX3N0ZG91dCwgX3N0ZGVycik6CiAgICAg
b3B0aW9ucyA9IHBhcnNlX2FyZ3MoX2FyZ3YpCiAKICAgICBjb25maWd1cmVfbG9nZ2luZygpCisg
ICAgdGVzdF9leHBvcnRlciA9IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKEhvc3QoKSwgb3B0aW9u
cykKIAotICAgIHRlc3RfZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoSG9zdCgpLCBvcHRpb25zKQor
ICAgIGlmIG5vdCB0ZXN0X2V4cG9ydGVyLmhhc193cHRfY2hhbmdlcygpOgorICAgICAgICBfbG9n
LmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0uIEV4aXRpbmcuLi4nKQorICAgICAgICByZXR1
cm4KIAogICAgIHRlc3RfZXhwb3J0ZXIuZG9fZXhwb3J0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5CmluZGV4IGI4MzM0YTk0
OWM2MTI4NjcyZTNjNDcyNGYxNjEwM2MwNGY5Y2I5ODkuLjIwNmNkN2QwZWQ0NTAyMGEzNGM0ZGYz
OTAyZTRiZjI5ODYyOWMwZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weQpAQCAtMjUsNyArMjUsNyBAQCBpbXBvcnQgdW5p
dHRlc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxl
U3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0
IE1vY2tFeGVjdXRpdmUyCi1mcm9tIHdlYmtpdHB5LnczYy50ZXN0X2V4cG9ydGVyIGltcG9ydCBU
ZXN0RXhwb3J0ZXIsIHBhcnNlX2FyZ3MKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfZXhwb3J0ZXIg
aW1wb3J0IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLCBwYXJzZV9hcmdzCiBmcm9tIHdlYmtpdHB5
LnczYy53cHRfZ2l0aHViX21vY2sgaW1wb3J0IE1vY2tXUFRHaXRIdWIKIAogbW9ja19saW50ZXIg
PSBOb25lCkBAIC0xMjIsOCArMTIyLDkgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9leHBvcnQoc2VsZik6CiAgICAgICAgIGhvc3Qg
PSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQorICAgICAgICBob3N0LndlYi5yZXNwb25z
ZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUnOiAyMDAsICdib2R5JzogJ3sibG9naW4iOiAiVVNFUiJ9
J30pCiAgICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICct
ZycsICdIRUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tF
TiddKQotICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0
RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2Nr
V1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIGV4cG9y
dGVyID0gV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVy
VGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1
YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQogICAgICAgICBleHBvcnRlci5kb19l
eHBvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBvcnRlci5fZ2l0aHViLmNhbGxz
LCBbJ2NyZWF0ZV9wcicsICdhZGRfbGFiZWwgIndlYmtpdC1leHBvcnQiJ10pCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgnV2ViS2l0IGV4cG9ydCcgaW4gZXhwb3J0ZXIuX2dpdGh1Yi5wdWxsX3Jl
cXVlc3RzX2NyZWF0ZWRbMF1bMV0pCkBAIC0xNTAsOCArMTUxLDkgQEAgY2xhc3MgVGVzdEV4cG9y
dGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9leHBvcnRfd2l0aF9z
cGVjaWZpY19icmFuY2goc2VsZik6CiAgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15
TW9ja0hvc3QoKQorICAgICAgICBob3N0LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2Nv
ZGUnOiAyMDAsICdib2R5JzogJ3sibG9naW4iOiAiVVNFUiJ9J30pCiAgICAgICAgIG9wdGlvbnMg
PSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICctZycsICdIRUFEJywgJy1iJywgJzEy
MzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tFTicsICctYm4nLCAnd3B0LWV4cG9y
dC1icmFuY2gnXSkKLSAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9u
cywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxs
YSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAg
ICBleHBvcnRlciA9IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIFRlc3RF
eHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tX
UFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikKICAgICAgICAgZXhwb3J0
ZXIuZG9fZXhwb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwb3J0ZXIuX2dpdC5j
YWxscywgWwogICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0
cy93ZWItcGxhdGZvcm0tdGVzdHMnLApAQCAtMTY5LDMgKzE3MSwyOCBAQCBjbGFzcyBUZXN0RXhw
b3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICdkZWxldGUgYnJhbmNo
IHdwdC1leHBvcnQtZm9yLXdlYmtpdC0xMjM0JywKICAgICAgICAgICAgICdjaGVja291dCBtYXN0
ZXInLAogICAgICAgICAgICAgJ3Jlc2V0IGhhcmQgb3JpZ2luL21hc3RlciddKQorCisgICAgZGVm
IHRlc3RfZXhwb3J0X2ludGVyYWN0aXZlX21vZGUoc2VsZik6CisgICAgICAgIGhvc3QgPSBUZXN0
RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQorICAgICAgICBob3N0LndlYi5yZXNwb25zZXMuYXBw
ZW5kKHsnc3RhdHVzX2NvZGUnOiAyMDAsICdib2R5JzogJ3sibG9naW4iOiAiVVNFUiJ9J30pCisg
ICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICctZycsICdI
RUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tFTicsICct
LWludGVyYWN0aXZlJ10pCisgICAgICAgIGV4cG9ydGVyID0gV2ViUGxhdGZvcm1UZXN0RXhwb3J0
ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJU
ZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BU
TGludGVyKQorICAgICAgICBleHBvcnRlci5kb19leHBvcnQoKQorCisgICAgZGVmIHRlc3RfZXhw
b3J0X2ludmFsaWRfdG9rZW4oc2VsZik6CisgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0
Lk15TW9ja0hvc3QoKQorICAgICAgICBob3N0LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVz
X2NvZGUnOiA0MDF9KQorICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0
ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAn
LXQnLCAnVE9LRU4nXSkKKyAgICAgICAgZXhwb3J0ZXIgPSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRl
cihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRl
c3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRM
aW50ZXIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250
ZXh0OgorICAgICAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRJbignT0F1dGggdG9rZW4gaXMgbm90IHZhbGlkJywgc3RyKGNvbnRleHQuZXhjZXB0aW9uKSkK
KworICAgIGRlZiB0ZXN0X2V4cG9ydF93cm9uZ190b2tlbihzZWxmKToKKyAgICAgICAgaG9zdCA9
IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAgIGhvc3Qud2ViLnJlc3BvbnNl
cy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDIwMCwgJ2JvZHknOiAneyJsb2dpbiI6ICJESUZGX1VT
RVIifSd9KQorICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHkn
LCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAn
VE9LRU4nXSkKKyAgICAgICAgZXhwb3J0ZXIgPSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihob3N0
LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9j
a0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIp
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0Ogor
ICAgICAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbign
T0F1dGggdG9rZW4gZG9lcyBub3QgbWF0Y2ggdGhlIHByb3ZpZGVkIHVzZXJuYW1lJywgc3RyKGNv
bnRleHQuZXhjZXB0aW9uKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340424</attachid>
            <date>2018-05-15 11:58:14 -0700</date>
            <delta_ts>2018-05-17 07:01:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184914-20180515145813.patch</filename>
            <type>text/plain</type>
            <size>27699</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNzAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWIwODI2NDAyMGE3YmJkYWNkYjlkY2ZiZWNiYjllYzc2
YTc3MTBkMS4uYmJjNTlhN2Y0Y2RjMzBmOWNmMTZjZGJjMmFiZTBmMzBmNTAwYTY4YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2
IEBACisyMDE4LTA1LTE1ICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgRXhwb3J0IGNoYW5nZXMgdG8gd2ViLXBsYXRmb3JtLXRlc3QgYXMgcGFydCBv
ZiB0aGUgd2Via2l0LXBhdGNoIHVwbG9hZCB3b3JrZmxvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5OgorICAgICAgICAoVXBsb2FkKToKKyAgICAgICAgKENyZWF0ZUJ1Zy5leGVj
dXRlKToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy93cHRjaGFuZ2VleHBvcnQucHk6IEFkZGVkLgorICAgICAgICAoV1BUQ2hhbmdl
RXhwb3J0KToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydC5vcHRpb25zKToKKyAgICAgICAgKFdQ
VENoYW5nZUV4cG9ydC5ydW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1v
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5Ogor
ICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIpOgorICAgICAgICAoV2ViUGxhdGZvcm1U
ZXN0RXhwb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIu
dXNlcm5hbWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIudG9rZW4pOgorICAg
ICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX2dpdGh1Yik6CisgICAgICAgIChXZWJQbGF0
Zm9ybVRlc3RFeHBvcnRlci5fd3B0X2ZvcmtfYnJhbmNoX2dpdGh1Yl91cmwpOgorICAgICAgICAo
V2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX3dwdF9mb3JrX3JlbW90ZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVRlc3RFeHBvcnRlci5fd3B0X2ZvcmtfcHVzaF91cmwpOgorICAgICAgICAoV2ViUGxh
dGZvcm1UZXN0RXhwb3J0ZXIuX2dpdCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRl
ci5fYnJhbmNoX25hbWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX3B1Ymxp
Y19icmFuY2hfbmFtZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5oYXNfd3B0
X2NoYW5nZXMpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX2NyZWF0ZV9wYXRj
aCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5jcmVhdGVfZ2l0X3BhdGNoKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl9wcm9tcHRfZm9yX3Rva2VuKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl9wcm9tcHRfZm9yX3VzZXJuYW1lKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2Vu
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl92YWxpZGF0ZV9hbmRfc2F2ZV90
b2tlbik6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5wdXNoX3RvX3dwdF9mb3Jr
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLm1ha2VfcHVsbF9yZXF1ZXN0KToK
KyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLmRlbGV0ZV9sb2NhbF9icmFuY2gpOgor
ICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIpOiBEZWxldGVkLgor
ICAgICAgICAoVGVzdEV4cG9ydGVyLl9faW5pdF9fKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RF
eHBvcnRlci5fZW5zdXJlX3dwdF9yZXBvc2l0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RF
eHBvcnRlci5fZmV0Y2hfd3B0X3JlcG9zaXRvcnkpOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4
cG9ydGVyLl9lbnN1cmVfbmV3X2JyYW5jaF9uYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RF
eHBvcnRlci5kb3dubG9hZF9hbmRfY29tbWl0X3BhdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFRl
c3RFeHBvcnRlci5jbGVhbik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIuY3JlYXRl
X2JyYW5jaF93aXRoX3BhdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5wdXNo
X3RvX3dwdF9mb3JrKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5tYWtlX3B1bGxf
cmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIuY3JlYXRlX3dwdF9wdWxs
X3JlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmRlbGV0ZV9sb2NhbF9i
cmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNyZWF0ZV9naXRfcGF0Y2gp
OiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNyZWF0ZV91cGxvYWRfcmVtb3RlX2lm
X25lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIuZG9fZXhwb3J0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0
ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0X2V4cG9ydCk6CisgICAgICAg
IChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X3dpdGhfc3BlY2lmaWNfYnJhbmNoKToKKyAg
ICAgICAgKFRlc3RFeHBvcnRlclRlc3QpOgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0
X2V4cG9ydF9pbnRlcmFjdGl2ZV9tb2RlKToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVz
dF9leHBvcnRfaW52YWxpZF90b2tlbik6CisgICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3Rf
ZXhwb3J0X3dyb25nX3Rva2VuKToKKwogMjAxOC0wNS0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ11bR0xJQl0gQWRkIGludHJvc3Bl
Y3RhYmxlIGFsdGVybmF0aXZlcyB0byBmdW5jdGlvbnMgdXNpbmcgdmFyZ2FycwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggOTMzZGIyZDA4
NTIwZDg2MGM1MjgzZjdhZjQ5NmZhMWI5NDIxNTMwMy4uY2QxNDNhODJhMWE5MzE5MDVlODYxNjNl
ZjgyYTkzZTBhNWE3MmRhNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3VwbG9hZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5CkBAIC0yODYsNiArMjg2LDcgQEAgY2xhc3MgVXBsb2FkKEFic3RyYWN0
UGF0Y2hVcGxvYWRpbmdDb21tYW5kKToKICAgICAgICAgc3RlcHMuRW5zdXJlQnVnSXNPcGVuQW5k
QXNzaWduZWQsCiAgICAgICAgIHN0ZXBzLlBvc3REaWZmLAogICAgICAgICBzdGVwcy5TdWJtaXRU
b0VXUywKKyAgICAgICAgc3RlcHMuV1BUQ2hhbmdlRXhwb3J0LAogICAgIF0KICAgICBsb25nX2hl
bHAgPSAiIiJ1cGxvYWQgdXBsb2FkcyB0aGUgY3VycmVudCBkaWZmIHRvIGJ1Z3Mud2Via2l0Lm9y
Zy4KICAgICBJZiBubyBidWcgaWQgaXMgcHJvdmlkZWQsIHVwbG9hZCB3aWxsIGNyZWF0ZSBhIGJ1
Zy4KQEAgLTUzMSwzICs1MzIsMjUgQEAgY2xhc3MgQ3JlYXRlQnVnKENvbW1hbmQpOgogICAgICAg
ICAgICAgc2VsZi5jcmVhdGVfYnVnX2Zyb21fY29tbWl0KG9wdGlvbnMsIGFyZ3MsIHRvb2wpCiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9idWdfZnJvbV9wYXRjaChvcHRp
b25zLCBhcmdzLCB0b29sKQorCisKK2NsYXNzIFdQVENoYW5nZUV4cG9ydChBYnN0cmFjdFBhdGNo
VXBsb2FkaW5nQ29tbWFuZCk6CisgICAgbmFtZSA9ICJ3cHQtY2hhbmdlLWV4cG9ydCIKKyAgICBo
ZWxwX3RleHQgPSAiT3BlbnMgYSBwdWxsIHJlcXVlc3QgdG8gc3luY2hyb25pemUgYW55IGNoYW5n
ZXMgaW4gdGhlIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMgZGly
ZWN0b3J5IgorICAgIGFyZ3VtZW50X25hbWVzID0gIltCVUdJRF0iCisgICAgc3RlcHMgPSBbCisg
ICAgICAgIHN0ZXBzLldQVENoYW5nZUV4cG9ydCwKKyAgICBdCisKKyAgICBsb25nX2hlbHAgPSAi
IiJPcGVucyBhIHB1bGwgcmVxdWVzdCB0byB0aGUgdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cworICAg
IGdpdGh1YiByZXBvIGZvciBhbnkgY2hhbmdlcyBpbiB0aGUKKyAgICBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzIGRpcmVjdG9yeS4gVGhpcyBzdGVwCisgICAgd2ls
bCBub29wIGlmIHRoZXJlIGFyZSBubyBjaGFuZ2VzIGluIHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMg
ZGlyZWN0b3J5LgorICAgIFRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gcHJvdmlkZSBhIGdp
dGh1YiB1c2VybmFtZSBhbmQgT0F1dGggdG9rZW4KKyAgICB0aGUgZmlyc3QgdGltZSB0aGlzIGlz
IHJ1bi4KKyAgICAiIiIKKworICAgIGRlZiBfcHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBh
cmdzLCB0b29sKToKKyAgICAgICAgc3RhdGUgPSB7fQorICAgICAgICBzdGF0ZVsiYnVnX2lkIl0g
PSBzZWxmLl9idWdfaWQob3B0aW9ucywgYXJncywgdG9vbCwgc3RhdGUpCisgICAgICAgIHJldHVy
biBzdGF0ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19f
aW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5
CmluZGV4IGYzYzE3MGUzMTJlZGQ3ODY0ZjlkODVhZDljNzc1OWYyYmM5MWM5M2YuLmRjMDc4NGY2
MTUxZThhZmY4Nzk0YTY5MDc2ZDdlN2ZjMmM4ZmNhOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKQEAgLTY2LDMgKzY2LDQgQEAgZnJvbSB3ZWJr
aXRweS50b29sLnN0ZXBzLnVwZGF0ZSBpbXBvcnQgVXBkYXRlCiBmcm9tIHdlYmtpdHB5LnRvb2wu
c3RlcHMudXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlciBpbXBvcnQgVXBkYXRlQ2hhbmdlTG9n
c1dpdGhSZXZpZXdlcgogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnZhbGlkYXRlY2hhbmdlbG9n
cyBpbXBvcnQgVmFsaWRhdGVDaGFuZ2VMb2dzCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudmFs
aWRhdGVyZXZpZXdlciBpbXBvcnQgVmFsaWRhdGVSZXZpZXdlcgorZnJvbSB3ZWJraXRweS50b29s
LnN0ZXBzLndwdGNoYW5nZWV4cG9ydCBpbXBvcnQgV1BUQ2hhbmdlRXhwb3J0CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvd3B0Y2hhbmdlZXhwb3J0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3dwdGNoYW5nZWV4cG9ydC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZGVlMzg0NmQ3OTM1MTVkNTI1MTRkY2QyY2ViOWMxYjJlZDg4OWUwCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3dwdGNoYW5nZWV4
cG9ydC5weQpAQCAtMCwwICsxLDU0IEBACisjIENvcHlyaWdodCAoYykgMjAxOCwgQm9jb3VwIExM
Qy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisj
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBT
Y3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQg
QWJzdHJhY3RTdGVwCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0
aW9ucworZnJvbSB3ZWJraXRweS53M2MudGVzdF9leHBvcnRlciBpbXBvcnQgV2ViUGxhdGZvcm1U
ZXN0RXhwb3J0ZXIsIHBhcnNlX2FyZ3MKKworCitjbGFzcyBXUFRDaGFuZ2VFeHBvcnQoQWJzdHJh
Y3RTdGVwKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgorICAgICAg
ICByZXR1cm4gQWJzdHJhY3RTdGVwLm9wdGlvbnMoKSArIFsKKyAgICAgICAgICAgIE9wdGlvbnMu
bm9uX2ludGVyYWN0aXZlLAorICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAorICAgICAg
ICBdCisKKyAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5ub25faW50ZXJhY3RpdmU6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBidWdfaWQg
PSBzdGF0ZS5nZXQoImJ1Z19pZCIpCisgICAgICAgIGlmIG5vdCBidWdfaWQ6CisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBhcmdzID0gWyItLWJ1ZyIsIHN0cihidWdfaWQpLCAiLS1jcmVh
dGUtcHIiXQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdDoKKyAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKCItLWdpdC1jb21taXQiKQorICAgICAgICAgICAgYXJncy5hcHBlbmQo
c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KQorCisgICAgICAgIHRlc3RfZXhwb3J0ZXIgPSBXZWJQ
bGF0Zm9ybVRlc3RFeHBvcnRlcihzZWxmLl90b29sLCBwYXJzZV9hcmdzKGFyZ3MpKQorICAgICAg
ICBtZXNzYWdlID0gJ1dvdWxkIHlvdSBsaWtlIHRvIGV4cG9ydCB0aGUgd2ViLXBsYXRmb3JtLXRl
c3RzIGNoYW5nZXMgYW5kL29yIGNyZWF0ZSBhIFBSIHRvIHRoZSBXUFQgR2l0SHViIHJlcG9zaXRv
cnk/JworICAgICAgICBpZiB0ZXN0X2V4cG9ydGVyLmhhc193cHRfY2hhbmdlcygpIGFuZCBzZWxm
Ll90b29sLnVzZXIuY29uZmlybShtZXNzYWdlKToKKyAgICAgICAgICAgIHRlc3RfZXhwb3J0ZXIu
ZG9fZXhwb3J0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1v
bi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1vbi5weQppbmRleCBhMTRhYTk1
MzU0YjkwNjczOTQxMDE3NmMxYjAzNzhjN2Q3MjM1MzMyLi42NmZhMzRmMmE3ZTlhZjE3Mzc2YjY0
M2NiNGMxYTY0YTk4ODhiMjBmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy9jb21tb24ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5CkBA
IC0zMCwxMCArMzAsMTEgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCitpbXBvcnQg
b3MKIAogCi1XUFRfR0hfT1JHID0gJ3czYycKLVdQVF9HSF9SRVBPX05BTUUgPSAnd2ViLXBsYXRm
b3JtLXRlc3RzJworV1BUX0dIX09SRyA9IG9zLmVudmlyb24uZ2V0KCdXUFRfR0hfT1JHJywgJ3cz
YycpCitXUFRfR0hfUkVQT19OQU1FID0gb3MuZW52aXJvbi5nZXQoJ1dQVF9HSF9SRVBPX05BTUUn
LCAnd2ViLXBsYXRmb3JtLXRlc3RzJykKIFdQVF9HSF9VUkwgPSAnaHR0cHM6Ly9naXRodWIuY29t
LyVzLyVzLycgJSAoV1BUX0dIX09SRywgV1BUX0dIX1JFUE9fTkFNRSkKIFdQVF9NSVJST1JfVVJM
ID0gJ2h0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9leHRlcm5hbC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzLmdpdCcKIFdQVF9HSF9TU0hfVVJMX1RFTVBMQVRFID0gJ2h0dHBzOi8ve31A
Z2l0aHViLmNvbS8lcy8lcy5naXQnICUgKFdQVF9HSF9PUkcsIFdQVF9HSF9SRVBPX05BTUUpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weQppbmRleCA2YTljYTVi
YjcyYzFmODQ4MzA2NDgwMzgzMmIyZWI3NTUxMTljYTZjLi5kYTVlZTJiZjkyZDZkZDUzMzYyMGFh
ZmZjMjNlNWNjYmZkMzI5ZGFhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2V4cG9ydGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3Rf
ZXhwb3J0ZXIucHkKQEAgLTI4LDYgKzI4LDggQEAgaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9n
Z2luZwogaW1wb3J0IG9zCiBpbXBvcnQgdGltZQoraW1wb3J0IGpzb24KK2Zyb20gdXJsbGliMiBp
bXBvcnQgSFRUUEVycm9yCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5naXQg
aW1wb3J0IEdpdAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdApAQCAtMzUs
MTYgKzM3LDE3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVn
emlsbGEKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZp
bmRlcgogZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1YiBpbXBvcnQgV1BUR2l0SHViCiBmcm9t
IHdlYmtpdHB5LnczYy53cHRfbGludGVyIGltcG9ydCBXUFRMaW50ZXIKK2Zyb20gd2Via2l0cHku
dzNjLmNvbW1vbiBpbXBvcnQgV1BUX0dIX09SRworZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6
ZWQgaW1wb3J0IG1lbW9pemVkCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
IAogV0VCS0lUX1dQVF9ESVIgPSAnTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cycKLVdQVF9QUl9VUkwgPSAiaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvcHVsbC8iCitXUFRfUFJfVVJMID0gImh0dHBzOi8vZ2l0aHViLmNvbS8lcy93ZWIt
cGxhdGZvcm0tdGVzdHMvcHVsbC8iICUgV1BUX0dIX09SRwogV0VCS0lUX0VYUE9SVF9QUl9MQUJF
TCA9ICd3ZWJraXQtZXhwb3J0JwogCiAKLWNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgotCitj
bGFzcyBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBob3N0LCBvcHRpb25zLCBnaXRDbGFzcz1HaXQsIGJ1Z3ppbGxhQ2xhc3M9QnVnemlsbGEs
IFdQVEdpdEh1YkNsYXNzPVdQVEdpdEh1YiwgV1BUTGludGVyQ2xhc3M9V1BUTGludGVyKToKICAg
ICAgICAgc2VsZi5faG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGhvc3Qu
ZmlsZXN5c3RlbQpAQCAtNTIsNiArNTUsOCBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToK
IAogICAgICAgICBzZWxmLl9ob3N0LmluaXRpYWxpemVfc2NtKCkKIAorICAgICAgICBzZWxmLl9X
UFRHaXRIdWJDbGFzcyA9IFdQVEdpdEh1YkNsYXNzCisgICAgICAgIHNlbGYuX2dpdENsYXNzID0g
Z2l0Q2xhc3MKICAgICAgICAgc2VsZi5fYnVnemlsbGEgPSBidWd6aWxsYUNsYXNzKCkKICAgICAg
ICAgc2VsZi5fYnVnX2lkID0gb3B0aW9ucy5idWdfaWQKICAgICAgICAgaWYgbm90IHNlbGYuX2J1
Z19pZDoKQEAgLTY0LDQ1ICs2OSwxNDYgQEAgY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAg
ICAgICAgICAgICB3ZWJraXRfZmluZGVyID0gV2ViS2l0RmluZGVyKHNlbGYuX2ZpbGVzeXN0ZW0p
CiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlcG9zaXRvcnlfZGlyZWN0b3J5ID0gd2Via2l0
X2ZpbmRlci5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1dlYktpdEJ1aWxkJywgJ3czYy10ZXN0cycs
ICd3ZWItcGxhdGZvcm0tdGVzdHMnKQogCi0gICAgICAgIHNlbGYuX2dpdCA9IHNlbGYuX2Vuc3Vy
ZV93cHRfcmVwb3NpdG9yeSgiaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMuZ2l0Iiwgc2VsZi5fb3B0aW9ucy5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgZ2l0Q2xhc3MpCiAg
ICAgICAgIHNlbGYuX2xpbnRlciA9IFdQVExpbnRlckNsYXNzKHNlbGYuX29wdGlvbnMucmVwb3Np
dG9yeV9kaXJlY3RvcnksIGhvc3QuZmlsZXN5c3RlbSkKIAorICAgICAgICBzZWxmLl9idWd6aWxs
YV91cmwgPSAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPSIgKyBzdHIo
c2VsZi5fYnVnX2lkKQorICAgICAgICBzZWxmLl9jb21taXRfbWVzc2FnZSA9IG9wdGlvbnMubWVz
c2FnZQorICAgICAgICBpZiBub3Qgc2VsZi5fY29tbWl0X21lc3NhZ2U6CisgICAgICAgICAgICBz
ZWxmLl9jb21taXRfbWVzc2FnZSA9ICdXZWJLaXQgZXhwb3J0IG9mICcgKyBzZWxmLl9idWd6aWxs
YV91cmwgaWYgc2VsZi5fYnVnX2lkIGVsc2UgJ0V4cG9ydCBtYWRlIGZyb20gYSBXZWJLaXQgcmVw
b3NpdG9yeScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB1c2VybmFtZShzZWxmKToKKyAgICAg
ICAgaWYgaGFzYXR0cihzZWxmLCAnX3VzZXJuYW1lJyk6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fdXNlcm5hbWUKKworICAgICAgICBzZWxmLl9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2VuKHNl
bGYuX29wdGlvbnMpCisgICAgICAgIHJldHVybiBzZWxmLl91c2VybmFtZQorCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIHRva2VuKHNlbGYpOgorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfdG9r
ZW4nKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl90b2tlbgorCisgICAgICAgIHNlbGYuX2Vu
c3VyZV91c2VybmFtZV9hbmRfdG9rZW4oc2VsZi5fb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3Rva2VuCisKKyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX2dpdGh1
YihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX1dQVEdpdEh1YkNsYXNzKHNlbGYuX2hvc3Qs
IHNlbGYudXNlcm5hbWUsIHNlbGYudG9rZW4pIGlmIHNlbGYudXNlcm5hbWUgYW5kIHNlbGYudG9r
ZW4gZWxzZSBOb25lCisKKyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX3dw
dF9mb3JrX2JyYW5jaF9naXRodWJfdXJsKHNlbGYpOgorICAgICAgICByZXR1cm4gImh0dHBzOi8v
Z2l0aHViLmNvbS8iICsgc2VsZi51c2VybmFtZSArICIvd2ViLXBsYXRmb3JtLXRlc3RzL3RyZWUv
IiArIHNlbGYuX3B1YmxpY19icmFuY2hfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgQG1lbW9p
emVkCisgICAgZGVmIF93cHRfZm9ya19yZW1vdGUoc2VsZik6CisgICAgICAgIHdwdF9mb3JrX3Jl
bW90ZSA9IHNlbGYuX29wdGlvbnMucmVwb3NpdG9yeV9yZW1vdGUKKyAgICAgICAgaWYgbm90IHdw
dF9mb3JrX3JlbW90ZToKKyAgICAgICAgICAgIHdwdF9mb3JrX3JlbW90ZSA9IHNlbGYudXNlcm5h
bWUKKworICAgICAgICByZXR1cm4gd3B0X2ZvcmtfcmVtb3RlCisKKyAgICBAcHJvcGVydHkKKyAg
ICBAbWVtb2l6ZWQKKyAgICBkZWYgX3dwdF9mb3JrX3B1c2hfdXJsKHNlbGYpOgorICAgICAgICB3
cHRfZm9ya19wdXNoX3VybCA9IHNlbGYuX29wdGlvbnMucmVwb3NpdG9yeV9yZW1vdGVfdXJsCisg
ICAgICAgIGlmIG5vdCB3cHRfZm9ya19wdXNoX3VybDoKKyAgICAgICAgICAgIHdwdF9mb3JrX3B1
c2hfdXJsID0gImh0dHBzOi8vIiArIHNlbGYudXNlcm5hbWUgKyAiQGdpdGh1Yi5jb20vIiArIHNl
bGYudXNlcm5hbWUgKyAiL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiCisKKyAgICAgICAgcmV0dXJu
IHdwdF9mb3JrX3B1c2hfdXJsCisKKyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBk
ZWYgX2dpdChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Vuc3VyZV93cHRfcmVwb3NpdG9y
eSgiaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0Iiwgc2VsZi5f
b3B0aW9ucy5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgc2VsZi5fZ2l0Q2xhc3MpCisKKyAgICBAcHJv
cGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX2JyYW5jaF9uYW1lKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fZW5zdXJlX25ld19icmFuY2hfbmFtZSgpCisKKyAgICBAcHJvcGVydHkK
KyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX3B1YmxpY19icmFuY2hfbmFtZShzZWxmKToKKyAgICAg
ICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKKyAgICAgICAgcmV0dXJuIG9wdGlvbnMucHVibGlj
X2JyYW5jaF9uYW1lIGlmIG9wdGlvbnMucHVibGljX2JyYW5jaF9uYW1lIGVsc2Ugc2VsZi5fYnJh
bmNoX25hbWUKKworICAgIGRlZiBoYXNfd3B0X2NoYW5nZXMoc2VsZik6CisgICAgICAgIHJldHVy
biBib29sKHNlbGYuX2NyZWF0ZV9wYXRjaCgpKQorCisgICAgZGVmIF9jcmVhdGVfcGF0Y2goc2Vs
Zik6CisgICAgICAgIHBhdGNoX2RhdGEgPSBzZWxmLl9ob3N0LnNjbSgpLmNyZWF0ZV9wYXRjaChz
ZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIFtXRUJLSVRfV1BUX0RJUl0pCisgICAgICAgIGlmIG5v
dCBwYXRjaF9kYXRhIG9yIG5vdCAnZGlmZicgaW4gcGF0Y2hfZGF0YToKKyAgICAgICAgICAgIHJl
dHVybiAnJworICAgICAgICByZXR1cm4gcGF0Y2hfZGF0YQorCisgICAgZGVmIHdyaXRlX2dpdF9w
YXRjaF9maWxlKHNlbGYpOgorICAgICAgICBfLCBwYXRjaF9maWxlID0gc2VsZi5fZmlsZXN5c3Rl
bS5vcGVuX2JpbmFyeV90ZW1wZmlsZSgnd3B0X2V4cG9ydF9wYXRjaCcpCisgICAgICAgIHBhdGNo
X2RhdGEgPSBzZWxmLl9jcmVhdGVfcGF0Y2goKQorICAgICAgICBpZiBub3QgJ2RpZmYnIGluIHBh
dGNoX2RhdGE6CisgICAgICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0s
IHBhdGNoIGRhdGEgaXM6ICIlcyInICUgKHBhdGNoX2RhdGEpKQorICAgICAgICAgICAgcmV0dXJu
ICcnCisgICAgICAgICMgRklYTUU6IFdlIGNhbiBwcm9iYWJseSB0cnkgdG8gdXNlIC0tcmVsYXRp
dmUgZ2l0IHBhcmFtZXRlciB0byBub3QgZG8gdGhhdCByZXBsYWNlbWVudC4KKyAgICAgICAgcGF0
Y2hfZGF0YSA9IHBhdGNoX2RhdGEucmVwbGFjZShXRUJLSVRfV1BUX0RJUiArICcvJywgJycpCisg
ICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBhdGNoX2ZpbGUsIHBhdGNo
X2RhdGEpCisgICAgICAgIHJldHVybiBwYXRjaF9maWxlCisKKyAgICBkZWYgX3Byb21wdF9mb3Jf
dG9rZW4oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgIGlmIG9wdGlvbnMubm9uX2ludGVyYWN0aXZl
OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3QudXNl
ci5wcm9tcHRfcGFzc3dvcmQoJ0VudGVyIEdpdEh1YiBPQXV0aCB0b2tlbiAob3IgZW1wdHkgc3Ry
aW5nIHRvIHNraXAgY3JlYXRpbmcgYSBwdWxsIHJlcXVlc3QpOiAnKQorCisgICAgZGVmIF9wcm9t
cHRfZm9yX3VzZXJuYW1lKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBpZiBvcHRpb25zLm5vbl9p
bnRlcmFjdGl2ZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxm
Ll9ob3N0LnVzZXIucHJvbXB0KCdFbnRlciB5b3VyIEdpdEh1YiB1c2VybmFtZTogJykKKworICAg
IGRlZiBfZW5zdXJlX3VzZXJuYW1lX2FuZF90b2tlbihzZWxmLCBvcHRpb25zKToKICAgICAgICAg
c2VsZi5fdXNlcm5hbWUgPSBvcHRpb25zLnVzZXJuYW1lCiAgICAgICAgIGlmIG5vdCBzZWxmLl91
c2VybmFtZToKKyAgICAgICAgICAgICMgRklYTUU6IFVzZSB0aGUga2V5Y2hhaW4gdG8gc3RvcmUg
dXNlcm5hbWUgYW5kIG9hdXRoIHRva2VuIGluc3RlYWQgb2YgLmdpdC9jb25maWcKICAgICAgICAg
ICAgIHNlbGYuX3VzZXJuYW1lID0gc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJu
YW1lJykucnN0cmlwKCkKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToKICAgICAg
ICAgICAgICAgICBzZWxmLl91c2VybmFtZSA9IG9zLmVudmlyb24uZ2V0KCdHSVRIVUJfVVNFUk5B
TUUnKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgorICAgICAgICAgICAgICAg
IHNlbGYuX3VzZXJuYW1lID0gc2VsZi5fcHJvbXB0X2Zvcl91c2VybmFtZShvcHRpb25zKQogICAg
ICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoIk1pc3NpbmcgR2l0SHViIHVzZXJuYW1lLCBwbGVhc2UgcHJvdmlkZSBpdCBhcyBh
IGNvbW1hbmQgYXJndW1lbnQgKHNlZSBoZWxwIGZvciB0aGUgY29tbWFuZCkuIikKLSAgICAgICAg
ZWxpZiBub3Qgc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJuYW1lJyk6Ci0gICAg
ICAgICAgICBzZWxmLl9naXQuc2V0X2xvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJuYW1lJywgc2Vs
Zi5fdXNlcm5hbWUpCiAKICAgICAgICAgc2VsZi5fdG9rZW4gPSBvcHRpb25zLnRva2VuCiAgICAg
ICAgIGlmIG5vdCBzZWxmLl90b2tlbjoKICAgICAgICAgICAgIHNlbGYuX3Rva2VuID0gc2VsZi5f
Z2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnRva2VuJykucnN0cmlwKCkKICAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl90b2tlbjoKICAgICAgICAgICAgICAgICBzZWxmLl90b2tlbiA9IG9zLmVudmly
b24uZ2V0KCdHSVRIVUJfVE9LRU4nKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Rva2VuOgor
ICAgICAgICAgICAgICAgIHNlbGYuX3Rva2VuID0gc2VsZi5fcHJvbXB0X2Zvcl90b2tlbihvcHRp
b25zKQogICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Rva2VuOgogICAgICAgICAgICAgICAgIF9s
b2cuaW5mbygiTWlzc2luZyBHaXRIdWIgdG9rZW4sIHRoZSBzY3JpcHQgd2lsbCBub3QgYmUgYWJs
ZSB0byBjcmVhdGUgYSBwdWxsIHJlcXVlc3QgdG8gVzNDIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBv
c2l0b3J5LiIpCi0gICAgICAgIGVsaWYgbm90IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dpdGh1
Yi50b2tlbicpOgotICAgICAgICAgICAgc2VsZi5fZ2l0LnNldF9sb2NhbF9jb25maWcoJ2dpdGh1
Yi50b2tlbicsIHNlbGYuX3Rva2VuKQogCi0gICAgICAgIHNlbGYuX2dpdGh1YiA9IFdQVEdpdEh1
YkNsYXNzKHNlbGYuX2hvc3QsIHNlbGYuX3VzZXJuYW1lLCBzZWxmLl90b2tlbikgaWYgc2VsZi5f
dXNlcm5hbWUgYW5kIHNlbGYuX3Rva2VuIGVsc2UgTm9uZQorICAgICAgICBpZiBzZWxmLl90b2tl
bjoKKyAgICAgICAgICAgIHNlbGYuX3ZhbGlkYXRlX2FuZF9zYXZlX3Rva2VuKHNlbGYuX3VzZXJu
YW1lLCBzZWxmLl90b2tlbikKIAotICAgICAgICBzZWxmLl9icmFuY2hfbmFtZSA9IHNlbGYuX2Vu
c3VyZV9uZXdfYnJhbmNoX25hbWUoKQotICAgICAgICBzZWxmLl9wdWJsaWNfYnJhbmNoX25hbWUg
PSBvcHRpb25zLnB1YmxpY19icmFuY2hfbmFtZSBpZiBvcHRpb25zLnB1YmxpY19icmFuY2hfbmFt
ZSBlbHNlIHNlbGYuX2JyYW5jaF9uYW1lCi0gICAgICAgIHNlbGYuX2J1Z3ppbGxhX3VybCA9ICJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9IiArIHN0cihzZWxmLl9idWdf
aWQpCi0gICAgICAgIHNlbGYuX2NvbW1pdF9tZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlCi0gICAg
ICAgIGlmIG5vdCBzZWxmLl9jb21taXRfbWVzc2FnZToKLSAgICAgICAgICAgIHNlbGYuX2NvbW1p
dF9tZXNzYWdlID0gJ1dlYktpdCBleHBvcnQgb2YgJyArIHNlbGYuX2J1Z3ppbGxhX3VybCBpZiBz
ZWxmLl9idWdfaWQgZWxzZSAnRXhwb3J0IG1hZGUgZnJvbSBhIFdlYktpdCByZXBvc2l0b3J5Jwot
Ci0gICAgICAgIHNlbGYuX3dwdF9mb3JrX3JlbW90ZSA9IG9wdGlvbnMucmVwb3NpdG9yeV9yZW1v
dGUKLSAgICAgICAgaWYgbm90IHNlbGYuX3dwdF9mb3JrX3JlbW90ZToKLSAgICAgICAgICAgIHNl
bGYuX3dwdF9mb3JrX3JlbW90ZSA9IHNlbGYuX3VzZXJuYW1lCi0KLSAgICAgICAgc2VsZi5fd3B0
X2ZvcmtfcHVzaF91cmwgPSBvcHRpb25zLnJlcG9zaXRvcnlfcmVtb3RlX3VybAotICAgICAgICBp
ZiBub3Qgc2VsZi5fd3B0X2ZvcmtfcHVzaF91cmw6Ci0gICAgICAgICAgICBzZWxmLl93cHRfZm9y
a19wdXNoX3VybCA9ICJodHRwczovLyIgKyBzZWxmLl91c2VybmFtZSArICJAZ2l0aHViLmNvbS8i
ICsgc2VsZi5fdXNlcm5hbWUgKyAiL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiCisgICAgZGVmIF92
YWxpZGF0ZV9hbmRfc2F2ZV90b2tlbihzZWxmLCB1c2VybmFtZSwgdG9rZW4pOgorICAgICAgICAj
IHZhbGlkYXRlIHRva2VuIGFuZCB1c2VybmFtZQorICAgICAgICB1cmwgPSAnaHR0cHM6Ly9hcGku
Z2l0aHViLmNvbS91c2VyP2FjY2Vzc190b2tlbj0lcycgJSAodG9rZW4sKQorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYuX2hvc3Qud2ViLnJlcXVlc3QobWV0aG9kPSdH
RVQnLCB1cmw9dXJsLCBkYXRhPU5vbmUpCisgICAgICAgIGV4Y2VwdCBIVFRQRXJyb3IgYXMgZToK
KyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiT0F1dGggdG9rZW4gaXMgbm90IHZhbGlkIikK
KyAgICAgICAgZGF0YSA9IGpzb24ubG9hZChyZXNwb25zZSkKKyAgICAgICAgbG9naW4gPSBkYXRh
LmdldCgnbG9naW4nLCBOb25lKQorICAgICAgICBpZiBsb2dpbiAhPSB1c2VybmFtZToKKyAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiT0F1dGggdG9rZW4gZG9lcyBub3QgbWF0Y2ggdGhlIHBy
b3ZpZGVkIHVzZXJuYW1lLiBQcm92aWRlZCB1c2VyOiAlcywgZ2l0aHViIGxvZ2luOiAlcyIgJSAo
dXNlcm5hbWUsIGxvZ2luKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgVXNlcm5hbWUg
YW5kIHRva2VuIGFyZSB2YWxpZC4gU2F2ZSB0aGVtIGluIHRoZSBnaXQgY29uZmlnIHNvIHdlCisg
ICAgICAgICAgICAjIGRvIG5vdCBuZWVkIHRvIGFzayBmb3IgdGhlbSBhZ2FpbgorICAgICAgICAg
ICAgaWYgbm90IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dpdGh1Yi50b2tlbicpOgorICAgICAg
ICAgICAgICAgIHNlbGYuX2dpdC5zZXRfbG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nLCB0b2tl
bikKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudXNl
cm5hbWUnKToKKyAgICAgICAgICAgICAgICBzZWxmLl9naXQuc2V0X2xvY2FsX2NvbmZpZygnZ2l0
aHViLnVzZXJuYW1lJywgdXNlcm5hbWUpCiAKICAgICBkZWYgX2Vuc3VyZV93cHRfcmVwb3NpdG9y
eShzZWxmLCB1cmwsIHdwdF9yZXBvc2l0b3J5X2RpcmVjdG9yeSwgZ2l0Q2xhc3MpOgogICAgICAg
ICBnaXQgPSBOb25lCkBAIC0xNjYsMTYgKzI3MiwxNSBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2Jq
ZWN0KToKIAogICAgIGRlZiBwdXNoX3RvX3dwdF9mb3JrKHNlbGYpOgogICAgICAgICBzZWxmLmNy
ZWF0ZV91cGxvYWRfcmVtb3RlX2lmX25lZWRlZCgpCi0gICAgICAgIHdwdF9mb3JrX2JyYW5jaF9n
aXRodWJfdXJsID0gImh0dHBzOi8vZ2l0aHViLmNvbS8iICsgc2VsZi5fdXNlcm5hbWUgKyAiL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90cmVlLyIgKyBzZWxmLl9wdWJsaWNfYnJhbmNoX25hbWUKICAgICAg
ICAgX2xvZy5pbmZvKCdQdXNoaW5nIGJyYW5jaCAnICsgc2VsZi5fYnJhbmNoX25hbWUgKyAiIHRv
ICIgKyBzZWxmLl9naXQucmVtb3RlKFsiZ2V0LXVybCIsIHNlbGYuX3dwdF9mb3JrX3JlbW90ZV0p
LnJzdHJpcCgpKQogICAgICAgICBfbG9nLmluZm8oJ1RoaXMgbWF5IHRha2Ugc29tZSB0aW1lJykK
ICAgICAgICAgc2VsZi5fZ2l0LnB1c2goW3NlbGYuX3dwdF9mb3JrX3JlbW90ZSwgc2VsZi5fYnJh
bmNoX25hbWUgKyAiOiIgKyBzZWxmLl9wdWJsaWNfYnJhbmNoX25hbWUsICctZiddKQotICAgICAg
ICBfbG9nLmluZm8oJ0JyYW5jaCBhdmFpbGFibGUgYXQgJyArIHdwdF9mb3JrX2JyYW5jaF9naXRo
dWJfdXJsKQorICAgICAgICBfbG9nLmluZm8oJ0JyYW5jaCBhdmFpbGFibGUgYXQgJyArIHNlbGYu
X3dwdF9mb3JrX2JyYW5jaF9naXRodWJfdXJsKQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAg
ZGVmIG1ha2VfcHVsbF9yZXF1ZXN0KHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5fZ2l0aHVi
OgotICAgICAgICAgICAgX2xvZy5pbmZvKCdNaXNzaW5nIGluZm9ybWF0aW9uIHRvIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCcpCisgICAgICAgICAgICBfbG9nLmluZm8oJ1NraXBwaW5nIHB1bGwgcmVx
dWVzdCBiZWNhdXNlIE9BdXRoIHRva2VuIHdhcyBub3QgcHJvdmlkZWQuIFlvdSBjYW4gb3BlbiB0
aGUgcHVsbCByZXF1ZXN0IG1hbnVhbGx5IHVzaW5nIHRoZSBicmFuY2ggJyArIHNlbGYuX3dwdF9m
b3JrX2JyYW5jaF9naXRodWJfdXJsKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgX2xv
Zy5pbmZvKCdNYWtpbmcgcHVsbCByZXF1ZXN0JykKQEAgLTE4Niw3ICsyOTEsNyBAQCBjbGFzcyBU
ZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLl9naXRodWIuYWRkX2xh
YmVsKHByX251bWJlciwgV0VCS0lUX0VYUE9SVF9QUl9MQUJFTCkKICAgICAgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoZSkKLSAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oJ0NvdWxkIG5vdCBhZGQgbGFiZWwgIiVzIiB0byBwciAjJXMu
IFVzZXIgIiVzIiBtYXkgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1cGRhdGUgbGFiZWxzIGluIHRo
ZSB3M2Mvd2ViLXBsYXRmb3JtLXRlc3QgcmVwby4nICUgKFdFQktJVF9FWFBPUlRfUFJfTEFCRUws
IHByX251bWJlciwgc2VsZi5fdXNlcm5hbWUpKQorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygn
Q291bGQgbm90IGFkZCBsYWJlbCAiJXMiIHRvIHByICMlcy4gVXNlciAiJXMiIG1heSBub3QgaGF2
ZSBwZXJtaXNzaW9uIHRvIHVwZGF0ZSBsYWJlbHMgaW4gdGhlIHczYy93ZWItcGxhdGZvcm0tdGVz
dCByZXBvLicgJSAoV0VCS0lUX0VYUE9SVF9QUl9MQUJFTCwgcHJfbnVtYmVyLCBzZWxmLnVzZXJu
YW1lKSkKICAgICAgICAgaWYgc2VsZi5fYnVnX2lkIGFuZCBwcl9udW1iZXI6CiAgICAgICAgICAg
ICBzZWxmLl9idWd6aWxsYS5wb3N0X2NvbW1lbnRfdG9fYnVnKHNlbGYuX2J1Z19pZCwgIlN1Ym1p
dHRlZCB3ZWItcGxhdGZvcm0tdGVzdHMgcHVsbCByZXF1ZXN0OiAiICsgV1BUX1BSX1VSTCArIHN0
cihwcl9udW1iZXIpKQogCkBAIC0yMDMsMjkgKzMwOCwxNiBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIo
b2JqZWN0KToKICAgICAgICAgcmV0dXJuIHByX251bWJlcgogCiAgICAgZGVmIGRlbGV0ZV9sb2Nh
bF9icmFuY2goc2VsZik6Ci0gICAgICAgIF9sb2cuaW5mbygnUmVtb3ZpbmcgYnJhbmNoICcgKyBz
ZWxmLl9icmFuY2hfbmFtZSkKKyAgICAgICAgX2xvZy5pbmZvKCdSZW1vdmluZyBsb2NhbCBicmFu
Y2ggJyArIHNlbGYuX2JyYW5jaF9uYW1lKQogICAgICAgICBzZWxmLl9naXQuY2hlY2tvdXQoJ21h
c3RlcicpCiAgICAgICAgIHNlbGYuX2dpdC5kZWxldGVfYnJhbmNoKHNlbGYuX2JyYW5jaF9uYW1l
KQogCi0gICAgZGVmIGNyZWF0ZV9naXRfcGF0Y2goc2VsZik6Ci0gICAgICAgIHBhdGNoX2ZpbGUg
PSAnLi9wYXRjaC50ZW1wLicgKyBzdHIodGltZS5jbG9jaygpKQotICAgICAgICBnaXRfY29tbWl0
ID0gIkhFQUQuLi4uIiBpZiBub3Qgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0IGVsc2Ugc2VsZi5f
b3B0aW9ucy5naXRfY29tbWl0ICsgIn4xLi4iICsgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0Ci0g
ICAgICAgIHBhdGNoX2RhdGEgPSBzZWxmLl9ob3N0LnNjbSgpLmNyZWF0ZV9wYXRjaChnaXRfY29t
bWl0LCBbV0VCS0lUX1dQVF9ESVJdKQotICAgICAgICBpZiBub3QgcGF0Y2hfZGF0YSBvciBub3Qg
J2RpZmYnIGluIHBhdGNoX2RhdGE6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMg
dG8gdXBzdHJlYW0sIHBhdGNoIGRhdGEgaXM6ICIlcyInICUgKHBhdGNoX2RhdGEpKQotICAgICAg
ICAgICAgcmV0dXJuICcnCi0gICAgICAgICMgRklYTUU6IFdlIGNhbiBwcm9iYWJseSB0cnkgdG8g
dXNlIC0tcmVsYXRpdmUgZ2l0IHBhcmFtZXRlciB0byBub3QgZG8gdGhhdCByZXBsYWNlbWVudC4K
LSAgICAgICAgcGF0Y2hfZGF0YSA9IHBhdGNoX2RhdGEucmVwbGFjZShXRUJLSVRfV1BUX0RJUiAr
ICcvJywgJycpCi0gICAgICAgIHBhdGNoX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgo
cGF0Y2hfZmlsZSkKLSAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0
Y2hfZmlsZSwgcGF0Y2hfZGF0YSkKLSAgICAgICAgcmV0dXJuIHBhdGNoX2ZpbGUKLQogICAgIGRl
ZiBjcmVhdGVfdXBsb2FkX3JlbW90ZV9pZl9uZWVkZWQoc2VsZik6CiAgICAgICAgIGlmIG5vdCBz
ZWxmLl93cHRfZm9ya19yZW1vdGUgaW4gc2VsZi5fZ2l0LnJlbW90ZShbXSk6CiAgICAgICAgICAg
ICBzZWxmLl9naXQucmVtb3RlKFsiYWRkIiwgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlLCBzZWxmLl93
cHRfZm9ya19wdXNoX3VybF0pCiAKICAgICBkZWYgZG9fZXhwb3J0KHNlbGYpOgotICAgICAgICBn
aXRfcGF0Y2hfZmlsZSA9IHNlbGYuY3JlYXRlX2dpdF9wYXRjaCgpCisgICAgICAgIGdpdF9wYXRj
aF9maWxlID0gc2VsZi53cml0ZV9naXRfcGF0Y2hfZmlsZSgpCiAKICAgICAgICAgaWYgbm90IGdp
dF9wYXRjaF9maWxlOgogICAgICAgICAgICAgX2xvZy5lcnJvcigiVW5hYmxlIHRvIGNyZWF0ZSBh
IHBhdGNoIHRvIGFwcGx5IHRvIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5IikKQEAgLTI5
MCw2ICszODIsNyBAQCBkZWYgcGFyc2VfYXJncyhhcmdzKToKICAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCctdScsICctLXJlbW90ZS11cmwnLCBkZXN0PSdyZXBvc2l0b3J5X3JlbW90ZV91cmwnLCBk
ZWZhdWx0PU5vbmUsIGhlbHA9J3JlcG9zaXRvcnkgdXJsIHRvIHVzZSB0byBwdXNoJykKICAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsICctLXJlcG9zaXRvcnknLCBkZXN0PSdyZXBvc2l0b3J5
X2RpcmVjdG9yeScsIGRlZmF1bHQ9Tm9uZSwgaGVscD0ncmVwb3NpdG9yeSBkaXJlY3RvcnknKQog
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1jJywgJy0tY3JlYXRlLXByJywgZGVzdD0nY3JlYXRl
X3B1bGxfcmVxdWVzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9
J2NyZWF0ZSBwdWxsIHJlcXVlc3QgdG8gdzNjIHdlYi1wbGF0Zm9ybS10ZXN0cycpCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgnLS1ub24taW50ZXJhY3RpdmUnLCBhY3Rpb249J3N0b3JlX3RydWUn
LCBkZXN0PSdub25faW50ZXJhY3RpdmUnLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdOZXZlciBwcm9t
cHQgdGhlIHVzZXIsIGZhaWwgYXMgZmFzdCBhcyBwb3NzaWJsZS4nKQogCiAgICAgb3B0aW9ucywg
YXJncyA9IHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3MpCiAKQEAgLTMwNSw2ICszOTgsNyBA
QCBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICAgICAgICAgIHJldHVybiByZWNvcmQuZ2V0
TWVzc2FnZSgpCiAKICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2Via2l0cHkudzNj
LnRlc3RfZXhwb3J0ZXInKQorICAgIGxvZ2dlci5wcm9wYWdhdGUgPSBGYWxzZQogICAgIGxvZ2dl
ci5zZXRMZXZlbChsb2dnaW5nLklORk8pCiAgICAgaGFuZGxlciA9IExvZ0hhbmRsZXIoKQogICAg
IGhhbmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQpAQCAtMzE2LDcgKzQxMCwxMCBAQCBkZWYg
bWFpbihfYXJndiwgX3N0ZG91dCwgX3N0ZGVycik6CiAgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3Mo
X2FyZ3YpCiAKICAgICBjb25maWd1cmVfbG9nZ2luZygpCisgICAgdGVzdF9leHBvcnRlciA9IFdl
YlBsYXRmb3JtVGVzdEV4cG9ydGVyKEhvc3QoKSwgb3B0aW9ucykKIAotICAgIHRlc3RfZXhwb3J0
ZXIgPSBUZXN0RXhwb3J0ZXIoSG9zdCgpLCBvcHRpb25zKQorICAgIGlmIG5vdCB0ZXN0X2V4cG9y
dGVyLmhhc193cHRfY2hhbmdlcygpOgorICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8g
dXBzdHJlYW0uIEV4aXRpbmcuLi4nKQorICAgICAgICByZXR1cm4KIAogICAgIHRlc3RfZXhwb3J0
ZXIuZG9fZXhwb3J0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rl
c3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0
X2V4cG9ydGVyX3VuaXR0ZXN0LnB5CmluZGV4IGI4MzM0YTk0OWM2MTI4NjcyZTNjNDcyNGYxNjEw
M2MwNGY5Y2I5ODkuLjIwNmNkN2QwZWQ0NTAyMGEzNGM0ZGYzOTAyZTRiZjI5ODYyOWMwZjcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0
dGVzdC5weQpAQCAtMjUsNyArMjUsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHku
Y29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCi1mcm9t
IHdlYmtpdHB5LnczYy50ZXN0X2V4cG9ydGVyIGltcG9ydCBUZXN0RXhwb3J0ZXIsIHBhcnNlX2Fy
Z3MKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfZXhwb3J0ZXIgaW1wb3J0IFdlYlBsYXRmb3JtVGVz
dEV4cG9ydGVyLCBwYXJzZV9hcmdzCiBmcm9tIHdlYmtpdHB5LnczYy53cHRfZ2l0aHViX21vY2sg
aW1wb3J0IE1vY2tXUFRHaXRIdWIKIAogbW9ja19saW50ZXIgPSBOb25lCkBAIC0xMjIsOCArMTIy
LDkgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBk
ZWYgdGVzdF9leHBvcnQoc2VsZik6CiAgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15
TW9ja0hvc3QoKQorICAgICAgICBob3N0LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2Nv
ZGUnOiAyMDAsICdib2R5JzogJ3sibG9naW4iOiAiVVNFUiJ9J30pCiAgICAgICAgIG9wdGlvbnMg
PSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICctZycsICdIRUFEJywgJy1iJywgJzEy
MzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tFTiddKQotICAgICAgICBleHBvcnRl
ciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQs
IFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0
ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIGV4cG9ydGVyID0gV2ViUGxhdGZvcm1UZXN0
RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhw
b3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5N
b2NrV1BUTGludGVyKQogICAgICAgICBleHBvcnRlci5kb19leHBvcnQoKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhleHBvcnRlci5fZ2l0aHViLmNhbGxzLCBbJ2NyZWF0ZV9wcicsICdhZGRf
bGFiZWwgIndlYmtpdC1leHBvcnQiJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnV2ViS2l0
IGV4cG9ydCcgaW4gZXhwb3J0ZXIuX2dpdGh1Yi5wdWxsX3JlcXVlc3RzX2NyZWF0ZWRbMF1bMV0p
CkBAIC0xNTAsOCArMTUxLDkgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9leHBvcnRfd2l0aF9zcGVjaWZpY19icmFuY2goc2VsZik6
CiAgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQorICAgICAgICBo
b3N0LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUnOiAyMDAsICdib2R5JzogJ3si
bG9naW4iOiAiVVNFUiJ9J30pCiAgICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9l
eHBvcnRlci5weScsICctZycsICdIRUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNF
UicsICctdCcsICdUT0tFTicsICctYm4nLCAnd3B0LWV4cG9ydC1icmFuY2gnXSkKLSAgICAgICAg
ZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5N
b2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVz
dEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICBleHBvcnRlciA9IFdlYlBsYXRm
b3JtVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwg
VGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRl
clRlc3QuTW9ja1dQVExpbnRlcikKICAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwb3J0ZXIuX2dpdC5jYWxscywgWwogICAgICAgICAgICAg
Jy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0cy93ZWItcGxhdGZvcm0tdGVzdHMn
LApAQCAtMTY5LDMgKzE3MSwyOCBAQCBjbGFzcyBUZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgICAgICdkZWxldGUgYnJhbmNoIHdwdC1leHBvcnQtZm9yLXdlYmtp
dC0xMjM0JywKICAgICAgICAgICAgICdjaGVja291dCBtYXN0ZXInLAogICAgICAgICAgICAgJ3Jl
c2V0IGhhcmQgb3JpZ2luL21hc3RlciddKQorCisgICAgZGVmIHRlc3RfZXhwb3J0X2ludGVyYWN0
aXZlX21vZGUoc2VsZik6CisgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hv
c3QoKQorICAgICAgICBob3N0LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUnOiAy
MDAsICdib2R5JzogJ3sibG9naW4iOiAiVVNFUiJ9J30pCisgICAgICAgIG9wdGlvbnMgPSBwYXJz
ZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICctZycsICdIRUFEJywgJy1iJywgJzEyMzQnLCAn
LWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tFTicsICctLWludGVyYWN0aXZlJ10pCisgICAg
ICAgIGV4cG9ydGVyID0gV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgVGVz
dEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9j
a1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICBleHBv
cnRlci5kb19leHBvcnQoKQorCisgICAgZGVmIHRlc3RfZXhwb3J0X2ludmFsaWRfdG9rZW4oc2Vs
Zik6CisgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQorICAgICAg
ICBob3N0LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUnOiA0MDF9KQorICAgICAg
ICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcs
ICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nXSkKKyAgICAg
ICAgZXhwb3J0ZXIgPSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0
RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2Nr
V1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgorICAgICAgICAgICAgZXhw
b3J0ZXIuZG9fZXhwb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignT0F1dGggdG9rZW4gaXMg
bm90IHZhbGlkJywgc3RyKGNvbnRleHQuZXhjZXB0aW9uKSkKKworICAgIGRlZiB0ZXN0X2V4cG9y
dF93cm9uZ190b2tlbihzZWxmKToKKyAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlN
b2NrSG9zdCgpCisgICAgICAgIGhvc3Qud2ViLnJlc3BvbnNlcy5hcHBlbmQoeydzdGF0dXNfY29k
ZSc6IDIwMCwgJ2JvZHknOiAneyJsb2dpbiI6ICJESUZGX1VTRVIifSd9KQorICAgICAgICBvcHRp
b25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYics
ICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nXSkKKyAgICAgICAgZXhw
b3J0ZXIgPSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0
ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0
SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgorICAgICAgICAgICAgZXhwb3J0ZXIu
ZG9fZXhwb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignT0F1dGggdG9rZW4gZG9lcyBub3Qg
bWF0Y2ggdGhlIHByb3ZpZGVkIHVzZXJuYW1lJywgc3RyKGNvbnRleHQuZXhjZXB0aW9uKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340579</attachid>
            <date>2018-05-17 07:01:08 -0700</date>
            <delta_ts>2018-05-29 13:38:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184914-20180517100107.patch</filename>
            <type>text/plain</type>
            <size>27656</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNzAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWIwODI2NDAyMGE3YmJkYWNkYjlkY2ZiZWNiYjllYzc2
YTc3MTBkMS4uYmJjNTlhN2Y0Y2RjMzBmOWNmMTZjZGJjMmFiZTBmMzBmNTAwYTY4YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2
IEBACisyMDE4LTA1LTE1ICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgRXhwb3J0IGNoYW5nZXMgdG8gd2ViLXBsYXRmb3JtLXRlc3QgYXMgcGFydCBv
ZiB0aGUgd2Via2l0LXBhdGNoIHVwbG9hZCB3b3JrZmxvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5OgorICAgICAgICAoVXBsb2FkKToKKyAgICAgICAgKENyZWF0ZUJ1Zy5leGVj
dXRlKToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy93cHRjaGFuZ2VleHBvcnQucHk6IEFkZGVkLgorICAgICAgICAoV1BUQ2hhbmdl
RXhwb3J0KToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydC5vcHRpb25zKToKKyAgICAgICAgKFdQ
VENoYW5nZUV4cG9ydC5ydW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1v
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5Ogor
ICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIpOgorICAgICAgICAoV2ViUGxhdGZvcm1U
ZXN0RXhwb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIu
dXNlcm5hbWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIudG9rZW4pOgorICAg
ICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX2dpdGh1Yik6CisgICAgICAgIChXZWJQbGF0
Zm9ybVRlc3RFeHBvcnRlci5fd3B0X2ZvcmtfYnJhbmNoX2dpdGh1Yl91cmwpOgorICAgICAgICAo
V2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX3dwdF9mb3JrX3JlbW90ZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVRlc3RFeHBvcnRlci5fd3B0X2ZvcmtfcHVzaF91cmwpOgorICAgICAgICAoV2ViUGxh
dGZvcm1UZXN0RXhwb3J0ZXIuX2dpdCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRl
ci5fYnJhbmNoX25hbWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX3B1Ymxp
Y19icmFuY2hfbmFtZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5oYXNfd3B0
X2NoYW5nZXMpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX2NyZWF0ZV9wYXRj
aCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5jcmVhdGVfZ2l0X3BhdGNoKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl9wcm9tcHRfZm9yX3Rva2VuKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl9wcm9tcHRfZm9yX3VzZXJuYW1lKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2Vu
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl92YWxpZGF0ZV9hbmRfc2F2ZV90
b2tlbik6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5wdXNoX3RvX3dwdF9mb3Jr
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLm1ha2VfcHVsbF9yZXF1ZXN0KToK
KyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLmRlbGV0ZV9sb2NhbF9icmFuY2gpOgor
ICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIpOiBEZWxldGVkLgor
ICAgICAgICAoVGVzdEV4cG9ydGVyLl9faW5pdF9fKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RF
eHBvcnRlci5fZW5zdXJlX3dwdF9yZXBvc2l0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RF
eHBvcnRlci5fZmV0Y2hfd3B0X3JlcG9zaXRvcnkpOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4
cG9ydGVyLl9lbnN1cmVfbmV3X2JyYW5jaF9uYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RF
eHBvcnRlci5kb3dubG9hZF9hbmRfY29tbWl0X3BhdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFRl
c3RFeHBvcnRlci5jbGVhbik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIuY3JlYXRl
X2JyYW5jaF93aXRoX3BhdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5wdXNo
X3RvX3dwdF9mb3JrKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5tYWtlX3B1bGxf
cmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIuY3JlYXRlX3dwdF9wdWxs
X3JlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmRlbGV0ZV9sb2NhbF9i
cmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNyZWF0ZV9naXRfcGF0Y2gp
OiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNyZWF0ZV91cGxvYWRfcmVtb3RlX2lm
X25lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIuZG9fZXhwb3J0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0
ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0X2V4cG9ydCk6CisgICAgICAg
IChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X3dpdGhfc3BlY2lmaWNfYnJhbmNoKToKKyAg
ICAgICAgKFRlc3RFeHBvcnRlclRlc3QpOgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0
X2V4cG9ydF9pbnRlcmFjdGl2ZV9tb2RlKToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVz
dF9leHBvcnRfaW52YWxpZF90b2tlbik6CisgICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3Rf
ZXhwb3J0X3dyb25nX3Rva2VuKToKKwogMjAxOC0wNS0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ11bR0xJQl0gQWRkIGludHJvc3Bl
Y3RhYmxlIGFsdGVybmF0aXZlcyB0byBmdW5jdGlvbnMgdXNpbmcgdmFyZ2FycwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggOTMzZGIyZDA4
NTIwZDg2MGM1MjgzZjdhZjQ5NmZhMWI5NDIxNTMwMy4uY2QxNDNhODJhMWE5MzE5MDVlODYxNjNl
ZjgyYTkzZTBhNWE3MmRhNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3VwbG9hZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5CkBAIC0yODYsNiArMjg2LDcgQEAgY2xhc3MgVXBsb2FkKEFic3RyYWN0
UGF0Y2hVcGxvYWRpbmdDb21tYW5kKToKICAgICAgICAgc3RlcHMuRW5zdXJlQnVnSXNPcGVuQW5k
QXNzaWduZWQsCiAgICAgICAgIHN0ZXBzLlBvc3REaWZmLAogICAgICAgICBzdGVwcy5TdWJtaXRU
b0VXUywKKyAgICAgICAgc3RlcHMuV1BUQ2hhbmdlRXhwb3J0LAogICAgIF0KICAgICBsb25nX2hl
bHAgPSAiIiJ1cGxvYWQgdXBsb2FkcyB0aGUgY3VycmVudCBkaWZmIHRvIGJ1Z3Mud2Via2l0Lm9y
Zy4KICAgICBJZiBubyBidWcgaWQgaXMgcHJvdmlkZWQsIHVwbG9hZCB3aWxsIGNyZWF0ZSBhIGJ1
Zy4KQEAgLTUzMSwzICs1MzIsMjUgQEAgY2xhc3MgQ3JlYXRlQnVnKENvbW1hbmQpOgogICAgICAg
ICAgICAgc2VsZi5jcmVhdGVfYnVnX2Zyb21fY29tbWl0KG9wdGlvbnMsIGFyZ3MsIHRvb2wpCiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9idWdfZnJvbV9wYXRjaChvcHRp
b25zLCBhcmdzLCB0b29sKQorCisKK2NsYXNzIFdQVENoYW5nZUV4cG9ydChBYnN0cmFjdFBhdGNo
VXBsb2FkaW5nQ29tbWFuZCk6CisgICAgbmFtZSA9ICJ3cHQtY2hhbmdlLWV4cG9ydCIKKyAgICBo
ZWxwX3RleHQgPSAiT3BlbnMgYSBwdWxsIHJlcXVlc3QgdG8gc3luY2hyb25pemUgYW55IGNoYW5n
ZXMgaW4gdGhlIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMgZGly
ZWN0b3J5IgorICAgIGFyZ3VtZW50X25hbWVzID0gIltCVUdJRF0iCisgICAgc3RlcHMgPSBbCisg
ICAgICAgIHN0ZXBzLldQVENoYW5nZUV4cG9ydCwKKyAgICBdCisKKyAgICBsb25nX2hlbHAgPSAi
IiJPcGVucyBhIHB1bGwgcmVxdWVzdCB0byB0aGUgdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cworICAg
IGdpdGh1YiByZXBvIGZvciBhbnkgY2hhbmdlcyBpbiB0aGUKKyAgICBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzIGRpcmVjdG9yeS4gVGhpcyBzdGVwCisgICAgd2ls
bCBub29wIGlmIHRoZXJlIGFyZSBubyBjaGFuZ2VzIGluIHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMg
ZGlyZWN0b3J5LgorICAgIFRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gcHJvdmlkZSBhIGdp
dGh1YiB1c2VybmFtZSBhbmQgT0F1dGggdG9rZW4KKyAgICB0aGUgZmlyc3QgdGltZSB0aGlzIGlz
IHJ1bi4KKyAgICAiIiIKKworICAgIGRlZiBfcHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBh
cmdzLCB0b29sKToKKyAgICAgICAgc3RhdGUgPSB7fQorICAgICAgICBzdGF0ZVsiYnVnX2lkIl0g
PSBzZWxmLl9idWdfaWQob3B0aW9ucywgYXJncywgdG9vbCwgc3RhdGUpCisgICAgICAgIHJldHVy
biBzdGF0ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19f
aW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5
CmluZGV4IGYzYzE3MGUzMTJlZGQ3ODY0ZjlkODVhZDljNzc1OWYyYmM5MWM5M2YuLmRjMDc4NGY2
MTUxZThhZmY4Nzk0YTY5MDc2ZDdlN2ZjMmM4ZmNhOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKQEAgLTY2LDMgKzY2LDQgQEAgZnJvbSB3ZWJr
aXRweS50b29sLnN0ZXBzLnVwZGF0ZSBpbXBvcnQgVXBkYXRlCiBmcm9tIHdlYmtpdHB5LnRvb2wu
c3RlcHMudXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlciBpbXBvcnQgVXBkYXRlQ2hhbmdlTG9n
c1dpdGhSZXZpZXdlcgogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnZhbGlkYXRlY2hhbmdlbG9n
cyBpbXBvcnQgVmFsaWRhdGVDaGFuZ2VMb2dzCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudmFs
aWRhdGVyZXZpZXdlciBpbXBvcnQgVmFsaWRhdGVSZXZpZXdlcgorZnJvbSB3ZWJraXRweS50b29s
LnN0ZXBzLndwdGNoYW5nZWV4cG9ydCBpbXBvcnQgV1BUQ2hhbmdlRXhwb3J0CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvd3B0Y2hhbmdlZXhwb3J0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3dwdGNoYW5nZWV4cG9ydC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MjI1ZmViZGI4ZmEyNGYwZDQ1ZGNmY2EyZDM2NTg5OTg3MjY5YWNkCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3dwdGNoYW5nZWV4
cG9ydC5weQpAQCAtMCwwICsxLDU0IEBACisjIENvcHlyaWdodCAoYykgMjAxOCwgQm9jb3VwIExM
Qy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisj
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBT
Y3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQg
QWJzdHJhY3RTdGVwCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0
aW9ucworZnJvbSB3ZWJraXRweS53M2MudGVzdF9leHBvcnRlciBpbXBvcnQgV2ViUGxhdGZvcm1U
ZXN0RXhwb3J0ZXIsIHBhcnNlX2FyZ3MKKworCitjbGFzcyBXUFRDaGFuZ2VFeHBvcnQoQWJzdHJh
Y3RTdGVwKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgorICAgICAg
ICByZXR1cm4gQWJzdHJhY3RTdGVwLm9wdGlvbnMoKSArIFsKKyAgICAgICAgICAgIE9wdGlvbnMu
bm9uX2ludGVyYWN0aXZlLAorICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAorICAgICAg
ICBdCisKKyAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5ub25faW50ZXJhY3RpdmU6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBidWdfaWQg
PSBzdGF0ZS5nZXQoImJ1Z19pZCIpCisgICAgICAgIGlmIG5vdCBidWdfaWQ6CisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBhcmdzID0gWyItLWJ1ZyIsIHN0cihidWdfaWQpLCAiLS1jcmVh
dGUtcHIiXQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdDoKKyAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKCItLWdpdC1jb21taXQiKQorICAgICAgICAgICAgYXJncy5hcHBlbmQo
c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KQorCisgICAgICAgIHRlc3RfZXhwb3J0ZXIgPSBXZWJQ
bGF0Zm9ybVRlc3RFeHBvcnRlcihzZWxmLl90b29sLCBwYXJzZV9hcmdzKGFyZ3MpKQorICAgICAg
ICBtZXNzYWdlID0gJ1dvdWxkIHlvdSBsaWtlIHRvIGV4cG9ydCB0aGUgd2ViLXBsYXRmb3JtLXRl
c3RzIGNoYW5nZXMgdG8gYSBXUFQgR2l0SHViIHJlcG9zaXRvcnk/JworICAgICAgICBpZiB0ZXN0
X2V4cG9ydGVyLmhhc193cHRfY2hhbmdlcygpIGFuZCBzZWxmLl90b29sLnVzZXIuY29uZmlybSht
ZXNzYWdlKToKKyAgICAgICAgICAgIHRlc3RfZXhwb3J0ZXIuZG9fZXhwb3J0KCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1vbi5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL2NvbW1vbi5weQppbmRleCBhMTRhYTk1MzU0YjkwNjczOTQxMDE3NmMxYjAz
NzhjN2Q3MjM1MzMyLi42NmZhMzRmMmE3ZTlhZjE3Mzc2YjY0M2NiNGMxYTY0YTk4ODhiMjBmIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9jb21tb24ucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5CkBAIC0zMCwxMCArMzAsMTEgQEAKIAog
aW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKIAogCi1XUFRfR0hfT1JHID0g
J3czYycKLVdQVF9HSF9SRVBPX05BTUUgPSAnd2ViLXBsYXRmb3JtLXRlc3RzJworV1BUX0dIX09S
RyA9IG9zLmVudmlyb24uZ2V0KCdXUFRfR0hfT1JHJywgJ3czYycpCitXUFRfR0hfUkVQT19OQU1F
ID0gb3MuZW52aXJvbi5nZXQoJ1dQVF9HSF9SRVBPX05BTUUnLCAnd2ViLXBsYXRmb3JtLXRlc3Rz
JykKIFdQVF9HSF9VUkwgPSAnaHR0cHM6Ly9naXRodWIuY29tLyVzLyVzLycgJSAoV1BUX0dIX09S
RywgV1BUX0dIX1JFUE9fTkFNRSkKIFdQVF9NSVJST1JfVVJMID0gJ2h0dHBzOi8vY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9leHRlcm5hbC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCcKIFdQ
VF9HSF9TU0hfVVJMX1RFTVBMQVRFID0gJ2h0dHBzOi8ve31AZ2l0aHViLmNvbS8lcy8lcy5naXQn
ICUgKFdQVF9HSF9PUkcsIFdQVF9HSF9SRVBPX05BTUUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvdGVzdF9leHBvcnRlci5weQppbmRleCA2YTljYTViYjcyYzFmODQ4MzA2NDgwMzgzMmIy
ZWI3NTUxMTljYTZjLi5jYjc2YTVlYmM4Y2ZlMTQyOWVhOTdkYmUwMTdjN2RiOWM0ZDFiNTZiIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKQEAgLTI4LDYg
KzI4LDggQEAgaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBv
cnQgdGltZQoraW1wb3J0IGpzb24KK2Zyb20gdXJsbGliMiBpbXBvcnQgSFRUUEVycm9yCiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5naXQgaW1wb3J0IEdpdAogZnJvbSB3ZWJr
aXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdApAQCAtMzUsMTYgKzM3LDE3IEBAIGZyb20gd2Vi
a2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEKIGZyb20gd2Via2l0cHku
Y29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgogZnJvbSB3ZWJraXRweS53
M2Mud3B0X2dpdGh1YiBpbXBvcnQgV1BUR2l0SHViCiBmcm9tIHdlYmtpdHB5LnczYy53cHRfbGlu
dGVyIGltcG9ydCBXUFRMaW50ZXIKK2Zyb20gd2Via2l0cHkudzNjLmNvbW1vbiBpbXBvcnQgV1BU
X0dIX09SRworZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiAK
IF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogV0VCS0lUX1dQVF9ESVIgPSAn
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cycKLVdQVF9QUl9VUkwg
PSAiaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcHVsbC8iCitXUFRf
UFJfVVJMID0gImh0dHBzOi8vZ2l0aHViLmNvbS8lcy93ZWItcGxhdGZvcm0tdGVzdHMvcHVsbC8i
ICUgV1BUX0dIX09SRwogV0VCS0lUX0VYUE9SVF9QUl9MQUJFTCA9ICd3ZWJraXQtZXhwb3J0Jwog
CiAKLWNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgotCitjbGFzcyBXZWJQbGF0Zm9ybVRlc3RF
eHBvcnRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBvcHRpb25zLCBn
aXRDbGFzcz1HaXQsIGJ1Z3ppbGxhQ2xhc3M9QnVnemlsbGEsIFdQVEdpdEh1YkNsYXNzPVdQVEdp
dEh1YiwgV1BUTGludGVyQ2xhc3M9V1BUTGludGVyKToKICAgICAgICAgc2VsZi5faG9zdCA9IGhv
c3QKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGhvc3QuZmlsZXN5c3RlbQpAQCAtNTIsNiAr
NTUsOCBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKIAogICAgICAgICBzZWxmLl9ob3N0
LmluaXRpYWxpemVfc2NtKCkKIAorICAgICAgICBzZWxmLl9XUFRHaXRIdWJDbGFzcyA9IFdQVEdp
dEh1YkNsYXNzCisgICAgICAgIHNlbGYuX2dpdENsYXNzID0gZ2l0Q2xhc3MKICAgICAgICAgc2Vs
Zi5fYnVnemlsbGEgPSBidWd6aWxsYUNsYXNzKCkKICAgICAgICAgc2VsZi5fYnVnX2lkID0gb3B0
aW9ucy5idWdfaWQKICAgICAgICAgaWYgbm90IHNlbGYuX2J1Z19pZDoKQEAgLTY0LDQ1ICs2OSwx
NDcgQEAgY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAgICB3ZWJraXRfZmlu
ZGVyID0gV2ViS2l0RmluZGVyKHNlbGYuX2ZpbGVzeXN0ZW0pCiAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnJlcG9zaXRvcnlfZGlyZWN0b3J5ID0gd2Via2l0X2ZpbmRlci5wYXRoX2Zyb21fd2Vi
a2l0X2Jhc2UoJ1dlYktpdEJ1aWxkJywgJ3czYy10ZXN0cycsICd3ZWItcGxhdGZvcm0tdGVzdHMn
KQogCi0gICAgICAgIHNlbGYuX2dpdCA9IHNlbGYuX2Vuc3VyZV93cHRfcmVwb3NpdG9yeSgiaHR0
cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0Iiwgc2VsZi5fb3B0aW9u
cy5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgZ2l0Q2xhc3MpCiAgICAgICAgIHNlbGYuX2xpbnRlciA9
IFdQVExpbnRlckNsYXNzKHNlbGYuX29wdGlvbnMucmVwb3NpdG9yeV9kaXJlY3RvcnksIGhvc3Qu
ZmlsZXN5c3RlbSkKIAorICAgICAgICBzZWxmLl9idWd6aWxsYV91cmwgPSAiaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPSIgKyBzdHIoc2VsZi5fYnVnX2lkKQorICAgICAg
ICBzZWxmLl9jb21taXRfbWVzc2FnZSA9IG9wdGlvbnMubWVzc2FnZQorICAgICAgICBpZiBub3Qg
c2VsZi5fY29tbWl0X21lc3NhZ2U6CisgICAgICAgICAgICBzZWxmLl9jb21taXRfbWVzc2FnZSA9
ICdXZWJLaXQgZXhwb3J0IG9mICcgKyBzZWxmLl9idWd6aWxsYV91cmwgaWYgc2VsZi5fYnVnX2lk
IGVsc2UgJ0V4cG9ydCBtYWRlIGZyb20gYSBXZWJLaXQgcmVwb3NpdG9yeScKKworICAgIEBwcm9w
ZXJ0eQorICAgIGRlZiB1c2VybmFtZShzZWxmKToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAn
X3VzZXJuYW1lJyk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fdXNlcm5hbWUKKworICAgICAg
ICBzZWxmLl9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2VuKHNlbGYuX29wdGlvbnMpCisgICAgICAg
IHJldHVybiBzZWxmLl91c2VybmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHRva2VuKHNl
bGYpOgorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfdG9rZW4nKToKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLl90b2tlbgorCisgICAgICAgIHNlbGYuX2Vuc3VyZV91c2VybmFtZV9hbmRfdG9r
ZW4oc2VsZi5fb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rva2VuCisKKyAgICBAcHJv
cGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX2dpdGh1YihzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuX1dQVEdpdEh1YkNsYXNzKHNlbGYuX2hvc3QsIHNlbGYudXNlcm5hbWUsIHNlbGYu
dG9rZW4pIGlmIHNlbGYudXNlcm5hbWUgYW5kIHNlbGYudG9rZW4gZWxzZSBOb25lCisKKyAgICBA
cHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX3dwdF9mb3JrX2JyYW5jaF9naXRodWJf
dXJsKHNlbGYpOgorICAgICAgICByZXR1cm4gImh0dHBzOi8vZ2l0aHViLmNvbS8iICsgc2VsZi51
c2VybmFtZSArICIvd2ViLXBsYXRmb3JtLXRlc3RzL3RyZWUvIiArIHNlbGYuX3B1YmxpY19icmFu
Y2hfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgQG1lbW9pemVkCisgICAgZGVmIF93cHRfZm9y
a19yZW1vdGUoc2VsZik6CisgICAgICAgIHdwdF9mb3JrX3JlbW90ZSA9IHNlbGYuX29wdGlvbnMu
cmVwb3NpdG9yeV9yZW1vdGUKKyAgICAgICAgaWYgbm90IHdwdF9mb3JrX3JlbW90ZToKKyAgICAg
ICAgICAgIHdwdF9mb3JrX3JlbW90ZSA9IHNlbGYudXNlcm5hbWUKKworICAgICAgICByZXR1cm4g
d3B0X2ZvcmtfcmVtb3RlCisKKyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYg
X3dwdF9mb3JrX3B1c2hfdXJsKHNlbGYpOgorICAgICAgICB3cHRfZm9ya19wdXNoX3VybCA9IHNl
bGYuX29wdGlvbnMucmVwb3NpdG9yeV9yZW1vdGVfdXJsCisgICAgICAgIGlmIG5vdCB3cHRfZm9y
a19wdXNoX3VybDoKKyAgICAgICAgICAgIHdwdF9mb3JrX3B1c2hfdXJsID0gImh0dHBzOi8vIiAr
IHNlbGYudXNlcm5hbWUgKyAiQGdpdGh1Yi5jb20vIiArIHNlbGYudXNlcm5hbWUgKyAiL3dlYi1w
bGF0Zm9ybS10ZXN0cy5naXQiCisKKyAgICAgICAgcmV0dXJuIHdwdF9mb3JrX3B1c2hfdXJsCisK
KyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX2dpdChzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2Vuc3VyZV93cHRfcmVwb3NpdG9yeSgiaHR0cHM6Ly9naXRodWIuY29t
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0Iiwgc2VsZi5fb3B0aW9ucy5yZXBvc2l0b3J5X2Rp
cmVjdG9yeSwgc2VsZi5fZ2l0Q2xhc3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQK
KyAgICBkZWYgX2JyYW5jaF9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZW5zdXJl
X25ld19icmFuY2hfbmFtZSgpCisKKyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBk
ZWYgX3B1YmxpY19icmFuY2hfbmFtZShzZWxmKToKKyAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29w
dGlvbnMKKyAgICAgICAgcmV0dXJuIG9wdGlvbnMucHVibGljX2JyYW5jaF9uYW1lIGlmIG9wdGlv
bnMucHVibGljX2JyYW5jaF9uYW1lIGVsc2Ugc2VsZi5fYnJhbmNoX25hbWUKKworICAgIEBwcm9w
ZXJ0eQorICAgIEBtZW1vaXplZAorICAgIGRlZiBfd3B0X3BhdGNoKHNlbGYpOgorICAgICAgICBw
YXRjaF9kYXRhID0gc2VsZi5faG9zdC5zY20oKS5jcmVhdGVfcGF0Y2goc2VsZi5fb3B0aW9ucy5n
aXRfY29tbWl0LCBbV0VCS0lUX1dQVF9ESVJdKQorICAgICAgICBpZiBub3QgcGF0Y2hfZGF0YSBv
ciBub3QgJ2RpZmYnIGluIHBhdGNoX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gJycKKyAgICAg
ICAgcmV0dXJuIHBhdGNoX2RhdGEKKworICAgIGRlZiBoYXNfd3B0X2NoYW5nZXMoc2VsZik6Cisg
ICAgICAgIHJldHVybiBib29sKHNlbGYuX3dwdF9wYXRjaCkKKworICAgIGRlZiB3cml0ZV9naXRf
cGF0Y2hfZmlsZShzZWxmKToKKyAgICAgICAgXywgcGF0Y2hfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0
ZW0ub3Blbl9iaW5hcnlfdGVtcGZpbGUoJ3dwdF9leHBvcnRfcGF0Y2gnKQorICAgICAgICBwYXRj
aF9kYXRhID0gc2VsZi5fd3B0X3BhdGNoCisgICAgICAgIGlmIG5vdCAnZGlmZicgaW4gcGF0Y2hf
ZGF0YToKKyAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gY2hhbmdlcyB0byB1cHN0cmVhbSwgcGF0
Y2ggZGF0YSBpczogIiVzIicgJSAocGF0Y2hfZGF0YSkpCisgICAgICAgICAgICByZXR1cm4gJycK
KyAgICAgICAgIyBGSVhNRTogV2UgY2FuIHByb2JhYmx5IHRyeSB0byB1c2UgLS1yZWxhdGl2ZSBn
aXQgcGFyYW1ldGVyIHRvIG5vdCBkbyB0aGF0IHJlcGxhY2VtZW50LgorICAgICAgICBwYXRjaF9k
YXRhID0gcGF0Y2hfZGF0YS5yZXBsYWNlKFdFQktJVF9XUFRfRElSICsgJy8nLCAnJykKKyAgICAg
ICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0Y2hfZmlsZSwgcGF0Y2hfZGF0
YSkKKyAgICAgICAgcmV0dXJuIHBhdGNoX2ZpbGUKKworICAgIGRlZiBfcHJvbXB0X2Zvcl90b2tl
bihzZWxmLCBvcHRpb25zKToKKyAgICAgICAgaWYgb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6Cisg
ICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5faG9zdC51c2VyLnBy
b21wdF9wYXNzd29yZCgnRW50ZXIgR2l0SHViIE9BdXRoIHRva2VuIChvciBlbXB0eSBzdHJpbmcg
dG8gc2tpcCBjcmVhdGluZyBhIHB1bGwgcmVxdWVzdCk6ICcpCisKKyAgICBkZWYgX3Byb21wdF9m
b3JfdXNlcm5hbWUoc2VsZiwgb3B0aW9ucyk6CisgICAgICAgIGlmIG9wdGlvbnMubm9uX2ludGVy
YWN0aXZlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hv
c3QudXNlci5wcm9tcHQoJ0VudGVyIHlvdXIgR2l0SHViIHVzZXJuYW1lOiAnKQorCisgICAgZGVm
IF9lbnN1cmVfdXNlcm5hbWVfYW5kX3Rva2VuKHNlbGYsIG9wdGlvbnMpOgogICAgICAgICBzZWxm
Ll91c2VybmFtZSA9IG9wdGlvbnMudXNlcm5hbWUKICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJu
YW1lOgorICAgICAgICAgICAgIyBGSVhNRTogVXNlIHRoZSBrZXljaGFpbiB0byBzdG9yZSB1c2Vy
bmFtZSBhbmQgb2F1dGggdG9rZW4gaW5zdGVhZCBvZiAuZ2l0L2NvbmZpZwogICAgICAgICAgICAg
c2VsZi5fdXNlcm5hbWUgPSBzZWxmLl9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUn
KS5yc3RyaXAoKQogICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VzZXJuYW1lOgogICAgICAgICAg
ICAgICAgIHNlbGYuX3VzZXJuYW1lID0gb3MuZW52aXJvbi5nZXQoJ0dJVEhVQl9VU0VSTkFNRScp
CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fdXNlcm5hbWUgPSBzZWxmLl9wcm9tcHRfZm9yX3VzZXJuYW1lKG9wdGlvbnMpCiAgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiTWlzc2luZyBHaXRIdWIgdXNlcm5hbWUsIHBsZWFzZSBwcm92aWRlIGl0IGFzIGEgY29t
bWFuZCBhcmd1bWVudCAoc2VlIGhlbHAgZm9yIHRoZSBjb21tYW5kKS4iKQotICAgICAgICBlbGlm
IG5vdCBzZWxmLl9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnKToKLSAgICAgICAg
ICAgIHNlbGYuX2dpdC5zZXRfbG9jYWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnLCBzZWxmLl91
c2VybmFtZSkKIAogICAgICAgICBzZWxmLl90b2tlbiA9IG9wdGlvbnMudG9rZW4KICAgICAgICAg
aWYgbm90IHNlbGYuX3Rva2VuOgogICAgICAgICAgICAgc2VsZi5fdG9rZW4gPSBzZWxmLl9naXQu
bG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nKS5yc3RyaXAoKQogICAgICAgICAgICAgaWYgbm90
IHNlbGYuX3Rva2VuOgogICAgICAgICAgICAgICAgIHNlbGYuX3Rva2VuID0gb3MuZW52aXJvbi5n
ZXQoJ0dJVEhVQl9UT0tFTicpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46CisgICAg
ICAgICAgICAgICAgc2VsZi5fdG9rZW4gPSBzZWxmLl9wcm9tcHRfZm9yX3Rva2VuKG9wdGlvbnMp
CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46CiAgICAgICAgICAgICAgICAgX2xvZy5p
bmZvKCJNaXNzaW5nIEdpdEh1YiB0b2tlbiwgdGhlIHNjcmlwdCB3aWxsIG5vdCBiZSBhYmxlIHRv
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCB0byBXM0Mgd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRv
cnkuIikKLSAgICAgICAgZWxpZiBub3Qgc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnRv
a2VuJyk6Ci0gICAgICAgICAgICBzZWxmLl9naXQuc2V0X2xvY2FsX2NvbmZpZygnZ2l0aHViLnRv
a2VuJywgc2VsZi5fdG9rZW4pCiAKLSAgICAgICAgc2VsZi5fZ2l0aHViID0gV1BUR2l0SHViQ2xh
c3Moc2VsZi5faG9zdCwgc2VsZi5fdXNlcm5hbWUsIHNlbGYuX3Rva2VuKSBpZiBzZWxmLl91c2Vy
bmFtZSBhbmQgc2VsZi5fdG9rZW4gZWxzZSBOb25lCisgICAgICAgIGlmIHNlbGYuX3Rva2VuOgor
ICAgICAgICAgICAgc2VsZi5fdmFsaWRhdGVfYW5kX3NhdmVfdG9rZW4oc2VsZi5fdXNlcm5hbWUs
IHNlbGYuX3Rva2VuKQogCi0gICAgICAgIHNlbGYuX2JyYW5jaF9uYW1lID0gc2VsZi5fZW5zdXJl
X25ld19icmFuY2hfbmFtZSgpCi0gICAgICAgIHNlbGYuX3B1YmxpY19icmFuY2hfbmFtZSA9IG9w
dGlvbnMucHVibGljX2JyYW5jaF9uYW1lIGlmIG9wdGlvbnMucHVibGljX2JyYW5jaF9uYW1lIGVs
c2Ugc2VsZi5fYnJhbmNoX25hbWUKLSAgICAgICAgc2VsZi5fYnVnemlsbGFfdXJsID0gImh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0iICsgc3RyKHNlbGYuX2J1Z19pZCkK
LSAgICAgICAgc2VsZi5fY29tbWl0X21lc3NhZ2UgPSBvcHRpb25zLm1lc3NhZ2UKLSAgICAgICAg
aWYgbm90IHNlbGYuX2NvbW1pdF9tZXNzYWdlOgotICAgICAgICAgICAgc2VsZi5fY29tbWl0X21l
c3NhZ2UgPSAnV2ViS2l0IGV4cG9ydCBvZiAnICsgc2VsZi5fYnVnemlsbGFfdXJsIGlmIHNlbGYu
X2J1Z19pZCBlbHNlICdFeHBvcnQgbWFkZSBmcm9tIGEgV2ViS2l0IHJlcG9zaXRvcnknCi0KLSAg
ICAgICAgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlID0gb3B0aW9ucy5yZXBvc2l0b3J5X3JlbW90ZQot
ICAgICAgICBpZiBub3Qgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlOgotICAgICAgICAgICAgc2VsZi5f
d3B0X2ZvcmtfcmVtb3RlID0gc2VsZi5fdXNlcm5hbWUKLQotICAgICAgICBzZWxmLl93cHRfZm9y
a19wdXNoX3VybCA9IG9wdGlvbnMucmVwb3NpdG9yeV9yZW1vdGVfdXJsCi0gICAgICAgIGlmIG5v
dCBzZWxmLl93cHRfZm9ya19wdXNoX3VybDoKLSAgICAgICAgICAgIHNlbGYuX3dwdF9mb3JrX3B1
c2hfdXJsID0gImh0dHBzOi8vIiArIHNlbGYuX3VzZXJuYW1lICsgIkBnaXRodWIuY29tLyIgKyBz
ZWxmLl91c2VybmFtZSArICIvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCIKKyAgICBkZWYgX3ZhbGlk
YXRlX2FuZF9zYXZlX3Rva2VuKHNlbGYsIHVzZXJuYW1lLCB0b2tlbik6CisgICAgICAgIHVybCA9
ICdodHRwczovL2FwaS5naXRodWIuY29tL3VzZXI/YWNjZXNzX3Rva2VuPSVzJyAlICh0b2tlbiwp
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5faG9zdC53ZWIucmVx
dWVzdChtZXRob2Q9J0dFVCcsIHVybD11cmwsIGRhdGE9Tm9uZSkKKyAgICAgICAgZXhjZXB0IEhU
VFBFcnJvciBhcyBlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJPQXV0aCB0b2tlbiBp
cyBub3QgdmFsaWQiKQorICAgICAgICBkYXRhID0ganNvbi5sb2FkKHJlc3BvbnNlKQorICAgICAg
ICBsb2dpbiA9IGRhdGEuZ2V0KCdsb2dpbicsIE5vbmUpCisgICAgICAgIGlmIGxvZ2luICE9IHVz
ZXJuYW1lOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJPQXV0aCB0b2tlbiBkb2VzIG5v
dCBtYXRjaCB0aGUgcHJvdmlkZWQgdXNlcm5hbWUuIFByb3ZpZGVkIHVzZXI6ICVzLCBnaXRodWIg
bG9naW46ICVzIiAlICh1c2VybmFtZSwgbG9naW4pKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgIyBVc2VybmFtZSBhbmQgdG9rZW4gYXJlIHZhbGlkLiBTYXZlIHRoZW0gaW4gdGhlIGdpdCBj
b25maWcgc28gd2UKKyAgICAgICAgICAgICMgZG8gbm90IG5lZWQgdG8gYXNrIGZvciB0aGVtIGFn
YWluCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnRv
a2VuJyk6CisgICAgICAgICAgICAgICAgc2VsZi5fZ2l0LnNldF9sb2NhbF9jb25maWcoJ2dpdGh1
Yi50b2tlbicsIHRva2VuKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2dpdC5sb2NhbF9jb25m
aWcoJ2dpdGh1Yi51c2VybmFtZScpOgorICAgICAgICAgICAgICAgIHNlbGYuX2dpdC5zZXRfbG9j
YWxfY29uZmlnKCdnaXRodWIudXNlcm5hbWUnLCB1c2VybmFtZSkKIAogICAgIGRlZiBfZW5zdXJl
X3dwdF9yZXBvc2l0b3J5KHNlbGYsIHVybCwgd3B0X3JlcG9zaXRvcnlfZGlyZWN0b3J5LCBnaXRD
bGFzcyk6CiAgICAgICAgIGdpdCA9IE5vbmUKQEAgLTE2NiwxNiArMjczLDE1IEBAIGNsYXNzIFRl
c3RFeHBvcnRlcihvYmplY3QpOgogCiAgICAgZGVmIHB1c2hfdG9fd3B0X2Zvcmsoc2VsZik6CiAg
ICAgICAgIHNlbGYuY3JlYXRlX3VwbG9hZF9yZW1vdGVfaWZfbmVlZGVkKCkKLSAgICAgICAgd3B0
X2ZvcmtfYnJhbmNoX2dpdGh1Yl91cmwgPSAiaHR0cHM6Ly9naXRodWIuY29tLyIgKyBzZWxmLl91
c2VybmFtZSArICIvd2ViLXBsYXRmb3JtLXRlc3RzL3RyZWUvIiArIHNlbGYuX3B1YmxpY19icmFu
Y2hfbmFtZQogICAgICAgICBfbG9nLmluZm8oJ1B1c2hpbmcgYnJhbmNoICcgKyBzZWxmLl9icmFu
Y2hfbmFtZSArICIgdG8gIiArIHNlbGYuX2dpdC5yZW1vdGUoWyJnZXQtdXJsIiwgc2VsZi5fd3B0
X2ZvcmtfcmVtb3RlXSkucnN0cmlwKCkpCiAgICAgICAgIF9sb2cuaW5mbygnVGhpcyBtYXkgdGFr
ZSBzb21lIHRpbWUnKQogICAgICAgICBzZWxmLl9naXQucHVzaChbc2VsZi5fd3B0X2ZvcmtfcmVt
b3RlLCBzZWxmLl9icmFuY2hfbmFtZSArICI6IiArIHNlbGYuX3B1YmxpY19icmFuY2hfbmFtZSwg
Jy1mJ10pCi0gICAgICAgIF9sb2cuaW5mbygnQnJhbmNoIGF2YWlsYWJsZSBhdCAnICsgd3B0X2Zv
cmtfYnJhbmNoX2dpdGh1Yl91cmwpCisgICAgICAgIF9sb2cuaW5mbygnQnJhbmNoIGF2YWlsYWJs
ZSBhdCAnICsgc2VsZi5fd3B0X2ZvcmtfYnJhbmNoX2dpdGh1Yl91cmwpCiAgICAgICAgIHJldHVy
biBUcnVlCiAKICAgICBkZWYgbWFrZV9wdWxsX3JlcXVlc3Qoc2VsZik6CiAgICAgICAgIGlmIG5v
dCBzZWxmLl9naXRodWI6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJ01pc3NpbmcgaW5mb3JtYXRp
b24gdG8gY3JlYXRlIGEgcHVsbCByZXF1ZXN0JykKKyAgICAgICAgICAgIF9sb2cuaW5mbygnU2tp
cHBpbmcgcHVsbCByZXF1ZXN0IGJlY2F1c2UgT0F1dGggdG9rZW4gd2FzIG5vdCBwcm92aWRlZC4g
WW91IGNhbiBvcGVuIHRoZSBwdWxsIHJlcXVlc3QgbWFudWFsbHkgdXNpbmcgdGhlIGJyYW5jaCAn
ICsgc2VsZi5fd3B0X2ZvcmtfYnJhbmNoX2dpdGh1Yl91cmwpCiAgICAgICAgICAgICByZXR1cm4K
IAogICAgICAgICBfbG9nLmluZm8oJ01ha2luZyBwdWxsIHJlcXVlc3QnKQpAQCAtMTg2LDcgKzI5
Miw3IEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYu
X2dpdGh1Yi5hZGRfbGFiZWwocHJfbnVtYmVyLCBXRUJLSVRfRVhQT1JUX1BSX0xBQkVMKQogICAg
ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgIF9sb2cud2Fy
bmluZyhlKQotICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnQ291bGQgbm90IGFkZCBsYWJlbCAi
JXMiIHRvIHByICMlcy4gVXNlciAiJXMiIG1heSBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHVwZGF0
ZSBsYWJlbHMgaW4gdGhlIHczYy93ZWItcGxhdGZvcm0tdGVzdCByZXBvLicgJSAoV0VCS0lUX0VY
UE9SVF9QUl9MQUJFTCwgcHJfbnVtYmVyLCBzZWxmLl91c2VybmFtZSkpCisgICAgICAgICAgICAg
ICAgX2xvZy5pbmZvKCdDb3VsZCBub3QgYWRkIGxhYmVsICIlcyIgdG8gcHIgIyVzLiBVc2VyICIl
cyIgbWF5IG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gdXBkYXRlIGxhYmVscyBpbiB0aGUgdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0IHJlcG8uJyAlIChXRUJLSVRfRVhQT1JUX1BSX0xBQkVMLCBwcl9udW1i
ZXIsIHNlbGYudXNlcm5hbWUpKQogICAgICAgICBpZiBzZWxmLl9idWdfaWQgYW5kIHByX251bWJl
cjoKICAgICAgICAgICAgIHNlbGYuX2J1Z3ppbGxhLnBvc3RfY29tbWVudF90b19idWcoc2VsZi5f
YnVnX2lkLCAiU3VibWl0dGVkIHdlYi1wbGF0Zm9ybS10ZXN0cyBwdWxsIHJlcXVlc3Q6ICIgKyBX
UFRfUFJfVVJMICsgc3RyKHByX251bWJlcikpCiAKQEAgLTIwMywyOSArMzA5LDE2IEBAIGNsYXNz
IFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICByZXR1cm4gcHJfbnVtYmVyCiAKICAgICBk
ZWYgZGVsZXRlX2xvY2FsX2JyYW5jaChzZWxmKToKLSAgICAgICAgX2xvZy5pbmZvKCdSZW1vdmlu
ZyBicmFuY2ggJyArIHNlbGYuX2JyYW5jaF9uYW1lKQorICAgICAgICBfbG9nLmluZm8oJ1JlbW92
aW5nIGxvY2FsIGJyYW5jaCAnICsgc2VsZi5fYnJhbmNoX25hbWUpCiAgICAgICAgIHNlbGYuX2dp
dC5jaGVja291dCgnbWFzdGVyJykKICAgICAgICAgc2VsZi5fZ2l0LmRlbGV0ZV9icmFuY2goc2Vs
Zi5fYnJhbmNoX25hbWUpCiAKLSAgICBkZWYgY3JlYXRlX2dpdF9wYXRjaChzZWxmKToKLSAgICAg
ICAgcGF0Y2hfZmlsZSA9ICcuL3BhdGNoLnRlbXAuJyArIHN0cih0aW1lLmNsb2NrKCkpCi0gICAg
ICAgIGdpdF9jb21taXQgPSAiSEVBRC4uLi4iIGlmIG5vdCBzZWxmLl9vcHRpb25zLmdpdF9jb21t
aXQgZWxzZSBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQgKyAifjEuLiIgKyBzZWxmLl9vcHRpb25z
LmdpdF9jb21taXQKLSAgICAgICAgcGF0Y2hfZGF0YSA9IHNlbGYuX2hvc3Quc2NtKCkuY3JlYXRl
X3BhdGNoKGdpdF9jb21taXQsIFtXRUJLSVRfV1BUX0RJUl0pCi0gICAgICAgIGlmIG5vdCBwYXRj
aF9kYXRhIG9yIG5vdCAnZGlmZicgaW4gcGF0Y2hfZGF0YToKLSAgICAgICAgICAgIF9sb2cuaW5m
bygnTm8gY2hhbmdlcyB0byB1cHN0cmVhbSwgcGF0Y2ggZGF0YSBpczogIiVzIicgJSAocGF0Y2hf
ZGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgIyBGSVhNRTogV2UgY2FuIHBy
b2JhYmx5IHRyeSB0byB1c2UgLS1yZWxhdGl2ZSBnaXQgcGFyYW1ldGVyIHRvIG5vdCBkbyB0aGF0
IHJlcGxhY2VtZW50LgotICAgICAgICBwYXRjaF9kYXRhID0gcGF0Y2hfZGF0YS5yZXBsYWNlKFdF
QktJVF9XUFRfRElSICsgJy8nLCAnJykKLSAgICAgICAgcGF0Y2hfZmlsZSA9IHNlbGYuX2ZpbGVz
eXN0ZW0uYWJzcGF0aChwYXRjaF9maWxlKQotICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRl
X3RleHRfZmlsZShwYXRjaF9maWxlLCBwYXRjaF9kYXRhKQotICAgICAgICByZXR1cm4gcGF0Y2hf
ZmlsZQotCiAgICAgZGVmIGNyZWF0ZV91cGxvYWRfcmVtb3RlX2lmX25lZWRlZChzZWxmKToKICAg
ICAgICAgaWYgbm90IHNlbGYuX3dwdF9mb3JrX3JlbW90ZSBpbiBzZWxmLl9naXQucmVtb3RlKFtd
KToKICAgICAgICAgICAgIHNlbGYuX2dpdC5yZW1vdGUoWyJhZGQiLCBzZWxmLl93cHRfZm9ya19y
ZW1vdGUsIHNlbGYuX3dwdF9mb3JrX3B1c2hfdXJsXSkKIAogICAgIGRlZiBkb19leHBvcnQoc2Vs
Zik6Ci0gICAgICAgIGdpdF9wYXRjaF9maWxlID0gc2VsZi5jcmVhdGVfZ2l0X3BhdGNoKCkKKyAg
ICAgICAgZ2l0X3BhdGNoX2ZpbGUgPSBzZWxmLndyaXRlX2dpdF9wYXRjaF9maWxlKCkKIAogICAg
ICAgICBpZiBub3QgZ2l0X3BhdGNoX2ZpbGU6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJVbmFi
bGUgdG8gY3JlYXRlIGEgcGF0Y2ggdG8gYXBwbHkgdG8gd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9z
aXRvcnkiKQpAQCAtMjkwLDYgKzM4Myw3IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3MpOgogICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoJy11JywgJy0tcmVtb3RlLXVybCcsIGRlc3Q9J3JlcG9zaXRvcnlf
cmVtb3RlX3VybCcsIGRlZmF1bHQ9Tm9uZSwgaGVscD0ncmVwb3NpdG9yeSB1cmwgdG8gdXNlIHRv
IHB1c2gnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1kJywgJy0tcmVwb3NpdG9yeScsIGRl
c3Q9J3JlcG9zaXRvcnlfZGlyZWN0b3J5JywgZGVmYXVsdD1Ob25lLCBoZWxwPSdyZXBvc2l0b3J5
IGRpcmVjdG9yeScpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jcmVhdGUtcHIn
LCBkZXN0PSdjcmVhdGVfcHVsbF9yZXF1ZXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVs
dD1GYWxzZSwgaGVscD0nY3JlYXRlIHB1bGwgcmVxdWVzdCB0byB3M2Mgd2ViLXBsYXRmb3JtLXRl
c3RzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5vbi1pbnRlcmFjdGl2ZScsIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J25vbl9pbnRlcmFjdGl2ZScsIGRlZmF1bHQ9RmFsc2UsIGhl
bHA9J05ldmVyIHByb21wdCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0IGFzIHBvc3NpYmxlLicpCiAK
ICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoYXJncykKIApAQCAt
MzA1LDYgKzM5OSw3IEBAIGRlZiBjb25maWd1cmVfbG9nZ2luZygpOgogICAgICAgICAgICAgcmV0
dXJuIHJlY29yZC5nZXRNZXNzYWdlKCkKIAogICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCd3ZWJraXRweS53M2MudGVzdF9leHBvcnRlcicpCisgICAgbG9nZ2VyLnByb3BhZ2F0ZSA9IEZh
bHNlCiAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKICAgICBoYW5kbGVyID0gTG9n
SGFuZGxlcigpCiAgICAgaGFuZGxlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCkBAIC0zMTYsNyAr
NDExLDEwIEBAIGRlZiBtYWluKF9hcmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKICAgICBvcHRpb25z
ID0gcGFyc2VfYXJncyhfYXJndikKIAogICAgIGNvbmZpZ3VyZV9sb2dnaW5nKCkKKyAgICB0ZXN0
X2V4cG9ydGVyID0gV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIoSG9zdCgpLCBvcHRpb25zKQogCi0g
ICAgdGVzdF9leHBvcnRlciA9IFRlc3RFeHBvcnRlcihIb3N0KCksIG9wdGlvbnMpCisgICAgaWYg
bm90IHRlc3RfZXhwb3J0ZXIuaGFzX3dwdF9jaGFuZ2VzKCk6CisgICAgICAgIF9sb2cuaW5mbygn
Tm8gY2hhbmdlcyB0byB1cHN0cmVhbS4gRXhpdGluZy4uLicpCisgICAgICAgIHJldHVybgogCiAg
ICAgdGVzdF9leHBvcnRlci5kb19leHBvcnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkKaW5kZXggYjgzMzRhOTQ5YzYxMjg2
NzJlM2M0NzI0ZjE2MTAzYzA0ZjljYjk4OS4uMjA2Y2Q3ZDBlZDQ1MDIwYTM0YzRkZjM5MDJlNGJm
Mjk4NjI5YzBmNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9l
eHBvcnRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0
X2V4cG9ydGVyX3VuaXR0ZXN0LnB5CkBAIC0yNSw3ICsyNSw3IEBAIGltcG9ydCB1bml0dGVzdAog
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0K
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4
ZWN1dGl2ZTIKLWZyb20gd2Via2l0cHkudzNjLnRlc3RfZXhwb3J0ZXIgaW1wb3J0IFRlc3RFeHBv
cnRlciwgcGFyc2VfYXJncworZnJvbSB3ZWJraXRweS53M2MudGVzdF9leHBvcnRlciBpbXBvcnQg
V2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIsIHBhcnNlX2FyZ3MKIGZyb20gd2Via2l0cHkudzNjLndw
dF9naXRodWJfbW9jayBpbXBvcnQgTW9ja1dQVEdpdEh1YgogCiBtb2NrX2xpbnRlciA9IE5vbmUK
QEAgLTEyMiw4ICsxMjIsOSBAQCBjbGFzcyBUZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKIAogICAgIGRlZiB0ZXN0X2V4cG9ydChzZWxmKToKICAgICAgICAgaG9zdCA9IFRlc3RF
eHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAgIGhvc3Qud2ViLnJlc3BvbnNlcy5hcHBl
bmQoeydzdGF0dXNfY29kZSc6IDIwMCwgJ2JvZHknOiAneyJsb2dpbiI6ICJVU0VSIn0nfSkKICAg
ICAgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hF
QUQnLCAnLWInLCAnMTIzNCcsICctYycsICctbicsICdVU0VSJywgJy10JywgJ1RPS0VOJ10pCi0g
ICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIFRlc3RFeHBvcnRl
clRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRI
dWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikKKyAgICAgICAgZXhwb3J0ZXIgPSBX
ZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1v
Y2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0
RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCiAgICAgICAgIGV4cG9ydGVyLmRvX2V4cG9ydCgp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cG9ydGVyLl9naXRodWIuY2FsbHMsIFsnY3Jl
YXRlX3ByJywgJ2FkZF9sYWJlbCAid2Via2l0LWV4cG9ydCInXSkKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCdXZWJLaXQgZXhwb3J0JyBpbiBleHBvcnRlci5fZ2l0aHViLnB1bGxfcmVxdWVzdHNf
Y3JlYXRlZFswXVsxXSkKQEAgLTE1MCw4ICsxNTEsOSBAQCBjbGFzcyBUZXN0RXhwb3J0ZXJUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2V4cG9ydF93aXRoX3NwZWNpZmlj
X2JyYW5jaChzZWxmKToKICAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9z
dCgpCisgICAgICAgIGhvc3Qud2ViLnJlc3BvbnNlcy5hcHBlbmQoeydzdGF0dXNfY29kZSc6IDIw
MCwgJ2JvZHknOiAneyJsb2dpbiI6ICJVU0VSIn0nfSkKICAgICAgICAgb3B0aW9ucyA9IHBhcnNl
X2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICct
YycsICctbicsICdVU0VSJywgJy10JywgJ1RPS0VOJywgJy1ibicsICd3cHQtZXhwb3J0LWJyYW5j
aCddKQotICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0
RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2Nr
V1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIGV4cG9y
dGVyID0gV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVy
VGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1
YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQogICAgICAgICBleHBvcnRlci5kb19l
eHBvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBvcnRlci5fZ2l0LmNhbGxzLCBb
CiAgICAgICAgICAgICAnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3dlYi1w
bGF0Zm9ybS10ZXN0cycsCkBAIC0xNjksMyArMTcxLDI4IEBAIGNsYXNzIFRlc3RFeHBvcnRlclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgJ2RlbGV0ZSBicmFuY2ggd3B0LWV4
cG9ydC1mb3Itd2Via2l0LTEyMzQnLAogICAgICAgICAgICAgJ2NoZWNrb3V0IG1hc3RlcicsCiAg
ICAgICAgICAgICAncmVzZXQgaGFyZCBvcmlnaW4vbWFzdGVyJ10pCisKKyAgICBkZWYgdGVzdF9l
eHBvcnRfaW50ZXJhY3RpdmVfbW9kZShzZWxmKToKKyAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRl
clRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAgIGhvc3Qud2ViLnJlc3BvbnNlcy5hcHBlbmQoeydz
dGF0dXNfY29kZSc6IDIwMCwgJ2JvZHknOiAneyJsb2dpbiI6ICJVU0VSIn0nfSkKKyAgICAgICAg
b3B0aW9ucyA9IHBhcnNlX2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAn
LWInLCAnMTIzNCcsICctYycsICctbicsICdVU0VSJywgJy10JywgJ1RPS0VOJywgJy0taW50ZXJh
Y3RpdmUnXSkKKyAgICAgICAgZXhwb3J0ZXIgPSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihob3N0
LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9j
a0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIp
CisgICAgICAgIGV4cG9ydGVyLmRvX2V4cG9ydCgpCisKKyAgICBkZWYgdGVzdF9leHBvcnRfaW52
YWxpZF90b2tlbihzZWxmKToKKyAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2Nr
SG9zdCgpCisgICAgICAgIGhvc3Qud2ViLnJlc3BvbnNlcy5hcHBlbmQoeydzdGF0dXNfY29kZSc6
IDQwMX0pCisgICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScs
ICctZycsICdIRUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdU
T0tFTiddKQorICAgICAgICBleHBvcnRlciA9IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKGhvc3Qs
IG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2Nr
QnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikK
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGNvbnRleHQ6Cisg
ICAgICAgICAgICBleHBvcnRlci5kb19leHBvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEluKCdP
QXV0aCB0b2tlbiBpcyBub3QgdmFsaWQnLCBzdHIoY29udGV4dC5leGNlcHRpb24pKQorCisgICAg
ZGVmIHRlc3RfZXhwb3J0X3dyb25nX3Rva2VuKHNlbGYpOgorICAgICAgICBob3N0ID0gVGVzdEV4
cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC53ZWIucmVzcG9uc2VzLmFwcGVu
ZCh7J3N0YXR1c19jb2RlJzogMjAwLCAnYm9keSc6ICd7ImxvZ2luIjogIkRJRkZfVVNFUiJ9J30p
CisgICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICctZycs
ICdIRUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tFTidd
KQorICAgICAgICBleHBvcnRlciA9IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlv
bnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemls
bGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGNvbnRleHQ6CisgICAgICAg
ICAgICBleHBvcnRlci5kb19leHBvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEluKCdPQXV0aCB0
b2tlbiBkb2VzIG5vdCBtYXRjaCB0aGUgcHJvdmlkZWQgdXNlcm5hbWUnLCBzdHIoY29udGV4dC5l
eGNlcHRpb24pKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341510</attachid>
            <date>2018-05-29 13:38:20 -0700</date>
            <delta_ts>2018-05-29 13:47:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184914-20180529163819.patch</filename>
            <type>text/plain</type>
            <size>32290</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWEyNWU1NzM5YTViZmQ2YWY3ZTdhNWI4NGJiYjBlNGMw
Y2UzZTgyNi4uZDBhZTE3NDhlMzZhYWIxOWFiMTU3ZWFiMzZlZWQxMWE5YTk2M2QxOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3
IEBACisyMDE4LTA1LTI5ICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgRXhwb3J0IGNoYW5nZXMgdG8gd2ViLXBsYXRmb3JtLXRlc3QgYXMgcGFydCBv
ZiB0aGUgd2Via2l0LXBhdGNoIHVwbG9hZCB3b3JrZmxvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5OgorICAgICAgICAoVXBsb2FkKToKKyAgICAgICAgKENyZWF0ZUJ1Zy5leGVj
dXRlKToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy93cHRjaGFuZ2VleHBvcnQucHk6IEFkZGVkLgorICAgICAgICAoV1BUQ2hhbmdl
RXhwb3J0KToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydC5vcHRpb25zKToKKyAgICAgICAgKFdQ
VENoYW5nZUV4cG9ydC5ydW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1v
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5Ogor
ICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIpOgorICAgICAgICAoV2ViUGxhdGZvcm1U
ZXN0RXhwb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIu
dXNlcm5hbWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIudG9rZW4pOgorICAg
ICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX2dpdGh1Yik6CisgICAgICAgIChXZWJQbGF0
Zm9ybVRlc3RFeHBvcnRlci5fd3B0X2ZvcmtfYnJhbmNoX2dpdGh1Yl91cmwpOgorICAgICAgICAo
V2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX3dwdF9mb3JrX3JlbW90ZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVRlc3RFeHBvcnRlci5fd3B0X2ZvcmtfcHVzaF91cmwpOgorICAgICAgICAoV2ViUGxh
dGZvcm1UZXN0RXhwb3J0ZXIuX2dpdCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRl
ci5fYnJhbmNoX25hbWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX3B1Ymxp
Y19icmFuY2hfbmFtZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fd3B0X3Bh
dGNoKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLmhhc193cHRfY2hhbmdlcyk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fZmluZF9maWxlbmFtZSk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5faXNfaWdub3JlZF9maWxlKToKKyAgICAgICAg
KFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl9zdHJpcF9pZ25vcmVkX2ZpbGVzX2Zyb21fZGlmZik6
CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci53cml0ZV9naXRfcGF0Y2hfZmlsZSk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fcHJvbXB0X2Zvcl90b2tlbik6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fcHJvbXB0X2Zvcl91c2VybmFtZSk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fZW5zdXJlX3VzZXJuYW1lX2FuZF90b2tl
bik6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fdmFsaWRhdGVfYW5kX3NhdmVf
dG9rZW4pOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuY3JlYXRlX2JyYW5jaF93
aXRoX3BhdGNoKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLnB1c2hfdG9fd3B0
X2ZvcmspOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIubWFrZV9wdWxsX3JlcXVl
c3QpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuZGVsZXRlX2xvY2FsX2JyYW5j
aCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5jcmVhdGVfdXBsb2FkX3JlbW90
ZV9pZl9uZWVkZWQpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuZG9fZXhwb3J0
KToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorICAgICAgICAoVGVzdEV4cG9ydGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5fX2luaXRfXyk6IERlbGV0ZWQuCisgICAgICAgIChU
ZXN0RXhwb3J0ZXIuX2Vuc3VyZV93cHRfcmVwb3NpdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChU
ZXN0RXhwb3J0ZXIuX2ZldGNoX3dwdF9yZXBvc2l0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFRl
c3RFeHBvcnRlci5fZW5zdXJlX25ld19icmFuY2hfbmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChU
ZXN0RXhwb3J0ZXIuZG93bmxvYWRfYW5kX2NvbW1pdF9wYXRjaCk6IERlbGV0ZWQuCisgICAgICAg
IChUZXN0RXhwb3J0ZXIuY2xlYW4pOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNy
ZWF0ZV9icmFuY2hfd2l0aF9wYXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIu
cHVzaF90b193cHRfZm9yayk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIubWFrZV9w
dWxsX3JlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNyZWF0ZV93cHRf
cHVsbF9yZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5kZWxldGVfbG9j
YWxfYnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5jcmVhdGVfZ2l0X3Bh
dGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5jcmVhdGVfdXBsb2FkX3JlbW90
ZSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIuZG9fZXhwb3J0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5
OgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0KToKKyAgICAgICAgKFRlc3RFeHBv
cnRlclRlc3QuTW9ja0dpdC5jcmVhdGVfcGF0Y2gpOgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVz
dC50ZXN0X2V4cG9ydCk6CisgICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X3dp
dGhfc3BlY2lmaWNfYnJhbmNoKToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QpOgorICAgICAg
ICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0X2V4cG9ydF9pbnRlcmFjdGl2ZV9tb2RlKToKKyAgICAg
ICAgKFRlc3RFeHBvcnRlclRlc3QudGVzdF9leHBvcnRfaW52YWxpZF90b2tlbik6CisgICAgICAg
IChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X3dyb25nX3Rva2VuKToKKyAgICAgICAgKFRl
c3RFeHBvcnRlclRlc3QudGVzdF9oYXNfd3B0X2NoYW5nZXMpOgorICAgICAgICAoVGVzdEV4cG9y
dGVyVGVzdC50ZXN0X2hhc19ub193cHRfY2hhbmdlc19mb3Jfbm9fZGlmZik6CisgICAgICAgIChU
ZXN0RXhwb3J0ZXJUZXN0LnRlc3RfaWdub3JlX2NoYW5nZXNfdG9fZXhwZWN0ZWRfZmlsZSk6CisK
IDIwMTgtMDUtMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5hYmxlIHRvIHJlbW92ZSBJbmRleGVkREIgRGF0YWJhc2VzIHdpdGggQ29jb2EgQVBJIHJlbW92
ZURhdGFPZlR5cGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3Vw
bG9hZC5weQppbmRleCA5MzNkYjJkMDg1MjBkODYwYzUyODNmN2FmNDk2ZmExYjk0MjE1MzAzLi5j
ZDE0M2E4MmExYTkzMTkwNWU4NjE2M2VmODJhOTNlMGE1YTcyZGE0IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKQEAgLTI4Niw2ICsyODYsNyBA
QCBjbGFzcyBVcGxvYWQoQWJzdHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgogICAgICAgICBz
dGVwcy5FbnN1cmVCdWdJc09wZW5BbmRBc3NpZ25lZCwKICAgICAgICAgc3RlcHMuUG9zdERpZmYs
CiAgICAgICAgIHN0ZXBzLlN1Ym1pdFRvRVdTLAorICAgICAgICBzdGVwcy5XUFRDaGFuZ2VFeHBv
cnQsCiAgICAgXQogICAgIGxvbmdfaGVscCA9ICIiInVwbG9hZCB1cGxvYWRzIHRoZSBjdXJyZW50
IGRpZmYgdG8gYnVncy53ZWJraXQub3JnLgogICAgIElmIG5vIGJ1ZyBpZCBpcyBwcm92aWRlZCwg
dXBsb2FkIHdpbGwgY3JlYXRlIGEgYnVnLgpAQCAtNTMxLDMgKzUzMiwyNSBAQCBjbGFzcyBDcmVh
dGVCdWcoQ29tbWFuZCk6CiAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9idWdfZnJvbV9jb21taXQo
b3B0aW9ucywgYXJncywgdG9vbCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuY3Jl
YXRlX2J1Z19mcm9tX3BhdGNoKG9wdGlvbnMsIGFyZ3MsIHRvb2wpCisKKworY2xhc3MgV1BUQ2hh
bmdlRXhwb3J0KEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21tYW5kKToKKyAgICBuYW1lID0gIndw
dC1jaGFuZ2UtZXhwb3J0IgorICAgIGhlbHBfdGV4dCA9ICJPcGVucyBhIHB1bGwgcmVxdWVzdCB0
byBzeW5jaHJvbml6ZSBhbnkgY2hhbmdlcyBpbiB0aGUgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkiCisgICAgYXJndW1lbnRfbmFtZXMgPSAiW0JV
R0lEXSIKKyAgICBzdGVwcyA9IFsKKyAgICAgICAgc3RlcHMuV1BUQ2hhbmdlRXhwb3J0LAorICAg
IF0KKworICAgIGxvbmdfaGVscCA9ICIiIk9wZW5zIGEgcHVsbCByZXF1ZXN0IHRvIHRoZSB3M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzCisgICAgZ2l0aHViIHJlcG8gZm9yIGFueSBjaGFuZ2VzIGluIHRo
ZQorICAgIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMgZGlyZWN0
b3J5LiBUaGlzIHN0ZXAKKyAgICB3aWxsIG5vb3AgaWYgdGhlcmUgYXJlIG5vIGNoYW5nZXMgaW4g
dGhlIHdlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkuCisgICAgVGhlIHVzZXIgd2lsbCBiZSBw
cm9tcHRlZCB0byBwcm92aWRlIGEgZ2l0aHViIHVzZXJuYW1lIGFuZCBPQXV0aCB0b2tlbgorICAg
IHRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgcnVuLgorICAgICIiIgorCisgICAgZGVmIF9wcmVwYXJl
X3N0YXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgorICAgICAgICBzdGF0ZSA9IHt9Cisg
ICAgICAgIHN0YXRlWyJidWdfaWQiXSA9IHNlbGYuX2J1Z19pZChvcHRpb25zLCBhcmdzLCB0b29s
LCBzdGF0ZSkKKyAgICAgICAgcmV0dXJuIHN0YXRlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKaW5kZXggZjNjMTcwZTMxMmVkZDc4NjRmOWQ4NWFkOWM3
NzU5ZjJiYzkxYzkzZi4uZGMwNzg0ZjYxNTFlOGFmZjg3OTRhNjkwNzZkN2U3ZmMyYzhmY2E5MSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQpAQCAt
NjYsMyArNjYsNCBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudXBkYXRlIGltcG9ydCBVcGRh
dGUKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy51cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2Vy
IGltcG9ydCBVcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmlld2VyCiBmcm9tIHdlYmtpdHB5LnRvb2wu
c3RlcHMudmFsaWRhdGVjaGFuZ2Vsb2dzIGltcG9ydCBWYWxpZGF0ZUNoYW5nZUxvZ3MKIGZyb20g
d2Via2l0cHkudG9vbC5zdGVwcy52YWxpZGF0ZXJldmlld2VyIGltcG9ydCBWYWxpZGF0ZVJldmll
d2VyCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMud3B0Y2hhbmdlZXhwb3J0IGltcG9ydCBXUFRD
aGFuZ2VFeHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy93cHRjaGFuZ2VleHBvcnQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
d3B0Y2hhbmdlZXhwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMjVmZWJkYjhmYTI0ZjBkNDVkY2ZjYTJk
MzY1ODk5ODcyNjlhY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvd3B0Y2hhbmdlZXhwb3J0LnB5CkBAIC0wLDAgKzEsNTQgQEAKKyMgQ29weXJp
Z2h0IChjKSAyMDE4LCBCb2NvdXAgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LnRvb2wuc3Rl
cHMuYWJzdHJhY3RzdGVwIGltcG9ydCBBYnN0cmFjdFN0ZXAKK2Zyb20gd2Via2l0cHkudG9vbC5z
dGVwcy5vcHRpb25zIGltcG9ydCBPcHRpb25zCitmcm9tIHdlYmtpdHB5LnczYy50ZXN0X2V4cG9y
dGVyIGltcG9ydCBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlciwgcGFyc2VfYXJncworCisKK2NsYXNz
IFdQVENoYW5nZUV4cG9ydChBYnN0cmFjdFN0ZXApOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiBvcHRpb25zKGNscyk6CisgICAgICAgIHJldHVybiBBYnN0cmFjdFN0ZXAub3B0aW9ucygpICsg
WworICAgICAgICAgICAgT3B0aW9ucy5ub25faW50ZXJhY3RpdmUsCisgICAgICAgICAgICBPcHRp
b25zLmdpdF9jb21taXQsCisgICAgICAgIF0KKworICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgor
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKKyAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgIGJ1Z19pZCA9IHN0YXRlLmdldCgiYnVnX2lkIikKKyAgICAgICAgaWYg
bm90IGJ1Z19pZDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGFyZ3MgPSBbIi0tYnVn
Iiwgc3RyKGJ1Z19pZCksICItLWNyZWF0ZS1wciJdCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5naXRfY29tbWl0OgorICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZ2l0LWNvbW1pdCIpCisg
ICAgICAgICAgICBhcmdzLmFwcGVuZChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpCisKKyAgICAg
ICAgdGVzdF9leHBvcnRlciA9IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKHNlbGYuX3Rvb2wsIHBh
cnNlX2FyZ3MoYXJncykpCisgICAgICAgIG1lc3NhZ2UgPSAnV291bGQgeW91IGxpa2UgdG8gZXhw
b3J0IHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyB0byBhIFdQVCBHaXRIdWIgcmVwb3Np
dG9yeT8nCisgICAgICAgIGlmIHRlc3RfZXhwb3J0ZXIuaGFzX3dwdF9jaGFuZ2VzKCkgYW5kIHNl
bGYuX3Rvb2wudXNlci5jb25maXJtKG1lc3NhZ2UpOgorICAgICAgICAgICAgdGVzdF9leHBvcnRl
ci5kb19leHBvcnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29t
bW9uLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5CmluZGV4IGExNGFh
OTUzNTRiOTA2NzM5NDEwMTc2YzFiMDM3OGM3ZDcyMzUzMzIuLjY2ZmEzNGYyYTdlOWFmMTczNzZi
NjQzY2I0YzFhNjRhOTg4OGIyMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL2NvbW1vbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9jb21tb24ucHkK
QEAgLTMwLDEwICszMCwxMSBAQAogCiBpbXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKK2ltcG9y
dCBvcwogCiAKLVdQVF9HSF9PUkcgPSAndzNjJwotV1BUX0dIX1JFUE9fTkFNRSA9ICd3ZWItcGxh
dGZvcm0tdGVzdHMnCitXUFRfR0hfT1JHID0gb3MuZW52aXJvbi5nZXQoJ1dQVF9HSF9PUkcnLCAn
dzNjJykKK1dQVF9HSF9SRVBPX05BTUUgPSBvcy5lbnZpcm9uLmdldCgnV1BUX0dIX1JFUE9fTkFN
RScsICd3ZWItcGxhdGZvcm0tdGVzdHMnKQogV1BUX0dIX1VSTCA9ICdodHRwczovL2dpdGh1Yi5j
b20vJXMvJXMvJyAlIChXUFRfR0hfT1JHLCBXUFRfR0hfUkVQT19OQU1FKQogV1BUX01JUlJPUl9V
UkwgPSAnaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2V4dGVybmFsL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMuZ2l0JwogV1BUX0dIX1NTSF9VUkxfVEVNUExBVEUgPSAnaHR0cHM6Ly97
fUBnaXRodWIuY29tLyVzLyVzLmdpdCcgJSAoV1BUX0dIX09SRywgV1BUX0dIX1JFUE9fTkFNRSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5CmluZGV4IDI2MTUw
M2Y4ZTNlZGQxODkzNDc0YjRjYjI0MTAzMTM5N2QyZTgyNzQuLmY3NjJkZTQ2NDdjNDcyZmJlNjBj
ZmU3NDc0Y2Y2ODU2OWZmYjcxYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfZXhwb3J0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9leHBvcnRlci5weQpAQCAtMjgsNiArMjgsOCBAQCBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBs
b2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCB0aW1lCitpbXBvcnQganNvbgorZnJvbSB1cmxsaWIy
IGltcG9ydCBIVFRQRXJyb3IKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmdp
dCBpbXBvcnQgR2l0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CkBAIC0z
NSwxNiArMzcsMTkgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBC
dWd6aWxsYQogZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0
RmluZGVyCiBmcm9tIHdlYmtpdHB5LnczYy53cHRfZ2l0aHViIGltcG9ydCBXUFRHaXRIdWIKIGZy
b20gd2Via2l0cHkudzNjLndwdF9saW50ZXIgaW1wb3J0IFdQVExpbnRlcgorZnJvbSB3ZWJraXRw
eS53M2MuY29tbW9uIGltcG9ydCBXUFRfR0hfT1JHCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1v
aXplZCBpbXBvcnQgbWVtb2l6ZWQKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQogCiBXRUJLSVRfV1BUX0RJUiA9ICdMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzJwotV1BUX1BSX1VSTCA9ICJodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9wdWxsLyIKK1dQVF9QUl9VUkwgPSAiaHR0cHM6Ly9naXRodWIuY29tLyVzL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9wdWxsLyIgJSBXUFRfR0hfT1JHCiBXRUJLSVRfRVhQT1JUX1BSX0xB
QkVMID0gJ3dlYmtpdC1leHBvcnQnCiAKK0VYQ0xVREVEX0ZJTEVfU1VGRklYRVMgPSBbJy1leHBl
Y3RlZC50eHQnLCAnLndvcmtlci5odG1sJywgJy5hbnkuaHRtbCcsICcuYW55Lndvcmtlci5odG1s
J10KIAotY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAKK2NsYXNzIFdlYlBsYXRmb3JtVGVz
dEV4cG9ydGVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIG9wdGlvbnMs
IGdpdENsYXNzPUdpdCwgYnVnemlsbGFDbGFzcz1CdWd6aWxsYSwgV1BUR2l0SHViQ2xhc3M9V1BU
R2l0SHViLCBXUFRMaW50ZXJDbGFzcz1XUFRMaW50ZXIpOgogICAgICAgICBzZWxmLl9ob3N0ID0g
aG9zdAogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gaG9zdC5maWxlc3lzdGVtCkBAIC01Miw2
ICs1Nyw4IEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogCiAgICAgICAgIHNlbGYuX2hv
c3QuaW5pdGlhbGl6ZV9zY20oKQogCisgICAgICAgIHNlbGYuX1dQVEdpdEh1YkNsYXNzID0gV1BU
R2l0SHViQ2xhc3MKKyAgICAgICAgc2VsZi5fZ2l0Q2xhc3MgPSBnaXRDbGFzcwogICAgICAgICBz
ZWxmLl9idWd6aWxsYSA9IGJ1Z3ppbGxhQ2xhc3MoKQogICAgICAgICBzZWxmLl9idWdfaWQgPSBv
cHRpb25zLmJ1Z19pZAogICAgICAgICBpZiBub3Qgc2VsZi5fYnVnX2lkOgpAQCAtNjQsNDUgKzcx
LDE3MiBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgIHdlYmtpdF9m
aW5kZXIgPSBXZWJLaXRGaW5kZXIoc2VsZi5fZmlsZXN5c3RlbSkKICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMucmVwb3NpdG9yeV9kaXJlY3RvcnkgPSB3ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93
ZWJraXRfYmFzZSgnV2ViS2l0QnVpbGQnLCAndzNjLXRlc3RzJywgJ3dlYi1wbGF0Zm9ybS10ZXN0
cycpCiAKLSAgICAgICAgc2VsZi5fZ2l0ID0gc2VsZi5fZW5zdXJlX3dwdF9yZXBvc2l0b3J5KCJo
dHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiLCBzZWxmLl9vcHRp
b25zLnJlcG9zaXRvcnlfZGlyZWN0b3J5LCBnaXRDbGFzcykKICAgICAgICAgc2VsZi5fbGludGVy
ID0gV1BUTGludGVyQ2xhc3Moc2VsZi5fb3B0aW9ucy5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgaG9z
dC5maWxlc3lzdGVtKQogCisgICAgICAgIHNlbGYuX2J1Z3ppbGxhX3VybCA9ICJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9IiArIHN0cihzZWxmLl9idWdfaWQpCisgICAg
ICAgIHNlbGYuX2NvbW1pdF9tZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlCisgICAgICAgIGlmIG5v
dCBzZWxmLl9jb21taXRfbWVzc2FnZToKKyAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9tZXNzYWdl
ID0gJ1dlYktpdCBleHBvcnQgb2YgJyArIHNlbGYuX2J1Z3ppbGxhX3VybCBpZiBzZWxmLl9idWdf
aWQgZWxzZSAnRXhwb3J0IG1hZGUgZnJvbSBhIFdlYktpdCByZXBvc2l0b3J5JworCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIHVzZXJuYW1lKHNlbGYpOgorICAgICAgICBpZiBoYXNhdHRyKHNlbGYs
ICdfdXNlcm5hbWUnKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl91c2VybmFtZQorCisgICAg
ICAgIHNlbGYuX2Vuc3VyZV91c2VybmFtZV9hbmRfdG9rZW4oc2VsZi5fb3B0aW9ucykKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX3VzZXJuYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdG9rZW4o
c2VsZik6CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ190b2tlbicpOgorICAgICAgICAgICAg
cmV0dXJuIHNlbGYuX3Rva2VuCisKKyAgICAgICAgc2VsZi5fZW5zdXJlX3VzZXJuYW1lX2FuZF90
b2tlbihzZWxmLl9vcHRpb25zKQorICAgICAgICByZXR1cm4gc2VsZi5fdG9rZW4KKworICAgIEBw
cm9wZXJ0eQorICAgIEBtZW1vaXplZAorICAgIGRlZiBfZ2l0aHViKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fV1BUR2l0SHViQ2xhc3Moc2VsZi5faG9zdCwgc2VsZi51c2VybmFtZSwgc2Vs
Zi50b2tlbikgaWYgc2VsZi51c2VybmFtZSBhbmQgc2VsZi50b2tlbiBlbHNlIE5vbmUKKworICAg
IEBwcm9wZXJ0eQorICAgIEBtZW1vaXplZAorICAgIGRlZiBfd3B0X2ZvcmtfYnJhbmNoX2dpdGh1
Yl91cmwoc2VsZik6CisgICAgICAgIHJldHVybiAiaHR0cHM6Ly9naXRodWIuY29tLyIgKyBzZWxm
LnVzZXJuYW1lICsgIi93ZWItcGxhdGZvcm0tdGVzdHMvdHJlZS8iICsgc2VsZi5fcHVibGljX2Jy
YW5jaF9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX3dwdF9m
b3JrX3JlbW90ZShzZWxmKToKKyAgICAgICAgd3B0X2ZvcmtfcmVtb3RlID0gc2VsZi5fb3B0aW9u
cy5yZXBvc2l0b3J5X3JlbW90ZQorICAgICAgICBpZiBub3Qgd3B0X2ZvcmtfcmVtb3RlOgorICAg
ICAgICAgICAgd3B0X2ZvcmtfcmVtb3RlID0gc2VsZi51c2VybmFtZQorCisgICAgICAgIHJldHVy
biB3cHRfZm9ya19yZW1vdGUKKworICAgIEBwcm9wZXJ0eQorICAgIEBtZW1vaXplZAorICAgIGRl
ZiBfd3B0X2ZvcmtfcHVzaF91cmwoc2VsZik6CisgICAgICAgIHdwdF9mb3JrX3B1c2hfdXJsID0g
c2VsZi5fb3B0aW9ucy5yZXBvc2l0b3J5X3JlbW90ZV91cmwKKyAgICAgICAgaWYgbm90IHdwdF9m
b3JrX3B1c2hfdXJsOgorICAgICAgICAgICAgd3B0X2ZvcmtfcHVzaF91cmwgPSAiaHR0cHM6Ly8i
ICsgc2VsZi51c2VybmFtZSArICJAZ2l0aHViLmNvbS8iICsgc2VsZi51c2VybmFtZSArICIvd2Vi
LXBsYXRmb3JtLXRlc3RzLmdpdCIKKworICAgICAgICByZXR1cm4gd3B0X2ZvcmtfcHVzaF91cmwK
KworICAgIEBwcm9wZXJ0eQorICAgIEBtZW1vaXplZAorICAgIGRlZiBfZ2l0KHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fZW5zdXJlX3dwdF9yZXBvc2l0b3J5KCJodHRwczovL2dpdGh1Yi5j
b20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiLCBzZWxmLl9vcHRpb25zLnJlcG9zaXRvcnlf
ZGlyZWN0b3J5LCBzZWxmLl9naXRDbGFzcykKKworICAgIEBwcm9wZXJ0eQorICAgIEBtZW1vaXpl
ZAorICAgIGRlZiBfYnJhbmNoX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9lbnN1
cmVfbmV3X2JyYW5jaF9uYW1lKCkKKworICAgIEBwcm9wZXJ0eQorICAgIEBtZW1vaXplZAorICAg
IGRlZiBfcHVibGljX2JyYW5jaF9uYW1lKHNlbGYpOgorICAgICAgICBvcHRpb25zID0gc2VsZi5f
b3B0aW9ucworICAgICAgICByZXR1cm4gb3B0aW9ucy5wdWJsaWNfYnJhbmNoX25hbWUgaWYgb3B0
aW9ucy5wdWJsaWNfYnJhbmNoX25hbWUgZWxzZSBzZWxmLl9icmFuY2hfbmFtZQorCisgICAgQHBy
b3BlcnR5CisgICAgQG1lbW9pemVkCisgICAgZGVmIF93cHRfcGF0Y2goc2VsZik6CisgICAgICAg
IHBhdGNoX2RhdGEgPSBzZWxmLl9ob3N0LnNjbSgpLmNyZWF0ZV9wYXRjaChzZWxmLl9vcHRpb25z
LmdpdF9jb21taXQsIFtXRUJLSVRfV1BUX0RJUl0pIG9yICcnCisgICAgICAgIHBhdGNoX2RhdGEg
PSBzZWxmLl9zdHJpcF9pZ25vcmVkX2ZpbGVzX2Zyb21fZGlmZihwYXRjaF9kYXRhKQorICAgICAg
ICBpZiBub3QgJ2RpZmYnIGluIHBhdGNoX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gJycKKyAg
ICAgICAgcmV0dXJuIHBhdGNoX2RhdGEKKworICAgIGRlZiBoYXNfd3B0X2NoYW5nZXMoc2VsZik6
CisgICAgICAgIHJldHVybiBib29sKHNlbGYuX3dwdF9wYXRjaCkKKworICAgIGRlZiBfZmluZF9m
aWxlbmFtZShzZWxmLCBsaW5lKToKKyAgICAgICAgcmV0dXJuIGxpbmUuc3BsaXQoJyAnKVstMV0K
KworICAgIGRlZiBfaXNfaWdub3JlZF9maWxlKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgZm9y
IHN1ZmZpeCBpbiBFWENMVURFRF9GSUxFX1NVRkZJWEVTOgorICAgICAgICAgICAgaWYgZmlsZW5h
bWUuZW5kc3dpdGgoc3VmZml4KToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAg
ICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfc3RyaXBfaWdub3JlZF9maWxlc19mcm9tX2RpZmYo
c2VsZiwgZGlmZik6CisgICAgICAgIGxpbmVzID0gZGlmZi5zcGxpdCgnXG4nKQorICAgICAgICBp
bmNsdWRlX2ZpbGUgPSBUcnVlCisgICAgICAgIG5ld19saW5lcyA9IFtdCisgICAgICAgIGZvciBs
aW5lIGluIGxpbmVzOgorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdkaWZmJyk6Cisg
ICAgICAgICAgICAgICAgaW5jbHVkZV9maWxlID0gVHJ1ZQorICAgICAgICAgICAgICAgIGZpbGVu
YW1lID0gc2VsZi5fZmluZF9maWxlbmFtZShsaW5lKQorICAgICAgICAgICAgICAgIGlmIHNlbGYu
X2lzX2lnbm9yZWRfZmlsZShmaWxlbmFtZSk6CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVf
ZmlsZSA9IEZhbHNlCisgICAgICAgICAgICBpZiBpbmNsdWRlX2ZpbGU6CisgICAgICAgICAgICAg
ICAgbmV3X2xpbmVzLmFwcGVuZChsaW5lKQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obmV3
X2xpbmVzKQorCisgICAgZGVmIHdyaXRlX2dpdF9wYXRjaF9maWxlKHNlbGYpOgorICAgICAgICBf
LCBwYXRjaF9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5vcGVuX2JpbmFyeV90ZW1wZmlsZSgnd3B0
X2V4cG9ydF9wYXRjaCcpCisgICAgICAgIHBhdGNoX2RhdGEgPSBzZWxmLl93cHRfcGF0Y2gKKyAg
ICAgICAgaWYgbm90ICdkaWZmJyBpbiBwYXRjaF9kYXRhOgorICAgICAgICAgICAgX2xvZy5pbmZv
KCdObyBjaGFuZ2VzIHRvIHVwc3RyZWFtLCBwYXRjaCBkYXRhIGlzOiAiJXMiJyAlIChwYXRjaF9k
YXRhKSkKKyAgICAgICAgICAgIHJldHVybiAnJworICAgICAgICAjIEZJWE1FOiBXZSBjYW4gcHJv
YmFibHkgdHJ5IHRvIHVzZSAtLXJlbGF0aXZlIGdpdCBwYXJhbWV0ZXIgdG8gbm90IGRvIHRoYXQg
cmVwbGFjZW1lbnQuCisgICAgICAgIHBhdGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJlcGxhY2UoV0VC
S0lUX1dQVF9ESVIgKyAnLycsICcnKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3Rl
eHRfZmlsZShwYXRjaF9maWxlLCBwYXRjaF9kYXRhKQorICAgICAgICByZXR1cm4gcGF0Y2hfZmls
ZQorCisgICAgZGVmIF9wcm9tcHRfZm9yX3Rva2VuKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBp
ZiBvcHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAg
ICAgIHJldHVybiBzZWxmLl9ob3N0LnVzZXIucHJvbXB0X3Bhc3N3b3JkKCdFbnRlciBHaXRIdWIg
T0F1dGggdG9rZW4gKG9yIGVtcHR5IHN0cmluZyB0byBza2lwIGNyZWF0aW5nIGEgcHVsbCByZXF1
ZXN0KTogJykKKworICAgIGRlZiBfcHJvbXB0X2Zvcl91c2VybmFtZShzZWxmLCBvcHRpb25zKToK
KyAgICAgICAgaWYgb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6CisgICAgICAgICAgICByZXR1cm4g
Tm9uZQorICAgICAgICByZXR1cm4gc2VsZi5faG9zdC51c2VyLnByb21wdCgnRW50ZXIgeW91ciBH
aXRIdWIgdXNlcm5hbWU6ICcpCisKKyAgICBkZWYgX2Vuc3VyZV91c2VybmFtZV9hbmRfdG9rZW4o
c2VsZiwgb3B0aW9ucyk6CiAgICAgICAgIHNlbGYuX3VzZXJuYW1lID0gb3B0aW9ucy51c2VybmFt
ZQogICAgICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6CisgICAgICAgICAgICAjIEZJWE1FOiBV
c2UgdGhlIGtleWNoYWluIHRvIHN0b3JlIHVzZXJuYW1lIGFuZCBvYXV0aCB0b2tlbiBpbnN0ZWFk
IG9mIC5naXQvY29uZmlnCiAgICAgICAgICAgICBzZWxmLl91c2VybmFtZSA9IHNlbGYuX2dpdC5s
b2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScpLnJzdHJpcCgpCiAgICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fdXNlcm5hbWU6CiAgICAgICAgICAgICAgICAgc2VsZi5fdXNlcm5hbWUgPSBvcy5l
bnZpcm9uLmdldCgnR0lUSFVCX1VTRVJOQU1FJykKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91
c2VybmFtZToKKyAgICAgICAgICAgICAgICBzZWxmLl91c2VybmFtZSA9IHNlbGYuX3Byb21wdF9m
b3JfdXNlcm5hbWUob3B0aW9ucykKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToK
ICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNaXNzaW5nIEdpdEh1YiB1c2VybmFt
ZSwgcGxlYXNlIHByb3ZpZGUgaXQgYXMgYSBjb21tYW5kIGFyZ3VtZW50IChzZWUgaGVscCBmb3Ig
dGhlIGNvbW1hbmQpLiIpCi0gICAgICAgIGVsaWYgbm90IHNlbGYuX2dpdC5sb2NhbF9jb25maWco
J2dpdGh1Yi51c2VybmFtZScpOgotICAgICAgICAgICAgc2VsZi5fZ2l0LnNldF9sb2NhbF9jb25m
aWcoJ2dpdGh1Yi51c2VybmFtZScsIHNlbGYuX3VzZXJuYW1lKQogCiAgICAgICAgIHNlbGYuX3Rv
a2VuID0gb3B0aW9ucy50b2tlbgogICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46CiAgICAgICAg
ICAgICBzZWxmLl90b2tlbiA9IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dpdGh1Yi50b2tlbicp
LnJzdHJpcCgpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46CiAgICAgICAgICAgICAg
ICAgc2VsZi5fdG9rZW4gPSBvcy5lbnZpcm9uLmdldCgnR0lUSFVCX1RPS0VOJykKKyAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl90b2tlbjoKKyAgICAgICAgICAgICAgICBzZWxmLl90b2tlbiA9IHNl
bGYuX3Byb21wdF9mb3JfdG9rZW4ob3B0aW9ucykKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90
b2tlbjoKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oIk1pc3NpbmcgR2l0SHViIHRva2VuLCB0
aGUgc2NyaXB0IHdpbGwgbm90IGJlIGFibGUgdG8gY3JlYXRlIGEgcHVsbCByZXF1ZXN0IHRvIFcz
QyB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeS4iKQotICAgICAgICBlbGlmIG5vdCBzZWxm
Ll9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nKToKLSAgICAgICAgICAgIHNlbGYuX2dp
dC5zZXRfbG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nLCBzZWxmLl90b2tlbikKLQotICAgICAg
ICBzZWxmLl9naXRodWIgPSBXUFRHaXRIdWJDbGFzcyhzZWxmLl9ob3N0LCBzZWxmLl91c2VybmFt
ZSwgc2VsZi5fdG9rZW4pIGlmIHNlbGYuX3VzZXJuYW1lIGFuZCBzZWxmLl90b2tlbiBlbHNlIE5v
bmUKLQotICAgICAgICBzZWxmLl9icmFuY2hfbmFtZSA9IHNlbGYuX2Vuc3VyZV9uZXdfYnJhbmNo
X25hbWUoKQotICAgICAgICBzZWxmLl9wdWJsaWNfYnJhbmNoX25hbWUgPSBvcHRpb25zLnB1Ymxp
Y19icmFuY2hfbmFtZSBpZiBvcHRpb25zLnB1YmxpY19icmFuY2hfbmFtZSBlbHNlIHNlbGYuX2Jy
YW5jaF9uYW1lCi0gICAgICAgIHNlbGYuX2J1Z3ppbGxhX3VybCA9ICJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9IiArIHN0cihzZWxmLl9idWdfaWQpCi0gICAgICAgIHNl
bGYuX2NvbW1pdF9tZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlCi0gICAgICAgIGlmIG5vdCBzZWxm
Ll9jb21taXRfbWVzc2FnZToKLSAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9tZXNzYWdlID0gJ1dl
YktpdCBleHBvcnQgb2YgJyArIHNlbGYuX2J1Z3ppbGxhX3VybCBpZiBzZWxmLl9idWdfaWQgZWxz
ZSAnRXhwb3J0IG1hZGUgZnJvbSBhIFdlYktpdCByZXBvc2l0b3J5JwogCi0gICAgICAgIHNlbGYu
X3dwdF9mb3JrX3JlbW90ZSA9IG9wdGlvbnMucmVwb3NpdG9yeV9yZW1vdGUKLSAgICAgICAgaWYg
bm90IHNlbGYuX3dwdF9mb3JrX3JlbW90ZToKLSAgICAgICAgICAgIHNlbGYuX3dwdF9mb3JrX3Jl
bW90ZSA9IHNlbGYuX3VzZXJuYW1lCisgICAgICAgIGlmIHNlbGYuX3Rva2VuOgorICAgICAgICAg
ICAgc2VsZi5fdmFsaWRhdGVfYW5kX3NhdmVfdG9rZW4oc2VsZi5fdXNlcm5hbWUsIHNlbGYuX3Rv
a2VuKQogCi0gICAgICAgIHNlbGYuX3dwdF9mb3JrX3B1c2hfdXJsID0gb3B0aW9ucy5yZXBvc2l0
b3J5X3JlbW90ZV91cmwKLSAgICAgICAgaWYgbm90IHNlbGYuX3dwdF9mb3JrX3B1c2hfdXJsOgot
ICAgICAgICAgICAgc2VsZi5fd3B0X2ZvcmtfcHVzaF91cmwgPSAiaHR0cHM6Ly8iICsgc2VsZi5f
dXNlcm5hbWUgKyAiQGdpdGh1Yi5jb20vIiArIHNlbGYuX3VzZXJuYW1lICsgIi93ZWItcGxhdGZv
cm0tdGVzdHMuZ2l0IgorICAgIGRlZiBfdmFsaWRhdGVfYW5kX3NhdmVfdG9rZW4oc2VsZiwgdXNl
cm5hbWUsIHRva2VuKToKKyAgICAgICAgdXJsID0gJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNl
cj9hY2Nlc3NfdG9rZW49JXMnICUgKHRva2VuLCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
cmVzcG9uc2UgPSBzZWxmLl9ob3N0LndlYi5yZXF1ZXN0KG1ldGhvZD0nR0VUJywgdXJsPXVybCwg
ZGF0YT1Ob25lKQorICAgICAgICBleGNlcHQgSFRUUEVycm9yIGFzIGU6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oIk9BdXRoIHRva2VuIGlzIG5vdCB2YWxpZCIpCisgICAgICAgIGRhdGEg
PSBqc29uLmxvYWQocmVzcG9uc2UpCisgICAgICAgIGxvZ2luID0gZGF0YS5nZXQoJ2xvZ2luJywg
Tm9uZSkKKyAgICAgICAgaWYgbG9naW4gIT0gdXNlcm5hbWU6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oIk9BdXRoIHRva2VuIGRvZXMgbm90IG1hdGNoIHRoZSBwcm92aWRlZCB1c2VybmFt
ZS4gUHJvdmlkZWQgdXNlcjogJXMsIGdpdGh1YiBsb2dpbjogJXMiICUgKHVzZXJuYW1lLCBsb2dp
bikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFVzZXJuYW1lIGFuZCB0b2tlbiBhcmUg
dmFsaWQuIFNhdmUgdGhlbSBpbiB0aGUgZ2l0IGNvbmZpZyBzbyB3ZQorICAgICAgICAgICAgIyBk
byBub3QgbmVlZCB0byBhc2sgZm9yIHRoZW0gYWdhaW4KKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nKToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9naXQuc2V0X2xvY2FsX2NvbmZpZygnZ2l0aHViLnRva2VuJywgdG9rZW4pCisgICAgICAgICAg
ICBpZiBub3Qgc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJuYW1lJyk6CisgICAg
ICAgICAgICAgICAgc2VsZi5fZ2l0LnNldF9sb2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScs
IHVzZXJuYW1lKQogCiAgICAgZGVmIF9lbnN1cmVfd3B0X3JlcG9zaXRvcnkoc2VsZiwgdXJsLCB3
cHRfcmVwb3NpdG9yeV9kaXJlY3RvcnksIGdpdENsYXNzKToKICAgICAgICAgZ2l0ID0gTm9uZQpA
QCAtMTU2LDcgKzI5MCw3IEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICAg
ICAgc2VsZi5fZ2l0LmRlbGV0ZV9icmFuY2goc2VsZi5fYnJhbmNoX25hbWUpCiAgICAgICAgICAg
ICBzZWxmLl9naXQuY2hlY2tvdXRfbmV3X2JyYW5jaChzZWxmLl9icmFuY2hfbmFtZSkKICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fZ2l0LmFwcGx5X21haWxfcGF0Y2goW3BhdGNoLCAn
LS1leGNsdWRlJywgJyotZXhwZWN0ZWQudHh0JywgJy0tZXhjbHVkZScsICcqLndvcmtlci5odG1s
JywgJy0tZXhjbHVkZScsICcqLmFueS5odG1sJywgJy0tZXhjbHVkZScsICcqLmFueS53b3JrZXIu
aHRtbCddKQorICAgICAgICAgICAgc2VsZi5fZ2l0LmFwcGx5X21haWxfcGF0Y2goW3BhdGNoXSkK
ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgX2xvZy53YXJuaW5n
KGUpCiAgICAgICAgICAgICBzZWxmLl9naXQuYXBwbHlfbWFpbF9wYXRjaChbJy0tYWJvcnQnXSkK
QEAgLTE2NSwxNyArMjk5LDE2IEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAg
ICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHB1c2hfdG9fd3B0X2Zvcmsoc2VsZik6Ci0gICAgICAg
IHNlbGYuY3JlYXRlX3VwbG9hZF9yZW1vdGUoKQotICAgICAgICB3cHRfZm9ya19icmFuY2hfZ2l0
aHViX3VybCA9ICJodHRwczovL2dpdGh1Yi5jb20vIiArIHNlbGYuX3VzZXJuYW1lICsgIi93ZWIt
cGxhdGZvcm0tdGVzdHMvdHJlZS8iICsgc2VsZi5fcHVibGljX2JyYW5jaF9uYW1lCisgICAgICAg
IHNlbGYuY3JlYXRlX3VwbG9hZF9yZW1vdGVfaWZfbmVlZGVkKCkKICAgICAgICAgX2xvZy5pbmZv
KCdQdXNoaW5nIGJyYW5jaCAnICsgc2VsZi5fYnJhbmNoX25hbWUgKyAiIHRvICIgKyBzZWxmLl9n
aXQucmVtb3RlKFsiZ2V0LXVybCIsIHNlbGYuX3dwdF9mb3JrX3JlbW90ZV0pLnJzdHJpcCgpKQog
ICAgICAgICBfbG9nLmluZm8oJ1RoaXMgbWF5IHRha2Ugc29tZSB0aW1lJykKICAgICAgICAgc2Vs
Zi5fZ2l0LnB1c2goW3NlbGYuX3dwdF9mb3JrX3JlbW90ZSwgc2VsZi5fYnJhbmNoX25hbWUgKyAi
OiIgKyBzZWxmLl9wdWJsaWNfYnJhbmNoX25hbWUsICctZiddKQotICAgICAgICBfbG9nLmluZm8o
J0JyYW5jaCBhdmFpbGFibGUgYXQgJyArIHdwdF9mb3JrX2JyYW5jaF9naXRodWJfdXJsKQorICAg
ICAgICBfbG9nLmluZm8oJ0JyYW5jaCBhdmFpbGFibGUgYXQgJyArIHNlbGYuX3dwdF9mb3JrX2Jy
YW5jaF9naXRodWJfdXJsKQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIG1ha2VfcHVs
bF9yZXF1ZXN0KHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5fZ2l0aHViOgotICAgICAgICAg
ICAgX2xvZy5pbmZvKCdNaXNzaW5nIGluZm9ybWF0aW9uIHRvIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCcpCisgICAgICAgICAgICBfbG9nLmluZm8oJ1NraXBwaW5nIHB1bGwgcmVxdWVzdCBiZWNhdXNl
IE9BdXRoIHRva2VuIHdhcyBub3QgcHJvdmlkZWQuIFlvdSBjYW4gb3BlbiB0aGUgcHVsbCByZXF1
ZXN0IG1hbnVhbGx5IHVzaW5nIHRoZSBicmFuY2ggJyArIHNlbGYuX3dwdF9mb3JrX2JyYW5jaF9n
aXRodWJfdXJsKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgX2xvZy5pbmZvKCdNYWtp
bmcgcHVsbCByZXF1ZXN0JykKQEAgLTE4OSw3ICszMjIsNyBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIo
b2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLl9naXRodWIuYWRkX2xhYmVsKHByX251bWJl
ciwgV0VCS0lUX0VYUE9SVF9QUl9MQUJFTCkKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoZSkKLSAgICAgICAgICAgICAgICBf
bG9nLmluZm8oJ0NvdWxkIG5vdCBhZGQgbGFiZWwgIiVzIiB0byBwciAjJXMuIFVzZXIgIiVzIiBt
YXkgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1cGRhdGUgbGFiZWxzIGluIHRoZSB3M2Mvd2ViLXBs
YXRmb3JtLXRlc3QgcmVwby4nICUgKFdFQktJVF9FWFBPUlRfUFJfTEFCRUwsIHByX251bWJlciwg
c2VsZi5fdXNlcm5hbWUpKQorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnQ291bGQgbm90IGFk
ZCBsYWJlbCAiJXMiIHRvIHByICMlcy4gVXNlciAiJXMiIG1heSBub3QgaGF2ZSBwZXJtaXNzaW9u
IHRvIHVwZGF0ZSBsYWJlbHMgaW4gdGhlIHczYy93ZWItcGxhdGZvcm0tdGVzdCByZXBvLicgJSAo
V0VCS0lUX0VYUE9SVF9QUl9MQUJFTCwgcHJfbnVtYmVyLCBzZWxmLnVzZXJuYW1lKSkKICAgICAg
ICAgaWYgc2VsZi5fYnVnX2lkIGFuZCBwcl9udW1iZXI6CiAgICAgICAgICAgICBzZWxmLl9idWd6
aWxsYS5wb3N0X2NvbW1lbnRfdG9fYnVnKHNlbGYuX2J1Z19pZCwgIlN1Ym1pdHRlZCB3ZWItcGxh
dGZvcm0tdGVzdHMgcHVsbCByZXF1ZXN0OiAiICsgV1BUX1BSX1VSTCArIHN0cihwcl9udW1iZXIp
KQogCkBAIC0yMDYsMzAgKzMzOSwxNiBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAg
ICAgICAgcmV0dXJuIHByX251bWJlcgogCiAgICAgZGVmIGRlbGV0ZV9sb2NhbF9icmFuY2goc2Vs
Zik6Ci0gICAgICAgIF9sb2cuaW5mbygnUmVtb3ZpbmcgYnJhbmNoICcgKyBzZWxmLl9icmFuY2hf
bmFtZSkKKyAgICAgICAgX2xvZy5pbmZvKCdSZW1vdmluZyBsb2NhbCBicmFuY2ggJyArIHNlbGYu
X2JyYW5jaF9uYW1lKQogICAgICAgICBzZWxmLl9naXQuY2hlY2tvdXQoJ21hc3RlcicpCiAgICAg
ICAgIHNlbGYuX2dpdC5kZWxldGVfYnJhbmNoKHNlbGYuX2JyYW5jaF9uYW1lKQogCi0gICAgZGVm
IGNyZWF0ZV9naXRfcGF0Y2goc2VsZik6Ci0gICAgICAgIHBhdGNoX2ZpbGUgPSAnLi9wYXRjaC50
ZW1wLicgKyBzdHIodGltZS5jbG9jaygpKQotICAgICAgICBnaXRfY29tbWl0ID0gIkhFQUQuLi4u
IiBpZiBub3Qgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0IGVsc2Ugc2VsZi5fb3B0aW9ucy5naXRf
Y29tbWl0ICsgIn4xLi4iICsgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0Ci0gICAgICAgIHBhdGNo
X2RhdGEgPSBzZWxmLl9ob3N0LnNjbSgpLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0LCBbV0VCS0lU
X1dQVF9ESVJdKQotICAgICAgICBpZiBub3QgcGF0Y2hfZGF0YSBvciBub3QgJ2RpZmYnIGluIHBh
dGNoX2RhdGE6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0s
IHBhdGNoIGRhdGEgaXM6ICIlcyInICUgKHBhdGNoX2RhdGEpKQotICAgICAgICAgICAgcmV0dXJu
ICcnCi0gICAgICAgICMgRklYTUU6IFdlIGNhbiBwcm9iYWJseSB0cnkgdG8gdXNlIC0tcmVsYXRp
dmUgZ2l0IHBhcmFtZXRlciB0byBub3QgZG8gdGhhdCByZXBsYWNlbWVudC4KLSAgICAgICAgcGF0
Y2hfZGF0YSA9IHBhdGNoX2RhdGEucmVwbGFjZShXRUJLSVRfV1BUX0RJUiArICcvJywgJycpCi0g
ICAgICAgIHBhdGNoX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgocGF0Y2hfZmlsZSkK
LSAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0Y2hfZmlsZSwgcGF0
Y2hfZGF0YSkKLSAgICAgICAgcmV0dXJuIHBhdGNoX2ZpbGUKLQotICAgIGRlZiBjcmVhdGVfdXBs
b2FkX3JlbW90ZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlIGluIHNl
bGYuX2dpdC5yZW1vdGUoW10pLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIHNlbGYuX2dpdC5y
ZW1vdGUoWyJyZW1vdmUiLCBzZWxmLl93cHRfZm9ya19yZW1vdGVdKQotICAgICAgICBzZWxmLl9n
aXQucmVtb3RlKFsiYWRkIiwgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlLCBzZWxmLl93cHRfZm9ya19w
dXNoX3VybF0pCisgICAgZGVmIGNyZWF0ZV91cGxvYWRfcmVtb3RlX2lmX25lZWRlZChzZWxmKToK
KyAgICAgICAgaWYgbm90IHNlbGYuX3dwdF9mb3JrX3JlbW90ZSBpbiBzZWxmLl9naXQucmVtb3Rl
KFtdKToKKyAgICAgICAgICAgIHNlbGYuX2dpdC5yZW1vdGUoWyJhZGQiLCBzZWxmLl93cHRfZm9y
a19yZW1vdGUsIHNlbGYuX3dwdF9mb3JrX3B1c2hfdXJsXSkKIAogICAgIGRlZiBkb19leHBvcnQo
c2VsZik6Ci0gICAgICAgIGdpdF9wYXRjaF9maWxlID0gc2VsZi5jcmVhdGVfZ2l0X3BhdGNoKCkK
KyAgICAgICAgZ2l0X3BhdGNoX2ZpbGUgPSBzZWxmLndyaXRlX2dpdF9wYXRjaF9maWxlKCkKIAog
ICAgICAgICBpZiBub3QgZ2l0X3BhdGNoX2ZpbGU6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJV
bmFibGUgdG8gY3JlYXRlIGEgcGF0Y2ggdG8gYXBwbHkgdG8gd2ViLXBsYXRmb3JtLXRlc3RzIHJl
cG9zaXRvcnkiKQpAQCAtMjk0LDYgKzQxMyw3IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3MpOgogICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoJy11JywgJy0tcmVtb3RlLXVybCcsIGRlc3Q9J3JlcG9zaXRv
cnlfcmVtb3RlX3VybCcsIGRlZmF1bHQ9Tm9uZSwgaGVscD0ncmVwb3NpdG9yeSB1cmwgdG8gdXNl
IHRvIHB1c2gnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1kJywgJy0tcmVwb3NpdG9yeScs
IGRlc3Q9J3JlcG9zaXRvcnlfZGlyZWN0b3J5JywgZGVmYXVsdD1Ob25lLCBoZWxwPSdyZXBvc2l0
b3J5IGRpcmVjdG9yeScpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jcmVhdGUt
cHInLCBkZXN0PSdjcmVhdGVfcHVsbF9yZXF1ZXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVm
YXVsdD1GYWxzZSwgaGVscD0nY3JlYXRlIHB1bGwgcmVxdWVzdCB0byB3M2Mgd2ViLXBsYXRmb3Jt
LXRlc3RzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5vbi1pbnRlcmFjdGl2ZScsIGFj
dGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J25vbl9pbnRlcmFjdGl2ZScsIGRlZmF1bHQ9RmFsc2Us
IGhlbHA9J05ldmVyIHByb21wdCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0IGFzIHBvc3NpYmxlLicp
CiAKICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoYXJncykKIApA
QCAtMzA5LDYgKzQyOSw3IEBAIGRlZiBjb25maWd1cmVfbG9nZ2luZygpOgogICAgICAgICAgICAg
cmV0dXJuIHJlY29yZC5nZXRNZXNzYWdlKCkKIAogICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCd3ZWJraXRweS53M2MudGVzdF9leHBvcnRlcicpCisgICAgbG9nZ2VyLnByb3BhZ2F0ZSA9
IEZhbHNlCiAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKICAgICBoYW5kbGVyID0g
TG9nSGFuZGxlcigpCiAgICAgaGFuZGxlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCkBAIC0zMjAs
NyArNDQxLDEwIEBAIGRlZiBtYWluKF9hcmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKICAgICBvcHRp
b25zID0gcGFyc2VfYXJncyhfYXJndikKIAogICAgIGNvbmZpZ3VyZV9sb2dnaW5nKCkKKyAgICB0
ZXN0X2V4cG9ydGVyID0gV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIoSG9zdCgpLCBvcHRpb25zKQog
Ci0gICAgdGVzdF9leHBvcnRlciA9IFRlc3RFeHBvcnRlcihIb3N0KCksIG9wdGlvbnMpCisgICAg
aWYgbm90IHRlc3RfZXhwb3J0ZXIuaGFzX3dwdF9jaGFuZ2VzKCk6CisgICAgICAgIF9sb2cuaW5m
bygnTm8gY2hhbmdlcyB0byB1cHN0cmVhbS4gRXhpdGluZy4uLicpCisgICAgICAgIHJldHVybgog
CiAgICAgdGVzdF9leHBvcnRlci5kb19leHBvcnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkKaW5kZXggYjgzMzRhOTQ5YzYx
Mjg2NzJlM2M0NzI0ZjE2MTAzYzA0ZjljYjk4OS4uMjJhNDI0YjQyOGUwYzczZGI1NWJkMWFiNWQ2
YWNhMTNjZDUxYTYyMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9leHBvcnRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5CkBAIC0yNSw3ICsyNSw3IEBAIGltcG9ydCB1bml0dGVz
dAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0
ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9j
a0V4ZWN1dGl2ZTIKLWZyb20gd2Via2l0cHkudzNjLnRlc3RfZXhwb3J0ZXIgaW1wb3J0IFRlc3RF
eHBvcnRlciwgcGFyc2VfYXJncworZnJvbSB3ZWJraXRweS53M2MudGVzdF9leHBvcnRlciBpbXBv
cnQgV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIsIHBhcnNlX2FyZ3MKIGZyb20gd2Via2l0cHkudzNj
LndwdF9naXRodWJfbW9jayBpbXBvcnQgTW9ja1dQVEdpdEh1YgogCiBtb2NrX2xpbnRlciA9IE5v
bmUKQEAgLTQ2LDYgKzQ2LDggQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgY2xhc3MgTW9ja0dpdChvYmpl
Y3QpOgorICAgICAgICBtb2NrX2Zvcm1hdF9wYXRjaF9yZXN1bHQgPSAnbXkgcGF0Y2ggY29udGFp
bmluZyBzb21lIGRpZmZzJworCiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgY2xv
bmUoY2xzLCB1cmwsIGRpcmVjdG9yeSwgZXhlY3V0aXZlPU5vbmUpOgogICAgICAgICAgICAgcmV0
dXJuIFRydWUKQEAgLTk0LDcgKzk2LDcgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAKICAgICAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBjb21taXQsIGFy
Z3VtZW50cyk6CiAgICAgICAgICAgICBzZWxmLmNhbGxzLmFwcGVuZCgnY3JlYXRlX3BhdGNoICcg
KyBjb21taXQgKyAnICcgKyBzdHIoYXJndW1lbnRzKSkKLSAgICAgICAgICAgIHJldHVybiAnbXkg
cGF0Y2ggY29udGFpbmluZyBzb21lIGRpZmZzJworICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9j
a19mb3JtYXRfcGF0Y2hfcmVzdWx0CiAKICAgICBjbGFzcyBNeU1vY2tIb3N0KE1vY2tIb3N0KToK
ICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtMTIyLDggKzEyNCw5IEBAIGNsYXNzIFRl
c3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZXhwb3J0
KHNlbGYpOgogICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAg
ICAgICAgaG9zdC53ZWIucmVzcG9uc2VzLmFwcGVuZCh7J3N0YXR1c19jb2RlJzogMjAwLCAnYm9k
eSc6ICd7ImxvZ2luIjogIlVTRVIifSd9KQogICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhb
J3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1u
JywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nXSkKLSAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0
ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJU
ZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BU
TGludGVyKQorICAgICAgICBleHBvcnRlciA9IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKGhvc3Qs
IG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2Nr
QnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikK
ICAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
ZXhwb3J0ZXIuX2dpdGh1Yi5jYWxscywgWydjcmVhdGVfcHInLCAnYWRkX2xhYmVsICJ3ZWJraXQt
ZXhwb3J0IiddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1dlYktpdCBleHBvcnQnIGluIGV4
cG9ydGVyLl9naXRodWIucHVsbF9yZXF1ZXN0c19jcmVhdGVkWzBdWzFdKQpAQCAtMTUwLDggKzE1
Myw5IEBAIGNsYXNzIFRlc3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAg
ZGVmIHRlc3RfZXhwb3J0X3dpdGhfc3BlY2lmaWNfYnJhbmNoKHNlbGYpOgogICAgICAgICBob3N0
ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC53ZWIucmVzcG9u
c2VzLmFwcGVuZCh7J3N0YXR1c19jb2RlJzogMjAwLCAnYm9keSc6ICd7ImxvZ2luIjogIlVTRVIi
fSd9KQogICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHknLCAn
LWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAnVE9L
RU4nLCAnLWJuJywgJ3dwdC1leHBvcnQtYnJhbmNoJ10pCi0gICAgICAgIGV4cG9ydGVyID0gVGVz
dEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4
cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3Qu
TW9ja1dQVExpbnRlcikKKyAgICAgICAgZXhwb3J0ZXIgPSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRl
cihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRl
c3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRM
aW50ZXIpCiAgICAgICAgIGV4cG9ydGVyLmRvX2V4cG9ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGV4cG9ydGVyLl9naXQuY2FsbHMsIFsKICAgICAgICAgICAgICcvbW9jay1jaGVja291
dC9XZWJLaXRCdWlsZC93M2MtdGVzdHMvd2ViLXBsYXRmb3JtLXRlc3RzJywKQEAgLTE2OSwzICsx
NzMsNTMgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgICAgICAnZGVsZXRlIGJyYW5jaCB3cHQtZXhwb3J0LWZvci13ZWJraXQtMTIzNCcsCiAgICAg
ICAgICAgICAnY2hlY2tvdXQgbWFzdGVyJywKICAgICAgICAgICAgICdyZXNldCBoYXJkIG9yaWdp
bi9tYXN0ZXInXSkKKworICAgIGRlZiB0ZXN0X2V4cG9ydF9pbnRlcmFjdGl2ZV9tb2RlKHNlbGYp
OgorICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAg
aG9zdC53ZWIucmVzcG9uc2VzLmFwcGVuZCh7J3N0YXR1c19jb2RlJzogMjAwLCAnYm9keSc6ICd7
ImxvZ2luIjogIlVTRVIifSd9KQorICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3Rf
ZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VT
RVInLCAnLXQnLCAnVE9LRU4nLCAnLS1pbnRlcmFjdGl2ZSddKQorICAgICAgICBleHBvcnRlciA9
IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3Qu
TW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRl
c3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikKKyAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0
KCkKKworICAgIGRlZiB0ZXN0X2V4cG9ydF9pbnZhbGlkX3Rva2VuKHNlbGYpOgorICAgICAgICBo
b3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC53ZWIucmVz
cG9uc2VzLmFwcGVuZCh7J3N0YXR1c19jb2RlJzogNDAxfSkKKyAgICAgICAgb3B0aW9ucyA9IHBh
cnNlX2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcs
ICctYycsICctbicsICdVU0VSJywgJy10JywgJ1RPS0VOJ10pCisgICAgICAgIGV4cG9ydGVyID0g
V2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5N
b2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVz
dEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKEV4Y2VwdGlvbikgYXMgY29udGV4dDoKKyAgICAgICAgICAgIGV4cG9ydGVyLmRvX2V4cG9y
dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ09BdXRoIHRva2VuIGlzIG5vdCB2YWxpZCcsIHN0
cihjb250ZXh0LmV4Y2VwdGlvbikpCisKKyAgICBkZWYgdGVzdF9leHBvcnRfd3JvbmdfdG9rZW4o
c2VsZik6CisgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQorICAg
ICAgICBob3N0LndlYi5yZXNwb25zZXMuYXBwZW5kKHsnc3RhdHVzX2NvZGUnOiAyMDAsICdib2R5
JzogJ3sibG9naW4iOiAiRElGRl9VU0VSIn0nfSkKKyAgICAgICAgb3B0aW9ucyA9IHBhcnNlX2Fy
Z3MoWyd0ZXN0X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICctYycs
ICctbicsICdVU0VSJywgJy10JywgJ1RPS0VOJ10pCisgICAgICAgIGV4cG9ydGVyID0gV2ViUGxh
dGZvcm1UZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0
LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9y
dGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4
Y2VwdGlvbikgYXMgY29udGV4dDoKKyAgICAgICAgICAgIGV4cG9ydGVyLmRvX2V4cG9ydCgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0SW4oJ09BdXRoIHRva2VuIGRvZXMgbm90IG1hdGNoIHRoZSBwcm92
aWRlZCB1c2VybmFtZScsIHN0cihjb250ZXh0LmV4Y2VwdGlvbikpCisKKyAgICBkZWYgdGVzdF9o
YXNfd3B0X2NoYW5nZXMoc2VsZik6CisgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15
TW9ja0hvc3QoKQorICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIu
cHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQn
LCAnVE9LRU4nXSkKKyAgICAgICAgZXhwb3J0ZXIgPSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlciho
b3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3Qu
TW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50
ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBvcnRlci5oYXNfd3B0X2NoYW5nZXMoKSkK
KworICAgIGRlZiB0ZXN0X2hhc19ub193cHRfY2hhbmdlc19mb3Jfbm9fZGlmZihzZWxmKToKKyAg
ICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCisgICAgICAgIGhvc3Qu
X21vY2tTQ00ubW9ja19mb3JtYXRfcGF0Y2hfcmVzdWx0ID0gTm9uZQorICAgICAgICBvcHRpb25z
ID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcx
MjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nXSkKKyAgICAgICAgZXhwb3J0
ZXIgPSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJU
ZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHVi
LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoZXhwb3J0ZXIuaGFzX3dwdF9jaGFuZ2VzKCkpCisKKyAgICBkZWYgdGVzdF9pZ25vcmVfY2hh
bmdlc190b19leHBlY3RlZF9maWxlKHNlbGYpOgorICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVy
VGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC5fbW9ja1NDTS5tb2NrX2Zvcm1hdF9wYXRj
aF9yZXN1bHQgPSAiIiIKK1N1YnZlcnNpb24gUmV2aXNpb246IDIzMTkyMAorZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hl
YWRlcnMvaGVhZGVyLXZhbHVlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlci12YWx1ZXMtZXhw
ZWN0ZWQudHh0CisKKytjaGFuZ2UgdG8gZXhwZWN0ZWQKKyIiIgorICAgICAgICBvcHRpb25zID0g
cGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0
JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nXSkKKyAgICAgICAgZXhwb3J0ZXIg
PSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0
Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBU
ZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
ZXhwb3J0ZXIuaGFzX3dwdF9jaGFuZ2VzKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341514</attachid>
            <date>2018-05-29 13:47:54 -0700</date>
            <delta_ts>2018-05-29 14:30:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184914-20180529164753.patch</filename>
            <type>text/plain</type>
            <size>33460</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWEyNWU1NzM5YTViZmQ2YWY3ZTdhNWI4NGJiYjBlNGMw
Y2UzZTgyNi4uZDBhZTE3NDhlMzZhYWIxOWFiMTU3ZWFiMzZlZWQxMWE5YTk2M2QxOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3
IEBACisyMDE4LTA1LTI5ICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgRXhwb3J0IGNoYW5nZXMgdG8gd2ViLXBsYXRmb3JtLXRlc3QgYXMgcGFydCBv
ZiB0aGUgd2Via2l0LXBhdGNoIHVwbG9hZCB3b3JrZmxvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5OgorICAgICAgICAoVXBsb2FkKToKKyAgICAgICAgKENyZWF0ZUJ1Zy5leGVj
dXRlKToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy93cHRjaGFuZ2VleHBvcnQucHk6IEFkZGVkLgorICAgICAgICAoV1BUQ2hhbmdl
RXhwb3J0KToKKyAgICAgICAgKFdQVENoYW5nZUV4cG9ydC5vcHRpb25zKToKKyAgICAgICAgKFdQ
VENoYW5nZUV4cG9ydC5ydW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL2NvbW1v
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5Ogor
ICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIpOgorICAgICAgICAoV2ViUGxhdGZvcm1U
ZXN0RXhwb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIu
dXNlcm5hbWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIudG9rZW4pOgorICAg
ICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX2dpdGh1Yik6CisgICAgICAgIChXZWJQbGF0
Zm9ybVRlc3RFeHBvcnRlci5fd3B0X2ZvcmtfYnJhbmNoX2dpdGh1Yl91cmwpOgorICAgICAgICAo
V2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX3dwdF9mb3JrX3JlbW90ZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVRlc3RFeHBvcnRlci5fd3B0X2ZvcmtfcHVzaF91cmwpOgorICAgICAgICAoV2ViUGxh
dGZvcm1UZXN0RXhwb3J0ZXIuX2dpdCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRl
ci5fYnJhbmNoX25hbWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuX3B1Ymxp
Y19icmFuY2hfbmFtZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fd3B0X3Bh
dGNoKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLmhhc193cHRfY2hhbmdlcyk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fZmluZF9maWxlbmFtZSk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5faXNfaWdub3JlZF9maWxlKToKKyAgICAgICAg
KFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLl9zdHJpcF9pZ25vcmVkX2ZpbGVzX2Zyb21fZGlmZik6
CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci53cml0ZV9naXRfcGF0Y2hfZmlsZSk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fcHJvbXB0X2Zvcl90b2tlbik6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fcHJvbXB0X2Zvcl91c2VybmFtZSk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fZW5zdXJlX3VzZXJuYW1lX2FuZF90b2tl
bik6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5fdmFsaWRhdGVfYW5kX3NhdmVf
dG9rZW4pOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuY3JlYXRlX2JyYW5jaF93
aXRoX3BhdGNoKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyLnB1c2hfdG9fd3B0
X2ZvcmspOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIubWFrZV9wdWxsX3JlcXVl
c3QpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuZGVsZXRlX2xvY2FsX2JyYW5j
aCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlci5jcmVhdGVfdXBsb2FkX3JlbW90
ZV9pZl9uZWVkZWQpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIuZG9fZXhwb3J0
KToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorICAgICAgICAoVGVzdEV4cG9ydGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5fX2luaXRfXyk6IERlbGV0ZWQuCisgICAgICAgIChU
ZXN0RXhwb3J0ZXIuX2Vuc3VyZV93cHRfcmVwb3NpdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChU
ZXN0RXhwb3J0ZXIuX2ZldGNoX3dwdF9yZXBvc2l0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFRl
c3RFeHBvcnRlci5fZW5zdXJlX25ld19icmFuY2hfbmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChU
ZXN0RXhwb3J0ZXIuZG93bmxvYWRfYW5kX2NvbW1pdF9wYXRjaCk6IERlbGV0ZWQuCisgICAgICAg
IChUZXN0RXhwb3J0ZXIuY2xlYW4pOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNy
ZWF0ZV9icmFuY2hfd2l0aF9wYXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIu
cHVzaF90b193cHRfZm9yayk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIubWFrZV9w
dWxsX3JlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoVGVzdEV4cG9ydGVyLmNyZWF0ZV93cHRf
cHVsbF9yZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5kZWxldGVfbG9j
YWxfYnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5jcmVhdGVfZ2l0X3Bh
dGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RFeHBvcnRlci5jcmVhdGVfdXBsb2FkX3JlbW90
ZSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0RXhwb3J0ZXIuZG9fZXhwb3J0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5
OgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0KToKKyAgICAgICAgKFRlc3RFeHBv
cnRlclRlc3QuTW9ja0dpdC5jcmVhdGVfcGF0Y2gpOgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVz
dC50ZXN0X2V4cG9ydCk6CisgICAgICAgIChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X3dp
dGhfc3BlY2lmaWNfYnJhbmNoKToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QpOgorICAgICAg
ICAoVGVzdEV4cG9ydGVyVGVzdC50ZXN0X2V4cG9ydF9pbnRlcmFjdGl2ZV9tb2RlKToKKyAgICAg
ICAgKFRlc3RFeHBvcnRlclRlc3QudGVzdF9leHBvcnRfaW52YWxpZF90b2tlbik6CisgICAgICAg
IChUZXN0RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0X3dyb25nX3Rva2VuKToKKyAgICAgICAgKFRl
c3RFeHBvcnRlclRlc3QudGVzdF9oYXNfd3B0X2NoYW5nZXMpOgorICAgICAgICAoVGVzdEV4cG9y
dGVyVGVzdC50ZXN0X2hhc19ub193cHRfY2hhbmdlc19mb3Jfbm9fZGlmZik6CisgICAgICAgIChU
ZXN0RXhwb3J0ZXJUZXN0LnRlc3RfaWdub3JlX2NoYW5nZXNfdG9fZXhwZWN0ZWRfZmlsZSk6CisK
IDIwMTgtMDUtMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5hYmxlIHRvIHJlbW92ZSBJbmRleGVkREIgRGF0YWJhc2VzIHdpdGggQ29jb2EgQVBJIHJlbW92
ZURhdGFPZlR5cGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3Vw
bG9hZC5weQppbmRleCA5MzNkYjJkMDg1MjBkODYwYzUyODNmN2FmNDk2ZmExYjk0MjE1MzAzLi5j
ZDE0M2E4MmExYTkzMTkwNWU4NjE2M2VmODJhOTNlMGE1YTcyZGE0IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKQEAgLTI4Niw2ICsyODYsNyBA
QCBjbGFzcyBVcGxvYWQoQWJzdHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgogICAgICAgICBz
dGVwcy5FbnN1cmVCdWdJc09wZW5BbmRBc3NpZ25lZCwKICAgICAgICAgc3RlcHMuUG9zdERpZmYs
CiAgICAgICAgIHN0ZXBzLlN1Ym1pdFRvRVdTLAorICAgICAgICBzdGVwcy5XUFRDaGFuZ2VFeHBv
cnQsCiAgICAgXQogICAgIGxvbmdfaGVscCA9ICIiInVwbG9hZCB1cGxvYWRzIHRoZSBjdXJyZW50
IGRpZmYgdG8gYnVncy53ZWJraXQub3JnLgogICAgIElmIG5vIGJ1ZyBpZCBpcyBwcm92aWRlZCwg
dXBsb2FkIHdpbGwgY3JlYXRlIGEgYnVnLgpAQCAtNTMxLDMgKzUzMiwyNSBAQCBjbGFzcyBDcmVh
dGVCdWcoQ29tbWFuZCk6CiAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9idWdfZnJvbV9jb21taXQo
b3B0aW9ucywgYXJncywgdG9vbCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuY3Jl
YXRlX2J1Z19mcm9tX3BhdGNoKG9wdGlvbnMsIGFyZ3MsIHRvb2wpCisKKworY2xhc3MgV1BUQ2hh
bmdlRXhwb3J0KEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21tYW5kKToKKyAgICBuYW1lID0gIndw
dC1jaGFuZ2UtZXhwb3J0IgorICAgIGhlbHBfdGV4dCA9ICJPcGVucyBhIHB1bGwgcmVxdWVzdCB0
byBzeW5jaHJvbml6ZSBhbnkgY2hhbmdlcyBpbiB0aGUgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkiCisgICAgYXJndW1lbnRfbmFtZXMgPSAiW0JV
R0lEXSIKKyAgICBzdGVwcyA9IFsKKyAgICAgICAgc3RlcHMuV1BUQ2hhbmdlRXhwb3J0LAorICAg
IF0KKworICAgIGxvbmdfaGVscCA9ICIiIk9wZW5zIGEgcHVsbCByZXF1ZXN0IHRvIHRoZSB3M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzCisgICAgZ2l0aHViIHJlcG8gZm9yIGFueSBjaGFuZ2VzIGluIHRo
ZQorICAgIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMgZGlyZWN0
b3J5LiBUaGlzIHN0ZXAKKyAgICB3aWxsIG5vb3AgaWYgdGhlcmUgYXJlIG5vIGNoYW5nZXMgaW4g
dGhlIHdlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkuCisgICAgVGhlIHVzZXIgd2lsbCBiZSBw
cm9tcHRlZCB0byBwcm92aWRlIGEgZ2l0aHViIHVzZXJuYW1lIGFuZCBPQXV0aCB0b2tlbgorICAg
IHRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgcnVuLgorICAgICIiIgorCisgICAgZGVmIF9wcmVwYXJl
X3N0YXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgorICAgICAgICBzdGF0ZSA9IHt9Cisg
ICAgICAgIHN0YXRlWyJidWdfaWQiXSA9IHNlbGYuX2J1Z19pZChvcHRpb25zLCBhcmdzLCB0b29s
LCBzdGF0ZSkKKyAgICAgICAgcmV0dXJuIHN0YXRlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKaW5kZXggZjNjMTcwZTMxMmVkZDc4NjRmOWQ4NWFkOWM3
NzU5ZjJiYzkxYzkzZi4uZGMwNzg0ZjYxNTFlOGFmZjg3OTRhNjkwNzZkN2U3ZmMyYzhmY2E5MSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQpAQCAt
NjYsMyArNjYsNCBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudXBkYXRlIGltcG9ydCBVcGRh
dGUKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy51cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2Vy
IGltcG9ydCBVcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmlld2VyCiBmcm9tIHdlYmtpdHB5LnRvb2wu
c3RlcHMudmFsaWRhdGVjaGFuZ2Vsb2dzIGltcG9ydCBWYWxpZGF0ZUNoYW5nZUxvZ3MKIGZyb20g
d2Via2l0cHkudG9vbC5zdGVwcy52YWxpZGF0ZXJldmlld2VyIGltcG9ydCBWYWxpZGF0ZVJldmll
d2VyCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMud3B0Y2hhbmdlZXhwb3J0IGltcG9ydCBXUFRD
aGFuZ2VFeHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy93cHRjaGFuZ2VleHBvcnQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
d3B0Y2hhbmdlZXhwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMjVmZWJkYjhmYTI0ZjBkNDVkY2ZjYTJk
MzY1ODk5ODcyNjlhY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvd3B0Y2hhbmdlZXhwb3J0LnB5CkBAIC0wLDAgKzEsNTQgQEAKKyMgQ29weXJp
Z2h0IChjKSAyMDE4LCBCb2NvdXAgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LnRvb2wuc3Rl
cHMuYWJzdHJhY3RzdGVwIGltcG9ydCBBYnN0cmFjdFN0ZXAKK2Zyb20gd2Via2l0cHkudG9vbC5z
dGVwcy5vcHRpb25zIGltcG9ydCBPcHRpb25zCitmcm9tIHdlYmtpdHB5LnczYy50ZXN0X2V4cG9y
dGVyIGltcG9ydCBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlciwgcGFyc2VfYXJncworCisKK2NsYXNz
IFdQVENoYW5nZUV4cG9ydChBYnN0cmFjdFN0ZXApOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiBvcHRpb25zKGNscyk6CisgICAgICAgIHJldHVybiBBYnN0cmFjdFN0ZXAub3B0aW9ucygpICsg
WworICAgICAgICAgICAgT3B0aW9ucy5ub25faW50ZXJhY3RpdmUsCisgICAgICAgICAgICBPcHRp
b25zLmdpdF9jb21taXQsCisgICAgICAgIF0KKworICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgor
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKKyAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgIGJ1Z19pZCA9IHN0YXRlLmdldCgiYnVnX2lkIikKKyAgICAgICAgaWYg
bm90IGJ1Z19pZDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGFyZ3MgPSBbIi0tYnVn
Iiwgc3RyKGJ1Z19pZCksICItLWNyZWF0ZS1wciJdCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5naXRfY29tbWl0OgorICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZ2l0LWNvbW1pdCIpCisg
ICAgICAgICAgICBhcmdzLmFwcGVuZChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpCisKKyAgICAg
ICAgdGVzdF9leHBvcnRlciA9IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKHNlbGYuX3Rvb2wsIHBh
cnNlX2FyZ3MoYXJncykpCisgICAgICAgIG1lc3NhZ2UgPSAnV291bGQgeW91IGxpa2UgdG8gZXhw
b3J0IHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyB0byBhIFdQVCBHaXRIdWIgcmVwb3Np
dG9yeT8nCisgICAgICAgIGlmIHRlc3RfZXhwb3J0ZXIuaGFzX3dwdF9jaGFuZ2VzKCkgYW5kIHNl
bGYuX3Rvb2wudXNlci5jb25maXJtKG1lc3NhZ2UpOgorICAgICAgICAgICAgdGVzdF9leHBvcnRl
ci5kb19leHBvcnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29t
bW9uLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvY29tbW9uLnB5CmluZGV4IGExNGFh
OTUzNTRiOTA2NzM5NDEwMTc2YzFiMDM3OGM3ZDcyMzUzMzIuLjY2ZmEzNGYyYTdlOWFmMTczNzZi
NjQzY2I0YzFhNjRhOTg4OGIyMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL2NvbW1vbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9jb21tb24ucHkK
QEAgLTMwLDEwICszMCwxMSBAQAogCiBpbXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKK2ltcG9y
dCBvcwogCiAKLVdQVF9HSF9PUkcgPSAndzNjJwotV1BUX0dIX1JFUE9fTkFNRSA9ICd3ZWItcGxh
dGZvcm0tdGVzdHMnCitXUFRfR0hfT1JHID0gb3MuZW52aXJvbi5nZXQoJ1dQVF9HSF9PUkcnLCAn
dzNjJykKK1dQVF9HSF9SRVBPX05BTUUgPSBvcy5lbnZpcm9uLmdldCgnV1BUX0dIX1JFUE9fTkFN
RScsICd3ZWItcGxhdGZvcm0tdGVzdHMnKQogV1BUX0dIX1VSTCA9ICdodHRwczovL2dpdGh1Yi5j
b20vJXMvJXMvJyAlIChXUFRfR0hfT1JHLCBXUFRfR0hfUkVQT19OQU1FKQogV1BUX01JUlJPUl9V
UkwgPSAnaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2V4dGVybmFsL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMuZ2l0JwogV1BUX0dIX1NTSF9VUkxfVEVNUExBVEUgPSAnaHR0cHM6Ly97
fUBnaXRodWIuY29tLyVzLyVzLmdpdCcgJSAoV1BUX0dIX09SRywgV1BUX0dIX1JFUE9fTkFNRSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5CmluZGV4IDI2MTUw
M2Y4ZTNlZGQxODkzNDc0YjRjYjI0MTAzMTM5N2QyZTgyNzQuLmY3NjJkZTQ2NDdjNDcyZmJlNjBj
ZmU3NDc0Y2Y2ODU2OWZmYjcxYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfZXhwb3J0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9leHBvcnRlci5weQpAQCAtMjgsNiArMjgsOCBAQCBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBs
b2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCB0aW1lCitpbXBvcnQganNvbgorZnJvbSB1cmxsaWIy
IGltcG9ydCBIVFRQRXJyb3IKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmdp
dCBpbXBvcnQgR2l0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CkBAIC0z
NSwxNiArMzcsMTkgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBC
dWd6aWxsYQogZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0
RmluZGVyCiBmcm9tIHdlYmtpdHB5LnczYy53cHRfZ2l0aHViIGltcG9ydCBXUFRHaXRIdWIKIGZy
b20gd2Via2l0cHkudzNjLndwdF9saW50ZXIgaW1wb3J0IFdQVExpbnRlcgorZnJvbSB3ZWJraXRw
eS53M2MuY29tbW9uIGltcG9ydCBXUFRfR0hfT1JHCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1v
aXplZCBpbXBvcnQgbWVtb2l6ZWQKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQogCiBXRUJLSVRfV1BUX0RJUiA9ICdMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzJwotV1BUX1BSX1VSTCA9ICJodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9wdWxsLyIKK1dQVF9QUl9VUkwgPSAiaHR0cHM6Ly9naXRodWIuY29tLyVzL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9wdWxsLyIgJSBXUFRfR0hfT1JHCiBXRUJLSVRfRVhQT1JUX1BSX0xB
QkVMID0gJ3dlYmtpdC1leHBvcnQnCiAKK0VYQ0xVREVEX0ZJTEVfU1VGRklYRVMgPSBbJy1leHBl
Y3RlZC50eHQnLCAnLndvcmtlci5odG1sJywgJy5hbnkuaHRtbCcsICcuYW55Lndvcmtlci5odG1s
J10KIAotY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAKK2NsYXNzIFdlYlBsYXRmb3JtVGVz
dEV4cG9ydGVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIG9wdGlvbnMs
IGdpdENsYXNzPUdpdCwgYnVnemlsbGFDbGFzcz1CdWd6aWxsYSwgV1BUR2l0SHViQ2xhc3M9V1BU
R2l0SHViLCBXUFRMaW50ZXJDbGFzcz1XUFRMaW50ZXIpOgogICAgICAgICBzZWxmLl9ob3N0ID0g
aG9zdAogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gaG9zdC5maWxlc3lzdGVtCkBAIC01Miw2
ICs1Nyw4IEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogCiAgICAgICAgIHNlbGYuX2hv
c3QuaW5pdGlhbGl6ZV9zY20oKQogCisgICAgICAgIHNlbGYuX1dQVEdpdEh1YkNsYXNzID0gV1BU
R2l0SHViQ2xhc3MKKyAgICAgICAgc2VsZi5fZ2l0Q2xhc3MgPSBnaXRDbGFzcwogICAgICAgICBz
ZWxmLl9idWd6aWxsYSA9IGJ1Z3ppbGxhQ2xhc3MoKQogICAgICAgICBzZWxmLl9idWdfaWQgPSBv
cHRpb25zLmJ1Z19pZAogICAgICAgICBpZiBub3Qgc2VsZi5fYnVnX2lkOgpAQCAtNjQsNDUgKzcx
LDE3MiBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgIHdlYmtpdF9m
aW5kZXIgPSBXZWJLaXRGaW5kZXIoc2VsZi5fZmlsZXN5c3RlbSkKICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMucmVwb3NpdG9yeV9kaXJlY3RvcnkgPSB3ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93
ZWJraXRfYmFzZSgnV2ViS2l0QnVpbGQnLCAndzNjLXRlc3RzJywgJ3dlYi1wbGF0Zm9ybS10ZXN0
cycpCiAKLSAgICAgICAgc2VsZi5fZ2l0ID0gc2VsZi5fZW5zdXJlX3dwdF9yZXBvc2l0b3J5KCJo
dHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiLCBzZWxmLl9vcHRp
b25zLnJlcG9zaXRvcnlfZGlyZWN0b3J5LCBnaXRDbGFzcykKICAgICAgICAgc2VsZi5fbGludGVy
ID0gV1BUTGludGVyQ2xhc3Moc2VsZi5fb3B0aW9ucy5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgaG9z
dC5maWxlc3lzdGVtKQogCisgICAgICAgIHNlbGYuX2J1Z3ppbGxhX3VybCA9ICJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9IiArIHN0cihzZWxmLl9idWdfaWQpCisgICAg
ICAgIHNlbGYuX2NvbW1pdF9tZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlCisgICAgICAgIGlmIG5v
dCBzZWxmLl9jb21taXRfbWVzc2FnZToKKyAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9tZXNzYWdl
ID0gJ1dlYktpdCBleHBvcnQgb2YgJyArIHNlbGYuX2J1Z3ppbGxhX3VybCBpZiBzZWxmLl9idWdf
aWQgZWxzZSAnRXhwb3J0IG1hZGUgZnJvbSBhIFdlYktpdCByZXBvc2l0b3J5JworCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIHVzZXJuYW1lKHNlbGYpOgorICAgICAgICBpZiBoYXNhdHRyKHNlbGYs
ICdfdXNlcm5hbWUnKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl91c2VybmFtZQorCisgICAg
ICAgIHNlbGYuX2Vuc3VyZV91c2VybmFtZV9hbmRfdG9rZW4oc2VsZi5fb3B0aW9ucykKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX3VzZXJuYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdG9rZW4o
c2VsZik6CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ190b2tlbicpOgorICAgICAgICAgICAg
cmV0dXJuIHNlbGYuX3Rva2VuCisKKyAgICAgICAgc2VsZi5fZW5zdXJlX3VzZXJuYW1lX2FuZF90
b2tlbihzZWxmLl9vcHRpb25zKQorICAgICAgICByZXR1cm4gc2VsZi5fdG9rZW4KKworICAgIEBw
cm9wZXJ0eQorICAgIEBtZW1vaXplZAorICAgIGRlZiBfZ2l0aHViKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fV1BUR2l0SHViQ2xhc3Moc2VsZi5faG9zdCwgc2VsZi51c2VybmFtZSwgc2Vs
Zi50b2tlbikgaWYgc2VsZi51c2VybmFtZSBhbmQgc2VsZi50b2tlbiBlbHNlIE5vbmUKKworICAg
IEBwcm9wZXJ0eQorICAgIEBtZW1vaXplZAorICAgIGRlZiBfd3B0X2ZvcmtfYnJhbmNoX2dpdGh1
Yl91cmwoc2VsZik6CisgICAgICAgIHJldHVybiAiaHR0cHM6Ly9naXRodWIuY29tLyIgKyBzZWxm
LnVzZXJuYW1lICsgIi93ZWItcGxhdGZvcm0tdGVzdHMvdHJlZS8iICsgc2VsZi5fcHVibGljX2Jy
YW5jaF9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBAbWVtb2l6ZWQKKyAgICBkZWYgX3dwdF9m
b3JrX3JlbW90ZShzZWxmKToKKyAgICAgICAgd3B0X2ZvcmtfcmVtb3RlID0gc2VsZi5fb3B0aW9u
cy5yZXBvc2l0b3J5X3JlbW90ZQorICAgICAgICBpZiBub3Qgd3B0X2ZvcmtfcmVtb3RlOgorICAg
ICAgICAgICAgd3B0X2ZvcmtfcmVtb3RlID0gc2VsZi51c2VybmFtZQorCisgICAgICAgIHJldHVy
biB3cHRfZm9ya19yZW1vdGUKKworICAgIEBwcm9wZXJ0eQorICAgIEBtZW1vaXplZAorICAgIGRl
ZiBfd3B0X2ZvcmtfcHVzaF91cmwoc2VsZik6CisgICAgICAgIHdwdF9mb3JrX3B1c2hfdXJsID0g
c2VsZi5fb3B0aW9ucy5yZXBvc2l0b3J5X3JlbW90ZV91cmwKKyAgICAgICAgaWYgbm90IHdwdF9m
b3JrX3B1c2hfdXJsOgorICAgICAgICAgICAgd3B0X2ZvcmtfcHVzaF91cmwgPSAiaHR0cHM6Ly8i
ICsgc2VsZi51c2VybmFtZSArICJAZ2l0aHViLmNvbS8iICsgc2VsZi51c2VybmFtZSArICIvd2Vi
LXBsYXRmb3JtLXRlc3RzLmdpdCIKKworICAgICAgICByZXR1cm4gd3B0X2ZvcmtfcHVzaF91cmwK
KworICAgIEBwcm9wZXJ0eQorICAgIEBtZW1vaXplZAorICAgIGRlZiBfZ2l0KHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fZW5zdXJlX3dwdF9yZXBvc2l0b3J5KCJodHRwczovL2dpdGh1Yi5j
b20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiLCBzZWxmLl9vcHRpb25zLnJlcG9zaXRvcnlf
ZGlyZWN0b3J5LCBzZWxmLl9naXRDbGFzcykKKworICAgIEBwcm9wZXJ0eQorICAgIEBtZW1vaXpl
ZAorICAgIGRlZiBfYnJhbmNoX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9lbnN1
cmVfbmV3X2JyYW5jaF9uYW1lKCkKKworICAgIEBwcm9wZXJ0eQorICAgIEBtZW1vaXplZAorICAg
IGRlZiBfcHVibGljX2JyYW5jaF9uYW1lKHNlbGYpOgorICAgICAgICBvcHRpb25zID0gc2VsZi5f
b3B0aW9ucworICAgICAgICByZXR1cm4gb3B0aW9ucy5wdWJsaWNfYnJhbmNoX25hbWUgaWYgb3B0
aW9ucy5wdWJsaWNfYnJhbmNoX25hbWUgZWxzZSBzZWxmLl9icmFuY2hfbmFtZQorCisgICAgQHBy
b3BlcnR5CisgICAgQG1lbW9pemVkCisgICAgZGVmIF93cHRfcGF0Y2goc2VsZik6CisgICAgICAg
IHBhdGNoX2RhdGEgPSBzZWxmLl9ob3N0LnNjbSgpLmNyZWF0ZV9wYXRjaChzZWxmLl9vcHRpb25z
LmdpdF9jb21taXQsIFtXRUJLSVRfV1BUX0RJUl0pIG9yICcnCisgICAgICAgIHBhdGNoX2RhdGEg
PSBzZWxmLl9zdHJpcF9pZ25vcmVkX2ZpbGVzX2Zyb21fZGlmZihwYXRjaF9kYXRhKQorICAgICAg
ICBpZiBub3QgJ2RpZmYnIGluIHBhdGNoX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gJycKKyAg
ICAgICAgcmV0dXJuIHBhdGNoX2RhdGEKKworICAgIGRlZiBoYXNfd3B0X2NoYW5nZXMoc2VsZik6
CisgICAgICAgIHJldHVybiBib29sKHNlbGYuX3dwdF9wYXRjaCkKKworICAgIGRlZiBfZmluZF9m
aWxlbmFtZShzZWxmLCBsaW5lKToKKyAgICAgICAgcmV0dXJuIGxpbmUuc3BsaXQoJyAnKVstMV0K
KworICAgIGRlZiBfaXNfaWdub3JlZF9maWxlKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgZm9y
IHN1ZmZpeCBpbiBFWENMVURFRF9GSUxFX1NVRkZJWEVTOgorICAgICAgICAgICAgaWYgZmlsZW5h
bWUuZW5kc3dpdGgoc3VmZml4KToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAg
ICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfc3RyaXBfaWdub3JlZF9maWxlc19mcm9tX2RpZmYo
c2VsZiwgZGlmZik6CisgICAgICAgIGxpbmVzID0gZGlmZi5zcGxpdCgnXG4nKQorICAgICAgICBp
bmNsdWRlX2ZpbGUgPSBUcnVlCisgICAgICAgIG5ld19saW5lcyA9IFtdCisgICAgICAgIGZvciBs
aW5lIGluIGxpbmVzOgorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdkaWZmJyk6Cisg
ICAgICAgICAgICAgICAgaW5jbHVkZV9maWxlID0gVHJ1ZQorICAgICAgICAgICAgICAgIGZpbGVu
YW1lID0gc2VsZi5fZmluZF9maWxlbmFtZShsaW5lKQorICAgICAgICAgICAgICAgIGlmIHNlbGYu
X2lzX2lnbm9yZWRfZmlsZShmaWxlbmFtZSk6CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVf
ZmlsZSA9IEZhbHNlCisgICAgICAgICAgICBpZiBpbmNsdWRlX2ZpbGU6CisgICAgICAgICAgICAg
ICAgbmV3X2xpbmVzLmFwcGVuZChsaW5lKQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obmV3
X2xpbmVzKQorCisgICAgZGVmIHdyaXRlX2dpdF9wYXRjaF9maWxlKHNlbGYpOgorICAgICAgICBf
LCBwYXRjaF9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5vcGVuX2JpbmFyeV90ZW1wZmlsZSgnd3B0
X2V4cG9ydF9wYXRjaCcpCisgICAgICAgIHBhdGNoX2RhdGEgPSBzZWxmLl93cHRfcGF0Y2gKKyAg
ICAgICAgaWYgbm90ICdkaWZmJyBpbiBwYXRjaF9kYXRhOgorICAgICAgICAgICAgX2xvZy5pbmZv
KCdObyBjaGFuZ2VzIHRvIHVwc3RyZWFtLCBwYXRjaCBkYXRhIGlzOiAiJXMiJyAlIChwYXRjaF9k
YXRhKSkKKyAgICAgICAgICAgIHJldHVybiAnJworICAgICAgICAjIEZJWE1FOiBXZSBjYW4gcHJv
YmFibHkgdHJ5IHRvIHVzZSAtLXJlbGF0aXZlIGdpdCBwYXJhbWV0ZXIgdG8gbm90IGRvIHRoYXQg
cmVwbGFjZW1lbnQuCisgICAgICAgIHBhdGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJlcGxhY2UoV0VC
S0lUX1dQVF9ESVIgKyAnLycsICcnKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3Rl
eHRfZmlsZShwYXRjaF9maWxlLCBwYXRjaF9kYXRhKQorICAgICAgICByZXR1cm4gcGF0Y2hfZmls
ZQorCisgICAgZGVmIF9wcm9tcHRfZm9yX3Rva2VuKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBp
ZiBvcHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAg
ICAgIHJldHVybiBzZWxmLl9ob3N0LnVzZXIucHJvbXB0X3Bhc3N3b3JkKCdFbnRlciBHaXRIdWIg
T0F1dGggdG9rZW4gKG9yIGVtcHR5IHN0cmluZyB0byBza2lwIGNyZWF0aW5nIGEgcHVsbCByZXF1
ZXN0KTogJykKKworICAgIGRlZiBfcHJvbXB0X2Zvcl91c2VybmFtZShzZWxmLCBvcHRpb25zKToK
KyAgICAgICAgaWYgb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6CisgICAgICAgICAgICByZXR1cm4g
Tm9uZQorICAgICAgICByZXR1cm4gc2VsZi5faG9zdC51c2VyLnByb21wdCgnRW50ZXIgeW91ciBH
aXRIdWIgdXNlcm5hbWU6ICcpCisKKyAgICBkZWYgX2Vuc3VyZV91c2VybmFtZV9hbmRfdG9rZW4o
c2VsZiwgb3B0aW9ucyk6CiAgICAgICAgIHNlbGYuX3VzZXJuYW1lID0gb3B0aW9ucy51c2VybmFt
ZQogICAgICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6CisgICAgICAgICAgICAjIEZJWE1FOiBV
c2UgdGhlIGtleWNoYWluIHRvIHN0b3JlIHVzZXJuYW1lIGFuZCBvYXV0aCB0b2tlbiBpbnN0ZWFk
IG9mIC5naXQvY29uZmlnCiAgICAgICAgICAgICBzZWxmLl91c2VybmFtZSA9IHNlbGYuX2dpdC5s
b2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScpLnJzdHJpcCgpCiAgICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fdXNlcm5hbWU6CiAgICAgICAgICAgICAgICAgc2VsZi5fdXNlcm5hbWUgPSBvcy5l
bnZpcm9uLmdldCgnR0lUSFVCX1VTRVJOQU1FJykKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91
c2VybmFtZToKKyAgICAgICAgICAgICAgICBzZWxmLl91c2VybmFtZSA9IHNlbGYuX3Byb21wdF9m
b3JfdXNlcm5hbWUob3B0aW9ucykKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91c2VybmFtZToK
ICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNaXNzaW5nIEdpdEh1YiB1c2VybmFt
ZSwgcGxlYXNlIHByb3ZpZGUgaXQgYXMgYSBjb21tYW5kIGFyZ3VtZW50IChzZWUgaGVscCBmb3Ig
dGhlIGNvbW1hbmQpLiIpCi0gICAgICAgIGVsaWYgbm90IHNlbGYuX2dpdC5sb2NhbF9jb25maWco
J2dpdGh1Yi51c2VybmFtZScpOgotICAgICAgICAgICAgc2VsZi5fZ2l0LnNldF9sb2NhbF9jb25m
aWcoJ2dpdGh1Yi51c2VybmFtZScsIHNlbGYuX3VzZXJuYW1lKQogCiAgICAgICAgIHNlbGYuX3Rv
a2VuID0gb3B0aW9ucy50b2tlbgogICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46CiAgICAgICAg
ICAgICBzZWxmLl90b2tlbiA9IHNlbGYuX2dpdC5sb2NhbF9jb25maWcoJ2dpdGh1Yi50b2tlbicp
LnJzdHJpcCgpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9rZW46CiAgICAgICAgICAgICAg
ICAgc2VsZi5fdG9rZW4gPSBvcy5lbnZpcm9uLmdldCgnR0lUSFVCX1RPS0VOJykKKyAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl90b2tlbjoKKyAgICAgICAgICAgICAgICBzZWxmLl90b2tlbiA9IHNl
bGYuX3Byb21wdF9mb3JfdG9rZW4ob3B0aW9ucykKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90
b2tlbjoKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oIk1pc3NpbmcgR2l0SHViIHRva2VuLCB0
aGUgc2NyaXB0IHdpbGwgbm90IGJlIGFibGUgdG8gY3JlYXRlIGEgcHVsbCByZXF1ZXN0IHRvIFcz
QyB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeS4iKQotICAgICAgICBlbGlmIG5vdCBzZWxm
Ll9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nKToKLSAgICAgICAgICAgIHNlbGYuX2dp
dC5zZXRfbG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nLCBzZWxmLl90b2tlbikKLQotICAgICAg
ICBzZWxmLl9naXRodWIgPSBXUFRHaXRIdWJDbGFzcyhzZWxmLl9ob3N0LCBzZWxmLl91c2VybmFt
ZSwgc2VsZi5fdG9rZW4pIGlmIHNlbGYuX3VzZXJuYW1lIGFuZCBzZWxmLl90b2tlbiBlbHNlIE5v
bmUKLQotICAgICAgICBzZWxmLl9icmFuY2hfbmFtZSA9IHNlbGYuX2Vuc3VyZV9uZXdfYnJhbmNo
X25hbWUoKQotICAgICAgICBzZWxmLl9wdWJsaWNfYnJhbmNoX25hbWUgPSBvcHRpb25zLnB1Ymxp
Y19icmFuY2hfbmFtZSBpZiBvcHRpb25zLnB1YmxpY19icmFuY2hfbmFtZSBlbHNlIHNlbGYuX2Jy
YW5jaF9uYW1lCi0gICAgICAgIHNlbGYuX2J1Z3ppbGxhX3VybCA9ICJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9IiArIHN0cihzZWxmLl9idWdfaWQpCi0gICAgICAgIHNl
bGYuX2NvbW1pdF9tZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlCi0gICAgICAgIGlmIG5vdCBzZWxm
Ll9jb21taXRfbWVzc2FnZToKLSAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9tZXNzYWdlID0gJ1dl
YktpdCBleHBvcnQgb2YgJyArIHNlbGYuX2J1Z3ppbGxhX3VybCBpZiBzZWxmLl9idWdfaWQgZWxz
ZSAnRXhwb3J0IG1hZGUgZnJvbSBhIFdlYktpdCByZXBvc2l0b3J5JwogCi0gICAgICAgIHNlbGYu
X3dwdF9mb3JrX3JlbW90ZSA9IG9wdGlvbnMucmVwb3NpdG9yeV9yZW1vdGUKLSAgICAgICAgaWYg
bm90IHNlbGYuX3dwdF9mb3JrX3JlbW90ZToKLSAgICAgICAgICAgIHNlbGYuX3dwdF9mb3JrX3Jl
bW90ZSA9IHNlbGYuX3VzZXJuYW1lCisgICAgICAgIGlmIHNlbGYuX3Rva2VuOgorICAgICAgICAg
ICAgc2VsZi5fdmFsaWRhdGVfYW5kX3NhdmVfdG9rZW4oc2VsZi5fdXNlcm5hbWUsIHNlbGYuX3Rv
a2VuKQogCi0gICAgICAgIHNlbGYuX3dwdF9mb3JrX3B1c2hfdXJsID0gb3B0aW9ucy5yZXBvc2l0
b3J5X3JlbW90ZV91cmwKLSAgICAgICAgaWYgbm90IHNlbGYuX3dwdF9mb3JrX3B1c2hfdXJsOgot
ICAgICAgICAgICAgc2VsZi5fd3B0X2ZvcmtfcHVzaF91cmwgPSAiaHR0cHM6Ly8iICsgc2VsZi5f
dXNlcm5hbWUgKyAiQGdpdGh1Yi5jb20vIiArIHNlbGYuX3VzZXJuYW1lICsgIi93ZWItcGxhdGZv
cm0tdGVzdHMuZ2l0IgorICAgIGRlZiBfdmFsaWRhdGVfYW5kX3NhdmVfdG9rZW4oc2VsZiwgdXNl
cm5hbWUsIHRva2VuKToKKyAgICAgICAgdXJsID0gJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNl
cj9hY2Nlc3NfdG9rZW49JXMnICUgKHRva2VuLCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
cmVzcG9uc2UgPSBzZWxmLl9ob3N0LndlYi5yZXF1ZXN0KG1ldGhvZD0nR0VUJywgdXJsPXVybCwg
ZGF0YT1Ob25lKQorICAgICAgICBleGNlcHQgSFRUUEVycm9yIGFzIGU6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oIk9BdXRoIHRva2VuIGlzIG5vdCB2YWxpZCIpCisgICAgICAgIGRhdGEg
PSBqc29uLmxvYWQocmVzcG9uc2UpCisgICAgICAgIGxvZ2luID0gZGF0YS5nZXQoJ2xvZ2luJywg
Tm9uZSkKKyAgICAgICAgaWYgbG9naW4gIT0gdXNlcm5hbWU6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oIk9BdXRoIHRva2VuIGRvZXMgbm90IG1hdGNoIHRoZSBwcm92aWRlZCB1c2VybmFt
ZS4gUHJvdmlkZWQgdXNlcjogJXMsIGdpdGh1YiBsb2dpbjogJXMiICUgKHVzZXJuYW1lLCBsb2dp
bikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFVzZXJuYW1lIGFuZCB0b2tlbiBhcmUg
dmFsaWQuIFNhdmUgdGhlbSBpbiB0aGUgZ2l0IGNvbmZpZyBzbyB3ZQorICAgICAgICAgICAgIyBk
byBub3QgbmVlZCB0byBhc2sgZm9yIHRoZW0gYWdhaW4KKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll9naXQubG9jYWxfY29uZmlnKCdnaXRodWIudG9rZW4nKToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9naXQuc2V0X2xvY2FsX2NvbmZpZygnZ2l0aHViLnRva2VuJywgdG9rZW4pCisgICAgICAgICAg
ICBpZiBub3Qgc2VsZi5fZ2l0LmxvY2FsX2NvbmZpZygnZ2l0aHViLnVzZXJuYW1lJyk6CisgICAg
ICAgICAgICAgICAgc2VsZi5fZ2l0LnNldF9sb2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScs
IHVzZXJuYW1lKQogCiAgICAgZGVmIF9lbnN1cmVfd3B0X3JlcG9zaXRvcnkoc2VsZiwgdXJsLCB3
cHRfcmVwb3NpdG9yeV9kaXJlY3RvcnksIGdpdENsYXNzKToKICAgICAgICAgZ2l0ID0gTm9uZQpA
QCAtMTU2LDcgKzI5MCw3IEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICAg
ICAgc2VsZi5fZ2l0LmRlbGV0ZV9icmFuY2goc2VsZi5fYnJhbmNoX25hbWUpCiAgICAgICAgICAg
ICBzZWxmLl9naXQuY2hlY2tvdXRfbmV3X2JyYW5jaChzZWxmLl9icmFuY2hfbmFtZSkKICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fZ2l0LmFwcGx5X21haWxfcGF0Y2goW3BhdGNoLCAn
LS1leGNsdWRlJywgJyotZXhwZWN0ZWQudHh0JywgJy0tZXhjbHVkZScsICcqLndvcmtlci5odG1s
JywgJy0tZXhjbHVkZScsICcqLmFueS5odG1sJywgJy0tZXhjbHVkZScsICcqLmFueS53b3JrZXIu
aHRtbCddKQorICAgICAgICAgICAgc2VsZi5fZ2l0LmFwcGx5X21haWxfcGF0Y2goW3BhdGNoXSkK
ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgX2xvZy53YXJuaW5n
KGUpCiAgICAgICAgICAgICBzZWxmLl9naXQuYXBwbHlfbWFpbF9wYXRjaChbJy0tYWJvcnQnXSkK
QEAgLTE2NSwxNyArMjk5LDE2IEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAg
ICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHB1c2hfdG9fd3B0X2Zvcmsoc2VsZik6Ci0gICAgICAg
IHNlbGYuY3JlYXRlX3VwbG9hZF9yZW1vdGUoKQotICAgICAgICB3cHRfZm9ya19icmFuY2hfZ2l0
aHViX3VybCA9ICJodHRwczovL2dpdGh1Yi5jb20vIiArIHNlbGYuX3VzZXJuYW1lICsgIi93ZWIt
cGxhdGZvcm0tdGVzdHMvdHJlZS8iICsgc2VsZi5fcHVibGljX2JyYW5jaF9uYW1lCisgICAgICAg
IHNlbGYuY3JlYXRlX3VwbG9hZF9yZW1vdGVfaWZfbmVlZGVkKCkKICAgICAgICAgX2xvZy5pbmZv
KCdQdXNoaW5nIGJyYW5jaCAnICsgc2VsZi5fYnJhbmNoX25hbWUgKyAiIHRvICIgKyBzZWxmLl9n
aXQucmVtb3RlKFsiZ2V0LXVybCIsIHNlbGYuX3dwdF9mb3JrX3JlbW90ZV0pLnJzdHJpcCgpKQog
ICAgICAgICBfbG9nLmluZm8oJ1RoaXMgbWF5IHRha2Ugc29tZSB0aW1lJykKICAgICAgICAgc2Vs
Zi5fZ2l0LnB1c2goW3NlbGYuX3dwdF9mb3JrX3JlbW90ZSwgc2VsZi5fYnJhbmNoX25hbWUgKyAi
OiIgKyBzZWxmLl9wdWJsaWNfYnJhbmNoX25hbWUsICctZiddKQotICAgICAgICBfbG9nLmluZm8o
J0JyYW5jaCBhdmFpbGFibGUgYXQgJyArIHdwdF9mb3JrX2JyYW5jaF9naXRodWJfdXJsKQorICAg
ICAgICBfbG9nLmluZm8oJ0JyYW5jaCBhdmFpbGFibGUgYXQgJyArIHNlbGYuX3dwdF9mb3JrX2Jy
YW5jaF9naXRodWJfdXJsKQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIG1ha2VfcHVs
bF9yZXF1ZXN0KHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5fZ2l0aHViOgotICAgICAgICAg
ICAgX2xvZy5pbmZvKCdNaXNzaW5nIGluZm9ybWF0aW9uIHRvIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCcpCisgICAgICAgICAgICBfbG9nLmluZm8oJ1NraXBwaW5nIHB1bGwgcmVxdWVzdCBiZWNhdXNl
IE9BdXRoIHRva2VuIHdhcyBub3QgcHJvdmlkZWQuIFlvdSBjYW4gb3BlbiB0aGUgcHVsbCByZXF1
ZXN0IG1hbnVhbGx5IHVzaW5nIHRoZSBicmFuY2ggJyArIHNlbGYuX3dwdF9mb3JrX2JyYW5jaF9n
aXRodWJfdXJsKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgX2xvZy5pbmZvKCdNYWtp
bmcgcHVsbCByZXF1ZXN0JykKQEAgLTE4OSw3ICszMjIsNyBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIo
b2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLl9naXRodWIuYWRkX2xhYmVsKHByX251bWJl
ciwgV0VCS0lUX0VYUE9SVF9QUl9MQUJFTCkKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoZSkKLSAgICAgICAgICAgICAgICBf
bG9nLmluZm8oJ0NvdWxkIG5vdCBhZGQgbGFiZWwgIiVzIiB0byBwciAjJXMuIFVzZXIgIiVzIiBt
YXkgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1cGRhdGUgbGFiZWxzIGluIHRoZSB3M2Mvd2ViLXBs
YXRmb3JtLXRlc3QgcmVwby4nICUgKFdFQktJVF9FWFBPUlRfUFJfTEFCRUwsIHByX251bWJlciwg
c2VsZi5fdXNlcm5hbWUpKQorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnQ291bGQgbm90IGFk
ZCBsYWJlbCAiJXMiIHRvIHByICMlcy4gVXNlciAiJXMiIG1heSBub3QgaGF2ZSBwZXJtaXNzaW9u
IHRvIHVwZGF0ZSBsYWJlbHMgaW4gdGhlIHczYy93ZWItcGxhdGZvcm0tdGVzdCByZXBvLicgJSAo
V0VCS0lUX0VYUE9SVF9QUl9MQUJFTCwgcHJfbnVtYmVyLCBzZWxmLnVzZXJuYW1lKSkKICAgICAg
ICAgaWYgc2VsZi5fYnVnX2lkIGFuZCBwcl9udW1iZXI6CiAgICAgICAgICAgICBzZWxmLl9idWd6
aWxsYS5wb3N0X2NvbW1lbnRfdG9fYnVnKHNlbGYuX2J1Z19pZCwgIlN1Ym1pdHRlZCB3ZWItcGxh
dGZvcm0tdGVzdHMgcHVsbCByZXF1ZXN0OiAiICsgV1BUX1BSX1VSTCArIHN0cihwcl9udW1iZXIp
KQogCkBAIC0yMDYsMzAgKzMzOSwxNiBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAg
ICAgICAgcmV0dXJuIHByX251bWJlcgogCiAgICAgZGVmIGRlbGV0ZV9sb2NhbF9icmFuY2goc2Vs
Zik6Ci0gICAgICAgIF9sb2cuaW5mbygnUmVtb3ZpbmcgYnJhbmNoICcgKyBzZWxmLl9icmFuY2hf
bmFtZSkKKyAgICAgICAgX2xvZy5pbmZvKCdSZW1vdmluZyBsb2NhbCBicmFuY2ggJyArIHNlbGYu
X2JyYW5jaF9uYW1lKQogICAgICAgICBzZWxmLl9naXQuY2hlY2tvdXQoJ21hc3RlcicpCiAgICAg
ICAgIHNlbGYuX2dpdC5kZWxldGVfYnJhbmNoKHNlbGYuX2JyYW5jaF9uYW1lKQogCi0gICAgZGVm
IGNyZWF0ZV9naXRfcGF0Y2goc2VsZik6Ci0gICAgICAgIHBhdGNoX2ZpbGUgPSAnLi9wYXRjaC50
ZW1wLicgKyBzdHIodGltZS5jbG9jaygpKQotICAgICAgICBnaXRfY29tbWl0ID0gIkhFQUQuLi4u
IiBpZiBub3Qgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0IGVsc2Ugc2VsZi5fb3B0aW9ucy5naXRf
Y29tbWl0ICsgIn4xLi4iICsgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0Ci0gICAgICAgIHBhdGNo
X2RhdGEgPSBzZWxmLl9ob3N0LnNjbSgpLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0LCBbV0VCS0lU
X1dQVF9ESVJdKQotICAgICAgICBpZiBub3QgcGF0Y2hfZGF0YSBvciBub3QgJ2RpZmYnIGluIHBh
dGNoX2RhdGE6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0s
IHBhdGNoIGRhdGEgaXM6ICIlcyInICUgKHBhdGNoX2RhdGEpKQotICAgICAgICAgICAgcmV0dXJu
ICcnCi0gICAgICAgICMgRklYTUU6IFdlIGNhbiBwcm9iYWJseSB0cnkgdG8gdXNlIC0tcmVsYXRp
dmUgZ2l0IHBhcmFtZXRlciB0byBub3QgZG8gdGhhdCByZXBsYWNlbWVudC4KLSAgICAgICAgcGF0
Y2hfZGF0YSA9IHBhdGNoX2RhdGEucmVwbGFjZShXRUJLSVRfV1BUX0RJUiArICcvJywgJycpCi0g
ICAgICAgIHBhdGNoX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgocGF0Y2hfZmlsZSkK
LSAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0Y2hfZmlsZSwgcGF0
Y2hfZGF0YSkKLSAgICAgICAgcmV0dXJuIHBhdGNoX2ZpbGUKLQotICAgIGRlZiBjcmVhdGVfdXBs
b2FkX3JlbW90ZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlIGluIHNl
bGYuX2dpdC5yZW1vdGUoW10pLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIHNlbGYuX2dpdC5y
ZW1vdGUoWyJyZW1vdmUiLCBzZWxmLl93cHRfZm9ya19yZW1vdGVdKQotICAgICAgICBzZWxmLl9n
aXQucmVtb3RlKFsiYWRkIiwgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlLCBzZWxmLl93cHRfZm9ya19w
dXNoX3VybF0pCisgICAgZGVmIGNyZWF0ZV91cGxvYWRfcmVtb3RlX2lmX25lZWRlZChzZWxmKToK
KyAgICAgICAgaWYgbm90IHNlbGYuX3dwdF9mb3JrX3JlbW90ZSBpbiBzZWxmLl9naXQucmVtb3Rl
KFtdKToKKyAgICAgICAgICAgIHNlbGYuX2dpdC5yZW1vdGUoWyJhZGQiLCBzZWxmLl93cHRfZm9y
a19yZW1vdGUsIHNlbGYuX3dwdF9mb3JrX3B1c2hfdXJsXSkKIAogICAgIGRlZiBkb19leHBvcnQo
c2VsZik6Ci0gICAgICAgIGdpdF9wYXRjaF9maWxlID0gc2VsZi5jcmVhdGVfZ2l0X3BhdGNoKCkK
KyAgICAgICAgZ2l0X3BhdGNoX2ZpbGUgPSBzZWxmLndyaXRlX2dpdF9wYXRjaF9maWxlKCkKIAog
ICAgICAgICBpZiBub3QgZ2l0X3BhdGNoX2ZpbGU6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJV
bmFibGUgdG8gY3JlYXRlIGEgcGF0Y2ggdG8gYXBwbHkgdG8gd2ViLXBsYXRmb3JtLXRlc3RzIHJl
cG9zaXRvcnkiKQpAQCAtMjk0LDYgKzQxMyw3IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3MpOgogICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoJy11JywgJy0tcmVtb3RlLXVybCcsIGRlc3Q9J3JlcG9zaXRv
cnlfcmVtb3RlX3VybCcsIGRlZmF1bHQ9Tm9uZSwgaGVscD0ncmVwb3NpdG9yeSB1cmwgdG8gdXNl
IHRvIHB1c2gnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1kJywgJy0tcmVwb3NpdG9yeScs
IGRlc3Q9J3JlcG9zaXRvcnlfZGlyZWN0b3J5JywgZGVmYXVsdD1Ob25lLCBoZWxwPSdyZXBvc2l0
b3J5IGRpcmVjdG9yeScpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jcmVhdGUt
cHInLCBkZXN0PSdjcmVhdGVfcHVsbF9yZXF1ZXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVm
YXVsdD1GYWxzZSwgaGVscD0nY3JlYXRlIHB1bGwgcmVxdWVzdCB0byB3M2Mgd2ViLXBsYXRmb3Jt
LXRlc3RzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5vbi1pbnRlcmFjdGl2ZScsIGFj
dGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J25vbl9pbnRlcmFjdGl2ZScsIGRlZmF1bHQ9RmFsc2Us
IGhlbHA9J05ldmVyIHByb21wdCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0IGFzIHBvc3NpYmxlLicp
CiAKICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoYXJncykKIApA
QCAtMzA5LDYgKzQyOSw3IEBAIGRlZiBjb25maWd1cmVfbG9nZ2luZygpOgogICAgICAgICAgICAg
cmV0dXJuIHJlY29yZC5nZXRNZXNzYWdlKCkKIAogICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCd3ZWJraXRweS53M2MudGVzdF9leHBvcnRlcicpCisgICAgbG9nZ2VyLnByb3BhZ2F0ZSA9
IEZhbHNlCiAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKICAgICBoYW5kbGVyID0g
TG9nSGFuZGxlcigpCiAgICAgaGFuZGxlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCkBAIC0zMjAs
NyArNDQxLDEwIEBAIGRlZiBtYWluKF9hcmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKICAgICBvcHRp
b25zID0gcGFyc2VfYXJncyhfYXJndikKIAogICAgIGNvbmZpZ3VyZV9sb2dnaW5nKCkKKyAgICB0
ZXN0X2V4cG9ydGVyID0gV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIoSG9zdCgpLCBvcHRpb25zKQog
Ci0gICAgdGVzdF9leHBvcnRlciA9IFRlc3RFeHBvcnRlcihIb3N0KCksIG9wdGlvbnMpCisgICAg
aWYgbm90IHRlc3RfZXhwb3J0ZXIuaGFzX3dwdF9jaGFuZ2VzKCk6CisgICAgICAgIF9sb2cuaW5m
bygnTm8gY2hhbmdlcyB0byB1cHN0cmVhbS4gRXhpdGluZy4uLicpCisgICAgICAgIHJldHVybgog
CiAgICAgdGVzdF9leHBvcnRlci5kb19leHBvcnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkKaW5kZXggYjgzMzRhOTQ5YzYx
Mjg2NzJlM2M0NzI0ZjE2MTAzYzA0ZjljYjk4OS4uYTZhZDhmY2ExNThhYmE4ZjAwZTU5OTEwZTk2
NjFhYjVhZGI3YmYzOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9leHBvcnRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5CkBAIC0yNSw3ICsyNSw3IEBAIGltcG9ydCB1bml0dGVz
dAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0
ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9j
a0V4ZWN1dGl2ZTIKLWZyb20gd2Via2l0cHkudzNjLnRlc3RfZXhwb3J0ZXIgaW1wb3J0IFRlc3RF
eHBvcnRlciwgcGFyc2VfYXJncworZnJvbSB3ZWJraXRweS53M2MudGVzdF9leHBvcnRlciBpbXBv
cnQgV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIsIHBhcnNlX2FyZ3MKIGZyb20gd2Via2l0cHkudzNj
LndwdF9naXRodWJfbW9jayBpbXBvcnQgTW9ja1dQVEdpdEh1YgogCiBtb2NrX2xpbnRlciA9IE5v
bmUKQEAgLTQ2LDYgKzQ2LDggQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgY2xhc3MgTW9ja0dpdChvYmpl
Y3QpOgorICAgICAgICBtb2NrX2Zvcm1hdF9wYXRjaF9yZXN1bHQgPSAnbXkgcGF0Y2ggY29udGFp
bmluZyBzb21lIGRpZmZzJworCiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgY2xv
bmUoY2xzLCB1cmwsIGRpcmVjdG9yeSwgZXhlY3V0aXZlPU5vbmUpOgogICAgICAgICAgICAgcmV0
dXJuIFRydWUKQEAgLTk0LDcgKzk2LDcgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAKICAgICAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBjb21taXQsIGFy
Z3VtZW50cyk6CiAgICAgICAgICAgICBzZWxmLmNhbGxzLmFwcGVuZCgnY3JlYXRlX3BhdGNoICcg
KyBjb21taXQgKyAnICcgKyBzdHIoYXJndW1lbnRzKSkKLSAgICAgICAgICAgIHJldHVybiAnbXkg
cGF0Y2ggY29udGFpbmluZyBzb21lIGRpZmZzJworICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9j
a19mb3JtYXRfcGF0Y2hfcmVzdWx0CiAKICAgICBjbGFzcyBNeU1vY2tIb3N0KE1vY2tIb3N0KToK
ICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtMTIyLDggKzEyNCw5IEBAIGNsYXNzIFRl
c3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZXhwb3J0
KHNlbGYpOgogICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAg
ICAgICAgaG9zdC53ZWIucmVzcG9uc2VzLmFwcGVuZCh7J3N0YXR1c19jb2RlJzogMjAwLCAnYm9k
eSc6ICd7ImxvZ2luIjogIlVTRVIifSd9KQogICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhb
J3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1u
JywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nXSkKLSAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0
ZXIoaG9zdCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJU
ZXN0Lk1vY2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BU
TGludGVyKQorICAgICAgICBleHBvcnRlciA9IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKGhvc3Qs
IG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2Nr
QnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikK
ICAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
ZXhwb3J0ZXIuX2dpdGh1Yi5jYWxscywgWydjcmVhdGVfcHInLCAnYWRkX2xhYmVsICJ3ZWJraXQt
ZXhwb3J0IiddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1dlYktpdCBleHBvcnQnIGluIGV4
cG9ydGVyLl9naXRodWIucHVsbF9yZXF1ZXN0c19jcmVhdGVkWzBdWzFdKQpAQCAtMTMzLDcgKzEz
Niw3IEBAIGNsYXNzIFRlc3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICAgICAgJ2NoZWNrb3V0IG1hc3RlcicsCiAgICAgICAgICAgICAncmVzZXQgaGFyZCBvcmlnaW4v
bWFzdGVyJywKICAgICAgICAgICAgICdjaGVja291dCBuZXcgYnJhbmNoIHdwdC1leHBvcnQtZm9y
LXdlYmtpdC0xMjM0JywKLSAgICAgICAgICAgICdhcHBseV9tYWlsX3BhdGNoIHBhdGNoLnRlbXAg
LS1leGNsdWRlICotZXhwZWN0ZWQudHh0IC0tZXhjbHVkZSAqLndvcmtlci5odG1sIC0tZXhjbHVk
ZSAqLmFueS5odG1sIC0tZXhjbHVkZSAqLmFueS53b3JrZXIuaHRtbCcsCisgICAgICAgICAgICAn
YXBwbHlfbWFpbF9wYXRjaCBwYXRjaC50ZW1wICcsCiAgICAgICAgICAgICAnY29tbWl0IC1hIC1t
IFdlYktpdCBleHBvcnQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMzQnLAogICAgICAgICAgICAgJ3JlbW90ZSAnLAogICAgICAgICAgICAgJ3JlbW90ZSBhZGQg
VVNFUiBodHRwczovL1VTRVJAZ2l0aHViLmNvbS9VU0VSL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQn
LApAQCAtMTUwLDggKzE1Myw5IEBAIGNsYXNzIFRlc3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogCiAgICAgZGVmIHRlc3RfZXhwb3J0X3dpdGhfc3BlY2lmaWNfYnJhbmNoKHNlbGYp
OgogICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAg
aG9zdC53ZWIucmVzcG9uc2VzLmFwcGVuZCh7J3N0YXR1c19jb2RlJzogMjAwLCAnYm9keSc6ICd7
ImxvZ2luIjogIlVTRVIifSd9KQogICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3Rf
ZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VT
RVInLCAnLXQnLCAnVE9LRU4nLCAnLWJuJywgJ3dwdC1leHBvcnQtYnJhbmNoJ10pCi0gICAgICAg
IGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3Qu
TW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRl
c3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikKKyAgICAgICAgZXhwb3J0ZXIgPSBXZWJQbGF0
Zm9ybVRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQs
IFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0
ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCiAgICAgICAgIGV4cG9ydGVyLmRvX2V4cG9ydCgpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cG9ydGVyLl9naXQuY2FsbHMsIFsKICAgICAgICAgICAg
ICcvbW9jay1jaGVja291dC9XZWJLaXRCdWlsZC93M2MtdGVzdHMvd2ViLXBsYXRmb3JtLXRlc3Rz
JywKQEAgLTE1OSw3ICsxNjMsNyBAQCBjbGFzcyBUZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgICAgICdjaGVja291dCBtYXN0ZXInLAogICAgICAgICAgICAgJ3Jl
c2V0IGhhcmQgb3JpZ2luL21hc3RlcicsCiAgICAgICAgICAgICAnY2hlY2tvdXQgbmV3IGJyYW5j
aCB3cHQtZXhwb3J0LWZvci13ZWJraXQtMTIzNCcsCi0gICAgICAgICAgICAnYXBwbHlfbWFpbF9w
YXRjaCBwYXRjaC50ZW1wIC0tZXhjbHVkZSAqLWV4cGVjdGVkLnR4dCAtLWV4Y2x1ZGUgKi53b3Jr
ZXIuaHRtbCAtLWV4Y2x1ZGUgKi5hbnkuaHRtbCAtLWV4Y2x1ZGUgKi5hbnkud29ya2VyLmh0bWwn
LAorICAgICAgICAgICAgJ2FwcGx5X21haWxfcGF0Y2ggcGF0Y2gudGVtcCAnLAogICAgICAgICAg
ICAgJ2NvbW1pdCAtYSAtbSBXZWJLaXQgZXhwb3J0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjM0JywKICAgICAgICAgICAgICdyZW1vdGUgJywKICAgICAgICAg
ICAgICdyZW1vdGUgYWRkIFVTRVIgaHR0cHM6Ly9VU0VSQGdpdGh1Yi5jb20vVVNFUi93ZWItcGxh
dGZvcm0tdGVzdHMuZ2l0JywKQEAgLTE2OSwzICsxNzMsNTMgQEAgY2xhc3MgVGVzdEV4cG9ydGVy
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAnZGVsZXRlIGJyYW5jaCB3cHQt
ZXhwb3J0LWZvci13ZWJraXQtMTIzNCcsCiAgICAgICAgICAgICAnY2hlY2tvdXQgbWFzdGVyJywK
ICAgICAgICAgICAgICdyZXNldCBoYXJkIG9yaWdpbi9tYXN0ZXInXSkKKworICAgIGRlZiB0ZXN0
X2V4cG9ydF9pbnRlcmFjdGl2ZV9tb2RlKHNlbGYpOgorICAgICAgICBob3N0ID0gVGVzdEV4cG9y
dGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC53ZWIucmVzcG9uc2VzLmFwcGVuZCh7
J3N0YXR1c19jb2RlJzogMjAwLCAnYm9keSc6ICd7ImxvZ2luIjogIlVTRVIifSd9KQorICAgICAg
ICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcs
ICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nLCAnLS1pbnRl
cmFjdGl2ZSddKQorICAgICAgICBleHBvcnRlciA9IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKGhv
c3QsIG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5N
b2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRl
cikKKyAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKKworICAgIGRlZiB0ZXN0X2V4cG9ydF9p
bnZhbGlkX3Rva2VuKHNlbGYpOgorICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1v
Y2tIb3N0KCkKKyAgICAgICAgaG9zdC53ZWIucmVzcG9uc2VzLmFwcGVuZCh7J3N0YXR1c19jb2Rl
JzogNDAxfSkKKyAgICAgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5
JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICctYycsICctbicsICdVU0VSJywgJy10Jywg
J1RPS0VOJ10pCisgICAgICAgIGV4cG9ydGVyID0gV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIoaG9z
dCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1v
Y2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVy
KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikgYXMgY29udGV4dDoK
KyAgICAgICAgICAgIGV4cG9ydGVyLmRvX2V4cG9ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4o
J09BdXRoIHRva2VuIGlzIG5vdCB2YWxpZCcsIHN0cihjb250ZXh0LmV4Y2VwdGlvbikpCisKKyAg
ICBkZWYgdGVzdF9leHBvcnRfd3JvbmdfdG9rZW4oc2VsZik6CisgICAgICAgIGhvc3QgPSBUZXN0
RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQorICAgICAgICBob3N0LndlYi5yZXNwb25zZXMuYXBw
ZW5kKHsnc3RhdHVzX2NvZGUnOiAyMDAsICdib2R5JzogJ3sibG9naW4iOiAiRElGRl9VU0VSIn0n
fSkKKyAgICAgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5JywgJy1n
JywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICctYycsICctbicsICdVU0VSJywgJy10JywgJ1RPS0VO
J10pCisgICAgICAgIGV4cG9ydGVyID0gV2ViUGxhdGZvcm1UZXN0RXhwb3J0ZXIoaG9zdCwgb3B0
aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6
aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikgYXMgY29udGV4dDoKKyAgICAg
ICAgICAgIGV4cG9ydGVyLmRvX2V4cG9ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ09BdXRo
IHRva2VuIGRvZXMgbm90IG1hdGNoIHRoZSBwcm92aWRlZCB1c2VybmFtZScsIHN0cihjb250ZXh0
LmV4Y2VwdGlvbikpCisKKyAgICBkZWYgdGVzdF9oYXNfd3B0X2NoYW5nZXMoc2VsZik6CisgICAg
ICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQorICAgICAgICBvcHRpb25z
ID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcx
MjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nXSkKKyAgICAgICAgZXhwb3J0
ZXIgPSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJU
ZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHVi
LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShleHBvcnRlci5oYXNfd3B0X2NoYW5nZXMoKSkKKworICAgIGRlZiB0ZXN0X2hhc19ub193cHRf
Y2hhbmdlc19mb3Jfbm9fZGlmZihzZWxmKToKKyAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRl
c3QuTXlNb2NrSG9zdCgpCisgICAgICAgIGhvc3QuX21vY2tTQ00ubW9ja19mb3JtYXRfcGF0Y2hf
cmVzdWx0ID0gTm9uZQorICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0
ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAn
LXQnLCAnVE9LRU4nXSkKKyAgICAgICAgZXhwb3J0ZXIgPSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRl
cihob3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRl
c3QuTW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRM
aW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhwb3J0ZXIuaGFzX3dwdF9jaGFuZ2Vz
KCkpCisKKyAgICBkZWYgdGVzdF9pZ25vcmVfY2hhbmdlc190b19leHBlY3RlZF9maWxlKHNlbGYp
OgorICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKKyAgICAgICAg
aG9zdC5fbW9ja1NDTS5tb2NrX2Zvcm1hdF9wYXRjaF9yZXN1bHQgPSAiIiIKK1N1YnZlcnNpb24g
UmV2aXNpb246IDIzMTkyMAorZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2hlYWRlcnMvaGVhZGVyLXZhbHVlcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9oZWFkZXJzL2hlYWRlci12YWx1ZXMtZXhwZWN0ZWQudHh0CisKKytjaGFuZ2UgdG8gZXhw
ZWN0ZWQKKyIiIgorICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIu
cHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQn
LCAnVE9LRU4nXSkKKyAgICAgICAgZXhwb3J0ZXIgPSBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlciho
b3N0LCBvcHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3Qu
TW9ja0J1Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50
ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhwb3J0ZXIuaGFzX3dwdF9jaGFuZ2VzKCkp
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>