<?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>47647</bug_id>
          
          <creation_ts>2010-10-13 20:30:17 -0700</creation_ts>
          <short_desc>commit-queue should not fail patches due to flaky tests</short_desc>
          <delta_ts>2010-10-15 06:32:04 -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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>ossy</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>293922</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-13 20:30:17 -0700</bug_when>
    <thetext>commit-queue should not fail patches due to flaky tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293924</commentid>
    <comment_count>1</comment_count>
      <attachid>70704</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-13 20:32:10 -0700</bug_when>
    <thetext>Created attachment 70704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293925</commentid>
    <comment_count>2</comment_count>
      <attachid>70704</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-13 20:40:24 -0700</bug_when>
    <thetext>Comment on attachment 70704
Patch

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

I like the idea, but the static information about where to find results.html isn&apos;t right.

&gt; WebKitTools/Scripts/webkitpy/common/net/layouttestresults.py:87
&gt; +        if not results_path:
&gt; +            results_path = &quot;/tmp/layout-test-results/results.html&quot;

This doesn&apos;t seem right.

&gt; WebKitTools/Scripts/webkitpy/tool/bot/commitqueuetask.py:124
&gt; +        results = LayoutTestResults.results_from_local_run()

so static.  in this beautiful non-static class

I think this actually reads the disk during the commitqueuetask unit tests.  Sad face.

&gt; WebKitTools/Scripts/webkitpy/tool/bot/commitqueuetask.py:144
&gt; +        # The CommitQueue Command object knows its name and how to
&gt; +        # cc the right watchers.

This comment seems unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293977</commentid>
    <comment_count>3</comment_count>
      <attachid>70713</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-13 23:36:26 -0700</bug_when>
    <thetext>Created attachment 70713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293978</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-13 23:38:16 -0700</bug_when>
    <thetext>Making the path a property of the port kind of led to a yak shaving expedition, but that stuff seemed worth doing.  We could probably separate the two patches, if you think that would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293979</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-13 23:39:21 -0700</bug_when>
    <thetext>Attachment 70713 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKitTools/Scripts/webkitpy/tool/bot/commitqueuetask.py:34:  deprecated form of raising exception  [pep8/W602] [5]
WebKitTools/Scripts/webkitpy/tool/bot/commitqueuetask.py:37:  deprecated form of raising exception  [pep8/W602] [5]
WebKitTools/Scripts/webkitpy/tool/bot/commitqueuetask.py:40:  deprecated form of raising exception  [pep8/W602] [5]
WebKitTools/Scripts/webkitpy/tool/bot/commitqueuetask.py:43:  deprecated form of raising exception  [pep8/W602] [5]
WebKitTools/Scripts/webkitpy/tool/bot/commitqueuetask.py:46:  deprecated form of raising exception  [pep8/W602] [5]
Total errors found: 5 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294117</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-14 08:21:53 -0700</bug_when>
    <thetext>I made additional changes to the patch before reading my bugmail.  I&apos;ll upload my copy soon and we can rectify the differences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294139</commentid>
    <comment_count>7</comment_count>
      <attachid>70743</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-14 08:51:34 -0700</bug_when>
    <thetext>Created attachment 70743
an alternative from this morning</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294151</commentid>
    <comment_count>8</comment_count>
      <attachid>70745</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-14 09:32:53 -0700</bug_when>
    <thetext>Created attachment 70745
combined patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294164</commentid>
    <comment_count>9</comment_count>
      <attachid>70747</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-14 10:08:41 -0700</bug_when>
    <thetext>Created attachment 70747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294206</commentid>
    <comment_count>10</comment_count>
      <attachid>70752</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-14 11:04:11 -0700</bug_when>
    <thetext>Created attachment 70752
Now should work on python 2.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294208</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-14 11:07:10 -0700</bug_when>
    <thetext>I&apos;m running this on my local commit-queue node and it seems to work fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294227</commentid>
    <comment_count>12</comment_count>
      <attachid>70759</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-14 11:32:53 -0700</bug_when>
    <thetext>Created attachment 70759
Fix typo in CommitQueue.layout_test_results (untestable)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294355</commentid>
    <comment_count>13</comment_count>
      <attachid>70759</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-14 14:02:15 -0700</bug_when>
    <thetext>Comment on attachment 70759
Fix typo in CommitQueue.layout_test_results (untestable)

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

&gt; WebKitTools/Scripts/webkitpy/common/config/ports.py:108
&gt; +    @classmethod
&gt; +    def layout_tests_results_path(cls):
&gt; +        return &quot;/tmp/layout-test-results/results.html&quot;

We should really change ports to be instances.  I think things should be well enough isolated to make that work now.

&gt; WebKitTools/Scripts/webkitpy/common/net/buildbot.py:220
&gt; +        # FIXME: We need to move this sort of 404 logic into NetworkTransaction or similar.

Or into a network abstraction.

&gt; WebKitTools/Scripts/webkitpy/tool/bot/commitqueuetask.py:30
&gt; +from webkitpy.common.net.layouttestresults import LayoutTestResults

This import looks to be unused.

&gt; WebKitTools/Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:60
&gt; +    def refetch_patch(self, patch):
&gt; +        return patch

Nice.

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queues.py:278
&gt; +        try:
&gt; +            # FIXME: We need a nice open() abstraction for better mocking here.
&gt; +            with codecs.open(results_path, &quot;r&quot;, &quot;utf-8&quot;) as results_file:
&gt; +                return LayoutTestResults.results_from_string(results_file)
&gt; +        except OSError, e:  # File does not exist or can&apos;t be read.
&gt; +            return None

This whole idiom should be on tool.filesystem().read(path)

&gt; WebKitTools/Scripts/webkitpy/tool/steps/steps_unittest.py:60
&gt; -    def test_runtests_leopard_commit_queue_hack(self):
&gt; +    def test_runtests_leopard_commit_queue_hack_step(self):

We have this problem of two tests with the same name a lot.  I wonder if we can scan the codebase for them somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294504</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-14 17:51:28 -0700</bug_when>
    <thetext>Committed r69829: &lt;http://trac.webkit.org/changeset/69829&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294591</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-10-14 23:14:24 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Committed r69829: &lt;http://trac.webkit.org/changeset/69829&gt;

It broke Qt and GTK python unit tests with the following error message:

ERROR: test_runtests_leopard_commit_queue_hack_step (webkitpy.tool.steps.steps_unittest.StepsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/WebKitTools/Scripts/webkitpy/tool/steps/steps_unittest.py&quot;, line 62, in test_runtests_leopard_commit_queue_hack_step
    OutputCapture().assert_outputs(self, self._run_step, [RunTests], expected_stderr=expected_stderr)
  File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/WebKitTools/Scripts/webkitpy/common/system/outputcapture.py&quot;, line 62, in assert_outputs
    return_value = function(*args, **kwargs)
  File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/WebKitTools/Scripts/webkitpy/tool/steps/steps_unittest.py&quot;, line 47, in _run_step
    step(tool, options).run(state)
  File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/WebKitTools/Scripts/webkitpy/tool/steps/runtests.py&quot;, line 66, in run
    if self._tool.port().name() == &quot;Mac&quot; and self._tool.port().is_leopard():
  File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/WebKitTools/Scripts/webkitpy/common/config/ports.py&quot;, line 129, in is_leopard
    return tuple(cls._system_version()[:2]) == (10, 5)
  File &quot;/home/webkitbuildbot/slaves/release32bit/buildslave/qt-linux-release/build/WebKitTools/Scripts/webkitpy/common/config/ports.py&quot;, line 125, in _system_version
    return map(int, version_tuple)
ValueError: invalid literal for int() with base 10: &apos;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294728</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-15 06:31:54 -0700</bug_when>
    <thetext>Was fixed in bug 47713.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70704</attachid>
            <date>2010-10-13 20:32:10 -0700</date>
            <delta_ts>2010-10-13 23:36:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47647-20101013203208.patch</filename>
            <type>text/plain</type>
            <size>12194</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2ZTRlMDk0N2Q2OThiY2JhODhkMTcxNWJjZGE0NThlZGY0NTY5MTI5Li40ZjI0MmVh
MTIwZjhkYTAzMTRkZWQ4MjQ2ZTRhMDM1MWE1M2RiYWI0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjggQEAK
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBjb21taXQt
cXVldWUgc2hvdWxkIG5vdCBmYWlsIHBhdGNoZXMgZHVlIHRvIGZsYWt5IHRlc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzY0NworCisgICAgICAg
IFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdCB0aGUgKnNhbWUqIGZsYWt5IHRlc3QgaGFzIHRv
IGZhaWwKKyAgICAgICAgdHdpY2UgaW4gYSByb3cgdG8gaGF2ZSBhIGZhbHNlIG5lZ2F0aXZlIGZy
b20gYSBmbGFreSB0ZXN0LgorCisgICAgICAgIElmIGRpZmZlcmVudCBmbGFreSB0ZXN0cyBmYWls
IChvciBpZiBhIHRlc3QgZmFpbHMgYW5kIHRoZW4gcGFzc2VzCisgICAgICAgIGluIGEgc2Vjb25k
IHJ1bikgdGhlbiB3ZSB3aWxsIHdhcm4gaW4gdGhlIGJ1ZyB0aGF0IHdlIGVuY291bnRlcmVkCisg
ICAgICAgIGEgZmxha3kgdGVzdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWlsZGJvdF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weToKKwor
MjAxMC0xMC0xMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQnJlYWsgTGF5b3V0VGVzdFJlc3Vs
dHMgb3V0IGludG8gaXRzIG93biBmaWxlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NzYzNwogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3RfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3RfdW5pdHRlc3QucHkKaW5kZXggNTdh
MGM4ZjA4NGQzOWNhYTRhNTc1Y2ZmZmM4OGU1OTkyNzI5NjQzNC4uYWZjOWEzOWE5ZTcxMjljNjcy
ZTUxOTZmOTQ2MmJkOGJiYjJlMjQzYSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdF91bml0dGVzdC5weQpAQCAtNDEs
MTAgKzQxLDggQEAgY2xhc3MgQnVpbGRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICAgICAgICAgIHJldmlzaW9uPWJ1aWxkX251bWJlciArIDEwMDAsCiAgICAgICAgICAgICAgICAg
aXNfZ3JlZW49YnVpbGRfbnVtYmVyIDwgNAogICAgICAgICAgICAgKQotICAgICAgICAgICAgYnVp
bGQuX2xheW91dF90ZXN0X3Jlc3VsdHMgPSBMYXlvdXRUZXN0UmVzdWx0cygKLSAgICAgICAgICAg
ICAgICAiaHR0cDovL2J1aWxkYm90LmV4YW1wbGUuY29tL2ZvbyIsIHsKLSAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0VGVzdFJlc3VsdHMuZmFpbF9rZXk6IGZhaWx1cmUoYnVpbGRfbnVtYmVyKSwK
LSAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgcGFyc2VkX3Jlc3VsdHMgPSB7TGF5b3V0
VGVzdFJlc3VsdHMuZmFpbF9rZXk6IGZhaWx1cmUoYnVpbGRfbnVtYmVyKX0KKyAgICAgICAgICAg
IGJ1aWxkLl9sYXlvdXRfdGVzdF9yZXN1bHRzID0gTGF5b3V0VGVzdFJlc3VsdHMocGFyc2VkX3Jl
c3VsdHMpCiAgICAgICAgICAgICByZXR1cm4gYnVpbGQKICAgICAgICAgc2VsZi5idWlsZGVyLl9m
ZXRjaF9idWlsZCA9IF9tb2NrX2ZldGNoX2J1aWxkCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQpp
bmRleCA1YWI4MjkyNzIxY2UwN2ExNGZlNzEyNTBiY2M2NDZlNDdjMTA5YzhkLi5hMTYyMzhhMDdk
M2RjMjAzMjFkODZmODA3OTM3MDA0NTZlNGVkZDUzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5
CkBAIC0yOCw2ICsyOCw4IEBACiAjCiAjIEEgbW9kdWxlIGZvciBwYXJzaW5nIHJlc3VsdHMuaHRt
bCBmaWxlcyBnZW5lcmF0ZWQgYnkgb2xkLXJ1bi13ZWJraXQtdGVzdHMKIAoraW1wb3J0IGNvZGVj
cworCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRp
ZnVsU291cCwgU291cFN0cmFpbmVyCiAKIApAQCAtNjgsMjEgKzcwLDM1IEBAIGNsYXNzIExheW91
dFRlc3RSZXN1bHRzKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdHNfaHRtbCA9ICIlcy9yZXN1bHRz
Lmh0bWwiICUgYmFzZV91cmwKICAgICAgICAgIyBGSVhNRTogV2UgbmVlZCB0byBtb3ZlIHRoaXMg
c29ydCBvZiA0MDQgbG9naWMgaW50byBOZXR3b3JrVHJhbnNhY3Rpb24gb3Igc2ltaWxhci4KICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgcGFnZSA9IHVybGxpYjIudXJsb3BlbihyZXN1bHRzX2h0
bWwpCi0gICAgICAgICAgICByZXR1cm4gY2xzLl9wYXJzZV9yZXN1bHRzX2h0bWwocGFnZSkKKyAg
ICAgICAgICAgIHJldHVybiB1cmxsaWIyLnVybG9wZW4ocmVzdWx0c19odG1sKQogICAgICAgICBl
eGNlcHQgdXJsbGliMi5IVFRQRXJyb3IsIGVycm9yOgogICAgICAgICAgICAgaWYgZXJyb3IuY29k
ZSAhPSA0MDQ6CiAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiByZXN1bHRzX2Zyb21fdXJsKGNscywgYmFzZV91cmwpOgotICAgICAgICBwYXJzZWRfcmVz
dWx0cyA9IGNscy5fZmV0Y2hfcmVzdWx0c19odG1sKGJhc2VfdXJsKQorICAgICAgICByZXN1bHRz
X3BhZ2UgPSBjbHMuX2ZldGNoX3Jlc3VsdHNfaHRtbChiYXNlX3VybCkKKyAgICAgICAgcmV0dXJu
IGNscy5yZXN1bHRzX2Zyb21fc3RyaW5nKHJlc3VsdHNfcGFnZSkKKworICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiByZXN1bHRzX2Zyb21fbG9jYWxfcnVuKGNscywgcmVzdWx0c19wYXRoPU5vbmUp
OgorICAgICAgICAjIEZJWE1FOiBUaGlzIGtub3dsZWRnZSBkb2VzIG5vdCBiZWxvbmcgaW4gdGhp
cyBjbGFzcy4KKyAgICAgICAgaWYgbm90IHJlc3VsdHNfcGF0aDoKKyAgICAgICAgICAgIHJlc3Vs
dHNfcGF0aCA9ICIvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmVzdWx0cy5odG1sIgorICAgICAg
ICB0cnk6CisgICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHJlc3VsdHNfcGF0aCwgInIiLCAi
dXRmLTgiKSBhcyByZXN1bHRzX2ZpbGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNscy5yZXN1
bHRzX2Zyb21fc3RyaW5nKHJlc3VsdHNfZmlsZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6
ICAjIEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgY2FuJ3QgYmUgcmVhZC4KKyAgICAgICAgICAgIHJl
dHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcmVzdWx0c19mcm9tX3N0cmlu
ZyhjbHMsIHN0cmluZyk6CisgICAgICAgIHBhcnNlZF9yZXN1bHRzID0gY2xzLl9wYXJzZV9yZXN1
bHRzX2h0bWwoc3RyaW5nKQogICAgICAgICBpZiBub3QgcGFyc2VkX3Jlc3VsdHM6CiAgICAgICAg
ICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gY2xzKGJhc2VfdXJsLCBwYXJzZWRfcmVz
dWx0cykKKyAgICAgICAgcmV0dXJuIGNscyhwYXJzZWRfcmVzdWx0cykKIAotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBiYXNlX3VybCwgcGFyc2VkX3Jlc3VsdHMpOgotICAgICAgICBzZWxmLl9iYXNl
X3VybCA9IGJhc2VfdXJsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlZF9yZXN1bHRzKToK
ICAgICAgICAgc2VsZi5fcGFyc2VkX3Jlc3VsdHMgPSBwYXJzZWRfcmVzdWx0cwogCiAgICAgZGVm
IHBhcnNlZF9yZXN1bHRzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzX3VuaXR0
ZXN0LnB5CmluZGV4IDAzNDg0OGUzNmQ2NjBlMmZlNmQ5NmI2NjQyM2VjNDEzYjFiNzFkYzkuLjQ0
ZTRkYmM1YmJhMTIxZjUwMWEzOWNlZTM5YTQ4ZjA5NzE4ZDViY2YgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0c191bml0
dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5
b3V0dGVzdHJlc3VsdHNfdW5pdHRlc3QucHkKQEAgLTY5LDMgKzY5LDggQEAgY2xhc3MgTGF5b3V0
VGVzdFJlc3VsdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9wYXJzZV9s
YXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYpOgogICAgICAgICByZXN1bHRzID0gTGF5b3V0VGVzdFJl
c3VsdHMuX3BhcnNlX3Jlc3VsdHNfaHRtbChzZWxmLl9leGFtcGxlX3Jlc3VsdHNfaHRtbCkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9leHBlY3RlZF9sYXlvdXRfdGVzdF9yZXN1bHRz
LCByZXN1bHRzKQorCisgICAgZGVmIHRlc3RfcmVzdWx0c19mcm9tX3N0cmluZyhzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChMYXlvdXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3Ry
aW5nKCIiKSwgTm9uZSkKKyAgICAgICAgcmVzdWx0cyA9IExheW91dFRlc3RSZXN1bHRzLnJlc3Vs
dHNfZnJvbV9zdHJpbmcoc2VsZi5fZXhhbXBsZV9yZXN1bHRzX2h0bWwpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKSwgMCkKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2su
cHkKaW5kZXggYTVjMmNhMjE2ODdhNTdkMDBlZmUzMjU1MjZkNzlhY2E2MDM1ZTM1NS4uNjJjYTE0
NWVlYjc4ZGRkMjcwNDcwOTFmZmE0MzFmOTNlN2JhYmFmOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2sucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2sucHkKQEAg
LTI3LDYgKzI3LDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5l
dC5sYXlvdXR0ZXN0cmVzdWx0cyBpbXBvcnQgTGF5b3V0VGVzdFJlc3VsdHMKIAogCiBjbGFzcyBD
b21taXRRdWV1ZVRhc2sob2JqZWN0KToKQEAgLTExOSw2ICsxMjAsMTIgQEAgY2xhc3MgQ29tbWl0
UXVldWVUYXNrKG9iamVjdCk6CiAgICAgICAgICJBYmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91dCBw
YXRjaCIsCiAgICAgICAgICJVbmFibGUgdG8gcGFzcyB0ZXN0cyB3aXRob3V0IHBhdGNoICh0cmVl
IGlzIHJlZD8pIikKIAorICAgIGRlZiBfZmFpbGluZ190ZXN0c19mcm9tX2xhc3RfcnVuKHNlbGYp
OgorICAgICAgICByZXN1bHRzID0gTGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX2xvY2Fs
X3J1bigpCisgICAgICAgIGlmIG5vdCByZXN1bHRzOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KyAgICAgICAgcmV0dXJuIHJlc3VsdHMuZmFpbGluZ190ZXN0cygpCisKICAgICBkZWYgX2xhbmQo
c2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9ydW5fY29tbWFuZChbCiAgICAgICAgICAgICAi
bGFuZC1hdHRhY2htZW50IiwKQEAgLTEzMiw2ICsxMzksMzEgQEAgY2xhc3MgQ29tbWl0UXVldWVU
YXNrKG9iamVjdCk6CiAgICAgICAgICJMYW5kZWQgcGF0Y2giLAogICAgICAgICAiVW5hYmxlIHRv
IGxhbmQgcGF0Y2giKQogCisgICAgZGVmIF9yZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgZmxha3lf
dGVzdHMpOgorICAgICAgICAjIFRoZSBDb21taXRRdWV1ZSBDb21tYW5kIG9iamVjdCBrbm93cyBp
dHMgbmFtZSBhbmQgaG93IHRvCisgICAgICAgICMgY2MgdGhlIHJpZ2h0IHdhdGNoZXJzLgorICAg
ICAgICBzZWxmLl9jb21taXRfcXVldWUucmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYuX3BhdGNoLCBm
bGFreV90ZXN0cykKKworICAgIGRlZiBfdGVzdF9wYXRjaChzZWxmKToKKyAgICAgICAgaWYgc2Vs
Zi5fcGF0Y2guaXNfcm9sbG91dCgpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAg
aWYgc2VsZi5fdGVzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBmaXJz
dF9mYWlsaW5nX3Rlc3RzID0gc2VsZi5fZmFpbGluZ190ZXN0c19mcm9tX2xhc3RfcnVuKCkKKyAg
ICAgICAgaWYgc2VsZi5fdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2ZsYWt5X3Rl
c3RzKGZpcnN0X2ZhaWxpbmdfdGVzdHMpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAg
ICAgIHNlY29uZF9mYWlsaW5nX3Rlc3RzID0gc2VsZi5fZmFpbGluZ190ZXN0c19mcm9tX2xhc3Rf
cnVuKCkKKyAgICAgICAgaWYgZmlyc3RfZmFpbGluZ190ZXN0cyAhPSBzZWNvbmRfZmFpbGluZ190
ZXN0czoKKyAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9mbGFreV90ZXN0cyhmaXJzdF9mYWlsaW5n
X3Rlc3RzICsgc2Vjb25kX2ZhaWxpbmdfdGVzdHMpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgICAgICBpZiBzZWxmLl9idWlsZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoKCk6CisgICAg
ICAgICAgICByYWlzZSBzZWxmLl9zY3JpcHRfZXJyb3IgICMgVGhlIGVycm9yIGZyb20gdGhlIHBy
ZXZpb3VzIC5fdGVzdCgpIHJ1biBpcyByZWFsLCByZXBvcnQgaXQuCisgICAgICAgIHJldHVybiBG
YWxzZSAgIyBUcmVlIG11c3QgYmUgcmVkLCBqdXN0IHJldHJ5IGxhdGVyLgorCiAgICAgZGVmIHJ1
bihzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX3ZhbGlkYXRlKCk6CiAgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKQEAgLTE0MSwxMiArMTczLDggQEAgY2xhc3MgQ29tbWl0UXVldWVUYXNrKG9i
amVjdCk6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fYnVpbGRfd2l0aG91dF9wYXRjaCgpOgog
ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgcmFpc2Ugc2VsZi5fc2Ny
aXB0X2Vycm9yCi0gICAgICAgIGlmIG5vdCBzZWxmLl9wYXRjaC5pc19yb2xsb3V0KCk6Ci0gICAg
ICAgICAgICBpZiBub3Qgc2VsZi5fdGVzdCgpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll90ZXN0KCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9idWlsZF9hbmRfdGVz
dF93aXRob3V0X3BhdGNoKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5fc2NyaXB0X2Vycm9yCisgICAgICAgIGlm
IG5vdCBzZWxmLl90ZXN0X3BhdGNoKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAg
ICAgIyBNYWtlIHN1cmUgdGhlIHBhdGNoIGlzIHN0aWxsIHZhbGlkIGJlZm9yZSBsYW5kaW5nIChl
LmcuLCBtYWtlIHN1cmUKICAgICAgICAgIyBubyBvbmUgaGFzIHNldCBjb21taXQtcXVldWUtIHNp
bmNlIHdlIHN0YXJ0ZWQgd29ya2luZyBvbiB0aGUgcGF0Y2guKQogICAgICAgICBpZiBub3Qgc2Vs
Zi5fdmFsaWRhdGUoKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKaW5kZXggMzhj
NDc0NzY3Y2ZiYTgyYWZlNjg0OGUxOTNmNDZlZmM4OTMwNmI1YS4uYzZiZDAzNjNmNGQ5YjcxMjky
NTNkZmY2Njg2MDliOGY3MmM2YmY2MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3Qu
cHkKQEAgLTU2LDYgKzU2LDkgQEAgY2xhc3MgTW9ja0NvbW1pdFF1ZXVlOgogICAgICAgICAgICAg
ZmFpbHVyZV9tZXNzYWdlLCBzY3JpcHRfZXJyb3IsIHBhdGNoLmlkKCkpKQogICAgICAgICByZXR1
cm4gMzk0NwogCisgICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lf
dGVzdHMpOgorICAgICAgICBsb2coInJlcG9ydF9mbGFreV90ZXN0czogcGF0Y2g9JyVzJyBmbGFr
eV90ZXN0cz0nJXMnIiAlIChwYXRjaC5pZCgpLCBmbGFreV90ZXN0cykpCisKIAogY2xhc3MgQ29t
bWl0UXVldWVUYXNrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9ydW5fdGhyb3Vn
aF90YXNrKHNlbGYsIGNvbW1pdF9xdWV1ZSwgZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9leGNl
cHRpb249Tm9uZSk6CkBAIC0xMjksNiArMTMyLDcgQEAgcnVuX3dlYmtpdF9wYXRjaDogWydidWls
ZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLXEK
IGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90IHBhc3MgdGVz
dHMnIHNjcmlwdF9lcnJvcj0nTU9DSyB0ZXN0cyBmYWlsdXJlJyBwYXRjaD0nMTk3JwogcnVuX3dl
YmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRl
JywgJy0tdGVzdCcsICctLXF1aWV0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KIGNvbW1hbmRfcGFz
c2VkOiBzdWNjZXNzX21lc3NhZ2U9J1Bhc3NlZCB0ZXN0cycgcGF0Y2g9JzE5NycKK3JlcG9ydF9m
bGFreV90ZXN0czogcGF0Y2g9JzE5NycgZmxha3lfdGVzdHM9J05vbmUnCiBydW5fd2Via2l0X3Bh
dGNoOiBbJ2xhbmQtYXR0YWNobWVudCcsICctLWZvcmNlLWNsZWFuJywgJy0taWdub3JlLWJ1aWxk
ZXJzJywgJy0tcXVpZXQnLCAnLS1ub24taW50ZXJhY3RpdmUnLCAnLS1wYXJlbnQtY29tbWFuZD1j
b21taXQtcXVldWUnLCAxOTddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdMYW5k
ZWQgcGF0Y2gnIHBhdGNoPScxOTcnCiAiIiIKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CmluZGV4IDRmYjFhN2MzMzU5YjNmYmU2
ZTkzOTQxYzhmMjQ1NGQ2NzFjNzZkYTcuLjZjOTdlMjUzYzI5YmE3ZDkyN2MwYmVmY2JmNjMzOTg0
MWQyMTg0M2MgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3F1ZXVlcy5weQpAQCAtMjU4LDYgKzI1OCwxMSBAQCBjbGFzcyBDb21taXRRdWV1
ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcik6CiAgICAgICAg
IHJlc3VsdHNfbGluayA9IHNlbGYuX3Rvb2wuc3RhdHVzX3NlcnZlci5yZXN1bHRzX3VybF9mb3Jf
c3RhdHVzKHN0YXR1c19pZCkKICAgICAgICAgcmV0dXJuICIlc1xuRnVsbCBvdXRwdXQ6ICVzIiAl
IChzY3JpcHRfZXJyb3IubWVzc2FnZV93aXRoX291dHB1dCgpLCByZXN1bHRzX2xpbmspCiAKKyAg
ICAjIENvbW1pdFF1ZXVlVGFzayBtZXRob2RzCisgICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhz
ZWxmLCBwYXRjaCwgZmxha3lfdGVzdHMpOgorICAgICAgICBtZXNzYWdlID0gIlRoZSAlcyBlbmNv
dW50ZXJlZCB0aGUgZm9sbG93aW5nIGZsYWt5IHRlc3RzIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNo
bWVudCAlczpcblxuJXNcblxuUGxlYXNlIGZpbGUgYnVncyBhZ2FpbnN0IHRoZSB0ZXN0cy4gIFRo
ZSBjb21taXQtcXVldWUgaXMgY29udGludWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guIiAlIChz
ZWxmLm5hbWUsIHBhdGNoLmlkKCksIGZsYWt5X3Rlc3RzKQorICAgICAgICBzZWxmLl90b29sLmJ1
Z3MucG9zdF9jb21tZW50X3RvX2J1ZyhwYXRjaC5idWdfaWQoKSwgbWVzc2FnZSwgY2M9c2VsZi53
YXRjaGVycykKKwogICAgICMgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyIG1ldGhvZHMKIAogICAg
IGRlZiBoYW5kbGVfc2NyaXB0X2Vycm9yKGNscywgdG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJvcik6
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQppbmRleCA5ZTk5YTIwZDFmZTRjOTE3OTYxMDUwNjRl
MDMyNTA5M2RhZDYxYzEwLi5iYTk4ZDU0Y2Q4ZDUzYTUzYjA5ZThmOTc1MTY1YmM0OWQ5YmViNTc5
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKQEAgLTI5OSw2ICsyOTksMjEgQEAgTU9DSzog
dXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIFBhc3MKICIiIgogICAgICAgICBPdXRwdXRDYXB0
dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcXVldWUucHJvY2Vzc193b3JrX2l0ZW0sIFtNb2Nr
UGF0Y2goKV0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKKyAgICBkZWYgdGVz
dF9yZXBvcnRfZmxha3lfdGVzdHMoc2VsZik6CisgICAgICAgIHF1ZXVlID0gQ29tbWl0UXVldWUo
KQorICAgICAgICBxdWV1ZS5iaW5kX3RvX3Rvb2woTW9ja1Rvb2woKSkKKyAgICAgICAgZXhwZWN0
ZWRfc3RkZXJyID0gIiIiTU9DSyBidWcgY29tbWVudDogYnVnX2lkPTE0MiwgY2M9W10KKy0tLSBC
ZWdpbiBjb21tZW50IC0tLQorVGhlIGNvbW1pdC1xdWV1ZSBlbmNvdW50ZXJlZCB0aGUgZm9sbG93
aW5nIGZsYWt5IHRlc3RzIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNobWVudCAxOTc6CisKK1snZm9v
L2Jhci5odG1sJywgJ2Jhci9iYXouaHRtbCddCisKK1BsZWFzZSBmaWxlIGJ1Z3MgYWdhaW5zdCB0
aGUgdGVzdHMuICBUaGUgY29tbWl0LXF1ZXVlIGlzIGNvbnRpbnVpbmcgdG8gcHJvY2VzcyB5b3Vy
IHBhdGNoLgorLS0tIEVuZCBjb21tZW50IC0tLQorCisiIiIKKyAgICAgICAgT3V0cHV0Q2FwdHVy
ZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLnJlcG9ydF9mbGFreV90ZXN0cywgW01vY2tQ
YXRjaCgpLCBbImZvby9iYXIuaHRtbCIsICJiYXIvYmF6Lmh0bWwiXV0sIGV4cGVjdGVkX3N0ZGVy
cj1leHBlY3RlZF9zdGRlcnIpCisKIAogY2xhc3MgUmlldHZlbGRVcGxvYWRRdWV1ZVRlc3QoUXVl
dWVzVGVzdCk6CiAgICAgZGVmIHRlc3RfcmlldHZlbGRfdXBsb2FkX3F1ZXVlKHNlbGYpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70713</attachid>
            <date>2010-10-13 23:36:26 -0700</date>
            <delta_ts>2010-10-14 09:32:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47647-20101013233624.patch</filename>
            <type>text/plain</type>
            <size>27810</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmYWJjMmY4ZWE0YjQ5ZDRkMGRmMDc1NTgyNWRhMWYxZGIyNDNmZjczLi43ZmRiZTA5
YTNlZDBmYjdlZmE5MjU2N2Q1ZTM4OTFlYzhlZmI0MjVkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcgQEAK
IDIwMTAtMTAtMTMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdC1xdWV1ZSBzaG91bGQg
bm90IGZhaWwgcGF0Y2hlcyBkdWUgdG8gZmxha3kgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjQ3CisKKyAgICAgICAgVGhpcyBwYXRjaCBt
YWtlcyBpdCBzbyB0aGF0IHRoZSAqc2FtZSogZmxha3kgdGVzdCBoYXMgdG8gZmFpbAorICAgICAg
ICB0d2ljZSBpbiBhIHJvdyB0byBoYXZlIGEgZmFsc2UgbmVnYXRpdmUgZnJvbSBhIGZsYWt5IHRl
c3QuCisKKyAgICAgICAgSWYgZGlmZmVyZW50IGZsYWt5IHRlc3RzIGZhaWwgKG9yIGlmIGEgdGVz
dCBmYWlscyBhbmQgdGhlbiBwYXNzZXMKKyAgICAgICAgaW4gYSBzZWNvbmQgcnVuKSB0aGVuIHdl
IHdpbGwgd2FybiBpbiB0aGUgYnVnIHRoYXQgd2UgZW5jb3VudGVyZWQKKyAgICAgICAgYSBmbGFr
eSB0ZXN0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlv
dXR0ZXN0cmVzdWx0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
bGF5b3V0dGVzdHJlc3VsdHNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2sucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5OgorCisyMDEwLTEwLTEzICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IEJhcnRoLgogCiAgICAgICAgIEJyZWFrIExheW91dFRlc3RSZXN1bHRzIG91dCBpbnRvIGl0cyBv
d24gZmlsZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y29uZmlnL3BvcnRzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29u
ZmlnL3BvcnRzLnB5CmluZGV4IDVhODVmN2RiNjc3NGYxZjhhZDcwNGI4OWM2NDlkMzA4MjA4Zjgy
MmYuLmZjNzc3MTMzMjlhYmZmMDU3ZTI3MzYyMTNmZmJkNGY5MzdjODgxN2MgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvcG9ydHMucHkKQEAg
LTEwMyw2ICsxMDMsMTAgQEAgY2xhc3MgV2ViS2l0UG9ydChvYmplY3QpOgogICAgIGRlZiBydW5f
cGVybF91bml0dGVzdHNfY29tbWFuZChjbHMpOgogICAgICAgICByZXR1cm4gW2Nscy5zY3JpcHRf
cGF0aCgidGVzdC13ZWJraXRwZXJsIildCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbGF5
b3V0X3Rlc3RzX3Jlc3VsdHNfcGF0aChjbHMpOgorICAgICAgICByZXR1cm4gIi90bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9yZXN1bHRzLmh0bWwiCisKIAogY2xhc3MgTWFjUG9ydChXZWJLaXRQb3J0
KToKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1aWxkYm90X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1aWxkYm90X3VuaXR0ZXN0LnB5CmluZGV4IDU3YTBjOGYwODRkMzljYWE0YTU3NWNm
ZmZjODhlNTk5MjcyOTY0MzQuLmFmYzlhMzlhOWU3MTI5YzY3MmU1MTk2Zjk0NjJiZDhiYmIyZTI0
M2EgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9i
dWlsZGJvdF91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvYnVpbGRib3RfdW5pdHRlc3QucHkKQEAgLTQxLDEwICs0MSw4IEBAIGNsYXNzIEJ1
aWxkZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICByZXZpc2lvbj1i
dWlsZF9udW1iZXIgKyAxMDAwLAogICAgICAgICAgICAgICAgIGlzX2dyZWVuPWJ1aWxkX251bWJl
ciA8IDQKICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGJ1aWxkLl9sYXlvdXRfdGVzdF9yZXN1
bHRzID0gTGF5b3V0VGVzdFJlc3VsdHMoCi0gICAgICAgICAgICAgICAgImh0dHA6Ly9idWlsZGJv
dC5leGFtcGxlLmNvbS9mb28iLCB7Ci0gICAgICAgICAgICAgICAgICAgIExheW91dFRlc3RSZXN1
bHRzLmZhaWxfa2V5OiBmYWlsdXJlKGJ1aWxkX251bWJlciksCi0gICAgICAgICAgICAgICAgfSkK
KyAgICAgICAgICAgIHBhcnNlZF9yZXN1bHRzID0ge0xheW91dFRlc3RSZXN1bHRzLmZhaWxfa2V5
OiBmYWlsdXJlKGJ1aWxkX251bWJlcil9CisgICAgICAgICAgICBidWlsZC5fbGF5b3V0X3Rlc3Rf
cmVzdWx0cyA9IExheW91dFRlc3RSZXN1bHRzKHBhcnNlZF9yZXN1bHRzKQogICAgICAgICAgICAg
cmV0dXJuIGJ1aWxkCiAgICAgICAgIHNlbGYuYnVpbGRlci5fZmV0Y2hfYnVpbGQgPSBfbW9ja19m
ZXRjaF9idWlsZAogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKaW5kZXggNWFiODI5MjcyMWNlMDdh
MTRmZTcxMjUwYmNjNjQ2ZTQ3YzEwOWM4ZC4uZWEwNDM0YjBiMDNjZTY5NzllZDdjZjRhMGU0NWM4
NGM5NGUxMzdkMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQpAQCAtMjgsNiArMjgsOCBAQAog
IwogIyBBIG1vZHVsZSBmb3IgcGFyc2luZyByZXN1bHRzLmh0bWwgZmlsZXMgZ2VuZXJhdGVkIGJ5
IG9sZC1ydW4td2Via2l0LXRlc3RzCiAKK2ltcG9ydCBjb2RlY3MKKwogZnJvbSB3ZWJraXRweS50
aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAsIFNvdXBTdHJhaW5l
cgogCiAKQEAgLTY4LDIxICs3MCwzMiBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0cyhvYmplY3Qp
OgogICAgICAgICByZXN1bHRzX2h0bWwgPSAiJXMvcmVzdWx0cy5odG1sIiAlIGJhc2VfdXJsCiAg
ICAgICAgICMgRklYTUU6IFdlIG5lZWQgdG8gbW92ZSB0aGlzIHNvcnQgb2YgNDA0IGxvZ2ljIGlu
dG8gTmV0d29ya1RyYW5zYWN0aW9uIG9yIHNpbWlsYXIuCiAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHBhZ2UgPSB1cmxsaWIyLnVybG9wZW4ocmVzdWx0c19odG1sKQotICAgICAgICAgICAgcmV0
dXJuIGNscy5fcGFyc2VfcmVzdWx0c19odG1sKHBhZ2UpCisgICAgICAgICAgICByZXR1cm4gdXJs
bGliMi51cmxvcGVuKHJlc3VsdHNfaHRtbCkKICAgICAgICAgZXhjZXB0IHVybGxpYjIuSFRUUEVy
cm9yLCBlcnJvcjoKICAgICAgICAgICAgIGlmIGVycm9yLmNvZGUgIT0gNDA0OgogICAgICAgICAg
ICAgICAgIHJhaXNlCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgcmVzdWx0c19mcm9tX3Vy
bChjbHMsIGJhc2VfdXJsKToKLSAgICAgICAgcGFyc2VkX3Jlc3VsdHMgPSBjbHMuX2ZldGNoX3Jl
c3VsdHNfaHRtbChiYXNlX3VybCkKKyAgICAgICAgcmVzdWx0c19wYWdlID0gY2xzLl9mZXRjaF9y
ZXN1bHRzX2h0bWwoYmFzZV91cmwpCisgICAgICAgIHJldHVybiBjbHMucmVzdWx0c19mcm9tX3N0
cmluZyhyZXN1bHRzX3BhZ2UpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcmVzdWx0c19m
cm9tX3BhdGgoY2xzLCBwYXRoKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBjb2Rl
Y3Mub3BlbihwYXRoLCAiciIsICJ1dGYtOCIpIGFzIHJlc3VsdHNfZmlsZToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY2xzLnJlc3VsdHNfZnJvbV9zdHJpbmcocmVzdWx0c19maWxlKQorICAgICAg
ICBleGNlcHQgT1NFcnJvciwgZTogICMgRmlsZSBkb2VzIG5vdCBleGlzdCBvciBjYW4ndCBiZSBy
ZWFkLgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiByZXN1bHRzX2Zyb21fc3RyaW5nKGNscywgc3RyaW5nKToKKyAgICAgICAgcGFyc2VkX3Jlc3Vs
dHMgPSBjbHMuX3BhcnNlX3Jlc3VsdHNfaHRtbChzdHJpbmcpCiAgICAgICAgIGlmIG5vdCBwYXJz
ZWRfcmVzdWx0czoKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBjbHMo
YmFzZV91cmwsIHBhcnNlZF9yZXN1bHRzKQorICAgICAgICByZXR1cm4gY2xzKHBhcnNlZF9yZXN1
bHRzKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhc2VfdXJsLCBwYXJzZWRfcmVzdWx0cyk6
Ci0gICAgICAgIHNlbGYuX2Jhc2VfdXJsID0gYmFzZV91cmwKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcGFyc2VkX3Jlc3VsdHMpOgogICAgICAgICBzZWxmLl9wYXJzZWRfcmVzdWx0cyA9IHBhcnNl
ZF9yZXN1bHRzCiAKICAgICBkZWYgcGFyc2VkX3Jlc3VsdHMoc2VsZik6CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNf
dW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5
b3V0dGVzdHJlc3VsdHNfdW5pdHRlc3QucHkKaW5kZXggMDM0ODQ4ZTM2ZDY2MGUyZmU2ZDk2YjY2
NDIzZWM0MTNiMWI3MWRjOS4uNDRlNGRiYzViYmExMjFmNTAxYTM5Y2VlMzlhNDhmMDk3MThkNWJj
ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xh
eW91dHRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0c191bml0dGVzdC5weQpAQCAtNjksMyAr
NjksOCBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgIGRlZiB0ZXN0X3BhcnNlX2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHJl
c3VsdHMgPSBMYXlvdXRUZXN0UmVzdWx0cy5fcGFyc2VfcmVzdWx0c19odG1sKHNlbGYuX2V4YW1w
bGVfcmVzdWx0c19odG1sKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2V4cGVjdGVk
X2xheW91dF90ZXN0X3Jlc3VsdHMsIHJlc3VsdHMpCisKKyAgICBkZWYgdGVzdF9yZXN1bHRzX2Zy
b21fc3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExheW91dFRlc3RSZXN1
bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcoIiIpLCBOb25lKQorICAgICAgICByZXN1bHRzID0gTGF5
b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyhzZWxmLl9leGFtcGxlX3Jlc3VsdHNf
aHRtbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3Rz
KCkpLCAwKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Jv
dC9jb21taXRxdWV1ZXRhc2sucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L2NvbW1pdHF1ZXVldGFzay5weQppbmRleCBhNWMyY2EyMTY4N2E1N2QwMGVmZTMyNTUyNmQ3
OWFjYTYwMzVlMzU1Li44YmU5M2I5OWEyYWNmODUzNmViZDIxZGQwYzg1YmFlMGQwZDQxYjk0IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1
ZXVldGFzay5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2Nv
bW1pdHF1ZXVldGFzay5weQpAQCAtMjksMTAgKzI5LDI3IEBACiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogCiAKK2NsYXNzIENvbW1pdFF1
ZXVlVGFza0RlbGVnYXRlKG9iamVjdCk6CisgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1h
bmQpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0
IGltcGxlbWVudCIKKworICAgIGRlZiBjb21tYW5kX3Bhc3NlZChzZWxmLCBtZXNzYWdlLCBwYXRj
aCk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3Qg
aW1wbGVtZW50IgorCisgICAgZGVmIGNvbW1hbmRfZmFpbGVkKHNlbGYsIG1lc3NhZ2UsIHNjcmlw
dF9lcnJvciwgcGF0Y2gpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3Vi
Y2xhc3NlcyBtdXN0IGltcGxlbWVudCIKKworICAgIGRlZiBsYXlvdXRfdGVzdF9yZXN1bHRzKCk6
CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1w
bGVtZW50IgorCisgICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lf
dGVzdHMpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBt
dXN0IGltcGxlbWVudCIKKworCiBjbGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0KToKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgdG9vbCwgY29tbWl0X3F1ZXVlLCBwYXRjaCk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHRvb2wsIGRlbGVnYXRlLCBwYXRjaCk6CiAgICAgICAgIHNlbGYuX3Rvb2wg
PSB0b29sCi0gICAgICAgIHNlbGYuX2NvbW1pdF9xdWV1ZSA9IGNvbW1pdF9xdWV1ZQorICAgICAg
ICBzZWxmLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlCiAgICAgICAgIHNlbGYuX3BhdGNoID0gcGF0Y2gK
ICAgICAgICAgc2VsZi5fc2NyaXB0X2Vycm9yID0gTm9uZQogCkBAIC01MiwxNCArNjksMjMgQEAg
Y2xhc3MgQ29tbWl0UXVldWVUYXNrKG9iamVjdCk6CiAKICAgICBkZWYgX3J1bl9jb21tYW5kKHNl
bGYsIGNvbW1hbmQsIHN1Y2Nlc3NfbWVzc2FnZSwgZmFpbHVyZV9tZXNzYWdlKToKICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgc2VsZi5fY29tbWl0X3F1ZXVlLnJ1bl93ZWJraXRfcGF0Y2goY29t
bWFuZCkKLSAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9xdWV1ZS5jb21tYW5kX3Bhc3NlZChzdWNj
ZXNzX21lc3NhZ2UsIHBhdGNoPXNlbGYuX3BhdGNoKQorICAgICAgICAgICAgc2VsZi5fZGVsZWdh
dGUucnVuX2NvbW1hbmQoY29tbWFuZCkKKyAgICAgICAgICAgIHNlbGYuX2RlbGVnYXRlLmNvbW1h
bmRfcGFzc2VkKHN1Y2Nlc3NfbWVzc2FnZSwgcGF0Y2g9c2VsZi5fcGF0Y2gpCiAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CiAgICAgICAgICAg
ICBzZWxmLl9zY3JpcHRfZXJyb3IgPSBlCi0gICAgICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVz
X2lkID0gc2VsZi5fY29tbWl0X3F1ZXVlLmNvbW1hbmRfZmFpbGVkKGZhaWx1cmVfbWVzc2FnZSwg
c2NyaXB0X2Vycm9yPXNlbGYuX3NjcmlwdF9lcnJvciwgcGF0Y2g9c2VsZi5fcGF0Y2gpCisgICAg
ICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gc2VsZi5fZGVsZWdhdGUuY29tbWFuZF9m
YWlsZWQoZmFpbHVyZV9tZXNzYWdlLCBzY3JpcHRfZXJyb3I9c2VsZi5fc2NyaXB0X2Vycm9yLCBw
YXRjaD1zZWxmLl9wYXRjaCkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgZGVmIF9m
YWlsaW5nX3Rlc3RzX2Zyb21fbGFzdF9ydW4oc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBzZWxm
Ll9kZWxlZ2F0ZS5sYXlvdXRfdGVzdF9yZXN1bHRzKCkKKyAgICAgICAgaWYgbm90IHJlc3VsdHM6
CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gcmVzdWx0cy5mYWlsaW5n
X3Rlc3RzKCkKKworICAgIGRlZiBfcmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYsIGZsYWt5X3Rlc3Rz
KToKKyAgICAgICAgc2VsZi5fZGVsZWdhdGUucmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYuX3BhdGNo
LCBmbGFreV90ZXN0cykKKwogICAgIGRlZiBfYXBwbHkoc2VsZik6CiAgICAgICAgIHJldHVybiBz
ZWxmLl9ydW5fY29tbWFuZChbCiAgICAgICAgICAgICAiYXBwbHktYXR0YWNobWVudCIsCkBAIC0x
MzIsNiArMTU4LDI2IEBAIGNsYXNzIENvbW1pdFF1ZXVlVGFzayhvYmplY3QpOgogICAgICAgICAi
TGFuZGVkIHBhdGNoIiwKICAgICAgICAgIlVuYWJsZSB0byBsYW5kIHBhdGNoIikKIAorICAgIGRl
ZiBfdGVzdF9wYXRjaChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fcGF0Y2guaXNfcm9sbG91dCgp
OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5fdGVzdCgpOgorICAg
ICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBmaXJzdF9mYWlsaW5nX3Rlc3RzID0gc2Vs
Zi5fZmFpbGluZ190ZXN0c19mcm9tX2xhc3RfcnVuKCkKKyAgICAgICAgaWYgc2VsZi5fdGVzdCgp
OgorICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2ZsYWt5X3Rlc3RzKGZpcnN0X2ZhaWxpbmdfdGVz
dHMpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHNlY29uZF9mYWlsaW5nX3Rl
c3RzID0gc2VsZi5fZmFpbGluZ190ZXN0c19mcm9tX2xhc3RfcnVuKCkKKyAgICAgICAgaWYgZmly
c3RfZmFpbGluZ190ZXN0cyAhPSBzZWNvbmRfZmFpbGluZ190ZXN0czoKKyAgICAgICAgICAgIHNl
bGYuX3JlcG9ydF9mbGFreV90ZXN0cyhmaXJzdF9mYWlsaW5nX3Rlc3RzICsgc2Vjb25kX2ZhaWxp
bmdfdGVzdHMpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBpZiBzZWxmLl9i
dWlsZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoKCk6CisgICAgICAgICAgICByYWlzZSBzZWxmLl9z
Y3JpcHRfZXJyb3IgICMgVGhlIGVycm9yIGZyb20gdGhlIHByZXZpb3VzIC5fdGVzdCgpIHJ1biBp
cyByZWFsLCByZXBvcnQgaXQuCisgICAgICAgIHJldHVybiBGYWxzZSAgIyBUcmVlIG11c3QgYmUg
cmVkLCBqdXN0IHJldHJ5IGxhdGVyLgorCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgaWYg
bm90IHNlbGYuX3ZhbGlkYXRlKCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTE0MSwx
MiArMTg3LDggQEAgY2xhc3MgQ29tbWl0UXVldWVUYXNrKG9iamVjdCk6CiAgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5fYnVpbGRfd2l0aG91dF9wYXRjaCgpOgogICAgICAgICAgICAgICAgIHJldHVy
biBGYWxzZQogICAgICAgICAgICAgcmFpc2Ugc2VsZi5fc2NyaXB0X2Vycm9yCi0gICAgICAgIGlm
IG5vdCBzZWxmLl9wYXRjaC5pc19yb2xsb3V0KCk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5f
dGVzdCgpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90ZXN0KCk6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLl9idWlsZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoKCk6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAg
cmFpc2Ugc2VsZi5fc2NyaXB0X2Vycm9yCisgICAgICAgIGlmIG5vdCBzZWxmLl90ZXN0X3BhdGNo
KCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgIyBNYWtlIHN1cmUgdGhlIHBh
dGNoIGlzIHN0aWxsIHZhbGlkIGJlZm9yZSBsYW5kaW5nIChlLmcuLCBtYWtlIHN1cmUKICAgICAg
ICAgIyBubyBvbmUgaGFzIHNldCBjb21taXQtcXVldWUtIHNpbmNlIHdlIHN0YXJ0ZWQgd29ya2lu
ZyBvbiB0aGUgcGF0Y2guKQogICAgICAgICBpZiBub3Qgc2VsZi5fdmFsaWRhdGUoKToKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0
YXNrX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9j
b21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKaW5kZXggMzhjNDc0NzY3Y2ZiYTgyYWZlNjg0OGUx
OTNmNDZlZmM4OTMwNmI1YS4uNGE2NGY3OGVjMjI0ZjVmMDFhZGU5ZTNmOWI2YTMyNDU3M2VlYWI1
NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21t
aXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKQEAgLTM2LDExICszNiwxMSBA
QCBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmNvbW1pdHF1ZXVldGFzayBpbXBvcnQgKgogZnJvbSB3
ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrVG9vbAogCiAKLWNsYXNzIE1vY2tDb21t
aXRRdWV1ZToKK2NsYXNzIE1vY2tDb21taXRRdWV1ZShDb21taXRRdWV1ZVRhc2tEZWxlZ2F0ZSk6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9yX3BsYW4pOgogICAgICAgICBzZWxmLl9lcnJv
cl9wbGFuID0gZXJyb3JfcGxhbgogCi0gICAgZGVmIHJ1bl93ZWJraXRfcGF0Y2goc2VsZiwgY29t
bWFuZCk6CisgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgogICAgICAgICBsb2co
InJ1bl93ZWJraXRfcGF0Y2g6ICVzIiAlIGNvbW1hbmQpCiAgICAgICAgIGlmIHNlbGYuX2Vycm9y
X3BsYW46CiAgICAgICAgICAgICBlcnJvciA9IHNlbGYuX2Vycm9yX3BsYW4ucG9wKDApCkBAIC01
Niw2ICs1NiwxMiBAQCBjbGFzcyBNb2NrQ29tbWl0UXVldWU6CiAgICAgICAgICAgICBmYWlsdXJl
X21lc3NhZ2UsIHNjcmlwdF9lcnJvciwgcGF0Y2guaWQoKSkpCiAgICAgICAgIHJldHVybiAzOTQ3
CiAKKyAgICBkZWYgbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3Rz
KToKKyAgICAgICAgbG9nKCJyZXBvcnRfZmxha3lfdGVzdHM6IHBhdGNoPSclcycgZmxha3lfdGVz
dHM9JyVzJyIgJSAocGF0Y2guaWQoKSwgZmxha3lfdGVzdHMpKQorCiAKIGNsYXNzIENvbW1pdFF1
ZXVlVGFza1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBfcnVuX3Rocm91Z2hfdGFz
ayhzZWxmLCBjb21taXRfcXVldWUsIGV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfZXhjZXB0aW9u
PU5vbmUpOgpAQCAtMTI5LDYgKzEzNSw3IEBAIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5k
LXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1xCiBjb21t
YW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBz
Y3JpcHRfZXJyb3I9J01PQ0sgdGVzdHMgZmFpbHVyZScgcGF0Y2g9JzE5NycKIHJ1bl93ZWJraXRf
cGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICct
LXRlc3QnLCAnLS1xdWlldCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX3Bhc3NlZDog
c3VjY2Vzc19tZXNzYWdlPSdQYXNzZWQgdGVzdHMnIHBhdGNoPScxOTcnCityZXBvcnRfZmxha3lf
dGVzdHM6IHBhdGNoPScxOTcnIGZsYWt5X3Rlc3RzPSdOb25lJwogcnVuX3dlYmtpdF9wYXRjaDog
WydsYW5kLWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1jbGVhbicsICctLWlnbm9yZS1idWlsZGVycycs
ICctLXF1aWV0JywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0
LXF1ZXVlJywgMTk3XQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nTGFuZGVkIHBh
dGNoJyBwYXRjaD0nMTk3JwogIiIiCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQppbmRleCA0ZTAwZTNlNDUyNGIwNDU2ODdlYmFi
NjkwNGI0MjNlOGQ1YmZkZWQ4Li44ZTAxYjBhODI1NjkwNDg5NTE0OWIyOTFmZTZjMGQ5MDZjMmM4
MTkyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9xdWV1ZXMucHkKQEAgLTM2LDExICszNiwxMiBAQCBmcm9tIG9wdHBhcnNlIGltcG9ydCBt
YWtlX29wdGlvbgogZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSB3ZWJraXRw
eS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBDb21taXR0ZXJWYWxpZGF0b3IKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLm5ldC5sYXlvdXR0ZXN0cmVzdWx0cyBpbXBvcnQgTGF5b3V0VGVzdFJlc3Vs
dHMKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5zdGF0dXNzZXJ2ZXIgaW1wb3J0IFN0YXR1c1Nl
cnZlcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0
RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1w
b3J0IGVycm9yLCBsb2cKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5zdGVwc2VxdWVuY2Ug
aW1wb3J0IFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcgotZnJvbSB3ZWJraXRweS50b29sLmJvdC5j
b21taXRxdWV1ZXRhc2sgaW1wb3J0IENvbW1pdFF1ZXVlVGFzaworZnJvbSB3ZWJraXRweS50b29s
LmJvdC5jb21taXRxdWV1ZXRhc2sgaW1wb3J0IENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlLCBDb21t
aXRRdWV1ZVRhc2sKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZmVlZGVycyBpbXBvcnQgQ29tbWl0
UXVldWVGZWVkZXIKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucGF0Y2hjb2xsZWN0aW9uIGltcG9y
dCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0aW9uLCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0aW9uRGVs
ZWdhdGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucXVldWVlbmdpbmUgaW1wb3J0IFF1ZXVlRW5n
aW5lLCBRdWV1ZUVuZ2luZURlbGVnYXRlCkBAIC0yMTEsNyArMjEyLDcgQEAgY2xhc3MgQWJzdHJh
Y3RQYXRjaFF1ZXVlKEFic3RyYWN0UXVldWUpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2lu
KHNlbGYuX2xvZ19kaXJlY3RvcnkoKSwgIiVzLmxvZyIgJSBwYXRjaC5idWdfaWQoKSkKIAogCi1j
bGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFu
ZGxlcik6CitjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5j
ZUVycm9ySGFuZGxlciwgQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUpOgogICAgIG5hbWUgPSAiY29t
bWl0LXF1ZXVlIgogCiAgICAgIyBBYnN0cmFjdFBhdGNoUXVldWUgbWV0aG9kcwpAQCAtMjMxLDYg
KzIzMiwxMiBAQCBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1
ZW5jZUVycm9ySGFuZGxlcik6CiAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMoIlByb2Nlc3Np
bmcgJXMiICUgcGF0Y2hfdGV4dCwgcGF0Y2gpCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyAgICBk
ZWYgX2Vycm9yX21lc3NhZ2VfZm9yX2J1ZyhzZWxmLCBzdGF0dXNfaWQsIHNjcmlwdF9lcnJvcik6
CisgICAgICAgIGlmIG5vdCBzY3JpcHRfZXJyb3Iub3V0cHV0OgorICAgICAgICAgICAgcmV0dXJu
IHNjcmlwdF9lcnJvci5tZXNzYWdlX3dpdGhfb3V0cHV0KCkKKyAgICAgICAgcmVzdWx0c19saW5r
ID0gc2VsZi5fdG9vbC5zdGF0dXNfc2VydmVyLnJlc3VsdHNfdXJsX2Zvcl9zdGF0dXMoc3RhdHVz
X2lkKQorICAgICAgICByZXR1cm4gIiVzXG5GdWxsIG91dHB1dDogJXMiICUgKHNjcmlwdF9lcnJv
ci5tZXNzYWdlX3dpdGhfb3V0cHV0KCksIHJlc3VsdHNfbGluaykKKwogICAgIGRlZiBwcm9jZXNz
X3dvcmtfaXRlbShzZWxmLCBwYXRjaCk6CiAgICAgICAgIHNlbGYuX2NjX3dhdGNoZXJzKHBhdGNo
LmJ1Z19pZCgpKQogICAgICAgICB0YXNrID0gQ29tbWl0UXVldWVUYXNrKHNlbGYuX3Rvb2wsIHNl
bGYsIHBhdGNoKQpAQCAtMjQ3LDYgKzI1NCwxMSBAQCBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFj
dFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcik6CiAgICAgZGVmIGhhbmRsZV91
bmV4cGVjdGVkX2Vycm9yKHNlbGYsIHBhdGNoLCBtZXNzYWdlKToKICAgICAgICAgc2VsZi5jb21t
aXR0ZXJfdmFsaWRhdG9yLnJlamVjdF9wYXRjaF9mcm9tX2NvbW1pdF9xdWV1ZShwYXRjaC5pZCgp
LCBtZXNzYWdlKQogCisgICAgIyBDb21taXRRdWV1ZVRhc2tEZWxlZ2F0ZSBtZXRob2RzCisKKyAg
ICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6CisgICAgICAgIHNlbGYucnVuX3dlYmtp
dF9wYXRjaChjb21tYW5kKQorCiAgICAgZGVmIGNvbW1hbmRfcGFzc2VkKHNlbGYsIG1lc3NhZ2Us
IHBhdGNoKToKICAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1cyhtZXNzYWdlLCBwYXRjaD1wYXRj
aCkKIApAQCAtMjU0LDExICsyNjYsMTMgQEAgY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJhY3RQYXRj
aFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIpOgogICAgICAgICBmYWlsdXJlX2xvZyA9
IHNlbGYuX2xvZ19mcm9tX3NjcmlwdF9lcnJvcl9mb3JfdXBsb2FkKHNjcmlwdF9lcnJvcikKICAg
ICAgICAgcmV0dXJuIHNlbGYuX3VwZGF0ZV9zdGF0dXMobWVzc2FnZSwgcGF0Y2g9cGF0Y2gsIHJl
c3VsdHNfZmlsZT1mYWlsdXJlX2xvZykKIAotICAgIGRlZiBfZXJyb3JfbWVzc2FnZV9mb3JfYnVn
KHNlbGYsIHN0YXR1c19pZCwgc2NyaXB0X2Vycm9yKToKLSAgICAgICAgaWYgbm90IHNjcmlwdF9l
cnJvci5vdXRwdXQ6Ci0gICAgICAgICAgICByZXR1cm4gc2NyaXB0X2Vycm9yLm1lc3NhZ2Vfd2l0
aF9vdXRwdXQoKQotICAgICAgICByZXN1bHRzX2xpbmsgPSBzZWxmLl90b29sLnN0YXR1c19zZXJ2
ZXIucmVzdWx0c191cmxfZm9yX3N0YXR1cyhzdGF0dXNfaWQpCi0gICAgICAgIHJldHVybiAiJXNc
bkZ1bGwgb3V0cHV0OiAlcyIgJSAoc2NyaXB0X2Vycm9yLm1lc3NhZ2Vfd2l0aF9vdXRwdXQoKSwg
cmVzdWx0c19saW5rKQorICAgIGRlZiBsYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYpOgorICAgICAg
ICBwYXRoID0gc2VsZi5fdG9vbC5wb3J0KCkubGF5b3V0X3Rlc3RzX3Jlc3VsdHNfcGF0aCgpCisg
ICAgICAgIHJldHVybiBMYXlvdXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fcGF0aChwYXRoKQor
CisgICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfdGVzdHMpOgor
ICAgICAgICBtZXNzYWdlID0gIlRoZSAlcyBlbmNvdW50ZXJlZCB0aGUgZm9sbG93aW5nIGZsYWt5
IHRlc3RzIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNobWVudCAlczpcblxuJXNcblxuUGxlYXNlIGZp
bGUgYnVncyBhZ2FpbnN0IHRoZSB0ZXN0cy4gIFRoZSBjb21taXQtcXVldWUgaXMgY29udGludWlu
ZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guIiAlIChzZWxmLm5hbWUsIHBhdGNoLmlkKCksIGZsYWt5
X3Rlc3RzKQorICAgICAgICBzZWxmLl90b29sLmJ1Z3MucG9zdF9jb21tZW50X3RvX2J1ZyhwYXRj
aC5idWdfaWQoKSwgbWVzc2FnZSwgY2M9c2VsZi53YXRjaGVycykKIAogICAgICMgU3RlcFNlcXVl
bmNlRXJyb3JIYW5kbGVyIG1ldGhvZHMKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKaW5kZXgg
ZDY4MDA5ODEzNmIwMmQzYzk5OGU5MDhmNjc5YjYxMjM4YjA3N2VhYS4uZmNlZDBiYjExMTg2N2E2
YTRjMDRmZDgyNzY2ZDcwNDg5NTFkZjJlOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CkBA
IC0zMTEsNiArMzExLDIxIEBAIE1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBQYXNz
CiAiIiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVl
LnByb2Nlc3Nfd29ya19pdGVtLCBbTW9ja1BhdGNoKCldLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0
ZWRfc3RkZXJyKQogCisgICAgZGVmIHRlc3RfcmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYpOgorICAg
ICAgICBxdWV1ZSA9IENvbW1pdFF1ZXVlKCkKKyAgICAgICAgcXVldWUuYmluZF90b190b29sKE1v
Y2tUb29sKCkpCisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0sgYnVnIGNvbW1lbnQ6
IGJ1Z19pZD0xNDIsIGNjPVtdCistLS0gQmVnaW4gY29tbWVudCAtLS0KK1RoZSBjb21taXQtcXVl
dWUgZW5jb3VudGVyZWQgdGhlIGZvbGxvd2luZyBmbGFreSB0ZXN0cyB3aGlsZSBwcm9jZXNzaW5n
IGF0dGFjaG1lbnQgMTk3OgorCitbJ2Zvby9iYXIuaHRtbCcsICdiYXIvYmF6Lmh0bWwnXQorCitQ
bGVhc2UgZmlsZSBidWdzIGFnYWluc3QgdGhlIHRlc3RzLiAgVGhlIGNvbW1pdC1xdWV1ZSBpcyBj
b250aW51aW5nIHRvIHByb2Nlc3MgeW91ciBwYXRjaC4KKy0tLSBFbmQgY29tbWVudCAtLS0KKwor
IiIiCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBxdWV1ZS5y
ZXBvcnRfZmxha3lfdGVzdHMsIFtNb2NrUGF0Y2goKSwgWyJmb28vYmFyLmh0bWwiLCAiYmFyL2Jh
ei5odG1sIl1dLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorCiAKIGNsYXNzIFJp
ZXR2ZWxkVXBsb2FkUXVldWVUZXN0KFF1ZXVlc1Rlc3QpOgogICAgIGRlZiB0ZXN0X3JpZXR2ZWxk
X3VwbG9hZF9xdWV1ZShzZWxmKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9tYWluLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21h
aW4ucHkKaW5kZXggNzIxYmY1OWUwNGNhZmI2NTBiZWMwZDg2YmE2NzJhNzBkOGEwMGJmMS4uYjA2
YjdmNjE2MjRmMjYwNDJkZDY0MWI5ZTU1Yzk5MzU1MGEwN2U1OSAxMDA3NTUKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL21haW4ucHkKQEAgLTM0LDEwICszNCwxMiBAQCBpbXBvcnQgdGhy
ZWFkaW5nCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmFwaSBpbXBvcnQgQ2hlY2tv
dXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgZGVmYXVsdF9zY20K
K2Zyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5wb3J0cyBpbXBvcnQgV2ViS2l0UG9ydAogZnJv
bSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBCdWd6aWxsYQogZnJvbSB3ZWJr
aXRweS5jb21tb24ubmV0LmJ1aWxkYm90IGltcG9ydCBCdWlsZEJvdAogZnJvbSB3ZWJraXRweS5j
b21tb24ubmV0LnJpZXR2ZWxkIGltcG9ydCBSaWV0dmVsZAogZnJvbSB3ZWJraXRweS5jb21tb24u
bmV0LmlyYy5pcmNwcm94eSBpbXBvcnQgSVJDUHJveHkKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0udXNlciBpbXBvcnQgVXNlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0
IHBvcnQKQEAgLTUyLDcgKzU0LDYgQEAgZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXVl
cyBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnNoZXJpZmZib3QgaW1wb3J0
ICoKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy51cGxvYWQgaW1wb3J0ICoKIGZyb20gd2Vi
a2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBNdWx0aUNvbW1hbmRUb29sCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBsb2cKIAog
CiBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29sKToKQEAgLTc1LDYgKzc2LDcgQEAg
Y2xhc3MgV2ViS2l0UGF0Y2goTXVsdGlDb21tYW5kVG9vbCk6CiAgICAgICAgIHNlbGYuZXhlY3V0
aXZlID0gRXhlY3V0aXZlKCkKICAgICAgICAgc2VsZi5faXJjID0gTm9uZQogICAgICAgICBzZWxm
LnVzZXIgPSBVc2VyKCkKKyAgICAgICAgc2VsZi5fcG9ydCA9IE5vbmUKICAgICAgICAgc2VsZi5f
c2NtID0gTm9uZQogICAgICAgICBzZWxmLl9jaGVja291dCA9IE5vbmUKICAgICAgICAgc2VsZi5z
dGF0dXNfc2VydmVyID0gU3RhdHVzU2VydmVyKCkKQEAgLTkyLDYgKzk0LDkgQEAgY2xhc3MgV2Vi
S2l0UGF0Y2goTXVsdGlDb21tYW5kVG9vbCk6CiAgICAgICAgICAgICBzZWxmLl9jaGVja291dCA9
IENoZWNrb3V0KHNlbGYuc2NtKCkpCiAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja291dAogCisg
ICAgZGVmIHBvcnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9wb3J0CisKICAgICBkZWYg
ZW5zdXJlX2lyY19jb25uZWN0ZWQoc2VsZiwgaXJjX2RlbGVnYXRlKToKICAgICAgICAgaWYgbm90
IHNlbGYuX2lyYzoKICAgICAgICAgICAgIHNlbGYuX2lyYyA9IElSQ1Byb3h5KGlyY19kZWxlZ2F0
ZSkKQEAgLTEyOSw2ICsxMzQsOCBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29s
KToKICAgICAgICAgICAgIHNlbGYuc3RhdHVzX3NlcnZlci5zZXRfYm90X2lkKG9wdGlvbnMuYm90
X2lkKQogICAgICAgICBpZiBvcHRpb25zLmlyY19wYXNzd29yZDoKICAgICAgICAgICAgIHNlbGYu
aXJjX3Bhc3N3b3JkID0gb3B0aW9ucy5pcmNfcGFzc3dvcmQKKyAgICAgICAgIyBJZiBvcHRpb25z
LnBvcnQgaXMgTm9uZSwgd2UnbGwgZ2V0IHRoZSBkZWZhdWx0IHBvcnQgZm9yIHRoaXMgcGxhdGZv
cm0uCisgICAgICAgIHNlbGYuX3BvcnQgPSBXZWJLaXRQb3J0LnBvcnQob3B0aW9ucy5wb3J0KQog
CiAgICAgZGVmIHNob3VsZF9leGVjdXRlX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6CiAgICAgICAg
IGlmIGNvbW1hbmQucmVxdWlyZXNfbG9jYWxfY29tbWl0cyBhbmQgbm90IHNlbGYuc2NtKCkuc3Vw
cG9ydHNfbG9jYWxfY29tbWl0cygpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL21vY2t0b29sLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL21vY2t0b29sLnB5CmluZGV4IGY4NGVjMmIzMmRjMjk1NTY1NjU3MzZiOTA5NWE2NGQwNzUx
NWMxOTYuLmZiNDlkYjk2NDcwMjUzNDFiOTA3ODVmZjlmMWU5MTUyNWUzMzA3YjMgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKQEAgLTMwLDYgKzMw
LDcgQEAgaW1wb3J0IG9zCiBpbXBvcnQgdGhyZWFkaW5nCiAKIGZyb20gd2Via2l0cHkuY29tbW9u
LmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0LCBSZXZpZXdlcgorZnJvbSB3
ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGltcG9ydCBNYWNQb3J0CiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jaGVja291dC5jb21taXRpbmZvIGltcG9ydCBDb21taXRJbmZvCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jaGVja291dC5zY20gaW1wb3J0IENvbW1pdE1lc3NhZ2UKIGZyb20gd2Via2l0
cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVnLCBBdHRhY2htZW50CkBAIC02NDUsNiAr
NjQ2LDEwIEBAIGNsYXNzIE1vY2tUb29sKCk6CiAgICAgZGVmIHBhdGgoc2VsZik6CiAgICAgICAg
IHJldHVybiAiZWNobyIKIAorICAgIGRlZiBwb3J0KHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBD
b25zaWRlciB1c2luZyBhIG1vY2sgaGVyZS4KKyAgICAgICAgcmV0dXJuIE1hY1BvcnQKKwogCiBj
bGFzcyBNb2NrQnJvd3NlcihvYmplY3QpOgogICAgIHBhcmFtcyA9IHt9CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQpp
bmRleCA5Y2ViMmNiZDBkMTJmMTI2ODVmMmRmNTRmZWZlMDIzYTgyMGE1NzAxLi4wMmE4NzZhYTVk
MDQyZWY5YTIzOGVlY2E4NTFkNmYzMDE2NWIxYjE5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkKQEAgLTM2LDIz
ICszNiwxNSBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICBkZWYgX19pbml0X18o
c2VsZiwgdG9vbCwgb3B0aW9ucyk6CiAgICAgICAgIHNlbGYuX3Rvb2wgPSB0b29sCiAgICAgICAg
IHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCiAKKyAg
ICAjIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdG9vbC5wb3J0KCkKICAgICBkZWYgX3J1bl9zY3Jp
cHQoc2VsZiwgc2NyaXB0X25hbWUsIGFyZ3M9Tm9uZSwgcXVpZXQ9RmFsc2UsIHBvcnQ9V2ViS2l0
UG9ydCk6CiAgICAgICAgIGxvZygiUnVubmluZyAlcyIgJSBzY3JpcHRfbmFtZSkKICAgICAgICAg
Y29tbWFuZCA9IFtwb3J0LnNjcmlwdF9wYXRoKHNjcmlwdF9uYW1lKV0KICAgICAgICAgaWYgYXJn
czoKICAgICAgICAgICAgIGNvbW1hbmQuZXh0ZW5kKGFyZ3MpCi0gICAgICAgICMgRklYTUU6IFRo
aXMgc2hvdWxkIHVzZSBzZWxmLnBvcnQoKQogICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5y
dW5fYW5kX3Rocm93X2lmX2ZhaWwoY29tbWFuZCwgcXVpZXQpCiAKLSAgICAjIEZJWE1FOiBUaGUg
cG9ydCBzaG91bGQgbGl2ZSBvbiB0aGUgdG9vbC4KLSAgICBkZWYgcG9ydChzZWxmKToKLSAgICAg
ICAgaWYgc2VsZi5fcG9ydDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3J0Ci0gICAgICAg
IHNlbGYuX3BvcnQgPSBXZWJLaXRQb3J0LnBvcnQoc2VsZi5fb3B0aW9ucy5wb3J0KQotICAgICAg
ICByZXR1cm4gc2VsZi5fcG9ydAotCiAgICAgX3dlbGxfa25vd25fa2V5cyA9IHsKICAgICAgICAg
ImRpZmYiOiBsYW1iZGEgc2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wuc2NtKCkuY3JlYXRlX3BhdGNo
KHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCksCiAgICAgICAgICJjaGFuZ2Vsb2dzIjogbGFtYmRh
IHNlbGYsIHN0YXRlOiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhz
ZWxmLl9vcHRpb25zLmdpdF9jb21taXQpLApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL2J1aWxkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2J1aWxkLnB5CmluZGV4IDQ1NmRiMjUzOWJjZDIwMmRmM2NiNzVmYTMy
ZmZlMzM5MzA5MTMxZmEuLjA5OTBiOGIzMzRlNjU4ZjFkNmZkYjA2NzE4ZTQzY2QwYWEwMDBhNjAg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9idWls
ZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYnVpbGQu
cHkKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQnVpbGQoQWJzdHJhY3RTdGVwKToKICAgICAgICAg
XQogCiAgICAgZGVmIGJ1aWxkKHNlbGYsIGJ1aWxkX3N0eWxlKToKLSAgICAgICAgc2VsZi5fdG9v
bC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHNlbGYucG9ydCgpLmJ1aWxkX3dlYmtp
dF9jb21tYW5kKGJ1aWxkX3N0eWxlPWJ1aWxkX3N0eWxlKSwgc2VsZi5fb3B0aW9ucy5xdWlldCkK
KyAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHNlbGYu
X3Rvb2wucG9ydCgpLmJ1aWxkX3dlYmtpdF9jb21tYW5kKGJ1aWxkX3N0eWxlPWJ1aWxkX3N0eWxl
KSwgc2VsZi5fb3B0aW9ucy5xdWlldCkKIAogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgogICAg
ICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5idWlsZDoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKaW5k
ZXggNmE2OTYwYTA0YjM2ZThjMWQ4YTlhZTZlZTZjOTFjYjFjNjI4NGI1OC4uMDM4MjczODg2ZDY0
ZjUzNjc4OWY4ZWY4ZmIzMGU4MWFiNDU3ZGE0YyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKQEAg
LTYxLDcgKzYxLDcgQEAgY2xhc3MgUHJlcGFyZUNoYW5nZUxvZyhBYnN0cmFjdFN0ZXApOgogICAg
ICAgICAgICAgc2VsZi5fZW5zdXJlX2J1Z191cmwoc3RhdGUpCiAgICAgICAgICAgICByZXR1cm4K
ICAgICAgICAgb3MuY2hkaXIoc2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290KQotICAgICAg
ICBhcmdzID0gW3NlbGYucG9ydCgpLnNjcmlwdF9wYXRoKCJwcmVwYXJlLUNoYW5nZUxvZyIpXQor
ICAgICAgICBhcmdzID0gW3NlbGYuX3Rvb2wucG9ydCgpLnNjcmlwdF9wYXRoKCJwcmVwYXJlLUNo
YW5nZUxvZyIpXQogICAgICAgICBpZiBzdGF0ZS5nZXQoImJ1Z19pZCIpOgogICAgICAgICAgICAg
YXJncy5hcHBlbmQoIi0tYnVnPSVzIiAlIHN0YXRlWyJidWdfaWQiXSkKICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5lbWFpbDoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9ydW50ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9ydW50ZXN0cy5weQppbmRleCA2ZmM5NGExYTc0YTA0N2UwZGFmOWRjNDYzM2I4
N2Q2ZTAwZjk1NWVlLi5kY2JmYzQ0NzVhZTJkMGEyNTk5NzYzNWNlMTAwODY1OTFlODQ5MDI4IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVz
dHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRl
c3RzLnB5CkBAIC00NSwxNyArNDUsMTcgQEAgY2xhc3MgUnVuVGVzdHMoQWJzdHJhY3RTdGVwKToK
IAogICAgICAgICAjIFJ1biB0aGUgc2NyaXB0aW5nIHVuaXQgdGVzdHMgZmlyc3QgYmVjYXVzZSB0
aGV5J3JlIHF1aWNrZXN0LgogICAgICAgICBsb2coIlJ1bm5pbmcgUHl0aG9uIHVuaXQgdGVzdHMi
KQotICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2Vs
Zi5wb3J0KCkucnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFuZCgpKQorICAgICAgICBzZWxmLl90
b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5fdG9vbC5wb3J0KCkucnVu
X3B5dGhvbl91bml0dGVzdHNfY29tbWFuZCgpKQogICAgICAgICBsb2coIlJ1bm5pbmcgUGVybCB1
bml0IHRlc3RzIikKLSAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19p
Zl9mYWlsKHNlbGYucG9ydCgpLnJ1bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5kKCkpCisgICAgICAg
IHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90b29sLnBv
cnQoKS5ydW5fcGVybF91bml0dGVzdHNfY29tbWFuZCgpKQogCi0gICAgICAgIGphdmFzY3JpcHRj
b3JlX3Rlc3RzX2NvbW1hbmQgPSBzZWxmLnBvcnQoKS5ydW5famF2YXNjcmlwdGNvcmVfdGVzdHNf
Y29tbWFuZCgpCisgICAgICAgIGphdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQgPSBzZWxmLl90
b29sLnBvcnQoKS5ydW5famF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCgpCiAgICAgICAgIGlm
IGphdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQ6CiAgICAgICAgICAgICBsb2coIlJ1bm5pbmcg
SmF2YVNjcmlwdENvcmUgdGVzdHMiKQogICAgICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUu
cnVuX2FuZF90aHJvd19pZl9mYWlsKGphdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQsIHF1aWV0
PVRydWUpCiAKICAgICAgICAgbG9nKCJSdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMiKQotICAgICAg
ICBhcmdzID0gc2VsZi5wb3J0KCkucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCkKKyAgICAgICAg
YXJncyA9IHNlbGYuX3Rvb2wucG9ydCgpLnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpCiAgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMubm9uX2ludGVyYWN0aXZlOgogICAgICAgICAgICAgYXJncy5h
cHBlbmQoIi0tbm8tbGF1bmNoLXNhZmFyaSIpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1l
eGl0LWFmdGVyLW4tZmFpbHVyZXM9MSIpCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIFJ1blRlc3Rz
KEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICAjIEZJWE1FOiBIYWNrIHRvIHdvcmsgYXJvdW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODkxMgogICAgICAgICAg
ICAgIyB3aGVuIHJ1bm5pbmcgdGhlIGNvbW1pdC1xdWV1ZSBvbiBhIG1hYyBsZW9wYXJkIG1hY2hp
bmUgc2luY2UgY29tcG9zaXRpbmcKICAgICAgICAgICAgICMgZG9lcyBub3Qgd29yayByZWxpYWJs
eSBvbiBMZW9wYXJkIGR1ZSB0byB2YXJpb3VzIGdyYXBoaWNzIGRyaXZlci9zeXN0ZW0gYnVncy4K
LSAgICAgICAgICAgIGlmIHNlbGYucG9ydCgpLm5hbWUoKSA9PSAiTWFjIiBhbmQgc2VsZi5wb3J0
KCkuaXNfbGVvcGFyZCgpOgorICAgICAgICAgICAgaWYgc2VsZi5fdG9vbC5wb3J0KCkubmFtZSgp
ID09ICJNYWMiIGFuZCBzZWxmLl90b29sLnBvcnQoKS5pc19sZW9wYXJkKCk6CiAgICAgICAgICAg
ICAgICAgdGVzdHNfdG9faWdub3JlID0gW10KICAgICAgICAgICAgICAgICB0ZXN0c190b19pZ25v
cmUuYXBwZW5kKCJjb21wb3NpdGluZyIpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weQppbmRleCAxNWYyNzVh
ZDhkMzI1NjZmZDQ0NWU1NTYzOThhNTE2NmQwMTgzNmQxLi4xYjU5M2I1Y2E4OWU5ZWE4Y2U4YTNh
ZGM2ODJhNGRhZDkzMjg2Y2FhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5CkBAIC01NywxOSArNTcsMjAg
QEAgY2xhc3MgU3RlcHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgdG9vbC51c2Vy
LnByb21wdCA9IGxhbWJkYSBtZXNzYWdlOiA0MgogICAgICAgICBzZWxmLl9ydW5fc3RlcChQcm9t
cHRGb3JCdWdPclRpdGxlLCB0b29sPXRvb2wpCiAKLSAgICBkZWYgdGVzdF9ydW50ZXN0c19sZW9w
YXJkX2NvbW1pdF9xdWV1ZV9oYWNrKHNlbGYpOgorICAgIGRlZiB0ZXN0X3J1bnRlc3RzX2xlb3Bh
cmRfY29tbWl0X3F1ZXVlX2hhY2tfc3RlcChzZWxmKToKICAgICAgICAgZXhwZWN0ZWRfc3RkZXJy
ID0gIlJ1bm5pbmcgUHl0aG9uIHVuaXQgdGVzdHNcblJ1bm5pbmcgUGVybCB1bml0IHRlc3RzXG5S
dW5uaW5nIEphdmFTY3JpcHRDb3JlIHRlc3RzXG5SdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHNcbiIK
ICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHNlbGYuX3J1bl9z
dGVwLCBbUnVuVGVzdHNdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQogCi0gICAg
ZGVmIHRlc3RfcnVudGVzdHNfbGVvcGFyZF9jb21taXRfcXVldWVfaGFjayhzZWxmKToKKyAgICBk
ZWYgdGVzdF9ydW50ZXN0c19sZW9wYXJkX2NvbW1pdF9xdWV1ZV9oYWNrX2NvbW1hbmQoc2VsZik6
CiAgICAgICAgIG1vY2tfb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKICAgICAgICAgbW9ja19vcHRp
b25zLm5vbl9pbnRlcmFjdGl2ZSA9IFRydWUKLSAgICAgICAgc3RlcCA9IFJ1blRlc3RzKE1vY2tU
b29sKGxvZ19leGVjdXRpdmU9VHJ1ZSksIG1vY2tfb3B0aW9ucykKLSAgICAgICAgIyBGSVhNRTog
V2Ugc2hvdWxkbid0IHVzZSBhIHJlYWwgcG9ydC1vYmplY3QgaGVyZSwgYnV0IHRoZXJlIGlzIHRv
byBtdWNoIHRvIG1vY2sgYXQgdGhlIG1vbWVudC4KKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKGxv
Z19leGVjdXRpdmU9VHJ1ZSkKICAgICAgICAgbW9ja19wb3J0ID0gV2ViS2l0UG9ydCgpCiAgICAg
ICAgIG1vY2tfcG9ydC5uYW1lID0gbGFtYmRhOiAiTWFjIgogICAgICAgICBtb2NrX3BvcnQuaXNf
bGVvcGFyZCA9IGxhbWJkYTogVHJ1ZQotICAgICAgICBzdGVwLnBvcnQgPSBsYW1iZGE6IG1vY2tf
cG9ydAorICAgICAgICB0b29sLnBvcnQgPSBsYW1iZGE6IG1vY2tfcG9ydAorICAgICAgICBzdGVw
ID0gUnVuVGVzdHModG9vbCwgbW9ja19vcHRpb25zKQorICAgICAgICAjIEZJWE1FOiBXZSBzaG91
bGRuJ3QgdXNlIGEgcmVhbCBwb3J0LW9iamVjdCBoZXJlLCBidXQgdGhlcmUgaXMgdG9vIG11Y2gg
dG8gbW9jayBhdCB0aGUgbW9tZW50LgogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJSdW5u
aW5nIFB5dGhvbiB1bml0IHRlc3RzCiBNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydXZWJL
aXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHknXQogUnVubmluZyBQZXJsIHVuaXQgdGVzdHMK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRh
dGUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlLnB5
CmluZGV4IDhjMjkwZjk3YjEwY2MyYTk4YjkxMzJjZDA2NzZmODI5OTEwZjJhNjAuLmNkMWQ0ZDhh
OWM5ZGYxZGVlMTIzNDVlNTA2ZDFmZWJjYmE4MTc1YjAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGUucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZS5weQpAQCAtNDIsNCArNDIsNCBAQCBj
bGFzcyBVcGRhdGUoQWJzdHJhY3RTdGVwKToKICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMu
dXBkYXRlOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGxvZygiVXBkYXRpbmcgd29ya2lu
ZyBkaXJlY3RvcnkiKQotICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93
X2lmX2ZhaWwoc2VsZi5wb3J0KCkudXBkYXRlX3dlYmtpdF9jb21tYW5kKCksIHF1aWV0PVRydWUp
CisgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxm
Ll90b29sLnBvcnQoKS51cGRhdGVfd2Via2l0X2NvbW1hbmQoKSwgcXVpZXQ9VHJ1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70743</attachid>
            <date>2010-10-14 08:51:34 -0700</date>
            <delta_ts>2010-10-14 09:32:50 -0700</delta_ts>
            <desc>an alternative from this morning</desc>
            <filename>bug-47647-20101014085133.patch</filename>
            <type>text/plain</type>
            <size>14979</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2ZTRlMDk0N2Q2OThiY2JhODhkMTcxNWJjZGE0NThlZGY0NTY5MTI5Li40ZjI0MmVh
MTIwZjhkYTAzMTRkZWQ4MjQ2ZTRhMDM1MWE1M2RiYWI0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjggQEAK
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBjb21taXQt
cXVldWUgc2hvdWxkIG5vdCBmYWlsIHBhdGNoZXMgZHVlIHRvIGZsYWt5IHRlc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzY0NworCisgICAgICAg
IFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdCB0aGUgKnNhbWUqIGZsYWt5IHRlc3QgaGFzIHRv
IGZhaWwKKyAgICAgICAgdHdpY2UgaW4gYSByb3cgdG8gaGF2ZSBhIGZhbHNlIG5lZ2F0aXZlIGZy
b20gYSBmbGFreSB0ZXN0LgorCisgICAgICAgIElmIGRpZmZlcmVudCBmbGFreSB0ZXN0cyBmYWls
IChvciBpZiBhIHRlc3QgZmFpbHMgYW5kIHRoZW4gcGFzc2VzCisgICAgICAgIGluIGEgc2Vjb25k
IHJ1bikgdGhlbiB3ZSB3aWxsIHdhcm4gaW4gdGhlIGJ1ZyB0aGF0IHdlIGVuY291bnRlcmVkCisg
ICAgICAgIGEgZmxha3kgdGVzdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWlsZGJvdF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weToKKwor
MjAxMC0xMC0xMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQnJlYWsgTGF5b3V0VGVzdFJlc3Vs
dHMgb3V0IGludG8gaXRzIG93biBmaWxlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NzYzNwogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QucHkKaW5kZXggOGNiOTAyY2FkZTc5YzBkMTkzMDI1
ZTU0ZGEzOTQ4OTQwNmY2MTQ4Ni4uNmY4YmJkN2YyMTNmMDk1M2QyYTFjMDU1MDM5NmNiNzFiYzEy
N2M1OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1aWxkYm90LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9idWlsZGJvdC5weQpAQCAtMjE1LDkgKzIxNSwxOSBAQCBjbGFzcyBCdWlsZChvYmplY3QpOgog
ICAgICAgICByZXN1bHRzX2RpcmVjdG9yeSA9ICJyJXMgKCVzKSIgJSAoc2VsZi5yZXZpc2lvbigp
LCBzZWxmLl9udW1iZXIpCiAgICAgICAgIHJldHVybiAiJXMvJXMiICUgKHNlbGYuX2J1aWxkZXIu
cmVzdWx0c191cmwoKSwgdXJsbGliLnF1b3RlKHJlc3VsdHNfZGlyZWN0b3J5KSkKIAorICAgIGRl
ZiBfZmV0Y2hfcmVzdWx0c19odG1sKHNlbGYpOgorICAgICAgICByZXN1bHRzX2h0bWwgPSAiJXMv
JXMiICUgKHNlbGYucmVzdWx0c191cmwoKSwgTGF5b3V0VGVzdFJlc3VsdHMuZGVmYXVsdF9maWxl
bmFtZSgpKQorICAgICAgICAjIEZJWE1FOiBXZSBuZWVkIHRvIG1vdmUgdGhpcyBzb3J0IG9mIDQw
NCBsb2dpYyBpbnRvIE5ldHdvcmtUcmFuc2FjdGlvbiBvciBzaW1pbGFyLgorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXR1cm4gdXJsbGliMi51cmxvcGVuKHJlc3VsdHNfaHRtbCkKKyAgICAg
ICAgZXhjZXB0IHVybGxpYjIuSFRUUEVycm9yLCBlcnJvcjoKKyAgICAgICAgICAgIGlmIGVycm9y
LmNvZGUgIT0gNDA0OgorICAgICAgICAgICAgICAgIHJhaXNlCisKICAgICBkZWYgbGF5b3V0X3Rl
c3RfcmVzdWx0cyhzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX2xheW91dF90ZXN0X3Jlc3Vs
dHM6Ci0gICAgICAgICAgICBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzID0gTGF5b3V0VGVzdFJl
c3VsdHMucmVzdWx0c19mcm9tX3VybChzZWxmLnJlc3VsdHNfdXJsKCkpCisgICAgICAgICAgICAj
IEZJWE1FOiBUaGlzIHNob3VsZCBjYWNoZSB0aGF0IHRoZSByZXN1bHQgd2FzIGEgNDA0IGFuZCBz
dG9wIGhpdHRpbmcgdGhlIG5ldHdvcmsuCisgICAgICAgICAgICBzZWxmLl9sYXlvdXRfdGVzdF9y
ZXN1bHRzID0gTGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyhzZWxmLl9mZXRj
aF9yZXN1bHRzX2h0bWwoKSkKICAgICAgICAgcmV0dXJuIHNlbGYuX2xheW91dF90ZXN0X3Jlc3Vs
dHMKIAogICAgIGRlZiBidWlsZGVyKHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90X3VuaXR0ZXN0LnB5CmluZGV4
IDU3YTBjOGYwODRkMzljYWE0YTU3NWNmZmZjODhlNTk5MjcyOTY0MzQuLmFmYzlhMzlhOWU3MTI5
YzY3MmU1MTk2Zjk0NjJiZDhiYmIyZTI0M2EgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdF91bml0dGVzdC5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3RfdW5pdHRlc3QucHkKQEAg
LTQxLDEwICs0MSw4IEBAIGNsYXNzIEJ1aWxkZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgICAgICAgICByZXZpc2lvbj1idWlsZF9udW1iZXIgKyAxMDAwLAogICAgICAgICAgICAg
ICAgIGlzX2dyZWVuPWJ1aWxkX251bWJlciA8IDQKICAgICAgICAgICAgICkKLSAgICAgICAgICAg
IGJ1aWxkLl9sYXlvdXRfdGVzdF9yZXN1bHRzID0gTGF5b3V0VGVzdFJlc3VsdHMoCi0gICAgICAg
ICAgICAgICAgImh0dHA6Ly9idWlsZGJvdC5leGFtcGxlLmNvbS9mb28iLCB7Ci0gICAgICAgICAg
ICAgICAgICAgIExheW91dFRlc3RSZXN1bHRzLmZhaWxfa2V5OiBmYWlsdXJlKGJ1aWxkX251bWJl
ciksCi0gICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIHBhcnNlZF9yZXN1bHRzID0ge0xh
eW91dFRlc3RSZXN1bHRzLmZhaWxfa2V5OiBmYWlsdXJlKGJ1aWxkX251bWJlcil9CisgICAgICAg
ICAgICBidWlsZC5fbGF5b3V0X3Rlc3RfcmVzdWx0cyA9IExheW91dFRlc3RSZXN1bHRzKHBhcnNl
ZF9yZXN1bHRzKQogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkCiAgICAgICAgIHNlbGYuYnVpbGRl
ci5fZmV0Y2hfYnVpbGQgPSBfbW9ja19mZXRjaF9idWlsZAogCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMu
cHkKaW5kZXggNWFiODI5MjcyMWNlMDdhMTRmZTcxMjUwYmNjNjQ2ZTQ3YzEwOWM4ZC4uOTU5ZThj
MWI5MmQ1NWRlZDA4OWE3NDI0ZGVkMDQ4YzEwNTM1OTAzMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0
cy5weQpAQCAtMjgsMTIgKzI4LDE2IEBACiAjCiAjIEEgbW9kdWxlIGZvciBwYXJzaW5nIHJlc3Vs
dHMuaHRtbCBmaWxlcyBnZW5lcmF0ZWQgYnkgb2xkLXJ1bi13ZWJraXQtdGVzdHMKIAoraW1wb3J0
IGNvZGVjcworCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQg
QmVhdXRpZnVsU291cCwgU291cFN0cmFpbmVyCiAKIAogIyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
dW5pZmllZCB3aXRoIGFsbCB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0cyBjb2RlIGluIHRoZSBsYXlv
dXRfdGVzdHMgcGFja2FnZQogIyBUaGlzIGRvZXNuJ3QgYmVsb25nIGluIGNvbW1vbi5uZXQsIGJ1
dCB3ZSBkb24ndCBoYXZlIGEgYmV0dGVyIHBsYWNlIGZvciBpdCB5ZXQuCiBjbGFzcyBMYXlvdXRU
ZXN0UmVzdWx0cyhvYmplY3QpOgorICAgICIiIlRoaXMgY2xhc3Mga25vd3MgaG93IHRvIHBhcnNl
IG9sZC1ydW4td2Via2l0LXRlc3RzIHJlc3VsdHMuaHRtbCBmaWxlcy4iIiIKKwogICAgIHN0ZGVy
cl9rZXkgPSB1J1Rlc3RzIHRoYXQgaGFkIHN0ZGVyciBvdXRwdXQ6JwogICAgIGZhaWxfa2V5ID0g
dSdUZXN0cyB3aGVyZSByZXN1bHRzIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgcmVzdWx0czonCiAg
ICAgdGltZW91dF9rZXkgPSB1J1Rlc3RzIHRoYXQgdGltZWQgb3V0OicKQEAgLTQ4LDYgKzUyLDE4
IEBAIGNsYXNzIExheW91dFRlc3RSZXN1bHRzKG9iamVjdCk6CiAgICAgICAgIG1pc3Npbmdfa2V5
LAogICAgIF0KIAorICAgICMgRklYTUU6IHJlc3VsdHMuaHRtbCBwYXRoIGtub3dsZWRnZSBiZWxv
bmdzIGluIGEgUG9ydCBjbGFzcy4KKyAgICAjIEZvciBub3cgd2UncmUgcHV0dGluZyBpdCBoZXJl
IHNpbmNlIExheW91dFRlc3RSZXN1bHRzIGhhcworICAgICMgbm8gZGlyZWN0IGVxdWl2YWxlbnQg
aW4gdGhlIG5ldy1ydW4td2Via2l0LXRlc3RzIHdvcmxkLgorICAgIEBjbGFzc21ldGhvZAorICAg
IGRlZiBkZWZhdWx0X2ZpbGVuYW1lKGNscyk6CisgICAgICAgIHJldHVybiAicmVzdWx0cy5odG1s
IgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRlZmF1bHRfcmVzdWx0c19wYXRoKGNscyk6
CisgICAgICAgICMgRklYTUU6IFRoaXMgd29uJ3Qgd29yayB1bmRlciBub24tY3lnd2luIHdpbjMy
IChidXQgSSBkb24ndCB0aGluayBvbGQtcnVuLXdlYmtpdC10ZXN0cyBkb2VzIGFueXdheSkuCisg
ICAgICAgIHJldHVybiAiL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzLyVzIiAlIChjbHMuZGVmYXVs
dF9maWxlbmFtZSgpKQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9wYXJzZV9yZXN1bHRz
X2h0bWwoY2xzLCBwYWdlKToKICAgICAgICAgcGFyc2VkX3Jlc3VsdHMgPSB7fQpAQCAtNjIsMjcg
Kzc4LDE0IEBAIGNsYXNzIExheW91dFRlc3RSZXN1bHRzKG9iamVjdCk6CiAKICAgICAgICAgcmV0
dXJuIHBhcnNlZF9yZXN1bHRzCiAKLSAgICAjIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZG4ndCBr
bm93IGhvdyB0byBmZXRjaCBmcm9tIHRoZSBuZXR3b3JrLgotICAgIEBjbGFzc21ldGhvZAotICAg
IGRlZiBfZmV0Y2hfcmVzdWx0c19odG1sKGNscywgYmFzZV91cmwpOgotICAgICAgICByZXN1bHRz
X2h0bWwgPSAiJXMvcmVzdWx0cy5odG1sIiAlIGJhc2VfdXJsCi0gICAgICAgICMgRklYTUU6IFdl
IG5lZWQgdG8gbW92ZSB0aGlzIHNvcnQgb2YgNDA0IGxvZ2ljIGludG8gTmV0d29ya1RyYW5zYWN0
aW9uIG9yIHNpbWlsYXIuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBhZ2UgPSB1cmxsaWIy
LnVybG9wZW4ocmVzdWx0c19odG1sKQotICAgICAgICAgICAgcmV0dXJuIGNscy5fcGFyc2VfcmVz
dWx0c19odG1sKHBhZ2UpCi0gICAgICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBFcnJvciwgZXJyb3I6
Ci0gICAgICAgICAgICBpZiBlcnJvci5jb2RlICE9IDQwNDoKLSAgICAgICAgICAgICAgICByYWlz
ZQotCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHJlc3VsdHNfZnJvbV91cmwoY2xzLCBiYXNl
X3VybCk6Ci0gICAgICAgIHBhcnNlZF9yZXN1bHRzID0gY2xzLl9mZXRjaF9yZXN1bHRzX2h0bWwo
YmFzZV91cmwpCisgICAgZGVmIHJlc3VsdHNfZnJvbV9zdHJpbmcoY2xzLCBzdHJpbmcpOgorICAg
ICAgICBwYXJzZWRfcmVzdWx0cyA9IGNscy5fcGFyc2VfcmVzdWx0c19odG1sKHN0cmluZykKICAg
ICAgICAgaWYgbm90IHBhcnNlZF9yZXN1bHRzOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAg
ICAgICAgcmV0dXJuIGNscyhiYXNlX3VybCwgcGFyc2VkX3Jlc3VsdHMpCisgICAgICAgIHJldHVy
biBjbHMocGFyc2VkX3Jlc3VsdHMpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYmFzZV91cmws
IHBhcnNlZF9yZXN1bHRzKToKLSAgICAgICAgc2VsZi5fYmFzZV91cmwgPSBiYXNlX3VybAorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZWRfcmVzdWx0cyk6CiAgICAgICAgIHNlbGYuX3BhcnNl
ZF9yZXN1bHRzID0gcGFyc2VkX3Jlc3VsdHMKIAogICAgIGRlZiBwYXJzZWRfcmVzdWx0cyhzZWxm
KToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9s
YXlvdXR0ZXN0cmVzdWx0c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0c191bml0dGVzdC5weQppbmRleCAwMzQ4NDhl
MzZkNjYwZTJmZTZkOTZiNjY0MjNlYzQxM2IxYjcxZGM5Li40NGU0ZGJjNWJiYTEyMWY1MDFhMzlj
ZWUzOWE0OGYwOTcxOGQ1YmNmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzX3VuaXR0
ZXN0LnB5CkBAIC02OSwzICs2OSw4IEBAIGNsYXNzIExheW91dFRlc3RSZXN1bHRzVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcGFyc2VfbGF5b3V0X3Rlc3RfcmVzdWx0cyhz
ZWxmKToKICAgICAgICAgcmVzdWx0cyA9IExheW91dFRlc3RSZXN1bHRzLl9wYXJzZV9yZXN1bHRz
X2h0bWwoc2VsZi5fZXhhbXBsZV9yZXN1bHRzX2h0bWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5fZXhwZWN0ZWRfbGF5b3V0X3Rlc3RfcmVzdWx0cywgcmVzdWx0cykKKworICAgIGRl
ZiB0ZXN0X3Jlc3VsdHNfZnJvbV9zdHJpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZygiIiksIE5vbmUpCisgICAg
ICAgIHJlc3VsdHMgPSBMYXlvdXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKHNlbGYu
X2V4YW1wbGVfcmVzdWx0c19odG1sKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1
bHRzLmZhaWxpbmdfdGVzdHMoKSksIDApCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5CmluZGV4IGE1YzJjYTIxNjg3
YTU3ZDAwZWZlMzI1NTI2ZDc5YWNhNjAzNWUzNTUuLjAzM2U5YWZhOTJjNzE3NGEyOTA0OWM1ZjZl
N2U1ZDAwNThjNzM2ODQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5CkBAIC0yNyw2ICsyNyw3IEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0
IFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMg
aW1wb3J0IExheW91dFRlc3RSZXN1bHRzCiAKIAogY2xhc3MgQ29tbWl0UXVldWVUYXNrKG9iamVj
dCk6CkBAIC0xMTksNiArMTIwLDIxIEBAIGNsYXNzIENvbW1pdFF1ZXVlVGFzayhvYmplY3QpOgog
ICAgICAgICAiQWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQgcGF0Y2giLAogICAgICAgICAiVW5h
YmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91dCBwYXRjaCAodHJlZSBpcyByZWQ/KSIpCiAKKyAgICBk
ZWYgX3Jlc3VsdHNfZnJvbV9sb2NhbF9ydW4oc2VsZik6CisgICAgICAgIHJlc3VsdHNfcGF0aCA9
IExheW91dFRlc3RSZXN1bHRzLmRlZmF1bHRfcmVzdWx0c19wYXRoKCkKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgIyBGSVhNRTogV2UgbmVlZCBhIG5pY2Ugb3BlbigpIGFic3RyYWN0aW9uIGZv
ciBiZXR0ZXIgbW9ja2luZyBoZXJlLgorICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihyZXN1
bHRzX3BhdGgsICJyIiwgInV0Zi04IikgYXMgcmVzdWx0c19maWxlOgorICAgICAgICAgICAgICAg
IHJldHVybiBMYXlvdXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKHJlc3VsdHNfZmls
ZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6ICAjIEZpbGUgZG9lcyBub3QgZXhpc3Qgb3Ig
Y2FuJ3QgYmUgcmVhZC4KKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgX2ZhaWxp
bmdfdGVzdHNfZnJvbV9sYXN0X3J1bihzZWxmKToKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYuX3Jl
c3VsdHNfZnJvbV9sb2NhbF9ydW4oKQorICAgICAgICBpZiBub3QgcmVzdWx0czoKKyAgICAgICAg
ICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiByZXN1bHRzLmZhaWxpbmdfdGVzdHMoKQor
CiAgICAgZGVmIF9sYW5kKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2NvbW1hbmQo
WwogICAgICAgICAgICAgImxhbmQtYXR0YWNobWVudCIsCkBAIC0xMzIsNiArMTQ4LDI5IEBAIGNs
YXNzIENvbW1pdFF1ZXVlVGFzayhvYmplY3QpOgogICAgICAgICAiTGFuZGVkIHBhdGNoIiwKICAg
ICAgICAgIlVuYWJsZSB0byBsYW5kIHBhdGNoIikKIAorICAgIGRlZiBfcmVwb3J0X2ZsYWt5X3Rl
c3RzKHNlbGYsIGZsYWt5X3Rlc3RzKToKKyAgICAgICAgc2VsZi5fY29tbWl0X3F1ZXVlLnJlcG9y
dF9mbGFreV90ZXN0cyhzZWxmLl9wYXRjaCwgZmxha3lfdGVzdHMpCisKKyAgICBkZWYgX3Rlc3Rf
cGF0Y2goc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3BhdGNoLmlzX3JvbGxvdXQoKToKKyAgICAg
ICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYuX3Rlc3QoKToKKyAgICAgICAgICAg
IHJldHVybiBUcnVlCisKKyAgICAgICAgZmlyc3RfZmFpbGluZ190ZXN0cyA9IHNlbGYuX2ZhaWxp
bmdfdGVzdHNfZnJvbV9sYXN0X3J1bigpCisgICAgICAgIGlmIHNlbGYuX3Rlc3QoKToKKyAgICAg
ICAgICAgIHNlbGYuX3JlcG9ydF9mbGFreV90ZXN0cyhmaXJzdF9mYWlsaW5nX3Rlc3RzKQorICAg
ICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBzZWNvbmRfZmFpbGluZ190ZXN0cyA9IHNl
bGYuX2ZhaWxpbmdfdGVzdHNfZnJvbV9sYXN0X3J1bigpCisgICAgICAgIGlmIGZpcnN0X2ZhaWxp
bmdfdGVzdHMgIT0gc2Vjb25kX2ZhaWxpbmdfdGVzdHM6CisgICAgICAgICAgICBzZWxmLl9yZXBv
cnRfZmxha3lfdGVzdHMoZmlyc3RfZmFpbGluZ190ZXN0cyArIHNlY29uZF9mYWlsaW5nX3Rlc3Rz
KQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgc2VsZi5fYnVpbGRfYW5k
X3Rlc3Rfd2l0aG91dF9wYXRjaCgpOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5fc2NyaXB0X2Vy
cm9yICAjIFRoZSBlcnJvciBmcm9tIHRoZSBwcmV2aW91cyAuX3Rlc3QoKSBydW4gaXMgcmVhbCwg
cmVwb3J0IGl0LgorICAgICAgICByZXR1cm4gRmFsc2UgICMgVHJlZSBtdXN0IGJlIHJlZCwganVz
dCByZXRyeSBsYXRlci4KKwogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxm
Ll92YWxpZGF0ZSgpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0xNDEsMTIgKzE4MCw4
IEBAIGNsYXNzIENvbW1pdFF1ZXVlVGFzayhvYmplY3QpOgogICAgICAgICAgICAgaWYgbm90IHNl
bGYuX2J1aWxkX3dpdGhvdXRfcGF0Y2goKToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
ICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3NjcmlwdF9lcnJvcgotICAgICAgICBpZiBub3Qgc2Vs
Zi5fcGF0Y2guaXNfcm9sbG91dCgpOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Rlc3QoKToK
LSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdGVzdCgpOgotICAgICAgICAgICAgICAgICAg
ICBpZiBub3Qgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpOgotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIHNl
bGYuX3NjcmlwdF9lcnJvcgorICAgICAgICBpZiBub3Qgc2VsZi5fdGVzdF9wYXRjaCgpOgorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICMgTWFrZSBzdXJlIHRoZSBwYXRjaCBpcyBz
dGlsbCB2YWxpZCBiZWZvcmUgbGFuZGluZyAoZS5nLiwgbWFrZSBzdXJlCiAgICAgICAgICMgbm8g
b25lIGhhcyBzZXQgY29tbWl0LXF1ZXVlLSBzaW5jZSB3ZSBzdGFydGVkIHdvcmtpbmcgb24gdGhl
IHBhdGNoLikKICAgICAgICAgaWYgbm90IHNlbGYuX3ZhbGlkYXRlKCk6CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0
dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVl
dWV0YXNrX3VuaXR0ZXN0LnB5CmluZGV4IDM4YzQ3NDc2N2NmYmE4MmFmZTY4NDhlMTkzZjQ2ZWZj
ODkzMDZiNWEuLmQ0NmMyMTEwMDcwMDdjMTc5YmQ0Y2UyOTZkNDg0NmVkN2VmZTcwOTkgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0
YXNrX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CkBAIC01NiwxMiArNTYsMTYgQEAgY2xhc3Mg
TW9ja0NvbW1pdFF1ZXVlOgogICAgICAgICAgICAgZmFpbHVyZV9tZXNzYWdlLCBzY3JpcHRfZXJy
b3IsIHBhdGNoLmlkKCkpKQogICAgICAgICByZXR1cm4gMzk0NwogCisgICAgZGVmIHJlcG9ydF9m
bGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfdGVzdHMpOgorICAgICAgICBsb2coInJlcG9y
dF9mbGFreV90ZXN0czogcGF0Y2g9JyVzJyBmbGFreV90ZXN0cz0nJXMnIiAlIChwYXRjaC5pZCgp
LCBmbGFreV90ZXN0cykpCisKIAogY2xhc3MgQ29tbWl0UXVldWVUYXNrVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgZGVmIF9ydW5fdGhyb3VnaF90YXNrKHNlbGYsIGNvbW1pdF9xdWV1ZSwg
ZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9leGNlcHRpb249Tm9uZSk6CiAgICAgICAgIHRvb2wg
PSBNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpCiAgICAgICAgIHBhdGNoID0gdG9vbC5idWdz
LmZldGNoX2F0dGFjaG1lbnQoMTk3KQogICAgICAgICB0YXNrID0gQ29tbWl0UXVldWVUYXNrKHRv
b2wsIGNvbW1pdF9xdWV1ZSwgcGF0Y2gpCisgICAgICAgIHRhc2suX3Jlc3VsdHNfZnJvbV9sb2Nh
bF9ydW4gPSBsYW1iZGE6IE5vbmUgICMgUHJldmVudCB0aGUgdW5pdCB0ZXN0cyBmcm9tIGhpdHRp
bmcgdGhlIGRpc2sKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYs
IHRhc2sucnVuLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9leGNl
cHRpb249ZXhwZWN0ZWRfZXhjZXB0aW9uKQogCiAgICAgZGVmIHRlc3Rfc3VjY2Vzc19jYXNlKHNl
bGYpOgpAQCAtMTI5LDYgKzEzMyw3IEBAIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRl
c3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1xCiBjb21tYW5k
X2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3Jp
cHRfZXJyb3I9J01PQ0sgdGVzdHMgZmFpbHVyZScgcGF0Y2g9JzE5NycKIHJ1bl93ZWJraXRfcGF0
Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRl
c3QnLCAnLS1xdWlldCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX3Bhc3NlZDogc3Vj
Y2Vzc19tZXNzYWdlPSdQYXNzZWQgdGVzdHMnIHBhdGNoPScxOTcnCityZXBvcnRfZmxha3lfdGVz
dHM6IHBhdGNoPScxOTcnIGZsYWt5X3Rlc3RzPSdOb25lJwogcnVuX3dlYmtpdF9wYXRjaDogWyds
YW5kLWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1jbGVhbicsICctLWlnbm9yZS1idWlsZGVycycsICct
LXF1aWV0JywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0LXF1
ZXVlJywgMTk3XQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nTGFuZGVkIHBhdGNo
JyBwYXRjaD0nMTk3JwogIiIiCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQppbmRleCA0ZmIxYTdjMzM1OWIzZmJlNmU5Mzk0MWM4
ZjI0NTRkNjcxYzc2ZGE3Li42Yzk3ZTI1M2MyOWJhN2Q5MjdjMGJlZmNiZjYzMzk4NDFkMjE4NDNj
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9xdWV1ZXMucHkKQEAgLTI1OCw2ICsyNTgsMTEgQEAgY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJh
Y3RQYXRjaFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIpOgogICAgICAgICByZXN1bHRz
X2xpbmsgPSBzZWxmLl90b29sLnN0YXR1c19zZXJ2ZXIucmVzdWx0c191cmxfZm9yX3N0YXR1cyhz
dGF0dXNfaWQpCiAgICAgICAgIHJldHVybiAiJXNcbkZ1bGwgb3V0cHV0OiAlcyIgJSAoc2NyaXB0
X2Vycm9yLm1lc3NhZ2Vfd2l0aF9vdXRwdXQoKSwgcmVzdWx0c19saW5rKQogCisgICAgIyBDb21t
aXRRdWV1ZVRhc2sgbWV0aG9kcworICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0
Y2gsIGZsYWt5X3Rlc3RzKToKKyAgICAgICAgbWVzc2FnZSA9ICJUaGUgJXMgZW5jb3VudGVyZWQg
dGhlIGZvbGxvd2luZyBmbGFreSB0ZXN0cyB3aGlsZSBwcm9jZXNzaW5nIGF0dGFjaG1lbnQgJXM6
XG5cbiVzXG5cblBsZWFzZSBmaWxlIGJ1Z3MgYWdhaW5zdCB0aGUgdGVzdHMuICBUaGUgY29tbWl0
LXF1ZXVlIGlzIGNvbnRpbnVpbmcgdG8gcHJvY2VzcyB5b3VyIHBhdGNoLiIgJSAoc2VsZi5uYW1l
LCBwYXRjaC5pZCgpLCBmbGFreV90ZXN0cykKKyAgICAgICAgc2VsZi5fdG9vbC5idWdzLnBvc3Rf
Y29tbWVudF90b19idWcocGF0Y2guYnVnX2lkKCksIG1lc3NhZ2UsIGNjPXNlbGYud2F0Y2hlcnMp
CisKICAgICAjIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlciBtZXRob2RzCiAKICAgICBkZWYgaGFu
ZGxlX3NjcmlwdF9lcnJvcihjbHMsIHRvb2wsIHN0YXRlLCBzY3JpcHRfZXJyb3IpOgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191
bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9x
dWV1ZXNfdW5pdHRlc3QucHkKaW5kZXggOWU5OWEyMGQxZmU0YzkxNzk2MTA1MDY0ZTAzMjUwOTNk
YWQ2MWMxMC4uYmE5OGQ1NGNkOGQ1M2E1M2IwOWU4Zjk3NTE2NWJjNDlkOWJlYjU3OSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191
bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzX3VuaXR0ZXN0LnB5CkBAIC0yOTksNiArMjk5LDIxIEBAIE1PQ0s6IHVwZGF0ZV9z
dGF0dXM6IGNvbW1pdC1xdWV1ZSBQYXNzCiAiIiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFz
c2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLnByb2Nlc3Nfd29ya19pdGVtLCBbTW9ja1BhdGNoKCld
LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQogCisgICAgZGVmIHRlc3RfcmVwb3J0
X2ZsYWt5X3Rlc3RzKHNlbGYpOgorICAgICAgICBxdWV1ZSA9IENvbW1pdFF1ZXVlKCkKKyAgICAg
ICAgcXVldWUuYmluZF90b190b29sKE1vY2tUb29sKCkpCisgICAgICAgIGV4cGVjdGVkX3N0ZGVy
ciA9ICIiIk1PQ0sgYnVnIGNvbW1lbnQ6IGJ1Z19pZD0xNDIsIGNjPVtdCistLS0gQmVnaW4gY29t
bWVudCAtLS0KK1RoZSBjb21taXQtcXVldWUgZW5jb3VudGVyZWQgdGhlIGZvbGxvd2luZyBmbGFr
eSB0ZXN0cyB3aGlsZSBwcm9jZXNzaW5nIGF0dGFjaG1lbnQgMTk3OgorCitbJ2Zvby9iYXIuaHRt
bCcsICdiYXIvYmF6Lmh0bWwnXQorCitQbGVhc2UgZmlsZSBidWdzIGFnYWluc3QgdGhlIHRlc3Rz
LiAgVGhlIGNvbW1pdC1xdWV1ZSBpcyBjb250aW51aW5nIHRvIHByb2Nlc3MgeW91ciBwYXRjaC4K
Ky0tLSBFbmQgY29tbWVudCAtLS0KKworIiIiCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3Nl
cnRfb3V0cHV0cyhzZWxmLCBxdWV1ZS5yZXBvcnRfZmxha3lfdGVzdHMsIFtNb2NrUGF0Y2goKSwg
WyJmb28vYmFyLmh0bWwiLCAiYmFyL2Jhei5odG1sIl1dLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0
ZWRfc3RkZXJyKQorCiAKIGNsYXNzIFJpZXR2ZWxkVXBsb2FkUXVldWVUZXN0KFF1ZXVlc1Rlc3Qp
OgogICAgIGRlZiB0ZXN0X3JpZXR2ZWxkX3VwbG9hZF9xdWV1ZShzZWxmKToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70745</attachid>
            <date>2010-10-14 09:32:53 -0700</date>
            <delta_ts>2010-10-14 10:08:37 -0700</delta_ts>
            <desc>combined patch</desc>
            <filename>bug-47647-20101014093252.patch</filename>
            <type>text/plain</type>
            <size>30843</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2ZTRlMDk0N2Q2OThiY2JhODhkMTcxNWJjZGE0NThlZGY0NTY5MTI5Li4yM2JkOGE5
NTcwNDMzOWEzYTVjMjBhYjczYzU3MDljYmY4MzM2NTg0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzIgQEAK
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBjb21taXQt
cXVldWUgc2hvdWxkIG5vdCBmYWlsIHBhdGNoZXMgZHVlIHRvIGZsYWt5IHRlc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzY0NworCisgICAgICAg
IFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdCB0aGUgKnNhbWUqIGZsYWt5IHRlc3QgaGFzIHRv
IGZhaWwKKyAgICAgICAgdHdpY2UgaW4gYSByb3cgdG8gaGF2ZSBhIGZhbHNlIG5lZ2F0aXZlIGZy
b20gYSBmbGFreSB0ZXN0LgorCisgICAgICAgIElmIGRpZmZlcmVudCBmbGFreSB0ZXN0cyBmYWls
IChvciBpZiBhIHRlc3QgZmFpbHMgYW5kIHRoZW4gcGFzc2VzCisgICAgICAgIGluIGEgc2Vjb25k
IHJ1bikgdGhlbiB3ZSB3aWxsIHdhcm4gaW4gdGhlIGJ1ZyB0aGF0IHdlIGVuY291bnRlcmVkCisg
ICAgICAgIGEgZmxha3kgdGVzdC4KKworICAgICAgICBUaGlzIHBhdGNoIGdyZXcgdG8gaW5jbHVk
ZSBtb3ZpbmcgcG9ydCBvZmYgb2Ygc3RlcHMgb250byB0b29sCisgICAgICAgICh3aGljaCBBZGFt
IHdyb3RlIGFuZCB0aGVuIEkgaW50ZWdyYXRlZCksIGFzIHdlbGwgYXMgcmVtb3ZpbmcgdGhlCisg
ICAgICAgIHVzZSBvZiB0b29sIGZyb20gQ29tbWl0UXVldWVUYXNrLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90X3VuaXR0ZXN0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5pdHRl
c3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRh
c2sucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRh
c2tfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3F1ZXVlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVl
dWVzX3VuaXR0ZXN0LnB5OgorCisyMDEwLTEwLTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBC
cmVhayBMYXlvdXRUZXN0UmVzdWx0cyBvdXQgaW50byBpdHMgb3duIGZpbGUKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjM3CiAKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weQppbmRleCBl
YmQ4OGIxMTQyM2Y2MDM3MjVhMDQ3OTFmMDQxMTQwM2M2ZmNlNTBjLi5lM2RhMDFkODcxNDEwNGNj
OTQ3MzQwYjIwNTUxN2VmY2ZjYTk0OWE4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvcG9ydHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY29uZmlnL3BvcnRzLnB5CkBAIC0xMDIsNiArMTAyLDEwIEBAIGNs
YXNzIFdlYktpdFBvcnQob2JqZWN0KToKICAgICBkZWYgcnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1h
bmQoY2xzKToKICAgICAgICAgcmV0dXJuIFtjbHMuc2NyaXB0X3BhdGgoInRlc3Qtd2Via2l0cGVy
bCIpXQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGxheW91dF90ZXN0c19yZXN1bHRzX3Bh
dGgoY2xzKToKKyAgICAgICAgcmV0dXJuICIvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmVzdWx0
cy5odG1sIgorCiAKIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weQppbmRleCA4Y2I5
MDJjYWRlNzljMGQxOTMwMjVlNTRkYTM5NDg5NDA2ZjYxNDg2Li5kM2QwOGVlNzA3ZGNhN2I0ZTcz
ZTQ1NDViM2M2OTU1Y2VhNzc1MjAwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90LnB5CkBAIC0yMTUsOSArMjE1LDE5IEBAIGNsYXNz
IEJ1aWxkKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gInIlcyAoJXMpIiAl
IChzZWxmLnJldmlzaW9uKCksIHNlbGYuX251bWJlcikKICAgICAgICAgcmV0dXJuICIlcy8lcyIg
JSAoc2VsZi5fYnVpbGRlci5yZXN1bHRzX3VybCgpLCB1cmxsaWIucXVvdGUocmVzdWx0c19kaXJl
Y3RvcnkpKQogCisgICAgZGVmIF9mZXRjaF9yZXN1bHRzX2h0bWwoc2VsZik6CisgICAgICAgIHJl
c3VsdHNfaHRtbCA9ICIlcy9yZXN1bHRzLmh0bWwiICUgKHNlbGYucmVzdWx0c191cmwoKSkKKyAg
ICAgICAgIyBGSVhNRTogV2UgbmVlZCB0byBtb3ZlIHRoaXMgc29ydCBvZiA0MDQgbG9naWMgaW50
byBOZXR3b3JrVHJhbnNhY3Rpb24gb3Igc2ltaWxhci4KKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgcmV0dXJuIHVybGxpYjIudXJsb3BlbihyZXN1bHRzX2h0bWwpCisgICAgICAgIGV4Y2VwdCB1
cmxsaWIyLkhUVFBFcnJvciwgZXJyb3I6CisgICAgICAgICAgICBpZiBlcnJvci5jb2RlICE9IDQw
NDoKKyAgICAgICAgICAgICAgICByYWlzZQorCiAgICAgZGVmIGxheW91dF90ZXN0X3Jlc3VsdHMo
c2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzOgotICAgICAg
ICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RfcmVzdWx0cyA9IExheW91dFRlc3RSZXN1bHRzLnJlc3Vs
dHNfZnJvbV91cmwoc2VsZi5yZXN1bHRzX3VybCgpKQorICAgICAgICAgICAgIyBGSVhNRTogVGhp
cyBzaG91bGQgY2FjaGUgdGhhdCB0aGUgcmVzdWx0IHdhcyBhIDQwNCBhbmQgc3RvcCBoaXR0aW5n
IHRoZSBuZXR3b3JrLgorICAgICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RfcmVzdWx0cyA9IExh
eW91dFRlc3RSZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcoc2VsZi5fZmV0Y2hfcmVzdWx0c19o
dG1sKCkpCiAgICAgICAgIHJldHVybiBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzCiAKICAgICBk
ZWYgYnVpbGRlcihzZWxmKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9idWlsZGJvdF91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdF91bml0dGVzdC5weQppbmRleCA1N2EwYzhmMDg0
ZDM5Y2FhNGE1NzVjZmZmYzg4ZTU5OTI3Mjk2NDM0Li5hZmM5YTM5YTllNzEyOWM2NzJlNTE5NmY5
NDYyYmQ4YmJiMmUyNDNhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVpbGRib3RfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90X3VuaXR0ZXN0LnB5CkBAIC00MSwxMCArNDEs
OCBAQCBjbGFzcyBCdWlsZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAg
ICAgcmV2aXNpb249YnVpbGRfbnVtYmVyICsgMTAwMCwKICAgICAgICAgICAgICAgICBpc19ncmVl
bj1idWlsZF9udW1iZXIgPCA0CiAgICAgICAgICAgICApCi0gICAgICAgICAgICBidWlsZC5fbGF5
b3V0X3Rlc3RfcmVzdWx0cyA9IExheW91dFRlc3RSZXN1bHRzKAotICAgICAgICAgICAgICAgICJo
dHRwOi8vYnVpbGRib3QuZXhhbXBsZS5jb20vZm9vIiwgewotICAgICAgICAgICAgICAgICAgICBM
YXlvdXRUZXN0UmVzdWx0cy5mYWlsX2tleTogZmFpbHVyZShidWlsZF9udW1iZXIpLAotICAgICAg
ICAgICAgICAgIH0pCisgICAgICAgICAgICBwYXJzZWRfcmVzdWx0cyA9IHtMYXlvdXRUZXN0UmVz
dWx0cy5mYWlsX2tleTogZmFpbHVyZShidWlsZF9udW1iZXIpfQorICAgICAgICAgICAgYnVpbGQu
X2xheW91dF90ZXN0X3Jlc3VsdHMgPSBMYXlvdXRUZXN0UmVzdWx0cyhwYXJzZWRfcmVzdWx0cykK
ICAgICAgICAgICAgIHJldHVybiBidWlsZAogICAgICAgICBzZWxmLmJ1aWxkZXIuX2ZldGNoX2J1
aWxkID0gX21vY2tfZmV0Y2hfYnVpbGQKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CmluZGV4IDVh
YjgyOTI3MjFjZTA3YTE0ZmU3MTI1MGJjYzY0NmU0N2MxMDljOGQuLmM2MTBiNjI4MmZjYThiMDEw
NDFkZDY3MTQ2ZTI5ZGE1YWYwYTc3NjIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKQEAgLTI4
LDEyICsyOCwxNiBAQAogIwogIyBBIG1vZHVsZSBmb3IgcGFyc2luZyByZXN1bHRzLmh0bWwgZmls
ZXMgZ2VuZXJhdGVkIGJ5IG9sZC1ydW4td2Via2l0LXRlc3RzCiAKK2ltcG9ydCBjb2RlY3MKKwog
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNv
dXAsIFNvdXBTdHJhaW5lcgogCiAKICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVuaWZpZWQgd2l0
aCBhbGwgdGhlIGxheW91dCB0ZXN0IHJlc3VsdHMgY29kZSBpbiB0aGUgbGF5b3V0X3Rlc3RzIHBh
Y2thZ2UKICMgVGhpcyBkb2Vzbid0IGJlbG9uZyBpbiBjb21tb24ubmV0LCBidXQgd2UgZG9uJ3Qg
aGF2ZSBhIGJldHRlciBwbGFjZSBmb3IgaXQgeWV0LgogY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHMo
b2JqZWN0KToKKyAgICAiIiJUaGlzIGNsYXNzIGtub3dzIGhvdyB0byBwYXJzZSBvbGQtcnVuLXdl
YmtpdC10ZXN0cyByZXN1bHRzLmh0bWwgZmlsZXMuIiIiCisKICAgICBzdGRlcnJfa2V5ID0gdSdU
ZXN0cyB0aGF0IGhhZCBzdGRlcnIgb3V0cHV0OicKICAgICBmYWlsX2tleSA9IHUnVGVzdHMgd2hl
cmUgcmVzdWx0cyBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIHJlc3VsdHM6JwogICAgIHRpbWVvdXRf
a2V5ID0gdSdUZXN0cyB0aGF0IHRpbWVkIG91dDonCkBAIC02MiwyNyArNjYsMTQgQEAgY2xhc3Mg
TGF5b3V0VGVzdFJlc3VsdHMob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gcGFyc2VkX3Jlc3Vs
dHMKIAotICAgICMgRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkbid0IGtub3cgaG93IHRvIGZldGNo
IGZyb20gdGhlIG5ldHdvcmsuCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9mZXRjaF9yZXN1
bHRzX2h0bWwoY2xzLCBiYXNlX3VybCk6Ci0gICAgICAgIHJlc3VsdHNfaHRtbCA9ICIlcy9yZXN1
bHRzLmh0bWwiICUgYmFzZV91cmwKLSAgICAgICAgIyBGSVhNRTogV2UgbmVlZCB0byBtb3ZlIHRo
aXMgc29ydCBvZiA0MDQgbG9naWMgaW50byBOZXR3b3JrVHJhbnNhY3Rpb24gb3Igc2ltaWxhci4K
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGFnZSA9IHVybGxpYjIudXJsb3BlbihyZXN1bHRz
X2h0bWwpCi0gICAgICAgICAgICByZXR1cm4gY2xzLl9wYXJzZV9yZXN1bHRzX2h0bWwocGFnZSkK
LSAgICAgICAgZXhjZXB0IHVybGxpYjIuSFRUUEVycm9yLCBlcnJvcjoKLSAgICAgICAgICAgIGlm
IGVycm9yLmNvZGUgIT0gNDA0OgotICAgICAgICAgICAgICAgIHJhaXNlCi0KICAgICBAY2xhc3Nt
ZXRob2QKLSAgICBkZWYgcmVzdWx0c19mcm9tX3VybChjbHMsIGJhc2VfdXJsKToKLSAgICAgICAg
cGFyc2VkX3Jlc3VsdHMgPSBjbHMuX2ZldGNoX3Jlc3VsdHNfaHRtbChiYXNlX3VybCkKKyAgICBk
ZWYgcmVzdWx0c19mcm9tX3N0cmluZyhjbHMsIHN0cmluZyk6CisgICAgICAgIHBhcnNlZF9yZXN1
bHRzID0gY2xzLl9wYXJzZV9yZXN1bHRzX2h0bWwoc3RyaW5nKQogICAgICAgICBpZiBub3QgcGFy
c2VkX3Jlc3VsdHM6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gY2xz
KGJhc2VfdXJsLCBwYXJzZWRfcmVzdWx0cykKKyAgICAgICAgcmV0dXJuIGNscyhwYXJzZWRfcmVz
dWx0cykKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiYXNlX3VybCwgcGFyc2VkX3Jlc3VsdHMp
OgotICAgICAgICBzZWxmLl9iYXNlX3VybCA9IGJhc2VfdXJsCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBhcnNlZF9yZXN1bHRzKToKICAgICAgICAgc2VsZi5fcGFyc2VkX3Jlc3VsdHMgPSBwYXJz
ZWRfcmVzdWx0cwogCiAgICAgZGVmIHBhcnNlZF9yZXN1bHRzKHNlbGYpOgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRz
X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xh
eW91dHRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5CmluZGV4IDAzNDg0OGUzNmQ2NjBlMmZlNmQ5NmI2
NjQyM2VjNDEzYjFiNzFkYzkuLjQ0ZTRkYmM1YmJhMTIxZjUwMWEzOWNlZTM5YTQ4ZjA5NzE4ZDVi
Y2YgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9s
YXlvdXR0ZXN0cmVzdWx0c191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5pdHRlc3QucHkKQEAgLTY5LDMg
KzY5LDggQEAgY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICBkZWYgdGVzdF9wYXJzZV9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYpOgogICAgICAgICBy
ZXN1bHRzID0gTGF5b3V0VGVzdFJlc3VsdHMuX3BhcnNlX3Jlc3VsdHNfaHRtbChzZWxmLl9leGFt
cGxlX3Jlc3VsdHNfaHRtbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9leHBlY3Rl
ZF9sYXlvdXRfdGVzdF9yZXN1bHRzLCByZXN1bHRzKQorCisgICAgZGVmIHRlc3RfcmVzdWx0c19m
cm9tX3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChMYXlvdXRUZXN0UmVz
dWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKCIiKSwgTm9uZSkKKyAgICAgICAgcmVzdWx0cyA9IExh
eW91dFRlc3RSZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcoc2VsZi5fZXhhbXBsZV9yZXN1bHRz
X2h0bWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMuZmFpbGluZ190ZXN0
cygpKSwgMCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvY29tbWl0cXVldWV0YXNrLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9jb21taXRxdWV1ZXRhc2sucHkKaW5kZXggYTVjMmNhMjE2ODdhNTdkMDBlZmUzMjU1MjZk
NzlhY2E2MDM1ZTM1NS4uMDJlMjAzYzUyNmE5M2Y2ZGRiN2IyOTllMGYyOTkzMDE3MDc4YjdjYyAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRx
dWV1ZXRhc2sucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9j
b21taXRxdWV1ZXRhc2sucHkKQEAgLTI3LDE5ICsyNywzOSBAQAogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgor
ZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bHRzIGltcG9ydCBMYXlvdXRU
ZXN0UmVzdWx0cworCisKK2NsYXNzIENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlKG9iamVjdCk6Cisg
ICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgorICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKKworICAgIGRlZiBjb21t
YW5kX3Bhc3NlZChzZWxmLCBtZXNzYWdlLCBwYXRjaCk6CisgICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQorCisgICAgZGVmIGNvbW1h
bmRfZmFpbGVkKHNlbGYsIG1lc3NhZ2UsIHNjcmlwdF9lcnJvciwgcGF0Y2gpOgorICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKKwor
ICAgIGRlZiByZWZldGNoX3BhdGNoKHNlbGYsIHBhdGNoKToKKyAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCisKKyAgICBkZWYgbGF5
b3V0X3Rlc3RfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCisKKyAgICBkZWYgcmVwb3J0X2ZsYWt5X3Rl
c3RzKHNlbGYsIHBhdGNoLCBmbGFreV90ZXN0cyk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQogCiAKIGNsYXNzIENvbW1pdFF1
ZXVlVGFzayhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b29sLCBjb21taXRfcXVl
dWUsIHBhdGNoKToKLSAgICAgICAgc2VsZi5fdG9vbCA9IHRvb2wKLSAgICAgICAgc2VsZi5fY29t
bWl0X3F1ZXVlID0gY29tbWl0X3F1ZXVlCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlbGVnYXRl
LCBwYXRjaCk6CisgICAgICAgIHNlbGYuX2RlbGVnYXRlID0gZGVsZWdhdGUKICAgICAgICAgc2Vs
Zi5fcGF0Y2ggPSBwYXRjaAogICAgICAgICBzZWxmLl9zY3JpcHRfZXJyb3IgPSBOb25lCiAKICAg
ICBkZWYgX3ZhbGlkYXRlKHNlbGYpOgogICAgICAgICAjIEJ1Z3MgbWlnaHQgZ2V0IGNsb3NlZCwg
b3IgcGF0Y2hlcyBtaWdodCBiZSBvYnNvbGV0ZWQgb3Igci0nZCB3aGlsZSB0aGUKICAgICAgICAg
IyBjb21taXQtcXVldWUgaXMgcHJvY2Vzc2luZy4KLSAgICAgICAgc2VsZi5fcGF0Y2ggPSBzZWxm
Ll90b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudChzZWxmLl9wYXRjaC5pZCgpKQorICAgICAgICBz
ZWxmLl9wYXRjaCA9IHNlbGYuX2RlbGVnYXRlLnJlZmV0Y2hfcGF0Y2goc2VsZi5fcGF0Y2gpCiAg
ICAgICAgIGlmIHNlbGYuX3BhdGNoLmlzX29ic29sZXRlKCk6CiAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKICAgICAgICAgaWYgc2VsZi5fcGF0Y2guYnVnKCkuaXNfY2xvc2VkKCk6CkBAIC01Miwx
MiArNzIsMTIgQEAgY2xhc3MgQ29tbWl0UXVldWVUYXNrKG9iamVjdCk6CiAKICAgICBkZWYgX3J1
bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQsIHN1Y2Nlc3NfbWVzc2FnZSwgZmFpbHVyZV9tZXNzYWdl
KToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fY29tbWl0X3F1ZXVlLnJ1bl93ZWJr
aXRfcGF0Y2goY29tbWFuZCkKLSAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9xdWV1ZS5jb21tYW5k
X3Bhc3NlZChzdWNjZXNzX21lc3NhZ2UsIHBhdGNoPXNlbGYuX3BhdGNoKQorICAgICAgICAgICAg
c2VsZi5fZGVsZWdhdGUucnVuX2NvbW1hbmQoY29tbWFuZCkKKyAgICAgICAgICAgIHNlbGYuX2Rl
bGVnYXRlLmNvbW1hbmRfcGFzc2VkKHN1Y2Nlc3NfbWVzc2FnZSwgcGF0Y2g9c2VsZi5fcGF0Y2gp
CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6
CiAgICAgICAgICAgICBzZWxmLl9zY3JpcHRfZXJyb3IgPSBlCi0gICAgICAgICAgICBzZWxmLmZh
aWx1cmVfc3RhdHVzX2lkID0gc2VsZi5fY29tbWl0X3F1ZXVlLmNvbW1hbmRfZmFpbGVkKGZhaWx1
cmVfbWVzc2FnZSwgc2NyaXB0X2Vycm9yPXNlbGYuX3NjcmlwdF9lcnJvciwgcGF0Y2g9c2VsZi5f
cGF0Y2gpCisgICAgICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gc2VsZi5fZGVsZWdh
dGUuY29tbWFuZF9mYWlsZWQoZmFpbHVyZV9tZXNzYWdlLCBzY3JpcHRfZXJyb3I9c2VsZi5fc2Ny
aXB0X2Vycm9yLCBwYXRjaD1zZWxmLl9wYXRjaCkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQog
CiAgICAgZGVmIF9hcHBseShzZWxmKToKQEAgLTExOSw2ICsxMzksMTIgQEAgY2xhc3MgQ29tbWl0
UXVldWVUYXNrKG9iamVjdCk6CiAgICAgICAgICJBYmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91dCBw
YXRjaCIsCiAgICAgICAgICJVbmFibGUgdG8gcGFzcyB0ZXN0cyB3aXRob3V0IHBhdGNoICh0cmVl
IGlzIHJlZD8pIikKIAorICAgIGRlZiBfZmFpbGluZ190ZXN0c19mcm9tX2xhc3RfcnVuKHNlbGYp
OgorICAgICAgICByZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUubGF5b3V0X3Rlc3RfcmVzdWx0cygp
CisgICAgICAgIGlmIG5vdCByZXN1bHRzOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdHMuZmFpbGluZ190ZXN0cygpCisKICAgICBkZWYgX2xhbmQoc2VsZik6
CiAgICAgICAgIHJldHVybiBzZWxmLl9ydW5fY29tbWFuZChbCiAgICAgICAgICAgICAibGFuZC1h
dHRhY2htZW50IiwKQEAgLTEzMiw2ICsxNTgsMjkgQEAgY2xhc3MgQ29tbWl0UXVldWVUYXNrKG9i
amVjdCk6CiAgICAgICAgICJMYW5kZWQgcGF0Y2giLAogICAgICAgICAiVW5hYmxlIHRvIGxhbmQg
cGF0Y2giKQogCisgICAgZGVmIF9yZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgZmxha3lfdGVzdHMp
OgorICAgICAgICBzZWxmLl9kZWxlZ2F0ZS5yZXBvcnRfZmxha3lfdGVzdHMoc2VsZi5fcGF0Y2gs
IGZsYWt5X3Rlc3RzKQorCisgICAgZGVmIF90ZXN0X3BhdGNoKHNlbGYpOgorICAgICAgICBpZiBz
ZWxmLl9wYXRjaC5pc19yb2xsb3V0KCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAg
ICBpZiBzZWxmLl90ZXN0KCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGZp
cnN0X2ZhaWxpbmdfdGVzdHMgPSBzZWxmLl9mYWlsaW5nX3Rlc3RzX2Zyb21fbGFzdF9ydW4oKQor
ICAgICAgICBpZiBzZWxmLl90ZXN0KCk6CisgICAgICAgICAgICBzZWxmLl9yZXBvcnRfZmxha3lf
dGVzdHMoZmlyc3RfZmFpbGluZ190ZXN0cykKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAg
ICAgICAgc2Vjb25kX2ZhaWxpbmdfdGVzdHMgPSBzZWxmLl9mYWlsaW5nX3Rlc3RzX2Zyb21fbGFz
dF9ydW4oKQorICAgICAgICBpZiBmaXJzdF9mYWlsaW5nX3Rlc3RzICE9IHNlY29uZF9mYWlsaW5n
X3Rlc3RzOgorICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2ZsYWt5X3Rlc3RzKGZpcnN0X2ZhaWxp
bmdfdGVzdHMgKyBzZWNvbmRfZmFpbGluZ190ZXN0cykKKyAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgICAgIGlmIHNlbGYuX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2goKToKKyAg
ICAgICAgICAgIHJhaXNlIHNlbGYuX3NjcmlwdF9lcnJvciAgIyBUaGUgZXJyb3IgZnJvbSB0aGUg
cHJldmlvdXMgLl90ZXN0KCkgcnVuIGlzIHJlYWwsIHJlcG9ydCBpdC4KKyAgICAgICAgcmV0dXJu
IEZhbHNlICAjIFRyZWUgbXVzdCBiZSByZWQsIGp1c3QgcmV0cnkgbGF0ZXIuCisKICAgICBkZWYg
cnVuKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5fdmFsaWRhdGUoKToKICAgICAgICAgICAg
IHJldHVybiBGYWxzZQpAQCAtMTQxLDEyICsxOTAsOCBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2so
b2JqZWN0KToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9idWlsZF93aXRob3V0X3BhdGNoKCk6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICByYWlzZSBzZWxmLl9z
Y3JpcHRfZXJyb3IKLSAgICAgICAgaWYgbm90IHNlbGYuX3BhdGNoLmlzX3JvbGxvdXQoKToKLSAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLl90ZXN0KCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHNl
bGYuX3Rlc3QoKToKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2J1aWxkX2FuZF90
ZXN0X3dpdGhvdXRfcGF0Y2goKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQotICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLl9zY3JpcHRfZXJyb3IKKyAgICAgICAg
aWYgbm90IHNlbGYuX3Rlc3RfcGF0Y2goKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAg
ICAgICAjIE1ha2Ugc3VyZSB0aGUgcGF0Y2ggaXMgc3RpbGwgdmFsaWQgYmVmb3JlIGxhbmRpbmcg
KGUuZy4sIG1ha2Ugc3VyZQogICAgICAgICAjIG5vIG9uZSBoYXMgc2V0IGNvbW1pdC1xdWV1ZS0g
c2luY2Ugd2Ugc3RhcnRlZCB3b3JraW5nIG9uIHRoZSBwYXRjaC4pCiAgICAgICAgIGlmIG5vdCBz
ZWxmLl92YWxpZGF0ZSgpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weQppbmRleCAz
OGM0NzQ3NjdjZmJhODJhZmU2ODQ4ZTE5M2Y0NmVmYzg5MzA2YjVhLi5mY2MxZTkxODNmZDRkNzBj
YTg4ZWZmNzVkYjUzMTNkYzBiMWZjYzgzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVz
dC5weQpAQCAtMzYsMTEgKzM2LDExIEBAIGZyb20gd2Via2l0cHkudG9vbC5ib3QuY29tbWl0cXVl
dWV0YXNrIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tU
b29sCiAKIAotY2xhc3MgTW9ja0NvbW1pdFF1ZXVlOgorY2xhc3MgTW9ja0NvbW1pdFF1ZXVlKENv
bW1pdFF1ZXVlVGFza0RlbGVnYXRlKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JfcGxh
bik6CiAgICAgICAgIHNlbGYuX2Vycm9yX3BsYW4gPSBlcnJvcl9wbGFuCiAKLSAgICBkZWYgcnVu
X3dlYmtpdF9wYXRjaChzZWxmLCBjb21tYW5kKToKKyAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwg
Y29tbWFuZCk6CiAgICAgICAgIGxvZygicnVuX3dlYmtpdF9wYXRjaDogJXMiICUgY29tbWFuZCkK
ICAgICAgICAgaWYgc2VsZi5fZXJyb3JfcGxhbjoKICAgICAgICAgICAgIGVycm9yID0gc2VsZi5f
ZXJyb3JfcGxhbi5wb3AoMCkKQEAgLTU2LDEyICs1NiwyMiBAQCBjbGFzcyBNb2NrQ29tbWl0UXVl
dWU6CiAgICAgICAgICAgICBmYWlsdXJlX21lc3NhZ2UsIHNjcmlwdF9lcnJvciwgcGF0Y2guaWQo
KSkpCiAgICAgICAgIHJldHVybiAzOTQ3CiAKKyAgICBkZWYgcmVmZXRjaF9wYXRjaChzZWxmLCBw
YXRjaCk6CisgICAgICAgIHJldHVybiBwYXRjaAorCisgICAgZGVmIGxheW91dF90ZXN0X3Jlc3Vs
dHMoc2VsZik6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgcmVwb3J0X2ZsYWt5X3Rl
c3RzKHNlbGYsIHBhdGNoLCBmbGFreV90ZXN0cyk6CisgICAgICAgIGxvZygicmVwb3J0X2ZsYWt5
X3Rlc3RzOiBwYXRjaD0nJXMnIGZsYWt5X3Rlc3RzPSclcyciICUgKHBhdGNoLmlkKCksIGZsYWt5
X3Rlc3RzKSkKKwogCiBjbGFzcyBDb21taXRRdWV1ZVRhc2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgX3J1bl90aHJvdWdoX3Rhc2soc2VsZiwgY29tbWl0X3F1ZXVlLCBleHBlY3Rl
ZF9zdGRlcnIsIGV4cGVjdGVkX2V4Y2VwdGlvbj1Ob25lKToKICAgICAgICAgdG9vbCA9IE1vY2tU
b29sKGxvZ19leGVjdXRpdmU9VHJ1ZSkKICAgICAgICAgcGF0Y2ggPSB0b29sLmJ1Z3MuZmV0Y2hf
YXR0YWNobWVudCgxOTcpCi0gICAgICAgIHRhc2sgPSBDb21taXRRdWV1ZVRhc2sodG9vbCwgY29t
bWl0X3F1ZXVlLCBwYXRjaCkKKyAgICAgICAgdGFzayA9IENvbW1pdFF1ZXVlVGFzayhjb21taXRf
cXVldWUsIHBhdGNoKQorICAgICAgICB0YXNrLl9yZXN1bHRzX2Zyb21fbG9jYWxfcnVuID0gbGFt
YmRhOiBOb25lICAjIFByZXZlbnQgdGhlIHVuaXQgdGVzdHMgZnJvbSBoaXR0aW5nIHRoZSBkaXNr
CiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCB0YXNrLnJ1biwg
ZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfZXhjZXB0aW9uPWV4cGVj
dGVkX2V4Y2VwdGlvbikKIAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfY2FzZShzZWxmKToKQEAgLTEy
OSw2ICsxMzksNyBAQCBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8t
Y2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tcQogY29tbWFuZF9mYWlsZWQ6IGZh
aWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdN
T0NLIHRlc3RzIGZhaWx1cmUnIHBhdGNoPScxOTcnCiBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxk
LWFuZC10ZXN0JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tcXVp
ZXQnLCAnLS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2Fn
ZT0nUGFzc2VkIHRlc3RzJyBwYXRjaD0nMTk3JworcmVwb3J0X2ZsYWt5X3Rlc3RzOiBwYXRjaD0n
MTk3JyBmbGFreV90ZXN0cz0nTm9uZScKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnbGFuZC1hdHRhY2ht
ZW50JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1pZ25vcmUtYnVpbGRlcnMnLCAnLS1xdWlldCcsICct
LW5vbi1pbnRlcmFjdGl2ZScsICctLXBhcmVudC1jb21tYW5kPWNvbW1pdC1xdWV1ZScsIDE5N10K
IGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0xhbmRlZCBwYXRjaCcgcGF0Y2g9JzE5
NycKICIiIgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3F1ZXVlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9xdWV1ZXMucHkKaW5kZXggNGZiMWE3YzMzNTliM2ZiZTZlOTM5NDFjOGYyNDU0ZDY3MWM3
NmRhNy4uYWJmZmQ2ZmM0MzVhOGQ3ZWNkMzBiN2YyNTBhODE1YzE1MDEyOTVjMyAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5
CkBAIC00MCw3ICs0MCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5zdGF0dXNzZXJ2ZXIg
aW1wb3J0IFN0YXR1c1NlcnZlcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNh
dGVkX2xvZ2dpbmcgaW1wb3J0IGVycm9yLCBsb2cKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5k
cy5zdGVwc2VxdWVuY2UgaW1wb3J0IFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcgotZnJvbSB3ZWJr
aXRweS50b29sLmJvdC5jb21taXRxdWV1ZXRhc2sgaW1wb3J0IENvbW1pdFF1ZXVlVGFzaworZnJv
bSB3ZWJraXRweS50b29sLmJvdC5jb21taXRxdWV1ZXRhc2sgaW1wb3J0IENvbW1pdFF1ZXVlVGFz
aywgQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZmVlZGVy
cyBpbXBvcnQgQ29tbWl0UXVldWVGZWVkZXIKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucGF0Y2hj
b2xsZWN0aW9uIGltcG9ydCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0aW9uLCBQZXJzaXN0ZW50UGF0
Y2hDb2xsZWN0aW9uRGVsZWdhdGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucXVldWVlbmdpbmUg
aW1wb3J0IFF1ZXVlRW5naW5lLCBRdWV1ZUVuZ2luZURlbGVnYXRlCkBAIC0yMDksNyArMjA5LDcg
QEAgY2xhc3MgQWJzdHJhY3RQYXRjaFF1ZXVlKEFic3RyYWN0UXVldWUpOgogICAgICAgICByZXR1
cm4gb3MucGF0aC5qb2luKHNlbGYuX2xvZ19kaXJlY3RvcnkoKSwgIiVzLmxvZyIgJSBwYXRjaC5i
dWdfaWQoKSkKIAogCi1jbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBT
ZXF1ZW5jZUVycm9ySGFuZGxlcik6CitjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVl
dWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlciwgQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUpOgog
ICAgIG5hbWUgPSAiY29tbWl0LXF1ZXVlIgogCiAgICAgIyBBYnN0cmFjdFBhdGNoUXVldWUgbWV0
aG9kcwpAQCAtMjMxLDcgKzIzMSw3IEBAIGNsYXNzIENvbW1pdFF1ZXVlKEFic3RyYWN0UGF0Y2hR
dWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyKToKIAogICAgIGRlZiBwcm9jZXNzX3dvcmtf
aXRlbShzZWxmLCBwYXRjaCk6CiAgICAgICAgIHNlbGYuX2NjX3dhdGNoZXJzKHBhdGNoLmJ1Z19p
ZCgpKQotICAgICAgICB0YXNrID0gQ29tbWl0UXVldWVUYXNrKHNlbGYuX3Rvb2wsIHNlbGYsIHBh
dGNoKQorICAgICAgICB0YXNrID0gQ29tbWl0UXVldWVUYXNrKHNlbGYsIHBhdGNoKQogICAgICAg
ICB0cnk6CiAgICAgICAgICAgICBpZiB0YXNrLnJ1bigpOgogICAgICAgICAgICAgICAgIHNlbGYu
X2RpZF9wYXNzKHBhdGNoKQpAQCAtMjQyLDkgKzI0MiwyMCBAQCBjbGFzcyBDb21taXRRdWV1ZShB
YnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcik6CiAgICAgICAgICAg
ICB2YWxpZGF0b3IucmVqZWN0X3BhdGNoX2Zyb21fY29tbWl0X3F1ZXVlKHBhdGNoLmlkKCksIHNl
bGYuX2Vycm9yX21lc3NhZ2VfZm9yX2J1Zyh0YXNrLmZhaWx1cmVfc3RhdHVzX2lkLCBlKSkKICAg
ICAgICAgICAgIHNlbGYuX2RpZF9mYWlsKHBhdGNoKQogCisgICAgZGVmIF9lcnJvcl9tZXNzYWdl
X2Zvcl9idWcoc2VsZiwgc3RhdHVzX2lkLCBzY3JpcHRfZXJyb3IpOgorICAgICAgICBpZiBub3Qg
c2NyaXB0X2Vycm9yLm91dHB1dDoKKyAgICAgICAgICAgIHJldHVybiBzY3JpcHRfZXJyb3IubWVz
c2FnZV93aXRoX291dHB1dCgpCisgICAgICAgIHJlc3VsdHNfbGluayA9IHNlbGYuX3Rvb2wuc3Rh
dHVzX3NlcnZlci5yZXN1bHRzX3VybF9mb3Jfc3RhdHVzKHN0YXR1c19pZCkKKyAgICAgICAgcmV0
dXJuICIlc1xuRnVsbCBvdXRwdXQ6ICVzIiAlIChzY3JpcHRfZXJyb3IubWVzc2FnZV93aXRoX291
dHB1dCgpLCByZXN1bHRzX2xpbmspCisKICAgICBkZWYgaGFuZGxlX3VuZXhwZWN0ZWRfZXJyb3Io
c2VsZiwgcGF0Y2gsIG1lc3NhZ2UpOgogICAgICAgICBzZWxmLmNvbW1pdHRlcl92YWxpZGF0b3Iu
cmVqZWN0X3BhdGNoX2Zyb21fY29tbWl0X3F1ZXVlKHBhdGNoLmlkKCksIG1lc3NhZ2UpCiAKKyAg
ICAjIENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlIG1ldGhvZHMKKworICAgIGRlZiBydW5fY29tbWFu
ZChzZWxmLCBjb21tYW5kKToKKyAgICAgICAgc2VsZi5ydW5fd2Via2l0X3BhdGNoKGNvbW1hbmQp
CisKICAgICBkZWYgY29tbWFuZF9wYXNzZWQoc2VsZiwgbWVzc2FnZSwgcGF0Y2gpOgogICAgICAg
ICBzZWxmLl91cGRhdGVfc3RhdHVzKG1lc3NhZ2UsIHBhdGNoPXBhdGNoKQogCkBAIC0yNTIsMTEg
KzI2MywyMiBAQCBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1
ZW5jZUVycm9ySGFuZGxlcik6CiAgICAgICAgIGZhaWx1cmVfbG9nID0gc2VsZi5fbG9nX2Zyb21f
c2NyaXB0X2Vycm9yX2Zvcl91cGxvYWQoc2NyaXB0X2Vycm9yKQogICAgICAgICByZXR1cm4gc2Vs
Zi5fdXBkYXRlX3N0YXR1cyhtZXNzYWdlLCBwYXRjaD1wYXRjaCwgcmVzdWx0c19maWxlPWZhaWx1
cmVfbG9nKQogCi0gICAgZGVmIF9lcnJvcl9tZXNzYWdlX2Zvcl9idWcoc2VsZiwgc3RhdHVzX2lk
LCBzY3JpcHRfZXJyb3IpOgotICAgICAgICBpZiBub3Qgc2NyaXB0X2Vycm9yLm91dHB1dDoKLSAg
ICAgICAgICAgIHJldHVybiBzY3JpcHRfZXJyb3IubWVzc2FnZV93aXRoX291dHB1dCgpCi0gICAg
ICAgIHJlc3VsdHNfbGluayA9IHNlbGYuX3Rvb2wuc3RhdHVzX3NlcnZlci5yZXN1bHRzX3VybF9m
b3Jfc3RhdHVzKHN0YXR1c19pZCkKLSAgICAgICAgcmV0dXJuICIlc1xuRnVsbCBvdXRwdXQ6ICVz
IiAlIChzY3JpcHRfZXJyb3IubWVzc2FnZV93aXRoX291dHB1dCgpLCByZXN1bHRzX2xpbmspCisg
ICAgIyBGSVhNRTogVGhpcyBtYXkgYmVsb25nIG9uIHRoZSBQb3J0IG9iamVjdC4KKyAgICBkZWYg
bGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgcmVzdWx0c19wYXRoID0gc2VsZi5f
dG9vbC5wb3J0KCkubGF5b3V0X3Rlc3RfcmVzdWx0c19wYXRoKCkKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgIyBGSVhNRTogV2UgbmVlZCBhIG5pY2Ugb3BlbigpIGFic3RyYWN0aW9uIGZvciBi
ZXR0ZXIgbW9ja2luZyBoZXJlLgorICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihyZXN1bHRz
X3BhdGgsICJyIiwgInV0Zi04IikgYXMgcmVzdWx0c19maWxlOgorICAgICAgICAgICAgICAgIHJl
dHVybiBMYXlvdXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKHJlc3VsdHNfZmlsZSkK
KyAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6ICAjIEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgY2Fu
J3QgYmUgcmVhZC4KKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgcmVmZXRjaF9w
YXRjaChzZWxmLCBwYXRjaCk6CisgICAgICAgIHJldHVybiBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hf
YXR0YWNobWVudChwYXRjaC5pZCgpKQorCisgICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxm
LCBwYXRjaCwgZmxha3lfdGVzdHMpOgorICAgICAgICBtZXNzYWdlID0gIlRoZSAlcyBlbmNvdW50
ZXJlZCB0aGUgZm9sbG93aW5nIGZsYWt5IHRlc3RzIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNobWVu
dCAlczpcblxuJXNcblxuUGxlYXNlIGZpbGUgYnVncyBhZ2FpbnN0IHRoZSB0ZXN0cy4gIFRoZSBj
b21taXQtcXVldWUgaXMgY29udGludWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guIiAlIChzZWxm
Lm5hbWUsIHBhdGNoLmlkKCksIGZsYWt5X3Rlc3RzKQorICAgICAgICBzZWxmLl90b29sLmJ1Z3Mu
cG9zdF9jb21tZW50X3RvX2J1ZyhwYXRjaC5idWdfaWQoKSwgbWVzc2FnZSwgY2M9c2VsZi53YXRj
aGVycykKIAogICAgICMgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyIG1ldGhvZHMKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191
bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9x
dWV1ZXNfdW5pdHRlc3QucHkKaW5kZXggOWU5OWEyMGQxZmU0YzkxNzk2MTA1MDY0ZTAzMjUwOTNk
YWQ2MWMxMC4uYmE5OGQ1NGNkOGQ1M2E1M2IwOWU4Zjk3NTE2NWJjNDlkOWJlYjU3OSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191
bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzX3VuaXR0ZXN0LnB5CkBAIC0yOTksNiArMjk5LDIxIEBAIE1PQ0s6IHVwZGF0ZV9z
dGF0dXM6IGNvbW1pdC1xdWV1ZSBQYXNzCiAiIiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFz
c2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLnByb2Nlc3Nfd29ya19pdGVtLCBbTW9ja1BhdGNoKCld
LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQogCisgICAgZGVmIHRlc3RfcmVwb3J0
X2ZsYWt5X3Rlc3RzKHNlbGYpOgorICAgICAgICBxdWV1ZSA9IENvbW1pdFF1ZXVlKCkKKyAgICAg
ICAgcXVldWUuYmluZF90b190b29sKE1vY2tUb29sKCkpCisgICAgICAgIGV4cGVjdGVkX3N0ZGVy
ciA9ICIiIk1PQ0sgYnVnIGNvbW1lbnQ6IGJ1Z19pZD0xNDIsIGNjPVtdCistLS0gQmVnaW4gY29t
bWVudCAtLS0KK1RoZSBjb21taXQtcXVldWUgZW5jb3VudGVyZWQgdGhlIGZvbGxvd2luZyBmbGFr
eSB0ZXN0cyB3aGlsZSBwcm9jZXNzaW5nIGF0dGFjaG1lbnQgMTk3OgorCitbJ2Zvby9iYXIuaHRt
bCcsICdiYXIvYmF6Lmh0bWwnXQorCitQbGVhc2UgZmlsZSBidWdzIGFnYWluc3QgdGhlIHRlc3Rz
LiAgVGhlIGNvbW1pdC1xdWV1ZSBpcyBjb250aW51aW5nIHRvIHByb2Nlc3MgeW91ciBwYXRjaC4K
Ky0tLSBFbmQgY29tbWVudCAtLS0KKworIiIiCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3Nl
cnRfb3V0cHV0cyhzZWxmLCBxdWV1ZS5yZXBvcnRfZmxha3lfdGVzdHMsIFtNb2NrUGF0Y2goKSwg
WyJmb28vYmFyLmh0bWwiLCAiYmFyL2Jhei5odG1sIl1dLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0
ZWRfc3RkZXJyKQorCiAKIGNsYXNzIFJpZXR2ZWxkVXBsb2FkUXVldWVUZXN0KFF1ZXVlc1Rlc3Qp
OgogICAgIGRlZiB0ZXN0X3JpZXR2ZWxkX3VwbG9hZF9xdWV1ZShzZWxmKToKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkKaW5kZXggYjQ3YmI0M2ZkOTRkNGUwMTkyZDZi
NmFjYzUyZDg3NGViODdiOTE2NS4uOTMxMjMwN2Q0NTQ5NGFhMzNiNjVkN2YzMjRlNGM1YmU2ZjY3
Nzk5OSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4u
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkKQEAgLTM0
LDYgKzM0LDcgQEAgaW1wb3J0IHRocmVhZGluZwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dC5hcGkgaW1wb3J0IENoZWNrb3V0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5z
Y20gaW1wb3J0IGRlZmF1bHRfc2NtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcucG9ydHMg
aW1wb3J0IFdlYktpdFBvcnQKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBv
cnQgQnVnemlsbGEKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBvcnQgQnVp
bGRCb3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5yaWV0dmVsZCBpbXBvcnQgUmlldHZlbGQK
QEAgLTUyLDcgKzUzLDYgQEAgZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXVlcyBpbXBv
cnQgKgogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnNoZXJpZmZib3QgaW1wb3J0ICoKIGZy
b20gd2Via2l0cHkudG9vbC5jb21tYW5kcy51cGxvYWQgaW1wb3J0ICoKIGZyb20gd2Via2l0cHku
dG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBNdWx0aUNvbW1hbmRUb29sCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBsb2cKIAogCiBjbGFz
cyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29sKToKQEAgLTczLDYgKzczLDcgQEAgY2xhc3Mg
V2ViS2l0UGF0Y2goTXVsdGlDb21tYW5kVG9vbCk6CiAgICAgICAgIHNlbGYuYnVpbGRib3QgPSBC
dWlsZEJvdCgpCiAgICAgICAgIHNlbGYuZXhlY3V0aXZlID0gRXhlY3V0aXZlKCkKICAgICAgICAg
c2VsZi5faXJjID0gTm9uZQorICAgICAgICBzZWxmLl9wb3J0ID0gTm9uZQogICAgICAgICBzZWxm
LnVzZXIgPSBVc2VyKCkKICAgICAgICAgc2VsZi5fc2NtID0gTm9uZQogICAgICAgICBzZWxmLl9j
aGVja291dCA9IE5vbmUKQEAgLTkxLDYgKzkyLDkgQEAgY2xhc3MgV2ViS2l0UGF0Y2goTXVsdGlD
b21tYW5kVG9vbCk6CiAgICAgICAgICAgICBzZWxmLl9jaGVja291dCA9IENoZWNrb3V0KHNlbGYu
c2NtKCkpCiAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja291dAogCisgICAgZGVmIHBvcnQoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9wb3J0CisKICAgICBkZWYgZW5zdXJlX2lyY19jb25u
ZWN0ZWQoc2VsZiwgaXJjX2RlbGVnYXRlKToKICAgICAgICAgaWYgbm90IHNlbGYuX2lyYzoKICAg
ICAgICAgICAgIHNlbGYuX2lyYyA9IElSQ1Byb3h5KGlyY19kZWxlZ2F0ZSkKQEAgLTEyOCw2ICsx
MzIsOCBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29sKToKICAgICAgICAgICAg
IHNlbGYuc3RhdHVzX3NlcnZlci5zZXRfYm90X2lkKG9wdGlvbnMuYm90X2lkKQogICAgICAgICBp
ZiBvcHRpb25zLmlyY19wYXNzd29yZDoKICAgICAgICAgICAgIHNlbGYuaXJjX3Bhc3N3b3JkID0g
b3B0aW9ucy5pcmNfcGFzc3dvcmQKKyAgICAgICAgIyBJZiBvcHRpb25zLnBvcnQgaXMgTm9uZSwg
d2UnbGwgZ2V0IHRoZSBkZWZhdWx0IHBvcnQgZm9yIHRoaXMgcGxhdGZvcm0uCisgICAgICAgIHNl
bGYuX3BvcnQgPSBXZWJLaXRQb3J0LnBvcnQob3B0aW9ucy5wb3J0KQogCiAgICAgZGVmIHNob3Vs
ZF9leGVjdXRlX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6CiAgICAgICAgIGlmIGNvbW1hbmQucmVx
dWlyZXNfbG9jYWxfY29tbWl0cyBhbmQgbm90IHNlbGYuc2NtKCkuc3VwcG9ydHNfbG9jYWxfY29t
bWl0cygpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21v
Y2t0b29sLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5
CmluZGV4IGY4NGVjMmIzMmRjMjk1NTY1NjU3MzZiOTA5NWE2NGQwNzUxNWMxOTYuLmZiNDlkYjk2
NDcwMjUzNDFiOTA3ODVmZjlmMWU5MTUyNWUzMzA3YjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKQEAgLTMwLDYgKzMwLDcgQEAgaW1wb3J0IG9z
CiBpbXBvcnQgdGhyZWFkaW5nCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0
ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0LCBSZXZpZXdlcgorZnJvbSB3ZWJraXRweS5jb21tb24u
Y29uZmlnLnBvcnRzIGltcG9ydCBNYWNQb3J0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5jb21taXRpbmZvIGltcG9ydCBDb21taXRJbmZvCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dC5zY20gaW1wb3J0IENvbW1pdE1lc3NhZ2UKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5i
dWd6aWxsYSBpbXBvcnQgQnVnLCBBdHRhY2htZW50CkBAIC02NDUsNiArNjQ2LDEwIEBAIGNsYXNz
IE1vY2tUb29sKCk6CiAgICAgZGVmIHBhdGgoc2VsZik6CiAgICAgICAgIHJldHVybiAiZWNobyIK
IAorICAgIGRlZiBwb3J0KHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBDb25zaWRlciB1c2luZyBh
IG1vY2sgaGVyZS4KKyAgICAgICAgcmV0dXJuIE1hY1BvcnQKKwogCiBjbGFzcyBNb2NrQnJvd3Nl
cihvYmplY3QpOgogICAgIHBhcmFtcyA9IHt9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQppbmRleCA5Y2ViMmNiZDBk
MTJmMTI2ODVmMmRmNTRmZWZlMDIzYTgyMGE1NzAxLi4wMmE4NzZhYTVkMDQyZWY5YTIzOGVlY2E4
NTFkNmYzMDE2NWIxYjE5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkKQEAgLTM2LDIzICszNiwxNSBAQCBjbGFz
cyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdG9vbCwgb3B0
aW9ucyk6CiAgICAgICAgIHNlbGYuX3Rvb2wgPSB0b29sCiAgICAgICAgIHNlbGYuX29wdGlvbnMg
PSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCiAKKyAgICAjIEZJWE1FOiBUaGlz
IHNob3VsZCB1c2UgdG9vbC5wb3J0KCkKICAgICBkZWYgX3J1bl9zY3JpcHQoc2VsZiwgc2NyaXB0
X25hbWUsIGFyZ3M9Tm9uZSwgcXVpZXQ9RmFsc2UsIHBvcnQ9V2ViS2l0UG9ydCk6CiAgICAgICAg
IGxvZygiUnVubmluZyAlcyIgJSBzY3JpcHRfbmFtZSkKICAgICAgICAgY29tbWFuZCA9IFtwb3J0
LnNjcmlwdF9wYXRoKHNjcmlwdF9uYW1lKV0KICAgICAgICAgaWYgYXJnczoKICAgICAgICAgICAg
IGNvbW1hbmQuZXh0ZW5kKGFyZ3MpCi0gICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBz
ZWxmLnBvcnQoKQogICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lm
X2ZhaWwoY29tbWFuZCwgcXVpZXQpCiAKLSAgICAjIEZJWE1FOiBUaGUgcG9ydCBzaG91bGQgbGl2
ZSBvbiB0aGUgdG9vbC4KLSAgICBkZWYgcG9ydChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fcG9y
dDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3J0Ci0gICAgICAgIHNlbGYuX3BvcnQgPSBX
ZWJLaXRQb3J0LnBvcnQoc2VsZi5fb3B0aW9ucy5wb3J0KQotICAgICAgICByZXR1cm4gc2VsZi5f
cG9ydAotCiAgICAgX3dlbGxfa25vd25fa2V5cyA9IHsKICAgICAgICAgImRpZmYiOiBsYW1iZGEg
c2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wuc2NtKCkuY3JlYXRlX3BhdGNoKHNlbGYuX29wdGlvbnMu
Z2l0X2NvbW1pdCksCiAgICAgICAgICJjaGFuZ2Vsb2dzIjogbGFtYmRhIHNlbGYsIHN0YXRlOiBz
ZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLl9vcHRpb25zLmdp
dF9jb21taXQpLApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2J1aWxkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2J1aWxkLnB5CmluZGV4IDQ1NmRiMjUzOWJjZDIwMmRmM2NiNzVmYTMyZmZlMzM5MzA5MTMxZmEu
LjA5OTBiOGIzMzRlNjU4ZjFkNmZkYjA2NzE4ZTQzY2QwYWEwMDBhNjAgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9idWlsZC5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYnVpbGQucHkKQEAgLTQxLDcgKzQx
LDcgQEAgY2xhc3MgQnVpbGQoQWJzdHJhY3RTdGVwKToKICAgICAgICAgXQogCiAgICAgZGVmIGJ1
aWxkKHNlbGYsIGJ1aWxkX3N0eWxlKToKLSAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVu
X2FuZF90aHJvd19pZl9mYWlsKHNlbGYucG9ydCgpLmJ1aWxkX3dlYmtpdF9jb21tYW5kKGJ1aWxk
X3N0eWxlPWJ1aWxkX3N0eWxlKSwgc2VsZi5fb3B0aW9ucy5xdWlldCkKKyAgICAgICAgc2VsZi5f
dG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHNlbGYuX3Rvb2wucG9ydCgpLmJ1
aWxkX3dlYmtpdF9jb21tYW5kKGJ1aWxkX3N0eWxlPWJ1aWxkX3N0eWxlKSwgc2VsZi5fb3B0aW9u
cy5xdWlldCkKIAogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgogICAgICAgICBpZiBub3Qgc2Vs
Zi5fb3B0aW9ucy5idWlsZDoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKaW5kZXggY2UwNDAyNDhmMWYw
MzhmYjJjNjg5ZTU0NTRmMGMxZmFiYjc5M2Y0NS4uMmU3NWI5ZDc2ZTkwOTVlZWUzNmY4Y2QxMDFl
N2IwOGJlMTlmY2Q4MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKQEAgLTYyLDcgKzYyLDcgQEAg
Y2xhc3MgUHJlcGFyZUNoYW5nZUxvZyhBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgc2VsZi5f
ZW5zdXJlX2J1Z191cmwoc3RhdGUpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgb3MuY2hk
aXIoc2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290KQotICAgICAgICBhcmdzID0gW3NlbGYu
cG9ydCgpLnNjcmlwdF9wYXRoKCJwcmVwYXJlLUNoYW5nZUxvZyIpXQorICAgICAgICBhcmdzID0g
W3NlbGYuX3Rvb2wucG9ydCgpLnNjcmlwdF9wYXRoKCJwcmVwYXJlLUNoYW5nZUxvZyIpXQogICAg
ICAgICBpZiBzdGF0ZS5nZXQoImJ1Z19pZCIpOgogICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0t
YnVnPSVzIiAlIHN0YXRlWyJidWdfaWQiXSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5lbWFp
bDoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9y
dW50ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50
ZXN0cy5weQppbmRleCBhZmYxZmQ5ZGVkZjYzZjI5YjgzMjg3NWJjNTQ5NzZjNmJmMDEzYjg2Li4y
OWI2ZTllNDc1M2Y0MGEyMTcwOGNiOWZiNGM2OGM0NzRjZmYyZjgxIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzLnB5CkBAIC00Niwx
NCArNDYsMTQgQEAgY2xhc3MgUnVuVGVzdHMoQWJzdHJhY3RTdGVwKToKIAogICAgICAgICAjIFJ1
biB0aGUgc2NyaXB0aW5nIHVuaXQgdGVzdHMgZmlyc3QgYmVjYXVzZSB0aGV5J3JlIHF1aWNrZXN0
LgogICAgICAgICBsb2coIlJ1bm5pbmcgUHl0aG9uIHVuaXQgdGVzdHMiKQotICAgICAgICBzZWxm
Ll90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5wb3J0KCkucnVuX3B5
dGhvbl91bml0dGVzdHNfY29tbWFuZCgpKQorICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5y
dW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5fdG9vbC5wb3J0KCkucnVuX3B5dGhvbl91bml0dGVz
dHNfY29tbWFuZCgpKQogICAgICAgICBsb2coIlJ1bm5pbmcgUGVybCB1bml0IHRlc3RzIikKLSAg
ICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHNlbGYucG9y
dCgpLnJ1bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5kKCkpCisgICAgICAgIHNlbGYuX3Rvb2wuZXhl
Y3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90b29sLnBvcnQoKS5ydW5fcGVybF91
bml0dGVzdHNfY29tbWFuZCgpKQogICAgICAgICBsb2coIlJ1bm5pbmcgSmF2YVNjcmlwdENvcmUg
dGVzdHMiKQotICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2Zh
aWwoc2VsZi5wb3J0KCkucnVuX2phdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQoKSwgcXVpZXQ9
VHJ1ZSkKKyAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWls
KHNlbGYuX3Rvb2wucG9ydCgpLnJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kKCksIHF1
aWV0PVRydWUpCiAKICAgICAgICAgbG9nKCJSdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMiKQotICAg
ICAgICBhcmdzID0gc2VsZi5wb3J0KCkucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCkKKyAgICAg
ICAgYXJncyA9IHNlbGYuX3Rvb2wucG9ydCgpLnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpCiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMubm9uX2ludGVyYWN0aXZlOgogICAgICAgICAgICAgYXJn
cy5hcHBlbmQoIi0tbm8tbGF1bmNoLXNhZmFyaSIpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgi
LS1leGl0LWFmdGVyLW4tZmFpbHVyZXM9MSIpCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIFJ1blRl
c3RzKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICAjIEZJWE1FOiBIYWNrIHRvIHdvcmsgYXJv
dW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODkxMgogICAgICAg
ICAgICAgIyB3aGVuIHJ1bm5pbmcgdGhlIGNvbW1pdC1xdWV1ZSBvbiBhIG1hYyBsZW9wYXJkIG1h
Y2hpbmUgc2luY2UgY29tcG9zaXRpbmcKICAgICAgICAgICAgICMgZG9lcyBub3Qgd29yayByZWxp
YWJseSBvbiBMZW9wYXJkIGR1ZSB0byB2YXJpb3VzIGdyYXBoaWNzIGRyaXZlci9zeXN0ZW0gYnVn
cy4KLSAgICAgICAgICAgIGlmIHNlbGYucG9ydCgpLm5hbWUoKSA9PSAiTWFjIiBhbmQgc2VsZi5w
b3J0KCkuaXNfbGVvcGFyZCgpOgorICAgICAgICAgICAgaWYgc2VsZi5fdG9vbC5wb3J0KCkubmFt
ZSgpID09ICJNYWMiIGFuZCBzZWxmLl90b29sLnBvcnQoKS5pc19sZW9wYXJkKCk6CiAgICAgICAg
ICAgICAgICAgdGVzdHNfdG9faWdub3JlID0gW10KICAgICAgICAgICAgICAgICB0ZXN0c190b19p
Z25vcmUuYXBwZW5kKCJjb21wb3NpdGluZyIpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weQppbmRleCAxNWYy
NzVhZDhkMzI1NjZmZDQ0NWU1NTYzOThhNTE2NmQwMTgzNmQxLi42OTU3NWRiNjJlMTIzYjQ4ZGJk
YjMyOGQxYWI2NGZkZDlkMTQyMWQ5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5CkBAIC01NywxOSArNTcs
MjAgQEAgY2xhc3MgU3RlcHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgdG9vbC51
c2VyLnByb21wdCA9IGxhbWJkYSBtZXNzYWdlOiA0MgogICAgICAgICBzZWxmLl9ydW5fc3RlcChQ
cm9tcHRGb3JCdWdPclRpdGxlLCB0b29sPXRvb2wpCiAKLSAgICBkZWYgdGVzdF9ydW50ZXN0c19s
ZW9wYXJkX2NvbW1pdF9xdWV1ZV9oYWNrKHNlbGYpOgorICAgIGRlZiB0ZXN0X3J1bnRlc3RzX2xl
b3BhcmRfY29tbWl0X3F1ZXVlX2hhY2tfc3RlcChzZWxmKToKICAgICAgICAgZXhwZWN0ZWRfc3Rk
ZXJyID0gIlJ1bm5pbmcgUHl0aG9uIHVuaXQgdGVzdHNcblJ1bm5pbmcgUGVybCB1bml0IHRlc3Rz
XG5SdW5uaW5nIEphdmFTY3JpcHRDb3JlIHRlc3RzXG5SdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHNc
biIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHNlbGYuX3J1
bl9zdGVwLCBbUnVuVGVzdHNdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQogCi0g
ICAgZGVmIHRlc3RfcnVudGVzdHNfbGVvcGFyZF9jb21taXRfcXVldWVfaGFjayhzZWxmKToKKyAg
ICBkZWYgdGVzdF9ydW50ZXN0c19sZW9wYXJkX2NvbW1pdF9xdWV1ZV9oYWNrX2NvbW1hbmQoc2Vs
Zik6CiAgICAgICAgIG1vY2tfb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKICAgICAgICAgbW9ja19v
cHRpb25zLm5vbl9pbnRlcmFjdGl2ZSA9IFRydWUKLSAgICAgICAgc3RlcCA9IFJ1blRlc3RzKE1v
Y2tUb29sKGxvZ19leGVjdXRpdmU9VHJ1ZSksIG1vY2tfb3B0aW9ucykKICAgICAgICAgIyBGSVhN
RTogV2Ugc2hvdWxkbid0IHVzZSBhIHJlYWwgcG9ydC1vYmplY3QgaGVyZSwgYnV0IHRoZXJlIGlz
IHRvbyBtdWNoIHRvIG1vY2sgYXQgdGhlIG1vbWVudC4KICAgICAgICAgbW9ja19wb3J0ID0gV2Vi
S2l0UG9ydCgpCiAgICAgICAgIG1vY2tfcG9ydC5uYW1lID0gbGFtYmRhOiAiTWFjIgogICAgICAg
ICBtb2NrX3BvcnQuaXNfbGVvcGFyZCA9IGxhbWJkYTogVHJ1ZQotICAgICAgICBzdGVwLnBvcnQg
PSBsYW1iZGE6IG1vY2tfcG9ydAorICAgICAgICB0b29sID0gTW9ja1Rvb2wobG9nX2V4ZWN1dGl2
ZT1UcnVlKQorICAgICAgICB0b29sLnBvcnQgPSBsYW1iZGE6IG1vY2tfcG9ydAorICAgICAgICBz
dGVwID0gUnVuVGVzdHModG9vbCwgbW9ja19vcHRpb25zKQogICAgICAgICBleHBlY3RlZF9zdGRl
cnIgPSAiIiJSdW5uaW5nIFB5dGhvbiB1bml0IHRlc3RzCiBNT0NLIHJ1bl9hbmRfdGhyb3dfaWZf
ZmFpbDogWydXZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHknXQogUnVubmluZyBQZXJs
IHVuaXQgdGVzdHMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy91cGRhdGUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvdXBkYXRlLnB5CmluZGV4IDBmNDUwZjM3ZDI2N2RlODRjNGJlYmY4NjE0M2Q4MTkwNzVlNmY5
MzUuLjNkMmJkNTlhY2JkZTg1ZmM3ZTU3NGRiN2Q5MzZlYzY2ZGZkMDkwZDcgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGUucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZS5weQpAQCAtNDMs
NCArNDMsNCBAQCBjbGFzcyBVcGRhdGUoQWJzdHJhY3RTdGVwKToKICAgICAgICAgaWYgbm90IHNl
bGYuX29wdGlvbnMudXBkYXRlOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGxvZygiVXBk
YXRpbmcgd29ya2luZyBkaXJlY3RvcnkiKQotICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5y
dW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5wb3J0KCkudXBkYXRlX3dlYmtpdF9jb21tYW5kKCks
IHF1aWV0PVRydWUpCisgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3df
aWZfZmFpbChzZWxmLl90b29sLnBvcnQoKS51cGRhdGVfd2Via2l0X2NvbW1hbmQoKSwgcXVpZXQ9
VHJ1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70747</attachid>
            <date>2010-10-14 10:08:41 -0700</date>
            <delta_ts>2010-10-14 11:04:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47647-20101014100840.patch</filename>
            <type>text/plain</type>
            <size>33854</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5M2Y0NmU0ZmYwZWUzMWM3YThjYWVjOTJmZmY0YmVkNDdjMmNkNmI4Li5lOTAxNWE1
ZDIzZmUyZmIwODk0MzgxNDhlNDA3YTkzZTZmMDE4NGYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMTAtMTAtMTQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdC1xdWV1ZSBzaG91bGQg
bm90IGZhaWwgcGF0Y2hlcyBkdWUgdG8gZmxha3kgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjQ3CisKKyAgICAgICAgVGhpcyBwYXRjaCBt
YWtlcyBpdCBzbyB0aGF0IHRoZSAqc2FtZSogZmxha3kgdGVzdCBoYXMgdG8gZmFpbAorICAgICAg
ICB0d2ljZSBpbiBhIHJvdyB0byBoYXZlIGEgZmFsc2UgbmVnYXRpdmUgZnJvbSBhIGZsYWt5IHRl
c3QuCisKKyAgICAgICAgSWYgZGlmZmVyZW50IGZsYWt5IHRlc3RzIGZhaWwgKG9yIGlmIGEgdGVz
dCBmYWlscyBhbmQgdGhlbiBwYXNzZXMKKyAgICAgICAgaW4gYSBzZWNvbmQgcnVuKSB0aGVuIHdl
IHdpbGwgd2FybiBpbiB0aGUgYnVnIHRoYXQgd2UgZW5jb3VudGVyZWQKKyAgICAgICAgYSBmbGFr
eSB0ZXN0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZ3JldyB0byBpbmNsdWRlIG1vdmluZyBwb3J0
IG9mZiBvZiBzdGVwcyBvbnRvIHRvb2wKKyAgICAgICAgKHdoaWNoIEFkYW0gd3JvdGUgYW5kIHRo
ZW4gSSBpbnRlZ3JhdGVkKSwgYXMgd2VsbCBhcyByZW1vdmluZyB0aGUKKyAgICAgICAgdXNlIG9m
IHRvb2wgZnJvbSBDb21taXRRdWV1ZVRhc2suCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvcG9ydHMucHk6CisgICAgICAgICAtIEFkZGVkIGEgbGF5b3V0X3Rlc3Rf
cmVzdWx0c19wYXRoIG1ldGhvZC4gIFRoaXMgY292ZXJzIG9sZC1ydW4td2Via2l0LXRlc3RzCisg
ICAgICAgICAgIGJ1dCBkb2Vzbid0IGNvdmVyIE5SV1QuICBUaGlzIGlzIHByb2JhYmx5IG5vdCB0
aGUgbG9uZyB0ZXJtIHNvbHV0aW9uLCBidXQKKyAgICAgICAgICAgcHV0dGluZyB0aGlzIGtub3ds
ZWRnZSBvbiBwb3J0IG1ha2VzIG1vcmUgc2Vuc2UgdGhhbiBpbiBMYXlvdXRUZXN0UmVzdWx0cy4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QucHk6CisgICAg
ICAgICAtIExheW91dFRlc3RSZXN1bHRzIHNob3VsZG4ndCBrbm93IGhvdyB0byBmZXRjaCBmcm9t
IHRoZSBuZXR3b3JrLCBtYWtlCisgICAgICAgICAgIHRoZSBCdWlsZCBjb2RlIGRvIHRoYXQgaW5z
dGVhZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3RfdW5p
dHRlc3QucHk6CisgICAgICAgICAtIENvZGUgc3R5bGUgZml4LgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weToKKyAgICAgICAgIC0gUmVt
b3ZlIGNvZGUgZm9yIHJlYWRpbmcgZnJvbSB0aGUgbmV0d29yay4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5pdHRlc3QucHk6CisgICAg
ICAgICAtIFRlc3QgdGhlIG5ldyBlbnRyeXBvaW50LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5OgorICAgICAgICAgLSBNYWtlIHRoZSBkZWxl
Z2F0ZSBpbnRlcmZhY2UgZXhwbGljaXQuCisgICAgICAgICAtIFJlbW92ZSB0aGUgX3Rvb2wgbWVt
YmVyLCBzaW5jZSB1c2luZyB0aGUgZGVsZWdhdGUgZm9yCisgICAgICAgICAgIGV2ZXJ5dGhpbmcg
aXMgY2xlYW5lci4KKyAgICAgICAgIC0gVGVhY2ggdGhlIHRlc3RpbmcgbG9naWMgaG93IHRvIGRl
YWwgd2l0aCBmbGFreSB0ZXN0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weToKKyAgICAgICAgIC0gVXBkYXRlIHRvIG1hdGNo
IHRoZSBDb21taXRRdWV1ZVRhc2sgY2hhbmdlcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OgorICAgICAgICAgLSBVc2UgdGhlIG5ldyBDb21taXRR
dWV1ZVRhc2tEZWxlZ2F0ZSBpbnRlcmZhY2UuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weToKKyAgICAgICAgIC0gRml4IHRoZSBTZWNv
bmRUaG91Z2h0c0NvbW1pdFF1ZXVlIHRlc3Qgd2hpY2ggd2FzIGJyb2tlbi4KKyAgICAgICAgIC0g
QWRkIGEgbmV3IHRlc3QgdG8gbWFrZSBzdXJlIHRoZSBmbGFreSB0ZXN0IHJlcG9ydGluZyB3b3Jr
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weToKKyAgICAgICAgIC0g
U3RvcmUgdGhlIHBvcnQgb24gdGhlIHRvb2wgb2JqZWN0LgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9tb2NrdG9vbC5weToKKyAgICAgICAgIC0gQWRkIGEgcG9ydCgpIGFjY2Vzc29y
IHRvIE1vY2tUb29sCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3Ry
YWN0c3RlcC5weToKKyAgICAgICAgIC0gTW92ZSBwb3J0KCkgb2ZmIG9mIFN0ZXAgYW5kIG9udG8g
VG9vbC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYnVpbGQucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weToKKyAg
ICAgICAgIC0gVHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgbmFtZSEgIG9ubHkgdGhlIGxhdHRlciB3
YXMgYmVpbmcgcnVuLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRh
dGUucHk6CisKIDIwMTAtMTAtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weQppbmRleCA3OWNiMGMyMjg3NGU1
Y2Y4NTM4ZDVkNTgwNWExZDcyYjFlZDdlNDMwLi5kMjY4ODY1ZDc1MDMwZmNkNmI1MjYyYWZlNzdm
NzU1MzliNzc1NmYyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jb25maWcvcG9ydHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY29uZmlnL3BvcnRzLnB5CkBAIC0xMDMsNiArMTAzLDEwIEBAIGNsYXNzIFdlYktpdFBv
cnQob2JqZWN0KToKICAgICBkZWYgcnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoY2xzKToKICAg
ICAgICAgcmV0dXJuIFtjbHMuc2NyaXB0X3BhdGgoInRlc3Qtd2Via2l0cGVybCIpXQogCisgICAg
QGNsYXNzbWV0aG9kCisgICAgZGVmIGxheW91dF90ZXN0c19yZXN1bHRzX3BhdGgoY2xzKToKKyAg
ICAgICAgcmV0dXJuICIvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmVzdWx0cy5odG1sIgorCiAK
IGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weQppbmRleCA4Y2I5MDJjYWRlNzljMGQx
OTMwMjVlNTRkYTM5NDg5NDA2ZjYxNDg2Li5kM2QwOGVlNzA3ZGNhN2I0ZTczZTQ1NDViM2M2OTU1
Y2VhNzc1MjAwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvYnVpbGRib3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1aWxkYm90LnB5CkBAIC0yMTUsOSArMjE1LDE5IEBAIGNsYXNzIEJ1aWxkKG9iamVj
dCk6CiAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gInIlcyAoJXMpIiAlIChzZWxmLnJldmlz
aW9uKCksIHNlbGYuX251bWJlcikKICAgICAgICAgcmV0dXJuICIlcy8lcyIgJSAoc2VsZi5fYnVp
bGRlci5yZXN1bHRzX3VybCgpLCB1cmxsaWIucXVvdGUocmVzdWx0c19kaXJlY3RvcnkpKQogCisg
ICAgZGVmIF9mZXRjaF9yZXN1bHRzX2h0bWwoc2VsZik6CisgICAgICAgIHJlc3VsdHNfaHRtbCA9
ICIlcy9yZXN1bHRzLmh0bWwiICUgKHNlbGYucmVzdWx0c191cmwoKSkKKyAgICAgICAgIyBGSVhN
RTogV2UgbmVlZCB0byBtb3ZlIHRoaXMgc29ydCBvZiA0MDQgbG9naWMgaW50byBOZXR3b3JrVHJh
bnNhY3Rpb24gb3Igc2ltaWxhci4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHVy
bGxpYjIudXJsb3BlbihyZXN1bHRzX2h0bWwpCisgICAgICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBF
cnJvciwgZXJyb3I6CisgICAgICAgICAgICBpZiBlcnJvci5jb2RlICE9IDQwNDoKKyAgICAgICAg
ICAgICAgICByYWlzZQorCiAgICAgZGVmIGxheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAg
ICAgIGlmIG5vdCBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzOgotICAgICAgICAgICAgc2VsZi5f
bGF5b3V0X3Rlc3RfcmVzdWx0cyA9IExheW91dFRlc3RSZXN1bHRzLnJlc3VsdHNfZnJvbV91cmwo
c2VsZi5yZXN1bHRzX3VybCgpKQorICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgY2Fj
aGUgdGhhdCB0aGUgcmVzdWx0IHdhcyBhIDQwNCBhbmQgc3RvcCBoaXR0aW5nIHRoZSBuZXR3b3Jr
LgorICAgICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RfcmVzdWx0cyA9IExheW91dFRlc3RSZXN1
bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcoc2VsZi5fZmV0Y2hfcmVzdWx0c19odG1sKCkpCiAgICAg
ICAgIHJldHVybiBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzCiAKICAgICBkZWYgYnVpbGRlcihz
ZWxmKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9idWlsZGJvdF91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWlsZGJvdF91bml0dGVzdC5weQppbmRleCA1N2EwYzhmMDg0ZDM5Y2FhNGE1NzVj
ZmZmYzg4ZTU5OTI3Mjk2NDM0Li5hZmM5YTM5YTllNzEyOWM2NzJlNTE5NmY5NDYyYmQ4YmJiMmUy
NDNhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
YnVpbGRib3RfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2J1aWxkYm90X3VuaXR0ZXN0LnB5CkBAIC00MSwxMCArNDEsOCBAQCBjbGFzcyBC
dWlsZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgcmV2aXNpb249
YnVpbGRfbnVtYmVyICsgMTAwMCwKICAgICAgICAgICAgICAgICBpc19ncmVlbj1idWlsZF9udW1i
ZXIgPCA0CiAgICAgICAgICAgICApCi0gICAgICAgICAgICBidWlsZC5fbGF5b3V0X3Rlc3RfcmVz
dWx0cyA9IExheW91dFRlc3RSZXN1bHRzKAotICAgICAgICAgICAgICAgICJodHRwOi8vYnVpbGRi
b3QuZXhhbXBsZS5jb20vZm9vIiwgewotICAgICAgICAgICAgICAgICAgICBMYXlvdXRUZXN0UmVz
dWx0cy5mYWlsX2tleTogZmFpbHVyZShidWlsZF9udW1iZXIpLAotICAgICAgICAgICAgICAgIH0p
CisgICAgICAgICAgICBwYXJzZWRfcmVzdWx0cyA9IHtMYXlvdXRUZXN0UmVzdWx0cy5mYWlsX2tl
eTogZmFpbHVyZShidWlsZF9udW1iZXIpfQorICAgICAgICAgICAgYnVpbGQuX2xheW91dF90ZXN0
X3Jlc3VsdHMgPSBMYXlvdXRUZXN0UmVzdWx0cyhwYXJzZWRfcmVzdWx0cykKICAgICAgICAgICAg
IHJldHVybiBidWlsZAogICAgICAgICBzZWxmLmJ1aWxkZXIuX2ZldGNoX2J1aWxkID0gX21vY2tf
ZmV0Y2hfYnVpbGQKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CmluZGV4IDVhYjgyOTI3MjFjZTA3
YTE0ZmU3MTI1MGJjYzY0NmU0N2MxMDljOGQuLmViNWVhN2RiZDM2MzlmZTZmNWNjZjgyZTcxYjQ3
ZmI1MTYwZjBhMzAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKQEAgLTM0LDYgKzM0LDggQEAg
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNv
dXAsIFNvdXBTdHJhaW5lcgogIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdW5pZmllZCB3aXRoIGFs
bCB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0cyBjb2RlIGluIHRoZSBsYXlvdXRfdGVzdHMgcGFja2Fn
ZQogIyBUaGlzIGRvZXNuJ3QgYmVsb25nIGluIGNvbW1vbi5uZXQsIGJ1dCB3ZSBkb24ndCBoYXZl
IGEgYmV0dGVyIHBsYWNlIGZvciBpdCB5ZXQuCiBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0cyhvYmpl
Y3QpOgorICAgICIiIlRoaXMgY2xhc3Mga25vd3MgaG93IHRvIHBhcnNlIG9sZC1ydW4td2Via2l0
LXRlc3RzIHJlc3VsdHMuaHRtbCBmaWxlcy4iIiIKKwogICAgIHN0ZGVycl9rZXkgPSB1J1Rlc3Rz
IHRoYXQgaGFkIHN0ZGVyciBvdXRwdXQ6JwogICAgIGZhaWxfa2V5ID0gdSdUZXN0cyB3aGVyZSBy
ZXN1bHRzIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgcmVzdWx0czonCiAgICAgdGltZW91dF9rZXkg
PSB1J1Rlc3RzIHRoYXQgdGltZWQgb3V0OicKQEAgLTYyLDI3ICs2NCwxNCBAQCBjbGFzcyBMYXlv
dXRUZXN0UmVzdWx0cyhvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBwYXJzZWRfcmVzdWx0cwog
Ci0gICAgIyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGRuJ3Qga25vdyBob3cgdG8gZmV0Y2ggZnJv
bSB0aGUgbmV0d29yay4KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX2ZldGNoX3Jlc3VsdHNf
aHRtbChjbHMsIGJhc2VfdXJsKToKLSAgICAgICAgcmVzdWx0c19odG1sID0gIiVzL3Jlc3VsdHMu
aHRtbCIgJSBiYXNlX3VybAotICAgICAgICAjIEZJWE1FOiBXZSBuZWVkIHRvIG1vdmUgdGhpcyBz
b3J0IG9mIDQwNCBsb2dpYyBpbnRvIE5ldHdvcmtUcmFuc2FjdGlvbiBvciBzaW1pbGFyLgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBwYWdlID0gdXJsbGliMi51cmxvcGVuKHJlc3VsdHNfaHRt
bCkKLSAgICAgICAgICAgIHJldHVybiBjbHMuX3BhcnNlX3Jlc3VsdHNfaHRtbChwYWdlKQotICAg
ICAgICBleGNlcHQgdXJsbGliMi5IVFRQRXJyb3IsIGVycm9yOgotICAgICAgICAgICAgaWYgZXJy
b3IuY29kZSAhPSA0MDQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQogICAgIEBjbGFzc21ldGhv
ZAotICAgIGRlZiByZXN1bHRzX2Zyb21fdXJsKGNscywgYmFzZV91cmwpOgotICAgICAgICBwYXJz
ZWRfcmVzdWx0cyA9IGNscy5fZmV0Y2hfcmVzdWx0c19odG1sKGJhc2VfdXJsKQorICAgIGRlZiBy
ZXN1bHRzX2Zyb21fc3RyaW5nKGNscywgc3RyaW5nKToKKyAgICAgICAgcGFyc2VkX3Jlc3VsdHMg
PSBjbHMuX3BhcnNlX3Jlc3VsdHNfaHRtbChzdHJpbmcpCiAgICAgICAgIGlmIG5vdCBwYXJzZWRf
cmVzdWx0czoKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBjbHMoYmFz
ZV91cmwsIHBhcnNlZF9yZXN1bHRzKQorICAgICAgICByZXR1cm4gY2xzKHBhcnNlZF9yZXN1bHRz
KQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhc2VfdXJsLCBwYXJzZWRfcmVzdWx0cyk6Ci0g
ICAgICAgIHNlbGYuX2Jhc2VfdXJsID0gYmFzZV91cmwKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
cGFyc2VkX3Jlc3VsdHMpOgogICAgICAgICBzZWxmLl9wYXJzZWRfcmVzdWx0cyA9IHBhcnNlZF9y
ZXN1bHRzCiAKICAgICBkZWYgcGFyc2VkX3Jlc3VsdHMoc2VsZik6CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0
dGVzdHJlc3VsdHNfdW5pdHRlc3QucHkKaW5kZXggMDM0ODQ4ZTM2ZDY2MGUyZmU2ZDk2YjY2NDIz
ZWM0MTNiMWI3MWRjOS4uNDRlNGRiYzViYmExMjFmNTAxYTM5Y2VlMzlhNDhmMDk3MThkNWJjZiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91
dHRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0c191bml0dGVzdC5weQpAQCAtNjksMyArNjks
OCBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
IGRlZiB0ZXN0X3BhcnNlX2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHJlc3Vs
dHMgPSBMYXlvdXRUZXN0UmVzdWx0cy5fcGFyc2VfcmVzdWx0c19odG1sKHNlbGYuX2V4YW1wbGVf
cmVzdWx0c19odG1sKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2V4cGVjdGVkX2xh
eW91dF90ZXN0X3Jlc3VsdHMsIHJlc3VsdHMpCisKKyAgICBkZWYgdGVzdF9yZXN1bHRzX2Zyb21f
c3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExheW91dFRlc3RSZXN1bHRz
LnJlc3VsdHNfZnJvbV9zdHJpbmcoIiIpLCBOb25lKQorICAgICAgICByZXN1bHRzID0gTGF5b3V0
VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyhzZWxmLl9leGFtcGxlX3Jlc3VsdHNfaHRt
bCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkp
LCAwKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9j
b21taXRxdWV1ZXRhc2sucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2NvbW1pdHF1ZXVldGFzay5weQppbmRleCBhNWMyY2EyMTY4N2E1N2QwMGVmZTMyNTUyNmQ3OWFj
YTYwMzVlMzU1Li4wMmUyMDNjNTI2YTkzZjZkZGI3YjI5OWUwZjI5OTMwMTcwNzhiN2NjIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVl
dGFzay5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1p
dHF1ZXVldGFzay5weQpAQCAtMjcsMTkgKzI3LDM5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRlc3RS
ZXN1bHRzCisKKworY2xhc3MgQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUob2JqZWN0KToKKyAgICBk
ZWYgcnVuX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQorCisgICAgZGVmIGNvbW1hbmRf
cGFzc2VkKHNlbGYsIG1lc3NhZ2UsIHBhdGNoKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCisKKyAgICBkZWYgY29tbWFuZF9m
YWlsZWQoc2VsZiwgbWVzc2FnZSwgc2NyaXB0X2Vycm9yLCBwYXRjaCk6CisgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQorCisgICAg
ZGVmIHJlZmV0Y2hfcGF0Y2goc2VsZiwgcGF0Y2gpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKKworICAgIGRlZiBsYXlvdXRf
dGVzdF9yZXN1bHRzKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJz
dWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKKworICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMo
c2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3RzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCiAKIAogY2xhc3MgQ29tbWl0UXVldWVU
YXNrKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvb2wsIGNvbW1pdF9xdWV1ZSwg
cGF0Y2gpOgotICAgICAgICBzZWxmLl90b29sID0gdG9vbAotICAgICAgICBzZWxmLl9jb21taXRf
cXVldWUgPSBjb21taXRfcXVldWUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGVsZWdhdGUsIHBh
dGNoKToKKyAgICAgICAgc2VsZi5fZGVsZWdhdGUgPSBkZWxlZ2F0ZQogICAgICAgICBzZWxmLl9w
YXRjaCA9IHBhdGNoCiAgICAgICAgIHNlbGYuX3NjcmlwdF9lcnJvciA9IE5vbmUKIAogICAgIGRl
ZiBfdmFsaWRhdGUoc2VsZik6CiAgICAgICAgICMgQnVncyBtaWdodCBnZXQgY2xvc2VkLCBvciBw
YXRjaGVzIG1pZ2h0IGJlIG9ic29sZXRlZCBvciByLSdkIHdoaWxlIHRoZQogICAgICAgICAjIGNv
bW1pdC1xdWV1ZSBpcyBwcm9jZXNzaW5nLgotICAgICAgICBzZWxmLl9wYXRjaCA9IHNlbGYuX3Rv
b2wuYnVncy5mZXRjaF9hdHRhY2htZW50KHNlbGYuX3BhdGNoLmlkKCkpCisgICAgICAgIHNlbGYu
X3BhdGNoID0gc2VsZi5fZGVsZWdhdGUucmVmZXRjaF9wYXRjaChzZWxmLl9wYXRjaCkKICAgICAg
ICAgaWYgc2VsZi5fcGF0Y2guaXNfb2Jzb2xldGUoKToKICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQogICAgICAgICBpZiBzZWxmLl9wYXRjaC5idWcoKS5pc19jbG9zZWQoKToKQEAgLTUyLDEyICs3
MiwxMiBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0KToKIAogICAgIGRlZiBfcnVuX2Nv
bW1hbmQoc2VsZiwgY29tbWFuZCwgc3VjY2Vzc19tZXNzYWdlLCBmYWlsdXJlX21lc3NhZ2UpOgog
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9jb21taXRfcXVldWUucnVuX3dlYmtpdF9w
YXRjaChjb21tYW5kKQotICAgICAgICAgICAgc2VsZi5fY29tbWl0X3F1ZXVlLmNvbW1hbmRfcGFz
c2VkKHN1Y2Nlc3NfbWVzc2FnZSwgcGF0Y2g9c2VsZi5fcGF0Y2gpCisgICAgICAgICAgICBzZWxm
Ll9kZWxlZ2F0ZS5ydW5fY29tbWFuZChjb21tYW5kKQorICAgICAgICAgICAgc2VsZi5fZGVsZWdh
dGUuY29tbWFuZF9wYXNzZWQoc3VjY2Vzc19tZXNzYWdlLCBwYXRjaD1zZWxmLl9wYXRjaCkKICAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKICAg
ICAgICAgICAgIHNlbGYuX3NjcmlwdF9lcnJvciA9IGUKLSAgICAgICAgICAgIHNlbGYuZmFpbHVy
ZV9zdGF0dXNfaWQgPSBzZWxmLl9jb21taXRfcXVldWUuY29tbWFuZF9mYWlsZWQoZmFpbHVyZV9t
ZXNzYWdlLCBzY3JpcHRfZXJyb3I9c2VsZi5fc2NyaXB0X2Vycm9yLCBwYXRjaD1zZWxmLl9wYXRj
aCkKKyAgICAgICAgICAgIHNlbGYuZmFpbHVyZV9zdGF0dXNfaWQgPSBzZWxmLl9kZWxlZ2F0ZS5j
b21tYW5kX2ZhaWxlZChmYWlsdXJlX21lc3NhZ2UsIHNjcmlwdF9lcnJvcj1zZWxmLl9zY3JpcHRf
ZXJyb3IsIHBhdGNoPXNlbGYuX3BhdGNoKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAg
ICBkZWYgX2FwcGx5KHNlbGYpOgpAQCAtMTE5LDYgKzEzOSwxMiBAQCBjbGFzcyBDb21taXRRdWV1
ZVRhc2sob2JqZWN0KToKICAgICAgICAgIkFibGUgdG8gcGFzcyB0ZXN0cyB3aXRob3V0IHBhdGNo
IiwKICAgICAgICAgIlVuYWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQgcGF0Y2ggKHRyZWUgaXMg
cmVkPykiKQogCisgICAgZGVmIF9mYWlsaW5nX3Rlc3RzX2Zyb21fbGFzdF9ydW4oc2VsZik6Cisg
ICAgICAgIHJlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS5sYXlvdXRfdGVzdF9yZXN1bHRzKCkKKyAg
ICAgICAgaWYgbm90IHJlc3VsdHM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBy
ZXR1cm4gcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkKKwogICAgIGRlZiBfbGFuZChzZWxmKToKICAg
ICAgICAgcmV0dXJuIHNlbGYuX3J1bl9jb21tYW5kKFsKICAgICAgICAgICAgICJsYW5kLWF0dGFj
aG1lbnQiLApAQCAtMTMyLDYgKzE1OCwyOSBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0
KToKICAgICAgICAgIkxhbmRlZCBwYXRjaCIsCiAgICAgICAgICJVbmFibGUgdG8gbGFuZCBwYXRj
aCIpCiAKKyAgICBkZWYgX3JlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBmbGFreV90ZXN0cyk6Cisg
ICAgICAgIHNlbGYuX2RlbGVnYXRlLnJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLl9wYXRjaCwgZmxh
a3lfdGVzdHMpCisKKyAgICBkZWYgX3Rlc3RfcGF0Y2goc2VsZik6CisgICAgICAgIGlmIHNlbGYu
X3BhdGNoLmlzX3JvbGxvdXQoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlm
IHNlbGYuX3Rlc3QoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgZmlyc3Rf
ZmFpbGluZ190ZXN0cyA9IHNlbGYuX2ZhaWxpbmdfdGVzdHNfZnJvbV9sYXN0X3J1bigpCisgICAg
ICAgIGlmIHNlbGYuX3Rlc3QoKToKKyAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9mbGFreV90ZXN0
cyhmaXJzdF9mYWlsaW5nX3Rlc3RzKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAg
ICBzZWNvbmRfZmFpbGluZ190ZXN0cyA9IHNlbGYuX2ZhaWxpbmdfdGVzdHNfZnJvbV9sYXN0X3J1
bigpCisgICAgICAgIGlmIGZpcnN0X2ZhaWxpbmdfdGVzdHMgIT0gc2Vjb25kX2ZhaWxpbmdfdGVz
dHM6CisgICAgICAgICAgICBzZWxmLl9yZXBvcnRfZmxha3lfdGVzdHMoZmlyc3RfZmFpbGluZ190
ZXN0cyArIHNlY29uZF9mYWlsaW5nX3Rlc3RzKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisK
KyAgICAgICAgaWYgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpOgorICAgICAg
ICAgICAgcmFpc2Ugc2VsZi5fc2NyaXB0X2Vycm9yICAjIFRoZSBlcnJvciBmcm9tIHRoZSBwcmV2
aW91cyAuX3Rlc3QoKSBydW4gaXMgcmVhbCwgcmVwb3J0IGl0LgorICAgICAgICByZXR1cm4gRmFs
c2UgICMgVHJlZSBtdXN0IGJlIHJlZCwganVzdCByZXRyeSBsYXRlci4KKwogICAgIGRlZiBydW4o
c2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl92YWxpZGF0ZSgpOgogICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCkBAIC0xNDEsMTIgKzE5MCw4IEBAIGNsYXNzIENvbW1pdFF1ZXVlVGFzayhvYmpl
Y3QpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2J1aWxkX3dpdGhvdXRfcGF0Y2goKToKICAg
ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3Njcmlw
dF9lcnJvcgotICAgICAgICBpZiBub3Qgc2VsZi5fcGF0Y2guaXNfcm9sbG91dCgpOgotICAgICAg
ICAgICAgaWYgbm90IHNlbGYuX3Rlc3QoKToKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5f
dGVzdCgpOgotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rf
d2l0aG91dF9wYXRjaCgpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3NjcmlwdF9lcnJvcgorICAgICAgICBpZiBu
b3Qgc2VsZi5fdGVzdF9wYXRjaCgpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAg
ICMgTWFrZSBzdXJlIHRoZSBwYXRjaCBpcyBzdGlsbCB2YWxpZCBiZWZvcmUgbGFuZGluZyAoZS5n
LiwgbWFrZSBzdXJlCiAgICAgICAgICMgbm8gb25lIGhhcyBzZXQgY29tbWl0LXF1ZXVlLSBzaW5j
ZSB3ZSBzdGFydGVkIHdvcmtpbmcgb24gdGhlIHBhdGNoLikKICAgICAgICAgaWYgbm90IHNlbGYu
X3ZhbGlkYXRlKCk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CmluZGV4IDM4YzQ3
NDc2N2NmYmE4MmFmZTY4NDhlMTkzZjQ2ZWZjODkzMDZiNWEuLjZmYTA2NjcyZWI3MzhmYzZjZjUz
M2U1Mjk4ZThiYTMwZjc3MGRhMjQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5
CkBAIC0zNiwxMSArMzYsMTEgQEAgZnJvbSB3ZWJraXRweS50b29sLmJvdC5jb21taXRxdWV1ZXRh
c2sgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wK
IAogCi1jbGFzcyBNb2NrQ29tbWl0UXVldWU6CitjbGFzcyBNb2NrQ29tbWl0UXVldWUoQ29tbWl0
UXVldWVUYXNrRGVsZWdhdGUpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcl9wbGFuKToK
ICAgICAgICAgc2VsZi5fZXJyb3JfcGxhbiA9IGVycm9yX3BsYW4KIAotICAgIGRlZiBydW5fd2Vi
a2l0X3BhdGNoKHNlbGYsIGNvbW1hbmQpOgorICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBjb21t
YW5kKToKICAgICAgICAgbG9nKCJydW5fd2Via2l0X3BhdGNoOiAlcyIgJSBjb21tYW5kKQogICAg
ICAgICBpZiBzZWxmLl9lcnJvcl9wbGFuOgogICAgICAgICAgICAgZXJyb3IgPSBzZWxmLl9lcnJv
cl9wbGFuLnBvcCgwKQpAQCAtNTYsMTIgKzU2LDIxIEBAIGNsYXNzIE1vY2tDb21taXRRdWV1ZToK
ICAgICAgICAgICAgIGZhaWx1cmVfbWVzc2FnZSwgc2NyaXB0X2Vycm9yLCBwYXRjaC5pZCgpKSkK
ICAgICAgICAgcmV0dXJuIDM5NDcKIAorICAgIGRlZiByZWZldGNoX3BhdGNoKHNlbGYsIHBhdGNo
KToKKyAgICAgICAgcmV0dXJuIHBhdGNoCisKKyAgICBkZWYgbGF5b3V0X3Rlc3RfcmVzdWx0cyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMo
c2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3RzKToKKyAgICAgICAgbG9nKCJyZXBvcnRfZmxha3lfdGVz
dHM6IHBhdGNoPSclcycgZmxha3lfdGVzdHM9JyVzJyIgJSAocGF0Y2guaWQoKSwgZmxha3lfdGVz
dHMpKQorCiAKIGNsYXNzIENvbW1pdFF1ZXVlVGFza1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgIGRlZiBfcnVuX3Rocm91Z2hfdGFzayhzZWxmLCBjb21taXRfcXVldWUsIGV4cGVjdGVkX3N0
ZGVyciwgZXhwZWN0ZWRfZXhjZXB0aW9uPU5vbmUpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2wo
bG9nX2V4ZWN1dGl2ZT1UcnVlKQogICAgICAgICBwYXRjaCA9IHRvb2wuYnVncy5mZXRjaF9hdHRh
Y2htZW50KDE5NykKLSAgICAgICAgdGFzayA9IENvbW1pdFF1ZXVlVGFzayh0b29sLCBjb21taXRf
cXVldWUsIHBhdGNoKQorICAgICAgICB0YXNrID0gQ29tbWl0UXVldWVUYXNrKGNvbW1pdF9xdWV1
ZSwgcGF0Y2gpCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCB0
YXNrLnJ1biwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfZXhjZXB0
aW9uPWV4cGVjdGVkX2V4Y2VwdGlvbikKIAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfY2FzZShzZWxm
KToKQEAgLTEyOSw2ICsxMzgsNyBAQCBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0
JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tcQogY29tbWFuZF9m
YWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0
X2Vycm9yPSdNT0NLIHRlc3RzIGZhaWx1cmUnIHBhdGNoPScxOTcnCiBydW5fd2Via2l0X3BhdGNo
OiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0
JywgJy0tcXVpZXQnLCAnLS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nl
c3NfbWVzc2FnZT0nUGFzc2VkIHRlc3RzJyBwYXRjaD0nMTk3JworcmVwb3J0X2ZsYWt5X3Rlc3Rz
OiBwYXRjaD0nMTk3JyBmbGFreV90ZXN0cz0nTm9uZScKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnbGFu
ZC1hdHRhY2htZW50JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1pZ25vcmUtYnVpbGRlcnMnLCAnLS1x
dWlldCcsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLXBhcmVudC1jb21tYW5kPWNvbW1pdC1xdWV1
ZScsIDE5N10KIGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0xhbmRlZCBwYXRjaCcg
cGF0Y2g9JzE5NycKICIiIgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKaW5kZXggNGUwMGUzZTQ1MjRiMDQ1Njg3ZWJhYjY5MDRi
NDIzZThkNWJmZGVkOC4uYTYxMmY3YTlhYWZhZmNmZDdjNzhlY2I0ZWU1YWRmMTA0NGVmYTI3NCAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1
ZXVlcy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzLnB5CkBAIC00MCw3ICs0MCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5zdGF0
dXNzZXJ2ZXIgaW1wb3J0IFN0YXR1c1NlcnZlcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGVycm9yLCBsb2cKIGZyb20gd2Via2l0cHkudG9v
bC5jb21tYW5kcy5zdGVwc2VxdWVuY2UgaW1wb3J0IFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcgot
ZnJvbSB3ZWJraXRweS50b29sLmJvdC5jb21taXRxdWV1ZXRhc2sgaW1wb3J0IENvbW1pdFF1ZXVl
VGFzaworZnJvbSB3ZWJraXRweS50b29sLmJvdC5jb21taXRxdWV1ZXRhc2sgaW1wb3J0IENvbW1p
dFF1ZXVlVGFzaywgQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUKIGZyb20gd2Via2l0cHkudG9vbC5i
b3QuZmVlZGVycyBpbXBvcnQgQ29tbWl0UXVldWVGZWVkZXIKIGZyb20gd2Via2l0cHkudG9vbC5i
b3QucGF0Y2hjb2xsZWN0aW9uIGltcG9ydCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0aW9uLCBQZXJz
aXN0ZW50UGF0Y2hDb2xsZWN0aW9uRGVsZWdhdGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucXVl
dWVlbmdpbmUgaW1wb3J0IFF1ZXVlRW5naW5lLCBRdWV1ZUVuZ2luZURlbGVnYXRlCkBAIC0yMTEs
NyArMjExLDcgQEAgY2xhc3MgQWJzdHJhY3RQYXRjaFF1ZXVlKEFic3RyYWN0UXVldWUpOgogICAg
ICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuX2xvZ19kaXJlY3RvcnkoKSwgIiVzLmxvZyIg
JSBwYXRjaC5idWdfaWQoKSkKIAogCi1jbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVl
dWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcik6CitjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFj
dFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlciwgQ29tbWl0UXVldWVUYXNrRGVs
ZWdhdGUpOgogICAgIG5hbWUgPSAiY29tbWl0LXF1ZXVlIgogCiAgICAgIyBBYnN0cmFjdFBhdGNo
UXVldWUgbWV0aG9kcwpAQCAtMjMzLDcgKzIzMyw3IEBAIGNsYXNzIENvbW1pdFF1ZXVlKEFic3Ry
YWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyKToKIAogICAgIGRlZiBwcm9j
ZXNzX3dvcmtfaXRlbShzZWxmLCBwYXRjaCk6CiAgICAgICAgIHNlbGYuX2NjX3dhdGNoZXJzKHBh
dGNoLmJ1Z19pZCgpKQotICAgICAgICB0YXNrID0gQ29tbWl0UXVldWVUYXNrKHNlbGYuX3Rvb2ws
IHNlbGYsIHBhdGNoKQorICAgICAgICB0YXNrID0gQ29tbWl0UXVldWVUYXNrKHNlbGYsIHBhdGNo
KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiB0YXNrLnJ1bigpOgogICAgICAgICAgICAg
ICAgIHNlbGYuX2RpZF9wYXNzKHBhdGNoKQpAQCAtMjQ0LDkgKzI0NCwyMCBAQCBjbGFzcyBDb21t
aXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcik6CiAg
ICAgICAgICAgICB2YWxpZGF0b3IucmVqZWN0X3BhdGNoX2Zyb21fY29tbWl0X3F1ZXVlKHBhdGNo
LmlkKCksIHNlbGYuX2Vycm9yX21lc3NhZ2VfZm9yX2J1Zyh0YXNrLmZhaWx1cmVfc3RhdHVzX2lk
LCBlKSkKICAgICAgICAgICAgIHNlbGYuX2RpZF9mYWlsKHBhdGNoKQogCisgICAgZGVmIF9lcnJv
cl9tZXNzYWdlX2Zvcl9idWcoc2VsZiwgc3RhdHVzX2lkLCBzY3JpcHRfZXJyb3IpOgorICAgICAg
ICBpZiBub3Qgc2NyaXB0X2Vycm9yLm91dHB1dDoKKyAgICAgICAgICAgIHJldHVybiBzY3JpcHRf
ZXJyb3IubWVzc2FnZV93aXRoX291dHB1dCgpCisgICAgICAgIHJlc3VsdHNfbGluayA9IHNlbGYu
X3Rvb2wuc3RhdHVzX3NlcnZlci5yZXN1bHRzX3VybF9mb3Jfc3RhdHVzKHN0YXR1c19pZCkKKyAg
ICAgICAgcmV0dXJuICIlc1xuRnVsbCBvdXRwdXQ6ICVzIiAlIChzY3JpcHRfZXJyb3IubWVzc2Fn
ZV93aXRoX291dHB1dCgpLCByZXN1bHRzX2xpbmspCisKICAgICBkZWYgaGFuZGxlX3VuZXhwZWN0
ZWRfZXJyb3Ioc2VsZiwgcGF0Y2gsIG1lc3NhZ2UpOgogICAgICAgICBzZWxmLmNvbW1pdHRlcl92
YWxpZGF0b3IucmVqZWN0X3BhdGNoX2Zyb21fY29tbWl0X3F1ZXVlKHBhdGNoLmlkKCksIG1lc3Nh
Z2UpCiAKKyAgICAjIENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlIG1ldGhvZHMKKworICAgIGRlZiBy
dW5fY29tbWFuZChzZWxmLCBjb21tYW5kKToKKyAgICAgICAgc2VsZi5ydW5fd2Via2l0X3BhdGNo
KGNvbW1hbmQpCisKICAgICBkZWYgY29tbWFuZF9wYXNzZWQoc2VsZiwgbWVzc2FnZSwgcGF0Y2gp
OgogICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKG1lc3NhZ2UsIHBhdGNoPXBhdGNoKQogCkBA
IC0yNTQsMTEgKzI2NSwyMiBAQCBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUs
IFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcik6CiAgICAgICAgIGZhaWx1cmVfbG9nID0gc2VsZi5f
bG9nX2Zyb21fc2NyaXB0X2Vycm9yX2Zvcl91cGxvYWQoc2NyaXB0X2Vycm9yKQogICAgICAgICBy
ZXR1cm4gc2VsZi5fdXBkYXRlX3N0YXR1cyhtZXNzYWdlLCBwYXRjaD1wYXRjaCwgcmVzdWx0c19m
aWxlPWZhaWx1cmVfbG9nKQogCi0gICAgZGVmIF9lcnJvcl9tZXNzYWdlX2Zvcl9idWcoc2VsZiwg
c3RhdHVzX2lkLCBzY3JpcHRfZXJyb3IpOgotICAgICAgICBpZiBub3Qgc2NyaXB0X2Vycm9yLm91
dHB1dDoKLSAgICAgICAgICAgIHJldHVybiBzY3JpcHRfZXJyb3IubWVzc2FnZV93aXRoX291dHB1
dCgpCi0gICAgICAgIHJlc3VsdHNfbGluayA9IHNlbGYuX3Rvb2wuc3RhdHVzX3NlcnZlci5yZXN1
bHRzX3VybF9mb3Jfc3RhdHVzKHN0YXR1c19pZCkKLSAgICAgICAgcmV0dXJuICIlc1xuRnVsbCBv
dXRwdXQ6ICVzIiAlIChzY3JpcHRfZXJyb3IubWVzc2FnZV93aXRoX291dHB1dCgpLCByZXN1bHRz
X2xpbmspCisgICAgIyBGSVhNRTogVGhpcyBtYXkgYmVsb25nIG9uIHRoZSBQb3J0IG9iamVjdC4K
KyAgICBkZWYgbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgcmVzdWx0c19wYXRo
ID0gc2VsZi5fdG9vbC5wb3J0KCkubGF5b3V0X3Rlc3RfcmVzdWx0c19wYXRoKCkKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgIyBGSVhNRTogV2UgbmVlZCBhIG5pY2Ugb3BlbigpIGFic3RyYWN0
aW9uIGZvciBiZXR0ZXIgbW9ja2luZyBoZXJlLgorICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3Bl
bihyZXN1bHRzX3BhdGgsICJyIiwgInV0Zi04IikgYXMgcmVzdWx0c19maWxlOgorICAgICAgICAg
ICAgICAgIHJldHVybiBMYXlvdXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKHJlc3Vs
dHNfZmlsZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6ICAjIEZpbGUgZG9lcyBub3QgZXhp
c3Qgb3IgY2FuJ3QgYmUgcmVhZC4KKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYg
cmVmZXRjaF9wYXRjaChzZWxmLCBwYXRjaCk6CisgICAgICAgIHJldHVybiBzZWxmLl90b29sLmJ1
Z3MuZmV0Y2hfYXR0YWNobWVudChwYXRjaC5pZCgpKQorCisgICAgZGVmIHJlcG9ydF9mbGFreV90
ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfdGVzdHMpOgorICAgICAgICBtZXNzYWdlID0gIlRoZSAl
cyBlbmNvdW50ZXJlZCB0aGUgZm9sbG93aW5nIGZsYWt5IHRlc3RzIHdoaWxlIHByb2Nlc3Npbmcg
YXR0YWNobWVudCAlczpcblxuJXNcblxuUGxlYXNlIGZpbGUgYnVncyBhZ2FpbnN0IHRoZSB0ZXN0
cy4gIFRoZSBjb21taXQtcXVldWUgaXMgY29udGludWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2gu
IiAlIChzZWxmLm5hbWUsIHBhdGNoLmlkKCksIGZsYWt5X3Rlc3RzKQorICAgICAgICBzZWxmLl90
b29sLmJ1Z3MucG9zdF9jb21tZW50X3RvX2J1ZyhwYXRjaC5idWdfaWQoKSwgbWVzc2FnZSwgY2M9
c2VsZi53YXRjaGVycykKIAogICAgICMgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyIG1ldGhvZHMK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3F1ZXVlc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKaW5kZXggZDY4MDA5ODEzNmIwMmQzYzk5OGU5MDhm
Njc5YjYxMjM4YjA3N2VhYS4uYzhmNjNlYzIxOTIzNGI1MzllNzI2NjI2OTJiMjFjNGEyYzZjOTAy
MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3F1ZXVlc191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CkBAIC0xODMsNyArMTgzLDIwIEBAIGNsYXNz
IEFsd2F5c0NvbW1pdFF1ZXVlVG9vbChvYmplY3QpOgogCiAKIGNsYXNzIFNlY29uZFRob3VnaHRz
Q29tbWl0UXVldWUoQ29tbWl0UXVldWUpOgotICAgIGRlZiBfYnVpbGRfYW5kX3Rlc3RfcGF0Y2go
c2VsZiwgcGF0Y2gsIGZpcnN0X3J1bj1UcnVlKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6Cisg
ICAgICAgIHNlbGYuX3JlamVjdF9wYXRjaCA9IEZhbHNlCisgICAgICAgIENvbW1pdFF1ZXVlLl9f
aW5pdF9fKHNlbGYpCisKKyAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6CisgICAg
ICAgICMgV2Ugd2FudCB0byByZWplY3QgdGhlIHBhdGNoIGFmdGVyIHRoZSBmaXJzdCB2YWxpZGF0
aW9uLAorICAgICAgICAjIHNvIHdhaXQgdG8gcmVqZWN0IGl0IHVudGlsIGFmdGVyIHNvbWUgb3Ro
ZXIgY29tbWFuZCBoYXMgcnVuLgorICAgICAgICBzZWxmLl9yZWplY3RfcGF0Y2ggPSBUcnVlCisg
ICAgICAgIHJldHVybiBDb21taXRRdWV1ZS5ydW5fY29tbWFuZChzZWxmLCBjb21tYW5kKQorCisg
ICAgZGVmIHJlZmV0Y2hfcGF0Y2goc2VsZiwgcGF0Y2gpOgorICAgICAgICBpZiBub3Qgc2VsZi5f
cmVqZWN0X3BhdGNoOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Rvb2wuYnVncy5mZXRjaF9h
dHRhY2htZW50KHBhdGNoLmlkKCkpCisKICAgICAgICAgYXR0YWNobWVudF9kaWN0aW9uYXJ5ID0g
ewogICAgICAgICAgICAgImlkIjogcGF0Y2guaWQoKSwKICAgICAgICAgICAgICJidWdfaWQiOiBw
YXRjaC5idWdfaWQoKSwKQEAgLTE5Niw5ICsyMDksNyBAQCBjbGFzcyBTZWNvbmRUaG91Z2h0c0Nv
bW1pdFF1ZXVlKENvbW1pdFF1ZXVlKToKICAgICAgICAgICAgICJjb21taXR0ZXJfZW1haWwiOiAi
Zm9vQGJhci5jb20iLAogICAgICAgICAgICAgImF0dGFjaGVyX2VtYWlsIjogIkNvbnRyaWJ1dGVy
MSIsCiAgICAgICAgIH0KLSAgICAgICAgcGF0Y2ggPSBBdHRhY2htZW50KGF0dGFjaG1lbnRfZGlj
dGlvbmFyeSwgTm9uZSkKLSAgICAgICAgc2VsZi5fdG9vbC5idWdzLnNldF9vdmVycmlkZV9wYXRj
aChwYXRjaCkKLSAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEF0dGFjaG1lbnQo
YXR0YWNobWVudF9kaWN0aW9uYXJ5LCBOb25lKQogCiAKIGNsYXNzIENvbW1pdFF1ZXVlVGVzdChR
dWV1ZXNUZXN0KToKQEAgLTMwNiwxMSArMzE3LDI1IEBAIE1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNv
bW1pdC1xdWV1ZSBQYXNzCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0s6IHVwZGF0
ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBBcHBsaWVkIHBhdGNoCiBNT0NLOiB1cGRhdGVfc3RhdHVz
OiBjb21taXQtcXVldWUgQnVpbHQgcGF0Y2gKIE1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1x
dWV1ZSBQYXNzZWQgdGVzdHMKLU1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBMYW5k
ZWQgcGF0Y2gKLU1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBQYXNzCitNT0NLOiB1
cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgUmV0cnkKICIiIgogICAgICAgICBPdXRwdXRDYXB0
dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcXVldWUucHJvY2Vzc193b3JrX2l0ZW0sIFtNb2Nr
UGF0Y2goKV0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKKyAgICBkZWYgdGVz
dF9yZXBvcnRfZmxha3lfdGVzdHMoc2VsZik6CisgICAgICAgIHF1ZXVlID0gQ29tbWl0UXVldWUo
KQorICAgICAgICBxdWV1ZS5iaW5kX3RvX3Rvb2woTW9ja1Rvb2woKSkKKyAgICAgICAgZXhwZWN0
ZWRfc3RkZXJyID0gIiIiTU9DSyBidWcgY29tbWVudDogYnVnX2lkPTE0MiwgY2M9W10KKy0tLSBC
ZWdpbiBjb21tZW50IC0tLQorVGhlIGNvbW1pdC1xdWV1ZSBlbmNvdW50ZXJlZCB0aGUgZm9sbG93
aW5nIGZsYWt5IHRlc3RzIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNobWVudCAxOTc6CisKK1snZm9v
L2Jhci5odG1sJywgJ2Jhci9iYXouaHRtbCddCisKK1BsZWFzZSBmaWxlIGJ1Z3MgYWdhaW5zdCB0
aGUgdGVzdHMuICBUaGUgY29tbWl0LXF1ZXVlIGlzIGNvbnRpbnVpbmcgdG8gcHJvY2VzcyB5b3Vy
IHBhdGNoLgorLS0tIEVuZCBjb21tZW50IC0tLQorCisiIiIKKyAgICAgICAgT3V0cHV0Q2FwdHVy
ZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLnJlcG9ydF9mbGFreV90ZXN0cywgW01vY2tQ
YXRjaCgpLCBbImZvby9iYXIuaHRtbCIsICJiYXIvYmF6Lmh0bWwiXV0sIGV4cGVjdGVkX3N0ZGVy
cj1leHBlY3RlZF9zdGRlcnIpCisKIAogY2xhc3MgUmlldHZlbGRVcGxvYWRRdWV1ZVRlc3QoUXVl
dWVzVGVzdCk6CiAgICAgZGVmIHRlc3RfcmlldHZlbGRfdXBsb2FkX3F1ZXVlKHNlbGYpOgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weQppbmRleCA3MjFiZjU5ZTA0Y2Fm
YjY1MGJlYzBkODZiYTY3MmE3MGQ4YTAwYmYxLi5jZTY2NjZlMjIwODU3YWI5ZTgyYjJiMjZlNzhm
YjY3YTg3Y2ZjZTYwIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvbWFpbi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5w
eQpAQCAtMzQsNiArMzQsNyBAQCBpbXBvcnQgdGhyZWFkaW5nCiAKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNoZWNrb3V0LmFwaSBpbXBvcnQgQ2hlY2tvdXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmNo
ZWNrb3V0LnNjbSBpbXBvcnQgZGVmYXVsdF9zY20KK2Zyb20gd2Via2l0cHkuY29tbW9uLmNvbmZp
Zy5wb3J0cyBpbXBvcnQgV2ViS2l0UG9ydAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3pp
bGxhIGltcG9ydCBCdWd6aWxsYQogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90IGlt
cG9ydCBCdWlsZEJvdAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnJpZXR2ZWxkIGltcG9ydCBS
aWV0dmVsZApAQCAtNTIsNyArNTMsNiBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucXVl
dWVzIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc2hlcmlmZmJvdCBpbXBv
cnQgKgogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnVwbG9hZCBpbXBvcnQgKgogZnJvbSB3
ZWJraXRweS50b29sLm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IE11bHRpQ29tbWFuZFRvb2wKLWZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwog
CiAKIGNsYXNzIFdlYktpdFBhdGNoKE11bHRpQ29tbWFuZFRvb2wpOgpAQCAtNzQsNiArNzQsNyBA
QCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29sKToKICAgICAgICAgc2VsZi5idWls
ZGJvdCA9IEJ1aWxkQm90KCkKICAgICAgICAgc2VsZi5leGVjdXRpdmUgPSBFeGVjdXRpdmUoKQog
ICAgICAgICBzZWxmLl9pcmMgPSBOb25lCisgICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCiAgICAg
ICAgIHNlbGYudXNlciA9IFVzZXIoKQogICAgICAgICBzZWxmLl9zY20gPSBOb25lCiAgICAgICAg
IHNlbGYuX2NoZWNrb3V0ID0gTm9uZQpAQCAtOTIsNiArOTMsOSBAQCBjbGFzcyBXZWJLaXRQYXRj
aChNdWx0aUNvbW1hbmRUb29sKToKICAgICAgICAgICAgIHNlbGYuX2NoZWNrb3V0ID0gQ2hlY2tv
dXQoc2VsZi5zY20oKSkKICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrb3V0CiAKKyAgICBkZWYg
cG9ydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQKKwogICAgIGRlZiBlbnN1cmVf
aXJjX2Nvbm5lY3RlZChzZWxmLCBpcmNfZGVsZWdhdGUpOgogICAgICAgICBpZiBub3Qgc2VsZi5f
aXJjOgogICAgICAgICAgICAgc2VsZi5faXJjID0gSVJDUHJveHkoaXJjX2RlbGVnYXRlKQpAQCAt
MTI5LDYgKzEzMyw4IEBAIGNsYXNzIFdlYktpdFBhdGNoKE11bHRpQ29tbWFuZFRvb2wpOgogICAg
ICAgICAgICAgc2VsZi5zdGF0dXNfc2VydmVyLnNldF9ib3RfaWQob3B0aW9ucy5ib3RfaWQpCiAg
ICAgICAgIGlmIG9wdGlvbnMuaXJjX3Bhc3N3b3JkOgogICAgICAgICAgICAgc2VsZi5pcmNfcGFz
c3dvcmQgPSBvcHRpb25zLmlyY19wYXNzd29yZAorICAgICAgICAjIElmIG9wdGlvbnMucG9ydCBp
cyBOb25lLCB3ZSdsbCBnZXQgdGhlIGRlZmF1bHQgcG9ydCBmb3IgdGhpcyBwbGF0Zm9ybS4KKyAg
ICAgICAgc2VsZi5fcG9ydCA9IFdlYktpdFBvcnQucG9ydChvcHRpb25zLnBvcnQpCiAKICAgICBk
ZWYgc2hvdWxkX2V4ZWN1dGVfY29tbWFuZChzZWxmLCBjb21tYW5kKToKICAgICAgICAgaWYgY29t
bWFuZC5yZXF1aXJlc19sb2NhbF9jb21taXRzIGFuZCBub3Qgc2VsZi5zY20oKS5zdXBwb3J0c19s
b2NhbF9jb21taXRzKCk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvbW9ja3Rvb2wucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9j
a3Rvb2wucHkKaW5kZXggZjg0ZWMyYjMyZGMyOTU1NjU2NTczNmI5MDk1YTY0ZDA3NTE1YzE5Ni4u
ZmI0OWRiOTY0NzAyNTM0MWI5MDc4NWZmOWYxZTkxNTI1ZTMzMDdiMyAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQpAQCAtMzAsNiArMzAsNyBAQCBp
bXBvcnQgb3MKIGltcG9ydCB0aHJlYWRpbmcKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmln
LmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QsIFJldmlld2VyCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jb25maWcucG9ydHMgaW1wb3J0IE1hY1BvcnQKIGZyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LmNvbW1pdGluZm8gaW1wb3J0IENvbW1pdEluZm8KIGZyb20gd2Via2l0cHkuY29t
bW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgQ29tbWl0TWVzc2FnZQogZnJvbSB3ZWJraXRweS5jb21t
b24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBCdWcsIEF0dGFjaG1lbnQKQEAgLTY0NSw2ICs2NDYsMTAg
QEAgY2xhc3MgTW9ja1Rvb2woKToKICAgICBkZWYgcGF0aChzZWxmKToKICAgICAgICAgcmV0dXJu
ICJlY2hvIgogCisgICAgZGVmIHBvcnQoc2VsZik6CisgICAgICAgICMgRklYTUU6IENvbnNpZGVy
IHVzaW5nIGEgbW9jayBoZXJlLgorICAgICAgICByZXR1cm4gTWFjUG9ydAorCiAKIGNsYXNzIE1v
Y2tCcm93c2VyKG9iamVjdCk6CiAgICAgcGFyYW1zID0ge30KZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5CmluZGV4IDlj
ZWIyY2JkMGQxMmYxMjY4NWYyZGY1NGZlZmUwMjNhODIwYTU3MDEuLjAyYTg3NmFhNWQwNDJlZjlh
MjM4ZWVjYTg1MWQ2ZjMwMTY1YjFiMTkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQpAQCAtMzYsMjMgKzM2LDE1
IEBAIGNsYXNzIEFic3RyYWN0U3RlcChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
b29sLCBvcHRpb25zKToKICAgICAgICAgc2VsZi5fdG9vbCA9IHRvb2wKICAgICAgICAgc2VsZi5f
b3B0aW9ucyA9IG9wdGlvbnMKLSAgICAgICAgc2VsZi5fcG9ydCA9IE5vbmUKIAorICAgICMgRklY
TUU6IFRoaXMgc2hvdWxkIHVzZSB0b29sLnBvcnQoKQogICAgIGRlZiBfcnVuX3NjcmlwdChzZWxm
LCBzY3JpcHRfbmFtZSwgYXJncz1Ob25lLCBxdWlldD1GYWxzZSwgcG9ydD1XZWJLaXRQb3J0KToK
ICAgICAgICAgbG9nKCJSdW5uaW5nICVzIiAlIHNjcmlwdF9uYW1lKQogICAgICAgICBjb21tYW5k
ID0gW3BvcnQuc2NyaXB0X3BhdGgoc2NyaXB0X25hbWUpXQogICAgICAgICBpZiBhcmdzOgogICAg
ICAgICAgICAgY29tbWFuZC5leHRlbmQoYXJncykKLSAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91
bGQgdXNlIHNlbGYucG9ydCgpCiAgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRf
dGhyb3dfaWZfZmFpbChjb21tYW5kLCBxdWlldCkKIAotICAgICMgRklYTUU6IFRoZSBwb3J0IHNo
b3VsZCBsaXZlIG9uIHRoZSB0b29sLgotICAgIGRlZiBwb3J0KHNlbGYpOgotICAgICAgICBpZiBz
ZWxmLl9wb3J0OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQKLSAgICAgICAgc2VsZi5f
cG9ydCA9IFdlYktpdFBvcnQucG9ydChzZWxmLl9vcHRpb25zLnBvcnQpCi0gICAgICAgIHJldHVy
biBzZWxmLl9wb3J0Ci0KICAgICBfd2VsbF9rbm93bl9rZXlzID0gewogICAgICAgICAiZGlmZiI6
IGxhbWJkYSBzZWxmLCBzdGF0ZTogc2VsZi5fdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2goc2VsZi5f
b3B0aW9ucy5naXRfY29tbWl0KSwKICAgICAgICAgImNoYW5nZWxvZ3MiOiBsYW1iZGEgc2VsZiwg
c3RhdGU6IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYuX29w
dGlvbnMuZ2l0X2NvbW1pdCksCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvYnVpbGQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvYnVpbGQucHkKaW5kZXggNDU2ZGIyNTM5YmNkMjAyZGYzY2I3NWZhMzJmZmUzMzkz
MDkxMzFmYS4uMDk5MGI4YjMzNGU2NThmMWQ2ZmRiMDY3MThlNDNjZDBhYTAwMGE2MCAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2J1aWxkLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9idWlsZC5weQpAQCAt
NDEsNyArNDEsNyBAQCBjbGFzcyBCdWlsZChBYnN0cmFjdFN0ZXApOgogICAgICAgICBdCiAKICAg
ICBkZWYgYnVpbGQoc2VsZiwgYnVpbGRfc3R5bGUpOgotICAgICAgICBzZWxmLl90b29sLmV4ZWN1
dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5wb3J0KCkuYnVpbGRfd2Via2l0X2NvbW1h
bmQoYnVpbGRfc3R5bGU9YnVpbGRfc3R5bGUpLCBzZWxmLl9vcHRpb25zLnF1aWV0KQorICAgICAg
ICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5fdG9vbC5w
b3J0KCkuYnVpbGRfd2Via2l0X2NvbW1hbmQoYnVpbGRfc3R5bGU9YnVpbGRfc3R5bGUpLCBzZWxm
Ll9vcHRpb25zLnF1aWV0KQogCiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgIGlm
IG5vdCBzZWxmLl9vcHRpb25zLmJ1aWxkOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQppbmRleCA2YTY5
NjBhMDRiMzZlOGMxZDhhOWFlNmVlNmM5MWNiMWM2Mjg0YjU4Li4wMzgyNzM4ODZkNjRmNTM2Nzg5
ZjhlZjhmYjMwZTgxYWI0NTdkYTRjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQpAQCAtNjEsNyAr
NjEsNyBAQCBjbGFzcyBQcmVwYXJlQ2hhbmdlTG9nKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAg
ICBzZWxmLl9lbnN1cmVfYnVnX3VybChzdGF0ZSkKICAgICAgICAgICAgIHJldHVybgogICAgICAg
ICBvcy5jaGRpcihzZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCi0gICAgICAgIGFyZ3Mg
PSBbc2VsZi5wb3J0KCkuc2NyaXB0X3BhdGgoInByZXBhcmUtQ2hhbmdlTG9nIildCisgICAgICAg
IGFyZ3MgPSBbc2VsZi5fdG9vbC5wb3J0KCkuc2NyaXB0X3BhdGgoInByZXBhcmUtQ2hhbmdlTG9n
IildCiAgICAgICAgIGlmIHN0YXRlLmdldCgiYnVnX2lkIik6CiAgICAgICAgICAgICBhcmdzLmFw
cGVuZCgiLS1idWc9JXMiICUgc3RhdGVbImJ1Z19pZCJdKQogICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLmVtYWlsOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL3J1bnRlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3J1bnRlc3RzLnB5CmluZGV4IDZmYzk0YTFhNzRhMDQ3ZTBkYWY5ZGM0NjMzYjg3ZDZlMDBm
OTU1ZWUuLmRjYmZjNDQ3NWFlMmQwYTI1OTk3NjM1Y2UxMDA4NjU5MWU4NDkwMjggMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0cy5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkK
QEAgLTQ1LDE3ICs0NSwxNyBAQCBjbGFzcyBSdW5UZXN0cyhBYnN0cmFjdFN0ZXApOgogCiAgICAg
ICAgICMgUnVuIHRoZSBzY3JpcHRpbmcgdW5pdCB0ZXN0cyBmaXJzdCBiZWNhdXNlIHRoZXkncmUg
cXVpY2tlc3QuCiAgICAgICAgIGxvZygiUnVubmluZyBQeXRob24gdW5pdCB0ZXN0cyIpCi0gICAg
ICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLnBvcnQo
KS5ydW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKCkpCisgICAgICAgIHNlbGYuX3Rvb2wuZXhl
Y3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90b29sLnBvcnQoKS5ydW5fcHl0aG9u
X3VuaXR0ZXN0c19jb21tYW5kKCkpCiAgICAgICAgIGxvZygiUnVubmluZyBQZXJsIHVuaXQgdGVz
dHMiKQotICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwo
c2VsZi5wb3J0KCkucnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoKSkKKyAgICAgICAgc2VsZi5f
dG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHNlbGYuX3Rvb2wucG9ydCgpLnJ1
bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5kKCkpCiAKLSAgICAgICAgamF2YXNjcmlwdGNvcmVfdGVz
dHNfY29tbWFuZCA9IHNlbGYucG9ydCgpLnJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5k
KCkKKyAgICAgICAgamF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCA9IHNlbGYuX3Rvb2wucG9y
dCgpLnJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kKCkKICAgICAgICAgaWYgamF2YXNj
cmlwdGNvcmVfdGVzdHNfY29tbWFuZDoKICAgICAgICAgICAgIGxvZygiUnVubmluZyBKYXZhU2Ny
aXB0Q29yZSB0ZXN0cyIpCiAgICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5k
X3Rocm93X2lmX2ZhaWwoamF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCwgcXVpZXQ9VHJ1ZSkK
IAogICAgICAgICBsb2coIlJ1bm5pbmcgcnVuLXdlYmtpdC10ZXN0cyIpCi0gICAgICAgIGFyZ3Mg
PSBzZWxmLnBvcnQoKS5ydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoKQorICAgICAgICBhcmdzID0g
c2VsZi5fdG9vbC5wb3J0KCkucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCkKICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgi
LS1uby1sYXVuY2gtc2FmYXJpIikKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLWV4aXQtYWZ0
ZXItbi1mYWlsdXJlcz0xIikKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgUnVuVGVzdHMoQWJzdHJh
Y3RTdGVwKToKICAgICAgICAgICAgICMgRklYTUU6IEhhY2sgdG8gd29yayBhcm91bmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTEyCiAgICAgICAgICAgICAjIHdo
ZW4gcnVubmluZyB0aGUgY29tbWl0LXF1ZXVlIG9uIGEgbWFjIGxlb3BhcmQgbWFjaGluZSBzaW5j
ZSBjb21wb3NpdGluZwogICAgICAgICAgICAgIyBkb2VzIG5vdCB3b3JrIHJlbGlhYmx5IG9uIExl
b3BhcmQgZHVlIHRvIHZhcmlvdXMgZ3JhcGhpY3MgZHJpdmVyL3N5c3RlbSBidWdzLgotICAgICAg
ICAgICAgaWYgc2VsZi5wb3J0KCkubmFtZSgpID09ICJNYWMiIGFuZCBzZWxmLnBvcnQoKS5pc19s
ZW9wYXJkKCk6CisgICAgICAgICAgICBpZiBzZWxmLl90b29sLnBvcnQoKS5uYW1lKCkgPT0gIk1h
YyIgYW5kIHNlbGYuX3Rvb2wucG9ydCgpLmlzX2xlb3BhcmQoKToKICAgICAgICAgICAgICAgICB0
ZXN0c190b19pZ25vcmUgPSBbXQogICAgICAgICAgICAgICAgIHRlc3RzX3RvX2lnbm9yZS5hcHBl
bmQoImNvbXBvc2l0aW5nIikKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5CmluZGV4IDE1ZjI3NWFkOGQzMjU2
NmZkNDQ1ZTU1NjM5OGE1MTY2ZDAxODM2ZDEuLjY5NTc1ZGI2MmUxMjNiNDhkYmRiMzI4ZDFhYjY0
ZmRkOWQxNDIxZDkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9zdGVwc191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkKQEAgLTU3LDE5ICs1NywyMCBAQCBjbGFz
cyBTdGVwc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICB0b29sLnVzZXIucHJvbXB0
ID0gbGFtYmRhIG1lc3NhZ2U6IDQyCiAgICAgICAgIHNlbGYuX3J1bl9zdGVwKFByb21wdEZvckJ1
Z09yVGl0bGUsIHRvb2w9dG9vbCkKIAotICAgIGRlZiB0ZXN0X3J1bnRlc3RzX2xlb3BhcmRfY29t
bWl0X3F1ZXVlX2hhY2soc2VsZik6CisgICAgZGVmIHRlc3RfcnVudGVzdHNfbGVvcGFyZF9jb21t
aXRfcXVldWVfaGFja19zdGVwKHNlbGYpOgogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiUnVu
bmluZyBQeXRob24gdW5pdCB0ZXN0c1xuUnVubmluZyBQZXJsIHVuaXQgdGVzdHNcblJ1bm5pbmcg
SmF2YVNjcmlwdENvcmUgdGVzdHNcblJ1bm5pbmcgcnVuLXdlYmtpdC10ZXN0c1xuIgogICAgICAg
ICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc2VsZi5fcnVuX3N0ZXAsIFtS
dW5UZXN0c10sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKLSAgICBkZWYgdGVz
dF9ydW50ZXN0c19sZW9wYXJkX2NvbW1pdF9xdWV1ZV9oYWNrKHNlbGYpOgorICAgIGRlZiB0ZXN0
X3J1bnRlc3RzX2xlb3BhcmRfY29tbWl0X3F1ZXVlX2hhY2tfY29tbWFuZChzZWxmKToKICAgICAg
ICAgbW9ja19vcHRpb25zID0gTW9ja09wdGlvbnMoKQogICAgICAgICBtb2NrX29wdGlvbnMubm9u
X2ludGVyYWN0aXZlID0gVHJ1ZQotICAgICAgICBzdGVwID0gUnVuVGVzdHMoTW9ja1Rvb2wobG9n
X2V4ZWN1dGl2ZT1UcnVlKSwgbW9ja19vcHRpb25zKQogICAgICAgICAjIEZJWE1FOiBXZSBzaG91
bGRuJ3QgdXNlIGEgcmVhbCBwb3J0LW9iamVjdCBoZXJlLCBidXQgdGhlcmUgaXMgdG9vIG11Y2gg
dG8gbW9jayBhdCB0aGUgbW9tZW50LgogICAgICAgICBtb2NrX3BvcnQgPSBXZWJLaXRQb3J0KCkK
ICAgICAgICAgbW9ja19wb3J0Lm5hbWUgPSBsYW1iZGE6ICJNYWMiCiAgICAgICAgIG1vY2tfcG9y
dC5pc19sZW9wYXJkID0gbGFtYmRhOiBUcnVlCi0gICAgICAgIHN0ZXAucG9ydCA9IGxhbWJkYTog
bW9ja19wb3J0CisgICAgICAgIHRvb2wgPSBNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpCisg
ICAgICAgIHRvb2wucG9ydCA9IGxhbWJkYTogbW9ja19wb3J0CisgICAgICAgIHN0ZXAgPSBSdW5U
ZXN0cyh0b29sLCBtb2NrX29wdGlvbnMpCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIlJ1
bm5pbmcgUHl0aG9uIHVuaXQgdGVzdHMKIE1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ1dl
YktpdFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweSddCiBSdW5uaW5nIFBlcmwgdW5pdCB0ZXN0
cwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Vw
ZGF0ZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGUu
cHkKaW5kZXggOGMyOTBmOTdiMTBjYzJhOThiOTEzMmNkMDY3NmY4Mjk5MTBmMmE2MC4uY2QxZDRk
OGE5YzlkZjFkZWUxMjM0NWU1MDZkMWZlYmNiYTgxNzViMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZS5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlLnB5CkBAIC00Miw0ICs0Miw0IEBA
IGNsYXNzIFVwZGF0ZShBYnN0cmFjdFN0ZXApOgogICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9u
cy51cGRhdGU6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgbG9nKCJVcGRhdGluZyB3b3Jr
aW5nIGRpcmVjdG9yeSIpCi0gICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhy
b3dfaWZfZmFpbChzZWxmLnBvcnQoKS51cGRhdGVfd2Via2l0X2NvbW1hbmQoKSwgcXVpZXQ9VHJ1
ZSkKKyAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHNl
bGYuX3Rvb2wucG9ydCgpLnVwZGF0ZV93ZWJraXRfY29tbWFuZCgpLCBxdWlldD1UcnVlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70752</attachid>
            <date>2010-10-14 11:04:11 -0700</date>
            <delta_ts>2010-10-14 11:32:48 -0700</delta_ts>
            <desc>Now should work on python 2.5</desc>
            <filename>bug-47647-20101014110409.patch</filename>
            <type>text/plain</type>
            <size>34102</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5M2Y0NmU0ZmYwZWUzMWM3YThjYWVjOTJmZmY0YmVkNDdjMmNkNmI4Li5lOTAxNWE1
ZDIzZmUyZmIwODk0MzgxNDhlNDA3YTkzZTZmMDE4NGYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMTAtMTAtMTQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdC1xdWV1ZSBzaG91bGQg
bm90IGZhaWwgcGF0Y2hlcyBkdWUgdG8gZmxha3kgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjQ3CisKKyAgICAgICAgVGhpcyBwYXRjaCBt
YWtlcyBpdCBzbyB0aGF0IHRoZSAqc2FtZSogZmxha3kgdGVzdCBoYXMgdG8gZmFpbAorICAgICAg
ICB0d2ljZSBpbiBhIHJvdyB0byBoYXZlIGEgZmFsc2UgbmVnYXRpdmUgZnJvbSBhIGZsYWt5IHRl
c3QuCisKKyAgICAgICAgSWYgZGlmZmVyZW50IGZsYWt5IHRlc3RzIGZhaWwgKG9yIGlmIGEgdGVz
dCBmYWlscyBhbmQgdGhlbiBwYXNzZXMKKyAgICAgICAgaW4gYSBzZWNvbmQgcnVuKSB0aGVuIHdl
IHdpbGwgd2FybiBpbiB0aGUgYnVnIHRoYXQgd2UgZW5jb3VudGVyZWQKKyAgICAgICAgYSBmbGFr
eSB0ZXN0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZ3JldyB0byBpbmNsdWRlIG1vdmluZyBwb3J0
IG9mZiBvZiBzdGVwcyBvbnRvIHRvb2wKKyAgICAgICAgKHdoaWNoIEFkYW0gd3JvdGUgYW5kIHRo
ZW4gSSBpbnRlZ3JhdGVkKSwgYXMgd2VsbCBhcyByZW1vdmluZyB0aGUKKyAgICAgICAgdXNlIG9m
IHRvb2wgZnJvbSBDb21taXRRdWV1ZVRhc2suCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvcG9ydHMucHk6CisgICAgICAgICAtIEFkZGVkIGEgbGF5b3V0X3Rlc3Rf
cmVzdWx0c19wYXRoIG1ldGhvZC4gIFRoaXMgY292ZXJzIG9sZC1ydW4td2Via2l0LXRlc3RzCisg
ICAgICAgICAgIGJ1dCBkb2Vzbid0IGNvdmVyIE5SV1QuICBUaGlzIGlzIHByb2JhYmx5IG5vdCB0
aGUgbG9uZyB0ZXJtIHNvbHV0aW9uLCBidXQKKyAgICAgICAgICAgcHV0dGluZyB0aGlzIGtub3ds
ZWRnZSBvbiBwb3J0IG1ha2VzIG1vcmUgc2Vuc2UgdGhhbiBpbiBMYXlvdXRUZXN0UmVzdWx0cy4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QucHk6CisgICAg
ICAgICAtIExheW91dFRlc3RSZXN1bHRzIHNob3VsZG4ndCBrbm93IGhvdyB0byBmZXRjaCBmcm9t
IHRoZSBuZXR3b3JrLCBtYWtlCisgICAgICAgICAgIHRoZSBCdWlsZCBjb2RlIGRvIHRoYXQgaW5z
dGVhZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3RfdW5p
dHRlc3QucHk6CisgICAgICAgICAtIENvZGUgc3R5bGUgZml4LgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weToKKyAgICAgICAgIC0gUmVt
b3ZlIGNvZGUgZm9yIHJlYWRpbmcgZnJvbSB0aGUgbmV0d29yay4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5pdHRlc3QucHk6CisgICAg
ICAgICAtIFRlc3QgdGhlIG5ldyBlbnRyeXBvaW50LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5OgorICAgICAgICAgLSBNYWtlIHRoZSBkZWxl
Z2F0ZSBpbnRlcmZhY2UgZXhwbGljaXQuCisgICAgICAgICAtIFJlbW92ZSB0aGUgX3Rvb2wgbWVt
YmVyLCBzaW5jZSB1c2luZyB0aGUgZGVsZWdhdGUgZm9yCisgICAgICAgICAgIGV2ZXJ5dGhpbmcg
aXMgY2xlYW5lci4KKyAgICAgICAgIC0gVGVhY2ggdGhlIHRlc3RpbmcgbG9naWMgaG93IHRvIGRl
YWwgd2l0aCBmbGFreSB0ZXN0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weToKKyAgICAgICAgIC0gVXBkYXRlIHRvIG1hdGNo
IHRoZSBDb21taXRRdWV1ZVRhc2sgY2hhbmdlcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OgorICAgICAgICAgLSBVc2UgdGhlIG5ldyBDb21taXRR
dWV1ZVRhc2tEZWxlZ2F0ZSBpbnRlcmZhY2UuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weToKKyAgICAgICAgIC0gRml4IHRoZSBTZWNv
bmRUaG91Z2h0c0NvbW1pdFF1ZXVlIHRlc3Qgd2hpY2ggd2FzIGJyb2tlbi4KKyAgICAgICAgIC0g
QWRkIGEgbmV3IHRlc3QgdG8gbWFrZSBzdXJlIHRoZSBmbGFreSB0ZXN0IHJlcG9ydGluZyB3b3Jr
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weToKKyAgICAgICAgIC0g
U3RvcmUgdGhlIHBvcnQgb24gdGhlIHRvb2wgb2JqZWN0LgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9tb2NrdG9vbC5weToKKyAgICAgICAgIC0gQWRkIGEgcG9ydCgpIGFjY2Vzc29y
IHRvIE1vY2tUb29sCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3Ry
YWN0c3RlcC5weToKKyAgICAgICAgIC0gTW92ZSBwb3J0KCkgb2ZmIG9mIFN0ZXAgYW5kIG9udG8g
VG9vbC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYnVpbGQucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weToKKyAg
ICAgICAgIC0gVHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgbmFtZSEgIG9ubHkgdGhlIGxhdHRlciB3
YXMgYmVpbmcgcnVuLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRh
dGUucHk6CisKIDIwMTAtMTAtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weQppbmRleCA3OWNiMGMyMjg3NGU1
Y2Y4NTM4ZDVkNTgwNWExZDcyYjFlZDdlNDMwLi5kMjY4ODY1ZDc1MDMwZmNkNmI1MjYyYWZlNzdm
NzU1MzliNzc1NmYyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jb25maWcvcG9ydHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY29uZmlnL3BvcnRzLnB5CkBAIC0xMDMsNiArMTAzLDEwIEBAIGNsYXNzIFdlYktpdFBv
cnQob2JqZWN0KToKICAgICBkZWYgcnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoY2xzKToKICAg
ICAgICAgcmV0dXJuIFtjbHMuc2NyaXB0X3BhdGgoInRlc3Qtd2Via2l0cGVybCIpXQogCisgICAg
QGNsYXNzbWV0aG9kCisgICAgZGVmIGxheW91dF90ZXN0c19yZXN1bHRzX3BhdGgoY2xzKToKKyAg
ICAgICAgcmV0dXJuICIvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmVzdWx0cy5odG1sIgorCiAK
IGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weQppbmRleCA4Y2I5MDJjYWRlNzljMGQx
OTMwMjVlNTRkYTM5NDg5NDA2ZjYxNDg2Li5kM2QwOGVlNzA3ZGNhN2I0ZTczZTQ1NDViM2M2OTU1
Y2VhNzc1MjAwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvYnVpbGRib3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1aWxkYm90LnB5CkBAIC0yMTUsOSArMjE1LDE5IEBAIGNsYXNzIEJ1aWxkKG9iamVj
dCk6CiAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gInIlcyAoJXMpIiAlIChzZWxmLnJldmlz
aW9uKCksIHNlbGYuX251bWJlcikKICAgICAgICAgcmV0dXJuICIlcy8lcyIgJSAoc2VsZi5fYnVp
bGRlci5yZXN1bHRzX3VybCgpLCB1cmxsaWIucXVvdGUocmVzdWx0c19kaXJlY3RvcnkpKQogCisg
ICAgZGVmIF9mZXRjaF9yZXN1bHRzX2h0bWwoc2VsZik6CisgICAgICAgIHJlc3VsdHNfaHRtbCA9
ICIlcy9yZXN1bHRzLmh0bWwiICUgKHNlbGYucmVzdWx0c191cmwoKSkKKyAgICAgICAgIyBGSVhN
RTogV2UgbmVlZCB0byBtb3ZlIHRoaXMgc29ydCBvZiA0MDQgbG9naWMgaW50byBOZXR3b3JrVHJh
bnNhY3Rpb24gb3Igc2ltaWxhci4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHVy
bGxpYjIudXJsb3BlbihyZXN1bHRzX2h0bWwpCisgICAgICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBF
cnJvciwgZXJyb3I6CisgICAgICAgICAgICBpZiBlcnJvci5jb2RlICE9IDQwNDoKKyAgICAgICAg
ICAgICAgICByYWlzZQorCiAgICAgZGVmIGxheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAg
ICAgIGlmIG5vdCBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzOgotICAgICAgICAgICAgc2VsZi5f
bGF5b3V0X3Rlc3RfcmVzdWx0cyA9IExheW91dFRlc3RSZXN1bHRzLnJlc3VsdHNfZnJvbV91cmwo
c2VsZi5yZXN1bHRzX3VybCgpKQorICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgY2Fj
aGUgdGhhdCB0aGUgcmVzdWx0IHdhcyBhIDQwNCBhbmQgc3RvcCBoaXR0aW5nIHRoZSBuZXR3b3Jr
LgorICAgICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RfcmVzdWx0cyA9IExheW91dFRlc3RSZXN1
bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcoc2VsZi5fZmV0Y2hfcmVzdWx0c19odG1sKCkpCiAgICAg
ICAgIHJldHVybiBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzCiAKICAgICBkZWYgYnVpbGRlcihz
ZWxmKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9idWlsZGJvdF91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWlsZGJvdF91bml0dGVzdC5weQppbmRleCA1N2EwYzhmMDg0ZDM5Y2FhNGE1NzVj
ZmZmYzg4ZTU5OTI3Mjk2NDM0Li5hZmM5YTM5YTllNzEyOWM2NzJlNTE5NmY5NDYyYmQ4YmJiMmUy
NDNhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
YnVpbGRib3RfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2J1aWxkYm90X3VuaXR0ZXN0LnB5CkBAIC00MSwxMCArNDEsOCBAQCBjbGFzcyBC
dWlsZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgcmV2aXNpb249
YnVpbGRfbnVtYmVyICsgMTAwMCwKICAgICAgICAgICAgICAgICBpc19ncmVlbj1idWlsZF9udW1i
ZXIgPCA0CiAgICAgICAgICAgICApCi0gICAgICAgICAgICBidWlsZC5fbGF5b3V0X3Rlc3RfcmVz
dWx0cyA9IExheW91dFRlc3RSZXN1bHRzKAotICAgICAgICAgICAgICAgICJodHRwOi8vYnVpbGRi
b3QuZXhhbXBsZS5jb20vZm9vIiwgewotICAgICAgICAgICAgICAgICAgICBMYXlvdXRUZXN0UmVz
dWx0cy5mYWlsX2tleTogZmFpbHVyZShidWlsZF9udW1iZXIpLAotICAgICAgICAgICAgICAgIH0p
CisgICAgICAgICAgICBwYXJzZWRfcmVzdWx0cyA9IHtMYXlvdXRUZXN0UmVzdWx0cy5mYWlsX2tl
eTogZmFpbHVyZShidWlsZF9udW1iZXIpfQorICAgICAgICAgICAgYnVpbGQuX2xheW91dF90ZXN0
X3Jlc3VsdHMgPSBMYXlvdXRUZXN0UmVzdWx0cyhwYXJzZWRfcmVzdWx0cykKICAgICAgICAgICAg
IHJldHVybiBidWlsZAogICAgICAgICBzZWxmLmJ1aWxkZXIuX2ZldGNoX2J1aWxkID0gX21vY2tf
ZmV0Y2hfYnVpbGQKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CmluZGV4IDVhYjgyOTI3MjFjZTA3
YTE0ZmU3MTI1MGJjYzY0NmU0N2MxMDljOGQuLmViNWVhN2RiZDM2MzlmZTZmNWNjZjgyZTcxYjQ3
ZmI1MTYwZjBhMzAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKQEAgLTM0LDYgKzM0LDggQEAg
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNv
dXAsIFNvdXBTdHJhaW5lcgogIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdW5pZmllZCB3aXRoIGFs
bCB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0cyBjb2RlIGluIHRoZSBsYXlvdXRfdGVzdHMgcGFja2Fn
ZQogIyBUaGlzIGRvZXNuJ3QgYmVsb25nIGluIGNvbW1vbi5uZXQsIGJ1dCB3ZSBkb24ndCBoYXZl
IGEgYmV0dGVyIHBsYWNlIGZvciBpdCB5ZXQuCiBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0cyhvYmpl
Y3QpOgorICAgICIiIlRoaXMgY2xhc3Mga25vd3MgaG93IHRvIHBhcnNlIG9sZC1ydW4td2Via2l0
LXRlc3RzIHJlc3VsdHMuaHRtbCBmaWxlcy4iIiIKKwogICAgIHN0ZGVycl9rZXkgPSB1J1Rlc3Rz
IHRoYXQgaGFkIHN0ZGVyciBvdXRwdXQ6JwogICAgIGZhaWxfa2V5ID0gdSdUZXN0cyB3aGVyZSBy
ZXN1bHRzIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgcmVzdWx0czonCiAgICAgdGltZW91dF9rZXkg
PSB1J1Rlc3RzIHRoYXQgdGltZWQgb3V0OicKQEAgLTYyLDI3ICs2NCwxNCBAQCBjbGFzcyBMYXlv
dXRUZXN0UmVzdWx0cyhvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBwYXJzZWRfcmVzdWx0cwog
Ci0gICAgIyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGRuJ3Qga25vdyBob3cgdG8gZmV0Y2ggZnJv
bSB0aGUgbmV0d29yay4KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX2ZldGNoX3Jlc3VsdHNf
aHRtbChjbHMsIGJhc2VfdXJsKToKLSAgICAgICAgcmVzdWx0c19odG1sID0gIiVzL3Jlc3VsdHMu
aHRtbCIgJSBiYXNlX3VybAotICAgICAgICAjIEZJWE1FOiBXZSBuZWVkIHRvIG1vdmUgdGhpcyBz
b3J0IG9mIDQwNCBsb2dpYyBpbnRvIE5ldHdvcmtUcmFuc2FjdGlvbiBvciBzaW1pbGFyLgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBwYWdlID0gdXJsbGliMi51cmxvcGVuKHJlc3VsdHNfaHRt
bCkKLSAgICAgICAgICAgIHJldHVybiBjbHMuX3BhcnNlX3Jlc3VsdHNfaHRtbChwYWdlKQotICAg
ICAgICBleGNlcHQgdXJsbGliMi5IVFRQRXJyb3IsIGVycm9yOgotICAgICAgICAgICAgaWYgZXJy
b3IuY29kZSAhPSA0MDQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQogICAgIEBjbGFzc21ldGhv
ZAotICAgIGRlZiByZXN1bHRzX2Zyb21fdXJsKGNscywgYmFzZV91cmwpOgotICAgICAgICBwYXJz
ZWRfcmVzdWx0cyA9IGNscy5fZmV0Y2hfcmVzdWx0c19odG1sKGJhc2VfdXJsKQorICAgIGRlZiBy
ZXN1bHRzX2Zyb21fc3RyaW5nKGNscywgc3RyaW5nKToKKyAgICAgICAgcGFyc2VkX3Jlc3VsdHMg
PSBjbHMuX3BhcnNlX3Jlc3VsdHNfaHRtbChzdHJpbmcpCiAgICAgICAgIGlmIG5vdCBwYXJzZWRf
cmVzdWx0czoKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBjbHMoYmFz
ZV91cmwsIHBhcnNlZF9yZXN1bHRzKQorICAgICAgICByZXR1cm4gY2xzKHBhcnNlZF9yZXN1bHRz
KQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhc2VfdXJsLCBwYXJzZWRfcmVzdWx0cyk6Ci0g
ICAgICAgIHNlbGYuX2Jhc2VfdXJsID0gYmFzZV91cmwKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
cGFyc2VkX3Jlc3VsdHMpOgogICAgICAgICBzZWxmLl9wYXJzZWRfcmVzdWx0cyA9IHBhcnNlZF9y
ZXN1bHRzCiAKICAgICBkZWYgcGFyc2VkX3Jlc3VsdHMoc2VsZik6CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0
dGVzdHJlc3VsdHNfdW5pdHRlc3QucHkKaW5kZXggMDM0ODQ4ZTM2ZDY2MGUyZmU2ZDk2YjY2NDIz
ZWM0MTNiMWI3MWRjOS4uNDRlNGRiYzViYmExMjFmNTAxYTM5Y2VlMzlhNDhmMDk3MThkNWJjZiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91
dHRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0c191bml0dGVzdC5weQpAQCAtNjksMyArNjks
OCBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
IGRlZiB0ZXN0X3BhcnNlX2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHJlc3Vs
dHMgPSBMYXlvdXRUZXN0UmVzdWx0cy5fcGFyc2VfcmVzdWx0c19odG1sKHNlbGYuX2V4YW1wbGVf
cmVzdWx0c19odG1sKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2V4cGVjdGVkX2xh
eW91dF90ZXN0X3Jlc3VsdHMsIHJlc3VsdHMpCisKKyAgICBkZWYgdGVzdF9yZXN1bHRzX2Zyb21f
c3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExheW91dFRlc3RSZXN1bHRz
LnJlc3VsdHNfZnJvbV9zdHJpbmcoIiIpLCBOb25lKQorICAgICAgICByZXN1bHRzID0gTGF5b3V0
VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyhzZWxmLl9leGFtcGxlX3Jlc3VsdHNfaHRt
bCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkp
LCAwKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9j
b21taXRxdWV1ZXRhc2sucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2NvbW1pdHF1ZXVldGFzay5weQppbmRleCBhNWMyY2EyMTY4N2E1N2QwMGVmZTMyNTUyNmQ3OWFj
YTYwMzVlMzU1Li4wMmUyMDNjNTI2YTkzZjZkZGI3YjI5OWUwZjI5OTMwMTcwNzhiN2NjIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVl
dGFzay5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1p
dHF1ZXVldGFzay5weQpAQCAtMjcsMTkgKzI3LDM5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRlc3RS
ZXN1bHRzCisKKworY2xhc3MgQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUob2JqZWN0KToKKyAgICBk
ZWYgcnVuX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQorCisgICAgZGVmIGNvbW1hbmRf
cGFzc2VkKHNlbGYsIG1lc3NhZ2UsIHBhdGNoKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCisKKyAgICBkZWYgY29tbWFuZF9m
YWlsZWQoc2VsZiwgbWVzc2FnZSwgc2NyaXB0X2Vycm9yLCBwYXRjaCk6CisgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQorCisgICAg
ZGVmIHJlZmV0Y2hfcGF0Y2goc2VsZiwgcGF0Y2gpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKKworICAgIGRlZiBsYXlvdXRf
dGVzdF9yZXN1bHRzKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJz
dWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKKworICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMo
c2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3RzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCiAKIAogY2xhc3MgQ29tbWl0UXVldWVU
YXNrKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvb2wsIGNvbW1pdF9xdWV1ZSwg
cGF0Y2gpOgotICAgICAgICBzZWxmLl90b29sID0gdG9vbAotICAgICAgICBzZWxmLl9jb21taXRf
cXVldWUgPSBjb21taXRfcXVldWUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGVsZWdhdGUsIHBh
dGNoKToKKyAgICAgICAgc2VsZi5fZGVsZWdhdGUgPSBkZWxlZ2F0ZQogICAgICAgICBzZWxmLl9w
YXRjaCA9IHBhdGNoCiAgICAgICAgIHNlbGYuX3NjcmlwdF9lcnJvciA9IE5vbmUKIAogICAgIGRl
ZiBfdmFsaWRhdGUoc2VsZik6CiAgICAgICAgICMgQnVncyBtaWdodCBnZXQgY2xvc2VkLCBvciBw
YXRjaGVzIG1pZ2h0IGJlIG9ic29sZXRlZCBvciByLSdkIHdoaWxlIHRoZQogICAgICAgICAjIGNv
bW1pdC1xdWV1ZSBpcyBwcm9jZXNzaW5nLgotICAgICAgICBzZWxmLl9wYXRjaCA9IHNlbGYuX3Rv
b2wuYnVncy5mZXRjaF9hdHRhY2htZW50KHNlbGYuX3BhdGNoLmlkKCkpCisgICAgICAgIHNlbGYu
X3BhdGNoID0gc2VsZi5fZGVsZWdhdGUucmVmZXRjaF9wYXRjaChzZWxmLl9wYXRjaCkKICAgICAg
ICAgaWYgc2VsZi5fcGF0Y2guaXNfb2Jzb2xldGUoKToKICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQogICAgICAgICBpZiBzZWxmLl9wYXRjaC5idWcoKS5pc19jbG9zZWQoKToKQEAgLTUyLDEyICs3
MiwxMiBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0KToKIAogICAgIGRlZiBfcnVuX2Nv
bW1hbmQoc2VsZiwgY29tbWFuZCwgc3VjY2Vzc19tZXNzYWdlLCBmYWlsdXJlX21lc3NhZ2UpOgog
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9jb21taXRfcXVldWUucnVuX3dlYmtpdF9w
YXRjaChjb21tYW5kKQotICAgICAgICAgICAgc2VsZi5fY29tbWl0X3F1ZXVlLmNvbW1hbmRfcGFz
c2VkKHN1Y2Nlc3NfbWVzc2FnZSwgcGF0Y2g9c2VsZi5fcGF0Y2gpCisgICAgICAgICAgICBzZWxm
Ll9kZWxlZ2F0ZS5ydW5fY29tbWFuZChjb21tYW5kKQorICAgICAgICAgICAgc2VsZi5fZGVsZWdh
dGUuY29tbWFuZF9wYXNzZWQoc3VjY2Vzc19tZXNzYWdlLCBwYXRjaD1zZWxmLl9wYXRjaCkKICAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKICAg
ICAgICAgICAgIHNlbGYuX3NjcmlwdF9lcnJvciA9IGUKLSAgICAgICAgICAgIHNlbGYuZmFpbHVy
ZV9zdGF0dXNfaWQgPSBzZWxmLl9jb21taXRfcXVldWUuY29tbWFuZF9mYWlsZWQoZmFpbHVyZV9t
ZXNzYWdlLCBzY3JpcHRfZXJyb3I9c2VsZi5fc2NyaXB0X2Vycm9yLCBwYXRjaD1zZWxmLl9wYXRj
aCkKKyAgICAgICAgICAgIHNlbGYuZmFpbHVyZV9zdGF0dXNfaWQgPSBzZWxmLl9kZWxlZ2F0ZS5j
b21tYW5kX2ZhaWxlZChmYWlsdXJlX21lc3NhZ2UsIHNjcmlwdF9lcnJvcj1zZWxmLl9zY3JpcHRf
ZXJyb3IsIHBhdGNoPXNlbGYuX3BhdGNoKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAg
ICBkZWYgX2FwcGx5KHNlbGYpOgpAQCAtMTE5LDYgKzEzOSwxMiBAQCBjbGFzcyBDb21taXRRdWV1
ZVRhc2sob2JqZWN0KToKICAgICAgICAgIkFibGUgdG8gcGFzcyB0ZXN0cyB3aXRob3V0IHBhdGNo
IiwKICAgICAgICAgIlVuYWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQgcGF0Y2ggKHRyZWUgaXMg
cmVkPykiKQogCisgICAgZGVmIF9mYWlsaW5nX3Rlc3RzX2Zyb21fbGFzdF9ydW4oc2VsZik6Cisg
ICAgICAgIHJlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS5sYXlvdXRfdGVzdF9yZXN1bHRzKCkKKyAg
ICAgICAgaWYgbm90IHJlc3VsdHM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBy
ZXR1cm4gcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkKKwogICAgIGRlZiBfbGFuZChzZWxmKToKICAg
ICAgICAgcmV0dXJuIHNlbGYuX3J1bl9jb21tYW5kKFsKICAgICAgICAgICAgICJsYW5kLWF0dGFj
aG1lbnQiLApAQCAtMTMyLDYgKzE1OCwyOSBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0
KToKICAgICAgICAgIkxhbmRlZCBwYXRjaCIsCiAgICAgICAgICJVbmFibGUgdG8gbGFuZCBwYXRj
aCIpCiAKKyAgICBkZWYgX3JlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBmbGFreV90ZXN0cyk6Cisg
ICAgICAgIHNlbGYuX2RlbGVnYXRlLnJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLl9wYXRjaCwgZmxh
a3lfdGVzdHMpCisKKyAgICBkZWYgX3Rlc3RfcGF0Y2goc2VsZik6CisgICAgICAgIGlmIHNlbGYu
X3BhdGNoLmlzX3JvbGxvdXQoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlm
IHNlbGYuX3Rlc3QoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgZmlyc3Rf
ZmFpbGluZ190ZXN0cyA9IHNlbGYuX2ZhaWxpbmdfdGVzdHNfZnJvbV9sYXN0X3J1bigpCisgICAg
ICAgIGlmIHNlbGYuX3Rlc3QoKToKKyAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9mbGFreV90ZXN0
cyhmaXJzdF9mYWlsaW5nX3Rlc3RzKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAg
ICBzZWNvbmRfZmFpbGluZ190ZXN0cyA9IHNlbGYuX2ZhaWxpbmdfdGVzdHNfZnJvbV9sYXN0X3J1
bigpCisgICAgICAgIGlmIGZpcnN0X2ZhaWxpbmdfdGVzdHMgIT0gc2Vjb25kX2ZhaWxpbmdfdGVz
dHM6CisgICAgICAgICAgICBzZWxmLl9yZXBvcnRfZmxha3lfdGVzdHMoZmlyc3RfZmFpbGluZ190
ZXN0cyArIHNlY29uZF9mYWlsaW5nX3Rlc3RzKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisK
KyAgICAgICAgaWYgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpOgorICAgICAg
ICAgICAgcmFpc2Ugc2VsZi5fc2NyaXB0X2Vycm9yICAjIFRoZSBlcnJvciBmcm9tIHRoZSBwcmV2
aW91cyAuX3Rlc3QoKSBydW4gaXMgcmVhbCwgcmVwb3J0IGl0LgorICAgICAgICByZXR1cm4gRmFs
c2UgICMgVHJlZSBtdXN0IGJlIHJlZCwganVzdCByZXRyeSBsYXRlci4KKwogICAgIGRlZiBydW4o
c2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl92YWxpZGF0ZSgpOgogICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCkBAIC0xNDEsMTIgKzE5MCw4IEBAIGNsYXNzIENvbW1pdFF1ZXVlVGFzayhvYmpl
Y3QpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2J1aWxkX3dpdGhvdXRfcGF0Y2goKToKICAg
ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3Njcmlw
dF9lcnJvcgotICAgICAgICBpZiBub3Qgc2VsZi5fcGF0Y2guaXNfcm9sbG91dCgpOgotICAgICAg
ICAgICAgaWYgbm90IHNlbGYuX3Rlc3QoKToKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5f
dGVzdCgpOgotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rf
d2l0aG91dF9wYXRjaCgpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3NjcmlwdF9lcnJvcgorICAgICAgICBpZiBu
b3Qgc2VsZi5fdGVzdF9wYXRjaCgpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAg
ICMgTWFrZSBzdXJlIHRoZSBwYXRjaCBpcyBzdGlsbCB2YWxpZCBiZWZvcmUgbGFuZGluZyAoZS5n
LiwgbWFrZSBzdXJlCiAgICAgICAgICMgbm8gb25lIGhhcyBzZXQgY29tbWl0LXF1ZXVlLSBzaW5j
ZSB3ZSBzdGFydGVkIHdvcmtpbmcgb24gdGhlIHBhdGNoLikKICAgICAgICAgaWYgbm90IHNlbGYu
X3ZhbGlkYXRlKCk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CmluZGV4IDM4YzQ3
NDc2N2NmYmE4MmFmZTY4NDhlMTkzZjQ2ZWZjODkzMDZiNWEuLjZmYTA2NjcyZWI3MzhmYzZjZjUz
M2U1Mjk4ZThiYTMwZjc3MGRhMjQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5
CkBAIC0zNiwxMSArMzYsMTEgQEAgZnJvbSB3ZWJraXRweS50b29sLmJvdC5jb21taXRxdWV1ZXRh
c2sgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wK
IAogCi1jbGFzcyBNb2NrQ29tbWl0UXVldWU6CitjbGFzcyBNb2NrQ29tbWl0UXVldWUoQ29tbWl0
UXVldWVUYXNrRGVsZWdhdGUpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcl9wbGFuKToK
ICAgICAgICAgc2VsZi5fZXJyb3JfcGxhbiA9IGVycm9yX3BsYW4KIAotICAgIGRlZiBydW5fd2Vi
a2l0X3BhdGNoKHNlbGYsIGNvbW1hbmQpOgorICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBjb21t
YW5kKToKICAgICAgICAgbG9nKCJydW5fd2Via2l0X3BhdGNoOiAlcyIgJSBjb21tYW5kKQogICAg
ICAgICBpZiBzZWxmLl9lcnJvcl9wbGFuOgogICAgICAgICAgICAgZXJyb3IgPSBzZWxmLl9lcnJv
cl9wbGFuLnBvcCgwKQpAQCAtNTYsMTIgKzU2LDIxIEBAIGNsYXNzIE1vY2tDb21taXRRdWV1ZToK
ICAgICAgICAgICAgIGZhaWx1cmVfbWVzc2FnZSwgc2NyaXB0X2Vycm9yLCBwYXRjaC5pZCgpKSkK
ICAgICAgICAgcmV0dXJuIDM5NDcKIAorICAgIGRlZiByZWZldGNoX3BhdGNoKHNlbGYsIHBhdGNo
KToKKyAgICAgICAgcmV0dXJuIHBhdGNoCisKKyAgICBkZWYgbGF5b3V0X3Rlc3RfcmVzdWx0cyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMo
c2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3RzKToKKyAgICAgICAgbG9nKCJyZXBvcnRfZmxha3lfdGVz
dHM6IHBhdGNoPSclcycgZmxha3lfdGVzdHM9JyVzJyIgJSAocGF0Y2guaWQoKSwgZmxha3lfdGVz
dHMpKQorCiAKIGNsYXNzIENvbW1pdFF1ZXVlVGFza1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgIGRlZiBfcnVuX3Rocm91Z2hfdGFzayhzZWxmLCBjb21taXRfcXVldWUsIGV4cGVjdGVkX3N0
ZGVyciwgZXhwZWN0ZWRfZXhjZXB0aW9uPU5vbmUpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2wo
bG9nX2V4ZWN1dGl2ZT1UcnVlKQogICAgICAgICBwYXRjaCA9IHRvb2wuYnVncy5mZXRjaF9hdHRh
Y2htZW50KDE5NykKLSAgICAgICAgdGFzayA9IENvbW1pdFF1ZXVlVGFzayh0b29sLCBjb21taXRf
cXVldWUsIHBhdGNoKQorICAgICAgICB0YXNrID0gQ29tbWl0UXVldWVUYXNrKGNvbW1pdF9xdWV1
ZSwgcGF0Y2gpCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCB0
YXNrLnJ1biwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfZXhjZXB0
aW9uPWV4cGVjdGVkX2V4Y2VwdGlvbikKIAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfY2FzZShzZWxm
KToKQEAgLTEyOSw2ICsxMzgsNyBAQCBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0
JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tcQogY29tbWFuZF9m
YWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0
X2Vycm9yPSdNT0NLIHRlc3RzIGZhaWx1cmUnIHBhdGNoPScxOTcnCiBydW5fd2Via2l0X3BhdGNo
OiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0
JywgJy0tcXVpZXQnLCAnLS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nl
c3NfbWVzc2FnZT0nUGFzc2VkIHRlc3RzJyBwYXRjaD0nMTk3JworcmVwb3J0X2ZsYWt5X3Rlc3Rz
OiBwYXRjaD0nMTk3JyBmbGFreV90ZXN0cz0nTm9uZScKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnbGFu
ZC1hdHRhY2htZW50JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1pZ25vcmUtYnVpbGRlcnMnLCAnLS1x
dWlldCcsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLXBhcmVudC1jb21tYW5kPWNvbW1pdC1xdWV1
ZScsIDE5N10KIGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0xhbmRlZCBwYXRjaCcg
cGF0Y2g9JzE5NycKICIiIgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKaW5kZXggNGUwMGUzZTQ1MjRiMDQ1Njg3ZWJhYjY5MDRi
NDIzZThkNWJmZGVkOC4uZjY0OTcyYzllMmVkZDc3ZWM3MzM4ZDJmMWFiMDVhYTA5MzY2YWJlMCAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1
ZXVlcy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzLnB5CkBAIC0yNyw2ICsyNyw4IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CisKIGltcG9ydCB0aW1l
CiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgb3MKQEAgLTQwLDcgKzQyLDcgQEAgZnJvbSB3ZWJr
aXRweS5jb21tb24ubmV0LnN0YXR1c3NlcnZlciBpbXBvcnQgU3RhdHVzU2VydmVyCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxv
ZwogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnN0ZXBzZXF1ZW5jZSBpbXBvcnQgU3RlcFNl
cXVlbmNlRXJyb3JIYW5kbGVyCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LmNvbW1pdHF1ZXVldGFz
ayBpbXBvcnQgQ29tbWl0UXVldWVUYXNrCitmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmNvbW1pdHF1
ZXVldGFzayBpbXBvcnQgQ29tbWl0UXVldWVUYXNrLCBDb21taXRRdWV1ZVRhc2tEZWxlZ2F0ZQog
ZnJvbSB3ZWJraXRweS50b29sLmJvdC5mZWVkZXJzIGltcG9ydCBDb21taXRRdWV1ZUZlZWRlcgog
ZnJvbSB3ZWJraXRweS50b29sLmJvdC5wYXRjaGNvbGxlY3Rpb24gaW1wb3J0IFBlcnNpc3RlbnRQ
YXRjaENvbGxlY3Rpb24sIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb25EZWxlZ2F0ZQogZnJvbSB3
ZWJraXRweS50b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBvcnQgUXVldWVFbmdpbmUsIFF1ZXVlRW5n
aW5lRGVsZWdhdGUKQEAgLTIxMSw3ICsyMTMsNyBAQCBjbGFzcyBBYnN0cmFjdFBhdGNoUXVldWUo
QWJzdHJhY3RRdWV1ZSk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5fbG9nX2Rp
cmVjdG9yeSgpLCAiJXMubG9nIiAlIHBhdGNoLmJ1Z19pZCgpKQogCiAKLWNsYXNzIENvbW1pdFF1
ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyKToKK2NsYXNz
IENvbW1pdFF1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVy
LCBDb21taXRRdWV1ZVRhc2tEZWxlZ2F0ZSk6CiAgICAgbmFtZSA9ICJjb21taXQtcXVldWUiCiAK
ICAgICAjIEFic3RyYWN0UGF0Y2hRdWV1ZSBtZXRob2RzCkBAIC0yMzMsNyArMjM1LDcgQEAgY2xh
c3MgQ29tbWl0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRs
ZXIpOgogCiAgICAgZGVmIHByb2Nlc3Nfd29ya19pdGVtKHNlbGYsIHBhdGNoKToKICAgICAgICAg
c2VsZi5fY2Nfd2F0Y2hlcnMocGF0Y2guYnVnX2lkKCkpCi0gICAgICAgIHRhc2sgPSBDb21taXRR
dWV1ZVRhc2soc2VsZi5fdG9vbCwgc2VsZiwgcGF0Y2gpCisgICAgICAgIHRhc2sgPSBDb21taXRR
dWV1ZVRhc2soc2VsZiwgcGF0Y2gpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHRhc2su
cnVuKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fZGlkX3Bhc3MocGF0Y2gpCkBAIC0yNDQsOSAr
MjQ2LDIwIEBAIGNsYXNzIENvbW1pdFF1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVl
bmNlRXJyb3JIYW5kbGVyKToKICAgICAgICAgICAgIHZhbGlkYXRvci5yZWplY3RfcGF0Y2hfZnJv
bV9jb21taXRfcXVldWUocGF0Y2guaWQoKSwgc2VsZi5fZXJyb3JfbWVzc2FnZV9mb3JfYnVnKHRh
c2suZmFpbHVyZV9zdGF0dXNfaWQsIGUpKQogICAgICAgICAgICAgc2VsZi5fZGlkX2ZhaWwocGF0
Y2gpCiAKKyAgICBkZWYgX2Vycm9yX21lc3NhZ2VfZm9yX2J1ZyhzZWxmLCBzdGF0dXNfaWQsIHNj
cmlwdF9lcnJvcik6CisgICAgICAgIGlmIG5vdCBzY3JpcHRfZXJyb3Iub3V0cHV0OgorICAgICAg
ICAgICAgcmV0dXJuIHNjcmlwdF9lcnJvci5tZXNzYWdlX3dpdGhfb3V0cHV0KCkKKyAgICAgICAg
cmVzdWx0c19saW5rID0gc2VsZi5fdG9vbC5zdGF0dXNfc2VydmVyLnJlc3VsdHNfdXJsX2Zvcl9z
dGF0dXMoc3RhdHVzX2lkKQorICAgICAgICByZXR1cm4gIiVzXG5GdWxsIG91dHB1dDogJXMiICUg
KHNjcmlwdF9lcnJvci5tZXNzYWdlX3dpdGhfb3V0cHV0KCksIHJlc3VsdHNfbGluaykKKwogICAg
IGRlZiBoYW5kbGVfdW5leHBlY3RlZF9lcnJvcihzZWxmLCBwYXRjaCwgbWVzc2FnZSk6CiAgICAg
ICAgIHNlbGYuY29tbWl0dGVyX3ZhbGlkYXRvci5yZWplY3RfcGF0Y2hfZnJvbV9jb21taXRfcXVl
dWUocGF0Y2guaWQoKSwgbWVzc2FnZSkKIAorICAgICMgQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUg
bWV0aG9kcworCisgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgorICAgICAgICBz
ZWxmLnJ1bl93ZWJraXRfcGF0Y2goY29tbWFuZCkKKwogICAgIGRlZiBjb21tYW5kX3Bhc3NlZChz
ZWxmLCBtZXNzYWdlLCBwYXRjaCk6CiAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMobWVzc2Fn
ZSwgcGF0Y2g9cGF0Y2gpCiAKQEAgLTI1NCwxMSArMjY3LDIyIEBAIGNsYXNzIENvbW1pdFF1ZXVl
KEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyKToKICAgICAgICAg
ZmFpbHVyZV9sb2cgPSBzZWxmLl9sb2dfZnJvbV9zY3JpcHRfZXJyb3JfZm9yX3VwbG9hZChzY3Jp
cHRfZXJyb3IpCiAgICAgICAgIHJldHVybiBzZWxmLl91cGRhdGVfc3RhdHVzKG1lc3NhZ2UsIHBh
dGNoPXBhdGNoLCByZXN1bHRzX2ZpbGU9ZmFpbHVyZV9sb2cpCiAKLSAgICBkZWYgX2Vycm9yX21l
c3NhZ2VfZm9yX2J1ZyhzZWxmLCBzdGF0dXNfaWQsIHNjcmlwdF9lcnJvcik6Ci0gICAgICAgIGlm
IG5vdCBzY3JpcHRfZXJyb3Iub3V0cHV0OgotICAgICAgICAgICAgcmV0dXJuIHNjcmlwdF9lcnJv
ci5tZXNzYWdlX3dpdGhfb3V0cHV0KCkKLSAgICAgICAgcmVzdWx0c19saW5rID0gc2VsZi5fdG9v
bC5zdGF0dXNfc2VydmVyLnJlc3VsdHNfdXJsX2Zvcl9zdGF0dXMoc3RhdHVzX2lkKQotICAgICAg
ICByZXR1cm4gIiVzXG5GdWxsIG91dHB1dDogJXMiICUgKHNjcmlwdF9lcnJvci5tZXNzYWdlX3dp
dGhfb3V0cHV0KCksIHJlc3VsdHNfbGluaykKKyAgICAjIEZJWE1FOiBUaGlzIG1heSBiZWxvbmcg
b24gdGhlIFBvcnQgb2JqZWN0LgorICAgIGRlZiBsYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYpOgor
ICAgICAgICByZXN1bHRzX3BhdGggPSBzZWxmLl90b29sLnBvcnQoKS5sYXlvdXRfdGVzdF9yZXN1
bHRzX3BhdGgoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEZJWE1FOiBXZSBuZWVkIGEg
bmljZSBvcGVuKCkgYWJzdHJhY3Rpb24gZm9yIGJldHRlciBtb2NraW5nIGhlcmUuCisgICAgICAg
ICAgICB3aXRoIGNvZGVjcy5vcGVuKHJlc3VsdHNfcGF0aCwgInIiLCAidXRmLTgiKSBhcyByZXN1
bHRzX2ZpbGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIExheW91dFRlc3RSZXN1bHRzLnJlc3Vs
dHNfZnJvbV9zdHJpbmcocmVzdWx0c19maWxlKQorICAgICAgICBleGNlcHQgT1NFcnJvciwgZTog
ICMgRmlsZSBkb2VzIG5vdCBleGlzdCBvciBjYW4ndCBiZSByZWFkLgorICAgICAgICAgICAgcmV0
dXJuIE5vbmUKKworICAgIGRlZiByZWZldGNoX3BhdGNoKHNlbGYsIHBhdGNoKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3Rvb2wuYnVncy5mZXRjaF9hdHRhY2htZW50KHBhdGNoLmlkKCkpCisKKyAg
ICBkZWYgcmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYsIHBhdGNoLCBmbGFreV90ZXN0cyk6CisgICAg
ICAgIG1lc3NhZ2UgPSAiVGhlICVzIGVuY291bnRlcmVkIHRoZSBmb2xsb3dpbmcgZmxha3kgdGVz
dHMgd2hpbGUgcHJvY2Vzc2luZyBhdHRhY2htZW50ICVzOlxuXG4lc1xuXG5QbGVhc2UgZmlsZSBi
dWdzIGFnYWluc3QgdGhlIHRlc3RzLiAgVGhlIGNvbW1pdC1xdWV1ZSBpcyBjb250aW51aW5nIHRv
IHByb2Nlc3MgeW91ciBwYXRjaC4iICUgKHNlbGYubmFtZSwgcGF0Y2guaWQoKSwgZmxha3lfdGVz
dHMpCisgICAgICAgIHNlbGYuX3Rvb2wuYnVncy5wb3N0X2NvbW1lbnRfdG9fYnVnKHBhdGNoLmJ1
Z19pZCgpLCBtZXNzYWdlLCBjYz1zZWxmLndhdGNoZXJzKQogCiAgICAgIyBTdGVwU2VxdWVuY2VF
cnJvckhhbmRsZXIgbWV0aG9kcwogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQppbmRleCBkNjgw
MDk4MTM2YjAyZDNjOTk4ZTkwOGY2NzliNjEyMzhiMDc3ZWFhLi5jOGY2M2VjMjE5MjM0YjUzOWU3
MjY2MjY5MmIyMWM0YTJjNmM5MDIwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKQEAgLTE4
Myw3ICsxODMsMjAgQEAgY2xhc3MgQWx3YXlzQ29tbWl0UXVldWVUb29sKG9iamVjdCk6CiAKIAog
Y2xhc3MgU2Vjb25kVGhvdWdodHNDb21taXRRdWV1ZShDb21taXRRdWV1ZSk6Ci0gICAgZGVmIF9i
dWlsZF9hbmRfdGVzdF9wYXRjaChzZWxmLCBwYXRjaCwgZmlyc3RfcnVuPVRydWUpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fcmVqZWN0X3BhdGNoID0gRmFsc2UKKyAg
ICAgICAgQ29tbWl0UXVldWUuX19pbml0X18oc2VsZikKKworICAgIGRlZiBydW5fY29tbWFuZChz
ZWxmLCBjb21tYW5kKToKKyAgICAgICAgIyBXZSB3YW50IHRvIHJlamVjdCB0aGUgcGF0Y2ggYWZ0
ZXIgdGhlIGZpcnN0IHZhbGlkYXRpb24sCisgICAgICAgICMgc28gd2FpdCB0byByZWplY3QgaXQg
dW50aWwgYWZ0ZXIgc29tZSBvdGhlciBjb21tYW5kIGhhcyBydW4uCisgICAgICAgIHNlbGYuX3Jl
amVjdF9wYXRjaCA9IFRydWUKKyAgICAgICAgcmV0dXJuIENvbW1pdFF1ZXVlLnJ1bl9jb21tYW5k
KHNlbGYsIGNvbW1hbmQpCisKKyAgICBkZWYgcmVmZXRjaF9wYXRjaChzZWxmLCBwYXRjaCk6Cisg
ICAgICAgIGlmIG5vdCBzZWxmLl9yZWplY3RfcGF0Y2g6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQocGF0Y2guaWQoKSkKKwogICAgICAgICBhdHRh
Y2htZW50X2RpY3Rpb25hcnkgPSB7CiAgICAgICAgICAgICAiaWQiOiBwYXRjaC5pZCgpLAogICAg
ICAgICAgICAgImJ1Z19pZCI6IHBhdGNoLmJ1Z19pZCgpLApAQCAtMTk2LDkgKzIwOSw3IEBAIGNs
YXNzIFNlY29uZFRob3VnaHRzQ29tbWl0UXVldWUoQ29tbWl0UXVldWUpOgogICAgICAgICAgICAg
ImNvbW1pdHRlcl9lbWFpbCI6ICJmb29AYmFyLmNvbSIsCiAgICAgICAgICAgICAiYXR0YWNoZXJf
ZW1haWwiOiAiQ29udHJpYnV0ZXIxIiwKICAgICAgICAgfQotICAgICAgICBwYXRjaCA9IEF0dGFj
aG1lbnQoYXR0YWNobWVudF9kaWN0aW9uYXJ5LCBOb25lKQotICAgICAgICBzZWxmLl90b29sLmJ1
Z3Muc2V0X292ZXJyaWRlX3BhdGNoKHBhdGNoKQotICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAg
ICByZXR1cm4gQXR0YWNobWVudChhdHRhY2htZW50X2RpY3Rpb25hcnksIE5vbmUpCiAKIAogY2xh
c3MgQ29tbWl0UXVldWVUZXN0KFF1ZXVlc1Rlc3QpOgpAQCAtMzA2LDExICszMTcsMjUgQEAgTU9D
SzogdXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIFBhc3MKICAgICAgICAgZXhwZWN0ZWRfc3Rk
ZXJyID0gIiIiTU9DSzogdXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIEFwcGxpZWQgcGF0Y2gK
IE1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBCdWlsdCBwYXRjaAogTU9DSzogdXBk
YXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIFBhc3NlZCB0ZXN0cwotTU9DSzogdXBkYXRlX3N0YXR1
czogY29tbWl0LXF1ZXVlIExhbmRlZCBwYXRjaAotTU9DSzogdXBkYXRlX3N0YXR1czogY29tbWl0
LXF1ZXVlIFBhc3MKK01PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBSZXRyeQogIiIi
CiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBxdWV1ZS5wcm9j
ZXNzX3dvcmtfaXRlbSwgW01vY2tQYXRjaCgpXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0
ZGVycikKIAorICAgIGRlZiB0ZXN0X3JlcG9ydF9mbGFreV90ZXN0cyhzZWxmKToKKyAgICAgICAg
cXVldWUgPSBDb21taXRRdWV1ZSgpCisgICAgICAgIHF1ZXVlLmJpbmRfdG9fdG9vbChNb2NrVG9v
bCgpKQorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJNT0NLIGJ1ZyBjb21tZW50OiBidWdf
aWQ9MTQyLCBjYz1bXQorLS0tIEJlZ2luIGNvbW1lbnQgLS0tCitUaGUgY29tbWl0LXF1ZXVlIGVu
Y291bnRlcmVkIHRoZSBmb2xsb3dpbmcgZmxha3kgdGVzdHMgd2hpbGUgcHJvY2Vzc2luZyBhdHRh
Y2htZW50IDE5NzoKKworWydmb28vYmFyLmh0bWwnLCAnYmFyL2Jhei5odG1sJ10KKworUGxlYXNl
IGZpbGUgYnVncyBhZ2FpbnN0IHRoZSB0ZXN0cy4gIFRoZSBjb21taXQtcXVldWUgaXMgY29udGlu
dWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guCistLS0gRW5kIGNvbW1lbnQgLS0tCisKKyIiIgor
ICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcXVldWUucmVwb3J0
X2ZsYWt5X3Rlc3RzLCBbTW9ja1BhdGNoKCksIFsiZm9vL2Jhci5odG1sIiwgImJhci9iYXouaHRt
bCJdXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKwogCiBjbGFzcyBSaWV0dmVs
ZFVwbG9hZFF1ZXVlVGVzdChRdWV1ZXNUZXN0KToKICAgICBkZWYgdGVzdF9yaWV0dmVsZF91cGxv
YWRfcXVldWUoc2VsZik6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvbWFpbi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5
CmluZGV4IDcyMWJmNTllMDRjYWZiNjUwYmVjMGQ4NmJhNjcyYTcwZDhhMDBiZjEuLmNlNjY2NmUy
MjA4NTdhYjllODJiMmIyNmU3OGZiNjdhODdjZmNlNjAgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9tYWluLnB5CkBAIC0zNCw2ICszNCw3IEBAIGltcG9ydCB0aHJlYWRpbmcK
IAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuYXBpIGltcG9ydCBDaGVja291dAogZnJv
bSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBkZWZhdWx0X3NjbQorZnJvbSB3
ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGltcG9ydCBXZWJLaXRQb3J0CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5uZXQuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5u
ZXQucmlldHZlbGQgaW1wb3J0IFJpZXR2ZWxkCkBAIC01Miw3ICs1Myw2IEBAIGZyb20gd2Via2l0
cHkudG9vbC5jb21tYW5kcy5xdWV1ZXMgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5jb21t
YW5kcy5zaGVyaWZmYm90IGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMudXBs
b2FkIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQg
TXVsdGlDb21tYW5kVG9vbAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRf
bG9nZ2luZyBpbXBvcnQgbG9nCiAKIAogY2xhc3MgV2ViS2l0UGF0Y2goTXVsdGlDb21tYW5kVG9v
bCk6CkBAIC03NCw2ICs3NCw3IEBAIGNsYXNzIFdlYktpdFBhdGNoKE11bHRpQ29tbWFuZFRvb2wp
OgogICAgICAgICBzZWxmLmJ1aWxkYm90ID0gQnVpbGRCb3QoKQogICAgICAgICBzZWxmLmV4ZWN1
dGl2ZSA9IEV4ZWN1dGl2ZSgpCiAgICAgICAgIHNlbGYuX2lyYyA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5fcG9ydCA9IE5vbmUKICAgICAgICAgc2VsZi51c2VyID0gVXNlcigpCiAgICAgICAgIHNlbGYu
X3NjbSA9IE5vbmUKICAgICAgICAgc2VsZi5fY2hlY2tvdXQgPSBOb25lCkBAIC05Miw2ICs5Myw5
IEBAIGNsYXNzIFdlYktpdFBhdGNoKE11bHRpQ29tbWFuZFRvb2wpOgogICAgICAgICAgICAgc2Vs
Zi5fY2hlY2tvdXQgPSBDaGVja291dChzZWxmLnNjbSgpKQogICAgICAgICByZXR1cm4gc2VsZi5f
Y2hlY2tvdXQKIAorICAgIGRlZiBwb3J0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcG9y
dAorCiAgICAgZGVmIGVuc3VyZV9pcmNfY29ubmVjdGVkKHNlbGYsIGlyY19kZWxlZ2F0ZSk6CiAg
ICAgICAgIGlmIG5vdCBzZWxmLl9pcmM6CiAgICAgICAgICAgICBzZWxmLl9pcmMgPSBJUkNQcm94
eShpcmNfZGVsZWdhdGUpCkBAIC0xMjksNiArMTMzLDggQEAgY2xhc3MgV2ViS2l0UGF0Y2goTXVs
dGlDb21tYW5kVG9vbCk6CiAgICAgICAgICAgICBzZWxmLnN0YXR1c19zZXJ2ZXIuc2V0X2JvdF9p
ZChvcHRpb25zLmJvdF9pZCkKICAgICAgICAgaWYgb3B0aW9ucy5pcmNfcGFzc3dvcmQ6CiAgICAg
ICAgICAgICBzZWxmLmlyY19wYXNzd29yZCA9IG9wdGlvbnMuaXJjX3Bhc3N3b3JkCisgICAgICAg
ICMgSWYgb3B0aW9ucy5wb3J0IGlzIE5vbmUsIHdlJ2xsIGdldCB0aGUgZGVmYXVsdCBwb3J0IGZv
ciB0aGlzIHBsYXRmb3JtLgorICAgICAgICBzZWxmLl9wb3J0ID0gV2ViS2l0UG9ydC5wb3J0KG9w
dGlvbnMucG9ydCkKIAogICAgIGRlZiBzaG91bGRfZXhlY3V0ZV9jb21tYW5kKHNlbGYsIGNvbW1h
bmQpOgogICAgICAgICBpZiBjb21tYW5kLnJlcXVpcmVzX2xvY2FsX2NvbW1pdHMgYW5kIG5vdCBz
ZWxmLnNjbSgpLnN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQppbmRleCBmODRlYzJiMzJkYzI5NTU2NTY1NzM2
YjkwOTVhNjRkMDc1MTVjMTk2Li5mYjQ5ZGI5NjQ3MDI1MzQxYjkwNzg1ZmY5ZjFlOTE1MjVlMzMw
N2IzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rv
b2wucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5
CkBAIC0zMCw2ICszMCw3IEBAIGltcG9ydCBvcwogaW1wb3J0IHRocmVhZGluZwogCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdCwgUmV2
aWV3ZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5wb3J0cyBpbXBvcnQgTWFjUG9ydAog
ZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY29tbWl0aW5mbyBpbXBvcnQgQ29tbWl0SW5m
bwogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBDb21taXRNZXNzYWdl
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEJ1ZywgQXR0YWNobWVu
dApAQCAtNjQ1LDYgKzY0NiwxMCBAQCBjbGFzcyBNb2NrVG9vbCgpOgogICAgIGRlZiBwYXRoKHNl
bGYpOgogICAgICAgICByZXR1cm4gImVjaG8iCiAKKyAgICBkZWYgcG9ydChzZWxmKToKKyAgICAg
ICAgIyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgYSBtb2NrIGhlcmUuCisgICAgICAgIHJldHVybiBN
YWNQb3J0CisKIAogY2xhc3MgTW9ja0Jyb3dzZXIob2JqZWN0KToKICAgICBwYXJhbXMgPSB7fQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3Ry
YWN0c3RlcC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0
cmFjdHN0ZXAucHkKaW5kZXggOWNlYjJjYmQwZDEyZjEyNjg1ZjJkZjU0ZmVmZTAyM2E4MjBhNTcw
MS4uMDJhODc2YWE1ZDA0MmVmOWEyMzhlZWNhODUxZDZmMzAxNjViMWIxOSAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVw
LnB5CkBAIC0zNiwyMyArMzYsMTUgQEAgY2xhc3MgQWJzdHJhY3RTdGVwKG9iamVjdCk6CiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMpOgogICAgICAgICBzZWxmLl90b29sID0g
dG9vbAogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9wb3J0
ID0gTm9uZQogCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRvb2wucG9ydCgpCiAgICAg
ZGVmIF9ydW5fc2NyaXB0KHNlbGYsIHNjcmlwdF9uYW1lLCBhcmdzPU5vbmUsIHF1aWV0PUZhbHNl
LCBwb3J0PVdlYktpdFBvcnQpOgogICAgICAgICBsb2coIlJ1bm5pbmcgJXMiICUgc2NyaXB0X25h
bWUpCiAgICAgICAgIGNvbW1hbmQgPSBbcG9ydC5zY3JpcHRfcGF0aChzY3JpcHRfbmFtZSldCiAg
ICAgICAgIGlmIGFyZ3M6CiAgICAgICAgICAgICBjb21tYW5kLmV4dGVuZChhcmdzKQotICAgICAg
ICAjIEZJWE1FOiBUaGlzIHNob3VsZCB1c2Ugc2VsZi5wb3J0KCkKICAgICAgICAgc2VsZi5fdG9v
bC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGNvbW1hbmQsIHF1aWV0KQogCi0gICAg
IyBGSVhNRTogVGhlIHBvcnQgc2hvdWxkIGxpdmUgb24gdGhlIHRvb2wuCi0gICAgZGVmIHBvcnQo
c2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX3BvcnQ6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5f
cG9ydAotICAgICAgICBzZWxmLl9wb3J0ID0gV2ViS2l0UG9ydC5wb3J0KHNlbGYuX29wdGlvbnMu
cG9ydCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQKLQogICAgIF93ZWxsX2tub3duX2tleXMg
PSB7CiAgICAgICAgICJkaWZmIjogbGFtYmRhIHNlbGYsIHN0YXRlOiBzZWxmLl90b29sLnNjbSgp
LmNyZWF0ZV9wYXRjaChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpLAogICAgICAgICAiY2hhbmdl
bG9ncyI6IGxhbWJkYSBzZWxmLCBzdGF0ZTogc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVk
X2NoYW5nZWxvZ3Moc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KSwKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9idWlsZC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9idWlsZC5weQppbmRleCA0NTZkYjI1MzliY2Qy
MDJkZjNjYjc1ZmEzMmZmZTMzOTMwOTEzMWZhLi4wOTkwYjhiMzM0ZTY1OGYxZDZmZGIwNjcxOGU0
M2NkMGFhMDAwYTYwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvYnVpbGQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2J1aWxkLnB5CkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEJ1aWxkKEFic3RyYWN0U3Rl
cCk6CiAgICAgICAgIF0KIAogICAgIGRlZiBidWlsZChzZWxmLCBidWlsZF9zdHlsZSk6Ci0gICAg
ICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLnBvcnQo
KS5idWlsZF93ZWJraXRfY29tbWFuZChidWlsZF9zdHlsZT1idWlsZF9zdHlsZSksIHNlbGYuX29w
dGlvbnMucXVpZXQpCisgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3df
aWZfZmFpbChzZWxmLl90b29sLnBvcnQoKS5idWlsZF93ZWJraXRfY29tbWFuZChidWlsZF9zdHls
ZT1idWlsZF9zdHlsZSksIHNlbGYuX29wdGlvbnMucXVpZXQpCiAKICAgICBkZWYgcnVuKHNlbGYs
IHN0YXRlKToKICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuYnVpbGQ6CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxv
Zy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hh
bmdlbG9nLnB5CmluZGV4IDZhNjk2MGEwNGIzNmU4YzFkOGE5YWU2ZWU2YzkxY2IxYzYyODRiNTgu
LjAzODI3Mzg4NmQ2NGY1MzY3ODlmOGVmOGZiMzBlODFhYjQ1N2RhNGMgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hh
bmdlbG9nLnB5CkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2coQWJzdHJh
Y3RTdGVwKToKICAgICAgICAgICAgIHNlbGYuX2Vuc3VyZV9idWdfdXJsKHN0YXRlKQogICAgICAg
ICAgICAgcmV0dXJuCiAgICAgICAgIG9zLmNoZGlyKHNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRf
cm9vdCkKLSAgICAgICAgYXJncyA9IFtzZWxmLnBvcnQoKS5zY3JpcHRfcGF0aCgicHJlcGFyZS1D
aGFuZ2VMb2ciKV0KKyAgICAgICAgYXJncyA9IFtzZWxmLl90b29sLnBvcnQoKS5zY3JpcHRfcGF0
aCgicHJlcGFyZS1DaGFuZ2VMb2ciKV0KICAgICAgICAgaWYgc3RhdGUuZ2V0KCJidWdfaWQiKToK
ICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLWJ1Zz0lcyIgJSBzdGF0ZVsiYnVnX2lkIl0pCiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZW1haWw6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkKaW5kZXggNmZjOTRhMWE3NGEwNDdl
MGRhZjlkYzQ2MzNiODdkNmUwMGY5NTVlZS4uZGNiZmM0NDc1YWUyZDBhMjU5OTc2MzVjZTEwMDg2
NTkxZTg0OTAyOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL3J1bnRlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9ydW50ZXN0cy5weQpAQCAtNDUsMTcgKzQ1LDE3IEBAIGNsYXNzIFJ1blRlc3RzKEFi
c3RyYWN0U3RlcCk6CiAKICAgICAgICAgIyBSdW4gdGhlIHNjcmlwdGluZyB1bml0IHRlc3RzIGZp
cnN0IGJlY2F1c2UgdGhleSdyZSBxdWlja2VzdC4KICAgICAgICAgbG9nKCJSdW5uaW5nIFB5dGhv
biB1bml0IHRlc3RzIikKLSAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJv
d19pZl9mYWlsKHNlbGYucG9ydCgpLnJ1bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQoKSkKKyAg
ICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHNlbGYuX3Rv
b2wucG9ydCgpLnJ1bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQoKSkKICAgICAgICAgbG9nKCJS
dW5uaW5nIFBlcmwgdW5pdCB0ZXN0cyIpCi0gICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1
bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLnBvcnQoKS5ydW5fcGVybF91bml0dGVzdHNfY29tbWFu
ZCgpKQorICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwo
c2VsZi5fdG9vbC5wb3J0KCkucnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoKSkKIAotICAgICAg
ICBqYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kID0gc2VsZi5wb3J0KCkucnVuX2phdmFzY3Jp
cHRjb3JlX3Rlc3RzX2NvbW1hbmQoKQorICAgICAgICBqYXZhc2NyaXB0Y29yZV90ZXN0c19jb21t
YW5kID0gc2VsZi5fdG9vbC5wb3J0KCkucnVuX2phdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQo
KQogICAgICAgICBpZiBqYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kOgogICAgICAgICAgICAg
bG9nKCJSdW5uaW5nIEphdmFTY3JpcHRDb3JlIHRlc3RzIikKICAgICAgICAgICAgIHNlbGYuX3Rv
b2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChqYXZhc2NyaXB0Y29yZV90ZXN0c19j
b21tYW5kLCBxdWlldD1UcnVlKQogCiAgICAgICAgIGxvZygiUnVubmluZyBydW4td2Via2l0LXRl
c3RzIikKLSAgICAgICAgYXJncyA9IHNlbGYucG9ydCgpLnJ1bl93ZWJraXRfdGVzdHNfY29tbWFu
ZCgpCisgICAgICAgIGFyZ3MgPSBzZWxmLl90b29sLnBvcnQoKS5ydW5fd2Via2l0X3Rlc3RzX2Nv
bW1hbmQoKQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKICAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKCItLW5vLWxhdW5jaC1zYWZhcmkiKQogICAgICAgICAgICAgYXJn
cy5hcHBlbmQoIi0tZXhpdC1hZnRlci1uLWZhaWx1cmVzPTEiKQpAQCAtNjMsNyArNjMsNyBAQCBj
bGFzcyBSdW5UZXN0cyhBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgIyBGSVhNRTogSGFjayB0
byB3b3JrIGFyb3VuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg5
MTIKICAgICAgICAgICAgICMgd2hlbiBydW5uaW5nIHRoZSBjb21taXQtcXVldWUgb24gYSBtYWMg
bGVvcGFyZCBtYWNoaW5lIHNpbmNlIGNvbXBvc2l0aW5nCiAgICAgICAgICAgICAjIGRvZXMgbm90
IHdvcmsgcmVsaWFibHkgb24gTGVvcGFyZCBkdWUgdG8gdmFyaW91cyBncmFwaGljcyBkcml2ZXIv
c3lzdGVtIGJ1Z3MuCi0gICAgICAgICAgICBpZiBzZWxmLnBvcnQoKS5uYW1lKCkgPT0gIk1hYyIg
YW5kIHNlbGYucG9ydCgpLmlzX2xlb3BhcmQoKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3Rvb2wu
cG9ydCgpLm5hbWUoKSA9PSAiTWFjIiBhbmQgc2VsZi5fdG9vbC5wb3J0KCkuaXNfbGVvcGFyZCgp
OgogICAgICAgICAgICAgICAgIHRlc3RzX3RvX2lnbm9yZSA9IFtdCiAgICAgICAgICAgICAgICAg
dGVzdHNfdG9faWdub3JlLmFwcGVuZCgiY29tcG9zaXRpbmciKQogCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkK
aW5kZXggMTVmMjc1YWQ4ZDMyNTY2ZmQ0NDVlNTU2Mzk4YTUxNjZkMDE4MzZkMS4uNjk1NzVkYjYy
ZTEyM2I0OGRiZGIzMjhkMWFiNjRmZGQ5ZDE0MjFkOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weQpAQCAt
NTcsMTkgKzU3LDIwIEBAIGNsYXNzIFN0ZXBzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIHRvb2wudXNlci5wcm9tcHQgPSBsYW1iZGEgbWVzc2FnZTogNDIKICAgICAgICAgc2VsZi5f
cnVuX3N0ZXAoUHJvbXB0Rm9yQnVnT3JUaXRsZSwgdG9vbD10b29sKQogCi0gICAgZGVmIHRlc3Rf
cnVudGVzdHNfbGVvcGFyZF9jb21taXRfcXVldWVfaGFjayhzZWxmKToKKyAgICBkZWYgdGVzdF9y
dW50ZXN0c19sZW9wYXJkX2NvbW1pdF9xdWV1ZV9oYWNrX3N0ZXAoc2VsZik6CiAgICAgICAgIGV4
cGVjdGVkX3N0ZGVyciA9ICJSdW5uaW5nIFB5dGhvbiB1bml0IHRlc3RzXG5SdW5uaW5nIFBlcmwg
dW5pdCB0ZXN0c1xuUnVubmluZyBKYXZhU2NyaXB0Q29yZSB0ZXN0c1xuUnVubmluZyBydW4td2Vi
a2l0LXRlc3RzXG4iCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxm
LCBzZWxmLl9ydW5fc3RlcCwgW1J1blRlc3RzXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0
ZGVycikKIAotICAgIGRlZiB0ZXN0X3J1bnRlc3RzX2xlb3BhcmRfY29tbWl0X3F1ZXVlX2hhY2so
c2VsZik6CisgICAgZGVmIHRlc3RfcnVudGVzdHNfbGVvcGFyZF9jb21taXRfcXVldWVfaGFja19j
b21tYW5kKHNlbGYpOgogICAgICAgICBtb2NrX29wdGlvbnMgPSBNb2NrT3B0aW9ucygpCiAgICAg
ICAgIG1vY2tfb3B0aW9ucy5ub25faW50ZXJhY3RpdmUgPSBUcnVlCi0gICAgICAgIHN0ZXAgPSBS
dW5UZXN0cyhNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpLCBtb2NrX29wdGlvbnMpCiAgICAg
ICAgICMgRklYTUU6IFdlIHNob3VsZG4ndCB1c2UgYSByZWFsIHBvcnQtb2JqZWN0IGhlcmUsIGJ1
dCB0aGVyZSBpcyB0b28gbXVjaCB0byBtb2NrIGF0IHRoZSBtb21lbnQuCiAgICAgICAgIG1vY2tf
cG9ydCA9IFdlYktpdFBvcnQoKQogICAgICAgICBtb2NrX3BvcnQubmFtZSA9IGxhbWJkYTogIk1h
YyIKICAgICAgICAgbW9ja19wb3J0LmlzX2xlb3BhcmQgPSBsYW1iZGE6IFRydWUKLSAgICAgICAg
c3RlcC5wb3J0ID0gbGFtYmRhOiBtb2NrX3BvcnQKKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKGxv
Z19leGVjdXRpdmU9VHJ1ZSkKKyAgICAgICAgdG9vbC5wb3J0ID0gbGFtYmRhOiBtb2NrX3BvcnQK
KyAgICAgICAgc3RlcCA9IFJ1blRlc3RzKHRvb2wsIG1vY2tfb3B0aW9ucykKICAgICAgICAgZXhw
ZWN0ZWRfc3RkZXJyID0gIiIiUnVubmluZyBQeXRob24gdW5pdCB0ZXN0cwogTU9DSyBydW5fYW5k
X3Rocm93X2lmX2ZhaWw6IFsnV2ViS2l0VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5J10KIFJ1
bm5pbmcgUGVybCB1bml0IHRlc3RzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL3VwZGF0ZS5weQppbmRleCA4YzI5MGY5N2IxMGNjMmE5OGI5MTMyY2QwNjc2
ZjgyOTkxMGYyYTYwLi5jZDFkNGQ4YTljOWRmMWRlZTEyMzQ1ZTUwNmQxZmViY2JhODE3NWIwIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRl
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGUu
cHkKQEAgLTQyLDQgKzQyLDQgQEAgY2xhc3MgVXBkYXRlKEFic3RyYWN0U3RlcCk6CiAgICAgICAg
IGlmIG5vdCBzZWxmLl9vcHRpb25zLnVwZGF0ZToKICAgICAgICAgICAgIHJldHVybgogICAgICAg
ICBsb2coIlVwZGF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5IikKLSAgICAgICAgc2VsZi5fdG9vbC5l
eGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHNlbGYucG9ydCgpLnVwZGF0ZV93ZWJraXRf
Y29tbWFuZCgpLCBxdWlldD1UcnVlKQorICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5f
YW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5fdG9vbC5wb3J0KCkudXBkYXRlX3dlYmtpdF9jb21tYW5k
KCksIHF1aWV0PVRydWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70759</attachid>
            <date>2010-10-14 11:32:53 -0700</date>
            <delta_ts>2010-10-15 06:32:04 -0700</delta_ts>
            <desc>Fix typo in CommitQueue.layout_test_results (untestable)</desc>
            <filename>bug-47647-20101014113251.patch</filename>
            <type>text/plain</type>
            <size>34103</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5M2Y0NmU0ZmYwZWUzMWM3YThjYWVjOTJmZmY0YmVkNDdjMmNkNmI4Li5lOTAxNWE1
ZDIzZmUyZmIwODk0MzgxNDhlNDA3YTkzZTZmMDE4NGYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMTAtMTAtMTQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdC1xdWV1ZSBzaG91bGQg
bm90IGZhaWwgcGF0Y2hlcyBkdWUgdG8gZmxha3kgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjQ3CisKKyAgICAgICAgVGhpcyBwYXRjaCBt
YWtlcyBpdCBzbyB0aGF0IHRoZSAqc2FtZSogZmxha3kgdGVzdCBoYXMgdG8gZmFpbAorICAgICAg
ICB0d2ljZSBpbiBhIHJvdyB0byBoYXZlIGEgZmFsc2UgbmVnYXRpdmUgZnJvbSBhIGZsYWt5IHRl
c3QuCisKKyAgICAgICAgSWYgZGlmZmVyZW50IGZsYWt5IHRlc3RzIGZhaWwgKG9yIGlmIGEgdGVz
dCBmYWlscyBhbmQgdGhlbiBwYXNzZXMKKyAgICAgICAgaW4gYSBzZWNvbmQgcnVuKSB0aGVuIHdl
IHdpbGwgd2FybiBpbiB0aGUgYnVnIHRoYXQgd2UgZW5jb3VudGVyZWQKKyAgICAgICAgYSBmbGFr
eSB0ZXN0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZ3JldyB0byBpbmNsdWRlIG1vdmluZyBwb3J0
IG9mZiBvZiBzdGVwcyBvbnRvIHRvb2wKKyAgICAgICAgKHdoaWNoIEFkYW0gd3JvdGUgYW5kIHRo
ZW4gSSBpbnRlZ3JhdGVkKSwgYXMgd2VsbCBhcyByZW1vdmluZyB0aGUKKyAgICAgICAgdXNlIG9m
IHRvb2wgZnJvbSBDb21taXRRdWV1ZVRhc2suCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvcG9ydHMucHk6CisgICAgICAgICAtIEFkZGVkIGEgbGF5b3V0X3Rlc3Rf
cmVzdWx0c19wYXRoIG1ldGhvZC4gIFRoaXMgY292ZXJzIG9sZC1ydW4td2Via2l0LXRlc3RzCisg
ICAgICAgICAgIGJ1dCBkb2Vzbid0IGNvdmVyIE5SV1QuICBUaGlzIGlzIHByb2JhYmx5IG5vdCB0
aGUgbG9uZyB0ZXJtIHNvbHV0aW9uLCBidXQKKyAgICAgICAgICAgcHV0dGluZyB0aGlzIGtub3ds
ZWRnZSBvbiBwb3J0IG1ha2VzIG1vcmUgc2Vuc2UgdGhhbiBpbiBMYXlvdXRUZXN0UmVzdWx0cy4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QucHk6CisgICAg
ICAgICAtIExheW91dFRlc3RSZXN1bHRzIHNob3VsZG4ndCBrbm93IGhvdyB0byBmZXRjaCBmcm9t
IHRoZSBuZXR3b3JrLCBtYWtlCisgICAgICAgICAgIHRoZSBCdWlsZCBjb2RlIGRvIHRoYXQgaW5z
dGVhZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3RfdW5p
dHRlc3QucHk6CisgICAgICAgICAtIENvZGUgc3R5bGUgZml4LgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weToKKyAgICAgICAgIC0gUmVt
b3ZlIGNvZGUgZm9yIHJlYWRpbmcgZnJvbSB0aGUgbmV0d29yay4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5pdHRlc3QucHk6CisgICAg
ICAgICAtIFRlc3QgdGhlIG5ldyBlbnRyeXBvaW50LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5OgorICAgICAgICAgLSBNYWtlIHRoZSBkZWxl
Z2F0ZSBpbnRlcmZhY2UgZXhwbGljaXQuCisgICAgICAgICAtIFJlbW92ZSB0aGUgX3Rvb2wgbWVt
YmVyLCBzaW5jZSB1c2luZyB0aGUgZGVsZWdhdGUgZm9yCisgICAgICAgICAgIGV2ZXJ5dGhpbmcg
aXMgY2xlYW5lci4KKyAgICAgICAgIC0gVGVhY2ggdGhlIHRlc3RpbmcgbG9naWMgaG93IHRvIGRl
YWwgd2l0aCBmbGFreSB0ZXN0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weToKKyAgICAgICAgIC0gVXBkYXRlIHRvIG1hdGNo
IHRoZSBDb21taXRRdWV1ZVRhc2sgY2hhbmdlcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OgorICAgICAgICAgLSBVc2UgdGhlIG5ldyBDb21taXRR
dWV1ZVRhc2tEZWxlZ2F0ZSBpbnRlcmZhY2UuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weToKKyAgICAgICAgIC0gRml4IHRoZSBTZWNv
bmRUaG91Z2h0c0NvbW1pdFF1ZXVlIHRlc3Qgd2hpY2ggd2FzIGJyb2tlbi4KKyAgICAgICAgIC0g
QWRkIGEgbmV3IHRlc3QgdG8gbWFrZSBzdXJlIHRoZSBmbGFreSB0ZXN0IHJlcG9ydGluZyB3b3Jr
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weToKKyAgICAgICAgIC0g
U3RvcmUgdGhlIHBvcnQgb24gdGhlIHRvb2wgb2JqZWN0LgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9tb2NrdG9vbC5weToKKyAgICAgICAgIC0gQWRkIGEgcG9ydCgpIGFjY2Vzc29y
IHRvIE1vY2tUb29sCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3Ry
YWN0c3RlcC5weToKKyAgICAgICAgIC0gTW92ZSBwb3J0KCkgb2ZmIG9mIFN0ZXAgYW5kIG9udG8g
VG9vbC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYnVpbGQucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weToKKyAg
ICAgICAgIC0gVHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgbmFtZSEgIG9ubHkgdGhlIGxhdHRlciB3
YXMgYmVpbmcgcnVuLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRh
dGUucHk6CisKIDIwMTAtMTAtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weQppbmRleCA3OWNiMGMyMjg3NGU1
Y2Y4NTM4ZDVkNTgwNWExZDcyYjFlZDdlNDMwLi5kMjY4ODY1ZDc1MDMwZmNkNmI1MjYyYWZlNzdm
NzU1MzliNzc1NmYyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jb25maWcvcG9ydHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY29uZmlnL3BvcnRzLnB5CkBAIC0xMDMsNiArMTAzLDEwIEBAIGNsYXNzIFdlYktpdFBv
cnQob2JqZWN0KToKICAgICBkZWYgcnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoY2xzKToKICAg
ICAgICAgcmV0dXJuIFtjbHMuc2NyaXB0X3BhdGgoInRlc3Qtd2Via2l0cGVybCIpXQogCisgICAg
QGNsYXNzbWV0aG9kCisgICAgZGVmIGxheW91dF90ZXN0c19yZXN1bHRzX3BhdGgoY2xzKToKKyAg
ICAgICAgcmV0dXJuICIvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmVzdWx0cy5odG1sIgorCiAK
IGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weQppbmRleCA4Y2I5MDJjYWRlNzljMGQx
OTMwMjVlNTRkYTM5NDg5NDA2ZjYxNDg2Li5kM2QwOGVlNzA3ZGNhN2I0ZTczZTQ1NDViM2M2OTU1
Y2VhNzc1MjAwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvYnVpbGRib3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1aWxkYm90LnB5CkBAIC0yMTUsOSArMjE1LDE5IEBAIGNsYXNzIEJ1aWxkKG9iamVj
dCk6CiAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gInIlcyAoJXMpIiAlIChzZWxmLnJldmlz
aW9uKCksIHNlbGYuX251bWJlcikKICAgICAgICAgcmV0dXJuICIlcy8lcyIgJSAoc2VsZi5fYnVp
bGRlci5yZXN1bHRzX3VybCgpLCB1cmxsaWIucXVvdGUocmVzdWx0c19kaXJlY3RvcnkpKQogCisg
ICAgZGVmIF9mZXRjaF9yZXN1bHRzX2h0bWwoc2VsZik6CisgICAgICAgIHJlc3VsdHNfaHRtbCA9
ICIlcy9yZXN1bHRzLmh0bWwiICUgKHNlbGYucmVzdWx0c191cmwoKSkKKyAgICAgICAgIyBGSVhN
RTogV2UgbmVlZCB0byBtb3ZlIHRoaXMgc29ydCBvZiA0MDQgbG9naWMgaW50byBOZXR3b3JrVHJh
bnNhY3Rpb24gb3Igc2ltaWxhci4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHVy
bGxpYjIudXJsb3BlbihyZXN1bHRzX2h0bWwpCisgICAgICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBF
cnJvciwgZXJyb3I6CisgICAgICAgICAgICBpZiBlcnJvci5jb2RlICE9IDQwNDoKKyAgICAgICAg
ICAgICAgICByYWlzZQorCiAgICAgZGVmIGxheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAg
ICAgIGlmIG5vdCBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzOgotICAgICAgICAgICAgc2VsZi5f
bGF5b3V0X3Rlc3RfcmVzdWx0cyA9IExheW91dFRlc3RSZXN1bHRzLnJlc3VsdHNfZnJvbV91cmwo
c2VsZi5yZXN1bHRzX3VybCgpKQorICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgY2Fj
aGUgdGhhdCB0aGUgcmVzdWx0IHdhcyBhIDQwNCBhbmQgc3RvcCBoaXR0aW5nIHRoZSBuZXR3b3Jr
LgorICAgICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RfcmVzdWx0cyA9IExheW91dFRlc3RSZXN1
bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcoc2VsZi5fZmV0Y2hfcmVzdWx0c19odG1sKCkpCiAgICAg
ICAgIHJldHVybiBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzCiAKICAgICBkZWYgYnVpbGRlcihz
ZWxmKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9idWlsZGJvdF91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWlsZGJvdF91bml0dGVzdC5weQppbmRleCA1N2EwYzhmMDg0ZDM5Y2FhNGE1NzVj
ZmZmYzg4ZTU5OTI3Mjk2NDM0Li5hZmM5YTM5YTllNzEyOWM2NzJlNTE5NmY5NDYyYmQ4YmJiMmUy
NDNhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
YnVpbGRib3RfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2J1aWxkYm90X3VuaXR0ZXN0LnB5CkBAIC00MSwxMCArNDEsOCBAQCBjbGFzcyBC
dWlsZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgcmV2aXNpb249
YnVpbGRfbnVtYmVyICsgMTAwMCwKICAgICAgICAgICAgICAgICBpc19ncmVlbj1idWlsZF9udW1i
ZXIgPCA0CiAgICAgICAgICAgICApCi0gICAgICAgICAgICBidWlsZC5fbGF5b3V0X3Rlc3RfcmVz
dWx0cyA9IExheW91dFRlc3RSZXN1bHRzKAotICAgICAgICAgICAgICAgICJodHRwOi8vYnVpbGRi
b3QuZXhhbXBsZS5jb20vZm9vIiwgewotICAgICAgICAgICAgICAgICAgICBMYXlvdXRUZXN0UmVz
dWx0cy5mYWlsX2tleTogZmFpbHVyZShidWlsZF9udW1iZXIpLAotICAgICAgICAgICAgICAgIH0p
CisgICAgICAgICAgICBwYXJzZWRfcmVzdWx0cyA9IHtMYXlvdXRUZXN0UmVzdWx0cy5mYWlsX2tl
eTogZmFpbHVyZShidWlsZF9udW1iZXIpfQorICAgICAgICAgICAgYnVpbGQuX2xheW91dF90ZXN0
X3Jlc3VsdHMgPSBMYXlvdXRUZXN0UmVzdWx0cyhwYXJzZWRfcmVzdWx0cykKICAgICAgICAgICAg
IHJldHVybiBidWlsZAogICAgICAgICBzZWxmLmJ1aWxkZXIuX2ZldGNoX2J1aWxkID0gX21vY2tf
ZmV0Y2hfYnVpbGQKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CmluZGV4IDVhYjgyOTI3MjFjZTA3
YTE0ZmU3MTI1MGJjYzY0NmU0N2MxMDljOGQuLmViNWVhN2RiZDM2MzlmZTZmNWNjZjgyZTcxYjQ3
ZmI1MTYwZjBhMzAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKQEAgLTM0LDYgKzM0LDggQEAg
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNv
dXAsIFNvdXBTdHJhaW5lcgogIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdW5pZmllZCB3aXRoIGFs
bCB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0cyBjb2RlIGluIHRoZSBsYXlvdXRfdGVzdHMgcGFja2Fn
ZQogIyBUaGlzIGRvZXNuJ3QgYmVsb25nIGluIGNvbW1vbi5uZXQsIGJ1dCB3ZSBkb24ndCBoYXZl
IGEgYmV0dGVyIHBsYWNlIGZvciBpdCB5ZXQuCiBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0cyhvYmpl
Y3QpOgorICAgICIiIlRoaXMgY2xhc3Mga25vd3MgaG93IHRvIHBhcnNlIG9sZC1ydW4td2Via2l0
LXRlc3RzIHJlc3VsdHMuaHRtbCBmaWxlcy4iIiIKKwogICAgIHN0ZGVycl9rZXkgPSB1J1Rlc3Rz
IHRoYXQgaGFkIHN0ZGVyciBvdXRwdXQ6JwogICAgIGZhaWxfa2V5ID0gdSdUZXN0cyB3aGVyZSBy
ZXN1bHRzIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgcmVzdWx0czonCiAgICAgdGltZW91dF9rZXkg
PSB1J1Rlc3RzIHRoYXQgdGltZWQgb3V0OicKQEAgLTYyLDI3ICs2NCwxNCBAQCBjbGFzcyBMYXlv
dXRUZXN0UmVzdWx0cyhvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBwYXJzZWRfcmVzdWx0cwog
Ci0gICAgIyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGRuJ3Qga25vdyBob3cgdG8gZmV0Y2ggZnJv
bSB0aGUgbmV0d29yay4KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX2ZldGNoX3Jlc3VsdHNf
aHRtbChjbHMsIGJhc2VfdXJsKToKLSAgICAgICAgcmVzdWx0c19odG1sID0gIiVzL3Jlc3VsdHMu
aHRtbCIgJSBiYXNlX3VybAotICAgICAgICAjIEZJWE1FOiBXZSBuZWVkIHRvIG1vdmUgdGhpcyBz
b3J0IG9mIDQwNCBsb2dpYyBpbnRvIE5ldHdvcmtUcmFuc2FjdGlvbiBvciBzaW1pbGFyLgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBwYWdlID0gdXJsbGliMi51cmxvcGVuKHJlc3VsdHNfaHRt
bCkKLSAgICAgICAgICAgIHJldHVybiBjbHMuX3BhcnNlX3Jlc3VsdHNfaHRtbChwYWdlKQotICAg
ICAgICBleGNlcHQgdXJsbGliMi5IVFRQRXJyb3IsIGVycm9yOgotICAgICAgICAgICAgaWYgZXJy
b3IuY29kZSAhPSA0MDQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQogICAgIEBjbGFzc21ldGhv
ZAotICAgIGRlZiByZXN1bHRzX2Zyb21fdXJsKGNscywgYmFzZV91cmwpOgotICAgICAgICBwYXJz
ZWRfcmVzdWx0cyA9IGNscy5fZmV0Y2hfcmVzdWx0c19odG1sKGJhc2VfdXJsKQorICAgIGRlZiBy
ZXN1bHRzX2Zyb21fc3RyaW5nKGNscywgc3RyaW5nKToKKyAgICAgICAgcGFyc2VkX3Jlc3VsdHMg
PSBjbHMuX3BhcnNlX3Jlc3VsdHNfaHRtbChzdHJpbmcpCiAgICAgICAgIGlmIG5vdCBwYXJzZWRf
cmVzdWx0czoKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBjbHMoYmFz
ZV91cmwsIHBhcnNlZF9yZXN1bHRzKQorICAgICAgICByZXR1cm4gY2xzKHBhcnNlZF9yZXN1bHRz
KQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhc2VfdXJsLCBwYXJzZWRfcmVzdWx0cyk6Ci0g
ICAgICAgIHNlbGYuX2Jhc2VfdXJsID0gYmFzZV91cmwKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
cGFyc2VkX3Jlc3VsdHMpOgogICAgICAgICBzZWxmLl9wYXJzZWRfcmVzdWx0cyA9IHBhcnNlZF9y
ZXN1bHRzCiAKICAgICBkZWYgcGFyc2VkX3Jlc3VsdHMoc2VsZik6CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0
dGVzdHJlc3VsdHNfdW5pdHRlc3QucHkKaW5kZXggMDM0ODQ4ZTM2ZDY2MGUyZmU2ZDk2YjY2NDIz
ZWM0MTNiMWI3MWRjOS4uNDRlNGRiYzViYmExMjFmNTAxYTM5Y2VlMzlhNDhmMDk3MThkNWJjZiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91
dHRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0c191bml0dGVzdC5weQpAQCAtNjksMyArNjks
OCBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
IGRlZiB0ZXN0X3BhcnNlX2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHJlc3Vs
dHMgPSBMYXlvdXRUZXN0UmVzdWx0cy5fcGFyc2VfcmVzdWx0c19odG1sKHNlbGYuX2V4YW1wbGVf
cmVzdWx0c19odG1sKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2V4cGVjdGVkX2xh
eW91dF90ZXN0X3Jlc3VsdHMsIHJlc3VsdHMpCisKKyAgICBkZWYgdGVzdF9yZXN1bHRzX2Zyb21f
c3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExheW91dFRlc3RSZXN1bHRz
LnJlc3VsdHNfZnJvbV9zdHJpbmcoIiIpLCBOb25lKQorICAgICAgICByZXN1bHRzID0gTGF5b3V0
VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyhzZWxmLl9leGFtcGxlX3Jlc3VsdHNfaHRt
bCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkp
LCAwKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9j
b21taXRxdWV1ZXRhc2sucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2NvbW1pdHF1ZXVldGFzay5weQppbmRleCBhNWMyY2EyMTY4N2E1N2QwMGVmZTMyNTUyNmQ3OWFj
YTYwMzVlMzU1Li4wMmUyMDNjNTI2YTkzZjZkZGI3YjI5OWUwZjI5OTMwMTcwNzhiN2NjIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVl
dGFzay5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1p
dHF1ZXVldGFzay5weQpAQCAtMjcsMTkgKzI3LDM5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRlc3RS
ZXN1bHRzCisKKworY2xhc3MgQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUob2JqZWN0KToKKyAgICBk
ZWYgcnVuX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQorCisgICAgZGVmIGNvbW1hbmRf
cGFzc2VkKHNlbGYsIG1lc3NhZ2UsIHBhdGNoKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCisKKyAgICBkZWYgY29tbWFuZF9m
YWlsZWQoc2VsZiwgbWVzc2FnZSwgc2NyaXB0X2Vycm9yLCBwYXRjaCk6CisgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQorCisgICAg
ZGVmIHJlZmV0Y2hfcGF0Y2goc2VsZiwgcGF0Y2gpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKKworICAgIGRlZiBsYXlvdXRf
dGVzdF9yZXN1bHRzKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJz
dWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKKworICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMo
c2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3RzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCiAKIAogY2xhc3MgQ29tbWl0UXVldWVU
YXNrKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvb2wsIGNvbW1pdF9xdWV1ZSwg
cGF0Y2gpOgotICAgICAgICBzZWxmLl90b29sID0gdG9vbAotICAgICAgICBzZWxmLl9jb21taXRf
cXVldWUgPSBjb21taXRfcXVldWUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGVsZWdhdGUsIHBh
dGNoKToKKyAgICAgICAgc2VsZi5fZGVsZWdhdGUgPSBkZWxlZ2F0ZQogICAgICAgICBzZWxmLl9w
YXRjaCA9IHBhdGNoCiAgICAgICAgIHNlbGYuX3NjcmlwdF9lcnJvciA9IE5vbmUKIAogICAgIGRl
ZiBfdmFsaWRhdGUoc2VsZik6CiAgICAgICAgICMgQnVncyBtaWdodCBnZXQgY2xvc2VkLCBvciBw
YXRjaGVzIG1pZ2h0IGJlIG9ic29sZXRlZCBvciByLSdkIHdoaWxlIHRoZQogICAgICAgICAjIGNv
bW1pdC1xdWV1ZSBpcyBwcm9jZXNzaW5nLgotICAgICAgICBzZWxmLl9wYXRjaCA9IHNlbGYuX3Rv
b2wuYnVncy5mZXRjaF9hdHRhY2htZW50KHNlbGYuX3BhdGNoLmlkKCkpCisgICAgICAgIHNlbGYu
X3BhdGNoID0gc2VsZi5fZGVsZWdhdGUucmVmZXRjaF9wYXRjaChzZWxmLl9wYXRjaCkKICAgICAg
ICAgaWYgc2VsZi5fcGF0Y2guaXNfb2Jzb2xldGUoKToKICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQogICAgICAgICBpZiBzZWxmLl9wYXRjaC5idWcoKS5pc19jbG9zZWQoKToKQEAgLTUyLDEyICs3
MiwxMiBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0KToKIAogICAgIGRlZiBfcnVuX2Nv
bW1hbmQoc2VsZiwgY29tbWFuZCwgc3VjY2Vzc19tZXNzYWdlLCBmYWlsdXJlX21lc3NhZ2UpOgog
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9jb21taXRfcXVldWUucnVuX3dlYmtpdF9w
YXRjaChjb21tYW5kKQotICAgICAgICAgICAgc2VsZi5fY29tbWl0X3F1ZXVlLmNvbW1hbmRfcGFz
c2VkKHN1Y2Nlc3NfbWVzc2FnZSwgcGF0Y2g9c2VsZi5fcGF0Y2gpCisgICAgICAgICAgICBzZWxm
Ll9kZWxlZ2F0ZS5ydW5fY29tbWFuZChjb21tYW5kKQorICAgICAgICAgICAgc2VsZi5fZGVsZWdh
dGUuY29tbWFuZF9wYXNzZWQoc3VjY2Vzc19tZXNzYWdlLCBwYXRjaD1zZWxmLl9wYXRjaCkKICAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKICAg
ICAgICAgICAgIHNlbGYuX3NjcmlwdF9lcnJvciA9IGUKLSAgICAgICAgICAgIHNlbGYuZmFpbHVy
ZV9zdGF0dXNfaWQgPSBzZWxmLl9jb21taXRfcXVldWUuY29tbWFuZF9mYWlsZWQoZmFpbHVyZV9t
ZXNzYWdlLCBzY3JpcHRfZXJyb3I9c2VsZi5fc2NyaXB0X2Vycm9yLCBwYXRjaD1zZWxmLl9wYXRj
aCkKKyAgICAgICAgICAgIHNlbGYuZmFpbHVyZV9zdGF0dXNfaWQgPSBzZWxmLl9kZWxlZ2F0ZS5j
b21tYW5kX2ZhaWxlZChmYWlsdXJlX21lc3NhZ2UsIHNjcmlwdF9lcnJvcj1zZWxmLl9zY3JpcHRf
ZXJyb3IsIHBhdGNoPXNlbGYuX3BhdGNoKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAg
ICBkZWYgX2FwcGx5KHNlbGYpOgpAQCAtMTE5LDYgKzEzOSwxMiBAQCBjbGFzcyBDb21taXRRdWV1
ZVRhc2sob2JqZWN0KToKICAgICAgICAgIkFibGUgdG8gcGFzcyB0ZXN0cyB3aXRob3V0IHBhdGNo
IiwKICAgICAgICAgIlVuYWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQgcGF0Y2ggKHRyZWUgaXMg
cmVkPykiKQogCisgICAgZGVmIF9mYWlsaW5nX3Rlc3RzX2Zyb21fbGFzdF9ydW4oc2VsZik6Cisg
ICAgICAgIHJlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS5sYXlvdXRfdGVzdF9yZXN1bHRzKCkKKyAg
ICAgICAgaWYgbm90IHJlc3VsdHM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBy
ZXR1cm4gcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkKKwogICAgIGRlZiBfbGFuZChzZWxmKToKICAg
ICAgICAgcmV0dXJuIHNlbGYuX3J1bl9jb21tYW5kKFsKICAgICAgICAgICAgICJsYW5kLWF0dGFj
aG1lbnQiLApAQCAtMTMyLDYgKzE1OCwyOSBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0
KToKICAgICAgICAgIkxhbmRlZCBwYXRjaCIsCiAgICAgICAgICJVbmFibGUgdG8gbGFuZCBwYXRj
aCIpCiAKKyAgICBkZWYgX3JlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBmbGFreV90ZXN0cyk6Cisg
ICAgICAgIHNlbGYuX2RlbGVnYXRlLnJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLl9wYXRjaCwgZmxh
a3lfdGVzdHMpCisKKyAgICBkZWYgX3Rlc3RfcGF0Y2goc2VsZik6CisgICAgICAgIGlmIHNlbGYu
X3BhdGNoLmlzX3JvbGxvdXQoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlm
IHNlbGYuX3Rlc3QoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgZmlyc3Rf
ZmFpbGluZ190ZXN0cyA9IHNlbGYuX2ZhaWxpbmdfdGVzdHNfZnJvbV9sYXN0X3J1bigpCisgICAg
ICAgIGlmIHNlbGYuX3Rlc3QoKToKKyAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9mbGFreV90ZXN0
cyhmaXJzdF9mYWlsaW5nX3Rlc3RzKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAg
ICBzZWNvbmRfZmFpbGluZ190ZXN0cyA9IHNlbGYuX2ZhaWxpbmdfdGVzdHNfZnJvbV9sYXN0X3J1
bigpCisgICAgICAgIGlmIGZpcnN0X2ZhaWxpbmdfdGVzdHMgIT0gc2Vjb25kX2ZhaWxpbmdfdGVz
dHM6CisgICAgICAgICAgICBzZWxmLl9yZXBvcnRfZmxha3lfdGVzdHMoZmlyc3RfZmFpbGluZ190
ZXN0cyArIHNlY29uZF9mYWlsaW5nX3Rlc3RzKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisK
KyAgICAgICAgaWYgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpOgorICAgICAg
ICAgICAgcmFpc2Ugc2VsZi5fc2NyaXB0X2Vycm9yICAjIFRoZSBlcnJvciBmcm9tIHRoZSBwcmV2
aW91cyAuX3Rlc3QoKSBydW4gaXMgcmVhbCwgcmVwb3J0IGl0LgorICAgICAgICByZXR1cm4gRmFs
c2UgICMgVHJlZSBtdXN0IGJlIHJlZCwganVzdCByZXRyeSBsYXRlci4KKwogICAgIGRlZiBydW4o
c2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl92YWxpZGF0ZSgpOgogICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCkBAIC0xNDEsMTIgKzE5MCw4IEBAIGNsYXNzIENvbW1pdFF1ZXVlVGFzayhvYmpl
Y3QpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2J1aWxkX3dpdGhvdXRfcGF0Y2goKToKICAg
ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3Njcmlw
dF9lcnJvcgotICAgICAgICBpZiBub3Qgc2VsZi5fcGF0Y2guaXNfcm9sbG91dCgpOgotICAgICAg
ICAgICAgaWYgbm90IHNlbGYuX3Rlc3QoKToKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5f
dGVzdCgpOgotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rf
d2l0aG91dF9wYXRjaCgpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3NjcmlwdF9lcnJvcgorICAgICAgICBpZiBu
b3Qgc2VsZi5fdGVzdF9wYXRjaCgpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAg
ICMgTWFrZSBzdXJlIHRoZSBwYXRjaCBpcyBzdGlsbCB2YWxpZCBiZWZvcmUgbGFuZGluZyAoZS5n
LiwgbWFrZSBzdXJlCiAgICAgICAgICMgbm8gb25lIGhhcyBzZXQgY29tbWl0LXF1ZXVlLSBzaW5j
ZSB3ZSBzdGFydGVkIHdvcmtpbmcgb24gdGhlIHBhdGNoLikKICAgICAgICAgaWYgbm90IHNlbGYu
X3ZhbGlkYXRlKCk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CmluZGV4IDM4YzQ3
NDc2N2NmYmE4MmFmZTY4NDhlMTkzZjQ2ZWZjODkzMDZiNWEuLjZmYTA2NjcyZWI3MzhmYzZjZjUz
M2U1Mjk4ZThiYTMwZjc3MGRhMjQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5
CkBAIC0zNiwxMSArMzYsMTEgQEAgZnJvbSB3ZWJraXRweS50b29sLmJvdC5jb21taXRxdWV1ZXRh
c2sgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wK
IAogCi1jbGFzcyBNb2NrQ29tbWl0UXVldWU6CitjbGFzcyBNb2NrQ29tbWl0UXVldWUoQ29tbWl0
UXVldWVUYXNrRGVsZWdhdGUpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcl9wbGFuKToK
ICAgICAgICAgc2VsZi5fZXJyb3JfcGxhbiA9IGVycm9yX3BsYW4KIAotICAgIGRlZiBydW5fd2Vi
a2l0X3BhdGNoKHNlbGYsIGNvbW1hbmQpOgorICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBjb21t
YW5kKToKICAgICAgICAgbG9nKCJydW5fd2Via2l0X3BhdGNoOiAlcyIgJSBjb21tYW5kKQogICAg
ICAgICBpZiBzZWxmLl9lcnJvcl9wbGFuOgogICAgICAgICAgICAgZXJyb3IgPSBzZWxmLl9lcnJv
cl9wbGFuLnBvcCgwKQpAQCAtNTYsMTIgKzU2LDIxIEBAIGNsYXNzIE1vY2tDb21taXRRdWV1ZToK
ICAgICAgICAgICAgIGZhaWx1cmVfbWVzc2FnZSwgc2NyaXB0X2Vycm9yLCBwYXRjaC5pZCgpKSkK
ICAgICAgICAgcmV0dXJuIDM5NDcKIAorICAgIGRlZiByZWZldGNoX3BhdGNoKHNlbGYsIHBhdGNo
KToKKyAgICAgICAgcmV0dXJuIHBhdGNoCisKKyAgICBkZWYgbGF5b3V0X3Rlc3RfcmVzdWx0cyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMo
c2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3RzKToKKyAgICAgICAgbG9nKCJyZXBvcnRfZmxha3lfdGVz
dHM6IHBhdGNoPSclcycgZmxha3lfdGVzdHM9JyVzJyIgJSAocGF0Y2guaWQoKSwgZmxha3lfdGVz
dHMpKQorCiAKIGNsYXNzIENvbW1pdFF1ZXVlVGFza1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgIGRlZiBfcnVuX3Rocm91Z2hfdGFzayhzZWxmLCBjb21taXRfcXVldWUsIGV4cGVjdGVkX3N0
ZGVyciwgZXhwZWN0ZWRfZXhjZXB0aW9uPU5vbmUpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2wo
bG9nX2V4ZWN1dGl2ZT1UcnVlKQogICAgICAgICBwYXRjaCA9IHRvb2wuYnVncy5mZXRjaF9hdHRh
Y2htZW50KDE5NykKLSAgICAgICAgdGFzayA9IENvbW1pdFF1ZXVlVGFzayh0b29sLCBjb21taXRf
cXVldWUsIHBhdGNoKQorICAgICAgICB0YXNrID0gQ29tbWl0UXVldWVUYXNrKGNvbW1pdF9xdWV1
ZSwgcGF0Y2gpCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCB0
YXNrLnJ1biwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfZXhjZXB0
aW9uPWV4cGVjdGVkX2V4Y2VwdGlvbikKIAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfY2FzZShzZWxm
KToKQEAgLTEyOSw2ICsxMzgsNyBAQCBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0
JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tcQogY29tbWFuZF9m
YWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0
X2Vycm9yPSdNT0NLIHRlc3RzIGZhaWx1cmUnIHBhdGNoPScxOTcnCiBydW5fd2Via2l0X3BhdGNo
OiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0
JywgJy0tcXVpZXQnLCAnLS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nl
c3NfbWVzc2FnZT0nUGFzc2VkIHRlc3RzJyBwYXRjaD0nMTk3JworcmVwb3J0X2ZsYWt5X3Rlc3Rz
OiBwYXRjaD0nMTk3JyBmbGFreV90ZXN0cz0nTm9uZScKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnbGFu
ZC1hdHRhY2htZW50JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1pZ25vcmUtYnVpbGRlcnMnLCAnLS1x
dWlldCcsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLXBhcmVudC1jb21tYW5kPWNvbW1pdC1xdWV1
ZScsIDE5N10KIGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0xhbmRlZCBwYXRjaCcg
cGF0Y2g9JzE5NycKICIiIgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKaW5kZXggNGUwMGUzZTQ1MjRiMDQ1Njg3ZWJhYjY5MDRi
NDIzZThkNWJmZGVkOC4uMTExMGJmYjI1NGRiNDg3NjU2ODZmYmQ4MzRmMTVkOWQ2M2MwMWY4NSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1
ZXVlcy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzLnB5CkBAIC0yNyw2ICsyNyw4IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CisKIGltcG9ydCB0aW1l
CiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgb3MKQEAgLTQwLDcgKzQyLDcgQEAgZnJvbSB3ZWJr
aXRweS5jb21tb24ubmV0LnN0YXR1c3NlcnZlciBpbXBvcnQgU3RhdHVzU2VydmVyCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxv
ZwogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnN0ZXBzZXF1ZW5jZSBpbXBvcnQgU3RlcFNl
cXVlbmNlRXJyb3JIYW5kbGVyCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LmNvbW1pdHF1ZXVldGFz
ayBpbXBvcnQgQ29tbWl0UXVldWVUYXNrCitmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmNvbW1pdHF1
ZXVldGFzayBpbXBvcnQgQ29tbWl0UXVldWVUYXNrLCBDb21taXRRdWV1ZVRhc2tEZWxlZ2F0ZQog
ZnJvbSB3ZWJraXRweS50b29sLmJvdC5mZWVkZXJzIGltcG9ydCBDb21taXRRdWV1ZUZlZWRlcgog
ZnJvbSB3ZWJraXRweS50b29sLmJvdC5wYXRjaGNvbGxlY3Rpb24gaW1wb3J0IFBlcnNpc3RlbnRQ
YXRjaENvbGxlY3Rpb24sIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb25EZWxlZ2F0ZQogZnJvbSB3
ZWJraXRweS50b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBvcnQgUXVldWVFbmdpbmUsIFF1ZXVlRW5n
aW5lRGVsZWdhdGUKQEAgLTIxMSw3ICsyMTMsNyBAQCBjbGFzcyBBYnN0cmFjdFBhdGNoUXVldWUo
QWJzdHJhY3RRdWV1ZSk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5fbG9nX2Rp
cmVjdG9yeSgpLCAiJXMubG9nIiAlIHBhdGNoLmJ1Z19pZCgpKQogCiAKLWNsYXNzIENvbW1pdFF1
ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyKToKK2NsYXNz
IENvbW1pdFF1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVy
LCBDb21taXRRdWV1ZVRhc2tEZWxlZ2F0ZSk6CiAgICAgbmFtZSA9ICJjb21taXQtcXVldWUiCiAK
ICAgICAjIEFic3RyYWN0UGF0Y2hRdWV1ZSBtZXRob2RzCkBAIC0yMzMsNyArMjM1LDcgQEAgY2xh
c3MgQ29tbWl0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRs
ZXIpOgogCiAgICAgZGVmIHByb2Nlc3Nfd29ya19pdGVtKHNlbGYsIHBhdGNoKToKICAgICAgICAg
c2VsZi5fY2Nfd2F0Y2hlcnMocGF0Y2guYnVnX2lkKCkpCi0gICAgICAgIHRhc2sgPSBDb21taXRR
dWV1ZVRhc2soc2VsZi5fdG9vbCwgc2VsZiwgcGF0Y2gpCisgICAgICAgIHRhc2sgPSBDb21taXRR
dWV1ZVRhc2soc2VsZiwgcGF0Y2gpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHRhc2su
cnVuKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fZGlkX3Bhc3MocGF0Y2gpCkBAIC0yNDQsOSAr
MjQ2LDIwIEBAIGNsYXNzIENvbW1pdFF1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVl
bmNlRXJyb3JIYW5kbGVyKToKICAgICAgICAgICAgIHZhbGlkYXRvci5yZWplY3RfcGF0Y2hfZnJv
bV9jb21taXRfcXVldWUocGF0Y2guaWQoKSwgc2VsZi5fZXJyb3JfbWVzc2FnZV9mb3JfYnVnKHRh
c2suZmFpbHVyZV9zdGF0dXNfaWQsIGUpKQogICAgICAgICAgICAgc2VsZi5fZGlkX2ZhaWwocGF0
Y2gpCiAKKyAgICBkZWYgX2Vycm9yX21lc3NhZ2VfZm9yX2J1ZyhzZWxmLCBzdGF0dXNfaWQsIHNj
cmlwdF9lcnJvcik6CisgICAgICAgIGlmIG5vdCBzY3JpcHRfZXJyb3Iub3V0cHV0OgorICAgICAg
ICAgICAgcmV0dXJuIHNjcmlwdF9lcnJvci5tZXNzYWdlX3dpdGhfb3V0cHV0KCkKKyAgICAgICAg
cmVzdWx0c19saW5rID0gc2VsZi5fdG9vbC5zdGF0dXNfc2VydmVyLnJlc3VsdHNfdXJsX2Zvcl9z
dGF0dXMoc3RhdHVzX2lkKQorICAgICAgICByZXR1cm4gIiVzXG5GdWxsIG91dHB1dDogJXMiICUg
KHNjcmlwdF9lcnJvci5tZXNzYWdlX3dpdGhfb3V0cHV0KCksIHJlc3VsdHNfbGluaykKKwogICAg
IGRlZiBoYW5kbGVfdW5leHBlY3RlZF9lcnJvcihzZWxmLCBwYXRjaCwgbWVzc2FnZSk6CiAgICAg
ICAgIHNlbGYuY29tbWl0dGVyX3ZhbGlkYXRvci5yZWplY3RfcGF0Y2hfZnJvbV9jb21taXRfcXVl
dWUocGF0Y2guaWQoKSwgbWVzc2FnZSkKIAorICAgICMgQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUg
bWV0aG9kcworCisgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgorICAgICAgICBz
ZWxmLnJ1bl93ZWJraXRfcGF0Y2goY29tbWFuZCkKKwogICAgIGRlZiBjb21tYW5kX3Bhc3NlZChz
ZWxmLCBtZXNzYWdlLCBwYXRjaCk6CiAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMobWVzc2Fn
ZSwgcGF0Y2g9cGF0Y2gpCiAKQEAgLTI1NCwxMSArMjY3LDIyIEBAIGNsYXNzIENvbW1pdFF1ZXVl
KEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyKToKICAgICAgICAg
ZmFpbHVyZV9sb2cgPSBzZWxmLl9sb2dfZnJvbV9zY3JpcHRfZXJyb3JfZm9yX3VwbG9hZChzY3Jp
cHRfZXJyb3IpCiAgICAgICAgIHJldHVybiBzZWxmLl91cGRhdGVfc3RhdHVzKG1lc3NhZ2UsIHBh
dGNoPXBhdGNoLCByZXN1bHRzX2ZpbGU9ZmFpbHVyZV9sb2cpCiAKLSAgICBkZWYgX2Vycm9yX21l
c3NhZ2VfZm9yX2J1ZyhzZWxmLCBzdGF0dXNfaWQsIHNjcmlwdF9lcnJvcik6Ci0gICAgICAgIGlm
IG5vdCBzY3JpcHRfZXJyb3Iub3V0cHV0OgotICAgICAgICAgICAgcmV0dXJuIHNjcmlwdF9lcnJv
ci5tZXNzYWdlX3dpdGhfb3V0cHV0KCkKLSAgICAgICAgcmVzdWx0c19saW5rID0gc2VsZi5fdG9v
bC5zdGF0dXNfc2VydmVyLnJlc3VsdHNfdXJsX2Zvcl9zdGF0dXMoc3RhdHVzX2lkKQotICAgICAg
ICByZXR1cm4gIiVzXG5GdWxsIG91dHB1dDogJXMiICUgKHNjcmlwdF9lcnJvci5tZXNzYWdlX3dp
dGhfb3V0cHV0KCksIHJlc3VsdHNfbGluaykKKyAgICAjIEZJWE1FOiBUaGlzIG1heSBiZWxvbmcg
b24gdGhlIFBvcnQgb2JqZWN0LgorICAgIGRlZiBsYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYpOgor
ICAgICAgICByZXN1bHRzX3BhdGggPSBzZWxmLl90b29sLnBvcnQoKS5sYXlvdXRfdGVzdHNfcmVz
dWx0c19wYXRoKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGSVhNRTogV2UgbmVlZCBh
IG5pY2Ugb3BlbigpIGFic3RyYWN0aW9uIGZvciBiZXR0ZXIgbW9ja2luZyBoZXJlLgorICAgICAg
ICAgICAgd2l0aCBjb2RlY3Mub3BlbihyZXN1bHRzX3BhdGgsICJyIiwgInV0Zi04IikgYXMgcmVz
dWx0c19maWxlOgorICAgICAgICAgICAgICAgIHJldHVybiBMYXlvdXRUZXN0UmVzdWx0cy5yZXN1
bHRzX2Zyb21fc3RyaW5nKHJlc3VsdHNfZmlsZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6
ICAjIEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgY2FuJ3QgYmUgcmVhZC4KKyAgICAgICAgICAgIHJl
dHVybiBOb25lCisKKyAgICBkZWYgcmVmZXRjaF9wYXRjaChzZWxmLCBwYXRjaCk6CisgICAgICAg
IHJldHVybiBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudChwYXRjaC5pZCgpKQorCisg
ICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfdGVzdHMpOgorICAg
ICAgICBtZXNzYWdlID0gIlRoZSAlcyBlbmNvdW50ZXJlZCB0aGUgZm9sbG93aW5nIGZsYWt5IHRl
c3RzIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNobWVudCAlczpcblxuJXNcblxuUGxlYXNlIGZpbGUg
YnVncyBhZ2FpbnN0IHRoZSB0ZXN0cy4gIFRoZSBjb21taXQtcXVldWUgaXMgY29udGludWluZyB0
byBwcm9jZXNzIHlvdXIgcGF0Y2guIiAlIChzZWxmLm5hbWUsIHBhdGNoLmlkKCksIGZsYWt5X3Rl
c3RzKQorICAgICAgICBzZWxmLl90b29sLmJ1Z3MucG9zdF9jb21tZW50X3RvX2J1ZyhwYXRjaC5i
dWdfaWQoKSwgbWVzc2FnZSwgY2M9c2VsZi53YXRjaGVycykKIAogICAgICMgU3RlcFNlcXVlbmNl
RXJyb3JIYW5kbGVyIG1ldGhvZHMKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKaW5kZXggZDY4
MDA5ODEzNmIwMmQzYzk5OGU5MDhmNjc5YjYxMjM4YjA3N2VhYS4uYzhmNjNlYzIxOTIzNGI1Mzll
NzI2NjI2OTJiMjFjNGEyYzZjOTAyMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CkBAIC0x
ODMsNyArMTgzLDIwIEBAIGNsYXNzIEFsd2F5c0NvbW1pdFF1ZXVlVG9vbChvYmplY3QpOgogCiAK
IGNsYXNzIFNlY29uZFRob3VnaHRzQ29tbWl0UXVldWUoQ29tbWl0UXVldWUpOgotICAgIGRlZiBf
YnVpbGRfYW5kX3Rlc3RfcGF0Y2goc2VsZiwgcGF0Y2gsIGZpcnN0X3J1bj1UcnVlKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX3JlamVjdF9wYXRjaCA9IEZhbHNlCisg
ICAgICAgIENvbW1pdFF1ZXVlLl9faW5pdF9fKHNlbGYpCisKKyAgICBkZWYgcnVuX2NvbW1hbmQo
c2VsZiwgY29tbWFuZCk6CisgICAgICAgICMgV2Ugd2FudCB0byByZWplY3QgdGhlIHBhdGNoIGFm
dGVyIHRoZSBmaXJzdCB2YWxpZGF0aW9uLAorICAgICAgICAjIHNvIHdhaXQgdG8gcmVqZWN0IGl0
IHVudGlsIGFmdGVyIHNvbWUgb3RoZXIgY29tbWFuZCBoYXMgcnVuLgorICAgICAgICBzZWxmLl9y
ZWplY3RfcGF0Y2ggPSBUcnVlCisgICAgICAgIHJldHVybiBDb21taXRRdWV1ZS5ydW5fY29tbWFu
ZChzZWxmLCBjb21tYW5kKQorCisgICAgZGVmIHJlZmV0Y2hfcGF0Y2goc2VsZiwgcGF0Y2gpOgor
ICAgICAgICBpZiBub3Qgc2VsZi5fcmVqZWN0X3BhdGNoOgorICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX3Rvb2wuYnVncy5mZXRjaF9hdHRhY2htZW50KHBhdGNoLmlkKCkpCisKICAgICAgICAgYXR0
YWNobWVudF9kaWN0aW9uYXJ5ID0gewogICAgICAgICAgICAgImlkIjogcGF0Y2guaWQoKSwKICAg
ICAgICAgICAgICJidWdfaWQiOiBwYXRjaC5idWdfaWQoKSwKQEAgLTE5Niw5ICsyMDksNyBAQCBj
bGFzcyBTZWNvbmRUaG91Z2h0c0NvbW1pdFF1ZXVlKENvbW1pdFF1ZXVlKToKICAgICAgICAgICAg
ICJjb21taXR0ZXJfZW1haWwiOiAiZm9vQGJhci5jb20iLAogICAgICAgICAgICAgImF0dGFjaGVy
X2VtYWlsIjogIkNvbnRyaWJ1dGVyMSIsCiAgICAgICAgIH0KLSAgICAgICAgcGF0Y2ggPSBBdHRh
Y2htZW50KGF0dGFjaG1lbnRfZGljdGlvbmFyeSwgTm9uZSkKLSAgICAgICAgc2VsZi5fdG9vbC5i
dWdzLnNldF9vdmVycmlkZV9wYXRjaChwYXRjaCkKLSAgICAgICAgcmV0dXJuIFRydWUKKyAgICAg
ICAgcmV0dXJuIEF0dGFjaG1lbnQoYXR0YWNobWVudF9kaWN0aW9uYXJ5LCBOb25lKQogCiAKIGNs
YXNzIENvbW1pdFF1ZXVlVGVzdChRdWV1ZXNUZXN0KToKQEAgLTMwNiwxMSArMzE3LDI1IEBAIE1P
Q0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBQYXNzCiAgICAgICAgIGV4cGVjdGVkX3N0
ZGVyciA9ICIiIk1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBBcHBsaWVkIHBhdGNo
CiBNT0NLOiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgQnVpbHQgcGF0Y2gKIE1PQ0s6IHVw
ZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBQYXNzZWQgdGVzdHMKLU1PQ0s6IHVwZGF0ZV9zdGF0
dXM6IGNvbW1pdC1xdWV1ZSBMYW5kZWQgcGF0Y2gKLU1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1p
dC1xdWV1ZSBQYXNzCitNT0NLOiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgUmV0cnkKICIi
IgogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcXVldWUucHJv
Y2Vzc193b3JrX2l0ZW0sIFtNb2NrUGF0Y2goKV0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9z
dGRlcnIpCiAKKyAgICBkZWYgdGVzdF9yZXBvcnRfZmxha3lfdGVzdHMoc2VsZik6CisgICAgICAg
IHF1ZXVlID0gQ29tbWl0UXVldWUoKQorICAgICAgICBxdWV1ZS5iaW5kX3RvX3Rvb2woTW9ja1Rv
b2woKSkKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIiIiTU9DSyBidWcgY29tbWVudDogYnVn
X2lkPTE0MiwgY2M9W10KKy0tLSBCZWdpbiBjb21tZW50IC0tLQorVGhlIGNvbW1pdC1xdWV1ZSBl
bmNvdW50ZXJlZCB0aGUgZm9sbG93aW5nIGZsYWt5IHRlc3RzIHdoaWxlIHByb2Nlc3NpbmcgYXR0
YWNobWVudCAxOTc6CisKK1snZm9vL2Jhci5odG1sJywgJ2Jhci9iYXouaHRtbCddCisKK1BsZWFz
ZSBmaWxlIGJ1Z3MgYWdhaW5zdCB0aGUgdGVzdHMuICBUaGUgY29tbWl0LXF1ZXVlIGlzIGNvbnRp
bnVpbmcgdG8gcHJvY2VzcyB5b3VyIHBhdGNoLgorLS0tIEVuZCBjb21tZW50IC0tLQorCisiIiIK
KyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLnJlcG9y
dF9mbGFreV90ZXN0cywgW01vY2tQYXRjaCgpLCBbImZvby9iYXIuaHRtbCIsICJiYXIvYmF6Lmh0
bWwiXV0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisKIAogY2xhc3MgUmlldHZl
bGRVcGxvYWRRdWV1ZVRlc3QoUXVldWVzVGVzdCk6CiAgICAgZGVmIHRlc3RfcmlldHZlbGRfdXBs
b2FkX3F1ZXVlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL21haW4ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5w
eQppbmRleCA3MjFiZjU5ZTA0Y2FmYjY1MGJlYzBkODZiYTY3MmE3MGQ4YTAwYmYxLi5jZTY2NjZl
MjIwODU3YWI5ZTgyYjJiMjZlNzhmYjY3YTg3Y2ZjZTYwIDEwMDc1NQotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvbWFpbi5weQpAQCAtMzQsNiArMzQsNyBAQCBpbXBvcnQgdGhyZWFkaW5n
CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmFwaSBpbXBvcnQgQ2hlY2tvdXQKIGZy
b20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgZGVmYXVsdF9zY20KK2Zyb20g
d2Via2l0cHkuY29tbW9uLmNvbmZpZy5wb3J0cyBpbXBvcnQgV2ViS2l0UG9ydAogZnJvbSB3ZWJr
aXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBCdWd6aWxsYQogZnJvbSB3ZWJraXRweS5j
b21tb24ubmV0LmJ1aWxkYm90IGltcG9ydCBCdWlsZEJvdAogZnJvbSB3ZWJraXRweS5jb21tb24u
bmV0LnJpZXR2ZWxkIGltcG9ydCBSaWV0dmVsZApAQCAtNTIsNyArNTMsNiBAQCBmcm9tIHdlYmtp
dHB5LnRvb2wuY29tbWFuZHMucXVldWVzIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29t
bWFuZHMuc2hlcmlmZmJvdCBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnVw
bG9hZCBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS50b29sLm11bHRpY29tbWFuZHRvb2wgaW1wb3J0
IE11bHRpQ29tbWFuZFRvb2wKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVk
X2xvZ2dpbmcgaW1wb3J0IGxvZwogCiAKIGNsYXNzIFdlYktpdFBhdGNoKE11bHRpQ29tbWFuZFRv
b2wpOgpAQCAtNzQsNiArNzQsNyBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29s
KToKICAgICAgICAgc2VsZi5idWlsZGJvdCA9IEJ1aWxkQm90KCkKICAgICAgICAgc2VsZi5leGVj
dXRpdmUgPSBFeGVjdXRpdmUoKQogICAgICAgICBzZWxmLl9pcmMgPSBOb25lCisgICAgICAgIHNl
bGYuX3BvcnQgPSBOb25lCiAgICAgICAgIHNlbGYudXNlciA9IFVzZXIoKQogICAgICAgICBzZWxm
Ll9zY20gPSBOb25lCiAgICAgICAgIHNlbGYuX2NoZWNrb3V0ID0gTm9uZQpAQCAtOTIsNiArOTMs
OSBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29sKToKICAgICAgICAgICAgIHNl
bGYuX2NoZWNrb3V0ID0gQ2hlY2tvdXQoc2VsZi5zY20oKSkKICAgICAgICAgcmV0dXJuIHNlbGYu
X2NoZWNrb3V0CiAKKyAgICBkZWYgcG9ydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Bv
cnQKKwogICAgIGRlZiBlbnN1cmVfaXJjX2Nvbm5lY3RlZChzZWxmLCBpcmNfZGVsZWdhdGUpOgog
ICAgICAgICBpZiBub3Qgc2VsZi5faXJjOgogICAgICAgICAgICAgc2VsZi5faXJjID0gSVJDUHJv
eHkoaXJjX2RlbGVnYXRlKQpAQCAtMTI5LDYgKzEzMyw4IEBAIGNsYXNzIFdlYktpdFBhdGNoKE11
bHRpQ29tbWFuZFRvb2wpOgogICAgICAgICAgICAgc2VsZi5zdGF0dXNfc2VydmVyLnNldF9ib3Rf
aWQob3B0aW9ucy5ib3RfaWQpCiAgICAgICAgIGlmIG9wdGlvbnMuaXJjX3Bhc3N3b3JkOgogICAg
ICAgICAgICAgc2VsZi5pcmNfcGFzc3dvcmQgPSBvcHRpb25zLmlyY19wYXNzd29yZAorICAgICAg
ICAjIElmIG9wdGlvbnMucG9ydCBpcyBOb25lLCB3ZSdsbCBnZXQgdGhlIGRlZmF1bHQgcG9ydCBm
b3IgdGhpcyBwbGF0Zm9ybS4KKyAgICAgICAgc2VsZi5fcG9ydCA9IFdlYktpdFBvcnQucG9ydChv
cHRpb25zLnBvcnQpCiAKICAgICBkZWYgc2hvdWxkX2V4ZWN1dGVfY29tbWFuZChzZWxmLCBjb21t
YW5kKToKICAgICAgICAgaWYgY29tbWFuZC5yZXF1aXJlc19sb2NhbF9jb21taXRzIGFuZCBub3Qg
c2VsZi5zY20oKS5zdXBwb3J0c19sb2NhbF9jb21taXRzKCk6CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5kZXggZjg0ZWMyYjMyZGMyOTU1NjU2NTcz
NmI5MDk1YTY0ZDA3NTE1YzE5Ni4uZmI0OWRiOTY0NzAyNTM0MWI5MDc4NWZmOWYxZTkxNTI1ZTMz
MDdiMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0
b29sLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5w
eQpAQCAtMzAsNiArMzAsNyBAQCBpbXBvcnQgb3MKIGltcG9ydCB0aHJlYWRpbmcKIAogZnJvbSB3
ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QsIFJl
dmlld2VyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcucG9ydHMgaW1wb3J0IE1hY1BvcnQK
IGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNvbW1pdGluZm8gaW1wb3J0IENvbW1pdElu
Zm8KIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgQ29tbWl0TWVzc2Fn
ZQogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBCdWcsIEF0dGFjaG1l
bnQKQEAgLTY0NSw2ICs2NDYsMTAgQEAgY2xhc3MgTW9ja1Rvb2woKToKICAgICBkZWYgcGF0aChz
ZWxmKToKICAgICAgICAgcmV0dXJuICJlY2hvIgogCisgICAgZGVmIHBvcnQoc2VsZik6CisgICAg
ICAgICMgRklYTUU6IENvbnNpZGVyIHVzaW5nIGEgbW9jayBoZXJlLgorICAgICAgICByZXR1cm4g
TWFjUG9ydAorCiAKIGNsYXNzIE1vY2tCcm93c2VyKG9iamVjdCk6CiAgICAgcGFyYW1zID0ge30K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0
cmFjdHN0ZXAucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJz
dHJhY3RzdGVwLnB5CmluZGV4IDljZWIyY2JkMGQxMmYxMjY4NWYyZGY1NGZlZmUwMjNhODIwYTU3
MDEuLjAyYTg3NmFhNWQwNDJlZjlhMjM4ZWVjYTg1MWQ2ZjMwMTY1YjFiMTkgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3Rl
cC5weQpAQCAtMzYsMjMgKzM2LDE1IEBAIGNsYXNzIEFic3RyYWN0U3RlcChvYmplY3QpOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCB0b29sLCBvcHRpb25zKToKICAgICAgICAgc2VsZi5fdG9vbCA9
IHRvb2wKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLSAgICAgICAgc2VsZi5fcG9y
dCA9IE5vbmUKIAorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0b29sLnBvcnQoKQogICAg
IGRlZiBfcnVuX3NjcmlwdChzZWxmLCBzY3JpcHRfbmFtZSwgYXJncz1Ob25lLCBxdWlldD1GYWxz
ZSwgcG9ydD1XZWJLaXRQb3J0KToKICAgICAgICAgbG9nKCJSdW5uaW5nICVzIiAlIHNjcmlwdF9u
YW1lKQogICAgICAgICBjb21tYW5kID0gW3BvcnQuc2NyaXB0X3BhdGgoc2NyaXB0X25hbWUpXQog
ICAgICAgICBpZiBhcmdzOgogICAgICAgICAgICAgY29tbWFuZC5leHRlbmQoYXJncykKLSAgICAg
ICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHNlbGYucG9ydCgpCiAgICAgICAgIHNlbGYuX3Rv
b2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChjb21tYW5kLCBxdWlldCkKIAotICAg
ICMgRklYTUU6IFRoZSBwb3J0IHNob3VsZCBsaXZlIG9uIHRoZSB0b29sLgotICAgIGRlZiBwb3J0
KHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9wb3J0OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X3BvcnQKLSAgICAgICAgc2VsZi5fcG9ydCA9IFdlYktpdFBvcnQucG9ydChzZWxmLl9vcHRpb25z
LnBvcnQpCi0gICAgICAgIHJldHVybiBzZWxmLl9wb3J0Ci0KICAgICBfd2VsbF9rbm93bl9rZXlz
ID0gewogICAgICAgICAiZGlmZiI6IGxhbWJkYSBzZWxmLCBzdGF0ZTogc2VsZi5fdG9vbC5zY20o
KS5jcmVhdGVfcGF0Y2goc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KSwKICAgICAgICAgImNoYW5n
ZWxvZ3MiOiBsYW1iZGEgc2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmll
ZF9jaGFuZ2Vsb2dzKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCksCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYnVpbGQucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYnVpbGQucHkKaW5kZXggNDU2ZGIyNTM5YmNk
MjAyZGYzY2I3NWZhMzJmZmUzMzkzMDkxMzFmYS4uMDk5MGI4YjMzNGU2NThmMWQ2ZmRiMDY3MThl
NDNjZDBhYTAwMGE2MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2J1aWxkLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9idWlsZC5weQpAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBCdWlsZChBYnN0cmFjdFN0
ZXApOgogICAgICAgICBdCiAKICAgICBkZWYgYnVpbGQoc2VsZiwgYnVpbGRfc3R5bGUpOgotICAg
ICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5wb3J0
KCkuYnVpbGRfd2Via2l0X2NvbW1hbmQoYnVpbGRfc3R5bGU9YnVpbGRfc3R5bGUpLCBzZWxmLl9v
cHRpb25zLnF1aWV0KQorICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93
X2lmX2ZhaWwoc2VsZi5fdG9vbC5wb3J0KCkuYnVpbGRfd2Via2l0X2NvbW1hbmQoYnVpbGRfc3R5
bGU9YnVpbGRfc3R5bGUpLCBzZWxmLl9vcHRpb25zLnF1aWV0KQogCiAgICAgZGVmIHJ1bihzZWxm
LCBzdGF0ZSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmJ1aWxkOgpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vs
b2cucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNo
YW5nZWxvZy5weQppbmRleCA2YTY5NjBhMDRiMzZlOGMxZDhhOWFlNmVlNmM5MWNiMWM2Mjg0YjU4
Li4wMzgyNzM4ODZkNjRmNTM2Nzg5ZjhlZjhmYjMwZTgxYWI0NTdkYTRjIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNo
YW5nZWxvZy5weQpAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBQcmVwYXJlQ2hhbmdlTG9nKEFic3Ry
YWN0U3RlcCk6CiAgICAgICAgICAgICBzZWxmLl9lbnN1cmVfYnVnX3VybChzdGF0ZSkKICAgICAg
ICAgICAgIHJldHVybgogICAgICAgICBvcy5jaGRpcihzZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0
X3Jvb3QpCi0gICAgICAgIGFyZ3MgPSBbc2VsZi5wb3J0KCkuc2NyaXB0X3BhdGgoInByZXBhcmUt
Q2hhbmdlTG9nIildCisgICAgICAgIGFyZ3MgPSBbc2VsZi5fdG9vbC5wb3J0KCkuc2NyaXB0X3Bh
dGgoInByZXBhcmUtQ2hhbmdlTG9nIildCiAgICAgICAgIGlmIHN0YXRlLmdldCgiYnVnX2lkIik6
CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1idWc9JXMiICUgc3RhdGVbImJ1Z19pZCJdKQog
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmVtYWlsOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzLnB5CmluZGV4IDZmYzk0YTFhNzRhMDQ3
ZTBkYWY5ZGM0NjMzYjg3ZDZlMDBmOTU1ZWUuLmRjYmZjNDQ3NWFlMmQwYTI1OTk3NjM1Y2UxMDA4
NjU5MWU4NDkwMjggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9ydW50ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvcnVudGVzdHMucHkKQEAgLTQ1LDE3ICs0NSwxNyBAQCBjbGFzcyBSdW5UZXN0cyhB
YnN0cmFjdFN0ZXApOgogCiAgICAgICAgICMgUnVuIHRoZSBzY3JpcHRpbmcgdW5pdCB0ZXN0cyBm
aXJzdCBiZWNhdXNlIHRoZXkncmUgcXVpY2tlc3QuCiAgICAgICAgIGxvZygiUnVubmluZyBQeXRo
b24gdW5pdCB0ZXN0cyIpCi0gICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhy
b3dfaWZfZmFpbChzZWxmLnBvcnQoKS5ydW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKCkpCisg
ICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90
b29sLnBvcnQoKS5ydW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKCkpCiAgICAgICAgIGxvZygi
UnVubmluZyBQZXJsIHVuaXQgdGVzdHMiKQotICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5y
dW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5wb3J0KCkucnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1h
bmQoKSkKKyAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWls
KHNlbGYuX3Rvb2wucG9ydCgpLnJ1bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5kKCkpCiAKLSAgICAg
ICAgamF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCA9IHNlbGYucG9ydCgpLnJ1bl9qYXZhc2Ny
aXB0Y29yZV90ZXN0c19jb21tYW5kKCkKKyAgICAgICAgamF2YXNjcmlwdGNvcmVfdGVzdHNfY29t
bWFuZCA9IHNlbGYuX3Rvb2wucG9ydCgpLnJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5k
KCkKICAgICAgICAgaWYgamF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZDoKICAgICAgICAgICAg
IGxvZygiUnVubmluZyBKYXZhU2NyaXB0Q29yZSB0ZXN0cyIpCiAgICAgICAgICAgICBzZWxmLl90
b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoamF2YXNjcmlwdGNvcmVfdGVzdHNf
Y29tbWFuZCwgcXVpZXQ9VHJ1ZSkKIAogICAgICAgICBsb2coIlJ1bm5pbmcgcnVuLXdlYmtpdC10
ZXN0cyIpCi0gICAgICAgIGFyZ3MgPSBzZWxmLnBvcnQoKS5ydW5fd2Via2l0X3Rlc3RzX2NvbW1h
bmQoKQorICAgICAgICBhcmdzID0gc2VsZi5fdG9vbC5wb3J0KCkucnVuX3dlYmtpdF90ZXN0c19j
b21tYW5kKCkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAg
ICAgICAgICBhcmdzLmFwcGVuZCgiLS1uby1sYXVuY2gtc2FmYXJpIikKICAgICAgICAgICAgIGFy
Z3MuYXBwZW5kKCItLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcz0xIikKQEAgLTYzLDcgKzYzLDcgQEAg
Y2xhc3MgUnVuVGVzdHMoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgICMgRklYTUU6IEhhY2sg
dG8gd29yayBhcm91bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4
OTEyCiAgICAgICAgICAgICAjIHdoZW4gcnVubmluZyB0aGUgY29tbWl0LXF1ZXVlIG9uIGEgbWFj
IGxlb3BhcmQgbWFjaGluZSBzaW5jZSBjb21wb3NpdGluZwogICAgICAgICAgICAgIyBkb2VzIG5v
dCB3b3JrIHJlbGlhYmx5IG9uIExlb3BhcmQgZHVlIHRvIHZhcmlvdXMgZ3JhcGhpY3MgZHJpdmVy
L3N5c3RlbSBidWdzLgotICAgICAgICAgICAgaWYgc2VsZi5wb3J0KCkubmFtZSgpID09ICJNYWMi
IGFuZCBzZWxmLnBvcnQoKS5pc19sZW9wYXJkKCk6CisgICAgICAgICAgICBpZiBzZWxmLl90b29s
LnBvcnQoKS5uYW1lKCkgPT0gIk1hYyIgYW5kIHNlbGYuX3Rvb2wucG9ydCgpLmlzX2xlb3BhcmQo
KToKICAgICAgICAgICAgICAgICB0ZXN0c190b19pZ25vcmUgPSBbXQogICAgICAgICAgICAgICAg
IHRlc3RzX3RvX2lnbm9yZS5hcHBlbmQoImNvbXBvc2l0aW5nIikKIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5
CmluZGV4IDE1ZjI3NWFkOGQzMjU2NmZkNDQ1ZTU1NjM5OGE1MTY2ZDAxODM2ZDEuLjY5NTc1ZGI2
MmUxMjNiNDhkYmRiMzI4ZDFhYjY0ZmRkOWQxNDIxZDkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkKQEAg
LTU3LDE5ICs1NywyMCBAQCBjbGFzcyBTdGVwc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICB0b29sLnVzZXIucHJvbXB0ID0gbGFtYmRhIG1lc3NhZ2U6IDQyCiAgICAgICAgIHNlbGYu
X3J1bl9zdGVwKFByb21wdEZvckJ1Z09yVGl0bGUsIHRvb2w9dG9vbCkKIAotICAgIGRlZiB0ZXN0
X3J1bnRlc3RzX2xlb3BhcmRfY29tbWl0X3F1ZXVlX2hhY2soc2VsZik6CisgICAgZGVmIHRlc3Rf
cnVudGVzdHNfbGVvcGFyZF9jb21taXRfcXVldWVfaGFja19zdGVwKHNlbGYpOgogICAgICAgICBl
eHBlY3RlZF9zdGRlcnIgPSAiUnVubmluZyBQeXRob24gdW5pdCB0ZXN0c1xuUnVubmluZyBQZXJs
IHVuaXQgdGVzdHNcblJ1bm5pbmcgSmF2YVNjcmlwdENvcmUgdGVzdHNcblJ1bm5pbmcgcnVuLXdl
YmtpdC10ZXN0c1xuIgogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2Vs
Ziwgc2VsZi5fcnVuX3N0ZXAsIFtSdW5UZXN0c10sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9z
dGRlcnIpCiAKLSAgICBkZWYgdGVzdF9ydW50ZXN0c19sZW9wYXJkX2NvbW1pdF9xdWV1ZV9oYWNr
KHNlbGYpOgorICAgIGRlZiB0ZXN0X3J1bnRlc3RzX2xlb3BhcmRfY29tbWl0X3F1ZXVlX2hhY2tf
Y29tbWFuZChzZWxmKToKICAgICAgICAgbW9ja19vcHRpb25zID0gTW9ja09wdGlvbnMoKQogICAg
ICAgICBtb2NrX29wdGlvbnMubm9uX2ludGVyYWN0aXZlID0gVHJ1ZQotICAgICAgICBzdGVwID0g
UnVuVGVzdHMoTW9ja1Rvb2wobG9nX2V4ZWN1dGl2ZT1UcnVlKSwgbW9ja19vcHRpb25zKQogICAg
ICAgICAjIEZJWE1FOiBXZSBzaG91bGRuJ3QgdXNlIGEgcmVhbCBwb3J0LW9iamVjdCBoZXJlLCBi
dXQgdGhlcmUgaXMgdG9vIG11Y2ggdG8gbW9jayBhdCB0aGUgbW9tZW50LgogICAgICAgICBtb2Nr
X3BvcnQgPSBXZWJLaXRQb3J0KCkKICAgICAgICAgbW9ja19wb3J0Lm5hbWUgPSBsYW1iZGE6ICJN
YWMiCiAgICAgICAgIG1vY2tfcG9ydC5pc19sZW9wYXJkID0gbGFtYmRhOiBUcnVlCi0gICAgICAg
IHN0ZXAucG9ydCA9IGxhbWJkYTogbW9ja19wb3J0CisgICAgICAgIHRvb2wgPSBNb2NrVG9vbChs
b2dfZXhlY3V0aXZlPVRydWUpCisgICAgICAgIHRvb2wucG9ydCA9IGxhbWJkYTogbW9ja19wb3J0
CisgICAgICAgIHN0ZXAgPSBSdW5UZXN0cyh0b29sLCBtb2NrX29wdGlvbnMpCiAgICAgICAgIGV4
cGVjdGVkX3N0ZGVyciA9ICIiIlJ1bm5pbmcgUHl0aG9uIHVuaXQgdGVzdHMKIE1PQ0sgcnVuX2Fu
ZF90aHJvd19pZl9mYWlsOiBbJ1dlYktpdFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweSddCiBS
dW5uaW5nIFBlcmwgdW5pdCB0ZXN0cwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy91cGRhdGUucHkKaW5kZXggOGMyOTBmOTdiMTBjYzJhOThiOTEzMmNkMDY3
NmY4Mjk5MTBmMmE2MC4uY2QxZDRkOGE5YzlkZjFkZWUxMjM0NWU1MDZkMWZlYmNiYTgxNzViMCAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0
ZS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRl
LnB5CkBAIC00Miw0ICs0Miw0IEBAIGNsYXNzIFVwZGF0ZShBYnN0cmFjdFN0ZXApOgogICAgICAg
ICBpZiBub3Qgc2VsZi5fb3B0aW9ucy51cGRhdGU6CiAgICAgICAgICAgICByZXR1cm4KICAgICAg
ICAgbG9nKCJVcGRhdGluZyB3b3JraW5nIGRpcmVjdG9yeSIpCi0gICAgICAgIHNlbGYuX3Rvb2wu
ZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLnBvcnQoKS51cGRhdGVfd2Via2l0
X2NvbW1hbmQoKSwgcXVpZXQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVu
X2FuZF90aHJvd19pZl9mYWlsKHNlbGYuX3Rvb2wucG9ydCgpLnVwZGF0ZV93ZWJraXRfY29tbWFu
ZCgpLCBxdWlldD1UcnVlKQo=
</data>
<flag name="review"
          id="60652"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>