<?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>52048</bug_id>
          
          <creation_ts>2011-01-07 01:16:43 -0800</creation_ts>
          <short_desc>commit-queue should know how to upload archived results (for test flakes or general failures)</short_desc>
          <delta_ts>2011-01-11 19:21:03 -0800</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>
          
          <blocked>51371</blocked>
          <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>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koz</cc>
    
    <cc>levin</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>330680</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-07 01:16:43 -0800</bug_when>
    <thetext>commit-queue should know how to upload archived results (for test flakes or general failures)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330681</commentid>
    <comment_count>1</comment_count>
      <attachid>78215</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-07 01:17:19 -0800</bug_when>
    <thetext>Created attachment 78215
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331501</commentid>
    <comment_count>2</comment_count>
      <attachid>78367</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-09 21:09:08 -0800</bug_when>
    <thetext>Created attachment 78367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331504</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-09 21:20:45 -0800</bug_when>
    <thetext>The real benifit of this change is that it fixes normal -diffs.txt uploads.  They broke when we stopped the cq from reporting double-flakes (when two different flakes happened on two different runs), due to over-reporting of constant-failures as flakes.

Right now the cq does this:
1.  runs with patch.  sees failure.
2.  runs again with patch, sees no failure.
3.  reports test as flaky.  -- however the second run *cleared* the layout-test-results, and the upload of the diffs file fails!

With this patch, we archive the results and pull the -diffs.txt from the archive.  Since I&apos;d taught the queue how to archive, If igured we might as well upload the archive too.  Hence this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331546</commentid>
    <comment_count>4</comment_count>
      <attachid>78367</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-10 01:54:50 -0800</bug_when>
    <thetext>Comment on attachment 78367
Patch

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

This is fine, but not really your best patch.  You&apos;re putting too much detailed code directly in the queue instead of keeping the queue as a controller that orchestrates the process.

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:449
&gt; +        if not mimetype:
&gt; +            mimetype = &quot;text/plain&quot;  # Bugzilla might auto-guess for us and we might not need this?

Sad face, but ok.

&gt; Tools/Scripts/webkitpy/tool/bot/flakytestreporter.py:166
&gt; +            results_diff = results_archive.read_binary_file(results_archive.filename)

Lame.  We should be able to use a file object or a file handle without having to assume the file system hasn&apos;t changed.

&gt; Tools/Scripts/webkitpy/tool/commands/queues.py:323
&gt; +    # FIXME: This does not really belong on filesystem, because it uses filesystem
&gt; +    # however it doesn&apos;t really belong here either.  We need a new abstaction.
&gt; +    def _find_unused_filename(self, directory, name, extension, search_limit=10):

This isn&apos;t a great place for this function.  It&apos;s way too high-level.  Maybe something like Checkout to wrap filesystem?

&gt; Tools/Scripts/webkitpy/tool/commands/queues.py:343
&gt; +        zip_command = [&apos;zip&apos;, zip_path, results_directory]

Does this work on windows?  Probably this whole thing doesn&apos;t work on Windows.  I feel like you&apos;re just dumping stuff into this class because it&apos;s here.  Is it really too much to ask to have a ZipFile class that abstracts this junk?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331551</commentid>
    <comment_count>5</comment_count>
      <attachid>78367</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-10 02:03:46 -0800</bug_when>
    <thetext>Comment on attachment 78367
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:449
&gt;&gt; +            mimetype = &quot;text/plain&quot;  # Bugzilla might auto-guess for us and we might not need this?
&gt; 
&gt; Sad face, but ok.

I&apos;m not sure what you mean.  This code is here to keep compatibility with existing code using this function and assuming that the mimetype was always text/plain.

&gt;&gt; Tools/Scripts/webkitpy/tool/bot/flakytestreporter.py:166
&gt;&gt; +            results_diff = results_archive.read_binary_file(results_archive.filename)
&gt; 
&gt; Lame.  We should be able to use a file object or a file handle without having to assume the file system hasn&apos;t changed.

I&apos;m not sure what you mean.

I&apos;m passing around a ZipFile object because that allows for easier mocking than passing around a zip archive path and making a File or ZipFile when needed.

I guess we could pass around a normal file object and make a ZipFile from it only when necessary.
http://docs.python.org/library/zipfile.html

&gt;&gt; Tools/Scripts/webkitpy/tool/commands/queues.py:323
&gt;&gt; +    def _find_unused_filename(self, directory, name, extension, search_limit=10):
&gt; 
&gt; This isn&apos;t a great place for this function.  It&apos;s way too high-level.  Maybe something like Checkout to wrap filesystem?

Agreed.  That&apos;s exactly what I said in my FIXME. :)  On mac/cocoa, this type of thing would go on NSWorkspace instead of NSFileManager (I think that&apos;s right).  We probably want some sort of concept like that.  I could build it for this patch, that&apos;s not an unreasonable request.

&gt;&gt; Tools/Scripts/webkitpy/tool/commands/queues.py:343
&gt;&gt; +        zip_command = [&apos;zip&apos;, zip_path, results_directory]
&gt; 
&gt; Does this work on windows?  Probably this whole thing doesn&apos;t work on Windows.  I feel like you&apos;re just dumping stuff into this class because it&apos;s here.  Is it really too much to ask to have a ZipFile class that abstracts this junk?

So there already is a ZipFile class built-into python. :)  The APIs it has for creating .zip archives are rather low level, and I worry that I&apos;ll get it wrong.  You have to os.walk a directory yourself, and add each os.path.join&apos;d path to the archive yourself.  There is also the question of compression methods, as well as file path string encodings.  I figured that &quot;zip&quot; would just do the right thing.

No, this would not work on win32 (but I don&apos;t think webkitpy is supposed to anyway?)

I could write some ZipFile-based .zip creation in python code.  Again, I&apos;m just worried we&apos;re going to get it wrong. :)  (There is also another question of where that stuff goes.  Probably in this new &quot;Workspace&quot; object or whatever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331554</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-10 02:07:26 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Lame.  We should be able to use a file object or a file handle without having to assume the file system hasn&apos;t changed.

Turns out ZipFile has an (undocumented) public member &quot;.fp&quot; which is the File object.  I can just grab that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331571</commentid>
    <comment_count>7</comment_count>
      <attachid>78388</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-10 02:57:39 -0800</bug_when>
    <thetext>Created attachment 78388
Now with workspace.py and much better testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331572</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-10 02:58:22 -0800</bug_when>
    <thetext>My new unit tests caught a whole bunch of typos.

Looking for my gold star.  Happy to go another round if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331775</commentid>
    <comment_count>9</comment_count>
      <attachid>78388</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-10 11:42:03 -0800</bug_when>
    <thetext>Comment on attachment 78388
Now with workspace.py and much better testing

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

&gt; Tools/Scripts/webkitpy/common/system/workspace.py:50
&gt; +    def create_zip(self, zip_path, source_path):

FWIW, chromium has MakeZip:

https://www.google.com/codesearch/p?hl=en#OAMlx_jo-ck/tools/build/scripts/common/chromium_utils.py&amp;q=MakeZip%20file:chromium_utils&amp;exact_package=chromium&amp;l=330

It still uses the zip command-line on Mac/Linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331780</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-10 11:46:47 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 78388 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78388&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/workspace.py:50
&gt; &gt; +    def create_zip(self, zip_path, source_path):
&gt; 
&gt; FWIW, chromium has MakeZip:
&gt; 
&gt; https://www.google.com/codesearch/p?hl=en#OAMlx_jo-ck/tools/build/scripts/common/chromium_utils.py&amp;q=MakeZip%20file:chromium_utils&amp;exact_package=chromium&amp;l=330
&gt; 
&gt; It still uses the zip command-line on Mac/Linux.

Thanks.  That&apos;s useful (and proves my point that if I wrote this in python I&apos;d get it wrong). :)

Going to just stick with things as-is.  We can add our own MakeZip if needed for win32.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332187</commentid>
    <comment_count>11</comment_count>
      <attachid>78388</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-11 00:58:30 -0800</bug_when>
    <thetext>Comment on attachment 78388
Now with workspace.py and much better testing

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

Thanks for iterating on this patch.

&gt; Tools/Scripts/webkitpy/common/system/workspace_unittest.py:37
&gt; +    def test_find_unused_filename(self):

No test for make_zip?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332192</commentid>
    <comment_count>12</comment_count>
      <attachid>78503</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-11 01:23:18 -0800</bug_when>
    <thetext>Created attachment 78503
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332202</commentid>
    <comment_count>13</comment_count>
      <attachid>78503</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-11 02:37:15 -0800</bug_when>
    <thetext>Comment on attachment 78503
Patch for landing

Clearing flags on attachment: 78503

Committed r75480: &lt;http://trac.webkit.org/changeset/75480&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332203</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-11 02:37:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332481</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-11 11:28:51 -0800</bug_when>
    <thetext>Committed r75520: &lt;http://trac.webkit.org/changeset/75520&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332870</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-11 19:21:03 -0800</bug_when>
    <thetext>Committed r75583: &lt;http://trac.webkit.org/changeset/75583&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78215</attachid>
            <date>2011-01-07 01:17:19 -0800</date>
            <delta_ts>2011-01-09 21:09:02 -0800</delta_ts>
            <desc>wip</desc>
            <filename>bug-52048-20110107011718.patch</filename>
            <type>text/plain</type>
            <size>13425</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMmMx
NTM1YTExOTk0YzAzOTBjMjZkY2VhNTQxYjYxYmMxMTk4NTdiLi5hODVjZmUwZDk2OWNjOGIxNWQy
Y2ZlMmQxMmMxMDJlYzlmNDJjM2U0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDEtMDcgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGNvbW1pdC1xdWV1ZSBzaG91bGQga25vdyBob3cgdG8gdXBsb2FkIGFyY2hp
dmVkIHJlc3VsdHMgKGZvciB0ZXN0IGZsYWtlcyBvciBnZW5lcmFsIGZhaWx1cmVzKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIwNDgKKworICAgICAg
ICBUaGlzIGlzIGEgd29yayBpbiBwcm9ncmVzcy4gIE11Y2ggeWV0IHRvIGRvLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2sucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRlci5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVy
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9x
dWV1ZXMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVl
c191bml0dGVzdC5weToKKwogMjAxMS0wMS0wNiAgSnVsaWUgUGFyZW50ICA8anBhcmVudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5CmluZGV4IDRi
ZGM3OWIxZTEzYzRmNWE3NDFmM2ZlNGY2NDI3ZDI1NTZiZWNmM2EuLjk5YjA4ZTJhMjhlZjMwZmQw
NGZmYzIyNjEwZmJlZmZkMGIxYzc5MWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5CkBAIC00Niw3ICs0NiwxMCBAQCBjbGFzcyBD
b21taXRRdWV1ZVRhc2tEZWxlZ2F0ZShvYmplY3QpOgogICAgIGRlZiBsYXlvdXRfdGVzdF9yZXN1
bHRzKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2Vz
IG11c3QgaW1wbGVtZW50IikKIAotICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0
Y2gsIGZsYWt5X3Rlc3RzKToKKyAgICBkZWYgYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3Vs
dHMoc2VsZiwgcGF0Y2gpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJj
bGFzc2VzIG11c3QgaW1wbGVtZW50IikKKworICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMoc2Vs
ZiwgcGF0Y2gsIGZsYWt5X3Rlc3RzLCByZXN1bHRzX2FyY2hpdmU9Tm9uZSk6CiAgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQogCiAK
QEAgLTE2OCw4ICsxNzEsOCBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0KToKICAgICAg
ICAgIkxhbmRlZCBwYXRjaCIsCiAgICAgICAgICJVbmFibGUgdG8gbGFuZCBwYXRjaCIpCiAKLSAg
ICBkZWYgX3JlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBmbGFreV90ZXN0X3Jlc3VsdHMpOgotICAg
ICAgICBzZWxmLl9kZWxlZ2F0ZS5yZXBvcnRfZmxha3lfdGVzdHMoc2VsZi5fcGF0Y2gsIGZsYWt5
X3Rlc3RfcmVzdWx0cykKKyAgICBkZWYgX3JlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBmbGFreV90
ZXN0X3Jlc3VsdHMsIHJlc3VsdHNfYXJjaGl2ZSk6CisgICAgICAgIHNlbGYuX2RlbGVnYXRlLnJl
cG9ydF9mbGFreV90ZXN0cyhzZWxmLl9wYXRjaCwgZmxha3lfdGVzdF9yZXN1bHRzLCByZXN1bHRz
X2FyY2hpdmUpCiAKICAgICBkZWYgX3Rlc3RfcGF0Y2goc2VsZik6CiAgICAgICAgIGlmIHNlbGYu
X3BhdGNoLmlzX3JvbGxvdXQoKToKQEAgLTE3NywxNCArMTgwLDE1IEBAIGNsYXNzIENvbW1pdFF1
ZXVlVGFzayhvYmplY3QpOgogICAgICAgICBpZiBzZWxmLl90ZXN0KCk6CiAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQogCi0gICAgICAgIGZpcnN0X2ZhaWxpbmdfcmVzdWx0cyA9IHNlbGYuX2ZhaWxp
bmdfcmVzdWx0c19mcm9tX2xhc3RfcnVuKCkKLSAgICAgICAgZmlyc3RfZmFpbGluZ190ZXN0cyA9
IFtyZXN1bHQuZmlsZW5hbWUgZm9yIHJlc3VsdCBpbiBmaXJzdF9mYWlsaW5nX3Jlc3VsdHNdCisg
ICAgICAgIGZpcnN0X3Jlc3VsdHMgPSBzZWxmLl9mYWlsaW5nX3Jlc3VsdHNfZnJvbV9sYXN0X3J1
bigpCisgICAgICAgIGZpcnN0X2ZhaWxpbmdfdGVzdHMgPSBbcmVzdWx0LmZpbGVuYW1lIGZvciBy
ZXN1bHQgaW4gZmlyc3RfcmVzdWx0c10KKyAgICAgICAgZmlyc3RfcmVzdWx0c19hcmNoaXZlID0g
c2VsZi5fZGVsZWdhdGUuYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoKQogICAgICAg
ICBpZiBzZWxmLl90ZXN0KCk6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfZmxha3lfdGVzdHMo
Zmlyc3RfZmFpbGluZ19yZXN1bHRzKQorICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2ZsYWt5X3Rl
c3RzKGZpcnN0X3Jlc3VsdHMsIHJlc3VsdHNfYXJjaGl2ZSkKICAgICAgICAgICAgIHJldHVybiBU
cnVlCiAKLSAgICAgICAgc2Vjb25kX2ZhaWxpbmdfcmVzdWx0cyA9IHNlbGYuX2ZhaWxpbmdfcmVz
dWx0c19mcm9tX2xhc3RfcnVuKCkKLSAgICAgICAgc2Vjb25kX2ZhaWxpbmdfdGVzdHMgPSBbcmVz
dWx0LmZpbGVuYW1lIGZvciByZXN1bHQgaW4gc2Vjb25kX2ZhaWxpbmdfcmVzdWx0c10KKyAgICAg
ICAgc2Vjb25kX3Jlc3VsdHMgPSBzZWxmLl9mYWlsaW5nX3Jlc3VsdHNfZnJvbV9sYXN0X3J1bigp
CisgICAgICAgIHNlY29uZF9mYWlsaW5nX3Rlc3RzID0gW3Jlc3VsdC5maWxlbmFtZSBmb3IgcmVz
dWx0IGluIHNlY29uZF9yZXN1bHRzXQogICAgICAgICBpZiBmaXJzdF9mYWlsaW5nX3Rlc3RzICE9
IHNlY29uZF9mYWlsaW5nX3Rlc3RzOgogICAgICAgICAgICAgIyBXZSBjb3VsZCByZXBvcnQgZmxh
a3kgdGVzdHMgaGVyZSwgYnV0IHNpbmNlIHJ1bi13ZWJraXQtdGVzdHMKICAgICAgICAgICAgICMg
aXMgcnVuIHdpdGggLS1leGl0LWFmdGVyLU4tZmFpbHVyZXM9MSwgd2Ugd291bGQgbmVlZCB0bwpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRh
c2tfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1
ZXVldGFza191bml0dGVzdC5weQppbmRleCBmMjc5Y2FjNTRlMTM1YTk0NjViN2QwYjU0OTgyMDAy
YWRmMjY4MTJlLi5lMjk1YWJiMTc5MzMxMWE0ZjViOTkzMWVkN2U4ZDdjMzk1OTQxMGI3IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1
ZXVldGFza191bml0dGVzdC5weQpAQCAtNjQsOSArNjQsMTIgQEAgY2xhc3MgTW9ja0NvbW1pdFF1
ZXVlKENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlKToKICAgICBkZWYgbGF5b3V0X3Rlc3RfcmVzdWx0
cyhzZWxmKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiByZXBvcnRfZmxha3lfdGVz
dHMoc2VsZiwgcGF0Y2gsIGZsYWt5X3Jlc3VsdHMpOgorICAgIGRlZiByZXBvcnRfZmxha3lfdGVz
dHMoc2VsZiwgcGF0Y2gsIGZsYWt5X3Jlc3VsdHMsIHJlc3VsdHNfYXJjaGl2ZT1Ob25lKToKICAg
ICAgICAgZmxha3lfdGVzdHMgPSBbcmVzdWx0LmZpbGVuYW1lIGZvciByZXN1bHQgaW4gZmxha3lf
cmVzdWx0c10KLSAgICAgICAgbG9nKCJyZXBvcnRfZmxha3lfdGVzdHM6IHBhdGNoPSclcycgZmxh
a3lfdGVzdHM9JyVzJyIgJSAocGF0Y2guaWQoKSwgZmxha3lfdGVzdHMpKQorICAgICAgICBtZXNz
YWdlID0gInJlcG9ydF9mbGFreV90ZXN0czogcGF0Y2g9JyVzJyBmbGFreV90ZXN0cz0nJXMnIiAl
IChwYXRjaC5pZCgpLCBmbGFreV90ZXN0cykKKyAgICAgICAgaWYgcmVzdWx0c19hcmNoaXZlOgor
ICAgICAgICAgICAgbWVzc2FnZSArPSAiIGFyY2hpdmU9JyVzJyIKKyAgICAgICAgbG9nKG1lc3Nh
Z2UpCiAKIAogY2xhc3MgQ29tbWl0UXVldWVUYXNrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9y
dGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRl
ci5weQppbmRleCA5MWZjYjg1OWUxZWNiNDIyYzc1MDYxYzhmZDU4YTI1ZGQyYjFmNTU0Li41YzEw
NDFmYTQ2YjdlMjc2YzVkN2MyOTVkMzdmZGIwZDAyZTY4NWI5IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXIucHkKQEAgLTEzMSwx
MyArMTMxLDEwIEBAIElmIHlvdSB3b3VsZCBsaWtlIHRvIHRyYWNrIHRoaXMgdGVzdCBmaXggd2l0
aCBhbm90aGVyIGJ1ZywgcGxlYXNlIGNsb3NlIHRoaXMgYnVnCiAgICAgICAgIGZsYWtlX21lc3Nh
Z2UgPSAiVGhlICVzIGp1c3Qgc2F3ICVzIGZsYWtlICglcykgd2hpbGUgcHJvY2Vzc2luZyBhdHRh
Y2htZW50ICVzIG9uIGJ1ZyAlcy4iICUgKHNlbGYuX2JvdF9uYW1lLCBmbGFreV9yZXN1bHQuZmls
ZW5hbWUsICIsICIuam9pbihmYWlsdXJlX21lc3NhZ2VzKSwgcGF0Y2guaWQoKSwgcGF0Y2guYnVn
X2lkKCkpCiAgICAgICAgIHJldHVybiAiJXNcbiVzIiAlIChmbGFrZV9tZXNzYWdlLCBzZWxmLl9i
b3RfaW5mb3JtYXRpb24oKSkKIAotICAgIGRlZiBfcmVzdWx0c19kaWZmX3BhdGhfZm9yX3Rlc3Qo
c2VsZiwgZmxha3lfdGVzdCk6CisgICAgZGVmIF9yZXN1bHRzX2RpZmZfcGF0aF9mb3JfdGVzdChz
ZWxmLCB0ZXN0X3BhdGgpOgogICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIGEgYmlnIGhhY2suICBX
ZSBzaG91bGQgZ2V0IHRoaXMgcGF0aCBmcm9tIHJlc3VsdHMuanNvbgogICAgICAgICAjIGV4Y2Vw
dCB0aGF0IG9sZC1ydW4td2Via2l0LXRlc3RzIGRvZXNuJ3QgcHJvZHVjZSBhIHJlc3VsdHMuanNv
bgogICAgICAgICAjIHNvIHdlIGp1c3QgZ3Vlc3MgYXQgdGhlIGZpbGUgcGF0aC4KLSAgICAgICAg
cmVzdWx0c19wYXRoID0gc2VsZi5fdG9vbC5wb3J0KCkubGF5b3V0X3Rlc3RzX3Jlc3VsdHNfcGF0
aCgpCi0gICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKHJlc3VsdHNf
cGF0aCkKLSAgICAgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKHJlc3VsdHNfZGlyZWN0b3J5
LCBmbGFreV90ZXN0KQogICAgICAgICAodGVzdF9wYXRoX3Jvb3QsIF8pID0gb3MucGF0aC5zcGxp
dGV4dCh0ZXN0X3BhdGgpCiAgICAgICAgIHJldHVybiAiJXMtZGlmZnMudHh0IiAlIHRlc3RfcGF0
aF9yb290CiAKQEAgLTE1Myw3ICsxNTAsMjAgQEAgSWYgeW91IHdvdWxkIGxpa2UgdG8gdHJhY2sg
dGhpcyB0ZXN0IGZpeCB3aXRoIGFub3RoZXIgYnVnLCBwbGVhc2UgY2xvc2UgdGhpcyBidWcKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3Rvb2wuYnVncy5wb3N0X2NvbW1lbnRfdG9f
YnVnKGJ1Zy5pZCgpLCBsYXRlc3RfZmxha2VfbWVzc2FnZSkKIAotICAgIGRlZiByZXBvcnRfZmxh
a3lfdGVzdHMoc2VsZiwgZmxha3lfdGVzdF9yZXN1bHRzLCBwYXRjaCk6CisgICAgZGVmIF9hdHRh
Y2hfZmFpbHVyZV9kaWZmKHNlbGYsIGZsYWt5X3Rlc3QsIHJlc3VsdHNfYXJjaGl2ZV9wYXRoLCBm
bGFrZV9idWdfaWQpOgorICAgICAgICByZXN1bHRzX2RpZmZfcGF0aCA9IHNlbGYuX3Jlc3VsdHNf
ZGlmZl9wYXRoX2Zvcl90ZXN0KGZsYWt5X3Rlc3QpCisgICAgICAgICMgQ2hlY2sgdG8gbWFrZSBz
dXJlIHRoYXQgdGhlIHBhdGggbWFrZXMgc2Vuc2UuCisgICAgICAgICMgU2luY2Ugd2UncmUgbm90
IGFjdHVhbGx5IGdldHRpbmcgdGhpcyBwYXRoIGZyb20gdGhlIHJlc3VsdHMuaHRtbAorICAgICAg
ICAjIHRoZXJlIGlzIGEgY2hhbmNlIGl0J3Mgd3JvbmcuCisgICAgICAgIHJlc3VsdHNfYXJjaGl2
ZSA9IFppcEZpbGUocmVzdWx0c19hcmNoaXZlX3BhdGgpCisgICAgICAgIGlmIHJlc3VsdHNfZGlm
Zl9wYXRoIGluIHJlc3VsdHNfYXJjaGl2ZS5uYW1lbGlzdCgpOgorICAgICAgICAgICAgcmVzdWx0
c19kaWZmID0gcmVzdWx0c19hcmNoaXZlLnJlYWRfYmluYXJ5X2ZpbGUocmVzdWx0c19kaWZmX3Bh
dGgpCisgICAgICAgICAgICBib3RfaWQgPSBzZWxmLl90b29sLnN0YXR1c19zZXJ2ZXIuYm90X2lk
IG9yICJib3QiCisgICAgICAgICAgICBzZWxmLl90b29sLmJ1Z3MuYWRkX2F0dGFjaG1lbnRfdG9f
YnVnKGZsYWtlX2J1Z19pZCwgcmVzdWx0c19kaWZmLCAiRmFpbHVyZSBkaWZmIGZyb20gJXMiICUg
Ym90X2lkLCBmaWxlbmFtZT0iZmFpbHVyZS5kaWZmIikKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIF9sb2cuZXJyb3IoIiVzIGRvZXMgbm90IGV4aXN0IGFzIGV4cGVjdGVkLCBub3QgdXBsb2Fk
aW5nLiIgJSByZXN1bHRzX2RpZmZfcGF0aCkKKworICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMo
c2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3RfcmVzdWx0cywgcmVzdWx0c19hcmNoaXZlPU5vbmUpOgog
ICAgICAgICBtZXNzYWdlID0gIlRoZSAlcyBlbmNvdW50ZXJlZCB0aGUgZm9sbG93aW5nIGZsYWt5
IHRlc3RzIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNobWVudCAlczpcblxuIiAlIChzZWxmLl9ib3Rf
bmFtZSwgcGF0Y2guaWQoKSkKICAgICAgICAgZm9yIGZsYWt5X3Jlc3VsdCBpbiBmbGFreV90ZXN0
X3Jlc3VsdHM6CiAgICAgICAgICAgICBmbGFreV90ZXN0ID0gZmxha3lfcmVzdWx0LmZpbGVuYW1l
CkBAIC0xNjksMTYgKzE3OSw3IEBAIElmIHlvdSB3b3VsZCBsaWtlIHRvIHRyYWNrIHRoaXMgdGVz
dCBmaXggd2l0aCBhbm90aGVyIGJ1ZywgcGxlYXNlIGNsb3NlIHRoaXMgYnVnCiAgICAgICAgICAg
ICAgICAgZmxha2VfYnVnX2lkID0gYnVnLmlkKCkKICAgICAgICAgICAgICMgRklYTUU6IElkZWFs
bHkgd2UnZCBvbmx5IG1ha2Ugb25lIGNvbW1lbnQgcGVyIGZsYWtlLCBub3QgdHdvLiAgQnV0IHRo
YXQncyBub3QgcG9zc2libGUKICAgICAgICAgICAgICMgaW4gYWxsIGNhc2VzIChlLmcuIHdoZW4g
cmVvcGVuaW5nKSwgc28gZm9yIG5vdyB3ZSBkbyB0aGUgYXR0YWNobWVudCBpbiBhIHNlY29uZCBz
dGVwLgotICAgICAgICAgICAgcmVzdWx0c19kaWZmX3BhdGggPSBzZWxmLl9yZXN1bHRzX2RpZmZf
cGF0aF9mb3JfdGVzdChmbGFreV90ZXN0KQotICAgICAgICAgICAgIyBDaGVjayB0byBtYWtlIHN1
cmUgdGhhdCB0aGUgcGF0aCBtYWtlcyBzZW5zZS4KLSAgICAgICAgICAgICMgU2luY2Ugd2UncmUg
bm90IGFjdHVhbGx5IGdldHRpbmcgdGhpcyBwYXRoIGZyb20gdGhlIHJlc3VsdHMuaHRtbAotICAg
ICAgICAgICAgIyB0aGVyZSBpcyBhIGhpZ2ggcHJvYmFpbGl0eSBpdCdzIHRvdGFsbHkgd3Jvbmcu
Ci0gICAgICAgICAgICBpZiBzZWxmLl90b29sLmZpbGVzeXN0ZW0uZXhpc3RzKHJlc3VsdHNfZGlm
Zl9wYXRoKToKLSAgICAgICAgICAgICAgICByZXN1bHRzX2RpZmYgPSBzZWxmLl90b29sLmZpbGVz
eXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShyZXN1bHRzX2RpZmZfcGF0aCkKLSAgICAgICAgICAgICAg
ICBib3RfaWQgPSBzZWxmLl90b29sLnN0YXR1c19zZXJ2ZXIuYm90X2lkIG9yICJib3QiCi0gICAg
ICAgICAgICAgICAgc2VsZi5fdG9vbC5idWdzLmFkZF9hdHRhY2htZW50X3RvX2J1ZyhmbGFrZV9i
dWdfaWQsIHJlc3VsdHNfZGlmZiwgIkZhaWx1cmUgZGlmZiBmcm9tICVzIiAlIGJvdF9pZCwgZmls
ZW5hbWU9ImZhaWx1cmUuZGlmZiIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IF9sb2cuZXJyb3IoIiVzIGRvZXMgbm90IGV4aXN0IGFzIGV4cGVjdGVkLCBub3QgdXBsb2FkaW5n
LiIgJSByZXN1bHRzX2RpZmZfcGF0aCkKKyAgICAgICAgICAgIHNlbGYuX2F0dGFjaF9mYWlsdXJl
X2RpZmYoKQogICAgICAgICAgICAgbWVzc2FnZSArPSAiJXMgYnVnICVzJXNcbiIgJSAoZmxha3lf
dGVzdCwgZmxha2VfYnVnX2lkLCBzZWxmLl9vcHRpb25hbF9hdXRob3Jfc3RyaW5nKGF1dGhvcl9l
bWFpbHMpKQogCiAgICAgICAgIG1lc3NhZ2UgKz0gIlRoZSAlcyBpcyBjb250aW51aW5nIHRvIHBy
b2Nlc3MgeW91ciBwYXRjaC4iICUgc2VsZi5fYm90X25hbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXJfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyX3VuaXR0ZXN0
LnB5CmluZGV4IDYzMWY4ZDFlMzQ5OWM2ZDMwNDkxN2Y0MDk5ZDNmNjI3ZWFlNjNlNGYuLjA0YmU1
N2E3OWM2MjViMTZlNzFhZTZmZmM4OGZhM2NiOWVkMGE0ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXJfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRlcl91bml0
dGVzdC5weQpAQCAtMTQwLDcgKzE0MCw3IEBAIFRoZSBkdW1teS1xdWV1ZSBpcyBjb250aW51aW5n
IHRvIHByb2Nlc3MgeW91ciBwYXRjaC4KIAogIiIiCiAgICAgICAgIHRlc3RfcmVzdWx0cyA9IFtz
ZWxmLl9tb2NrX3Rlc3RfcmVzdWx0KCdmb28vYmFyLmh0bWwnKV0KLSAgICAgICAgT3V0cHV0Q2Fw
dHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJlcG9ydGVyLnJlcG9ydF9mbGFreV90ZXN0cywg
W3Rlc3RfcmVzdWx0cywgcGF0Y2hdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQor
ICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcmVwb3J0ZXIucmVw
b3J0X2ZsYWt5X3Rlc3RzLCBbcGF0Y2gsIHRlc3RfcmVzdWx0c10sIGV4cGVjdGVkX3N0ZGVycj1l
eHBlY3RlZF9zdGRlcnIpCiAKICAgICBkZWYgdGVzdF9vcHRpb25hbF9hdXRob3Jfc3RyaW5nKHNl
bGYpOgogICAgICAgICByZXBvcnRlciA9IEZsYWt5VGVzdFJlcG9ydGVyKE1vY2tUb29sKCksICdk
dW1teS1xdWV1ZScpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcXVldWVzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1
ZXVlcy5weQppbmRleCA1NjI4NTQzMzIxOTZiNDlhMmJlZTYyZjNjNWNjMGI2ZmI5Y2M0Y2Y1Li5j
ZGU1ZjBhNDU2MWI4NzFlMWFlYTUzMzM2NjMwNWQ4ZWVmNzcxNzk0IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKQEAgLTMwOSwxMiArMzA5LDQ2
IEBAIGNsYXNzIENvbW1pdFF1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJy
b3JIYW5kbGVyLCBDb21taXRRdWV1ZVRhc2tECiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAg
ICAgICByZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyhyZXN1bHRz
X2h0bWwpCiAKKyAgICBkZWYgX3Jlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICByZXN1
bHRzX3BhdGggPSBzZWxmLl90b29sLnBvcnQoKS5sYXlvdXRfdGVzdHNfcmVzdWx0c19wYXRoKCkK
KyAgICAgICAgIyBGSVhNRTogVGhpcyBpcyB3cm9uZyBpbiB0d28gd2F5czoKKyAgICAgICAgIyAx
LiBJdCBhc3N1bWVzIHRoYXQgcmVzdWx0cy5odG1sIGlzIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhl
IHJlc3VsdHMgdHJlZS4KKyAgICAgICAgIyAyLiBUaGlzIHVzZXMgdGhlICJvbGQiIHBvcnRzLnB5
IGluZnJhc3RydWN0dXJlIGluc3RlYWQgb2YgdGhlIG5ldyBsYXlvdXRfdGVzdHMvcG9ydAorICAg
ICAgICAjIHdoaWNoIHdpbGwgbm90IHN1cHBvcnQgQ2hyb21pdW0uICBIb3dldmVyIHRoZSBuZXcg
YXJjaCBkb2Vzbid0IHdvcmsgd2l0aCBvbGQtcnVuLXdlYmtpdC10ZXN0cworICAgICAgICAjIHNv
IHdlIGhhdmUgdG8gdXNlIHRoaXMgZm9yIG5vdy4KKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZGly
bmFtZShyZXN1bHRzX3BhdGgpCisKKyAgICAjIEZJWE1FOiBUaGlzIGRvZXMgbm90IHJlYWxseSBi
ZWxvbmcgb24gZmlsZXN5c3RlbSwgYmVjYXVzZSBpdCB1c2VzIGZpbGVzeXN0ZW0KKyAgICAjIGhv
d2V2ZXIgaXQgZG9lc24ndCByZWFsbHkgYmVsb25nIGhlcmUgZWl0aGVyLiAgV2UgbmVlZCBhIG5l
dyBhYnN0YWN0aW9uLgorICAgIGRlZiBfZmluZF91bnVzZWRfZmlsZW5hbWUoc2VsZiwgZGlyZWN0
b3J5LCBuYW1lLCBleHRlbnNpb24sIHNlYXJjaF9saW1pdD0xMCk6CisgICAgICAgIGZvciBjb3Vu
dCBpbiByYW5nZShzZWFyY2hfbGltaXQpOgorICAgICAgICAgICAgaWYgZHVwbGljYXRlX2NvdW50
OgorICAgICAgICAgICAgICAgIHRhcmdldF9uYW1lID0gIiVzLSVzLiVzIiAlIChuYW1lLCBjb3Vu
dCwgZXh0ZW5zaW9uKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0YXJnZXRf
bmFtZSA9ICIlcy4lcyIgJSAobmFtZSwgZXh0ZW5zaW9uKQorICAgICAgICAgICAgdGFyZ2V0X3Bh
dGggPSBzZWxmLmpvaW4oZGlyZWN0b3J5LCBuYW1lKQorICAgICAgICAgICAgaWYgbm90IHNlbGYu
ZXhpc3RzKHRhcmdldF9wYXRoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0X3BhdGgK
KyAgICAgICAgIyBJZiB3ZSBjYW4ndCBmaW5kIGFuIHVudXNlZCBuYW1lIGluIHNlYXJjaF9saW1p
dCB0cmllcywganVzdCBnaXZlIHVwLgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGFy
Y2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYsIHBhdGNoKToKKyAgICAgICAgcmVz
dWx0c19kaXJlY3RvcnkgPSBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSgpCisgICAgICAgIHJlc3Vs
dHNfbmFtZSwgXyA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShyZXN1bHRzX2Rp
cmVjdG9yeSkpCisgICAgICAgICMgTm90ZTogV2UgbmFtZSB0aGUgemlwIHdpdGggdGhlIGJ1Z19p
ZCBpbnN0ZWFkIG9mIHBhdGNoX2lkIHRvIG1hdGNoIHdvcmtfaXRlbV9sb2dfcGF0aCgpLgorICAg
ICAgICB6aXBfcGF0aCA9IHNlbGYuX2ZpbmRfdW51c2VkX25hbWUoc2VsZi5fbG9nX2RpcmVjdG9y
eSgpLCAiJXMtJXMiICUgKHBhdGNoLmJ1Z19pZCgpLCByZXN1bHRzX25hbWUpLCAiemlwIikKKyAg
ICAgICAgIyBJdCdzIHBvc3NpYmxlIHRvIGNyZWF0ZSB6aXBzIHdpdGggUHl0aG9uLCBidXQgZG9p
bmcgc28gY29ycmVjdGx5IG1heSBiZSBub24tdHJpdmlhbC4KKyAgICAgICAgIyBGb3Igbm93IHdl
IGRlcGVuZCBvbiB0aGUgZW52aXJvbm1lbnQgaGF2aW5nICJ6aXAiIGluc3RhbGxlZC4KKyAgICAg
ICAgemlwX2NvbW1hbmQgPSBbJ3ppcCcsIHppcF9wYXRoLCByZXN1bHRzX2RpcmVjdG9yeV0KKyAg
ICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2NvbW1hbmQoemlwX2NvbW1hbmQpCisgICAg
ICAgIHJldHVybiB6aXBfcGF0aAorCiAgICAgZGVmIHJlZmV0Y2hfcGF0Y2goc2VsZiwgcGF0Y2gp
OgogICAgICAgICByZXR1cm4gc2VsZi5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQocGF0Y2gu
aWQoKSkKIAotICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0Y2gsIGZsYWt5X3Rl
c3RfcmVzdWx0cyk6CisgICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxh
a3lfdGVzdF9yZXN1bHRzLCByZXN1bHRzX2FyY2hpdmU9Tm9uZSk6CiAgICAgICAgIHJlcG9ydGVy
ID0gRmxha3lUZXN0UmVwb3J0ZXIoc2VsZi5fdG9vbCwgc2VsZi5uYW1lKQotICAgICAgICByZXBv
cnRlci5yZXBvcnRfZmxha3lfdGVzdHMoZmxha3lfdGVzdF9yZXN1bHRzLCBwYXRjaCkKKyAgICAg
ICAgcmVwb3J0ZXIucmVwb3J0X2ZsYWt5X3Rlc3RzKHBhdGNoLCBmbGFreV90ZXN0X3Jlc3VsdHMs
IHJlc3VsdHNfYXJjaGl2ZSkKIAogICAgICMgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyIG1ldGhv
ZHMKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1
ZXVlc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9x
dWV1ZXNfdW5pdHRlc3QucHkKaW5kZXggMzRhNmE2NGQ4MzgwOGRkMmVjOTA1YWE0NjVkYzIwOWJh
ZWI5ZTgwMi4uMDlkZWM2OGEwZWU0M2QxNDQxYmRmOWQwNmM4MjNiZDlkNzg4NWEzZSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVz
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3Vu
aXR0ZXN0LnB5CkBAIC0zNzAsNiArMzcwLDE3IEBAIFRoZSBjb21taXQtcXVldWUgaXMgY29udGlu
dWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guCiAgICAgICAgIHF1ZXVlLl9yZWFkX2ZpbGVfY29u
dGVudHMgPSBsYW1iZGEgcGF0aDogIiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocXVldWUu
bGF5b3V0X3Rlc3RfcmVzdWx0cygpLCBOb25lKQogCisgICAgZGVmIHRlc3RfZmluZF91bnVzZWRf
ZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHF1ZXVlID0gQ29tbWl0UXVldWUoKQorICAgICAgICB0
b29sID0gTW9ja1Rvb2woKQorICAgICAgICBxdWV1ZS5iaW5kX3RvX3Rvb2wodG9vbCkKKyAgICAg
ICAgdG9vbC5maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oeworICAgICAgICAgICAgImRpci9m
b28uanBnIjogIiIsCisgICAgICAgICAgICAiZGlyL2Zvby0xLmpwZyI6ICIiLAorICAgICAgICB9
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHF1ZXVlLl9maW5kX3VudXNlZF9maWxlbmFtZSgi
YmFyIiwgImJhciIsICJiYXIiKSwgImJhci9iYXIuYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChxdWV1ZS5fZmluZF91bnVzZWRfZmlsZW5hbWUoImRpciIsICJmb28iLCAianBnIiksICJk
aXIvZm9vLTIuanBnIikKKwogCiBjbGFzcyBTdHlsZVF1ZXVlVGVzdChRdWV1ZXNUZXN0KToKICAg
ICBkZWYgdGVzdF9zdHlsZV9xdWV1ZShzZWxmKToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78367</attachid>
            <date>2011-01-09 21:09:08 -0800</date>
            <delta_ts>2011-01-10 02:57:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52048-20110109210906.patch</filename>
            <type>text/plain</type>
            <size>22586</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZDg3
OTE3N2JhZDUxYzM4MzMwYzYxMWIyZGY0OWU3N2VmMGMyNTZmLi4xNTZlNmQ3NWJkZjgwNDQwZDM4
NDYyNTQ0NWE4N2JiMDA5Mzg5Y2E1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDEtMDkgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGNvbW1pdC1xdWV1ZSBzaG91bGQga25vdyBob3cgdG8gdXBsb2FkIGFyY2hp
dmVkIHJlc3VsdHMgKGZvciB0ZXN0IGZsYWtlcyBvciBnZW5lcmFsIGZhaWx1cmVzKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIwNDgKKworICAgICAg
ICBOb3cgdGhlIHF1ZXVlIHdpbGwgYWx3YXlzIHVwbG9hZCByZXN1bHRzLiAgRWl0aGVyIHRoZSBl
bnRpcmUgemlwLCBvciBqdXN0CisgICAgICAgIHRoZSBkaWZmcy50eHQgaW4gdGhlIGNhc2Ugb2Yg
dGV4dCBmYWlsdXJlcy4KKworICAgICAgICBUaGlzIHNob3VsZCBtYWtlIHVuZGVyc3RhbmRpbmcg
Zmxha2VzIG11Y2ggZWFzaWVyLCBhbmQgcGF2ZXMgdGhlIHdheQorICAgICAgICBmb3IgaGF2aW5n
IHRoZSBFV1MgcnVuIGxheW91dCB0ZXN0cyAoYW5kIHVwbG9hZCBmYWlsdXJlcykuCisKKyAgICAg
ICAgSW4gb3JkZXIgdG8gdXBsb2FkIC56aXAgZmlsZXMgSSBoYWQgdG8gdGVhY2ggYnVnemlsbGEu
cHkgdG8gYXV0b2RldGVjdAorICAgICAgICBtaW1lIHR5cGVzIGZyb20gdGhlIGZpbGVuYW1lLiAg
U2luY2UgbWltZXR5cGVzLnB5IGRvZXNuJ3QgaW5jbHVkZSBhIG1hcHBpbmcKKyAgICAgICAgZm9y
IC5wYXRjaCBmaWxlcywgSSBoYXZlIGl0IGFkZCBvbmUgYmVmb3JlIGNhbGxpbmcgZ3Vlc3NfdHlw
ZS4KKworICAgICAgICBXZSBtYXkgZmluZCB0aGF0IGFsd2F5cyB1cGxvYWRpbmcgdGhlIHdob2xl
IHppcCBpbnN0ZWFkIG9mIGp1c3QgdGhlIC1kaWZmcy50eHQKKyAgICAgICAgZmlsZSBpcyBwcmVm
ZXJhYmxlLCBidXQgZm9yIG5vdyBJJ20ga2VlcGluZyB0aGUgb2xkIGJlaGF2aW9yIGJlY2F1c2Ug
aXQgbWFrZXMKKyAgICAgICAgcXVpY2tseSB1bmRlcnN0YW5kaW5nIHRleHQgZmFpbHVyZXMgZWFz
eS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6
aWxsYS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVl
dGFzay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVl
dGFza191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2Zs
YWt5dGVzdHJlcG9ydGVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
Zmxha3l0ZXN0cmVwb3J0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5OgorCiAyMDExLTAxLTA4ICBCZW5qYW1pbiBQ
b3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkKaW5kZXggZDYyMTBkNTJm
YWQ2NmY2MDRmNDU4MmY4Nzg2YzQwZGY4ZDE5NTEzMC4uMTdhODUxNWQyOGE1ZmNkZTU1ODg0N2Zi
NDUzYTJhZWY2MzY5MGUxMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQpAQCAtMzAsNiArMzAsNyBAQAogIwogIyBX
ZWJLaXQncyBQeXRob24gbW9kdWxlIGZvciBpbnRlcmFjdGluZyB3aXRoIEJ1Z3ppbGxhCiAKK2lt
cG9ydCBtaW1ldHlwZXMKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgcmUKIGltcG9ydCBTdHJpbmdJ
TwpAQCAtNDQxLDcgKzQ0MiwxMSBAQCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogICAgICAgICBz
ZWxmLmJyb3dzZXJbJ2ZsYWdfdHlwZS0zJ10gPSAoc2VsZi5fY29tbWl0X3F1ZXVlX2ZsYWcobWFy
a19mb3JfbGFuZGluZywgbWFya19mb3JfY29tbWl0X3F1ZXVlKSwpCiAKICAgICAgICAgZmlsZW5h
bWUgPSBmaWxlbmFtZSBvciAiJXMucGF0Y2giICUgdGltZXN0YW1wKCkKLSAgICAgICAgbWltZXR5
cGUgPSBtaW1ldHlwZSBvciAidGV4dC9wbGFpbiIKKyAgICAgICAgaWYgbm90IG1pbWV0eXBlOgor
ICAgICAgICAgICAgbWltZXR5cGVzLmFkZF90eXBlKCd0ZXh0L3BsYWluJywgJy5wYXRjaCcpICAj
IE1ha2Ugc3VyZSBtaW1ldHlwZXMga25vd3MgYWJvdXQgLnBhdGNoCisgICAgICAgICAgICBtaW1l
dHlwZSwgXyA9IG1pbWV0eXBlcy5ndWVzc190eXBlKGZpbGVuYW1lKQorICAgICAgICBpZiBub3Qg
bWltZXR5cGU6CisgICAgICAgICAgICBtaW1ldHlwZSA9ICJ0ZXh0L3BsYWluIiAgIyBCdWd6aWxs
YSBtaWdodCBhdXRvLWd1ZXNzIGZvciB1cyBhbmQgd2UgbWlnaHQgbm90IG5lZWQgdGhpcz8KICAg
ICAgICAgc2VsZi5icm93c2VyLmFkZF9maWxlKGZpbGVfb2JqZWN0LCBtaW1ldHlwZSwgZmlsZW5h
bWUsICdkYXRhJykKIAogICAgIGRlZiBfZmlsZV9vYmplY3RfZm9yX3VwbG9hZChzZWxmLCBmaWxl
X29yX3N0cmluZyk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2NvbW1pdHF1ZXVldGFzay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29t
bWl0cXVldWV0YXNrLnB5CmluZGV4IDRiZGM3OWIxZTEzYzRmNWE3NDFmM2ZlNGY2NDI3ZDI1NTZi
ZWNmM2EuLmZmYjg2ZmM4ZjQ4ZjI3ZDM3YzkzMzk3Mjk1NGE0OWVmZWIwNjAyNTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5CkBA
IC00Niw3ICs0NiwxMSBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2tEZWxlZ2F0ZShvYmplY3QpOgog
ICAgIGRlZiBsYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKIAotICAgIGRlZiByZXBv
cnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3RzKToKKyAgICBkZWYgYXJjaGl2
ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZiwgcGF0Y2gpOgorICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKKworICAgICMg
V2UgY291bGQgbWFrZSByZXN1bHRzX2FyY2hpdmUgb3B0aW9uYWwsIGJ1dCBmb3Igbm93IGl0J3Mg
cmVxdWlyZWQuCisgICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lf
dGVzdHMsIHJlc3VsdHNfYXJjaGl2ZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJy
b3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQogCiAKQEAgLTE2OCw4ICsxNzIsOCBAQCBj
bGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0KToKICAgICAgICAgIkxhbmRlZCBwYXRjaCIsCiAg
ICAgICAgICJVbmFibGUgdG8gbGFuZCBwYXRjaCIpCiAKLSAgICBkZWYgX3JlcG9ydF9mbGFreV90
ZXN0cyhzZWxmLCBmbGFreV90ZXN0X3Jlc3VsdHMpOgotICAgICAgICBzZWxmLl9kZWxlZ2F0ZS5y
ZXBvcnRfZmxha3lfdGVzdHMoc2VsZi5fcGF0Y2gsIGZsYWt5X3Rlc3RfcmVzdWx0cykKKyAgICBk
ZWYgX3JlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBmbGFreV90ZXN0X3Jlc3VsdHMsIHJlc3VsdHNf
YXJjaGl2ZSk6CisgICAgICAgIHNlbGYuX2RlbGVnYXRlLnJlcG9ydF9mbGFreV90ZXN0cyhzZWxm
Ll9wYXRjaCwgZmxha3lfdGVzdF9yZXN1bHRzLCByZXN1bHRzX2FyY2hpdmUpCiAKICAgICBkZWYg
X3Rlc3RfcGF0Y2goc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3BhdGNoLmlzX3JvbGxvdXQoKToK
QEAgLTE3NywxNCArMTgxLDE1IEBAIGNsYXNzIENvbW1pdFF1ZXVlVGFzayhvYmplY3QpOgogICAg
ICAgICBpZiBzZWxmLl90ZXN0KCk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgICAg
IGZpcnN0X2ZhaWxpbmdfcmVzdWx0cyA9IHNlbGYuX2ZhaWxpbmdfcmVzdWx0c19mcm9tX2xhc3Rf
cnVuKCkKLSAgICAgICAgZmlyc3RfZmFpbGluZ190ZXN0cyA9IFtyZXN1bHQuZmlsZW5hbWUgZm9y
IHJlc3VsdCBpbiBmaXJzdF9mYWlsaW5nX3Jlc3VsdHNdCisgICAgICAgIGZpcnN0X3Jlc3VsdHMg
PSBzZWxmLl9mYWlsaW5nX3Jlc3VsdHNfZnJvbV9sYXN0X3J1bigpCisgICAgICAgIGZpcnN0X2Zh
aWxpbmdfdGVzdHMgPSBbcmVzdWx0LmZpbGVuYW1lIGZvciByZXN1bHQgaW4gZmlyc3RfcmVzdWx0
c10KKyAgICAgICAgZmlyc3RfcmVzdWx0c19hcmNoaXZlID0gc2VsZi5fZGVsZWdhdGUuYXJjaGl2
ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZi5fcGF0Y2gpCiAgICAgICAgIGlmIHNlbGYu
X3Rlc3QoKToKLSAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9mbGFreV90ZXN0cyhmaXJzdF9mYWls
aW5nX3Jlc3VsdHMpCisgICAgICAgICAgICBzZWxmLl9yZXBvcnRfZmxha3lfdGVzdHMoZmlyc3Rf
cmVzdWx0cywgZmlyc3RfcmVzdWx0c19hcmNoaXZlKQogICAgICAgICAgICAgcmV0dXJuIFRydWUK
IAotICAgICAgICBzZWNvbmRfZmFpbGluZ19yZXN1bHRzID0gc2VsZi5fZmFpbGluZ19yZXN1bHRz
X2Zyb21fbGFzdF9ydW4oKQotICAgICAgICBzZWNvbmRfZmFpbGluZ190ZXN0cyA9IFtyZXN1bHQu
ZmlsZW5hbWUgZm9yIHJlc3VsdCBpbiBzZWNvbmRfZmFpbGluZ19yZXN1bHRzXQorICAgICAgICBz
ZWNvbmRfcmVzdWx0cyA9IHNlbGYuX2ZhaWxpbmdfcmVzdWx0c19mcm9tX2xhc3RfcnVuKCkKKyAg
ICAgICAgc2Vjb25kX2ZhaWxpbmdfdGVzdHMgPSBbcmVzdWx0LmZpbGVuYW1lIGZvciByZXN1bHQg
aW4gc2Vjb25kX3Jlc3VsdHNdCiAgICAgICAgIGlmIGZpcnN0X2ZhaWxpbmdfdGVzdHMgIT0gc2Vj
b25kX2ZhaWxpbmdfdGVzdHM6CiAgICAgICAgICAgICAjIFdlIGNvdWxkIHJlcG9ydCBmbGFreSB0
ZXN0cyBoZXJlLCBidXQgc2luY2UgcnVuLXdlYmtpdC10ZXN0cwogICAgICAgICAgICAgIyBpcyBy
dW4gd2l0aCAtLWV4aXQtYWZ0ZXItTi1mYWlsdXJlcz0xLCB3ZSB3b3VsZCBuZWVkIHRvCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0
YXNrX3VuaXR0ZXN0LnB5CmluZGV4IGYyNzljYWM1NGUxMzVhOTQ2NWI3ZDBiNTQ5ODIwMDJhZGYy
NjgxMmUuLjk0ZWNmMDdkNGI0MGY5NzU3YWRjODdkY2Q5ZDc2ZTE5ZWQ0NjU0ZTMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0
YXNrX3VuaXR0ZXN0LnB5CkBAIC02NCw5ICs2NCwxNSBAQCBjbGFzcyBNb2NrQ29tbWl0UXVldWUo
Q29tbWl0UXVldWVUYXNrRGVsZWdhdGUpOgogICAgIGRlZiBsYXlvdXRfdGVzdF9yZXN1bHRzKHNl
bGYpOgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhz
ZWxmLCBwYXRjaCwgZmxha3lfcmVzdWx0cyk6CisgICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhz
ZWxmLCBwYXRjaCwgZmxha3lfcmVzdWx0cywgcmVzdWx0c19hcmNoaXZlKToKICAgICAgICAgZmxh
a3lfdGVzdHMgPSBbcmVzdWx0LmZpbGVuYW1lIGZvciByZXN1bHQgaW4gZmxha3lfcmVzdWx0c10K
LSAgICAgICAgbG9nKCJyZXBvcnRfZmxha3lfdGVzdHM6IHBhdGNoPSclcycgZmxha3lfdGVzdHM9
JyVzJyIgJSAocGF0Y2guaWQoKSwgZmxha3lfdGVzdHMpKQorICAgICAgICBsb2coInJlcG9ydF9m
bGFreV90ZXN0czogcGF0Y2g9JyVzJyBmbGFreV90ZXN0cz0nJXMnIGFyY2hpdmU9JyVzJyIgJSAo
cGF0Y2guaWQoKSwgZmxha3lfdGVzdHMsIHJlc3VsdHNfYXJjaGl2ZS5maWxlbmFtZSkpCisKKyAg
ICBkZWYgYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZiwgcGF0Y2gpOgorICAg
ICAgICBsb2coImFyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzOiBwYXRjaD0nJXMnIiAl
IHBhdGNoLmlkKCkpCisgICAgICAgIGFyY2hpdmUgPSBNb2NrKCkKKyAgICAgICAgYXJjaGl2ZS5m
aWxlbmFtZSA9ICJtb2NrLWFyY2hpdmUtJXMuemlwIiAlIHBhdGNoLmlkKCkKKyAgICAgICAgcmV0
dXJuIGFyY2hpdmUKIAogCiBjbGFzcyBDb21taXRRdWV1ZVRhc2tUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKQEAgLTE5Myw5ICsxOTksMTAgQEAgcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZCcsICct
LW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9Ym90aCddCiBjb21tYW5k
X3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdCdWlsdCBwYXRjaCcgcGF0Y2g9JzE5NycKIHJ1bl93
ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0
ZScsICctLXRlc3QnLCAnLS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9mYWlsZWQ6IGZhaWx1
cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NL
IHRlc3RzIGZhaWx1cmUnIHBhdGNoPScxOTcnCithcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVz
dWx0czogcGF0Y2g9JzE5NycKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAn
LS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1ub24taW50ZXJhY3RpdmUn
XQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nUGFzc2VkIHRlc3RzJyBwYXRjaD0n
MTk3JwotcmVwb3J0X2ZsYWt5X3Rlc3RzOiBwYXRjaD0nMTk3JyBmbGFreV90ZXN0cz0nW10nCity
ZXBvcnRfZmxha3lfdGVzdHM6IHBhdGNoPScxOTcnIGZsYWt5X3Rlc3RzPSdbXScgYXJjaGl2ZT0n
bW9jay1hcmNoaXZlLTE5Ny56aXAnCiBydW5fd2Via2l0X3BhdGNoOiBbJ2xhbmQtYXR0YWNobWVu
dCcsICctLWZvcmNlLWNsZWFuJywgJy0taWdub3JlLWJ1aWxkZXJzJywgJy0tbm9uLWludGVyYWN0
aXZlJywgJy0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0LXF1ZXVlJywgMTk3XQogY29tbWFuZF9wYXNz
ZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nTGFuZGVkIHBhdGNoJyBwYXRjaD0nMTk3JwogIiIiCkBAIC0y
MjUsNiArMjMyLDcgQEAgcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZCcsICctLW5vLWNsZWFuJywg
Jy0tbm8tdXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9Ym90aCddCiBjb21tYW5kX3Bhc3NlZDogc3Vj
Y2Vzc19tZXNzYWdlPSdCdWlsdCBwYXRjaCcgcGF0Y2g9JzE5NycKIHJ1bl93ZWJraXRfcGF0Y2g6
IFsnYnVpbGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3Qn
LCAnLS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0n
UGF0Y2ggZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHRlc3QgZmFpbHVy
ZScgcGF0Y2g9JzE5NycKK2FyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzOiBwYXRjaD0n
MTk3JwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywg
Jy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2Zh
aWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRf
ZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlIGFnYWluJyBwYXRjaD0nMTk3JwogIiIiCkBAIC0yNjIs
NiArMjcwLDcgQEAgcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZCcsICctLW5vLWNsZWFuJywgJy0t
bm8tdXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9Ym90aCddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vz
c19tZXNzYWdlPSdCdWlsdCBwYXRjaCcgcGF0Y2g9JzE5NycKIHJ1bl93ZWJraXRfcGF0Y2g6IFsn
YnVpbGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAn
LS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0
Y2ggZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHRlc3QgZmFpbHVyZScg
cGF0Y2g9JzE5NycKK2FyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzOiBwYXRjaD0nMTk3
JwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0t
bm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxl
ZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJy
b3I9J01PQ0sgdGVzdCBmYWlsdXJlIGFnYWluJyBwYXRjaD0nMTk3JwogcnVuX3dlYmtpdF9wYXRj
aDogWydidWlsZC1hbmQtdGVzdCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0t
YnVpbGQnLCAnLS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KQEAgLTI4OSw2ICsyOTgsNyBA
QCBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUn
LCAnLS1idWlsZC1zdHlsZT1ib3RoJ10KIGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9
J0J1aWx0IHBhdGNoJyBwYXRjaD0nMTk3JwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQt
dGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRl
cmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5v
dCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlJyBwYXRjaD0nMTk3
JworYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxOTcnCiBydW5fd2Vi
a2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUn
LCAnLS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KIGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJl
X21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90IHBhc3MgdGVzdHMnIHNjcmlwdF9lcnJvcj0nTU9DSyB0
ZXN0IGZhaWx1cmUgYWdhaW4nIHBhdGNoPScxOTcnCiBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxk
LWFuZC10ZXN0JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZCcsICct
LXRlc3QnLCAnLS1ub24taW50ZXJhY3RpdmUnXQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXIucHkKaW5kZXggOTFmY2I4NTllMWVjYjQy
MmM3NTA2MWM4ZmQ1OGEyNWRkMmIxZjU1NC4uYjk0YjhhN2EwMzMwNWIwOWMxMGY3ZWE4Zjc0NmVk
MjU5ODAzYTA1OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9m
bGFreXRlc3RyZXBvcnRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2ZsYWt5dGVzdHJlcG9ydGVyLnB5CkBAIC0xMzEsMTMgKzEzMSwxMCBAQCBJZiB5b3Ugd291bGQg
bGlrZSB0byB0cmFjayB0aGlzIHRlc3QgZml4IHdpdGggYW5vdGhlciBidWcsIHBsZWFzZSBjbG9z
ZSB0aGlzIGJ1ZwogICAgICAgICBmbGFrZV9tZXNzYWdlID0gIlRoZSAlcyBqdXN0IHNhdyAlcyBm
bGFrZSAoJXMpIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNobWVudCAlcyBvbiBidWcgJXMuIiAlIChz
ZWxmLl9ib3RfbmFtZSwgZmxha3lfcmVzdWx0LmZpbGVuYW1lLCAiLCAiLmpvaW4oZmFpbHVyZV9t
ZXNzYWdlcyksIHBhdGNoLmlkKCksIHBhdGNoLmJ1Z19pZCgpKQogICAgICAgICByZXR1cm4gIiVz
XG4lcyIgJSAoZmxha2VfbWVzc2FnZSwgc2VsZi5fYm90X2luZm9ybWF0aW9uKCkpCiAKLSAgICBk
ZWYgX3Jlc3VsdHNfZGlmZl9wYXRoX2Zvcl90ZXN0KHNlbGYsIGZsYWt5X3Rlc3QpOgorICAgIGRl
ZiBfcmVzdWx0c19kaWZmX3BhdGhfZm9yX3Rlc3Qoc2VsZiwgdGVzdF9wYXRoKToKICAgICAgICAg
IyBGSVhNRTogVGhpcyBpcyBhIGJpZyBoYWNrLiAgV2Ugc2hvdWxkIGdldCB0aGlzIHBhdGggZnJv
bSByZXN1bHRzLmpzb24KICAgICAgICAgIyBleGNlcHQgdGhhdCBvbGQtcnVuLXdlYmtpdC10ZXN0
cyBkb2Vzbid0IHByb2R1Y2UgYSByZXN1bHRzLmpzb24KICAgICAgICAgIyBzbyB3ZSBqdXN0IGd1
ZXNzIGF0IHRoZSBmaWxlIHBhdGguCi0gICAgICAgIHJlc3VsdHNfcGF0aCA9IHNlbGYuX3Rvb2wu
cG9ydCgpLmxheW91dF90ZXN0c19yZXN1bHRzX3BhdGgoKQotICAgICAgICByZXN1bHRzX2RpcmVj
dG9yeSA9IG9zLnBhdGguZGlybmFtZShyZXN1bHRzX3BhdGgpCi0gICAgICAgIHRlc3RfcGF0aCA9
IG9zLnBhdGguam9pbihyZXN1bHRzX2RpcmVjdG9yeSwgZmxha3lfdGVzdCkKICAgICAgICAgKHRl
c3RfcGF0aF9yb290LCBfKSA9IG9zLnBhdGguc3BsaXRleHQodGVzdF9wYXRoKQogICAgICAgICBy
ZXR1cm4gIiVzLWRpZmZzLnR4dCIgJSB0ZXN0X3BhdGhfcm9vdAogCkBAIC0xNTMsNyArMTUwLDI0
IEBAIElmIHlvdSB3b3VsZCBsaWtlIHRvIHRyYWNrIHRoaXMgdGVzdCBmaXggd2l0aCBhbm90aGVy
IGJ1ZywgcGxlYXNlIGNsb3NlIHRoaXMgYnVnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBz
ZWxmLl90b29sLmJ1Z3MucG9zdF9jb21tZW50X3RvX2J1ZyhidWcuaWQoKSwgbGF0ZXN0X2ZsYWtl
X21lc3NhZ2UpCiAKLSAgICBkZWYgcmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYsIGZsYWt5X3Rlc3Rf
cmVzdWx0cywgcGF0Y2gpOgorICAgIGRlZiBfYXR0YWNoX2ZhaWx1cmVfZGlmZihzZWxmLCBmbGFr
ZV9idWdfaWQsIGZsYWt5X3Rlc3QsIHJlc3VsdHNfYXJjaGl2ZSk6CisgICAgICAgIHJlc3VsdHNf
ZGlmZl9wYXRoID0gc2VsZi5fcmVzdWx0c19kaWZmX3BhdGhfZm9yX3Rlc3QoZmxha3lfdGVzdCkK
KyAgICAgICAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcGF0aCBtYWtlcyBzZW5zZS4K
KyAgICAgICAgIyBTaW5jZSB3ZSdyZSBub3QgYWN0dWFsbHkgZ2V0dGluZyB0aGlzIHBhdGggZnJv
bSB0aGUgcmVzdWx0cy5odG1sCisgICAgICAgICMgdGhlcmUgaXMgYSBjaGFuY2UgaXQncyB3cm9u
Zy4KKyAgICAgICAgYm90X2lkID0gc2VsZi5fdG9vbC5zdGF0dXNfc2VydmVyLmJvdF9pZCBvciAi
Ym90IgorICAgICAgICBpZiByZXN1bHRzX2RpZmZfcGF0aCBpbiByZXN1bHRzX2FyY2hpdmUubmFt
ZWxpc3QoKToKKyAgICAgICAgICAgIHJlc3VsdHNfZGlmZiA9IHJlc3VsdHNfYXJjaGl2ZS5yZWFk
X2JpbmFyeV9maWxlKHJlc3VsdHNfZGlmZl9wYXRoKQorICAgICAgICAgICAgZGVzY3JpcHRpb24g
PSAiRmFpbHVyZSBkaWZmIGZyb20gJXMiICUgYm90X2lkCisgICAgICAgICAgICBzZWxmLl90b29s
LmJ1Z3MuYWRkX2F0dGFjaG1lbnRfdG9fYnVnKGZsYWtlX2J1Z19pZCwgcmVzdWx0c19kaWZmLCBk
ZXNjcmlwdGlvbiwgZmlsZW5hbWU9ImZhaWx1cmUuZGlmZiIpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBfbG9nLndhcm4oIiVzIGRvZXMgbm90IGV4aXN0IGluIHJlc3VsdHMgYXJjaGl2ZSwg
dXBsb2FkaW5nIGVudGlyZSBhcmNoaXZlLiIgJSByZXN1bHRzX2RpZmZfcGF0aCkKKyAgICAgICAg
ICAgICMgcmVzdWx0c19hcmNoaXZlIGlzIGEgWmlwRmlsZSBvYmplY3QsIHdlIG5lZWQgYSBGaWxl
IG9iamVjdCBpbnN0ZWFkIGZvciB1cGxvYWRpbmcuCisgICAgICAgICAgICByZXN1bHRzX2RpZmYg
PSByZXN1bHRzX2FyY2hpdmUucmVhZF9iaW5hcnlfZmlsZShyZXN1bHRzX2FyY2hpdmUuZmlsZW5h
bWUpCisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICJBcmNoaXZlIG9mIGxheW91dC10ZXN0LXJl
c3VsdHMgZnJvbSAlcyIgJSBib3RfaWQKKyAgICAgICAgICAgIHNlbGYuX3Rvb2wuYnVncy5hZGRf
YXR0YWNobWVudF90b19idWcoZmxha2VfYnVnX2lkLCByZXN1bHRzX2RpZmYsIGRlc2NyaXB0aW9u
LCBmaWxlbmFtZT0ibGF5b3V0LXRlc3QtcmVzdWx0cy56aXAiKQorCisgICAgZGVmIHJlcG9ydF9m
bGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfdGVzdF9yZXN1bHRzLCByZXN1bHRzX2FyY2hp
dmUpOgogICAgICAgICBtZXNzYWdlID0gIlRoZSAlcyBlbmNvdW50ZXJlZCB0aGUgZm9sbG93aW5n
IGZsYWt5IHRlc3RzIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNobWVudCAlczpcblxuIiAlIChzZWxm
Ll9ib3RfbmFtZSwgcGF0Y2guaWQoKSkKICAgICAgICAgZm9yIGZsYWt5X3Jlc3VsdCBpbiBmbGFr
eV90ZXN0X3Jlc3VsdHM6CiAgICAgICAgICAgICBmbGFreV90ZXN0ID0gZmxha3lfcmVzdWx0LmZp
bGVuYW1lCkBAIC0xNjUsMjAgKzE3OSwxMiBAQCBJZiB5b3Ugd291bGQgbGlrZSB0byB0cmFjayB0
aGlzIHRlc3QgZml4IHdpdGggYW5vdGhlciBidWcsIHBsZWFzZSBjbG9zZSB0aGlzIGJ1ZwogICAg
ICAgICAgICAgICAgIGZsYWtlX2J1Z19pZCA9IHNlbGYuX2NyZWF0ZV9idWdfZm9yX2ZsYWt5X3Rl
c3QoZmxha3lfdGVzdCwgYXV0aG9yX2VtYWlscywgbGF0ZXN0X2ZsYWtlX21lc3NhZ2UpCiAgICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJ1ZyA9IHNlbGYuX2ZvbGxvd19kdXBsaWNh
dGVfY2hhaW4oYnVnKQorICAgICAgICAgICAgICAgICMgRklYTUU6IElkZWFsbHkgd2UnZCBvbmx5
IG1ha2Ugb25lIGNvbW1lbnQgcGVyIGZsYWtlLCBub3QgdHdvLiAgQnV0IHRoYXQncyBub3QgcG9z
c2libGUKKyAgICAgICAgICAgICAgICAjIGluIGFsbCBjYXNlcyAoZS5nLiB3aGVuIHJlb3Blbmlu
ZyksIHNvIGZvciBub3cgZmlsZSBhdHRhY2htZW50IGFuZCBjb21tZW50IGFyZSBzZXBhcmF0ZS4K
ICAgICAgICAgICAgICAgICBzZWxmLl91cGRhdGVfYnVnX2Zvcl9mbGFreV90ZXN0KGJ1ZywgbGF0
ZXN0X2ZsYWtlX21lc3NhZ2UpCiAgICAgICAgICAgICAgICAgZmxha2VfYnVnX2lkID0gYnVnLmlk
KCkKLSAgICAgICAgICAgICMgRklYTUU6IElkZWFsbHkgd2UnZCBvbmx5IG1ha2Ugb25lIGNvbW1l
bnQgcGVyIGZsYWtlLCBub3QgdHdvLiAgQnV0IHRoYXQncyBub3QgcG9zc2libGUKLSAgICAgICAg
ICAgICMgaW4gYWxsIGNhc2VzIChlLmcuIHdoZW4gcmVvcGVuaW5nKSwgc28gZm9yIG5vdyB3ZSBk
byB0aGUgYXR0YWNobWVudCBpbiBhIHNlY29uZCBzdGVwLgotICAgICAgICAgICAgcmVzdWx0c19k
aWZmX3BhdGggPSBzZWxmLl9yZXN1bHRzX2RpZmZfcGF0aF9mb3JfdGVzdChmbGFreV90ZXN0KQot
ICAgICAgICAgICAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcGF0aCBtYWtlcyBzZW5z
ZS4KLSAgICAgICAgICAgICMgU2luY2Ugd2UncmUgbm90IGFjdHVhbGx5IGdldHRpbmcgdGhpcyBw
YXRoIGZyb20gdGhlIHJlc3VsdHMuaHRtbAotICAgICAgICAgICAgIyB0aGVyZSBpcyBhIGhpZ2gg
cHJvYmFpbGl0eSBpdCdzIHRvdGFsbHkgd3JvbmcuCi0gICAgICAgICAgICBpZiBzZWxmLl90b29s
LmZpbGVzeXN0ZW0uZXhpc3RzKHJlc3VsdHNfZGlmZl9wYXRoKToKLSAgICAgICAgICAgICAgICBy
ZXN1bHRzX2RpZmYgPSBzZWxmLl90b29sLmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShyZXN1
bHRzX2RpZmZfcGF0aCkKLSAgICAgICAgICAgICAgICBib3RfaWQgPSBzZWxmLl90b29sLnN0YXR1
c19zZXJ2ZXIuYm90X2lkIG9yICJib3QiCi0gICAgICAgICAgICAgICAgc2VsZi5fdG9vbC5idWdz
LmFkZF9hdHRhY2htZW50X3RvX2J1ZyhmbGFrZV9idWdfaWQsIHJlc3VsdHNfZGlmZiwgIkZhaWx1
cmUgZGlmZiBmcm9tICVzIiAlIGJvdF9pZCwgZmlsZW5hbWU9ImZhaWx1cmUuZGlmZiIpCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoIiVzIGRvZXMgbm90IGV4
aXN0IGFzIGV4cGVjdGVkLCBub3QgdXBsb2FkaW5nLiIgJSByZXN1bHRzX2RpZmZfcGF0aCkKKwor
ICAgICAgICAgICAgc2VsZi5fYXR0YWNoX2ZhaWx1cmVfZGlmZihmbGFrZV9idWdfaWQsIGZsYWt5
X3Rlc3QsIHJlc3VsdHNfYXJjaGl2ZSkKICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiVzIGJ1ZyAl
cyVzXG4iICUgKGZsYWt5X3Rlc3QsIGZsYWtlX2J1Z19pZCwgc2VsZi5fb3B0aW9uYWxfYXV0aG9y
X3N0cmluZyhhdXRob3JfZW1haWxzKSkKIAogICAgICAgICBtZXNzYWdlICs9ICJUaGUgJXMgaXMg
Y29udGludWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guIiAlIHNlbGYuX2JvdF9uYW1lCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVy
X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3Ry
ZXBvcnRlcl91bml0dGVzdC5weQppbmRleCA2MzFmOGQxZTM0OTljNmQzMDQ5MTdmNDA5OWQzZjYy
N2VhZTYzZTRmLi42MjEwZWE4Y2E1NjJjNDYyOTEwMTA0OGE1NjkyMDg1OWYxODVlMjM2IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVy
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0
ZXN0cmVwb3J0ZXJfdW5pdHRlc3QucHkKQEAgLTMzLDYgKzMzLDcgQEAgZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJl
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9y
ZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQg
dGVzdF9mYWlsdXJlcworZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sK
IGZyb20gd2Via2l0cHkudG9vbC5ib3QuZmxha3l0ZXN0cmVwb3J0ZXIgaW1wb3J0IEZsYWt5VGVz
dFJlcG9ydGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sLCBN
b2NrU3RhdHVzU2VydmVyCiAKQEAgLTE0MCw3ICsxNDEsOSBAQCBUaGUgZHVtbXktcXVldWUgaXMg
Y29udGludWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guCiAKICIiIgogICAgICAgICB0ZXN0X3Jl
c3VsdHMgPSBbc2VsZi5fbW9ja190ZXN0X3Jlc3VsdCgnZm9vL2Jhci5odG1sJyldCi0gICAgICAg
IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCByZXBvcnRlci5yZXBvcnRfZmxh
a3lfdGVzdHMsIFt0ZXN0X3Jlc3VsdHMsIHBhdGNoXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVk
X3N0ZGVycikKKyAgICAgICAgbW9ja19hcmNoaXZlID0gTW9jaygpCisgICAgICAgIG1vY2tfYXJj
aGl2ZS5uYW1lbGlzdCA9IGxhbWJkYTogWydmb28vYmFyLWRpZmZzLnR4dCddCisgICAgICAgIE91
dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCByZXBvcnRlci5yZXBvcnRfZmxha3lf
dGVzdHMsIFtwYXRjaCwgdGVzdF9yZXN1bHRzLCBtb2NrX2FyY2hpdmVdLCBleHBlY3RlZF9zdGRl
cnI9ZXhwZWN0ZWRfc3RkZXJyKQogCiAgICAgZGVmIHRlc3Rfb3B0aW9uYWxfYXV0aG9yX3N0cmlu
ZyhzZWxmKToKICAgICAgICAgcmVwb3J0ZXIgPSBGbGFreVRlc3RSZXBvcnRlcihNb2NrVG9vbCgp
LCAnZHVtbXktcXVldWUnKQpAQCAtMTUwLDYgKzE1Myw2IEBAIFRoZSBkdW1teS1xdWV1ZSBpcyBj
b250aW51aW5nIHRvIHByb2Nlc3MgeW91ciBwYXRjaC4KIAogICAgIGRlZiB0ZXN0X3Jlc3VsdHNf
ZGlmZl9wYXRoX2Zvcl90ZXN0KHNlbGYpOgogICAgICAgICByZXBvcnRlciA9IEZsYWt5VGVzdFJl
cG9ydGVyKE1vY2tUb29sKCksICdkdW1teS1xdWV1ZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVwb3J0ZXIuX3Jlc3VsdHNfZGlmZl9wYXRoX2Zvcl90ZXN0KCJ0ZXN0Lmh0bWwiKSwgIi9t
b2NrL3Rlc3QtZGlmZnMudHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRlci5f
cmVzdWx0c19kaWZmX3BhdGhfZm9yX3Rlc3QoInRlc3QuaHRtbCIpLCAidGVzdC1kaWZmcy50eHQi
KQogCiAgICAgIyByZXBvcnRfZmxha3lfdGVzdHMgaXMgYWxzbyB0ZXN0ZWQgYnkgcXVldWVzX3Vu
aXR0ZXN0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5w
eQppbmRleCA1NjI4NTQzMzIxOTZiNDlhMmJlZTYyZjNjNWNjMGI2ZmI5Y2M0Y2Y1Li4xYWY0M2Qw
OGNmNDljNDQxMDU5ZDY5ZjdjZTkxZjI5NTcxMTZjZTNkIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKQEAgLTMwOSwxMiArMzA5LDQ3IEBAIGNs
YXNzIENvbW1pdFF1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5k
bGVyLCBDb21taXRRdWV1ZVRhc2tECiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBy
ZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyhyZXN1bHRzX2h0bWwp
CiAKKyAgICBkZWYgX3Jlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICByZXN1bHRzX3Bh
dGggPSBzZWxmLl90b29sLnBvcnQoKS5sYXlvdXRfdGVzdHNfcmVzdWx0c19wYXRoKCkKKyAgICAg
ICAgIyBGSVhNRTogVGhpcyBpcyB3cm9uZyBpbiB0d28gd2F5czoKKyAgICAgICAgIyAxLiBJdCBh
c3N1bWVzIHRoYXQgcmVzdWx0cy5odG1sIGlzIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHJlc3Vs
dHMgdHJlZS4KKyAgICAgICAgIyAyLiBUaGlzIHVzZXMgdGhlICJvbGQiIHBvcnRzLnB5IGluZnJh
c3RydWN0dXJlIGluc3RlYWQgb2YgdGhlIG5ldyBsYXlvdXRfdGVzdHMvcG9ydAorICAgICAgICAj
IHdoaWNoIHdpbGwgbm90IHN1cHBvcnQgQ2hyb21pdW0uICBIb3dldmVyIHRoZSBuZXcgYXJjaCBk
b2Vzbid0IHdvcmsgd2l0aCBvbGQtcnVuLXdlYmtpdC10ZXN0cworICAgICAgICAjIHNvIHdlIGhh
dmUgdG8gdXNlIHRoaXMgZm9yIG5vdy4KKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShy
ZXN1bHRzX3BhdGgpCisKKyAgICAjIEZJWE1FOiBUaGlzIGRvZXMgbm90IHJlYWxseSBiZWxvbmcg
b24gZmlsZXN5c3RlbSwgYmVjYXVzZSBpdCB1c2VzIGZpbGVzeXN0ZW0KKyAgICAjIGhvd2V2ZXIg
aXQgZG9lc24ndCByZWFsbHkgYmVsb25nIGhlcmUgZWl0aGVyLiAgV2UgbmVlZCBhIG5ldyBhYnN0
YWN0aW9uLgorICAgIGRlZiBfZmluZF91bnVzZWRfZmlsZW5hbWUoc2VsZiwgZGlyZWN0b3J5LCBu
YW1lLCBleHRlbnNpb24sIHNlYXJjaF9saW1pdD0xMCk6CisgICAgICAgIGZpbGVzeXN0ZW0gPSBz
ZWxmLl90b29sLmZpbGVzeXN0ZW0KKyAgICAgICAgZm9yIGNvdW50IGluIHJhbmdlKHNlYXJjaF9s
aW1pdCk6CisgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICB0YXJnZXRfbmFt
ZSA9ICIlcy0lcy4lcyIgJSAobmFtZSwgY291bnQsIGV4dGVuc2lvbikKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgdGFyZ2V0X25hbWUgPSAiJXMuJXMiICUgKG5hbWUsIGV4dGVu
c2lvbikKKyAgICAgICAgICAgIHRhcmdldF9wYXRoID0gZmlsZXN5c3RlbS5qb2luKGRpcmVjdG9y
eSwgdGFyZ2V0X25hbWUpCisgICAgICAgICAgICBpZiBub3QgZmlsZXN5c3RlbS5leGlzdHModGFy
Z2V0X3BhdGgpOgorICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRfcGF0aAorICAgICAgICAj
IElmIHdlIGNhbid0IGZpbmQgYW4gdW51c2VkIG5hbWUgaW4gc2VhcmNoX2xpbWl0IHRyaWVzLCBq
dXN0IGdpdmUgdXAuCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgYXJjaGl2ZV9sYXN0
X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZiwgcGF0Y2gpOgorICAgICAgICByZXN1bHRzX2RpcmVj
dG9yeSA9IHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5KCkKKyAgICAgICAgcmVzdWx0c19uYW1lLCBf
ID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHJlc3VsdHNfZGlyZWN0b3J5KSkK
KyAgICAgICAgIyBOb3RlOiBXZSBuYW1lIHRoZSB6aXAgd2l0aCB0aGUgYnVnX2lkIGluc3RlYWQg
b2YgcGF0Y2hfaWQgdG8gbWF0Y2ggd29ya19pdGVtX2xvZ19wYXRoKCkuCisgICAgICAgIHppcF9w
YXRoID0gc2VsZi5fZmluZF91bnVzZWRfbmFtZShzZWxmLl9sb2dfZGlyZWN0b3J5KCksICIlcy0l
cyIgJSAocGF0Y2guYnVnX2lkKCksIHJlc3VsdHNfbmFtZSksICJ6aXAiKQorICAgICAgICAjIEl0
J3MgcG9zc2libGUgdG8gY3JlYXRlIHppcHMgd2l0aCBQeXRob24sIGJ1dCBkb2luZyBzbyBjb3Jy
ZWN0bHkgbWF5IGJlIG5vbi10cml2aWFsLgorICAgICAgICAjIEZvciBub3cgd2UgZGVwZW5kIG9u
IHRoZSBlbnZpcm9ubWVudCBoYXZpbmcgInppcCIgaW5zdGFsbGVkLgorICAgICAgICB6aXBfY29t
bWFuZCA9IFsnemlwJywgemlwX3BhdGgsIHJlc3VsdHNfZGlyZWN0b3J5XQorICAgICAgICBzZWxm
Ll90b29sLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZCh6aXBfY29tbWFuZCkKKyAgICAgICAgcmV0dXJu
IHppcF9wYXRoCisKICAgICBkZWYgcmVmZXRjaF9wYXRjaChzZWxmLCBwYXRjaCk6CiAgICAgICAg
IHJldHVybiBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudChwYXRjaC5pZCgpKQogCi0g
ICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfdGVzdF9yZXN1bHRz
KToKKyAgICBkZWYgcmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYsIHBhdGNoLCBmbGFreV90ZXN0X3Jl
c3VsdHMsIHJlc3VsdHNfYXJjaGl2ZT1Ob25lKToKICAgICAgICAgcmVwb3J0ZXIgPSBGbGFreVRl
c3RSZXBvcnRlcihzZWxmLl90b29sLCBzZWxmLm5hbWUpCi0gICAgICAgIHJlcG9ydGVyLnJlcG9y
dF9mbGFreV90ZXN0cyhmbGFreV90ZXN0X3Jlc3VsdHMsIHBhdGNoKQorICAgICAgICByZXBvcnRl
ci5yZXBvcnRfZmxha3lfdGVzdHMocGF0Y2gsIGZsYWt5X3Rlc3RfcmVzdWx0cywgcmVzdWx0c19h
cmNoaXZlKQogCiAgICAgIyBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIgbWV0aG9kcwogCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0
dGVzdC5weQppbmRleCAzNGE2YTY0ZDgzODA4ZGQyZWM5MDVhYTQ2NWRjMjA5YmFlYjllODAyLi40
MzRlNTQ2ODg3NmY4NGU4MzEzYzlhNTI2NzE0ZjgzMTI2N2VhZDZjIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkK
QEAgLTMwLDYgKzMwLDcgQEAgaW1wb3J0IG9zCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNr
b3V0LnNjbSBpbXBvcnQgQ2hlY2tvdXROZWVkc1VwZGF0ZQogZnJvbSB3ZWJraXRweS5jb21tb24u
bmV0LmJ1Z3ppbGxhIGltcG9ydCBBdHRhY2htZW50Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3VsdHMKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1
cmVzCkBAIC0zNDIsMTIgKzM0MywxNCBAQCBUaGUgY29tbWl0LXF1ZXVlIGp1c3Qgc2F3IGZvby9i
YXIuaHRtbCBmbGFrZSAoVGV4dCBkaWZmIG1pc21hdGNoKSB3aGlsZSBwcm9jZXNzaQogUG9ydDog
TW9ja1BvcnQgIFBsYXRmb3JtOiBNb2NrUGxhdGZvcm0gMS4wCiAtLS0gRW5kIGNvbW1lbnQgLS0t
CiAKK01PQ0sgYWRkX2F0dGFjaG1lbnRfdG9fYnVnOiBidWdfaWQ9NzYsIGRlc2NyaXB0aW9uPUZh
aWx1cmUgZGlmZiBmcm9tIGJvdCBmaWxlbmFtZT1mYWlsdXJlLmRpZmYKIE1PQ0sgYnVnIGNvbW1l
bnQ6IGJ1Z19pZD03NiwgY2M9Tm9uZQogLS0tIEJlZ2luIGNvbW1lbnQgLS0tCiBUaGUgY29tbWl0
LXF1ZXVlIGp1c3Qgc2F3IGJhci9iYXouaHRtbCBmbGFrZSAoVGV4dCBkaWZmIG1pc21hdGNoKSB3
aGlsZSBwcm9jZXNzaW5nIGF0dGFjaG1lbnQgMTk3IG9uIGJ1ZyA0Mi4KIFBvcnQ6IE1vY2tQb3J0
ICBQbGF0Zm9ybTogTW9ja1BsYXRmb3JtIDEuMAogLS0tIEVuZCBjb21tZW50IC0tLQogCitNT0NL
IGFkZF9hdHRhY2htZW50X3RvX2J1ZzogYnVnX2lkPTc2LCBkZXNjcmlwdGlvbj1BcmNoaXZlIG9m
IGxheW91dC10ZXN0LXJlc3VsdHMgZnJvbSBib3QgZmlsZW5hbWU9bGF5b3V0LXRlc3QtcmVzdWx0
cy56aXAKIE1PQ0sgYnVnIGNvbW1lbnQ6IGJ1Z19pZD00MiwgY2M9Tm9uZQogLS0tIEJlZ2luIGNv
bW1lbnQgLS0tCiBUaGUgY29tbWl0LXF1ZXVlIGVuY291bnRlcmVkIHRoZSBmb2xsb3dpbmcgZmxh
a3kgdGVzdHMgd2hpbGUgcHJvY2Vzc2luZyBhdHRhY2htZW50IDE5NzoKQEAgLTM2MCw3ICszNjMs
MTAgQEAgVGhlIGNvbW1pdC1xdWV1ZSBpcyBjb250aW51aW5nIHRvIHByb2Nlc3MgeW91ciBwYXRj
aC4KICIiIgogICAgICAgICB0ZXN0X25hbWVzID0gWyJmb28vYmFyLmh0bWwiLCAiYmFyL2Jhei5o
dG1sIl0KICAgICAgICAgdGVzdF9yZXN1bHRzID0gW3NlbGYuX21vY2tfdGVzdF9yZXN1bHQobmFt
ZSkgZm9yIG5hbWUgaW4gdGVzdF9uYW1lc10KLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2Vy
dF9vdXRwdXRzKHNlbGYsIHF1ZXVlLnJlcG9ydF9mbGFreV90ZXN0cywgW1F1ZXVlc1Rlc3QubW9j
a193b3JrX2l0ZW0sIHRlc3RfcmVzdWx0c10sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRl
cnIpCisgICAgICAgIG1vY2tfYXJjaGl2ZSA9IE1vY2soKQorICAgICAgICAjIFRoZSBtb2NrX2Fy
Y2hpdmUgaXMgaW50ZW50aW9uYWxseSBtaXNzaW5nIG9uZSBkaWZmcy50eHQgdG8gZXhlcmNpc2Ug
dGhlICJ1cGxvYWQgdGhlIHdob2xlIHppcCIgY29kZXBhdGguCisgICAgICAgIG1vY2tfYXJjaGl2
ZS5uYW1lbGlzdCA9IGxhbWJkYTogWydmb28vYmFyLWRpZmZzLnR4dCddCisgICAgICAgIE91dHB1
dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBxdWV1ZS5yZXBvcnRfZmxha3lfdGVzdHMs
IFtRdWV1ZXNUZXN0Lm1vY2tfd29ya19pdGVtLCB0ZXN0X3Jlc3VsdHMsIG1vY2tfYXJjaGl2ZV0s
IGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKICAgICBkZWYgdGVzdF9sYXlvdXRf
dGVzdF9yZXN1bHRzKHNlbGYpOgogICAgICAgICBxdWV1ZSA9IENvbW1pdFF1ZXVlKCkKQEAgLTM3
MCw2ICszNzYsMTcgQEAgVGhlIGNvbW1pdC1xdWV1ZSBpcyBjb250aW51aW5nIHRvIHByb2Nlc3Mg
eW91ciBwYXRjaC4KICAgICAgICAgcXVldWUuX3JlYWRfZmlsZV9jb250ZW50cyA9IGxhbWJkYSBw
YXRoOiAiIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhxdWV1ZS5sYXlvdXRfdGVzdF9yZXN1
bHRzKCksIE5vbmUpCiAKKyAgICBkZWYgdGVzdF9maW5kX3VudXNlZF9maWxlbmFtZShzZWxmKToK
KyAgICAgICAgcXVldWUgPSBDb21taXRRdWV1ZSgpCisgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgp
CisgICAgICAgIHF1ZXVlLmJpbmRfdG9fdG9vbCh0b29sKQorICAgICAgICB0b29sLmZpbGVzeXN0
ZW0gPSBNb2NrRmlsZVN5c3RlbSh7CisgICAgICAgICAgICAiZGlyL2Zvby5qcGciOiAiIiwKKyAg
ICAgICAgICAgICJkaXIvZm9vLTEuanBnIjogIiIsCisgICAgICAgIH0pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocXVldWUuX2ZpbmRfdW51c2VkX2ZpbGVuYW1lKCJiYXIiLCAiYmFyIiwgImJh
ciIpLCAiYmFyL2Jhci5iYXIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHF1ZXVlLl9maW5k
X3VudXNlZF9maWxlbmFtZSgiZGlyIiwgImZvbyIsICJqcGciKSwgImRpci9mb28tMi5qcGciKQor
CiAKIGNsYXNzIFN0eWxlUXVldWVUZXN0KFF1ZXVlc1Rlc3QpOgogICAgIGRlZiB0ZXN0X3N0eWxl
X3F1ZXVlKHNlbGYpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78388</attachid>
            <date>2011-01-10 02:57:39 -0800</date>
            <delta_ts>2011-01-11 01:23:14 -0800</delta_ts>
            <desc>Now with workspace.py and much better testing</desc>
            <filename>bug-52048-20110110025738.patch</filename>
            <type>text/plain</type>
            <size>30606</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZDg3
OTE3N2JhZDUxYzM4MzMwYzYxMWIyZGY0OWU3N2VmMGMyNTZmLi41M2ZhOWQwYzU4MGU2OThjYTFl
ZmYzZDQ3ZTFjYWNjN2RiZDA5NjcyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDEtMTAgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisK
KyAgICAgICAgY29tbWl0LXF1ZXVlIHNob3VsZCBrbm93IGhvdyB0byB1cGxvYWQgYXJjaGl2ZWQg
cmVzdWx0cyAoZm9yIHRlc3QgZmxha2VzIG9yIGdlbmVyYWwgZmFpbHVyZXMpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjA0OAorCisgICAgICAgIE5v
dyB0aGUgcXVldWUgd2lsbCBhbHdheXMgdXBsb2FkIHJlc3VsdHMuICBFaXRoZXIgdGhlIGVudGly
ZSB6aXAsIG9yIGp1c3QKKyAgICAgICAgdGhlIGRpZmZzLnR4dCBpbiB0aGUgY2FzZSBvZiB0ZXh0
IGZhaWx1cmVzLgorCisgICAgICAgIFRoaXMgc2hvdWxkIG1ha2UgdW5kZXJzdGFuZGluZyBmbGFr
ZXMgbXVjaCBlYXNpZXIsIGFuZCBwYXZlcyB0aGUgd2F5CisgICAgICAgIGZvciBoYXZpbmcgdGhl
IEVXUyBydW4gbGF5b3V0IHRlc3RzIChhbmQgdXBsb2FkIGZhaWx1cmVzKS4KKworICAgICAgICBJ
biBvcmRlciB0byB1cGxvYWQgLnppcCBmaWxlcyBJIGhhZCB0byB0ZWFjaCBidWd6aWxsYS5weSB0
byBhdXRvZGV0ZWN0CisgICAgICAgIG1pbWUgdHlwZXMgZnJvbSB0aGUgZmlsZW5hbWUuICBTaW5j
ZSBtaW1ldHlwZXMucHkgZG9lc24ndCBpbmNsdWRlIGEgbWFwcGluZworICAgICAgICBmb3IgLnBh
dGNoIGZpbGVzLCBJIGhhdmUgaXQgYWRkIG9uZSBiZWZvcmUgY2FsbGluZyBndWVzc190eXBlLgor
CisgICAgICAgIFdlIG1heSBmaW5kIHRoYXQgYWx3YXlzIHVwbG9hZGluZyB0aGUgd2hvbGUgemlw
IGluc3RlYWQgb2YganVzdCB0aGUgLWRpZmZzLnR4dAorICAgICAgICBmaWxlIGlzIHByZWZlcmFi
bGUsIGJ1dCBmb3Igbm93IEknbSBrZWVwaW5nIHRoZSBvbGQgYmVoYXZpb3IgYmVjYXVzZSBpdCBt
YWtlcworICAgICAgICBxdWlja2x5IHVuZGVyc3RhbmRpbmcgdGV4dCBmYWlsdXJlcyBlYXN5Lgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxh
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2Uu
cHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jr
c3BhY2VfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvY29tbWl0cXVldWV0YXNrLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRlcl91bml0dGVzdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHk6CisKIDIwMTEt
MDEtMDggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5w
eQppbmRleCBkNjIxMGQ1MmZhZDY2ZjYwNGY0NTgyZjg3ODZjNDBkZjhkMTk1MTMwLi4xN2E4NTE1
ZDI4YTVmY2RlNTU4ODQ3ZmI0NTNhMmFlZjYzNjkwZTEzIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CkBAIC0zMCw2
ICszMCw3IEBACiAjCiAjIFdlYktpdCdzIFB5dGhvbiBtb2R1bGUgZm9yIGludGVyYWN0aW5nIHdp
dGggQnVnemlsbGEKIAoraW1wb3J0IG1pbWV0eXBlcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBy
ZQogaW1wb3J0IFN0cmluZ0lPCkBAIC00NDEsNyArNDQyLDExIEBAIGNsYXNzIEJ1Z3ppbGxhKG9i
amVjdCk6CiAgICAgICAgIHNlbGYuYnJvd3NlclsnZmxhZ190eXBlLTMnXSA9IChzZWxmLl9jb21t
aXRfcXVldWVfZmxhZyhtYXJrX2Zvcl9sYW5kaW5nLCBtYXJrX2Zvcl9jb21taXRfcXVldWUpLCkK
IAogICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lIG9yICIlcy5wYXRjaCIgJSB0aW1lc3RhbXAo
KQotICAgICAgICBtaW1ldHlwZSA9IG1pbWV0eXBlIG9yICJ0ZXh0L3BsYWluIgorICAgICAgICBp
ZiBub3QgbWltZXR5cGU6CisgICAgICAgICAgICBtaW1ldHlwZXMuYWRkX3R5cGUoJ3RleHQvcGxh
aW4nLCAnLnBhdGNoJykgICMgTWFrZSBzdXJlIG1pbWV0eXBlcyBrbm93cyBhYm91dCAucGF0Y2gK
KyAgICAgICAgICAgIG1pbWV0eXBlLCBfID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUoZmlsZW5hbWUp
CisgICAgICAgIGlmIG5vdCBtaW1ldHlwZToKKyAgICAgICAgICAgIG1pbWV0eXBlID0gInRleHQv
cGxhaW4iICAjIEJ1Z3ppbGxhIG1pZ2h0IGF1dG8tZ3Vlc3MgZm9yIHVzIGFuZCB3ZSBtaWdodCBu
b3QgbmVlZCB0aGlzPwogICAgICAgICBzZWxmLmJyb3dzZXIuYWRkX2ZpbGUoZmlsZV9vYmplY3Qs
IG1pbWV0eXBlLCBmaWxlbmFtZSwgJ2RhdGEnKQogCiAgICAgZGVmIF9maWxlX29iamVjdF9mb3Jf
dXBsb2FkKHNlbGYsIGZpbGVfb3Jfc3RyaW5nKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmNDc1NDM5ODdmOWQ3
N2VlYzJmMTBjYmY2MzQ3YWE1N2NiZjc4OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlLnB5CkBAIC0wLDAgKzEsNjAgQEAK
KyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjIEEgaG9tZSBmb3IgZmlsZSBsb2dpYyB3aGljaCBzaG91bGQg
c2l0IGFib3ZlIEZpbGVTeXN0ZW0sIGJ1dAorIyBiZWxvdyBtb3JlIGNvbXBsaWNhdGVkIG9iamVj
dHMuCisKKworY2xhc3MgV29ya3NwYWNlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZpbGVzeXN0ZW0sIGV4ZWN1dGl2ZSk6CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBmaWxl
c3lzdGVtCisgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZSAgIyBGSVhNRTogUmVt
b3ZlIGlmIGNyZWF0ZV96aXAgaXMgbW92ZWQgdG8gcHl0aG9uLgorCisgICAgZGVmIGZpbmRfdW51
c2VkX2ZpbGVuYW1lKHNlbGYsIGRpcmVjdG9yeSwgbmFtZSwgZXh0ZW5zaW9uLCBzZWFyY2hfbGlt
aXQ9MTApOgorICAgICAgICBmb3IgY291bnQgaW4gcmFuZ2Uoc2VhcmNoX2xpbWl0KToKKyAgICAg
ICAgICAgIGlmIGNvdW50OgorICAgICAgICAgICAgICAgIHRhcmdldF9uYW1lID0gIiVzLSVzLiVz
IiAlIChuYW1lLCBjb3VudCwgZXh0ZW5zaW9uKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICB0YXJnZXRfbmFtZSA9ICIlcy4lcyIgJSAobmFtZSwgZXh0ZW5zaW9uKQorICAgICAg
ICAgICAgdGFyZ2V0X3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oZGlyZWN0b3J5LCB0YXJn
ZXRfbmFtZSkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyh0YXJn
ZXRfcGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldF9wYXRoCisgICAgICAgICMg
SWYgd2UgY2FuJ3QgZmluZCBhbiB1bnVzZWQgbmFtZSBpbiBzZWFyY2hfbGltaXQgdHJpZXMsIGp1
c3QgZ2l2ZSB1cC4KKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBjcmVhdGVfemlwKHNl
bGYsIHppcF9wYXRoLCBzb3VyY2VfcGF0aCk6CisgICAgICAgICMgSXQncyBwb3NzaWJsZSB0byBj
cmVhdGUgemlwcyB3aXRoIFB5dGhvbjoKKyAgICAgICAgIyB6aXBfZmlsZSA9IFppcEZpbGUoemlw
X3BhdGgsICd3JykKKyAgICAgICAgIyBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhz
b3VyY2VfcGF0aCk6CisgICAgICAgICMgICAgIGZvciBwYXRoIGluIGZpbGVzOgorICAgICAgICAj
ICAgICAgICAgYWJzb2x1dGVfcGF0aCA9IG9zLnBhdGguam9pbihyb290LCBwYXRoKQorICAgICAg
ICAjICAgICAgICAgemlwX2ZpbGUud3JpdGUob3MucGF0aC5yZWxwYXRoKHBhdGgsIHNvdXJjZV9w
YXRoKSkKKyAgICAgICAgIyBIb3dldmVyLCBnZXR0aW5nIHRoZSBwYXRocywgZW5jb2RpbmcgYW5k
IGNvbXByZXNzaW9uIGNvcnJlY3QgY291bGQgYmUgbm9uLXRyaXZpYWwuCisgICAgICAgICMgU28s
IGZvciBub3cgd2UgZGVwZW5kIG9uIHRoZSBlbnZpcm9ubWVudCBoYXZpbmcgInppcCIgaW5zdGFs
bGVkIChsaWtlbHkgZmFpbHMgb24gV2luMzIpCisgICAgICAgIHppcF9jb21tYW5kID0gWyd6aXAn
LCB6aXBfcGF0aCwgcmVzdWx0c19kaXJlY3RvcnldCisgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5y
dW5fY29tbWFuZCh6aXBfY29tbWFuZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2VfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkx
YWNlZTg2N2E3MGFlYjM1MWQzNWJlYzg2YjA0ZWJhNDI3ZTE3NzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX3VuaXR0ZXN0
LnB5CkBAIC0wLDAgKzEsNDQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKwor
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0Zp
bGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS53b3Jrc3BhY2UgaW1wb3J0IFdv
cmtzcGFjZQorCisKK2NsYXNzIFdvcmtzcGFjZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisg
ICAgZGVmIHRlc3RfZmluZF91bnVzZWRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZpbGVzeXN0
ZW0gPSBNb2NrRmlsZVN5c3RlbSh7CisgICAgICAgICAgICAiZGlyL2Zvby5qcGciOiAiIiwKKyAg
ICAgICAgICAgICJkaXIvZm9vLTEuanBnIjogIiIsCisgICAgICAgIH0pCisgICAgICAgIHdvcmtz
cGFjZSA9IFdvcmtzcGFjZShmaWxlc3lzdGVtLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHdvcmtzcGFjZS5maW5kX3VudXNlZF9maWxlbmFtZSgiYmFyIiwgImJhciIsICJiYXIiKSwg
ImJhci9iYXIuYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3b3Jrc3BhY2UuZmluZF91
bnVzZWRfZmlsZW5hbWUoImRpciIsICJmb28iLCAianBnIiksICJkaXIvZm9vLTIuanBnIikKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNr
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2sucHkK
aW5kZXggNGJkYzc5YjFlMTNjNGY1YTc0MWYzZmU0ZjY0MjdkMjU1NmJlY2YzYS4uZmZiODZmYzhm
NDhmMjdkMzdjOTMzOTcyOTU0YTQ5ZWZlYjA2MDI1NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2sucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2sucHkKQEAgLTQ2LDcgKzQ2LDExIEBA
IGNsYXNzIENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlKG9iamVjdCk6CiAgICAgZGVmIGxheW91dF90
ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInN1
YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQogCi0gICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhz
ZWxmLCBwYXRjaCwgZmxha3lfdGVzdHMpOgorICAgIGRlZiBhcmNoaXZlX2xhc3RfbGF5b3V0X3Rl
c3RfcmVzdWx0cyhzZWxmLCBwYXRjaCk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJy
b3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQorCisgICAgIyBXZSBjb3VsZCBtYWtlIHJl
c3VsdHNfYXJjaGl2ZSBvcHRpb25hbCwgYnV0IGZvciBub3cgaXQncyByZXF1aXJlZC4KKyAgICBk
ZWYgcmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYsIHBhdGNoLCBmbGFreV90ZXN0cywgcmVzdWx0c19h
cmNoaXZlKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3ViY2xhc3NlcyBt
dXN0IGltcGxlbWVudCIpCiAKIApAQCAtMTY4LDggKzE3Miw4IEBAIGNsYXNzIENvbW1pdFF1ZXVl
VGFzayhvYmplY3QpOgogICAgICAgICAiTGFuZGVkIHBhdGNoIiwKICAgICAgICAgIlVuYWJsZSB0
byBsYW5kIHBhdGNoIikKIAotICAgIGRlZiBfcmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYsIGZsYWt5
X3Rlc3RfcmVzdWx0cyk6Ci0gICAgICAgIHNlbGYuX2RlbGVnYXRlLnJlcG9ydF9mbGFreV90ZXN0
cyhzZWxmLl9wYXRjaCwgZmxha3lfdGVzdF9yZXN1bHRzKQorICAgIGRlZiBfcmVwb3J0X2ZsYWt5
X3Rlc3RzKHNlbGYsIGZsYWt5X3Rlc3RfcmVzdWx0cywgcmVzdWx0c19hcmNoaXZlKToKKyAgICAg
ICAgc2VsZi5fZGVsZWdhdGUucmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYuX3BhdGNoLCBmbGFreV90
ZXN0X3Jlc3VsdHMsIHJlc3VsdHNfYXJjaGl2ZSkKIAogICAgIGRlZiBfdGVzdF9wYXRjaChzZWxm
KToKICAgICAgICAgaWYgc2VsZi5fcGF0Y2guaXNfcm9sbG91dCgpOgpAQCAtMTc3LDE0ICsxODEs
MTUgQEAgY2xhc3MgQ29tbWl0UXVldWVUYXNrKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuX3Rl
c3QoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAgZmlyc3RfZmFpbGluZ19y
ZXN1bHRzID0gc2VsZi5fZmFpbGluZ19yZXN1bHRzX2Zyb21fbGFzdF9ydW4oKQotICAgICAgICBm
aXJzdF9mYWlsaW5nX3Rlc3RzID0gW3Jlc3VsdC5maWxlbmFtZSBmb3IgcmVzdWx0IGluIGZpcnN0
X2ZhaWxpbmdfcmVzdWx0c10KKyAgICAgICAgZmlyc3RfcmVzdWx0cyA9IHNlbGYuX2ZhaWxpbmdf
cmVzdWx0c19mcm9tX2xhc3RfcnVuKCkKKyAgICAgICAgZmlyc3RfZmFpbGluZ190ZXN0cyA9IFty
ZXN1bHQuZmlsZW5hbWUgZm9yIHJlc3VsdCBpbiBmaXJzdF9yZXN1bHRzXQorICAgICAgICBmaXJz
dF9yZXN1bHRzX2FyY2hpdmUgPSBzZWxmLl9kZWxlZ2F0ZS5hcmNoaXZlX2xhc3RfbGF5b3V0X3Rl
c3RfcmVzdWx0cyhzZWxmLl9wYXRjaCkKICAgICAgICAgaWYgc2VsZi5fdGVzdCgpOgotICAgICAg
ICAgICAgc2VsZi5fcmVwb3J0X2ZsYWt5X3Rlc3RzKGZpcnN0X2ZhaWxpbmdfcmVzdWx0cykKKyAg
ICAgICAgICAgIHNlbGYuX3JlcG9ydF9mbGFreV90ZXN0cyhmaXJzdF9yZXN1bHRzLCBmaXJzdF9y
ZXN1bHRzX2FyY2hpdmUpCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgICAgIHNlY29u
ZF9mYWlsaW5nX3Jlc3VsdHMgPSBzZWxmLl9mYWlsaW5nX3Jlc3VsdHNfZnJvbV9sYXN0X3J1bigp
Ci0gICAgICAgIHNlY29uZF9mYWlsaW5nX3Rlc3RzID0gW3Jlc3VsdC5maWxlbmFtZSBmb3IgcmVz
dWx0IGluIHNlY29uZF9mYWlsaW5nX3Jlc3VsdHNdCisgICAgICAgIHNlY29uZF9yZXN1bHRzID0g
c2VsZi5fZmFpbGluZ19yZXN1bHRzX2Zyb21fbGFzdF9ydW4oKQorICAgICAgICBzZWNvbmRfZmFp
bGluZ190ZXN0cyA9IFtyZXN1bHQuZmlsZW5hbWUgZm9yIHJlc3VsdCBpbiBzZWNvbmRfcmVzdWx0
c10KICAgICAgICAgaWYgZmlyc3RfZmFpbGluZ190ZXN0cyAhPSBzZWNvbmRfZmFpbGluZ190ZXN0
czoKICAgICAgICAgICAgICMgV2UgY291bGQgcmVwb3J0IGZsYWt5IHRlc3RzIGhlcmUsIGJ1dCBz
aW5jZSBydW4td2Via2l0LXRlc3RzCiAgICAgICAgICAgICAjIGlzIHJ1biB3aXRoIC0tZXhpdC1h
ZnRlci1OLWZhaWx1cmVzPTEsIHdlIHdvdWxkIG5lZWQgdG8KZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkK
aW5kZXggZjI3OWNhYzU0ZTEzNWE5NDY1YjdkMGI1NDk4MjAwMmFkZjI2ODEyZS4uOTRlY2YwN2Q0
YjQwZjk3NTdhZGM4N2RjZDlkNzZlMTllZDQ2NTRlMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkK
QEAgLTY0LDkgKzY0LDE1IEBAIGNsYXNzIE1vY2tDb21taXRRdWV1ZShDb21taXRRdWV1ZVRhc2tE
ZWxlZ2F0ZSk6CiAgICAgZGVmIGxheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHJl
dHVybiBOb25lCiAKLSAgICBkZWYgcmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYsIHBhdGNoLCBmbGFr
eV9yZXN1bHRzKToKKyAgICBkZWYgcmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYsIHBhdGNoLCBmbGFr
eV9yZXN1bHRzLCByZXN1bHRzX2FyY2hpdmUpOgogICAgICAgICBmbGFreV90ZXN0cyA9IFtyZXN1
bHQuZmlsZW5hbWUgZm9yIHJlc3VsdCBpbiBmbGFreV9yZXN1bHRzXQotICAgICAgICBsb2coInJl
cG9ydF9mbGFreV90ZXN0czogcGF0Y2g9JyVzJyBmbGFreV90ZXN0cz0nJXMnIiAlIChwYXRjaC5p
ZCgpLCBmbGFreV90ZXN0cykpCisgICAgICAgIGxvZygicmVwb3J0X2ZsYWt5X3Rlc3RzOiBwYXRj
aD0nJXMnIGZsYWt5X3Rlc3RzPSclcycgYXJjaGl2ZT0nJXMnIiAlIChwYXRjaC5pZCgpLCBmbGFr
eV90ZXN0cywgcmVzdWx0c19hcmNoaXZlLmZpbGVuYW1lKSkKKworICAgIGRlZiBhcmNoaXZlX2xh
c3RfbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmLCBwYXRjaCk6CisgICAgICAgIGxvZygiYXJjaGl2
ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHM6IHBhdGNoPSclcyciICUgcGF0Y2guaWQoKSkKKyAg
ICAgICAgYXJjaGl2ZSA9IE1vY2soKQorICAgICAgICBhcmNoaXZlLmZpbGVuYW1lID0gIm1vY2st
YXJjaGl2ZS0lcy56aXAiICUgcGF0Y2guaWQoKQorICAgICAgICByZXR1cm4gYXJjaGl2ZQogCiAK
IGNsYXNzIENvbW1pdFF1ZXVlVGFza1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTkzLDkg
KzE5OSwxMCBAQCBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1u
by11cGRhdGUnLCAnLS1idWlsZC1zdHlsZT1ib3RoJ10KIGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNz
X21lc3NhZ2U9J0J1aWx0IHBhdGNoJyBwYXRjaD0nMTk3JwogcnVuX3dlYmtpdF9wYXRjaDogWydi
dWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICct
LW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRj
aCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdHMgZmFpbHVyZScg
cGF0Y2g9JzE5NycKK2FyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzOiBwYXRjaD0nMTk3
JwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0t
bm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX3Bhc3Nl
ZDogc3VjY2Vzc19tZXNzYWdlPSdQYXNzZWQgdGVzdHMnIHBhdGNoPScxOTcnCi1yZXBvcnRfZmxh
a3lfdGVzdHM6IHBhdGNoPScxOTcnIGZsYWt5X3Rlc3RzPSdbXScKK3JlcG9ydF9mbGFreV90ZXN0
czogcGF0Y2g9JzE5NycgZmxha3lfdGVzdHM9J1tdJyBhcmNoaXZlPSdtb2NrLWFyY2hpdmUtMTk3
LnppcCcKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnbGFuZC1hdHRhY2htZW50JywgJy0tZm9yY2UtY2xl
YW4nLCAnLS1pZ25vcmUtYnVpbGRlcnMnLCAnLS1ub24taW50ZXJhY3RpdmUnLCAnLS1wYXJlbnQt
Y29tbWFuZD1jb21taXQtcXVldWUnLCAxOTddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNz
YWdlPSdMYW5kZWQgcGF0Y2gnIHBhdGNoPScxOTcnCiAiIiIKQEAgLTIyNSw2ICsyMzIsNyBAQCBy
dW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAn
LS1idWlsZC1zdHlsZT1ib3RoJ10KIGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0J1
aWx0IHBhdGNoJyBwYXRjaD0nMTk3JwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVz
dCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFj
dGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBw
YXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlJyBwYXRjaD0nMTk3Jwor
YXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxOTcnCiBydW5fd2Via2l0
X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAn
LS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KIGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21l
c3NhZ2U9J1BhdGNoIGRvZXMgbm90IHBhc3MgdGVzdHMnIHNjcmlwdF9lcnJvcj0nTU9DSyB0ZXN0
IGZhaWx1cmUgYWdhaW4nIHBhdGNoPScxOTcnCiAiIiIKQEAgLTI2Miw2ICsyNzAsNyBAQCBydW5f
d2Via2l0X3BhdGNoOiBbJ2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1i
dWlsZC1zdHlsZT1ib3RoJ10KIGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0J1aWx0
IHBhdGNoJyBwYXRjaD0nMTk3JwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcs
ICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2
ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNz
IHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlJyBwYXRjaD0nMTk3JworYXJj
aGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxOTcnCiBydW5fd2Via2l0X3Bh
dGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10
ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KIGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3Nh
Z2U9J1BhdGNoIGRvZXMgbm90IHBhc3MgdGVzdHMnIHNjcmlwdF9lcnJvcj0nTU9DSyB0ZXN0IGZh
aWx1cmUgYWdhaW4nIHBhdGNoPScxOTcnCiBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10
ZXN0JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZCcsICctLXRlc3Qn
LCAnLS1ub24taW50ZXJhY3RpdmUnXQpAQCAtMjg5LDYgKzI5OCw3IEBAIHJ1bl93ZWJraXRfcGF0
Y2g6IFsnYnVpbGQnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLWJ1aWxkLXN0eWxl
PWJvdGgnXQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nQnVpbHQgcGF0Y2gnIHBh
dGNoPScxOTcnCiBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8tY2xl
YW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KIGNvbW1h
bmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90IHBhc3MgdGVzdHMnIHNj
cmlwdF9lcnJvcj0nTU9DSyB0ZXN0IGZhaWx1cmUnIHBhdGNoPScxOTcnCithcmNoaXZlX2xhc3Rf
bGF5b3V0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzE5NycKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVp
bGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1u
b24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2gg
ZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHRlc3QgZmFpbHVyZSBhZ2Fp
bicgcGF0Y2g9JzE5NycKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAnLS1m
b3JjZS1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLWJ1aWxkJywgJy0tdGVzdCcsICctLW5vbi1p
bnRlcmFjdGl2ZSddCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2ZsYWt5dGVzdHJlcG9ydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9m
bGFreXRlc3RyZXBvcnRlci5weQppbmRleCA5MWZjYjg1OWUxZWNiNDIyYzc1MDYxYzhmZDU4YTI1
ZGQyYjFmNTU0Li42OWE3NGQxZGVmZDc3MDg1MTVmYTA4NTZjM2E2ZDY5YTNiOWZhOTU3IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVy
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0
ZXIucHkKQEAgLTEzMSwxMyArMTMxLDEwIEBAIElmIHlvdSB3b3VsZCBsaWtlIHRvIHRyYWNrIHRo
aXMgdGVzdCBmaXggd2l0aCBhbm90aGVyIGJ1ZywgcGxlYXNlIGNsb3NlIHRoaXMgYnVnCiAgICAg
ICAgIGZsYWtlX21lc3NhZ2UgPSAiVGhlICVzIGp1c3Qgc2F3ICVzIGZsYWtlICglcykgd2hpbGUg
cHJvY2Vzc2luZyBhdHRhY2htZW50ICVzIG9uIGJ1ZyAlcy4iICUgKHNlbGYuX2JvdF9uYW1lLCBm
bGFreV9yZXN1bHQuZmlsZW5hbWUsICIsICIuam9pbihmYWlsdXJlX21lc3NhZ2VzKSwgcGF0Y2gu
aWQoKSwgcGF0Y2guYnVnX2lkKCkpCiAgICAgICAgIHJldHVybiAiJXNcbiVzIiAlIChmbGFrZV9t
ZXNzYWdlLCBzZWxmLl9ib3RfaW5mb3JtYXRpb24oKSkKIAotICAgIGRlZiBfcmVzdWx0c19kaWZm
X3BhdGhfZm9yX3Rlc3Qoc2VsZiwgZmxha3lfdGVzdCk6CisgICAgZGVmIF9yZXN1bHRzX2RpZmZf
cGF0aF9mb3JfdGVzdChzZWxmLCB0ZXN0X3BhdGgpOgogICAgICAgICAjIEZJWE1FOiBUaGlzIGlz
IGEgYmlnIGhhY2suICBXZSBzaG91bGQgZ2V0IHRoaXMgcGF0aCBmcm9tIHJlc3VsdHMuanNvbgog
ICAgICAgICAjIGV4Y2VwdCB0aGF0IG9sZC1ydW4td2Via2l0LXRlc3RzIGRvZXNuJ3QgcHJvZHVj
ZSBhIHJlc3VsdHMuanNvbgogICAgICAgICAjIHNvIHdlIGp1c3QgZ3Vlc3MgYXQgdGhlIGZpbGUg
cGF0aC4KLSAgICAgICAgcmVzdWx0c19wYXRoID0gc2VsZi5fdG9vbC5wb3J0KCkubGF5b3V0X3Rl
c3RzX3Jlc3VsdHNfcGF0aCgpCi0gICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gb3MucGF0aC5k
aXJuYW1lKHJlc3VsdHNfcGF0aCkKLSAgICAgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKHJl
c3VsdHNfZGlyZWN0b3J5LCBmbGFreV90ZXN0KQogICAgICAgICAodGVzdF9wYXRoX3Jvb3QsIF8p
ID0gb3MucGF0aC5zcGxpdGV4dCh0ZXN0X3BhdGgpCiAgICAgICAgIHJldHVybiAiJXMtZGlmZnMu
dHh0IiAlIHRlc3RfcGF0aF9yb290CiAKQEAgLTE1Myw3ICsxNTAsMjMgQEAgSWYgeW91IHdvdWxk
IGxpa2UgdG8gdHJhY2sgdGhpcyB0ZXN0IGZpeCB3aXRoIGFub3RoZXIgYnVnLCBwbGVhc2UgY2xv
c2UgdGhpcyBidWcKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3Rvb2wuYnVncy5w
b3N0X2NvbW1lbnRfdG9fYnVnKGJ1Zy5pZCgpLCBsYXRlc3RfZmxha2VfbWVzc2FnZSkKIAotICAg
IGRlZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgZmxha3lfdGVzdF9yZXN1bHRzLCBwYXRjaCk6
CisgICAgZGVmIF9hdHRhY2hfZmFpbHVyZV9kaWZmKHNlbGYsIGZsYWtlX2J1Z19pZCwgZmxha3lf
dGVzdCwgcmVzdWx0c19hcmNoaXZlKToKKyAgICAgICAgcmVzdWx0c19kaWZmX3BhdGggPSBzZWxm
Ll9yZXN1bHRzX2RpZmZfcGF0aF9mb3JfdGVzdChmbGFreV90ZXN0KQorICAgICAgICAjIENoZWNr
IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwYXRoIG1ha2VzIHNlbnNlLgorICAgICAgICAjIFNpbmNl
IHdlJ3JlIG5vdCBhY3R1YWxseSBnZXR0aW5nIHRoaXMgcGF0aCBmcm9tIHRoZSByZXN1bHRzLmh0
bWwKKyAgICAgICAgIyB0aGVyZSBpcyBhIGNoYW5jZSBpdCdzIHdyb25nLgorICAgICAgICBib3Rf
aWQgPSBzZWxmLl90b29sLnN0YXR1c19zZXJ2ZXIuYm90X2lkIG9yICJib3QiCisgICAgICAgIGlm
IHJlc3VsdHNfZGlmZl9wYXRoIGluIHJlc3VsdHNfYXJjaGl2ZS5uYW1lbGlzdCgpOgorICAgICAg
ICAgICAgcmVzdWx0c19kaWZmID0gcmVzdWx0c19hcmNoaXZlLnJlYWQocmVzdWx0c19kaWZmX3Bh
dGgpCisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICJGYWlsdXJlIGRpZmYgZnJvbSAlcyIgJSBi
b3RfaWQKKyAgICAgICAgICAgIHNlbGYuX3Rvb2wuYnVncy5hZGRfYXR0YWNobWVudF90b19idWco
Zmxha2VfYnVnX2lkLCByZXN1bHRzX2RpZmYsIGRlc2NyaXB0aW9uLCBmaWxlbmFtZT0iZmFpbHVy
ZS5kaWZmIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIF9sb2cud2FybigiJXMgZG9lcyBu
b3QgZXhpc3QgaW4gcmVzdWx0cyBhcmNoaXZlLCB1cGxvYWRpbmcgZW50aXJlIGFyY2hpdmUuIiAl
IHJlc3VsdHNfZGlmZl9wYXRoKQorICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiQXJjaGl2ZSBv
ZiBsYXlvdXQtdGVzdC1yZXN1bHRzIGZyb20gJXMiICUgYm90X2lkCisgICAgICAgICAgICAjIHJl
c3VsdHNfYXJjaGl2ZSBpcyBhIFppcEZpbGUgb2JqZWN0LCBncmFiIHRoZSBGaWxlIG9iamVjdCAo
LmZwKSB0byBwYXNzIHRvIE1lY2hhbml6ZSBmb3IgdXBsb2FkaW5nLgorICAgICAgICAgICAgc2Vs
Zi5fdG9vbC5idWdzLmFkZF9hdHRhY2htZW50X3RvX2J1ZyhmbGFrZV9idWdfaWQsIHJlc3VsdHNf
YXJjaGl2ZS5mcCwgZGVzY3JpcHRpb24sIGZpbGVuYW1lPSJsYXlvdXQtdGVzdC1yZXN1bHRzLnpp
cCIpCisKKyAgICBkZWYgcmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYsIHBhdGNoLCBmbGFreV90ZXN0
X3Jlc3VsdHMsIHJlc3VsdHNfYXJjaGl2ZSk6CiAgICAgICAgIG1lc3NhZ2UgPSAiVGhlICVzIGVu
Y291bnRlcmVkIHRoZSBmb2xsb3dpbmcgZmxha3kgdGVzdHMgd2hpbGUgcHJvY2Vzc2luZyBhdHRh
Y2htZW50ICVzOlxuXG4iICUgKHNlbGYuX2JvdF9uYW1lLCBwYXRjaC5pZCgpKQogICAgICAgICBm
b3IgZmxha3lfcmVzdWx0IGluIGZsYWt5X3Rlc3RfcmVzdWx0czoKICAgICAgICAgICAgIGZsYWt5
X3Rlc3QgPSBmbGFreV9yZXN1bHQuZmlsZW5hbWUKQEAgLTE2NSwyMCArMTc4LDEyIEBAIElmIHlv
dSB3b3VsZCBsaWtlIHRvIHRyYWNrIHRoaXMgdGVzdCBmaXggd2l0aCBhbm90aGVyIGJ1ZywgcGxl
YXNlIGNsb3NlIHRoaXMgYnVnCiAgICAgICAgICAgICAgICAgZmxha2VfYnVnX2lkID0gc2VsZi5f
Y3JlYXRlX2J1Z19mb3JfZmxha3lfdGVzdChmbGFreV90ZXN0LCBhdXRob3JfZW1haWxzLCBsYXRl
c3RfZmxha2VfbWVzc2FnZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYnVn
ID0gc2VsZi5fZm9sbG93X2R1cGxpY2F0ZV9jaGFpbihidWcpCisgICAgICAgICAgICAgICAgIyBG
SVhNRTogSWRlYWxseSB3ZSdkIG9ubHkgbWFrZSBvbmUgY29tbWVudCBwZXIgZmxha2UsIG5vdCB0
d28uICBCdXQgdGhhdCdzIG5vdCBwb3NzaWJsZQorICAgICAgICAgICAgICAgICMgaW4gYWxsIGNh
c2VzIChlLmcuIHdoZW4gcmVvcGVuaW5nKSwgc28gZm9yIG5vdyBmaWxlIGF0dGFjaG1lbnQgYW5k
IGNvbW1lbnQgYXJlIHNlcGFyYXRlLgogICAgICAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9idWdf
Zm9yX2ZsYWt5X3Rlc3QoYnVnLCBsYXRlc3RfZmxha2VfbWVzc2FnZSkKICAgICAgICAgICAgICAg
ICBmbGFrZV9idWdfaWQgPSBidWcuaWQoKQotICAgICAgICAgICAgIyBGSVhNRTogSWRlYWxseSB3
ZSdkIG9ubHkgbWFrZSBvbmUgY29tbWVudCBwZXIgZmxha2UsIG5vdCB0d28uICBCdXQgdGhhdCdz
IG5vdCBwb3NzaWJsZQotICAgICAgICAgICAgIyBpbiBhbGwgY2FzZXMgKGUuZy4gd2hlbiByZW9w
ZW5pbmcpLCBzbyBmb3Igbm93IHdlIGRvIHRoZSBhdHRhY2htZW50IGluIGEgc2Vjb25kIHN0ZXAu
Ci0gICAgICAgICAgICByZXN1bHRzX2RpZmZfcGF0aCA9IHNlbGYuX3Jlc3VsdHNfZGlmZl9wYXRo
X2Zvcl90ZXN0KGZsYWt5X3Rlc3QpCi0gICAgICAgICAgICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0
aGF0IHRoZSBwYXRoIG1ha2VzIHNlbnNlLgotICAgICAgICAgICAgIyBTaW5jZSB3ZSdyZSBub3Qg
YWN0dWFsbHkgZ2V0dGluZyB0aGlzIHBhdGggZnJvbSB0aGUgcmVzdWx0cy5odG1sCi0gICAgICAg
ICAgICAjIHRoZXJlIGlzIGEgaGlnaCBwcm9iYWlsaXR5IGl0J3MgdG90YWxseSB3cm9uZy4KLSAg
ICAgICAgICAgIGlmIHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS5leGlzdHMocmVzdWx0c19kaWZmX3Bh
dGgpOgotICAgICAgICAgICAgICAgIHJlc3VsdHNfZGlmZiA9IHNlbGYuX3Rvb2wuZmlsZXN5c3Rl
bS5yZWFkX2JpbmFyeV9maWxlKHJlc3VsdHNfZGlmZl9wYXRoKQotICAgICAgICAgICAgICAgIGJv
dF9pZCA9IHNlbGYuX3Rvb2wuc3RhdHVzX3NlcnZlci5ib3RfaWQgb3IgImJvdCIKLSAgICAgICAg
ICAgICAgICBzZWxmLl90b29sLmJ1Z3MuYWRkX2F0dGFjaG1lbnRfdG9fYnVnKGZsYWtlX2J1Z19p
ZCwgcmVzdWx0c19kaWZmLCAiRmFpbHVyZSBkaWZmIGZyb20gJXMiICUgYm90X2lkLCBmaWxlbmFt
ZT0iZmFpbHVyZS5kaWZmIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgX2xv
Zy5lcnJvcigiJXMgZG9lcyBub3QgZXhpc3QgYXMgZXhwZWN0ZWQsIG5vdCB1cGxvYWRpbmcuIiAl
IHJlc3VsdHNfZGlmZl9wYXRoKQorCisgICAgICAgICAgICBzZWxmLl9hdHRhY2hfZmFpbHVyZV9k
aWZmKGZsYWtlX2J1Z19pZCwgZmxha3lfdGVzdCwgcmVzdWx0c19hcmNoaXZlKQogICAgICAgICAg
ICAgbWVzc2FnZSArPSAiJXMgYnVnICVzJXNcbiIgJSAoZmxha3lfdGVzdCwgZmxha2VfYnVnX2lk
LCBzZWxmLl9vcHRpb25hbF9hdXRob3Jfc3RyaW5nKGF1dGhvcl9lbWFpbHMpKQogCiAgICAgICAg
IG1lc3NhZ2UgKz0gIlRoZSAlcyBpcyBjb250aW51aW5nIHRvIHByb2Nlc3MgeW91ciBwYXRjaC4i
ICUgc2VsZi5fYm90X25hbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyX3VuaXR0ZXN0LnB5CmluZGV4IDYzMWY4ZDFl
MzQ5OWM2ZDMwNDkxN2Y0MDk5ZDNmNjI3ZWFlNjNlNGYuLjY2MzVlNjBjZTJmNGZmMGU4M2VjMjA0
ZjI4ZDFkZmFiOWQ3NDAwNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRlcl91bml0dGVzdC5weQpAQCAtMzMsNiAr
MzMsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9y
dCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1
cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCitmcm9tIHdlYmtpdHB5LnRoaXJk
cGFydHkubW9jayBpbXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50b29sLmJvdC5mbGFreXRlc3Ry
ZXBvcnRlciBpbXBvcnQgRmxha3lUZXN0UmVwb3J0ZXIKIGZyb20gd2Via2l0cHkudG9vbC5tb2Nr
dG9vbCBpbXBvcnQgTW9ja1Rvb2wsIE1vY2tTdGF0dXNTZXJ2ZXIKIApAQCAtMTQwLDcgKzE0MSwx
NSBAQCBUaGUgZHVtbXktcXVldWUgaXMgY29udGludWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2gu
CiAKICIiIgogICAgICAgICB0ZXN0X3Jlc3VsdHMgPSBbc2VsZi5fbW9ja190ZXN0X3Jlc3VsdCgn
Zm9vL2Jhci5odG1sJyldCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhz
ZWxmLCByZXBvcnRlci5yZXBvcnRfZmxha3lfdGVzdHMsIFt0ZXN0X3Jlc3VsdHMsIHBhdGNoXSwg
ZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKworICAgICAgICBjbGFzcyBNb2NrWmlw
RmlsZShvYmplY3QpOgorICAgICAgICAgICAgZGVmIHJlYWQoc2VsZiwgcGF0aCk6CisgICAgICAg
ICAgICAgICAgcmV0dXJuICIiCisKKyAgICAgICAgICAgIGRlZiBuYW1lbGlzdChzZWxmKToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gWydmb28vYmFyLWRpZmZzLnR4dCddCisKKyAgICAgICAgT3V0
cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJlcG9ydGVyLnJlcG9ydF9mbGFreV90
ZXN0cywgW3BhdGNoLCB0ZXN0X3Jlc3VsdHMsIE1vY2taaXBGaWxlKCldLCBleHBlY3RlZF9zdGRl
cnI9ZXhwZWN0ZWRfc3RkZXJyKQogCiAgICAgZGVmIHRlc3Rfb3B0aW9uYWxfYXV0aG9yX3N0cmlu
ZyhzZWxmKToKICAgICAgICAgcmVwb3J0ZXIgPSBGbGFreVRlc3RSZXBvcnRlcihNb2NrVG9vbCgp
LCAnZHVtbXktcXVldWUnKQpAQCAtMTUwLDYgKzE1OSw2IEBAIFRoZSBkdW1teS1xdWV1ZSBpcyBj
b250aW51aW5nIHRvIHByb2Nlc3MgeW91ciBwYXRjaC4KIAogICAgIGRlZiB0ZXN0X3Jlc3VsdHNf
ZGlmZl9wYXRoX2Zvcl90ZXN0KHNlbGYpOgogICAgICAgICByZXBvcnRlciA9IEZsYWt5VGVzdFJl
cG9ydGVyKE1vY2tUb29sKCksICdkdW1teS1xdWV1ZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVwb3J0ZXIuX3Jlc3VsdHNfZGlmZl9wYXRoX2Zvcl90ZXN0KCJ0ZXN0Lmh0bWwiKSwgIi9t
b2NrL3Rlc3QtZGlmZnMudHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRlci5f
cmVzdWx0c19kaWZmX3BhdGhfZm9yX3Rlc3QoInRlc3QuaHRtbCIpLCAidGVzdC1kaWZmcy50eHQi
KQogCiAgICAgIyByZXBvcnRfZmxha3lfdGVzdHMgaXMgYWxzbyB0ZXN0ZWQgYnkgcXVldWVzX3Vu
aXR0ZXN0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5w
eQppbmRleCA1NjI4NTQzMzIxOTZiNDlhMmJlZTYyZjNjNWNjMGI2ZmI5Y2M0Y2Y1Li42MmE4MDk2
MzQzOGY4YzQxMDgyNTVjMzAxMzkzYjdjMmVkODkzYzM4IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKQEAgLTMwOSwxMiArMzA5LDI5IEBAIGNs
YXNzIENvbW1pdFF1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5k
bGVyLCBDb21taXRRdWV1ZVRhc2tECiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBy
ZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyhyZXN1bHRzX2h0bWwp
CiAKKyAgICBkZWYgX3Jlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICByZXN1bHRzX3Bh
dGggPSBzZWxmLl90b29sLnBvcnQoKS5sYXlvdXRfdGVzdHNfcmVzdWx0c19wYXRoKCkKKyAgICAg
ICAgIyBGSVhNRTogVGhpcyBpcyB3cm9uZyBpbiB0d28gd2F5czoKKyAgICAgICAgIyAxLiBJdCBh
c3N1bWVzIHRoYXQgcmVzdWx0cy5odG1sIGlzIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHJlc3Vs
dHMgdHJlZS4KKyAgICAgICAgIyAyLiBUaGlzIHVzZXMgdGhlICJvbGQiIHBvcnRzLnB5IGluZnJh
c3RydWN0dXJlIGluc3RlYWQgb2YgdGhlIG5ldyBsYXlvdXRfdGVzdHMvcG9ydAorICAgICAgICAj
IHdoaWNoIHdpbGwgbm90IHN1cHBvcnQgQ2hyb21pdW0uICBIb3dldmVyIHRoZSBuZXcgYXJjaCBk
b2Vzbid0IHdvcmsgd2l0aCBvbGQtcnVuLXdlYmtpdC10ZXN0cworICAgICAgICAjIHNvIHdlIGhh
dmUgdG8gdXNlIHRoaXMgZm9yIG5vdy4KKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShy
ZXN1bHRzX3BhdGgpCisKKyAgICBkZWYgYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMo
c2VsZiwgcGF0Y2gpOgorICAgICAgICByZXN1bHRzX2RpcmVjdG9yeSA9IHNlbGYuX3Jlc3VsdHNf
ZGlyZWN0b3J5KCkKKyAgICAgICAgcmVzdWx0c19uYW1lLCBfID0gb3MucGF0aC5zcGxpdGV4dChv
cy5wYXRoLmJhc2VuYW1lKHJlc3VsdHNfZGlyZWN0b3J5KSkKKyAgICAgICAgIyBOb3RlOiBXZSBu
YW1lIHRoZSB6aXAgd2l0aCB0aGUgYnVnX2lkIGluc3RlYWQgb2YgcGF0Y2hfaWQgdG8gbWF0Y2gg
d29ya19pdGVtX2xvZ19wYXRoKCkuCisgICAgICAgIHppcF9wYXRoID0gc2VsZi5fdG9vbC53b3Jr
c3BhY2UuZmluZF91bnVzZWRfZmlsZW5hbWUoc2VsZi5fbG9nX2RpcmVjdG9yeSgpLCAiJXMtJXMi
ICUgKHBhdGNoLmJ1Z19pZCgpLCByZXN1bHRzX25hbWUpLCAiemlwIikKKyAgICAgICAgc2VsZi5f
dG9vbC53b3Jrc3BhY2UuY3JlYXRlX3ppcCh6aXBfcGF0aCwgcmVzdWx0c19kaXJlY3RvcnkpCisg
ICAgICAgIHJldHVybiB6aXBfcGF0aAorCiAgICAgZGVmIHJlZmV0Y2hfcGF0Y2goc2VsZiwgcGF0
Y2gpOgogICAgICAgICByZXR1cm4gc2VsZi5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQocGF0
Y2guaWQoKSkKIAotICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0Y2gsIGZsYWt5
X3Rlc3RfcmVzdWx0cyk6CisgICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwg
Zmxha3lfdGVzdF9yZXN1bHRzLCByZXN1bHRzX2FyY2hpdmU9Tm9uZSk6CiAgICAgICAgIHJlcG9y
dGVyID0gRmxha3lUZXN0UmVwb3J0ZXIoc2VsZi5fdG9vbCwgc2VsZi5uYW1lKQotICAgICAgICBy
ZXBvcnRlci5yZXBvcnRfZmxha3lfdGVzdHMoZmxha3lfdGVzdF9yZXN1bHRzLCBwYXRjaCkKKyAg
ICAgICAgcmVwb3J0ZXIucmVwb3J0X2ZsYWt5X3Rlc3RzKHBhdGNoLCBmbGFreV90ZXN0X3Jlc3Vs
dHMsIHJlc3VsdHNfYXJjaGl2ZSkKIAogICAgICMgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyIG1l
dGhvZHMKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3F1ZXVlc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9xdWV1ZXNfdW5pdHRlc3QucHkKaW5kZXggMzRhNmE2NGQ4MzgwOGRkMmVjOTA1YWE0NjVkYzIw
OWJhZWI5ZTgwMi4uOGY1YzllNjJjMzYzZTY1NDhkMDFhMDM5NGQzYTE1N2FiM2E3MjE2MCAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVz
X3VuaXR0ZXN0LnB5CkBAIC0yNyw5ICsyNywxMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQg
b3MKK2ltcG9ydCBTdHJpbmdJTwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20g
aW1wb3J0IENoZWNrb3V0TmVlZHNVcGRhdGUKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6
aWxsYSBpbXBvcnQgQXR0YWNobWVudAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVz
eXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRzCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwpAQCAt
MzQyLDEyICszNDQsMTQgQEAgVGhlIGNvbW1pdC1xdWV1ZSBqdXN0IHNhdyBmb28vYmFyLmh0bWwg
Zmxha2UgKFRleHQgZGlmZiBtaXNtYXRjaCkgd2hpbGUgcHJvY2Vzc2kKIFBvcnQ6IE1vY2tQb3J0
ICBQbGF0Zm9ybTogTW9ja1BsYXRmb3JtIDEuMAogLS0tIEVuZCBjb21tZW50IC0tLQogCitNT0NL
IGFkZF9hdHRhY2htZW50X3RvX2J1ZzogYnVnX2lkPTc2LCBkZXNjcmlwdGlvbj1GYWlsdXJlIGRp
ZmYgZnJvbSBib3QgZmlsZW5hbWU9ZmFpbHVyZS5kaWZmCiBNT0NLIGJ1ZyBjb21tZW50OiBidWdf
aWQ9NzYsIGNjPU5vbmUKIC0tLSBCZWdpbiBjb21tZW50IC0tLQogVGhlIGNvbW1pdC1xdWV1ZSBq
dXN0IHNhdyBiYXIvYmF6Lmh0bWwgZmxha2UgKFRleHQgZGlmZiBtaXNtYXRjaCkgd2hpbGUgcHJv
Y2Vzc2luZyBhdHRhY2htZW50IDE5NyBvbiBidWcgNDIuCiBQb3J0OiBNb2NrUG9ydCAgUGxhdGZv
cm06IE1vY2tQbGF0Zm9ybSAxLjAKIC0tLSBFbmQgY29tbWVudCAtLS0KIAorTU9DSyBhZGRfYXR0
YWNobWVudF90b19idWc6IGJ1Z19pZD03NiwgZGVzY3JpcHRpb249QXJjaGl2ZSBvZiBsYXlvdXQt
dGVzdC1yZXN1bHRzIGZyb20gYm90IGZpbGVuYW1lPWxheW91dC10ZXN0LXJlc3VsdHMuemlwCiBN
T0NLIGJ1ZyBjb21tZW50OiBidWdfaWQ9NDIsIGNjPU5vbmUKIC0tLSBCZWdpbiBjb21tZW50IC0t
LQogVGhlIGNvbW1pdC1xdWV1ZSBlbmNvdW50ZXJlZCB0aGUgZm9sbG93aW5nIGZsYWt5IHRlc3Rz
IHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNobWVudCAxOTc6CkBAIC0zNjAsNyArMzY0LDE5IEBAIFRo
ZSBjb21taXQtcXVldWUgaXMgY29udGludWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guCiAiIiIK
ICAgICAgICAgdGVzdF9uYW1lcyA9IFsiZm9vL2Jhci5odG1sIiwgImJhci9iYXouaHRtbCJdCiAg
ICAgICAgIHRlc3RfcmVzdWx0cyA9IFtzZWxmLl9tb2NrX3Rlc3RfcmVzdWx0KG5hbWUpIGZvciBu
YW1lIGluIHRlc3RfbmFtZXNdCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0
cyhzZWxmLCBxdWV1ZS5yZXBvcnRfZmxha3lfdGVzdHMsIFtRdWV1ZXNUZXN0Lm1vY2tfd29ya19p
dGVtLCB0ZXN0X3Jlc3VsdHNdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorCisg
ICAgICAgIGNsYXNzIE1vY2taaXBGaWxlKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0
X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5mcCA9IFN0cmluZ0lPKCkKKworICAgICAg
ICAgICAgZGVmIHJlYWQoc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuICIiCisK
KyAgICAgICAgICAgIGRlZiBuYW1lbGlzdChzZWxmKToKKyAgICAgICAgICAgICAgICAjIFRoaXMg
aXMgaW50ZW50aW9uYWxseSBtaXNzaW5nIG9uZSBkaWZmcy50eHQgdG8gZXhlcmNpc2UgdGhlICJ1
cGxvYWQgdGhlIHdob2xlIHppcCIgY29kZXBhdGguCisgICAgICAgICAgICAgICAgcmV0dXJuIFsn
Zm9vL2Jhci1kaWZmcy50eHQnXQorCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBxdWV1ZS5yZXBvcnRfZmxha3lfdGVzdHMsIFtRdWV1ZXNUZXN0Lm1vY2tfd29y
a19pdGVtLCB0ZXN0X3Jlc3VsdHMsIE1vY2taaXBGaWxlKCldLCBleHBlY3RlZF9zdGRlcnI9ZXhw
ZWN0ZWRfc3RkZXJyKQogCiAgICAgZGVmIHRlc3RfbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmKToK
ICAgICAgICAgcXVldWUgPSBDb21taXRRdWV1ZSgpCkBAIC0zNzAsNiArMzg2LDEyIEBAIFRoZSBj
b21taXQtcXVldWUgaXMgY29udGludWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guCiAgICAgICAg
IHF1ZXVlLl9yZWFkX2ZpbGVfY29udGVudHMgPSBsYW1iZGEgcGF0aDogIiIKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMocXVldWUubGF5b3V0X3Rlc3RfcmVzdWx0cygpLCBOb25lKQogCisgICAg
ZGVmIHRlc3RfYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CisgICAgICAg
IHF1ZXVlID0gQ29tbWl0UXVldWUoKQorICAgICAgICBxdWV1ZS5iaW5kX3RvX3Rvb2woTW9ja1Rv
b2woKSkKKyAgICAgICAgcGF0Y2ggPSBxdWV1ZS5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQo
MTI4KQorICAgICAgICBxdWV1ZS5hcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0cyhwYXRj
aCkKKwogCiBjbGFzcyBTdHlsZVF1ZXVlVGVzdChRdWV1ZXNUZXN0KToKICAgICBkZWYgdGVzdF9z
dHlsZV9xdWV1ZShzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9tYWluLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkKaW5kZXggMDAw
NmU4NzU4NGYwYmE5MTNiNjhkNjk4MDkwMTQxNjVhZjU5YzI0ZC4uY2FkNWEyYTVhMzFiNzhhYmRm
YmVlNTM5MDBhNTE1ZWMyNTljNzVhYSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL21haW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkK
QEAgLTQwLDEwICs0MCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBv
cnQgQnVnemlsbGEKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBvcnQgQnVp
bGRCb3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5pcmMuaXJjcHJveHkgaW1wb3J0IElSQ1By
b3h5CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuc3RhdHVzc2VydmVyIGltcG9ydCBTdGF0dXNT
ZXJ2ZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1
dGl2ZQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVT
eXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wbGF0Zm9ybWluZm8gaW1wb3J0IFBs
YXRmb3JtSW5mbwotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIK
K2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlLCBmaWxlc3lzdGVt
LCBwbGF0Zm9ybWluZm8sIHVzZXIsIHdvcmtzcGFjZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMgaW1wb3J0IHBvcnQKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9y
dCBNdWx0aUNvbW1hbmRUb29sCiBpbXBvcnQgd2Via2l0cHkudG9vbC5jb21tYW5kcyBhcyBjb21t
YW5kcwpAQCAtNzAsMTYgKzY3LDE3IEBAIGNsYXNzIFdlYktpdFBhdGNoKE11bHRpQ29tbWFuZFRv
b2wpOgogICAgICAgICAjIG1hbnVhbCBnZXR0ZXIgZnVuY3Rpb25zIChlLmcuIHNjbSgpKS4KICAg
ICAgICAgc2VsZi5idWdzID0gQnVnemlsbGEoKQogICAgICAgICBzZWxmLmJ1aWxkYm90ID0gQnVp
bGRCb3QoKQotICAgICAgICBzZWxmLmV4ZWN1dGl2ZSA9IEV4ZWN1dGl2ZSgpCisgICAgICAgIHNl
bGYuZXhlY3V0aXZlID0gZXhlY3V0aXZlLkV4ZWN1dGl2ZSgpCiAgICAgICAgIHNlbGYuX2lyYyA9
IE5vbmUKLSAgICAgICAgc2VsZi5maWxlc3lzdGVtID0gRmlsZVN5c3RlbSgpCisgICAgICAgIHNl
bGYuZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0uRmlsZVN5c3RlbSgpCisgICAgICAgIHNlbGYud29y
a3NwYWNlID0gd29ya3NwYWNlLldvcmtzcGFjZShzZWxmLmZpbGVzeXN0ZW0sIHNlbGYuZXhlY3V0
aXZlKQogICAgICAgICBzZWxmLl9wb3J0ID0gTm9uZQotICAgICAgICBzZWxmLnVzZXIgPSBVc2Vy
KCkKKyAgICAgICAgc2VsZi51c2VyID0gdXNlci5Vc2VyKCkKICAgICAgICAgc2VsZi5fc2NtID0g
Tm9uZQogICAgICAgICBzZWxmLl9jaGVja291dCA9IE5vbmUKICAgICAgICAgc2VsZi5zdGF0dXNf
c2VydmVyID0gU3RhdHVzU2VydmVyKCkKICAgICAgICAgc2VsZi5wb3J0X2ZhY3RvcnkgPSBwb3J0
LmZhY3RvcnkKLSAgICAgICAgc2VsZi5wbGF0Zm9ybSA9IFBsYXRmb3JtSW5mbygpCisgICAgICAg
IHNlbGYucGxhdGZvcm0gPSBwbGF0Zm9ybWluZm8uUGxhdGZvcm1JbmZvKCkKIAogICAgIGRlZiBz
Y20oc2VsZik6CiAgICAgICAgICMgTGF6aWx5IGluaXRpYWxpemUgU0NNIHRvIG5vdCBlcnJvci1v
dXQgYmVmb3JlIGNvbW1hbmQgbGluZSBwYXJzaW5nIChvciB3aGVuIHJ1bm5pbmcgbm9uLXNjbSBj
b21tYW5kcykuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rv
b2wucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5kZXggZWI3
YzI0OGY3ZDY3M2ViY2ZlYzg2ZTdmNzQ3MmI3YmE0NzZhMjUyYS4uZDhjOGZmMGM4MDZlYTkxOWE3
YjBjMTM1NTcwYmViYThmNDk2OTAwNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL21vY2t0b29sLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2Nr
dG9vbC5weQpAQCAtNjg2LDYgKzY4NiwxNCBAQCBjbGFzcyBNb2NrUGxhdGZvcm1JbmZvKG9iamVj
dCk6CiAgICAgICAgIHJldHVybiAiTW9ja1BsYXRmb3JtIDEuMCIKIAogCitjbGFzcyBNb2NrV29y
a3NwYWNlKG9iamVjdCk6CisgICAgZGVmIGZpbmRfdW51c2VkX2ZpbGVuYW1lKHNlbGYsIGRpcmVj
dG9yeSwgbmFtZSwgZXh0ZW5zaW9uLCBzZWFyY2hfbGltaXQ9MTApOgorICAgICAgICByZXR1cm4g
IiVzLyVzLiVzIiAlIChkaXJlY3RvcnksIG5hbWUsIGV4dGVuc2lvbikKKworICAgIGRlZiBjcmVh
dGVfemlwKHNlbGYsIHppcF9wYXRoLCBzb3VyY2VfcGF0aCk6CisgICAgICAgIHBhc3MKKworCiBj
bGFzcyBNb2NrVG9vbChvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ19leGVj
dXRpdmU9RmFsc2UpOgpAQCAtNjk0LDYgKzcwMiw3IEBAIGNsYXNzIE1vY2tUb29sKG9iamVjdCk6
CiAgICAgICAgIHNlbGYuYnVpbGRib3QgPSBNb2NrQnVpbGRCb3QoKQogICAgICAgICBzZWxmLmV4
ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1sb2dfZXhlY3V0aXZlKQogICAgICAg
ICBzZWxmLmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCisgICAgICAgIHNlbGYud29ya3Nw
YWNlID0gTW9ja1dvcmtzcGFjZSgpCiAgICAgICAgIHNlbGYuX2lyYyA9IE5vbmUKICAgICAgICAg
c2VsZi51c2VyID0gTW9ja1VzZXIoKQogICAgICAgICBzZWxmLl9zY20gPSBNb2NrU0NNKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78503</attachid>
            <date>2011-01-11 01:23:18 -0800</date>
            <delta_ts>2011-01-11 02:37:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-52048-20110111012317.patch</filename>
            <type>text/plain</type>
            <size>30988</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0Yzll
NTA2MmE2ZGUyMTMxMWVlYTJkMDRlY2VmZTQ0YTQ5ZGEzODc0Li5hYjM5NTA5MmJmYjdkZDJjZDg1
NzI5ZjkwNzY1MGIyZThiNGQwMzcyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDEtMTEgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisK
KyAgICAgICAgY29tbWl0LXF1ZXVlIHNob3VsZCBrbm93IGhvdyB0byB1cGxvYWQgYXJjaGl2ZWQg
cmVzdWx0cyAoZm9yIHRlc3QgZmxha2VzIG9yIGdlbmVyYWwgZmFpbHVyZXMpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjA0OAorCisgICAgICAgIE5v
dyB0aGUgcXVldWUgd2lsbCBhbHdheXMgdXBsb2FkIHJlc3VsdHMuICBFaXRoZXIgdGhlIGVudGly
ZSB6aXAsIG9yIGp1c3QKKyAgICAgICAgdGhlIGRpZmZzLnR4dCBpbiB0aGUgY2FzZSBvZiB0ZXh0
IGZhaWx1cmVzLgorCisgICAgICAgIFRoaXMgc2hvdWxkIG1ha2UgdW5kZXJzdGFuZGluZyBmbGFr
ZXMgbXVjaCBlYXNpZXIsIGFuZCBwYXZlcyB0aGUgd2F5CisgICAgICAgIGZvciBoYXZpbmcgdGhl
IEVXUyBydW4gbGF5b3V0IHRlc3RzIChhbmQgdXBsb2FkIGZhaWx1cmVzKS4KKworICAgICAgICBJ
biBvcmRlciB0byB1cGxvYWQgLnppcCBmaWxlcyBJIGhhZCB0byB0ZWFjaCBidWd6aWxsYS5weSB0
byBhdXRvZGV0ZWN0CisgICAgICAgIG1pbWUgdHlwZXMgZnJvbSB0aGUgZmlsZW5hbWUuICBTaW5j
ZSBtaW1ldHlwZXMucHkgZG9lc24ndCBpbmNsdWRlIGEgbWFwcGluZworICAgICAgICBmb3IgLnBh
dGNoIGZpbGVzLCBJIGhhdmUgaXQgYWRkIG9uZSBiZWZvcmUgY2FsbGluZyBndWVzc190eXBlLgor
CisgICAgICAgIFdlIG1heSBmaW5kIHRoYXQgYWx3YXlzIHVwbG9hZGluZyB0aGUgd2hvbGUgemlw
IGluc3RlYWQgb2YganVzdCB0aGUgLWRpZmZzLnR4dAorICAgICAgICBmaWxlIGlzIHByZWZlcmFi
bGUsIGJ1dCBmb3Igbm93IEknbSBrZWVwaW5nIHRoZSBvbGQgYmVoYXZpb3IgYmVjYXVzZSBpdCBt
YWtlcworICAgICAgICBxdWlja2x5IHVuZGVyc3RhbmRpbmcgdGV4dCBmYWlsdXJlcyBlYXN5Lgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxh
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2Uu
cHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jr
c3BhY2VfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvY29tbWl0cXVldWV0YXNrLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRlcl91bml0dGVzdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHk6CisKIDIwMTEt
MDEtMTAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3NTQ2NC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQppbmRleCBkNjIx
MGQ1MmZhZDY2ZjYwNGY0NTgyZjg3ODZjNDBkZjhkMTk1MTMwLi4xN2E4NTE1ZDI4YTVmY2RlNTU4
ODQ3ZmI0NTNhMmFlZjYzNjkwZTEzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CkBAIC0zMCw2ICszMCw3IEBACiAj
CiAjIFdlYktpdCdzIFB5dGhvbiBtb2R1bGUgZm9yIGludGVyYWN0aW5nIHdpdGggQnVnemlsbGEK
IAoraW1wb3J0IG1pbWV0eXBlcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCByZQogaW1wb3J0IFN0
cmluZ0lPCkBAIC00NDEsNyArNDQyLDExIEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAgICAg
ICAgIHNlbGYuYnJvd3NlclsnZmxhZ190eXBlLTMnXSA9IChzZWxmLl9jb21taXRfcXVldWVfZmxh
ZyhtYXJrX2Zvcl9sYW5kaW5nLCBtYXJrX2Zvcl9jb21taXRfcXVldWUpLCkKIAogICAgICAgICBm
aWxlbmFtZSA9IGZpbGVuYW1lIG9yICIlcy5wYXRjaCIgJSB0aW1lc3RhbXAoKQotICAgICAgICBt
aW1ldHlwZSA9IG1pbWV0eXBlIG9yICJ0ZXh0L3BsYWluIgorICAgICAgICBpZiBub3QgbWltZXR5
cGU6CisgICAgICAgICAgICBtaW1ldHlwZXMuYWRkX3R5cGUoJ3RleHQvcGxhaW4nLCAnLnBhdGNo
JykgICMgTWFrZSBzdXJlIG1pbWV0eXBlcyBrbm93cyBhYm91dCAucGF0Y2gKKyAgICAgICAgICAg
IG1pbWV0eXBlLCBfID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUoZmlsZW5hbWUpCisgICAgICAgIGlm
IG5vdCBtaW1ldHlwZToKKyAgICAgICAgICAgIG1pbWV0eXBlID0gInRleHQvcGxhaW4iICAjIEJ1
Z3ppbGxhIG1pZ2h0IGF1dG8tZ3Vlc3MgZm9yIHVzIGFuZCB3ZSBtaWdodCBub3QgbmVlZCB0aGlz
PwogICAgICAgICBzZWxmLmJyb3dzZXIuYWRkX2ZpbGUoZmlsZV9vYmplY3QsIG1pbWV0eXBlLCBm
aWxlbmFtZSwgJ2RhdGEnKQogCiAgICAgZGVmIF9maWxlX29iamVjdF9mb3JfdXBsb2FkKHNlbGYs
IGZpbGVfb3Jfc3RyaW5nKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS93b3Jrc3BhY2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vd29ya3NwYWNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMjYwNTMxNTQ3ZDk2NTkzZWUyYmE2ZjU0
YTE3M2ZlMjAwMWU4MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlLnB5CkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0
IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjIEEgaG9tZSBmb3IgZmlsZSBsb2dpYyB3aGljaCBzaG91bGQgc2l0IGFib3ZlIEZp
bGVTeXN0ZW0sIGJ1dAorIyBiZWxvdyBtb3JlIGNvbXBsaWNhdGVkIG9iamVjdHMuCisKKworY2xh
c3MgV29ya3NwYWNlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVzeXN0ZW0s
IGV4ZWN1dGl2ZSk6CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtCisgICAg
ICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZSAgIyBGSVhNRTogUmVtb3ZlIGlmIGNyZWF0
ZV96aXAgaXMgbW92ZWQgdG8gcHl0aG9uLgorCisgICAgZGVmIGZpbmRfdW51c2VkX2ZpbGVuYW1l
KHNlbGYsIGRpcmVjdG9yeSwgbmFtZSwgZXh0ZW5zaW9uLCBzZWFyY2hfbGltaXQ9MTApOgorICAg
ICAgICBmb3IgY291bnQgaW4gcmFuZ2Uoc2VhcmNoX2xpbWl0KToKKyAgICAgICAgICAgIGlmIGNv
dW50OgorICAgICAgICAgICAgICAgIHRhcmdldF9uYW1lID0gIiVzLSVzLiVzIiAlIChuYW1lLCBj
b3VudCwgZXh0ZW5zaW9uKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0YXJn
ZXRfbmFtZSA9ICIlcy4lcyIgJSAobmFtZSwgZXh0ZW5zaW9uKQorICAgICAgICAgICAgdGFyZ2V0
X3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oZGlyZWN0b3J5LCB0YXJnZXRfbmFtZSkKKyAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyh0YXJnZXRfcGF0aCk6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldF9wYXRoCisgICAgICAgICMgSWYgd2UgY2FuJ3Qg
ZmluZCBhbiB1bnVzZWQgbmFtZSBpbiBzZWFyY2hfbGltaXQgdHJpZXMsIGp1c3QgZ2l2ZSB1cC4K
KyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBjcmVhdGVfemlwKHNlbGYsIHppcF9wYXRo
LCBzb3VyY2VfcGF0aCk6CisgICAgICAgICMgSXQncyBwb3NzaWJsZSB0byBjcmVhdGUgemlwcyB3
aXRoIFB5dGhvbjoKKyAgICAgICAgIyB6aXBfZmlsZSA9IFppcEZpbGUoemlwX3BhdGgsICd3JykK
KyAgICAgICAgIyBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhzb3VyY2VfcGF0aCk6
CisgICAgICAgICMgICAgIGZvciBwYXRoIGluIGZpbGVzOgorICAgICAgICAjICAgICAgICAgYWJz
b2x1dGVfcGF0aCA9IG9zLnBhdGguam9pbihyb290LCBwYXRoKQorICAgICAgICAjICAgICAgICAg
emlwX2ZpbGUud3JpdGUob3MucGF0aC5yZWxwYXRoKHBhdGgsIHNvdXJjZV9wYXRoKSkKKyAgICAg
ICAgIyBIb3dldmVyLCBnZXR0aW5nIHRoZSBwYXRocywgZW5jb2RpbmcgYW5kIGNvbXByZXNzaW9u
IGNvcnJlY3QgY291bGQgYmUgbm9uLXRyaXZpYWwuCisgICAgICAgICMgU28sIGZvciBub3cgd2Ug
ZGVwZW5kIG9uIHRoZSBlbnZpcm9ubWVudCBoYXZpbmcgInppcCIgaW5zdGFsbGVkIChsaWtlbHkg
ZmFpbHMgb24gV2luMzIpCisgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ3pp
cCcsIHppcF9wYXRoLCBzb3VyY2VfcGF0aF0pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV91bml0dGVzdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MzQ4ZTgzZjQxMjc4Mzg3MDVmOTZmMmYwYjA1MTdmYTJkOTgxYTE5Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV91bml0
dGVzdC5weQpAQCAtMCwwICsxLDUxIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0
CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1v
Y2tGaWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBp
bXBvcnQgT3V0cHV0Q2FwdHVyZQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLndvcmtzcGFj
ZSBpbXBvcnQgV29ya3NwYWNlCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1v
Y2tFeGVjdXRpdmUKKworCitjbGFzcyBXb3Jrc3BhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KworICAgIGRlZiB0ZXN0X2ZpbmRfdW51c2VkX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmaWxl
c3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oeworICAgICAgICAgICAgImRpci9mb28uanBnIjogIiIs
CisgICAgICAgICAgICAiZGlyL2Zvby0xLmpwZyI6ICIiLAorICAgICAgICB9KQorICAgICAgICB3
b3Jrc3BhY2UgPSBXb3Jrc3BhY2UoZmlsZXN5c3RlbSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh3b3Jrc3BhY2UuZmluZF91bnVzZWRfZmlsZW5hbWUoImJhciIsICJiYXIiLCAiYmFy
IiksICJiYXIvYmFyLmJhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29ya3NwYWNlLmZp
bmRfdW51c2VkX2ZpbGVuYW1lKCJkaXIiLCAiZm9vIiwgImpwZyIpLCAiZGlyL2Zvby0yLmpwZyIp
CisKKyAgICBkZWYgdGVzdF9jcmVhdGVfemlwKHNlbGYpOgorICAgICAgICB3b3Jrc3BhY2UgPSBX
b3Jrc3BhY2UoTm9uZSwgTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpKQorICAgICAgICBl
eHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBydW5fY29tbWFuZDogWyd6aXAnLCAnL3ppcC9wYXRoJywg
Jy9zb3VyY2UvcGF0aCddXG4iCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0
cyhzZWxmLCB3b3Jrc3BhY2UuY3JlYXRlX3ppcCwgWyIvemlwL3BhdGgiLCAiL3NvdXJjZS9wYXRo
Il0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5CmluZGV4IGY5OTI2N2E2MWM4
YTU5MDQ1NjUwZGMzZTlkYjcyOWI0MTIxY2RhYjcuLjNiZTI1NTYxZmQyYjFlODViNzYzMTM4YmEy
NzVhYTMxZWEzMTIwYjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvY29tbWl0cXVldWV0YXNrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvY29tbWl0cXVldWV0YXNrLnB5CkBAIC00Niw3ICs0NiwxMSBAQCBjbGFzcyBDb21taXRRdWV1
ZVRhc2tEZWxlZ2F0ZShvYmplY3QpOgogICAgIGRlZiBsYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1w
bGVtZW50IikKIAotICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0Y2gsIGZsYWt5
X3Rlc3RzKToKKyAgICBkZWYgYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZiwg
cGF0Y2gpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11
c3QgaW1wbGVtZW50IikKKworICAgICMgV2UgY291bGQgbWFrZSByZXN1bHRzX2FyY2hpdmUgb3B0
aW9uYWwsIGJ1dCBmb3Igbm93IGl0J3MgcmVxdWlyZWQuCisgICAgZGVmIHJlcG9ydF9mbGFreV90
ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfdGVzdHMsIHJlc3VsdHNfYXJjaGl2ZSk6CiAgICAgICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQog
CiAKQEAgLTE3MCw4ICsxNzQsOCBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0KToKICAg
ICAgICAgIkxhbmRlZCBwYXRjaCIsCiAgICAgICAgICJVbmFibGUgdG8gbGFuZCBwYXRjaCIpCiAK
LSAgICBkZWYgX3JlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBmbGFreV90ZXN0X3Jlc3VsdHMpOgot
ICAgICAgICBzZWxmLl9kZWxlZ2F0ZS5yZXBvcnRfZmxha3lfdGVzdHMoc2VsZi5fcGF0Y2gsIGZs
YWt5X3Rlc3RfcmVzdWx0cykKKyAgICBkZWYgX3JlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBmbGFr
eV90ZXN0X3Jlc3VsdHMsIHJlc3VsdHNfYXJjaGl2ZSk6CisgICAgICAgIHNlbGYuX2RlbGVnYXRl
LnJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLl9wYXRjaCwgZmxha3lfdGVzdF9yZXN1bHRzLCByZXN1
bHRzX2FyY2hpdmUpCiAKICAgICBkZWYgX3Rlc3RfcGF0Y2goc2VsZik6CiAgICAgICAgIGlmIHNl
bGYuX3BhdGNoLmlzX3JvbGxvdXQoKToKQEAgLTE3OSwxNCArMTgzLDE1IEBAIGNsYXNzIENvbW1p
dFF1ZXVlVGFzayhvYmplY3QpOgogICAgICAgICBpZiBzZWxmLl90ZXN0KCk6CiAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQogCi0gICAgICAgIGZpcnN0X2ZhaWxpbmdfcmVzdWx0cyA9IHNlbGYuX2Zh
aWxpbmdfcmVzdWx0c19mcm9tX2xhc3RfcnVuKCkKLSAgICAgICAgZmlyc3RfZmFpbGluZ190ZXN0
cyA9IFtyZXN1bHQuZmlsZW5hbWUgZm9yIHJlc3VsdCBpbiBmaXJzdF9mYWlsaW5nX3Jlc3VsdHNd
CisgICAgICAgIGZpcnN0X3Jlc3VsdHMgPSBzZWxmLl9mYWlsaW5nX3Jlc3VsdHNfZnJvbV9sYXN0
X3J1bigpCisgICAgICAgIGZpcnN0X2ZhaWxpbmdfdGVzdHMgPSBbcmVzdWx0LmZpbGVuYW1lIGZv
ciByZXN1bHQgaW4gZmlyc3RfcmVzdWx0c10KKyAgICAgICAgZmlyc3RfcmVzdWx0c19hcmNoaXZl
ID0gc2VsZi5fZGVsZWdhdGUuYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZi5f
cGF0Y2gpCiAgICAgICAgIGlmIHNlbGYuX3Rlc3QoKToKLSAgICAgICAgICAgIHNlbGYuX3JlcG9y
dF9mbGFreV90ZXN0cyhmaXJzdF9mYWlsaW5nX3Jlc3VsdHMpCisgICAgICAgICAgICBzZWxmLl9y
ZXBvcnRfZmxha3lfdGVzdHMoZmlyc3RfcmVzdWx0cywgZmlyc3RfcmVzdWx0c19hcmNoaXZlKQog
ICAgICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgICAgICBzZWNvbmRfZmFpbGluZ19yZXN1bHRz
ID0gc2VsZi5fZmFpbGluZ19yZXN1bHRzX2Zyb21fbGFzdF9ydW4oKQotICAgICAgICBzZWNvbmRf
ZmFpbGluZ190ZXN0cyA9IFtyZXN1bHQuZmlsZW5hbWUgZm9yIHJlc3VsdCBpbiBzZWNvbmRfZmFp
bGluZ19yZXN1bHRzXQorICAgICAgICBzZWNvbmRfcmVzdWx0cyA9IHNlbGYuX2ZhaWxpbmdfcmVz
dWx0c19mcm9tX2xhc3RfcnVuKCkKKyAgICAgICAgc2Vjb25kX2ZhaWxpbmdfdGVzdHMgPSBbcmVz
dWx0LmZpbGVuYW1lIGZvciByZXN1bHQgaW4gc2Vjb25kX3Jlc3VsdHNdCiAgICAgICAgIGlmIGZp
cnN0X2ZhaWxpbmdfdGVzdHMgIT0gc2Vjb25kX2ZhaWxpbmdfdGVzdHM6CiAgICAgICAgICAgICAj
IFdlIGNvdWxkIHJlcG9ydCBmbGFreSB0ZXN0cyBoZXJlLCBidXQgc2luY2UgcnVuLXdlYmtpdC10
ZXN0cwogICAgICAgICAgICAgIyBpcyBydW4gd2l0aCAtLWV4aXQtYWZ0ZXItTi1mYWlsdXJlcz0x
LCB3ZSB3b3VsZCBuZWVkIHRvCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CmluZGV4IGQ3MGMzMmI0NTlm
YTJkZTE5NzQ0ZTI3YzAyYTNhMjFkMDQ3YWFhYjIuLjI2MjMxYWU3Yjg0ZTNmODQzZGQ2NDFjMjFk
M2MzZjZjNWZiZjIxMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CkBAIC02NSw5ICs2NSwxNSBA
QCBjbGFzcyBNb2NrQ29tbWl0UXVldWUoQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUpOgogICAgIGRl
ZiBsYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYpOgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAg
ZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfcmVzdWx0cyk6CisgICAg
ZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfcmVzdWx0cywgcmVzdWx0
c19hcmNoaXZlKToKICAgICAgICAgZmxha3lfdGVzdHMgPSBbcmVzdWx0LmZpbGVuYW1lIGZvciBy
ZXN1bHQgaW4gZmxha3lfcmVzdWx0c10KLSAgICAgICAgbG9nKCJyZXBvcnRfZmxha3lfdGVzdHM6
IHBhdGNoPSclcycgZmxha3lfdGVzdHM9JyVzJyIgJSAocGF0Y2guaWQoKSwgZmxha3lfdGVzdHMp
KQorICAgICAgICBsb2coInJlcG9ydF9mbGFreV90ZXN0czogcGF0Y2g9JyVzJyBmbGFreV90ZXN0
cz0nJXMnIGFyY2hpdmU9JyVzJyIgJSAocGF0Y2guaWQoKSwgZmxha3lfdGVzdHMsIHJlc3VsdHNf
YXJjaGl2ZS5maWxlbmFtZSkpCisKKyAgICBkZWYgYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jl
c3VsdHMoc2VsZiwgcGF0Y2gpOgorICAgICAgICBsb2coImFyY2hpdmVfbGFzdF9sYXlvdXRfdGVz
dF9yZXN1bHRzOiBwYXRjaD0nJXMnIiAlIHBhdGNoLmlkKCkpCisgICAgICAgIGFyY2hpdmUgPSBN
b2NrKCkKKyAgICAgICAgYXJjaGl2ZS5maWxlbmFtZSA9ICJtb2NrLWFyY2hpdmUtJXMuemlwIiAl
IHBhdGNoLmlkKCkKKyAgICAgICAgcmV0dXJuIGFyY2hpdmUKIAogCiBjbGFzcyBDb21taXRRdWV1
ZVRhc2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE5NCw5ICsyMDAsMTAgQEAgcnVuX3dl
YmtpdF9wYXRjaDogWydidWlsZCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVp
bGQtc3R5bGU9Ym90aCddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdCdWlsdCBw
YXRjaCcgcGF0Y2g9JzE5NycKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAn
LS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1ub24taW50ZXJhY3RpdmUn
XQogY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgcGFzcyB0
ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHRlc3RzIGZhaWx1cmUnIHBhdGNoPScxOTcnCithcmNo
aXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzE5NycKIHJ1bl93ZWJraXRfcGF0
Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRl
c3QnLCAnLS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2Fn
ZT0nUGFzc2VkIHRlc3RzJyBwYXRjaD0nMTk3JwotcmVwb3J0X2ZsYWt5X3Rlc3RzOiBwYXRjaD0n
MTk3JyBmbGFreV90ZXN0cz0nW10nCityZXBvcnRfZmxha3lfdGVzdHM6IHBhdGNoPScxOTcnIGZs
YWt5X3Rlc3RzPSdbXScgYXJjaGl2ZT0nbW9jay1hcmNoaXZlLTE5Ny56aXAnCiBydW5fd2Via2l0
X3BhdGNoOiBbJ2xhbmQtYXR0YWNobWVudCcsICctLWZvcmNlLWNsZWFuJywgJy0taWdub3JlLWJ1
aWxkZXJzJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0LXF1
ZXVlJywgMTk3XQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nTGFuZGVkIHBhdGNo
JyBwYXRjaD0nMTk3JwogIiIiCkBAIC0yMjYsNiArMjMzLDcgQEAgcnVuX3dlYmtpdF9wYXRjaDog
WydidWlsZCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9Ym90
aCddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdCdWlsdCBwYXRjaCcgcGF0Y2g9
JzE5NycKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbics
ICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9m
YWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0
X2Vycm9yPSdNT0NLIHRlc3QgZmFpbHVyZScgcGF0Y2g9JzE5NycKK2FyY2hpdmVfbGFzdF9sYXlv
dXRfdGVzdF9yZXN1bHRzOiBwYXRjaD0nMTk3JwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1h
bmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1p
bnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2Vz
IG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlIGFnYWluJyBw
YXRjaD0nMTk3JwogIiIiCkBAIC0yNjMsNiArMjcxLDcgQEAgcnVuX3dlYmtpdF9wYXRjaDogWydi
dWlsZCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9Ym90aCdd
CiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdCdWlsdCBwYXRjaCcgcGF0Y2g9JzE5
NycKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICct
LW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9mYWls
ZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0X2Vy
cm9yPSdNT0NLIHRlc3QgZmFpbHVyZScgcGF0Y2g9JzE5NycKK2FyY2hpdmVfbGFzdF9sYXlvdXRf
dGVzdF9yZXN1bHRzOiBwYXRjaD0nMTk3JwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQt
dGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRl
cmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5v
dCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlIGFnYWluJyBwYXRj
aD0nMTk3JwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLWZvcmNlLWNs
ZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQnLCAnLS10ZXN0JywgJy0tbm9uLWludGVyYWN0
aXZlJ10KQEAgLTI5MCw2ICsyOTksNyBAQCBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkJywgJy0t
bm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZC1zdHlsZT1ib3RoJ10KIGNvbW1hbmRf
cGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0J1aWx0IHBhdGNoJyBwYXRjaD0nMTk3JwogcnVuX3dl
YmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRl
JywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVy
ZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sg
dGVzdCBmYWlsdXJlJyBwYXRjaD0nMTk3JworYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3Vs
dHM6IHBhdGNoPScxOTcnCiBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0t
bm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10K
IGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90IHBhc3MgdGVz
dHMnIHNjcmlwdF9lcnJvcj0nTU9DSyB0ZXN0IGZhaWx1cmUgYWdhaW4nIHBhdGNoPScxOTcnCiBy
dW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1u
by11cGRhdGUnLCAnLS1idWlsZCcsICctLXRlc3QnLCAnLS1ub24taW50ZXJhY3RpdmUnXQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXIu
cHkKaW5kZXggOTFmY2I4NTllMWVjYjQyMmM3NTA2MWM4ZmQ1OGEyNWRkMmIxZjU1NC4uNjlhNzRk
MWRlZmQ3NzA4NTE1ZmEwODU2YzNhNmQ2OWEzYjlmYTk1NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRlci5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyLnB5CkBAIC0xMzEsMTMg
KzEzMSwxMCBAQCBJZiB5b3Ugd291bGQgbGlrZSB0byB0cmFjayB0aGlzIHRlc3QgZml4IHdpdGgg
YW5vdGhlciBidWcsIHBsZWFzZSBjbG9zZSB0aGlzIGJ1ZwogICAgICAgICBmbGFrZV9tZXNzYWdl
ID0gIlRoZSAlcyBqdXN0IHNhdyAlcyBmbGFrZSAoJXMpIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNo
bWVudCAlcyBvbiBidWcgJXMuIiAlIChzZWxmLl9ib3RfbmFtZSwgZmxha3lfcmVzdWx0LmZpbGVu
YW1lLCAiLCAiLmpvaW4oZmFpbHVyZV9tZXNzYWdlcyksIHBhdGNoLmlkKCksIHBhdGNoLmJ1Z19p
ZCgpKQogICAgICAgICByZXR1cm4gIiVzXG4lcyIgJSAoZmxha2VfbWVzc2FnZSwgc2VsZi5fYm90
X2luZm9ybWF0aW9uKCkpCiAKLSAgICBkZWYgX3Jlc3VsdHNfZGlmZl9wYXRoX2Zvcl90ZXN0KHNl
bGYsIGZsYWt5X3Rlc3QpOgorICAgIGRlZiBfcmVzdWx0c19kaWZmX3BhdGhfZm9yX3Rlc3Qoc2Vs
ZiwgdGVzdF9wYXRoKToKICAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBhIGJpZyBoYWNrLiAgV2Ug
c2hvdWxkIGdldCB0aGlzIHBhdGggZnJvbSByZXN1bHRzLmpzb24KICAgICAgICAgIyBleGNlcHQg
dGhhdCBvbGQtcnVuLXdlYmtpdC10ZXN0cyBkb2Vzbid0IHByb2R1Y2UgYSByZXN1bHRzLmpzb24K
ICAgICAgICAgIyBzbyB3ZSBqdXN0IGd1ZXNzIGF0IHRoZSBmaWxlIHBhdGguCi0gICAgICAgIHJl
c3VsdHNfcGF0aCA9IHNlbGYuX3Rvb2wucG9ydCgpLmxheW91dF90ZXN0c19yZXN1bHRzX3BhdGgo
KQotICAgICAgICByZXN1bHRzX2RpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShyZXN1bHRzX3Bh
dGgpCi0gICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihyZXN1bHRzX2RpcmVjdG9yeSwg
Zmxha3lfdGVzdCkKICAgICAgICAgKHRlc3RfcGF0aF9yb290LCBfKSA9IG9zLnBhdGguc3BsaXRl
eHQodGVzdF9wYXRoKQogICAgICAgICByZXR1cm4gIiVzLWRpZmZzLnR4dCIgJSB0ZXN0X3BhdGhf
cm9vdAogCkBAIC0xNTMsNyArMTUwLDIzIEBAIElmIHlvdSB3b3VsZCBsaWtlIHRvIHRyYWNrIHRo
aXMgdGVzdCBmaXggd2l0aCBhbm90aGVyIGJ1ZywgcGxlYXNlIGNsb3NlIHRoaXMgYnVnCiAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl90b29sLmJ1Z3MucG9zdF9jb21tZW50X3RvX2J1
ZyhidWcuaWQoKSwgbGF0ZXN0X2ZsYWtlX21lc3NhZ2UpCiAKLSAgICBkZWYgcmVwb3J0X2ZsYWt5
X3Rlc3RzKHNlbGYsIGZsYWt5X3Rlc3RfcmVzdWx0cywgcGF0Y2gpOgorICAgIGRlZiBfYXR0YWNo
X2ZhaWx1cmVfZGlmZihzZWxmLCBmbGFrZV9idWdfaWQsIGZsYWt5X3Rlc3QsIHJlc3VsdHNfYXJj
aGl2ZSk6CisgICAgICAgIHJlc3VsdHNfZGlmZl9wYXRoID0gc2VsZi5fcmVzdWx0c19kaWZmX3Bh
dGhfZm9yX3Rlc3QoZmxha3lfdGVzdCkKKyAgICAgICAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhh
dCB0aGUgcGF0aCBtYWtlcyBzZW5zZS4KKyAgICAgICAgIyBTaW5jZSB3ZSdyZSBub3QgYWN0dWFs
bHkgZ2V0dGluZyB0aGlzIHBhdGggZnJvbSB0aGUgcmVzdWx0cy5odG1sCisgICAgICAgICMgdGhl
cmUgaXMgYSBjaGFuY2UgaXQncyB3cm9uZy4KKyAgICAgICAgYm90X2lkID0gc2VsZi5fdG9vbC5z
dGF0dXNfc2VydmVyLmJvdF9pZCBvciAiYm90IgorICAgICAgICBpZiByZXN1bHRzX2RpZmZfcGF0
aCBpbiByZXN1bHRzX2FyY2hpdmUubmFtZWxpc3QoKToKKyAgICAgICAgICAgIHJlc3VsdHNfZGlm
ZiA9IHJlc3VsdHNfYXJjaGl2ZS5yZWFkKHJlc3VsdHNfZGlmZl9wYXRoKQorICAgICAgICAgICAg
ZGVzY3JpcHRpb24gPSAiRmFpbHVyZSBkaWZmIGZyb20gJXMiICUgYm90X2lkCisgICAgICAgICAg
ICBzZWxmLl90b29sLmJ1Z3MuYWRkX2F0dGFjaG1lbnRfdG9fYnVnKGZsYWtlX2J1Z19pZCwgcmVz
dWx0c19kaWZmLCBkZXNjcmlwdGlvbiwgZmlsZW5hbWU9ImZhaWx1cmUuZGlmZiIpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBfbG9nLndhcm4oIiVzIGRvZXMgbm90IGV4aXN0IGluIHJlc3Vs
dHMgYXJjaGl2ZSwgdXBsb2FkaW5nIGVudGlyZSBhcmNoaXZlLiIgJSByZXN1bHRzX2RpZmZfcGF0
aCkKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gIkFyY2hpdmUgb2YgbGF5b3V0LXRlc3QtcmVz
dWx0cyBmcm9tICVzIiAlIGJvdF9pZAorICAgICAgICAgICAgIyByZXN1bHRzX2FyY2hpdmUgaXMg
YSBaaXBGaWxlIG9iamVjdCwgZ3JhYiB0aGUgRmlsZSBvYmplY3QgKC5mcCkgdG8gcGFzcyB0byBN
ZWNoYW5pemUgZm9yIHVwbG9hZGluZy4KKyAgICAgICAgICAgIHNlbGYuX3Rvb2wuYnVncy5hZGRf
YXR0YWNobWVudF90b19idWcoZmxha2VfYnVnX2lkLCByZXN1bHRzX2FyY2hpdmUuZnAsIGRlc2Ny
aXB0aW9uLCBmaWxlbmFtZT0ibGF5b3V0LXRlc3QtcmVzdWx0cy56aXAiKQorCisgICAgZGVmIHJl
cG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfdGVzdF9yZXN1bHRzLCByZXN1bHRz
X2FyY2hpdmUpOgogICAgICAgICBtZXNzYWdlID0gIlRoZSAlcyBlbmNvdW50ZXJlZCB0aGUgZm9s
bG93aW5nIGZsYWt5IHRlc3RzIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNobWVudCAlczpcblxuIiAl
IChzZWxmLl9ib3RfbmFtZSwgcGF0Y2guaWQoKSkKICAgICAgICAgZm9yIGZsYWt5X3Jlc3VsdCBp
biBmbGFreV90ZXN0X3Jlc3VsdHM6CiAgICAgICAgICAgICBmbGFreV90ZXN0ID0gZmxha3lfcmVz
dWx0LmZpbGVuYW1lCkBAIC0xNjUsMjAgKzE3OCwxMiBAQCBJZiB5b3Ugd291bGQgbGlrZSB0byB0
cmFjayB0aGlzIHRlc3QgZml4IHdpdGggYW5vdGhlciBidWcsIHBsZWFzZSBjbG9zZSB0aGlzIGJ1
ZwogICAgICAgICAgICAgICAgIGZsYWtlX2J1Z19pZCA9IHNlbGYuX2NyZWF0ZV9idWdfZm9yX2Zs
YWt5X3Rlc3QoZmxha3lfdGVzdCwgYXV0aG9yX2VtYWlscywgbGF0ZXN0X2ZsYWtlX21lc3NhZ2Up
CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJ1ZyA9IHNlbGYuX2ZvbGxvd19k
dXBsaWNhdGVfY2hhaW4oYnVnKQorICAgICAgICAgICAgICAgICMgRklYTUU6IElkZWFsbHkgd2Un
ZCBvbmx5IG1ha2Ugb25lIGNvbW1lbnQgcGVyIGZsYWtlLCBub3QgdHdvLiAgQnV0IHRoYXQncyBu
b3QgcG9zc2libGUKKyAgICAgICAgICAgICAgICAjIGluIGFsbCBjYXNlcyAoZS5nLiB3aGVuIHJl
b3BlbmluZyksIHNvIGZvciBub3cgZmlsZSBhdHRhY2htZW50IGFuZCBjb21tZW50IGFyZSBzZXBh
cmF0ZS4KICAgICAgICAgICAgICAgICBzZWxmLl91cGRhdGVfYnVnX2Zvcl9mbGFreV90ZXN0KGJ1
ZywgbGF0ZXN0X2ZsYWtlX21lc3NhZ2UpCiAgICAgICAgICAgICAgICAgZmxha2VfYnVnX2lkID0g
YnVnLmlkKCkKLSAgICAgICAgICAgICMgRklYTUU6IElkZWFsbHkgd2UnZCBvbmx5IG1ha2Ugb25l
IGNvbW1lbnQgcGVyIGZsYWtlLCBub3QgdHdvLiAgQnV0IHRoYXQncyBub3QgcG9zc2libGUKLSAg
ICAgICAgICAgICMgaW4gYWxsIGNhc2VzIChlLmcuIHdoZW4gcmVvcGVuaW5nKSwgc28gZm9yIG5v
dyB3ZSBkbyB0aGUgYXR0YWNobWVudCBpbiBhIHNlY29uZCBzdGVwLgotICAgICAgICAgICAgcmVz
dWx0c19kaWZmX3BhdGggPSBzZWxmLl9yZXN1bHRzX2RpZmZfcGF0aF9mb3JfdGVzdChmbGFreV90
ZXN0KQotICAgICAgICAgICAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcGF0aCBtYWtl
cyBzZW5zZS4KLSAgICAgICAgICAgICMgU2luY2Ugd2UncmUgbm90IGFjdHVhbGx5IGdldHRpbmcg
dGhpcyBwYXRoIGZyb20gdGhlIHJlc3VsdHMuaHRtbAotICAgICAgICAgICAgIyB0aGVyZSBpcyBh
IGhpZ2ggcHJvYmFpbGl0eSBpdCdzIHRvdGFsbHkgd3JvbmcuCi0gICAgICAgICAgICBpZiBzZWxm
Ll90b29sLmZpbGVzeXN0ZW0uZXhpc3RzKHJlc3VsdHNfZGlmZl9wYXRoKToKLSAgICAgICAgICAg
ICAgICByZXN1bHRzX2RpZmYgPSBzZWxmLl90b29sLmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmls
ZShyZXN1bHRzX2RpZmZfcGF0aCkKLSAgICAgICAgICAgICAgICBib3RfaWQgPSBzZWxmLl90b29s
LnN0YXR1c19zZXJ2ZXIuYm90X2lkIG9yICJib3QiCi0gICAgICAgICAgICAgICAgc2VsZi5fdG9v
bC5idWdzLmFkZF9hdHRhY2htZW50X3RvX2J1ZyhmbGFrZV9idWdfaWQsIHJlc3VsdHNfZGlmZiwg
IkZhaWx1cmUgZGlmZiBmcm9tICVzIiAlIGJvdF9pZCwgZmlsZW5hbWU9ImZhaWx1cmUuZGlmZiIp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoIiVzIGRvZXMg
bm90IGV4aXN0IGFzIGV4cGVjdGVkLCBub3QgdXBsb2FkaW5nLiIgJSByZXN1bHRzX2RpZmZfcGF0
aCkKKworICAgICAgICAgICAgc2VsZi5fYXR0YWNoX2ZhaWx1cmVfZGlmZihmbGFrZV9idWdfaWQs
IGZsYWt5X3Rlc3QsIHJlc3VsdHNfYXJjaGl2ZSkKICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiVz
IGJ1ZyAlcyVzXG4iICUgKGZsYWt5X3Rlc3QsIGZsYWtlX2J1Z19pZCwgc2VsZi5fb3B0aW9uYWxf
YXV0aG9yX3N0cmluZyhhdXRob3JfZW1haWxzKSkKIAogICAgICAgICBtZXNzYWdlICs9ICJUaGUg
JXMgaXMgY29udGludWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guIiAlIHNlbGYuX2JvdF9uYW1l
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJl
cG9ydGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9mbGFr
eXRlc3RyZXBvcnRlcl91bml0dGVzdC5weQppbmRleCA2MzFmOGQxZTM0OTljNmQzMDQ5MTdmNDA5
OWQzZjYyN2VhZTYzZTRmLi42NjM1ZTYwY2UyZjRmZjBlODNlYzIwNGYyOGQxZGZhYjlkNzQwMDVm
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJl
cG9ydGVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
Zmxha3l0ZXN0cmVwb3J0ZXJfdW5pdHRlc3QucHkKQEAgLTMzLDYgKzMzLDcgQEAgZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0K
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRD
YXB0dXJlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQg
dGVzdF9yZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBp
bXBvcnQgdGVzdF9mYWlsdXJlcworZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0
IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZmxha3l0ZXN0cmVwb3J0ZXIgaW1wb3J0IEZs
YWt5VGVzdFJlcG9ydGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tU
b29sLCBNb2NrU3RhdHVzU2VydmVyCiAKQEAgLTE0MCw3ICsxNDEsMTUgQEAgVGhlIGR1bW15LXF1
ZXVlIGlzIGNvbnRpbnVpbmcgdG8gcHJvY2VzcyB5b3VyIHBhdGNoLgogCiAiIiIKICAgICAgICAg
dGVzdF9yZXN1bHRzID0gW3NlbGYuX21vY2tfdGVzdF9yZXN1bHQoJ2Zvby9iYXIuaHRtbCcpXQot
ICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcmVwb3J0ZXIucmVw
b3J0X2ZsYWt5X3Rlc3RzLCBbdGVzdF9yZXN1bHRzLCBwYXRjaF0sIGV4cGVjdGVkX3N0ZGVycj1l
eHBlY3RlZF9zdGRlcnIpCisKKyAgICAgICAgY2xhc3MgTW9ja1ppcEZpbGUob2JqZWN0KToKKyAg
ICAgICAgICAgIGRlZiByZWFkKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIHJldHVybiAi
IgorCisgICAgICAgICAgICBkZWYgbmFtZWxpc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0
dXJuIFsnZm9vL2Jhci1kaWZmcy50eHQnXQorCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3Nl
cnRfb3V0cHV0cyhzZWxmLCByZXBvcnRlci5yZXBvcnRfZmxha3lfdGVzdHMsIFtwYXRjaCwgdGVz
dF9yZXN1bHRzLCBNb2NrWmlwRmlsZSgpXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVy
cikKIAogICAgIGRlZiB0ZXN0X29wdGlvbmFsX2F1dGhvcl9zdHJpbmcoc2VsZik6CiAgICAgICAg
IHJlcG9ydGVyID0gRmxha3lUZXN0UmVwb3J0ZXIoTW9ja1Rvb2woKSwgJ2R1bW15LXF1ZXVlJykK
QEAgLTE1MCw2ICsxNTksNiBAQCBUaGUgZHVtbXktcXVldWUgaXMgY29udGludWluZyB0byBwcm9j
ZXNzIHlvdXIgcGF0Y2guCiAKICAgICBkZWYgdGVzdF9yZXN1bHRzX2RpZmZfcGF0aF9mb3JfdGVz
dChzZWxmKToKICAgICAgICAgcmVwb3J0ZXIgPSBGbGFreVRlc3RSZXBvcnRlcihNb2NrVG9vbCgp
LCAnZHVtbXktcXVldWUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydGVyLl9yZXN1
bHRzX2RpZmZfcGF0aF9mb3JfdGVzdCgidGVzdC5odG1sIiksICIvbW9jay90ZXN0LWRpZmZzLnR4
dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0ZXIuX3Jlc3VsdHNfZGlmZl9wYXRo
X2Zvcl90ZXN0KCJ0ZXN0Lmh0bWwiKSwgInRlc3QtZGlmZnMudHh0IikKIAogICAgICMgcmVwb3J0
X2ZsYWt5X3Rlc3RzIGlzIGFsc28gdGVzdGVkIGJ5IHF1ZXVlc191bml0dGVzdApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKaW5kZXggNTYyODU0MzMy
MTk2YjQ5YTJiZWU2MmYzYzVjYzBiNmZiOWNjNGNmNS4uNjJhODA5NjM0MzhmOGM0MTA4MjU1YzMw
MTM5M2I3YzJlZDg5M2MzOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3F1ZXVlcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcXVldWVzLnB5CkBAIC0zMDksMTIgKzMwOSwyOSBAQCBjbGFzcyBDb21taXRRdWV1ZShB
YnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlciwgQ29tbWl0UXVldWVU
YXNrRAogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgcmV0dXJuIExheW91dFRlc3RS
ZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcocmVzdWx0c19odG1sKQogCisgICAgZGVmIF9yZXN1
bHRzX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgcmVzdWx0c19wYXRoID0gc2VsZi5fdG9vbC5w
b3J0KCkubGF5b3V0X3Rlc3RzX3Jlc3VsdHNfcGF0aCgpCisgICAgICAgICMgRklYTUU6IFRoaXMg
aXMgd3JvbmcgaW4gdHdvIHdheXM6CisgICAgICAgICMgMS4gSXQgYXNzdW1lcyB0aGF0IHJlc3Vs
dHMuaHRtbCBpcyBhdCB0aGUgdG9wIGxldmVsIG9mIHRoZSByZXN1bHRzIHRyZWUuCisgICAgICAg
ICMgMi4gVGhpcyB1c2VzIHRoZSAib2xkIiBwb3J0cy5weSBpbmZyYXN0cnVjdHVyZSBpbnN0ZWFk
IG9mIHRoZSBuZXcgbGF5b3V0X3Rlc3RzL3BvcnQKKyAgICAgICAgIyB3aGljaCB3aWxsIG5vdCBz
dXBwb3J0IENocm9taXVtLiAgSG93ZXZlciB0aGUgbmV3IGFyY2ggZG9lc24ndCB3b3JrIHdpdGgg
b2xkLXJ1bi13ZWJraXQtdGVzdHMKKyAgICAgICAgIyBzbyB3ZSBoYXZlIHRvIHVzZSB0aGlzIGZv
ciBub3cuCisgICAgICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUocmVzdWx0c19wYXRoKQorCisg
ICAgZGVmIGFyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYsIHBhdGNoKToKKyAg
ICAgICAgcmVzdWx0c19kaXJlY3RvcnkgPSBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSgpCisgICAg
ICAgIHJlc3VsdHNfbmFtZSwgXyA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShy
ZXN1bHRzX2RpcmVjdG9yeSkpCisgICAgICAgICMgTm90ZTogV2UgbmFtZSB0aGUgemlwIHdpdGgg
dGhlIGJ1Z19pZCBpbnN0ZWFkIG9mIHBhdGNoX2lkIHRvIG1hdGNoIHdvcmtfaXRlbV9sb2dfcGF0
aCgpLgorICAgICAgICB6aXBfcGF0aCA9IHNlbGYuX3Rvb2wud29ya3NwYWNlLmZpbmRfdW51c2Vk
X2ZpbGVuYW1lKHNlbGYuX2xvZ19kaXJlY3RvcnkoKSwgIiVzLSVzIiAlIChwYXRjaC5idWdfaWQo
KSwgcmVzdWx0c19uYW1lKSwgInppcCIpCisgICAgICAgIHNlbGYuX3Rvb2wud29ya3NwYWNlLmNy
ZWF0ZV96aXAoemlwX3BhdGgsIHJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICByZXR1cm4gemlw
X3BhdGgKKwogICAgIGRlZiByZWZldGNoX3BhdGNoKHNlbGYsIHBhdGNoKToKICAgICAgICAgcmV0
dXJuIHNlbGYuX3Rvb2wuYnVncy5mZXRjaF9hdHRhY2htZW50KHBhdGNoLmlkKCkpCiAKLSAgICBk
ZWYgcmVwb3J0X2ZsYWt5X3Rlc3RzKHNlbGYsIHBhdGNoLCBmbGFreV90ZXN0X3Jlc3VsdHMpOgor
ICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3RfcmVzdWx0
cywgcmVzdWx0c19hcmNoaXZlPU5vbmUpOgogICAgICAgICByZXBvcnRlciA9IEZsYWt5VGVzdFJl
cG9ydGVyKHNlbGYuX3Rvb2wsIHNlbGYubmFtZSkKLSAgICAgICAgcmVwb3J0ZXIucmVwb3J0X2Zs
YWt5X3Rlc3RzKGZsYWt5X3Rlc3RfcmVzdWx0cywgcGF0Y2gpCisgICAgICAgIHJlcG9ydGVyLnJl
cG9ydF9mbGFreV90ZXN0cyhwYXRjaCwgZmxha3lfdGVzdF9yZXN1bHRzLCByZXN1bHRzX2FyY2hp
dmUpCiAKICAgICAjIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlciBtZXRob2RzCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0
LnB5CmluZGV4IDM0YTZhNjRkODM4MDhkZDJlYzkwNWFhNDY1ZGMyMDliYWViOWU4MDIuLjhmNWM5
ZTYyYzM2M2U2NTQ4ZDAxYTAzOTRkM2ExNTdhYjNhNzIxNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQpAQCAt
MjcsOSArMjcsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IG9zCitpbXBvcnQgU3RyaW5n
SU8KIAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBDaGVja291dE5l
ZWRzVXBkYXRlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEF0dGFj
aG1lbnQKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0
IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVy
ZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0
X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmFpbHVyZXMKQEAgLTM0MiwxMiArMzQ0LDE0IEBA
IFRoZSBjb21taXQtcXVldWUganVzdCBzYXcgZm9vL2Jhci5odG1sIGZsYWtlIChUZXh0IGRpZmYg
bWlzbWF0Y2gpIHdoaWxlIHByb2Nlc3NpCiBQb3J0OiBNb2NrUG9ydCAgUGxhdGZvcm06IE1vY2tQ
bGF0Zm9ybSAxLjAKIC0tLSBFbmQgY29tbWVudCAtLS0KIAorTU9DSyBhZGRfYXR0YWNobWVudF90
b19idWc6IGJ1Z19pZD03NiwgZGVzY3JpcHRpb249RmFpbHVyZSBkaWZmIGZyb20gYm90IGZpbGVu
YW1lPWZhaWx1cmUuZGlmZgogTU9DSyBidWcgY29tbWVudDogYnVnX2lkPTc2LCBjYz1Ob25lCiAt
LS0gQmVnaW4gY29tbWVudCAtLS0KIFRoZSBjb21taXQtcXVldWUganVzdCBzYXcgYmFyL2Jhei5o
dG1sIGZsYWtlIChUZXh0IGRpZmYgbWlzbWF0Y2gpIHdoaWxlIHByb2Nlc3NpbmcgYXR0YWNobWVu
dCAxOTcgb24gYnVnIDQyLgogUG9ydDogTW9ja1BvcnQgIFBsYXRmb3JtOiBNb2NrUGxhdGZvcm0g
MS4wCiAtLS0gRW5kIGNvbW1lbnQgLS0tCiAKK01PQ0sgYWRkX2F0dGFjaG1lbnRfdG9fYnVnOiBi
dWdfaWQ9NzYsIGRlc2NyaXB0aW9uPUFyY2hpdmUgb2YgbGF5b3V0LXRlc3QtcmVzdWx0cyBmcm9t
IGJvdCBmaWxlbmFtZT1sYXlvdXQtdGVzdC1yZXN1bHRzLnppcAogTU9DSyBidWcgY29tbWVudDog
YnVnX2lkPTQyLCBjYz1Ob25lCiAtLS0gQmVnaW4gY29tbWVudCAtLS0KIFRoZSBjb21taXQtcXVl
dWUgZW5jb3VudGVyZWQgdGhlIGZvbGxvd2luZyBmbGFreSB0ZXN0cyB3aGlsZSBwcm9jZXNzaW5n
IGF0dGFjaG1lbnQgMTk3OgpAQCAtMzYwLDcgKzM2NCwxOSBAQCBUaGUgY29tbWl0LXF1ZXVlIGlz
IGNvbnRpbnVpbmcgdG8gcHJvY2VzcyB5b3VyIHBhdGNoLgogIiIiCiAgICAgICAgIHRlc3RfbmFt
ZXMgPSBbImZvby9iYXIuaHRtbCIsICJiYXIvYmF6Lmh0bWwiXQogICAgICAgICB0ZXN0X3Jlc3Vs
dHMgPSBbc2VsZi5fbW9ja190ZXN0X3Jlc3VsdChuYW1lKSBmb3IgbmFtZSBpbiB0ZXN0X25hbWVz
XQotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcXVldWUucmVw
b3J0X2ZsYWt5X3Rlc3RzLCBbUXVldWVzVGVzdC5tb2NrX3dvcmtfaXRlbSwgdGVzdF9yZXN1bHRz
XSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKworICAgICAgICBjbGFzcyBNb2Nr
WmlwRmlsZShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAg
ICAgICAgICAgIHNlbGYuZnAgPSBTdHJpbmdJTygpCisKKyAgICAgICAgICAgIGRlZiByZWFkKHNl
bGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIHJldHVybiAiIgorCisgICAgICAgICAgICBkZWYg
bmFtZWxpc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGludGVudGlvbmFsbHkg
bWlzc2luZyBvbmUgZGlmZnMudHh0IHRvIGV4ZXJjaXNlIHRoZSAidXBsb2FkIHRoZSB3aG9sZSB6
aXAiIGNvZGVwYXRoLgorICAgICAgICAgICAgICAgIHJldHVybiBbJ2Zvby9iYXItZGlmZnMudHh0
J10KKworICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcXVldWUu
cmVwb3J0X2ZsYWt5X3Rlc3RzLCBbUXVldWVzVGVzdC5tb2NrX3dvcmtfaXRlbSwgdGVzdF9yZXN1
bHRzLCBNb2NrWmlwRmlsZSgpXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKIAog
ICAgIGRlZiB0ZXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHF1ZXVlID0g
Q29tbWl0UXVldWUoKQpAQCAtMzcwLDYgKzM4NiwxMiBAQCBUaGUgY29tbWl0LXF1ZXVlIGlzIGNv
bnRpbnVpbmcgdG8gcHJvY2VzcyB5b3VyIHBhdGNoLgogICAgICAgICBxdWV1ZS5fcmVhZF9maWxl
X2NvbnRlbnRzID0gbGFtYmRhIHBhdGg6ICIiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHF1
ZXVlLmxheW91dF90ZXN0X3Jlc3VsdHMoKSwgTm9uZSkKIAorICAgIGRlZiB0ZXN0X2FyY2hpdmVf
bGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYpOgorICAgICAgICBxdWV1ZSA9IENvbW1pdFF1
ZXVlKCkKKyAgICAgICAgcXVldWUuYmluZF90b190b29sKE1vY2tUb29sKCkpCisgICAgICAgIHBh
dGNoID0gcXVldWUuX3Rvb2wuYnVncy5mZXRjaF9hdHRhY2htZW50KDEyOCkKKyAgICAgICAgcXVl
dWUuYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMocGF0Y2gpCisKIAogY2xhc3MgU3R5
bGVRdWV1ZVRlc3QoUXVldWVzVGVzdCk6CiAgICAgZGVmIHRlc3Rfc3R5bGVfcXVldWUoc2VsZik6
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5CmluZGV4IDAwMDZlODc1ODRmMGJhOTEzYjY4
ZDY5ODA5MDE0MTY1YWY1OWMyNGQuLmNhZDVhMmE1YTMxYjc4YWJkZmJlZTUzOTAwYTUxNWVjMjU5
Yzc1YWEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5CkBAIC00MCwxMCArNDAsNyBA
QCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5uZXQuaXJjLmlyY3Byb3h5IGltcG9ydCBJUkNQcm94eQogZnJvbSB3ZWJraXRw
eS5jb21tb24ubmV0LnN0YXR1c3NlcnZlciBpbXBvcnQgU3RhdHVzU2VydmVyCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKLWZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0ucGxhdGZvcm1pbmZvIGltcG9ydCBQbGF0Zm9ybUluZm8KLWZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyIGltcG9ydCBVc2VyCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZSwgZmlsZXN5c3RlbSwgcGxhdGZvcm1pbmZvLCB1
c2VyLCB3b3Jrc3BhY2UKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBm
cm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgTXVsdGlDb21tYW5kVG9v
bAogaW1wb3J0IHdlYmtpdHB5LnRvb2wuY29tbWFuZHMgYXMgY29tbWFuZHMKQEAgLTcwLDE2ICs2
NywxNyBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29sKToKICAgICAgICAgIyBt
YW51YWwgZ2V0dGVyIGZ1bmN0aW9ucyAoZS5nLiBzY20oKSkuCiAgICAgICAgIHNlbGYuYnVncyA9
IEJ1Z3ppbGxhKCkKICAgICAgICAgc2VsZi5idWlsZGJvdCA9IEJ1aWxkQm90KCkKLSAgICAgICAg
c2VsZi5leGVjdXRpdmUgPSBFeGVjdXRpdmUoKQorICAgICAgICBzZWxmLmV4ZWN1dGl2ZSA9IGV4
ZWN1dGl2ZS5FeGVjdXRpdmUoKQogICAgICAgICBzZWxmLl9pcmMgPSBOb25lCi0gICAgICAgIHNl
bGYuZmlsZXN5c3RlbSA9IEZpbGVTeXN0ZW0oKQorICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBm
aWxlc3lzdGVtLkZpbGVTeXN0ZW0oKQorICAgICAgICBzZWxmLndvcmtzcGFjZSA9IHdvcmtzcGFj
ZS5Xb3Jrc3BhY2Uoc2VsZi5maWxlc3lzdGVtLCBzZWxmLmV4ZWN1dGl2ZSkKICAgICAgICAgc2Vs
Zi5fcG9ydCA9IE5vbmUKLSAgICAgICAgc2VsZi51c2VyID0gVXNlcigpCisgICAgICAgIHNlbGYu
dXNlciA9IHVzZXIuVXNlcigpCiAgICAgICAgIHNlbGYuX3NjbSA9IE5vbmUKICAgICAgICAgc2Vs
Zi5fY2hlY2tvdXQgPSBOb25lCiAgICAgICAgIHNlbGYuc3RhdHVzX3NlcnZlciA9IFN0YXR1c1Nl
cnZlcigpCiAgICAgICAgIHNlbGYucG9ydF9mYWN0b3J5ID0gcG9ydC5mYWN0b3J5Ci0gICAgICAg
IHNlbGYucGxhdGZvcm0gPSBQbGF0Zm9ybUluZm8oKQorICAgICAgICBzZWxmLnBsYXRmb3JtID0g
cGxhdGZvcm1pbmZvLlBsYXRmb3JtSW5mbygpCiAKICAgICBkZWYgc2NtKHNlbGYpOgogICAgICAg
ICAjIExhemlseSBpbml0aWFsaXplIFNDTSB0byBub3QgZXJyb3Itb3V0IGJlZm9yZSBjb21tYW5k
IGxpbmUgcGFyc2luZyAob3Igd2hlbiBydW5uaW5nIG5vbi1zY20gY29tbWFuZHMpLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CmluZGV4IGViN2MyNDhmN2Q2NzNlYmNmZWM4
NmU3Zjc0NzJiN2JhNDc2YTI1MmEuLmQ4YzhmZjBjODA2ZWE5MTlhN2IwYzEzNTU3MGJlYmE4ZjQ5
NjkwMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKQEAgLTY4Niw2
ICs2ODYsMTQgQEAgY2xhc3MgTW9ja1BsYXRmb3JtSW5mbyhvYmplY3QpOgogICAgICAgICByZXR1
cm4gIk1vY2tQbGF0Zm9ybSAxLjAiCiAKIAorY2xhc3MgTW9ja1dvcmtzcGFjZShvYmplY3QpOgor
ICAgIGRlZiBmaW5kX3VudXNlZF9maWxlbmFtZShzZWxmLCBkaXJlY3RvcnksIG5hbWUsIGV4dGVu
c2lvbiwgc2VhcmNoX2xpbWl0PTEwKToKKyAgICAgICAgcmV0dXJuICIlcy8lcy4lcyIgJSAoZGly
ZWN0b3J5LCBuYW1lLCBleHRlbnNpb24pCisKKyAgICBkZWYgY3JlYXRlX3ppcChzZWxmLCB6aXBf
cGF0aCwgc291cmNlX3BhdGgpOgorICAgICAgICBwYXNzCisKKwogY2xhc3MgTW9ja1Rvb2wob2Jq
ZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dfZXhlY3V0aXZlPUZhbHNlKToKQEAg
LTY5NCw2ICs3MDIsNyBAQCBjbGFzcyBNb2NrVG9vbChvYmplY3QpOgogICAgICAgICBzZWxmLmJ1
aWxkYm90ID0gTW9ja0J1aWxkQm90KCkKICAgICAgICAgc2VsZi5leGVjdXRpdmUgPSBNb2NrRXhl
Y3V0aXZlKHNob3VsZF9sb2c9bG9nX2V4ZWN1dGl2ZSkKICAgICAgICAgc2VsZi5maWxlc3lzdGVt
ID0gTW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICBzZWxmLndvcmtzcGFjZSA9IE1vY2tXb3Jrc3Bh
Y2UoKQogICAgICAgICBzZWxmLl9pcmMgPSBOb25lCiAgICAgICAgIHNlbGYudXNlciA9IE1vY2tV
c2VyKCkKICAgICAgICAgc2VsZi5fc2NtID0gTW9ja1NDTSgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>