<?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>64086</bug_id>
          
          <creation_ts>2011-07-07 06:57:33 -0700</creation_ts>
          <short_desc>[Qt] NRWT should pick up the right httpd config file</short_desc>
          <delta_ts>2011-07-13 02:36:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>64441</dependson>
          <blocked>34984</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andras Becsi">abecsi</reporter>
          <assigned_to name="Kristóf Kosztyó">kkristof</assigned_to>
          <cc>abarth</cc>
    
    <cc>dihan.wickremasuriya</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>galpeter</cc>
    
    <cc>kkristof</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>ossy</cc>
    
    <cc>rgabor</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>433419</commentid>
    <comment_count>0</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-07 06:57:33 -0700</bug_when>
    <thetext>NRWT currently uses apache2-debian-httpd.conf for running the httpd server, thus only runs on debian based distros, this is a huge regression compared to ORWT.

NRWT should at least check for the /etc/debian_version file, and if not present it should use the generic apache2-httpd.conf file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433424</commentid>
    <comment_count>1</comment_count>
      <attachid>99977</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-07 06:59:42 -0700</bug_when>
    <thetext>Created attachment 99977
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433554</commentid>
    <comment_count>2</comment_count>
      <attachid>99977</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-07 10:10:37 -0700</bug_when>
    <thetext>Comment on attachment 99977
proposed fix

OK.  There is a similar &quot;is_redhat_based()&quot; function in the Gtk port.

Please add a test for this in qt_unittest.py.  Should be very easy to do with MockFileSystem({&apos;/etc/debian_version&apos;, &apos;&apos;})

Something like this:

def test_is_debian_based(self)
    port = self.make_port() # This is available in PortTestCase which QtPortTest isn&apos;t yet, I don&apos;t think, but could be made to
    self.assertEqual(port.is_debian_based(), False)
    port._filesystem = MockFileSystem({&apos;/etc/debian_version&apos;, &apos;&apos;})
    self.assertEqual(port.is_debian_based(), True)

One could also test that overriding _is_debian_based() with lamba: False or lambda: True affected port._path_to_appache_config_file().basename() if you wanted.  In any case, we just need some sort of testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433555</commentid>
    <comment_count>3</comment_count>
      <attachid>99977</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-07 10:11:39 -0700</bug_when>
    <thetext>Comment on attachment 99977
proposed fix

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/qt.py:32
&gt; +import os

Don&apos;t need this once you use FileSystem.

&gt; Tools/Scripts/webkitpy/layout_tests/port/qt.py:69
&gt; +        if os.path.isfile(&apos;/etc/debian_version&apos;):

Oh, this is wrong too.  This should use self._filesystem.exists() or isfile if that method exists on FileSystem.  We don&apos;t ever talk to os directly if we can help it.  (Makes mockng hard.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434745</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-07-11 04:23:35 -0700</bug_when>
    <thetext>Same or similar bug on Qt Mac bot:

2011-07-11 04:15:11,000 86746 apache_http_server.py:182 DEBUG Starting httpd server, cmd=&quot;/usr/sbin/httpd -f &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/layout-test-results/httpd.conf&quot; -C &apos;DocumentRoot &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/LayoutTests/http/tests&quot;&apos; -c &apos;Alias /js-test-resources &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/LayoutTests/fast/js/resources&quot;&apos; -c &apos;Alias /media-resources &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/LayoutTests/media&quot;&apos; -C &apos;Listen 127.0.0.1:8000&apos; -C &apos;Listen 127.0.0.1:8081&apos; -c &apos;TypesConfig &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/LayoutTests/http/conf/mime.types&quot;&apos; -c &apos;CustomLog &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/layout-test-results/access_log.txt&quot; common&apos; -c &apos;ErrorLog &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/layout-test-results/error_log.txt&quot;&apos; -C &apos;User &quot;buildbot&quot;&apos; -c &apos;PidFile /tmp/WebKit/httpd.pid&apos; -k start -c &apos;SSLCertificateFile /buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/LayoutTests/http/conf/webkit-httpd.pem&apos;&quot;
Traceback (most recent call last):
  File &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py&quot;, line 438, in &lt;module&gt;
Ignoring unsupported option: --use-remote-links-to-tests
    sys.exit(main())
  File &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py&quot;, line 433, in main
    return run(port_obj, options, args)
  File &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py&quot;, line 112, in run
    num_unexpected_results = manager.run(result_summary)
  File &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py&quot;, line 874, in run
    interrupted, keyboard_interrupted, thread_timings, test_timings, individual_test_timings = self._run_tests(self._test_files_list, result_summary)
  File &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py&quot;, line 723, in _run_tests
    self.start_servers_with_lock()
  File &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py&quot;, line 936, in start_servers_with_lock
    self._port.start_http_server()
  File &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/Tools/Scripts/webkitpy/layout_tests/port/base.py&quot;, line 669, in start_http_server
    server.start()
  File &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py&quot;, line 86, in start
    self._pid = self._spawn_process()
  File &quot;/buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py&quot;, line 185, in _spawn_process
    raise http_server_base.ServerError(&apos;Failed to start %s: %s&apos; % (self._name, err))
webkitpy.layout_tests.servers.http_server_base.ServerError: Failed to start httpd: httpd: Syntax error on line 197 of /buildbot/snowleopard-qt-release/snowleopard-qt-intel-release/build/layout-test-results/httpd.conf: Cannot load /usr/lib/apache2/modules/mod_mime.so into server: dlopen(/usr/lib/apache2/modules/mod_mime.so, 10): image not found</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434748</commentid>
    <comment_count>5</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-11 04:26:59 -0700</bug_when>
    <thetext>Assigning this bug to Kristóf, since he has more knowledge of python than I have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434749</commentid>
    <comment_count>6</comment_count>
      <attachid>99977</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-11 04:28:03 -0700</bug_when>
    <thetext>Comment on attachment 99977
proposed fix

Marking my patch obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434898</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-07-11 08:40:59 -0700</bug_when>
    <thetext>I tried to disable NRWT on qt-mac platform:
http://trac.webkit.org/changeset/90746

isDarwin() checks $^O, and it should be &quot;darwin&quot; on the Mac bot.
Dihan, could you check what is $^O on the bot? (print $^O; in perl)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434908</commentid>
    <comment_count>8</comment_count>
    <who name="Dihan Wickremasuriya">dihan.wickremasuriya</who>
    <bug_when>2011-07-11 08:59:23 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I tried to disable NRWT on qt-mac platform:
&gt; http://trac.webkit.org/changeset/90746
&gt; 
&gt; isDarwin() checks $^O, and it should be &quot;darwin&quot; on the Mac bot.
&gt; Dihan, could you check what is $^O on the bot? (print $^O; in perl)

It is indeed &quot;darwin&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434909</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-07-11 09:00:43 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; I tried to disable NRWT on qt-mac platform:
&gt; &gt; http://trac.webkit.org/changeset/90746
&gt; &gt; 
&gt; &gt; isDarwin() checks $^O, and it should be &quot;darwin&quot; on the Mac bot.
&gt; &gt; Dihan, could you check what is $^O on the bot? (print $^O; in perl)
&gt; 
&gt; It is indeed &quot;darwin&quot;.

The problem was that isSnowLeopard() is true for qt-mac too.
Fix landed in http://trac.webkit.org/changeset/90752.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435007</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-11 10:50:48 -0700</bug_when>
    <thetext>This is super-easy to fix.

http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/layout_tests/port/qt.py#L66

Is the FIXME in question.  This is a 3 line python change.  Tell me where your httpd file is on all platforms you care about and I can do so.  (Or I can just copy the logic from ORWT).

Is this the only thing blocking NRWT no Qt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435137</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-11 12:42:56 -0700</bug_when>
    <thetext>I have a patch to fix this.  I will post it this afternoon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435281</commentid>
    <comment_count>12</comment_count>
      <attachid>100378</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-11 16:28:05 -0700</bug_when>
    <thetext>Created attachment 100378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435319</commentid>
    <comment_count>13</comment_count>
      <attachid>100378</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-11 17:06:38 -0700</bug_when>
    <thetext>Comment on attachment 100378
Patch

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

Thanks for fixing this, Eric.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:396
&gt; +        if sys_platform.startswith(&apos;linux&apos;):
&gt; +            if self._is_redhat_based():
&gt; +                return &apos;fedora-httpd.conf&apos;
&gt; +            # FIXME: Seems wrong to assume that all non-redhat linux is debian.
&gt; +            return &apos;apache2-debian-httpd.conf&apos;
&gt; +        if using_apache2:
&gt; +            return &quot;apache2-httpd.conf&quot;

This seems wrong to me, too. ORWT checks for the /etc/debian_version file which all debian based distros have, and apache2-httpd.conf should be used if nor Fedora nor Debian was true and the version string contained &quot;Apache/2&quot; since for example on Slackware and Arch the apache2 binary is called httpd. All others should fallback to httpd.conf. This would mimic ORWT behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435325</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-07-11 17:17:07 -0700</bug_when>
    <thetext>the patch looked fine to me apart from the apache2 on mac issue ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435348</commentid>
    <comment_count>15</comment_count>
      <attachid>100395</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-11 17:59:38 -0700</bug_when>
    <thetext>Created attachment 100395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435503</commentid>
    <comment_count>16</comment_count>
      <attachid>100395</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-12 00:27:01 -0700</bug_when>
    <thetext>Comment on attachment 100395
Patch

I&apos;m not an expert on this code, but this looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435517</commentid>
    <comment_count>17</comment_count>
      <attachid>100395</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 01:08:44 -0700</bug_when>
    <thetext>Comment on attachment 100395
Patch

Clearing flags on attachment: 100395

Committed r90810: &lt;http://trac.webkit.org/changeset/90810&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435518</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 01:08:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99977</attachid>
            <date>2011-07-07 06:59:42 -0700</date>
            <delta_ts>2011-07-11 04:28:03 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>1727</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhOTQ1
MjE3Li5jZTdmY2RkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDctMDcgIEFuZHJhcyBCZWNzaSAgPGFiZWNz
aUB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gTlJXVCBzaG91bGQgcGljayB1cCB0aGUgcmln
aHQgaHR0cGQgY29uZmlnIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY0MDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5OiBE
ZXRlcm1pbmUgd2hldGhlciBydW5uaW5nIG9uIGRlYmlhbi4KKwogMjAxMS0wNy0wNyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gT3Bl
biBsaW5rcyBpbiBhIG5ldyB3aW5kb3cgd2hlbiBjbGlja2luZyB3aXRoIHRoZSBtaWRkbGUgYnV0
dG9uIGluIE1pbmlCcm93c2VyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3F0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9xdC5weQppbmRleCA4ODIwYjM4Li43Zjg4YmU1IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkKQEAgLTI5LDYgKzI5LDcgQEAKICIi
IlF0V2ViS2l0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQb3J0IGludGVyZmFjZS4iIiIKIAogaW1w
b3J0IGxvZ2dpbmcKK2ltcG9ydCBvcwogaW1wb3J0IHN5cwogCiBpbXBvcnQgd2Via2l0CkBAIC02
NCw4ICs2NSwxMiBAQCBjbGFzcyBRdFBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgIHNlbGYuX25h
bWUgPSAiLSIuam9pbihuYW1lX2NvbXBvbmVudHMpCiAKICAgICBkZWYgX3BhdGhfdG9fYXBhY2hl
X2NvbmZpZ19maWxlKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGRldGVj
dCB0aGUgZGlzdHJpYnV0aW9uIGFuZCBjaGFuZ2UgY29uZmlnIGZpbGVzLgotICAgICAgICByZXR1
cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcs
ICdjb25mJywgJ2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYnKQorICAgICAgICAjIEZJWE1FOiBU
aGlzIG5lZWRzIHRvIGRldGVjdCB0aGUgZGlzdHJpYnV0aW9uIGFuZCBjaGFuZ2UgY29uZmlnIGZp
bGVzCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKCcvZXRjL2RlYmlhbl92ZXJzaW9uJyk6Cisg
ICAgICAgICAgICBodHRwZF9jb25mID0gJ2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYnCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBodHRwZF9jb25mID0gJ2FwYWNoZTItaHR0cGQuY29uZicK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19k
aXIoKSwgJ2h0dHAnLCAnY29uZicsIGh0dHBkX2NvbmYpCiAKICAgICBkZWYgX2J1aWxkX2RyaXZl
cihzZWxmKToKICAgICAgICAgIyBUaGUgUXQgcG9ydCBidWlsZHMgRFJUIGFzIHBhcnQgb2YgdGhl
IG1haW4gYnVpbGQgc3RlcAo=
</data>
<flag name="review"
          id="94581"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100378</attachid>
            <date>2011-07-11 16:28:05 -0700</date>
            <delta_ts>2011-07-11 17:59:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64086-20110711162804.patch</filename>
            <type>text/plain</type>
            <size>18092</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA3NjIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxYmYyNGVlNjFhYjdhM2NlNDZjZWFjY2Y0NWI2MDlkZmVh
Y2QyY2U3Li40Y2E4YWY2MzU0NTM0YjM5MTVjZTY3YjIyNjVhYTMzZWJmYzI5ZjQxIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTEtMDctMTEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFtRdF0gTlJXVCBzaG91bGQgcGljayB1cCB0aGUgcmlnaHQgaHR0cGQgY29uZmlnIGZpbGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MDg2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBtb3Jl
IGZhbGwtb3V0IGZyb20gdGhlIFBvcnQgY2xhc3MgaW5hcHByb3ByaWF0ZWx5IGVuY2Fwc3VsYXRp
bmcKKyAgICAgICAgYm90aCBwbGF0Zm9ybSBhbmQgcG9ydCBrbm93bGVkZ2UuICBXZSBuZWVkIHRv
IHNwbGl0IG91dCBzb21lIG9mIHRoaXMKKyAgICAgICAgcGxhdGZvcm0ga25vd2xlZGdlIGludG8g
YSBzZXBhcmF0ZSBjbGFzcyB3aGljaCBjYW4gYmUgYmV0dGVyIHNoYXJlZAorICAgICAgICBiZXR3
ZWVuIHBvcnRzLgorCisgICAgICAgIFRoZSBmaXggd2FzIHRvIG1vdmUgYWxsIHRoZSBfcGF0aF90
b19hcGFjaGVfY29uZmlnX2ZpbGUgbG9naWMgZG93bgorICAgICAgICBpbnRvIHRoZSBXZWJLaXRQ
b3J0IGJhc2VjbGFzcyBzbyB0aGF0IGFsbCBvZiB0aGUgcG9ydHMgY2FuIGZpbmQgdGhlCisgICAg
ICAgIHJpZ2h0IGFwYWNoZSBjb25maWcgZmlsZSwgcmVnYXJkbGVzcyBvZiB3aGF0IHBsYXRmb3Jt
IHRoZXkgbWF5IGJlIHJ1bm5pbmcgb24uCisKKyAgICAgICAgSSBkaWQgbm90IG1vdmUgdGhpcyBk
b3duIGludG8gYmFzZS5Qb3J0IChldmVuIHRob3VnaCBJIGNvbnNpZGVyZWQgaXQpLgorICAgICAg
ICBDaHJvbWl1bSBkdXBsaWNhdGVzIHNvbWUgb2YgdGhpcyBsb2dpYywgYnV0IHNpbmNlIHRoZXkg
aGF2ZSBzZXBhcmF0ZQorICAgICAgICBzdWJjbGFzc2VzIGZvciBlYWNoIHBvcnQtT1MgY29tYmlu
YXRpb24gKGUuZy4gQ2hyb21pdW1NYWMsIENocm9taXVtV2luKQorICAgICAgICB0aGV5IHdvdWxk
bid0IG5vdGljZSB0aGUgY2hhbmdlLiAgRXZlbnR1YWxseSB3ZSdsbCBtb3ZlIHRoaXMgbG9naWMK
KyAgICAgICAgb3V0IG9mIFBvcnQgZW50aXJlbHksIGFuZCB0aGVuIGl0IHdpbGwgYmUgc2hhcmVk
IGJ5IGFsbCBwb3J0cy4KKworICAgICAgICBJIGFsc28gY2xlYW5lZCB1cCB0aGUgaHR0cC1jb25m
aWcgbG9naWMgZm9yIE9SV1Qgd2hpbGUgSSB3YXMgdGhlcmUsCisgICAgICAgIGFsdGhvdWdoIHNp
bmNlIHdlJ3JlIGtpbGxpbmcgdGhhdCBjb2RlLCBJJ20gaGFwcHkgdG8gcmV2ZXJ0IHRoYXQgcGFy
dAorICAgICAgICBvZiB0aGUgY2hhbmdlIGlmIGNoYW5naW5nIGl0IGlzIHZpZXdlZCBhcyBuZWVk
bGVzc2x5IHJpc2t5LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtOgor
ICAgICAgICAoZ2V0SFRUUERDb25maWdQYXRoRm9yVGVzdERpcmVjdG9yeSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4ucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHk6CisK
IDIwMTEtMDctMTEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBn
YXJkZW4tby1tYXRpYyBzaG91bGQgYmUgYWJsZSB0byByb2xsIG91dCBwYXRjaGVzCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG0gYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvaHR0cGQucG0KaW5kZXggODZhODQ2MWNhZjhlM2RlMmY0MjFhYjM4ODJkMjE0ZTUz
YmQ1NGQ0NS4uZjNlZjYxYjA1NjU2YzQ1NDJjMjY3MDcxN2JkYzA5MzE5YWYwZjNkZSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9odHRwZC5wbQpAQCAtMTM2LDI2ICsxMzYsMzAgQEAgc3ViIGdldEhUVFBE
Q29uZmlnUGF0aEZvclRlc3REaXJlY3RvcnkKIHsKICAgICBteSAoJHRlc3REaXJlY3RvcnkpID0g
QF87CiAgICAgZGllICJObyB0ZXN0IGRpcmVjdG9yeSBoYXMgYmVlbiBzcGVjaWZpZWQuIiB1bmxl
c3MgKCR0ZXN0RGlyZWN0b3J5KTsKKwogICAgIG15ICRodHRwZENvbmZpZzsKICAgICBteSAkaHR0
cGRQYXRoID0gZ2V0SFRUUERQYXRoKCk7CisgICAgbXkgJGh0dHBkQ29uZkRpcmVjdG9yeSA9ICIk
dGVzdERpcmVjdG9yeS9odHRwL2NvbmYvIjsKKwogICAgIGlmIChpc0N5Z3dpbigpKSB7Ci0gICAg
ICAgIG15ICR3aW5kb3dzQ29uZkRpcmVjdG9yeSA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYv
IjsKLSAgICAgICAgdW5sZXNzICgteCAiL3Vzci9saWIvYXBhY2hlL2xpYnBocDQuZGxsIikgewot
ICAgICAgICAgICAgY29weSgiJHdpbmRvd3NDb25mRGlyZWN0b3J5L2xpYnBocDQuZGxsIiwgIi91
c3IvbGliL2FwYWNoZS9saWJwaHA0LmRsbCIpOwotICAgICAgICAgICAgY2htb2QoMDc1NSwgIi91
c3IvbGliL2FwYWNoZS9saWJwaHA0LmRsbCIpOworICAgICAgICBteSAkbGliUEhQNERsbFBhdGgg
PSAiL3Vzci9saWIvYXBhY2hlL2xpYnBocDQuZGxsIjsKKyAgICAgICAgIyBGSVhNRTogcnVuLXdl
YmtpdC10ZXN0cyBzaG91bGQgbm90IG1vZGlmeSB0aGUgdXNlcidzIHN5c3RlbSwgZXNwZWNpYWxs
eSBub3QgaW4gdGhpcyBtZXRob2QhCisgICAgICAgIHVubGVzcyAoLXggJGxpYlBIUDREbGxQYXRo
KSB7CisgICAgICAgICAgICBjb3B5KCIkaHR0cGRDb25mRGlyZWN0b3J5L2xpYnBocDQuZGxsIiwg
JGxpYlBIUDREbGxQYXRoKTsKKyAgICAgICAgICAgIGNobW9kKDA3NTUsICRsaWJQSFA0RGxsUGF0
aCk7CiAgICAgICAgIH0KLSAgICAgICAgJGh0dHBkQ29uZmlnID0gIiR3aW5kb3dzQ29uZkRpcmVj
dG9yeS9jeWd3aW4taHR0cGQuY29uZiI7CisgICAgICAgICRodHRwZENvbmZpZyA9ICJjeWd3aW4t
aHR0cGQuY29uZiI7CiAgICAgfSBlbHNpZiAoaXNNc3lzKCkpIHsKLSAgICAgICAgJGh0dHBkQ29u
ZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9hcGFjaGUyLW1zeXMtaHR0cGQuY29uZiI7
CisgICAgICAgICRodHRwZENvbmZpZyA9ICJhcGFjaGUyLW1zeXMtaHR0cGQuY29uZiI7CiAgICAg
fSBlbHNpZiAoaXNEZWJpYW5CYXNlZCgpKSB7Ci0gICAgICAgICRodHRwZENvbmZpZyA9ICIkdGVz
dERpcmVjdG9yeS9odHRwL2NvbmYvYXBhY2hlMi1kZWJpYW4taHR0cGQuY29uZiI7CisgICAgICAg
ICRodHRwZENvbmZpZyA9ICJhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mIjsKICAgICB9IGVsc2lm
IChpc0ZlZG9yYUJhc2VkKCkpIHsKLSAgICAgICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0
b3J5L2h0dHAvY29uZi9mZWRvcmEtaHR0cGQuY29uZiI7CisgICAgICAgICRodHRwZENvbmZpZyA9
ICJmZWRvcmEtaHR0cGQuY29uZiI7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgJGh0dHBkQ29uZmln
ID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9odHRwZC5jb25mIjsKLSAgICAgICAgJGh0dHBk
Q29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9hcGFjaGUyLWh0dHBkLmNvbmYiIGlm
IGAkaHR0cGRQYXRoIC12YCA9fiBtfEFwYWNoZS8yfDsKKyAgICAgICAgJGh0dHBkQ29uZmlnID0g
Imh0dHBkLmNvbmYiOworICAgICAgICAkaHR0cGRDb25maWcgPSAiYXBhY2hlMi1odHRwZC5jb25m
IiBpZiBgJGh0dHBkUGF0aCAtdmAgPX4gbXxBcGFjaGUvMnw7CiAgICAgfQotICAgIHJldHVybiAk
aHR0cGRDb25maWc7CisgICAgcmV0dXJuICIkaHR0cGRDb25mRGlyZWN0b3J5LyRodHRwZENvbmZp
ZyI7CiB9CiAKIHN1YiBvcGVuSFRUUEQoQCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCBkZmRiYjAzMzg3NjRlNTZmZDdmZmNlMmUx
ODI4ZTVhMmE2NWM1NzFmLi5jZTQ1MWQzYjFjNDFkYTNhMzEwNTUxNzUyOTllZmQ4NDEyOTZiZDY3
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
LnB5CkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIER1bW15T3B0aW9ucyhvYmplY3QpOgogICAgICAg
ICAgICAgc2VsZi5fX2RpY3RfX1trZXldID0gdmFsdWUKIAogCi0jIEZJWE1FOiBUaGlzIGNsYXNz
IHNob3VsZCBtZXJnZSB3aXRoIHdlYmtpdHB5LmNvbW1vbi5jb25maWcucG9ydHMuCisjIEZJWE1F
OiBUaGlzIGNsYXNzIHNob3VsZCBtZXJnZSB3aXRoIFdlYktpdFBvcnQgbm93IHRoYXQgQ2hyb21p
dW0gYmVoYXZlcyBtb3N0bHkgbGlrZSBvdGhlciB3ZWJraXQgcG9ydHMuCiBjbGFzcyBQb3J0KG9i
amVjdCk6CiAgICAgIiIiQWJzdHJhY3QgY2xhc3MgZm9yIFBvcnQtc3BlY2lmaWMgaG9va3MgZm9y
IHRoZSBsYXlvdXRfdGVzdCBwYWNrYWdlLiIiIgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CmluZGV4IDUzMGFjZGNiNDliZDUwYjk0NzU4NjUw
ODk3NGQwMjExYjhiMzhmYzcuLmM5MGUzYmI5ODFlOGRkZjU3NmM0ZGEwODZlNDQ4MmU3NWQ3ZmVm
NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Z3RrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3Rr
LnB5CkBAIC02NywxMyArNjcsOCBAQCBjbGFzcyBHdGtQb3J0KHdlYmtpdC5XZWJLaXRQb3J0KToK
ICAgICAgICAgZW52aXJvbm1lbnRbJ0dUS19NT0RVTEVTJ10gPSAnZ2FpbCcKICAgICAgICAgZW52
aXJvbm1lbnRbJ0xJQk9WRVJMQVlfU0NST0xMQkFSJ10gPSAnMCcKICAgICAgICAgZW52aXJvbm1l
bnRbJ1dFQktJVF9JTlNQRUNUT1JfUEFUSCddID0gc2VsZi5fYnVpbGRfcGF0aCgnUHJvZ3JhbXMv
cmVzb3VyY2VzL2luc3BlY3RvcicpCi0KICAgICAgICAgcmV0dXJuIGVudmlyb25tZW50CiAKLSAg
ICBkZWYgX3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKHNlbGYpOgotICAgICAgICAjIEZJWE1F
OiBUaGlzIG5lZWRzIHRvIGRldGVjdCB0aGUgZGlzdHJpYnV0aW9uIGFuZCBjaGFuZ2UgY29uZmln
IGZpbGVzLgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0
X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywgJ2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYn
KQotCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYu
X2J1aWxkX3BhdGgoJ1Byb2dyYW1zJywgc2VsZi5kcml2ZXJfbmFtZSgpKQogCkBAIC04NiwyMyAr
ODEsMTIgQEAgY2xhc3MgR3RrUG9ydCh3ZWJraXQuV2ViS2l0UG9ydCk6CiAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICByZXR1cm4gJy91c3Ivc2Jpbi9hcGFjaGUyJwogCi0gICAgZGVmIF9wYXRo
X3RvX2FwYWNoZV9jb25maWdfZmlsZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5faXNfcmVkaGF0
X2Jhc2VkKCk6Ci0gICAgICAgICAgICBjb25maWdfbmFtZSA9ICdmZWRvcmEtaHR0cGQuY29uZicK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbmZpZ19uYW1lID0gJ2FwYWNoZTItZGViaWFu
LWh0dHBkLmNvbmYnCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsIGNvbmZpZ19uYW1lKQotCiAgICAg
ZGVmIF9wYXRoX3RvX3dkaWZmKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9pc19yZWRoYXRfYmFz
ZWQoKToKICAgICAgICAgICAgIHJldHVybiAnL3Vzci9iaW4vZHdkaWZmJwogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcmV0dXJuICcvdXNyL2Jpbi93ZGlmZicKIAotICAgIGRlZiBfaXNfcmVk
aGF0X2Jhc2VkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMo
c2VsZi5fZmlsZXN5c3RlbS5qb2luKCcvZXRjJywgJ3JlZGhhdC1yZWxlYXNlJykpCi0KICAgICBk
ZWYgX3BhdGhfdG9fd2ViY29yZV9saWJyYXJ5KHNlbGYpOgogICAgICAgICBndGtfbGlicmFyeV9u
YW1lcyA9IFsKICAgICAgICAgICAgICJsaWJ3ZWJraXRndGstMS4wLnNvIiwKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKaW5kZXggNTA2ZmE4YTU5
ODg1YjE0MDFlYWIzM2EwMjkwMjhiZmZmZjAzNWQ1ZS4uNzYyMWFiZmYxYTc1OWFiNDIzMDZhYmIx
NTViYmFlNDI1N2ViNjU4YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9tYWMucHkKQEAgLTExMyw4ICsxMTMsNSBAQCBjbGFzcyBNYWNQb3J0KFdlYktp
dFBvcnQpOgogICAgIGRlZiBfY2hlY2tfcG9ydF9idWlsZChzZWxmKToKICAgICAgICAgcmV0dXJu
IHNlbGYuX2J1aWxkX2phdmFfdGVzdF9zdXBwb3J0KCkKIAotICAgIGRlZiBfcGF0aF90b19hcGFj
aGVfY29uZmlnX2ZpbGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpv
aW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdodHRwJywgJ2NvbmYnLCAnYXBhY2hlMi1odHRw
ZC5jb25mJykKLQogICAgIGRlZiBfcGF0aF90b193ZWJjb3JlX2xpYnJhcnkoc2VsZik6CiAgICAg
ICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdXZWJDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9B
L1dlYkNvcmUnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9xdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
cXQucHkKaW5kZXggODgyMGIzODdkMWJhMWUzZWIyYTlkNmYzMGZkNDExMjUxYTM4Yzg1My4uYTZh
OGMyZWYzM2UzMWVhOWFjMzEwMjQzYjI1NDQwZmU5ZTM0Njg2OCAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5CkBAIC02MywxMCArNjMsNiBAQCBj
bGFzcyBRdFBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICAgICBuYW1lX2NvbXBvbmVudHMuYXBw
ZW5kKHNlbGYuX29wZXJhdGluZ19zeXN0ZW0pCiAgICAgICAgIHNlbGYuX25hbWUgPSAiLSIuam9p
bihuYW1lX2NvbXBvbmVudHMpCiAKLSAgICBkZWYgX3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxl
KHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGRldGVjdCB0aGUgZGlzdHJp
YnV0aW9uIGFuZCBjaGFuZ2UgY29uZmlnIGZpbGVzLgotICAgICAgICByZXR1cm4gc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywgJ2Fw
YWNoZTItZGViaWFuLWh0dHBkLmNvbmYnKQotCiAgICAgZGVmIF9idWlsZF9kcml2ZXIoc2VsZik6
CiAgICAgICAgICMgVGhlIFF0IHBvcnQgYnVpbGRzIERSVCBhcyBwYXJ0IG9mIHRoZSBtYWluIGJ1
aWxkIHN0ZXAKICAgICAgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggNjExNjI4YmU4OTVhYWFkOWNl
NzVkMjUyZDgzNWVkZmJiNGE1YTM1My4uYTZiY2E5NDg3MTcyMzVlMTNkNGM0MjJjMTg2YTRiZTY2
MDkyZGYyMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXQucHkKQEAgLTM2LDYgKzM2LDcgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBv
cGVyYXRvcgogaW1wb3J0IG9zCiBpbXBvcnQgcmUKK2ltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAK
IGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBvcnQgQnVpbGRCb3QKQEAgLTM1
OCw2ICszNTksNyBAQCBjbGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogICAgICAgICAjIEZJWE1FOiBU
aGlzIGRvZXMgbm90IGV4aXN0IG9uIGEgZGVmYXVsdCBNYWMgT1MgWCBMZW9wYXJkIGluc3RhbGwu
CiAgICAgICAgIHJldHVybiAnd2RpZmYnCiAKKyAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCB1c2Ug
QG1lbW9pemVkIGluc3RlYWQgb2YgYSBkZWRpY2F0ZWQgX2NhY2hlZCBtZW1iZXIgdmFyaWFibGUu
CiAgICAgZGVmIF9wYXRoX3RvX2FwYWNoZShzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX2Nh
Y2hlZF9hcGFjaGVfcGF0aDoKICAgICAgICAgICAgICMgVGhlIEFwYWNoZSBiaW5hcnkgcGF0aCBj
YW4gdmFyeSBkZXBlbmRpbmcgb24gT1MgYW5kIGRpc3RyaWJ1dGlvbgpAQCAtMzcyLDYgKzM3NCwz
MyBAQCBjbGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogCiAgICAgICAgIHJldHVybiBzZWxmLl9jYWNo
ZWRfYXBhY2hlX3BhdGgKIAorICAgICMgRklYTUU6IFRoaXMgYmVsb25ncyBvbiBzb21lIHBsYXRm
b3JtIGFic3RyYWN0aW9uIGluc3RlYWQgb2YgUG9ydC4KKyAgICBkZWYgX2lzX3JlZGhhdF9iYXNl
ZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYuX2Zp
bGVzeXN0ZW0uam9pbignL2V0YycsICdyZWRoYXQtcmVsZWFzZScpKQorCisgICAgIyBXZSBwYXNz
IHN5c19wbGF0Zm9ybSBhbmQgdXNpbmdfYXBhY2hlMiBpbnRvIHRoaXMgbWV0aG9kIHRvIG1ha2Ug
aXQgZWFzeSB0byB1bml0IHRlc3QuCisgICAgZGVmIF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9m
b3JfcGxhdGZvcm0oc2VsZiwgc3lzX3BsYXRmb3JtLCB1c2luZ19hcGFjaGUyKToKKyAgICAgICAg
aWYgc3lzX3BsYXRmb3JtID09ICdjeWd3aW4nOgorICAgICAgICAgICAgcmV0dXJuICdjeWd3aW4t
aHR0cGQuY29uZicKKyAgICAgICAgaWYgc3lzX3BsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAg
ICAgICAjIFN1cHBvc2VkbHkgd2UgaGF2ZSBhbiBtc3lzIHBvcnQgKG5vIG90aGVyIHBvcnQgd29y
a3Mgb24gd2luMzIgdG8gbXkga25vd2xlZGdlKS4gIEFwcGxlJ3MgV2luIGFuZCBXaW5DYWlybyBi
b3RoIHJlcXVpcmUgY3lnd2luLgorICAgICAgICAgICAgIyBJZiB3ZSB3YW50IHRvIGRldGVjdCB0
aGF0IHRoaXMgaXMgYWN0dWFsbHkgbXN5cywgd2UgY291ZGwgY2hlY2sgb3MuZW52aXJvbi5nZXQo
J3Rlcm0nKSA9PSAnbXN5cycgYWNjb3JkaW5nIHRvOgorICAgICAgICAgICAgIyBodHRwOi8vZ3Jv
dXBzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvZ3JvdXAvY2hyb21pdW0tcmV2aWV3cy9icm93
c2VfdGhyZWFkL3RocmVhZC9jZTZhNTQ5MjgzNjgzZTIzCisgICAgICAgICAgICByZXR1cm4gJ2Fw
YWNoZTItbXN5cy1odHRwZC5jb25mJworICAgICAgICBpZiBzeXNfcGxhdGZvcm0uc3RhcnRzd2l0
aCgnbGludXgnKToKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzX3JlZGhhdF9iYXNlZCgpOgorICAg
ICAgICAgICAgICAgIHJldHVybiAnZmVkb3JhLWh0dHBkLmNvbmYnCisgICAgICAgICAgICAjIEZJ
WE1FOiBTZWVtcyB3cm9uZyB0byBhc3N1bWUgdGhhdCBhbGwgbm9uLXJlZGhhdCBsaW51eCBpcyBk
ZWJpYW4uCisgICAgICAgICAgICByZXR1cm4gJ2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYnCisg
ICAgICAgIGlmIHVzaW5nX2FwYWNoZTI6CisgICAgICAgICAgICByZXR1cm4gImFwYWNoZTItaHR0
cGQuY29uZiIKKyAgICAgICAgcmV0dXJuICJodHRwZC5jb25mIgorCisgICAgZGVmIF9wYXRoX3Rv
X2FwYWNoZV9jb25maWdfZmlsZShzZWxmKToKKyAgICAgICAgdXNpbmdfYXBhY2hlMiA9IHNlbGYu
X3BhdGhfdG9fYXBhY2hlKCkuZW5kc3dpdGgoJ2FwYWNoZTInKQorICAgICAgICBjb25maWdfZmls
ZV9uYW1lID0gc2VsZi5fYXBhY2hlX2NvbmZpZ19maWxlX25hbWVfZm9yX3BsYXRmb3JtKHN5cy5w
bGF0Zm9ybSwgdXNpbmdfYXBhY2hlMikKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0u
am9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsIGNvbmZpZ19maWxl
X25hbWUpCisKIAogY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgIiIiV2ViS2l0IGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBEdW1wUmVuZGVyVHJlZS9XZWJLaXRUZXN0UnVubmVyIGludGVy
ZmFjZS4iIiIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKaW5kZXggODJmYmVkYTY1NmQ1YjRmMzMxZGQ3
MGNmMzM1MDJmYzE5ZjQyZTVlNS4uOTM3YTVhMTkyYmM5ZGFlNDU1NmM1ODM4YTg3NzY4NmI2MzNj
ZjVmNiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKQEAgLTE0NiwzICsxNDYsMzcgQEAgQlVHX1NL
SVBQRUQgU0tJUCA6IG1lZGlhID0gRkFJTCIiIikKICAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0g
TW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUsIHNob3VsZF90aHJvdz1UcnVlKQogICAgICAg
ICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL2J1
aWxkLXdlYmtpdHRlc3RydW5uZXInLCAnLS1yZWxlYXNlJ11cbiIKICAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBl
eHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKSkKKworICAgIGRlZiBfYXNzZXJ0X2NvbmZp
Z19maWxlX2Zvcl9wbGF0Zm9ybShzZWxmLCBwb3J0LCBwbGF0Zm9ybSwgY29uZmlnX2ZpbGUsIGFw
YWNoZTI9RmFsc2UpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9hcGFjaGVfY29u
ZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0ocGxhdGZvcm0sIGFwYWNoZTIpLCBjb25maWdfZmls
ZSkKKworICAgIGRlZiB0ZXN0X2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShz
ZWxmKToKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnY3lnd2luJywgJ2N5Z3dpbi1odHRw
ZC5jb25mJykKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShw
b3J0LCAnY3lnd2luJywgJ2N5Z3dpbi1odHRwZC5jb25mJywgYXBhY2hlMj1UcnVlKSAgIyBJIGV4
cGVjdCB0aGlzIGlzIGFuIGltcG9zc2libGUgY29uZmlndXJhdGlvbi4KKworICAgICAgICAjIEJv
dGggb2YgdGhlc2UgYXJlIGxpa2VseSBpbXBvc3NpYmxlIGNvbmZpZ3VyYXRpb25zIHNpbXBseSBj
b3BpZWQgb3ZlciBmcm9tIE9SV1QuCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9m
b3JfcGxhdGZvcm0ocG9ydCwgJ3dpbjMyJywgJ2FwYWNoZTItbXN5cy1odHRwZC5jb25mJykKKyAg
ICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnd2luMzIn
LCAnYXBhY2hlMi1tc3lzLWh0dHBkLmNvbmYnLCBhcGFjaGUyPVRydWUpCisKKyAgICAgICAgcG9y
dC5faXNfcmVkaGF0X2Jhc2VkID0gbGFtYmRhOiBUcnVlCisgICAgICAgIHNlbGYuX2Fzc2VydF9j
b25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4MicsICdmZWRvcmEtaHR0cGQuY29u
ZicpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwg
J2xpbnV4MycsICdmZWRvcmEtaHR0cGQuY29uZicpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25m
aWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4MicsICdmZWRvcmEtaHR0cGQuY29uZicp
CisKKyAgICAgICAgcG9ydC5faXNfcmVkaGF0X2Jhc2VkID0gbGFtYmRhOiBGYWxzZQorICAgICAg
ICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdsaW51eDInLCAn
YXBhY2hlMi1kZWJpYW4taHR0cGQuY29uZicpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdf
ZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4MycsICdhcGFjaGUyLWRlYmlhbi1odHRwZC5j
b25mJykKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0
LCAnbGludXgyJywgJ2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYnKQorCisgICAgICAgIHNlbGYu
X2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ21hYycsICdhcGFjaGUyLWh0
dHBkLmNvbmYnLCBhcGFjaGUyPVRydWUpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmls
ZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ21hYycsICdodHRwZC5jb25mJywgYXBhY2hlMj1GYWxzZSkK
KworICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdi
YXJmJywgJ2FwYWNoZTItaHR0cGQuY29uZicsIGFwYWNoZTI9VHJ1ZSkKKyAgICAgICAgc2VsZi5f
YXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnYmFyZicsICdodHRwZC5jb25m
JywgYXBhY2hlMj1GYWxzZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19m
aWxlKHNlbGYpOgorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAgICAgICBwb3J0
Ll9wYXRoX3RvX2FwYWNoZSA9IGxhbWJkYTogJ2h0dHBkJworICAgICAgICBwb3J0Ll9hcGFjaGVf
Y29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gPSBsYW1iZGEgcGxhdGZvcm0sIGFwYWNoZTI6
ICdodHRwZC5jb25mJworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9wYXRoX3RvX2Fw
YWNoZV9jb25maWdfZmlsZSgpLCAnL21vY2svTGF5b3V0VGVzdHMvaHR0cC9jb25mL2h0dHBkLmNv
bmYnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93aW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5w
eQppbmRleCBhMDZiZDE2MDhiOGFiMDY4NTIwNjU1Yzk5YjU0ODM2Y2QzMGI3YzE4Li5lZjIwNTMx
NGUxNDViMzNiMmQ0YTI3ZDdjMWNiYzBmMzViMjlkZWU1IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weQpAQCAtNTcsNSArNTcsNiBAQCBjbGFz
cyBXaW5Qb3J0KFdlYktpdFBvcnQpOgogICAgICAgICAjIEZJWE1FOiBUaGlzIGRvZXMgbm90IHdv
cmsgZm9yIFdlYktpdDIuCiAgICAgICAgIHJldHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5l
X3BhdGgsIHNlbGYuRkFMTEJBQ0tfUEFUSFNbc2VsZi5fdmVyc2lvbl0pCiAKLSAgICBkZWYgX3Bh
dGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywgJ2N5
Z3dpbi1odHRwZC5jb25mJykKKyAgICAjIEZJWE1FOiB3ZWJraXRwZXJsL2h0dHBkLnBtIGluc3Rh
bGxzIC91c3IvbGliL2FwYWNoZS9saWJwaHA0LmRsbCBvbiBjeWN3aW4gYXV0b21hdGljYWxseQor
ICAgICMgYXMgcGFydCBvZiBydW5uaW5nIG9sZC1ydW4td2Via2l0LXRlc3RzLiAgVGhhdCdzIGJh
ZCBkZXNpZ24sIGJ1dCB3ZSBtYXkgbmVlZCBzb21lIHNpbWlsYXIgaGFjay4KKyAgICAjIFdlIG1p
Z2h0IHVzZSBzZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIgZm9yIHN1Y2ggYSBoYWNrIChvciBtb2Rp
ZnkgYXBhY2hlX2h0dHBfc2VydmVyLnB5KS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIu
cHkKaW5kZXggYzYyM2M5ZjhkZWJmZWY0MDI4NDRjY2ZkYTVlOGVhZTVkMGM4ZDJjZS4uOWU0ZmY5
OTkxYWE4NTczMDYwOGI4MzE0YzUxZmI0MmI4ZWRiYjYzMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVf
aHR0cF9zZXJ2ZXIucHkKQEAgLTYyLDEzICs2MiwxMCBAQCBjbGFzcyBMYXlvdXRUZXN0QXBhY2hl
SHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAgICAgICAgIHNlbGYuX3Bp
ZF9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3J1bnRpbWVfcGF0aCwgJyVzLnBp
ZCcgJSBzZWxmLl9uYW1lKQogCiAgICAgICAgIHRlc3RfZGlyID0gc2VsZi5fcG9ydF9vYmoubGF5
b3V0X3Rlc3RzX2RpcigpCi0gICAgICAgIGpzX3Rlc3RfcmVzb3VyY2VzX2RpciA9IHNlbGYuX2N5
Z3dpbl9zYWZlX2pvaW4odGVzdF9kaXIsICJmYXN0IiwgImpzIiwKLSAgICAgICAgICAgICJyZXNv
dXJjZXMiKQorICAgICAgICBqc190ZXN0X3Jlc291cmNlc19kaXIgPSBzZWxmLl9jeWd3aW5fc2Fm
ZV9qb2luKHRlc3RfZGlyLCAiZmFzdCIsICJqcyIsICJyZXNvdXJjZXMiKQogICAgICAgICBtZWRp
YV9yZXNvdXJjZXNfZGlyID0gc2VsZi5fY3lnd2luX3NhZmVfam9pbih0ZXN0X2RpciwgIm1lZGlh
IikKLSAgICAgICAgbWltZV90eXBlc19wYXRoID0gc2VsZi5fY3lnd2luX3NhZmVfam9pbih0ZXN0
X2RpciwgImh0dHAiLCAiY29uZiIsCi0gICAgICAgICAgICAibWltZS50eXBlcyIpCi0gICAgICAg
IGNlcnRfZmlsZSA9IHNlbGYuX2N5Z3dpbl9zYWZlX2pvaW4odGVzdF9kaXIsICJodHRwIiwgImNv
bmYiLAotICAgICAgICAgICAgIndlYmtpdC1odHRwZC5wZW0iKQorICAgICAgICBtaW1lX3R5cGVz
X3BhdGggPSBzZWxmLl9jeWd3aW5fc2FmZV9qb2luKHRlc3RfZGlyLCAiaHR0cCIsICJjb25mIiwg
Im1pbWUudHlwZXMiKQorICAgICAgICBjZXJ0X2ZpbGUgPSBzZWxmLl9jeWd3aW5fc2FmZV9qb2lu
KHRlc3RfZGlyLCAiaHR0cCIsICJjb25mIiwgIndlYmtpdC1odHRwZC5wZW0iKQogICAgICAgICBh
Y2Nlc3NfbG9nID0gc2VsZi5fY3lnd2luX3NhZmVfam9pbihvdXRwdXRfZGlyLCAiYWNjZXNzX2xv
Zy50eHQiKQogICAgICAgICBlcnJvcl9sb2cgPSBzZWxmLl9jeWd3aW5fc2FmZV9qb2luKG91dHB1
dF9kaXIsICJlcnJvcl9sb2cudHh0IikKICAgICAgICAgZG9jdW1lbnRfcm9vdCA9IHNlbGYuX2N5
Z3dpbl9zYWZlX2pvaW4odGVzdF9kaXIsICJodHRwIiwgInRlc3RzIikKQEAgLTk5LDggKzk2LDcg
QEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZl
ckJhc2UpOgogICAgICAgICAgICAgJy1rJywgInN0b3AiXQogCiAgICAgICAgIGlmIHNlbGYuX2lz
X2N5Z3dpbigpOgotICAgICAgICAgICAgY3lnYmluID0gc2VsZi5fcG9ydF9vYmouX3BhdGhfZnJv
bV9iYXNlKCd0aGlyZF9wYXJ0eScsICdjeWd3aW4nLAotICAgICAgICAgICAgICAgICdiaW4nKQor
ICAgICAgICAgICAgY3lnYmluID0gc2VsZi5fcG9ydF9vYmouX3BhdGhfZnJvbV9iYXNlKCd0aGly
ZF9wYXJ0eScsICdjeWd3aW4nLCAnYmluJykKICAgICAgICAgICAgICMgTm90IGVudGlyZWx5IHN1
cmUgd2h5LCBidXQgZnJvbSBjeWd3aW4gd2UgbmVlZCB0byBydW4gdGhlCiAgICAgICAgICAgICAj
IGh0dHBkIGNvbW1hbmQgdGhyb3VnaCBiYXNoLgogICAgICAgICAgICAgc2VsZi5fc3RhcnRfY21k
ID0gWwpAQCAtMTYwLDYgKzE1Niw3IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRw
X3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgaHR0cGRfY29uZmlnID0gc2Vs
Zi5fcG9ydF9vYmouX3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKCkKICAgICAgICAgaHR0cGRf
Y29uZmlnX2NvcHkgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgImh0dHBkLmNvbmYiKQogICAg
ICAgICBodHRwZF9jb25mID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShodHRwZF9j
b25maWcpCisgICAgICAgICMgRklYTUU6IFRoaXMgb25seSB3b3JrcyBmb3IgQ2hyb21pdW0uIElu
c3RlYWQgaXQgc2hvdWxkIHVzZSBzb21lIGFic3RyYWN0aW9uIG9uIHRoZSBwb3J0IG9iamVjdC4K
ICAgICAgICAgaWYgc2VsZi5faXNfY3lnd2luKCk6CiAgICAgICAgICAgICAjIFRoaXMgaXMgYSBn
cm9zcyBoYWNrLCBidXQgaXQgbGV0cyB1cyB1c2UgdGhlIHVwc3RyZWFtIC5jb25mIGZpbGUKICAg
ICAgICAgICAgICMgYW5kIG91ciBjaGVja2VkIGluIGN5Z3dpbi4gVGhpcyB0ZWxscyB0aGUgc2Vy
dmVyIHRoZSByb290CkBAIC0xNjcsMTAgKzE2NCw4IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVI
dHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgICAgICMgcGx1
cyB0aGUgcmVsYXRpdmUgcGF0aHMgdG8gdGhlIC5zbyBmaWxlcyBsaXN0ZWQgaW4gdGhlIC5jb25m
CiAgICAgICAgICAgICAjIGZpbGUuIFdlIGhhdmUgYXBhY2hlL2N5Z3dpbiBjaGVja2VkIGludG8g
b3VyIHRyZWUgc28KICAgICAgICAgICAgICMgcGVvcGxlIGRvbid0IGhhdmUgdG8gaW5zdGFsbCBp
dCBpbnRvIHRoZWlyIGN5Z3dpbi4KLSAgICAgICAgICAgIGN5Z3VzciA9IHNlbGYuX3BvcnRfb2Jq
Ll9wYXRoX2Zyb21fYmFzZSgndGhpcmRfcGFydHknLCAnY3lnd2luJywKLSAgICAgICAgICAgICAg
ICAndXNyJykKLSAgICAgICAgICAgIGh0dHBkX2NvbmYgPSBodHRwZF9jb25mLnJlcGxhY2UoJ1Nl
cnZlclJvb3QgIi91c3IiJywKLSAgICAgICAgICAgICAgICAnU2VydmVyUm9vdCAiJXMiJyAlIHNl
bGYuX2dldF9jeWd3aW5fcGF0aChjeWd1c3IpKQorICAgICAgICAgICAgY3lndXNyID0gc2VsZi5f
cG9ydF9vYmouX3BhdGhfZnJvbV9iYXNlKCd0aGlyZF9wYXJ0eScsICdjeWd3aW4nLCAndXNyJykK
KyAgICAgICAgICAgIGh0dHBkX2NvbmYgPSBodHRwZF9jb25mLnJlcGxhY2UoJ1NlcnZlclJvb3Qg
Ii91c3IiJywgJ1NlcnZlclJvb3QgIiVzIicgJSBzZWxmLl9nZXRfY3lnd2luX3BhdGgoY3lndXNy
KSkKIAogICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShodHRwZF9jb25m
aWdfY29weSwgaHR0cGRfY29uZikKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100395</attachid>
            <date>2011-07-11 17:59:38 -0700</date>
            <delta_ts>2011-07-12 01:08:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64086-20110711175929.patch</filename>
            <type>text/plain</type>
            <size>47628</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA3NjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNmVjNGVhOGQ3ZjZjNDQ4OTQzNGFj
YzgwNWU3ZjE1NzNkNmM4YzFkLi43YjZmY2RjZmFkNGVjMjY1MGVmNzA1ZDdmNDFjNWVjNDkwOTU1
NWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDctMTEgIEVyaWMgU2VpZGVsICA8ZXJp
Y0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gTlJXVCBzaG91bGQgcGljayB1cCB0aGUgcmln
aHQgaHR0cGQgY29uZmlnIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY0MDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZlZCB0aGlzIG9sZCBodHRwZC5jb25mIGZpbGUgKHVzZWQgYnkgVGln
ZXIgYW5kIG9sZCBsaW51eCBkaXN0cm9zKQorICAgICAgICBzaW5jZSBubyBzdXBwb3J0ZWQgV2Vi
S2l0IHBvcnRzIHVzZSBpdCBhbnltb3JlLgorCisgICAgICAgICogaHR0cC9jb25mL2h0dHBkLmNv
bmY6IFJlbW92ZWQuCisKIDIwMTEtMDctMTEgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBGaXggc3ludGF4IGVycm9yIGZyb20gcjkwNzU3LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC9jb25mL2h0dHBkLmNvbmYgYi9MYXlvdXRUZXN0cy9odHRwL2NvbmYv
aHR0cGQuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYyOWM0NzBjNDU0NDYz
ODQ3ZDQzZTY1N2E5NWRkYmZjMTdiZmU5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL2NvbmYvaHR0cGQuY29uZgorKysgL2Rl
di9udWxsCkBAIC0xLDc0NiArMCwwIEBACi0jIwotIyMgaHR0cGQuY29uZiAtLSBBcGFjaGUgSFRU
UCBzZXJ2ZXIgY29uZmlndXJhdGlvbiBmaWxlCi0jIwotCi0jCi0jIEJhc2VkIHVwb24gdGhlIE5D
U0Egc2VydmVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgb3JpZ2luYWxseSBieSBSb2IgTWNDb29sLgot
IwotIyBUaGlzIGlzIHRoZSBtYWluIEFwYWNoZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBmaWxlLiAg
SXQgY29udGFpbnMgdGhlCi0jIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcyB0aGF0IGdpdmUgdGhl
IHNlcnZlciBpdHMgaW5zdHJ1Y3Rpb25zLgotIyBTZWUgPFVSTDpodHRwOi8vaHR0cGQuYXBhY2hl
Lm9yZy9kb2NzLz4gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0Ci0jIHRoZSBkaXJlY3Rp
dmVzLgotIwotIyBEbyBOT1Qgc2ltcGx5IHJlYWQgdGhlIGluc3RydWN0aW9ucyBpbiBoZXJlIHdp
dGhvdXQgdW5kZXJzdGFuZGluZwotIyB3aGF0IHRoZXkgZG8uICBUaGV5J3JlIGhlcmUgb25seSBh
cyBoaW50cyBvciByZW1pbmRlcnMuICBJZiB5b3UgYXJlIHVuc3VyZQotIyBjb25zdWx0IHRoZSBv
bmxpbmUgZG9jcy4gWW91IGhhdmUgYmVlbiB3YXJuZWQuICAKLSMKLSMgQWZ0ZXIgdGhpcyBmaWxl
IGlzIHByb2Nlc3NlZCwgdGhlIHNlcnZlciB3aWxsIGxvb2sgZm9yIGFuZCBwcm9jZXNzCi0jIC9w
cml2YXRlL2V0Yy9odHRwZC9zcm0uY29uZiBhbmQgdGhlbiAvcHJpdmF0ZS9ldGMvaHR0cGQvYWNj
ZXNzLmNvbmYKLSMgdW5sZXNzIHlvdSBoYXZlIG92ZXJyaWRkZW4gdGhlc2Ugd2l0aCBSZXNvdXJj
ZUNvbmZpZyBhbmQvb3IKLSMgQWNjZXNzQ29uZmlnIGRpcmVjdGl2ZXMgaGVyZS4KLSMKLSMgVGhl
IGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcyBhcmUgZ3JvdXBlZCBpbnRvIHRocmVlIGJhc2ljIHNl
Y3Rpb25zOgotIyAgMS4gRGlyZWN0aXZlcyB0aGF0IGNvbnRyb2wgdGhlIG9wZXJhdGlvbiBvZiB0
aGUgQXBhY2hlIHNlcnZlciBwcm9jZXNzIGFzIGEKLSMgICAgIHdob2xlICh0aGUgJ2dsb2JhbCBl
bnZpcm9ubWVudCcpLgotIyAgMi4gRGlyZWN0aXZlcyB0aGF0IGRlZmluZSB0aGUgcGFyYW1ldGVy
cyBvZiB0aGUgJ21haW4nIG9yICdkZWZhdWx0JyBzZXJ2ZXIsCi0jICAgICB3aGljaCByZXNwb25k
cyB0byByZXF1ZXN0cyB0aGF0IGFyZW4ndCBoYW5kbGVkIGJ5IGEgdmlydHVhbCBob3N0LgotIyAg
ICAgVGhlc2UgZGlyZWN0aXZlcyBhbHNvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBz
ZXR0aW5ncwotIyAgICAgb2YgYWxsIHZpcnR1YWwgaG9zdHMuCi0jICAzLiBTZXR0aW5ncyBmb3Ig
dmlydHVhbCBob3N0cywgd2hpY2ggYWxsb3cgV2ViIHJlcXVlc3RzIHRvIGJlIHNlbnQgdG8KLSMg
ICAgIGRpZmZlcmVudCBJUCBhZGRyZXNzZXMgb3IgaG9zdG5hbWVzIGFuZCBoYXZlIHRoZW0gaGFu
ZGxlZCBieSB0aGUKLSMgICAgIHNhbWUgQXBhY2hlIHNlcnZlciBwcm9jZXNzLgotIwotIyBDb25m
aWd1cmF0aW9uIGFuZCBsb2dmaWxlIG5hbWVzOiBJZiB0aGUgZmlsZW5hbWVzIHlvdSBzcGVjaWZ5
IGZvciBtYW55Ci0jIG9mIHRoZSBzZXJ2ZXIncyBjb250cm9sIGZpbGVzIGJlZ2luIHdpdGggIi8i
IChvciAiZHJpdmU6LyIgZm9yIFdpbjMyKSwgdGhlCi0jIHNlcnZlciB3aWxsIHVzZSB0aGF0IGV4
cGxpY2l0IHBhdGguICBJZiB0aGUgZmlsZW5hbWVzIGRvICpub3QqIGJlZ2luCi0jIHdpdGggIi8i
LCB0aGUgdmFsdWUgb2YgU2VydmVyUm9vdCBpcyBwcmVwZW5kZWQgLS0gc28gImxvZ3MvZm9vLmxv
ZyIKLSMgd2l0aCBTZXJ2ZXJSb290IHNldCB0byAiL3Vzci9sb2NhbC9hcGFjaGUiIHdpbGwgYmUg
aW50ZXJwcmV0ZWQgYnkgdGhlCi0jIHNlcnZlciBhcyAiL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9m
b28ubG9nIi4KLSMKLQotIyMjIFNlY3Rpb24gMTogR2xvYmFsIEVudmlyb25tZW50Ci0jCi0jIFRo
ZSBkaXJlY3RpdmVzIGluIHRoaXMgc2VjdGlvbiBhZmZlY3QgdGhlIG92ZXJhbGwgb3BlcmF0aW9u
IG9mIEFwYWNoZSwKLSMgc3VjaCBhcyB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQgcmVxdWVzdHMg
aXQgY2FuIGhhbmRsZSBvciB3aGVyZSBpdAotIyBjYW4gZmluZCBpdHMgY29uZmlndXJhdGlvbiBm
aWxlcy4KLSMKLQotIwotIyBTZXJ2ZXJUeXBlIGlzIGVpdGhlciBpbmV0ZCwgb3Igc3RhbmRhbG9u
ZS4gIEluZXRkIG1vZGUgaXMgb25seSBzdXBwb3J0ZWQgb24KLSMgVW5peCBwbGF0Zm9ybXMuCi0j
Ci1TZXJ2ZXJUeXBlIHN0YW5kYWxvbmUKLQotIwotIyBTZXJ2ZXJSb290OiBUaGUgdG9wIG9mIHRo
ZSBkaXJlY3RvcnkgdHJlZSB1bmRlciB3aGljaCB0aGUgc2VydmVyJ3MKLSMgY29uZmlndXJhdGlv
biwgZXJyb3IsIGFuZCBsb2cgZmlsZXMgYXJlIGtlcHQuCi0jCi0jIE5PVEUhICBJZiB5b3UgaW50
ZW5kIHRvIHBsYWNlIHRoaXMgb24gYW4gTkZTIChvciBvdGhlcndpc2UgbmV0d29yaykKLSMgbW91
bnRlZCBmaWxlc3lzdGVtIHRoZW4gcGxlYXNlIHJlYWQgdGhlIExvY2tGaWxlIGRvY3VtZW50YXRp
b24KLSMgKGF2YWlsYWJsZSBhdCA8VVJMOmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kb2NzL21vZC9j
b3JlLmh0bWwjbG9ja2ZpbGU+KTsKLSMgeW91IHdpbGwgc2F2ZSB5b3Vyc2VsZiBhIGxvdCBvZiB0
cm91YmxlLgotIwotU2VydmVyUm9vdCAiL3VzciIKLQotIwotIyBUaGUgTG9ja0ZpbGUgZGlyZWN0
aXZlIHNldHMgdGhlIHBhdGggdG8gdGhlIGxvY2tmaWxlIHVzZWQgd2hlbiBBcGFjaGUKLSMgaXMg
Y29tcGlsZWQgd2l0aCBlaXRoZXIgVVNFX0ZDTlRMX1NFUklBTElaRURfQUNDRVBUIG9yCi0jIFVT
RV9GTE9DS19TRVJJQUxJWkVEX0FDQ0VQVC4gVGhpcyBkaXJlY3RpdmUgc2hvdWxkIG5vcm1hbGx5
IGJlIGxlZnQgYXQKLSMgaXRzIGRlZmF1bHQgdmFsdWUuIFRoZSBtYWluIHJlYXNvbiBmb3IgY2hh
bmdpbmcgaXQgaXMgaWYgdGhlIGxvZ3MKLSMgZGlyZWN0b3J5IGlzIE5GUyBtb3VudGVkLCBzaW5j
ZSB0aGUgbG9ja2ZpbGUgTVVTVCBCRSBTVE9SRUQgT04gQSBMT0NBTAotIyBESVNLLiBUaGUgUElE
IG9mIHRoZSBtYWluIHNlcnZlciBwcm9jZXNzIGlzIGF1dG9tYXRpY2FsbHkgYXBwZW5kZWQgdG8K
LSMgdGhlIGZpbGVuYW1lLiAKLSMKLUxvY2tGaWxlICIvdG1wL1dlYktpdC9odHRwZC5sb2NrIgot
Ci0jCi0jIFBpZEZpbGU6IFRoZSBmaWxlIGluIHdoaWNoIHRoZSBzZXJ2ZXIgc2hvdWxkIHJlY29y
ZCBpdHMgcHJvY2VzcwotIyBpZGVudGlmaWNhdGlvbiBudW1iZXIgd2hlbiBpdCBzdGFydHMuCi0j
Ci1QaWRGaWxlICIvdG1wL1dlYktpdC9odHRwZC5waWQiCi0KLSMKLSMgU2NvcmVCb2FyZEZpbGU6
IEZpbGUgdXNlZCB0byBzdG9yZSBpbnRlcm5hbCBzZXJ2ZXIgcHJvY2VzcyBpbmZvcm1hdGlvbi4K
LSMgTm90IGFsbCBhcmNoaXRlY3R1cmVzIHJlcXVpcmUgdGhpcy4gIEJ1dCBpZiB5b3VycyBkb2Vz
ICh5b3UnbGwga25vdyBiZWNhdXNlCi0jIHRoaXMgZmlsZSB3aWxsIGJlICBjcmVhdGVkIHdoZW4g
eW91IHJ1biBBcGFjaGUpIHRoZW4geW91ICptdXN0KiBlbnN1cmUgdGhhdAotIyBubyB0d28gaW52
b2NhdGlvbnMgb2YgQXBhY2hlIHNoYXJlIHRoZSBzYW1lIHNjb3JlYm9hcmQgZmlsZS4KLSMKLVNj
b3JlQm9hcmRGaWxlICIvdG1wL1dlYktpdC9odHRwZC5zY29yZWJvYXJkIgotCi0jCi0jIEluIHRo
ZSBzdGFuZGFyZCBjb25maWd1cmF0aW9uLCB0aGUgc2VydmVyIHdpbGwgcHJvY2VzcyBodHRwZC5j
b25mICh0aGlzIAotIyBmaWxlLCBzcGVjaWZpZWQgYnkgdGhlIC1mIGNvbW1hbmQgbGluZSBvcHRp
b24pLCBzcm0uY29uZiwgYW5kIGFjY2Vzcy5jb25mIAotIyBpbiB0aGF0IG9yZGVyLiAgVGhlIGxh
dHRlciB0d28gZmlsZXMgYXJlIG5vdyBkaXN0cmlidXRlZCBlbXB0eSwgYXMgaXQgaXMgCi0jIHJl
Y29tbWVuZGVkIHRoYXQgYWxsIGRpcmVjdGl2ZXMgYmUga2VwdCBpbiBhIHNpbmdsZSBmaWxlIGZv
ciBzaW1wbGljaXR5LiAgCi0jIFRoZSBjb21tZW50ZWQtb3V0IHZhbHVlcyBiZWxvdyBhcmUgdGhl
IGJ1aWx0LWluIGRlZmF1bHRzLiAgWW91IGNhbiBoYXZlIHRoZSAKLSMgc2VydmVyIGlnbm9yZSB0
aGVzZSBmaWxlcyBhbHRvZ2V0aGVyIGJ5IHVzaW5nICIvZGV2L251bGwiIChmb3IgVW5peCkgb3IK
LSMgIm51bCIgKGZvciBXaW4zMikgZm9yIHRoZSBhcmd1bWVudHMgdG8gdGhlIGRpcmVjdGl2ZXMu
Ci0jCi1SZXNvdXJjZUNvbmZpZyAvZGV2L251bGwKLUFjY2Vzc0NvbmZpZyAvZGV2L251bGwKLQot
IwotIyBUaW1lb3V0OiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIHJlY2VpdmVzIGFuZCBz
ZW5kcyB0aW1lIG91dC4KLSMKLVRpbWVvdXQgMzAwCi0KLSMKLSMgS2VlcEFsaXZlOiBXaGV0aGVy
IG9yIG5vdCB0byBhbGxvdyBwZXJzaXN0ZW50IGNvbm5lY3Rpb25zIChtb3JlIHRoYW4KLSMgb25l
IHJlcXVlc3QgcGVyIGNvbm5lY3Rpb24pLiBTZXQgdG8gIk9mZiIgdG8gZGVhY3RpdmF0ZS4KLSMK
LUtlZXBBbGl2ZSBPbgotCi0jCi0jIE1heEtlZXBBbGl2ZVJlcXVlc3RzOiBUaGUgbWF4aW11bSBu
dW1iZXIgb2YgcmVxdWVzdHMgdG8gYWxsb3cKLSMgZHVyaW5nIGEgcGVyc2lzdGVudCBjb25uZWN0
aW9uLiBTZXQgdG8gMCB0byBhbGxvdyBhbiB1bmxpbWl0ZWQgYW1vdW50LgotIyBXZSByZWNvbW1l
bmQgeW91IGxlYXZlIHRoaXMgbnVtYmVyIGhpZ2gsIGZvciBtYXhpbXVtIHBlcmZvcm1hbmNlLgot
IwotTWF4S2VlcEFsaXZlUmVxdWVzdHMgMTAwCi0KLSMKLSMgS2VlcEFsaXZlVGltZW91dDogTnVt
YmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIG5leHQgcmVxdWVzdCBmcm9tIHRoZQotIyBz
YW1lIGNsaWVudCBvbiB0aGUgc2FtZSBjb25uZWN0aW9uLgotIwotS2VlcEFsaXZlVGltZW91dCAx
NQotCi0jCi0jIFNlcnZlci1wb29sIHNpemUgcmVndWxhdGlvbi4gIFJhdGhlciB0aGFuIG1ha2lu
ZyB5b3UgZ3Vlc3MgaG93IG1hbnkKLSMgc2VydmVyIHByb2Nlc3NlcyB5b3UgbmVlZCwgQXBhY2hl
IGR5bmFtaWNhbGx5IGFkYXB0cyB0byB0aGUgbG9hZCBpdAotIyBzZWVzIC0tLSB0aGF0IGlzLCBp
dCB0cmllcyB0byBtYWludGFpbiBlbm91Z2ggc2VydmVyIHByb2Nlc3NlcyB0bwotIyBoYW5kbGUg
dGhlIGN1cnJlbnQgbG9hZCwgcGx1cyBhIGZldyBzcGFyZSBzZXJ2ZXJzIHRvIGhhbmRsZSB0cmFu
c2llbnQKLSMgbG9hZCBzcGlrZXMgKGUuZy4sIG11bHRpcGxlIHNpbXVsdGFuZW91cyByZXF1ZXN0
cyBmcm9tIGEgc2luZ2xlCi0jIE5ldHNjYXBlIGJyb3dzZXIpLgotIwotIyBJdCBkb2VzIHRoaXMg
YnkgcGVyaW9kaWNhbGx5IGNoZWNraW5nIGhvdyBtYW55IHNlcnZlcnMgYXJlIHdhaXRpbmcKLSMg
Zm9yIGEgcmVxdWVzdC4gIElmIHRoZXJlIGFyZSBmZXdlciB0aGFuIE1pblNwYXJlU2VydmVycywg
aXQgY3JlYXRlcwotIyBhIG5ldyBzcGFyZS4gIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gTWF4U3Bh
cmVTZXJ2ZXJzLCBzb21lIG9mIHRoZQotIyBzcGFyZXMgZGllIG9mZi4gIFRoZSBkZWZhdWx0IHZh
bHVlcyBhcmUgcHJvYmFibHkgT0sgZm9yIG1vc3Qgc2l0ZXMuCi0jCi1NaW5TcGFyZVNlcnZlcnMg
MQotTWF4U3BhcmVTZXJ2ZXJzIDUKLQotIwotIyBOdW1iZXIgb2Ygc2VydmVycyB0byBzdGFydCBp
bml0aWFsbHkgLS0tIHNob3VsZCBiZSBhIHJlYXNvbmFibGUgYmFsbHBhcmsKLSMgZmlndXJlLgot
IwotU3RhcnRTZXJ2ZXJzIDEKLQotIwotIyBMaW1pdCBvbiB0b3RhbCBudW1iZXIgb2Ygc2VydmVy
cyBydW5uaW5nLCBpLmUuLCBsaW1pdCBvbiB0aGUgbnVtYmVyCi0jIG9mIGNsaWVudHMgd2hvIGNh
biBzaW11bHRhbmVvdXNseSBjb25uZWN0IC0tLSBpZiB0aGlzIGxpbWl0IGlzIGV2ZXIKLSMgcmVh
Y2hlZCwgY2xpZW50cyB3aWxsIGJlIExPQ0tFRCBPVVQsIHNvIGl0IHNob3VsZCBOT1QgQkUgU0VU
IFRPTyBMT1cuCi0jIEl0IGlzIGludGVuZGVkIG1haW5seSBhcyBhIGJyYWtlIHRvIGtlZXAgYSBy
dW5hd2F5IHNlcnZlciBmcm9tIHRha2luZwotIyB0aGUgc3lzdGVtIHdpdGggaXQgYXMgaXQgc3Bp
cmFscyBkb3duLi4uCi0jCi1NYXhDbGllbnRzIDE1MAotCi0jCi0jIE1heFJlcXVlc3RzUGVyQ2hp
bGQ6IHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgZWFjaCBjaGlsZCBwcm9jZXNzIGlzCi0jIGFsbG93
ZWQgdG8gcHJvY2VzcyBiZWZvcmUgdGhlIGNoaWxkIGRpZXMuICBUaGUgY2hpbGQgd2lsbCBleGl0
IHNvCi0jIGFzIHRvIGF2b2lkIHByb2JsZW1zIGFmdGVyIHByb2xvbmdlZCB1c2Ugd2hlbiBBcGFj
aGUgKGFuZCBtYXliZSB0aGUKLSMgbGlicmFyaWVzIGl0IHVzZXMpIGxlYWsgbWVtb3J5IG9yIG90
aGVyIHJlc291cmNlcy4gIE9uIG1vc3Qgc3lzdGVtcywgdGhpcwotIyBpc24ndCByZWFsbHkgbmVl
ZGVkLCBidXQgYSBmZXcgKHN1Y2ggYXMgU29sYXJpcykgZG8gaGF2ZSBub3RhYmxlIGxlYWtzCi0j
IGluIHRoZSBsaWJyYXJpZXMuIEZvciB0aGVzZSBwbGF0Zm9ybXMsIHNldCB0byBzb21ldGhpbmcg
bGlrZSAxMDAwMAotIyBvciBzbzsgYSBzZXR0aW5nIG9mIDAgbWVhbnMgdW5saW1pdGVkLgotIwot
IyBOT1RFOiBUaGlzIHZhbHVlIGRvZXMgbm90IGluY2x1ZGUga2VlcGFsaXZlIHJlcXVlc3RzIGFm
dGVyIHRoZSBpbml0aWFsCi0jICAgICAgIHJlcXVlc3QgcGVyIGNvbm5lY3Rpb24uIEZvciBleGFt
cGxlLCBpZiBhIGNoaWxkIHByb2Nlc3MgaGFuZGxlcwotIyAgICAgICBhbiBpbml0aWFsIHJlcXVl
c3QgYW5kIDEwIHN1YnNlcXVlbnQgImtlcHRhbGl2ZSIgcmVxdWVzdHMsIGl0Ci0jICAgICAgIHdv
dWxkIG9ubHkgY291bnQgYXMgMSByZXF1ZXN0IHRvd2FyZHMgdGhpcyBsaW1pdC4KLSMKLU1heFJl
cXVlc3RzUGVyQ2hpbGQgMTAwMDAwCi0KLSMKLSMgTGlzdGVuOiBBbGxvd3MgeW91IHRvIGJpbmQg
QXBhY2hlIHRvIHNwZWNpZmljIElQIGFkZHJlc3NlcyBhbmQvb3IKLSMgcG9ydHMsIGluc3RlYWQg
b2YgdGhlIGRlZmF1bHQuIFNlZSBhbHNvIHRoZSA8VmlydHVhbEhvc3Q+Ci0jIGRpcmVjdGl2ZS4K
LSMKLSMgQ29uZmlndXJlZCBmcm9tIHRoZSBodHRwZCBjb21tYW5kIGxpbmUgZm9yIFdlYktpdCBs
YXlvdXQgdGVzdHMuCi0jIFBvcnQgODQ0MyBpcyBoYXJkLWNvZGVkIGFzIGl0IGlzIG5lZWRlZCBm
b3IgdGhlIEhUVFBTIGNvbmZpZ3VyYXRpb24gbGF0ZXIgb24uCi0jCi0jTGlzdGVuIDMwMDAKLUxp
c3RlbiAxMjcuMC4wLjE6ODA4MAotTGlzdGVuIDEyNy4wLjAuMTo4NDQzCi0jIEFwYWNoZSAxLjMg
b25seSBzdXBwb3J0cyBJUHY0LCBzbyB3ZSBkbyBub3QgbGlzdGVuIG9uIDo6MSAoSVB2NiBsb29w
YmFjaykuCi0jIFRoaXMgbWF5IGNhdXNlIGZsYWt5IHRlc3RzIG9uIHN5c3RlbXMgd2hpY2ggc3Vw
cG9ydCBJUHY2IGlmIGxvY2FsaG9zdCByZXNvbHZlcwotIyB0byA6OjEgaW4gYWRkaXRpb24gdG8g
MTI3LjAuMC4xLgotIyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM3MTA0Ci0KLSMKLSMgRHluYW1pYyBTaGFyZWQgT2JqZWN0IChEU08pIFN1cHBvcnQKLSMKLSMg
VG8gYmUgYWJsZSB0byB1c2UgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYSBtb2R1bGUgd2hpY2ggd2Fz
IGJ1aWx0IGFzIGEgRFNPIHlvdQotIyBoYXZlIHRvIHBsYWNlIGNvcnJlc3BvbmRpbmcgYExvYWRN
b2R1bGUnIGxpbmVzIGF0IHRoaXMgbG9jYXRpb24gc28gdGhlCi0jIGRpcmVjdGl2ZXMgY29udGFp
bmVkIGluIGl0IGFyZSBhY3R1YWxseSBhdmFpbGFibGUgX2JlZm9yZV8gdGhleSBhcmUgdXNlZC4K
LSMgUGxlYXNlIHJlYWQgdGhlIGZpbGUgaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy9kc28u
aHRtbCBmb3IgbW9yZQotIyBkZXRhaWxzIGFib3V0IHRoZSBEU08gbWVjaGFuaXNtIGFuZCBydW4g
YGh0dHBkIC1sJyBmb3IgdGhlIGxpc3Qgb2YgYWxyZWFkeQotIyBidWlsdC1pbiAoc3RhdGljYWxs
eSBsaW5rZWQgYW5kIHRodXMgYWx3YXlzIGF2YWlsYWJsZSkgbW9kdWxlcyBpbiB5b3VyIGh0dHBk
Ci0jIGJpbmFyeS4KLSMKLSMgTm90ZTogVGhlIG9yZGVyIGluIHdoaWNoIG1vZHVsZXMgYXJlIGxv
YWRlZCBpcyBpbXBvcnRhbnQuICBEb24ndCBjaGFuZ2UKLSMgdGhlIG9yZGVyIGJlbG93IHdpdGhv
dXQgZXhwZXJ0IGFkdmljZS4KLSMKLSMgRXhhbXBsZToKLSMgTG9hZE1vZHVsZSBmb29fbW9kdWxl
IGxpYmV4ZWMvbW9kX2Zvby5zbwotI0xvYWRNb2R1bGUgdmhvc3RfYWxpYXNfbW9kdWxlIGxpYmV4
ZWMvaHR0cGQvbW9kX3Zob3N0X2FsaWFzLnNvCi0jTG9hZE1vZHVsZSBlbnZfbW9kdWxlICAgICAg
ICAgbGliZXhlYy9odHRwZC9tb2RfZW52LnNvCi1Mb2FkTW9kdWxlIGNvbmZpZ19sb2dfbW9kdWxl
ICBsaWJleGVjL2h0dHBkL21vZF9sb2dfY29uZmlnLnNvCi0jTG9hZE1vZHVsZSBtaW1lX21hZ2lj
X21vZHVsZSAgbGliZXhlYy9odHRwZC9tb2RfbWltZV9tYWdpYy5zbwotTG9hZE1vZHVsZSBtaW1l
X21vZHVsZSAgICAgICAgbGliZXhlYy9odHRwZC9tb2RfbWltZS5zbwotTG9hZE1vZHVsZSBuZWdv
dGlhdGlvbl9tb2R1bGUgbGliZXhlYy9odHRwZC9tb2RfbmVnb3RpYXRpb24uc28KLSNMb2FkTW9k
dWxlIHN0YXR1c19tb2R1bGUgICAgICBsaWJleGVjL2h0dHBkL21vZF9zdGF0dXMuc28KLSNMb2Fk
TW9kdWxlIGluZm9fbW9kdWxlICAgICAgICBsaWJleGVjL2h0dHBkL21vZF9pbmZvLnNvCi1Mb2Fk
TW9kdWxlIGluY2x1ZGVzX21vZHVsZSAgICBsaWJleGVjL2h0dHBkL21vZF9pbmNsdWRlLnNvCi0j
TG9hZE1vZHVsZSBhdXRvaW5kZXhfbW9kdWxlICAgbGliZXhlYy9odHRwZC9tb2RfYXV0b2luZGV4
LnNvCi0jTG9hZE1vZHVsZSBkaXJfbW9kdWxlICAgICAgICAgbGliZXhlYy9odHRwZC9tb2RfZGly
LnNvCi1Mb2FkTW9kdWxlIGNnaV9tb2R1bGUgICAgICAgICBsaWJleGVjL2h0dHBkL21vZF9jZ2ku
c28KLUxvYWRNb2R1bGUgYXNpc19tb2R1bGUgICAgICAgIGxpYmV4ZWMvaHR0cGQvbW9kX2FzaXMu
c28KLUxvYWRNb2R1bGUgaW1hcF9tb2R1bGUgICAgICAgIGxpYmV4ZWMvaHR0cGQvbW9kX2ltYXAu
c28KLUxvYWRNb2R1bGUgYWN0aW9uX21vZHVsZSAgICAgIGxpYmV4ZWMvaHR0cGQvbW9kX2FjdGlv
bnMuc28KLSNMb2FkTW9kdWxlIHNwZWxpbmdfbW9kdWxlICAgICBsaWJleGVjL2h0dHBkL21vZF9z
cGVsaW5nLnNvCi0jTG9hZE1vZHVsZSB1c2VyZGlyX21vZHVsZSAgICAgbGliZXhlYy9odHRwZC9t
b2RfdXNlcmRpci5zbwotTG9hZE1vZHVsZSBhbGlhc19tb2R1bGUgICAgICAgbGliZXhlYy9odHRw
ZC9tb2RfYWxpYXMuc28KLUxvYWRNb2R1bGUgcmV3cml0ZV9tb2R1bGUgICAgIGxpYmV4ZWMvaHR0
cGQvbW9kX3Jld3JpdGUuc28KLUxvYWRNb2R1bGUgYWNjZXNzX21vZHVsZSAgICAgIGxpYmV4ZWMv
aHR0cGQvbW9kX2FjY2Vzcy5zbwotTG9hZE1vZHVsZSBhdXRoX21vZHVsZSAgICAgICAgbGliZXhl
Yy9odHRwZC9tb2RfYXV0aC5zbwotI0xvYWRNb2R1bGUgYW5vbl9hdXRoX21vZHVsZSAgIGxpYmV4
ZWMvaHR0cGQvbW9kX2F1dGhfYW5vbi5zbwotI0xvYWRNb2R1bGUgZGJtX2F1dGhfbW9kdWxlICAg
IGxpYmV4ZWMvaHR0cGQvbW9kX2F1dGhfZGJtLnNvCi0jTG9hZE1vZHVsZSBkaWdlc3RfbW9kdWxl
ICAgICAgbGliZXhlYy9odHRwZC9tb2RfZGlnZXN0LnNvCi0jTG9hZE1vZHVsZSBwcm94eV9tb2R1
bGUgICAgICAgbGliZXhlYy9odHRwZC9saWJwcm94eS5zbwotI0xvYWRNb2R1bGUgY2Vybl9tZXRh
X21vZHVsZSAgIGxpYmV4ZWMvaHR0cGQvbW9kX2Nlcm5fbWV0YS5zbwotI0xvYWRNb2R1bGUgZXhw
aXJlc19tb2R1bGUgICAgIGxpYmV4ZWMvaHR0cGQvbW9kX2V4cGlyZXMuc28KLUxvYWRNb2R1bGUg
aGVhZGVyc19tb2R1bGUgICAgIGxpYmV4ZWMvaHR0cGQvbW9kX2hlYWRlcnMuc28KLSNMb2FkTW9k
dWxlIHVzZXJ0cmFja19tb2R1bGUgICBsaWJleGVjL2h0dHBkL21vZF91c2VydHJhY2suc28KLSNM
b2FkTW9kdWxlIGxvZ19mb3JlbnNpY19tb2R1bGUgbGliZXhlYy9odHRwZC9tb2RfbG9nX2ZvcmVu
c2ljLnNvCi0jTG9hZE1vZHVsZSB1bmlxdWVfaWRfbW9kdWxlICAgbGliZXhlYy9odHRwZC9tb2Rf
dW5pcXVlX2lkLnNvCi0jTG9hZE1vZHVsZSBzZXRlbnZpZl9tb2R1bGUgICAgbGliZXhlYy9odHRw
ZC9tb2Rfc2V0ZW52aWYuc28KLSNMb2FkTW9kdWxlIGRhdl9tb2R1bGUgICAgICAgICBsaWJleGVj
L2h0dHBkL2xpYmRhdi5zbwotTG9hZE1vZHVsZSBzc2xfbW9kdWxlICAgICAgICAgbGliZXhlYy9o
dHRwZC9saWJzc2wuc28KLSNMb2FkTW9kdWxlIHBlcmxfbW9kdWxlICAgICAgICBsaWJleGVjL2h0
dHBkL2xpYnBlcmwuc28KLUxvYWRNb2R1bGUgcGhwNF9tb2R1bGUgICAgICAgIGxpYmV4ZWMvaHR0
cGQvbGlicGhwNC5zbwotTG9hZE1vZHVsZSBoZnNfYXBwbGVfbW9kdWxlICAgbGliZXhlYy9odHRw
ZC9tb2RfaGZzX2FwcGxlLnNvCi0jTG9hZE1vZHVsZSBib25qb3VyX21vZHVsZSAgICAgbGliZXhl
Yy9odHRwZC9tb2RfYm9uam91ci5zbwotCi0jICBSZWNvbnN0cnVjdGlvbiBvZiB0aGUgY29tcGxl
dGUgbW9kdWxlIGxpc3QgZnJvbSBhbGwgYXZhaWxhYmxlIG1vZHVsZXMKLSMgIChzdGF0aWMgYW5k
IHNoYXJlZCBvbmVzKSB0byBhY2hpZXZlIGNvcnJlY3QgbW9kdWxlIGV4ZWN1dGlvbiBvcmRlci4K
LSMgIFtXSEVORVZFUiBZT1UgQ0hBTkdFIFRIRSBMT0FETU9EVUxFIFNFQ1RJT04gQUJPVkUgVVBE
QVRFIFRISVMsIFRPT10KLUNsZWFyTW9kdWxlTGlzdAotI0FkZE1vZHVsZSBtb2Rfdmhvc3RfYWxp
YXMuYwotI0FkZE1vZHVsZSBtb2RfZW52LmMKLUFkZE1vZHVsZSBtb2RfbG9nX2NvbmZpZy5jCi0j
QWRkTW9kdWxlIG1vZF9taW1lX21hZ2ljLmMKLUFkZE1vZHVsZSBtb2RfbWltZS5jCi1BZGRNb2R1
bGUgbW9kX25lZ290aWF0aW9uLmMKLSNBZGRNb2R1bGUgbW9kX3N0YXR1cy5jCi0jQWRkTW9kdWxl
IG1vZF9pbmZvLmMKLUFkZE1vZHVsZSBtb2RfaW5jbHVkZS5jCi0jQWRkTW9kdWxlIG1vZF9hdXRv
aW5kZXguYwotI0FkZE1vZHVsZSBtb2RfZGlyLmMKLUFkZE1vZHVsZSBtb2RfY2dpLmMKLUFkZE1v
ZHVsZSBtb2RfYXNpcy5jCi1BZGRNb2R1bGUgbW9kX2ltYXAuYwotQWRkTW9kdWxlIG1vZF9hY3Rp
b25zLmMKLSNBZGRNb2R1bGUgbW9kX3NwZWxpbmcuYwotI0FkZE1vZHVsZSBtb2RfdXNlcmRpci5j
Ci1BZGRNb2R1bGUgbW9kX2FsaWFzLmMKLUFkZE1vZHVsZSBtb2RfcmV3cml0ZS5jCi1BZGRNb2R1
bGUgbW9kX2FjY2Vzcy5jCi1BZGRNb2R1bGUgbW9kX2F1dGguYwotI0FkZE1vZHVsZSBtb2RfYXV0
aF9hbm9uLmMKLSNBZGRNb2R1bGUgbW9kX2F1dGhfZGJtLmMKLSNBZGRNb2R1bGUgbW9kX2RpZ2Vz
dC5jCi0jQWRkTW9kdWxlIG1vZF9wcm94eS5jCi0jQWRkTW9kdWxlIG1vZF9jZXJuX21ldGEuYwot
I0FkZE1vZHVsZSBtb2RfZXhwaXJlcy5jCi1BZGRNb2R1bGUgbW9kX2hlYWRlcnMuYwotI0FkZE1v
ZHVsZSBtb2RfdXNlcnRyYWNrLmMKLSNBZGRNb2R1bGUgbW9kX2xvZ19mb3JlbnNpYy5jCi0jQWRk
TW9kdWxlIG1vZF91bmlxdWVfaWQuYwotQWRkTW9kdWxlIG1vZF9zby5jCi0jQWRkTW9kdWxlIG1v
ZF9zZXRlbnZpZi5jCi0jQWRkTW9kdWxlIG1vZF9kYXYuYwotQWRkTW9kdWxlIG1vZF9zc2wuYwot
I0FkZE1vZHVsZSBtb2RfcGVybC5jCi1BZGRNb2R1bGUgbW9kX3BocDQuYwotQWRkTW9kdWxlIG1v
ZF9oZnNfYXBwbGUuYwotI0FkZE1vZHVsZSBtb2RfYm9uam91ci5jCi0KLSMjIyBTZWN0aW9uIDI6
ICdNYWluJyBzZXJ2ZXIgY29uZmlndXJhdGlvbgotIwotIyBUaGUgZGlyZWN0aXZlcyBpbiB0aGlz
IHNlY3Rpb24gc2V0IHVwIHRoZSB2YWx1ZXMgdXNlZCBieSB0aGUgJ21haW4nCi0jIHNlcnZlciwg
d2hpY2ggcmVzcG9uZHMgdG8gYW55IHJlcXVlc3RzIHRoYXQgYXJlbid0IGhhbmRsZWQgYnkgYQot
IyA8VmlydHVhbEhvc3Q+IGRlZmluaXRpb24uICBUaGVzZSB2YWx1ZXMgYWxzbyBwcm92aWRlIGRl
ZmF1bHRzIGZvcgotIyBhbnkgPFZpcnR1YWxIb3N0PiBjb250YWluZXJzIHlvdSBtYXkgZGVmaW5l
IGxhdGVyIGluIHRoZSBmaWxlLgotIwotIyBBbGwgb2YgdGhlc2UgZGlyZWN0aXZlcyBtYXkgYXBw
ZWFyIGluc2lkZSA8VmlydHVhbEhvc3Q+IGNvbnRhaW5lcnMsCi0jIGluIHdoaWNoIGNhc2UgdGhl
c2UgZGVmYXVsdCBzZXR0aW5ncyB3aWxsIGJlIG92ZXJyaWRkZW4gZm9yIHRoZQotIyB2aXJ0dWFs
IGhvc3QgYmVpbmcgZGVmaW5lZC4KLSMKLQotIwotIyBTZXJ2ZXJOYW1lIGFsbG93cyB5b3UgdG8g
c2V0IGEgaG9zdCBuYW1lIHdoaWNoIGlzIHNlbnQgYmFjayB0byBjbGllbnRzIGZvcgotIyB5b3Vy
IHNlcnZlciBpZiBpdCdzIGRpZmZlcmVudCB0aGFuIHRoZSBvbmUgdGhlIHByb2dyYW0gd291bGQg
Z2V0IChpLmUuLCB1c2UKLSMgInd3dyIgaW5zdGVhZCBvZiB0aGUgaG9zdCdzIHJlYWwgbmFtZSku
Ci0jCi0jIE5vdGU6IFlvdSBjYW5ub3QganVzdCBpbnZlbnQgaG9zdCBuYW1lcyBhbmQgaG9wZSB0
aGV5IHdvcmsuIFRoZSBuYW1lIHlvdSAKLSMgZGVmaW5lIGhlcmUgbXVzdCBiZSBhIHZhbGlkIERO
UyBuYW1lIGZvciB5b3VyIGhvc3QuIElmIHlvdSBkb24ndCB1bmRlcnN0YW5kCi0jIHRoaXMsIGFz
ayB5b3VyIG5ldHdvcmsgYWRtaW5pc3RyYXRvci4KLSMgSWYgeW91ciBob3N0IGRvZXNuJ3QgaGF2
ZSBhIHJlZ2lzdGVyZWQgRE5TIG5hbWUsIGVudGVyIGl0cyBJUCBhZGRyZXNzIGhlcmUuCi0jIFlv
dSB3aWxsIGhhdmUgdG8gYWNjZXNzIGl0IGJ5IGl0cyBhZGRyZXNzIChlLmcuLCBodHRwOi8vMTIz
LjQ1LjY3Ljg5LykKLSMgYW55d2F5LCBhbmQgdGhpcyB3aWxsIG1ha2UgcmVkaXJlY3Rpb25zIHdv
cmsgaW4gYSBzZW5zaWJsZSB3YXkuCi0jCi0jIDEyNy4wLjAuMSBpcyB0aGUgVENQL0lQIGxvY2Fs
IGxvb3AtYmFjayBhZGRyZXNzLCBvZnRlbiBuYW1lZCBsb2NhbGhvc3QuIFlvdXIgCi0jIG1hY2hp
bmUgYWx3YXlzIGtub3dzIGl0c2VsZiBieSB0aGlzIGFkZHJlc3MuIElmIHlvdSB1c2UgQXBhY2hl
IHN0cmljdGx5IGZvciAKLSMgbG9jYWwgdGVzdGluZyBhbmQgZGV2ZWxvcG1lbnQsIHlvdSBtYXkg
dXNlIDEyNy4wLjAuMSBhcyB0aGUgc2VydmVyIG5hbWUuCi0jCi1TZXJ2ZXJOYW1lIDEyNy4wLjAu
MQotCi0jCi0jIERvY3VtZW50Um9vdDogVGhlIGRpcmVjdG9yeSBvdXQgb2Ygd2hpY2ggeW91IHdp
bGwgc2VydmUgeW91cgotIyBkb2N1bWVudHMuIEJ5IGRlZmF1bHQsIGFsbCByZXF1ZXN0cyBhcmUg
dGFrZW4gZnJvbSB0aGlzIGRpcmVjdG9yeSwgYnV0Ci0jIHN5bWJvbGljIGxpbmtzIGFuZCBhbGlh
c2VzIG1heSBiZSB1c2VkIHRvIHBvaW50IHRvIG90aGVyIGxvY2F0aW9ucy4KLSMKLSMgQ29uZmln
dXJlZCBmcm9tIHRoZSBodHRwZCBjb21tYW5kIGxpbmUgZm9yIFdlYktpdCBsYXlvdXQgdGVzdHMu
Ci0jRG9jdW1lbnRSb290ICIvTGlicmFyeS9XZWJTZXJ2ZXIvRG9jdW1lbnRzIgotCi0jCi0jIEVh
Y2ggZGlyZWN0b3J5IHRvIHdoaWNoIEFwYWNoZSBoYXMgYWNjZXNzLCBjYW4gYmUgY29uZmlndXJl
ZCB3aXRoIHJlc3BlY3QKLSMgdG8gd2hpY2ggc2VydmljZXMgYW5kIGZlYXR1cmVzIGFyZSBhbGxv
d2VkIGFuZC9vciBkaXNhYmxlZCBpbiB0aGF0Ci0jIGRpcmVjdG9yeSAoYW5kIGl0cyBzdWJkaXJl
Y3RvcmllcykuIAotIwotPERpcmVjdG9yeSAvPgotIwotIyBUaGlzIG1heSBhbHNvIGJlICJOb25l
IiwgIkFsbCIsIG9yIGFueSBjb21iaW5hdGlvbiBvZiAiSW5kZXhlcyIsCi0jICJJbmNsdWRlcyIs
ICJGb2xsb3dTeW1MaW5rcyIsICJFeGVjQ0dJIiwgb3IgIk11bHRpVmlld3MiLgotIwotIyBOb3Rl
IHRoYXQgIk11bHRpVmlld3MiIG11c3QgYmUgbmFtZWQgKmV4cGxpY2l0bHkqIC0tLSAiT3B0aW9u
cyBBbGwiCi0jIGRvZXNuJ3QgZ2l2ZSBpdCB0byB5b3UuCi0jCi0gICAgT3B0aW9ucyBJbmRleGVz
IEZvbGxvd1N5bUxpbmtzIE11bHRpVmlld3MgRXhlY0NHSSBJbmNsdWRlcwotCi0jCi0jIFRoaXMg
Y29udHJvbHMgd2hpY2ggb3B0aW9ucyB0aGUgLmh0YWNjZXNzIGZpbGVzIGluIGRpcmVjdG9yaWVz
IGNhbgotIyBvdmVycmlkZS4gQ2FuIGFsc28gYmUgIkFsbCIsIG9yIGFueSBjb21iaW5hdGlvbiBv
ZiAiT3B0aW9ucyIsICJGaWxlSW5mbyIsIAotIyAiQXV0aENvbmZpZyIsIGFuZCAiTGltaXQiCi0j
Ci0gICAgQWxsb3dPdmVycmlkZSBBbGwKLQotIwotIyBDb250cm9scyB3aG8gY2FuIGdldCBzdHVm
ZiBmcm9tIHRoaXMgc2VydmVyLgotIwotICAgIE9yZGVyIGFsbG93LGRlbnkKLSAgICBBbGxvdyBm
cm9tIGFsbAotPC9EaXJlY3Rvcnk+Ci0KLSMKLSMgQWNjZXNzRmlsZU5hbWU6IFRoZSBuYW1lIG9m
IHRoZSBmaWxlIHRvIGxvb2sgZm9yIGluIGVhY2ggZGlyZWN0b3J5Ci0jIGZvciBhY2Nlc3MgY29u
dHJvbCBpbmZvcm1hdGlvbi4KLSMKLUFjY2Vzc0ZpbGVOYW1lIC5odGFjY2VzcwotCi0jCi0jIFRo
ZSBmb2xsb3dpbmcgbGluZXMgcHJldmVudCAuaHRhY2Nlc3MgZmlsZXMgZnJvbSBiZWluZyB2aWV3
ZWQgYnkKLSMgV2ViIGNsaWVudHMuICBTaW5jZSAuaHRhY2Nlc3MgZmlsZXMgb2Z0ZW4gY29udGFp
biBhdXRob3JpemF0aW9uCi0jIGluZm9ybWF0aW9uLCBhY2Nlc3MgaXMgZGlzYWxsb3dlZCBmb3Ig
c2VjdXJpdHkgcmVhc29ucy4gIENvbW1lbnQKLSMgdGhlc2UgbGluZXMgb3V0IGlmIHlvdSB3YW50
IFdlYiB2aXNpdG9ycyB0byBzZWUgdGhlIGNvbnRlbnRzIG9mCi0jIC5odGFjY2VzcyBmaWxlcy4g
IElmIHlvdSBjaGFuZ2UgdGhlIEFjY2Vzc0ZpbGVOYW1lIGRpcmVjdGl2ZSBhYm92ZSwKLSMgYmUg
c3VyZSB0byBtYWtlIHRoZSBjb3JyZXNwb25kaW5nIGNoYW5nZXMgaGVyZS4KLSMKLSMgQWxzbywg
Zm9sa3MgdGVuZCB0byB1c2UgbmFtZXMgc3VjaCBhcyAuaHRwYXNzd2QgZm9yIHBhc3N3b3JkCi0j
IGZpbGVzLCBzbyB0aGlzIHdpbGwgcHJvdGVjdCB0aG9zZSBhcyB3ZWxsLgotIwotPEZpbGVzIH4g
Il5cLihbSGhdW1R0XXxbRGRdW1NzXV9bU3NdKSI+Ci0gICAgT3JkZXIgYWxsb3csZGVueQotICAg
IERlbnkgZnJvbSBhbGwKLSAgICBTYXRpc2Z5IEFsbAotPC9GaWxlcz4KLQotIwotIyBBcHBsZSBz
cGVjaWZpYyBmaWxlc3lzdGVtIHByb3RlY3Rpb24uCi0jIAotCi08RmlsZXMgInJzcmMiPgotICAg
IE9yZGVyIGFsbG93LGRlbnkKLSAgICBEZW55IGZyb20gYWxsCi0gICAgU2F0aXNmeSBBbGwKLTwv
RmlsZXM+Ci0KLTxEaXJlY3RvcnkgIH4gIi4qXC5cLm5hbWVkZm9yayI+Ci0gICAgT3JkZXIgYWxs
b3csZGVueQotICAgIERlbnkgZnJvbSBhbGwKLSAgICBTYXRpc2Z5IEFsbAotPC9EaXJlY3Rvcnk+
Ci0KLSMKLSMgQ2FjaGVOZWdvdGlhdGVkRG9jczogQnkgZGVmYXVsdCwgQXBhY2hlIHNlbmRzICJQ
cmFnbWE6IG5vLWNhY2hlIiB3aXRoIGVhY2gKLSMgZG9jdW1lbnQgdGhhdCB3YXMgbmVnb3RpYXRl
ZCBvbiB0aGUgYmFzaXMgb2YgY29udGVudC4gVGhpcyBhc2tzIHByb3h5Ci0jIHNlcnZlcnMgbm90
IHRvIGNhY2hlIHRoZSBkb2N1bWVudC4gVW5jb21tZW50aW5nIHRoZSBmb2xsb3dpbmcgbGluZSBk
aXNhYmxlcwotIyB0aGlzIGJlaGF2aW9yLCBhbmQgcHJveGllcyB3aWxsIGJlIGFsbG93ZWQgdG8g
Y2FjaGUgdGhlIGRvY3VtZW50cy4KLSMKLSNDYWNoZU5lZ290aWF0ZWREb2NzCi0KLSMKLSMgVXNl
Q2Fub25pY2FsTmFtZTogIChuZXcgZm9yIDEuMykgIFdpdGggdGhpcyBzZXR0aW5nIHR1cm5lZCBv
biwgd2hlbmV2ZXIKLSMgQXBhY2hlIG5lZWRzIHRvIGNvbnN0cnVjdCBhIHNlbGYtcmVmZXJlbmNp
bmcgVVJMIChhIFVSTCB0aGF0IHJlZmVycyBiYWNrCi0jIHRvIHRoZSBzZXJ2ZXIgdGhlIHJlc3Bv
bnNlIGlzIGNvbWluZyBmcm9tKSBpdCB3aWxsIHVzZSBTZXJ2ZXJOYW1lIGFuZAotIyBQb3J0IHRv
IGZvcm0gYSAiY2Fub25pY2FsIiBuYW1lLiAgV2l0aCB0aGlzIHNldHRpbmcgb2ZmLCBBcGFjaGUg
d2lsbAotIyB1c2UgdGhlIGhvc3RuYW1lOnBvcnQgdGhhdCB0aGUgY2xpZW50IHN1cHBsaWVkLCB3
aGVuIHBvc3NpYmxlLiAgVGhpcwotIyBhbHNvIGFmZmVjdHMgU0VSVkVSX05BTUUgYW5kIFNFUlZF
Ul9QT1JUIGluIENHSSBzY3JpcHRzLgotIwotVXNlQ2Fub25pY2FsTmFtZSBPbgotCi0jCi0jIFR5
cGVzQ29uZmlnIGRlc2NyaWJlcyB3aGVyZSB0aGUgbWltZS50eXBlcyBmaWxlIChvciBlcXVpdmFs
ZW50KSBpcwotIyB0byBiZSBmb3VuZC4KLSMKLSMgQ29uZmlndXJlZCBmcm9tIHRoZSBodHRwZCBj
b21tYW5kIGxpbmUgZm9yIFdlYktpdCBsYXlvdXQgdGVzdHMuCi0jCi0jPElmTW9kdWxlIG1vZF9t
aW1lLmM+Ci0jICAgIFR5cGVzQ29uZmlnIC9wcml2YXRlL2V0Yy9odHRwZC9taW1lLnR5cGVzCi0j
PC9JZk1vZHVsZT4KLQotIwotIyBEZWZhdWx0VHlwZSBpcyB0aGUgZGVmYXVsdCBNSU1FIHR5cGUg
dGhlIHNlcnZlciB3aWxsIHVzZSBmb3IgYSBkb2N1bWVudAotIyBpZiBpdCBjYW5ub3Qgb3RoZXJ3
aXNlIGRldGVybWluZSBvbmUsIHN1Y2ggYXMgZnJvbSBmaWxlbmFtZSBleHRlbnNpb25zLgotIyBJ
ZiB5b3VyIHNlcnZlciBjb250YWlucyBtb3N0bHkgdGV4dCBvciBIVE1MIGRvY3VtZW50cywgInRl
eHQvcGxhaW4iIGlzCi0jIGEgZ29vZCB2YWx1ZS4gIElmIG1vc3Qgb2YgeW91ciBjb250ZW50IGlz
IGJpbmFyeSwgc3VjaCBhcyBhcHBsaWNhdGlvbnMKLSMgb3IgaW1hZ2VzLCB5b3UgbWF5IHdhbnQg
dG8gdXNlICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIGluc3RlYWQgdG8KLSMga2VlcCBicm93
c2VycyBmcm9tIHRyeWluZyB0byBkaXNwbGF5IGJpbmFyeSBmaWxlcyBhcyB0aG91Z2ggdGhleSBh
cmUKLSMgdGV4dC4KLSMKLURlZmF1bHRUeXBlIHRleHQvcGxhaW4KLQotIwotIyBIb3N0bmFtZUxv
b2t1cHM6IExvZyB0aGUgbmFtZXMgb2YgY2xpZW50cyBvciBqdXN0IHRoZWlyIElQIGFkZHJlc3Nl
cwotIyBlLmcuLCB3d3cuYXBhY2hlLm9yZyAob24pIG9yIDIwNC42Mi4xMjkuMTMyIChvZmYpLgot
IyBUaGUgZGVmYXVsdCBpcyBvZmYgYmVjYXVzZSBpdCdkIGJlIG92ZXJhbGwgYmV0dGVyIGZvciB0
aGUgbmV0IGlmIHBlb3BsZQotIyBoYWQgdG8ga25vd2luZ2x5IHR1cm4gdGhpcyBmZWF0dXJlIG9u
LCBzaW5jZSBlbmFibGluZyBpdCBtZWFucyB0aGF0Ci0jIGVhY2ggY2xpZW50IHJlcXVlc3Qgd2ls
bCByZXN1bHQgaW4gQVQgTEVBU1Qgb25lIGxvb2t1cCByZXF1ZXN0IHRvIHRoZQotIyBuYW1lc2Vy
dmVyLgotIwotSG9zdG5hbWVMb29rdXBzIE9mZgotCi0jCi0jIEVycm9yTG9nOiBUaGUgbG9jYXRp
b24gb2YgdGhlIGVycm9yIGxvZyBmaWxlLgotIyBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYW4gRXJy
b3JMb2cgZGlyZWN0aXZlIHdpdGhpbiBhIDxWaXJ0dWFsSG9zdD4KLSMgY29udGFpbmVyLCBlcnJv
ciBtZXNzYWdlcyByZWxhdGluZyB0byB0aGF0IHZpcnR1YWwgaG9zdCB3aWxsIGJlCi0jIGxvZ2dl
ZCBoZXJlLiAgSWYgeW91ICpkbyogZGVmaW5lIGFuIGVycm9yIGxvZ2ZpbGUgZm9yIGEgPFZpcnR1
YWxIb3N0PgotIyBjb250YWluZXIsIHRoYXQgaG9zdCdzIGVycm9ycyB3aWxsIGJlIGxvZ2dlZCB0
aGVyZSBhbmQgbm90IGhlcmUuCi0jCi0jIENvbmZpZ3VyZWQgZnJvbSB0aGUgaHR0cGQgY29tbWFu
ZCBsaW5lIGZvciBXZWJLaXQgbGF5b3V0IHRlc3RzLgotI0Vycm9yTG9nICIvdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvZXJyb3JfbG9nIgotCi0jCi0jIExvZ0xldmVsOiBDb250cm9sIHRoZSBudW1i
ZXIgb2YgbWVzc2FnZXMgbG9nZ2VkIHRvIHRoZSBlcnJvcl9sb2cuCi0jIFBvc3NpYmxlIHZhbHVl
cyBpbmNsdWRlOiBkZWJ1ZywgaW5mbywgbm90aWNlLCB3YXJuLCBlcnJvciwgY3JpdCwKLSMgYWxl
cnQsIGVtZXJnLgotIwotTG9nTGV2ZWwgd2FybgotCi0jCi0jIFRoZSBmb2xsb3dpbmcgZGlyZWN0
aXZlcyBkZWZpbmUgc29tZSBmb3JtYXQgbmlja25hbWVzIGZvciB1c2Ugd2l0aAotIyBhIEN1c3Rv
bUxvZyBkaXJlY3RpdmUgKHNlZSBiZWxvdykuCi0jCi1Mb2dGb3JtYXQgIiVoICVsICV1ICV0IFwi
JXJcIiAlPnMgJWIgXCIle1JlZmVyZXJ9aVwiIFwiJXtVc2VyLUFnZW50fWlcIiIgY29tYmluZWQK
LUxvZ0Zvcm1hdCAiJWggJWwgJXUgJXQgXCIlclwiICU+cyAlYiIgY29tbW9uCi1Mb2dGb3JtYXQg
IiV7UmVmZXJlcn1pIC0+ICVVIiByZWZlcmVyCi1Mb2dGb3JtYXQgIiV7VXNlci1hZ2VudH1pIiBh
Z2VudAotCi0jCi0jIFRoZSBsb2NhdGlvbiBhbmQgZm9ybWF0IG9mIHRoZSBhY2Nlc3MgbG9nZmls
ZSAoQ29tbW9uIExvZ2ZpbGUgRm9ybWF0KS4KLSMgSWYgeW91IGRvIG5vdCBkZWZpbmUgYW55IGFj
Y2VzcyBsb2dmaWxlcyB3aXRoaW4gYSA8VmlydHVhbEhvc3Q+Ci0jIGNvbnRhaW5lciwgdGhleSB3
aWxsIGJlIGxvZ2dlZCBoZXJlLiAgQ29udHJhcml3aXNlLCBpZiB5b3UgKmRvKgotIyBkZWZpbmUg
cGVyLTxWaXJ0dWFsSG9zdD4gYWNjZXNzIGxvZ2ZpbGVzLCB0cmFuc2FjdGlvbnMgd2lsbCBiZQot
IyBsb2dnZWQgdGhlcmVpbiBhbmQgKm5vdCogaW4gdGhpcyBmaWxlLgotIwotIyBDb25maWd1cmVk
IGZyb20gdGhlIGh0dHBkIGNvbW1hbmQgbGluZSBmb3IgV2ViS2l0IGxheW91dCB0ZXN0cy4KLSND
dXN0b21Mb2cgIi90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hY2Nlc3NfbG9nIiBjb21tb24KLQot
IwotIyBJZiB5b3UgcHJlZmVyIGEgc2luZ2xlIGxvZ2ZpbGUgd2l0aCBhY2Nlc3MsIGFnZW50LCBh
bmQgcmVmZXJlciBpbmZvcm1hdGlvbgotIyAoQ29tYmluZWQgTG9nZmlsZSBGb3JtYXQpIHlvdSBj
YW4gdXNlIHRoZSBmb2xsb3dpbmcgZGlyZWN0aXZlLgotIwotI0N1c3RvbUxvZyAiL3RtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2FjY2Vzc19sb2ciIGNvbWJpbmVkCi0KLSMKLSMgT3B0aW9uYWxseSBh
ZGQgYSBsaW5lIGNvbnRhaW5pbmcgdGhlIHNlcnZlciB2ZXJzaW9uIGFuZCB2aXJ0dWFsIGhvc3QK
LSMgbmFtZSB0byBzZXJ2ZXItZ2VuZXJhdGVkIHBhZ2VzIChlcnJvciBkb2N1bWVudHMsIEZUUCBk
aXJlY3RvcnkgbGlzdGluZ3MsCi0jIG1vZF9zdGF0dXMgYW5kIG1vZF9pbmZvIG91dHB1dCBldGMu
LCBidXQgbm90IENHSSBnZW5lcmF0ZWQgZG9jdW1lbnRzKS4KLSMgU2V0IHRvICJFTWFpbCIgdG8g
YWxzbyBpbmNsdWRlIGEgbWFpbHRvOiBsaW5rIHRvIHRoZSBTZXJ2ZXJBZG1pbi4KLSMgU2V0IHRv
IG9uZSBvZjogIE9uIHwgT2ZmIHwgRU1haWwKLSMKLVNlcnZlclNpZ25hdHVyZSBPbgotCi0jCi0j
IEFsaWFzZXM6IEFkZCBoZXJlIGFzIG1hbnkgYWxpYXNlcyBhcyB5b3UgbmVlZCAod2l0aCBubyBs
aW1pdCkuIFRoZSBmb3JtYXQgaXMgCi0jIEFsaWFzIGZha2VuYW1lIHJlYWxuYW1lCi0jCi08SWZN
b2R1bGUgbW9kX2FsaWFzLmM+Ci08L0lmTW9kdWxlPgotIyBFbmQgb2YgYWxpYXNlcy4KLQotIwot
IyBSZWRpcmVjdCBhbGxvd3MgeW91IHRvIHRlbGwgY2xpZW50cyBhYm91dCBkb2N1bWVudHMgd2hp
Y2ggdXNlZCB0byBleGlzdCBpbgotIyB5b3VyIHNlcnZlcidzIG5hbWVzcGFjZSwgYnV0IGRvIG5v
dCBhbnltb3JlLiBUaGlzIGFsbG93cyB5b3UgdG8gdGVsbCB0aGUKLSMgY2xpZW50cyB3aGVyZSB0
byBsb29rIGZvciB0aGUgcmVsb2NhdGVkIGRvY3VtZW50LgotIyBGb3JtYXQ6IFJlZGlyZWN0IG9s
ZC1VUkkgbmV3LVVSTAotIwotCi0jCi0jIERvY3VtZW50IHR5cGVzLgotIwotPElmTW9kdWxlIG1v
ZF9taW1lLmM+Ci0KLSAgICAjCi0gICAgIyBBZGRMYW5ndWFnZSBhbGxvd3MgeW91IHRvIHNwZWNp
ZnkgdGhlIGxhbmd1YWdlIG9mIGEgZG9jdW1lbnQuIFlvdSBjYW4KLSAgICAjIHRoZW4gdXNlIGNv
bnRlbnQgbmVnb3RpYXRpb24gdG8gZ2l2ZSBhIGJyb3dzZXIgYSBmaWxlIGluIGEgbGFuZ3VhZ2UK
LSAgICAjIGl0IGNhbiB1bmRlcnN0YW5kLiAgCi0gICAgIwotICAgICMgTm90ZSAxOiBUaGUgc3Vm
Zml4IGRvZXMgbm90IGhhdmUgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIGxhbmd1YWdlIAotICAgICMg
a2V5d29yZCAtLS0gdGhvc2Ugd2l0aCBkb2N1bWVudHMgaW4gUG9saXNoICh3aG9zZSBuZXQtc3Rh
bmRhcmQgCi0gICAgIyBsYW5ndWFnZSBjb2RlIGlzIHBsKSBtYXkgd2lzaCB0byB1c2UgIkFkZExh
bmd1YWdlIHBsIC5wbyIgdG8gCi0gICAgIyBhdm9pZCB0aGUgYW1iaWd1aXR5IHdpdGggdGhlIGNv
bW1vbiBzdWZmaXggZm9yIHBlcmwgc2NyaXB0cy4KLSAgICAjCi0gICAgIyBOb3RlIDI6IFRoZSBl
eGFtcGxlIGVudHJpZXMgYmVsb3cgaWxsdXN0cmF0ZSB0aGF0IGluIHF1aXRlCi0gICAgIyBzb21l
IGNhc2VzIHRoZSB0d28gY2hhcmFjdGVyICdMYW5ndWFnZScgYWJicmV2aWF0aW9uIGlzIG5vdAot
ICAgICMgaWRlbnRpY2FsIHRvIHRoZSB0d28gY2hhcmFjdGVyICdDb3VudHJ5JyBjb2RlIGZvciBp
dHMgY291bnRyeSwKLSAgICAjIEUuZy4gJ0Rhbm1hcmsvZGsnIHZlcnN1cyAnRGFuaXNoL2RhJy4K
LSAgICAjCi0gICAgIyBOb3RlIDM6IEluIHRoZSBjYXNlIG9mICdsdHonIHdlIHZpb2xhdGUgdGhl
IFJGQyBieSB1c2luZyBhIHRocmVlIGNoYXIgCi0gICAgIyBzcGVjaWZpZXIuIEJ1dCB0aGVyZSBp
cyAnd29yayBpbiBwcm9ncmVzcycgdG8gZml4IHRoaXMgYW5kIGdldCAKLSAgICAjIHRoZSByZWZl
cmVuY2UgZGF0YSBmb3IgcmZjMTc2NiBjbGVhbmVkIHVwLgotICAgICMKLSAgICAjIERhbmlzaCAo
ZGEpIC0gRHV0Y2ggKG5sKSAtIEVuZ2xpc2ggKGVuKSAtIEVzdG9uaWFuIChlZSkKLSAgICAjIEZy
ZW5jaCAoZnIpIC0gR2VybWFuIChkZSkgLSBHcmVlay1Nb2Rlcm4gKGVsKQotICAgICMgSXRhbGlh
biAoaXQpIC0gS29yZWFuIChrcikgLSBOb3J3ZWdpYW4gKG5vKSAtIE5vcndlZ2lhbiBOeW5vcnNr
IChubikKLSAgICAjIFBvcnR1Z2VzZSAocHQpIC0gTHV4ZW1ib3VyZ2VvaXMqIChsdHopCi0gICAg
IyBTcGFuaXNoIChlcykgLSBTd2VkaXNoIChzdikgLSBDYXRhbGFuIChjYSkgLSBDemVjaChjcykK
LSAgICAjIFBvbGlzaCAocGwpIC0gQnJhemlsaWFuIFBvcnR1Z3Vlc2UgKHB0LWJyKSAtIEphcGFu
ZXNlIChqYSkKLSAgICAjIFJ1c3NpYW4gKHJ1KQotICAgICMKLSAgICBBZGRMYW5ndWFnZSBkYSAu
ZGsKLSAgICBBZGRMYW5ndWFnZSBubCAubmwKLSAgICBBZGRMYW5ndWFnZSBlbiAuZW4KLSAgICBB
ZGRMYW5ndWFnZSBldCAuZWUKLSAgICBBZGRMYW5ndWFnZSBmciAuZnIKLSAgICBBZGRMYW5ndWFn
ZSBkZSAuZGUKLSAgICBBZGRMYW5ndWFnZSBlbCAuZWwKLSAgICBBZGRMYW5ndWFnZSBoZSAuaGUK
LSAgICBBZGRDaGFyc2V0IElTTy04ODU5LTggLmlzbzg4NTktOAotICAgIEFkZExhbmd1YWdlIGl0
IC5pdAotICAgIEFkZExhbmd1YWdlIGphIC5qYQotICAgIEFkZENoYXJzZXQgSVNPLTIwMjItSlAg
LmppcwotICAgIEFkZExhbmd1YWdlIGtyIC5rcgotICAgIEFkZENoYXJzZXQgSVNPLTIwMjItS1Ig
Lmlzby1rcgotICAgIEFkZExhbmd1YWdlIG5uIC5ubgotICAgIEFkZExhbmd1YWdlIG5vIC5ubwot
ICAgIEFkZExhbmd1YWdlIHBsIC5wbwotICAgIEFkZENoYXJzZXQgSVNPLTg4NTktMiAuaXNvLXBs
Ci0gICAgQWRkTGFuZ3VhZ2UgcHQgLnB0Ci0gICAgQWRkTGFuZ3VhZ2UgcHQtYnIgLnB0LWJyCi0g
ICAgQWRkTGFuZ3VhZ2UgbHR6IC5sdQotICAgIEFkZExhbmd1YWdlIGNhIC5jYQotICAgIEFkZExh
bmd1YWdlIGVzIC5lcwotICAgIEFkZExhbmd1YWdlIHN2IC5zdgotICAgIEFkZExhbmd1YWdlIGNz
IC5jeiAuY3MKLSAgICBBZGRMYW5ndWFnZSBydSAucnUKLSAgICBBZGRMYW5ndWFnZSB6aC1UVyAu
emgtdHcKLSAgICBBZGRDaGFyc2V0IEJpZzUgICAgICAgICAuQmlnNSAgICAuYmlnNQotICAgIEFk
ZENoYXJzZXQgV0lORE9XUy0xMjUxIC5jcC0xMjUxCi0gICAgQWRkQ2hhcnNldCBDUDg2NiAgICAg
ICAgLmNwODY2Ci0gICAgQWRkQ2hhcnNldCBJU08tODg1OS01ICAgLmlzby1ydQotICAgIEFkZENo
YXJzZXQgS09JOC1SICAgICAgIC5rb2k4LXIKLSAgICBBZGRDaGFyc2V0IFVDUy0yICAgICAgICAu
dWNzMgotICAgIEFkZENoYXJzZXQgVUNTLTQgICAgICAgIC51Y3M0Ci0gICAgQWRkQ2hhcnNldCBV
VEYtOCAgICAgICAgLnV0ZjgKLQotICAgICMgTGFuZ3VhZ2VQcmlvcml0eSBhbGxvd3MgeW91IHRv
IGdpdmUgcHJlY2VkZW5jZSB0byBzb21lIGxhbmd1YWdlcwotICAgICMgaW4gY2FzZSBvZiBhIHRp
ZSBkdXJpbmcgY29udGVudCBuZWdvdGlhdGlvbi4KLSAgICAjCi0gICAgIyBKdXN0IGxpc3QgdGhl
IGxhbmd1YWdlcyBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIHByZWZlcmVuY2UuIFdlIGhhdmUKLSAg
ICAjIG1vcmUgb3IgbGVzcyBhbHBoYWJldGl6ZWQgdGhlbSBoZXJlLiBZb3UgcHJvYmFibHkgd2Fu
dCB0byBjaGFuZ2UgdGhpcy4KLSAgICAjCi0gICAgPElmTW9kdWxlIG1vZF9uZWdvdGlhdGlvbi5j
PgotICAgICAgICBMYW5ndWFnZVByaW9yaXR5IGVuIGRhIG5sIGV0IGZyIGRlIGVsIGl0IGphIGty
IG5vIHBsIHB0IHB0LWJyIHJ1IGx0eiBjYSBlcyBzdiB0dwotICAgIDwvSWZNb2R1bGU+Ci0KLSAg
ICAjCi0gICAgIyBBZGRUeXBlIGFsbG93cyB5b3UgdG8gdHdlYWsgbWltZS50eXBlcyB3aXRob3V0
IGFjdHVhbGx5IGVkaXRpbmcgaXQsIG9yIHRvCi0gICAgIyBtYWtlIGNlcnRhaW4gZmlsZXMgdG8g
YmUgY2VydGFpbiB0eXBlcy4KLSAgICAjCi0gICAgQWRkVHlwZSBhcHBsaWNhdGlvbi94LXRhciAu
dGd6Ci0KLSAgICAjCi0gICAgIyBBZGRFbmNvZGluZyBhbGxvd3MgeW91IHRvIGhhdmUgY2VydGFp
biBicm93c2VycyB1bmNvbXByZXNzCi0gICAgIyBpbmZvcm1hdGlvbiBvbiB0aGUgZmx5LiBOb3Rl
OiBOb3QgYWxsIGJyb3dzZXJzIHN1cHBvcnQgdGhpcy4KLSAgICAjIERlc3BpdGUgdGhlIG5hbWUg
c2ltaWxhcml0eSwgdGhlIGZvbGxvd2luZyBBZGQqIGRpcmVjdGl2ZXMgaGF2ZSBub3RoaW5nCi0g
ICAgIyB0byBkbyB3aXRoIHRoZSBGYW5jeUluZGV4aW5nIGN1c3RvbWl6YXRpb24gZGlyZWN0aXZl
cyBhYm92ZS4KLSAgICAjCi0gICAgQWRkRW5jb2RpbmcgeC1jb21wcmVzcyAuWgotICAgIEFkZEVu
Y29kaW5nIHgtZ3ppcCAuZ3ogLnRnegotICAgICMKLSAgICAjIElmIHRoZSBBZGRFbmNvZGluZyBk
aXJlY3RpdmVzIGFib3ZlIGFyZSBjb21tZW50ZWQtb3V0LCB0aGVuIHlvdQotICAgICMgcHJvYmFi
bHkgc2hvdWxkIGRlZmluZSB0aG9zZSBleHRlbnNpb25zIHRvIGluZGljYXRlIG1lZGlhIHR5cGVz
OgotICAgICMKLSAgICAjQWRkVHlwZSBhcHBsaWNhdGlvbi94LWNvbXByZXNzIC5aCi0gICAgI0Fk
ZFR5cGUgYXBwbGljYXRpb24veC1nemlwIC5neiAudGd6Ci0KLSAgICAjCi0gICAgIyBBZGRIYW5k
bGVyIGFsbG93cyB5b3UgdG8gbWFwIGNlcnRhaW4gZmlsZSBleHRlbnNpb25zIHRvICJoYW5kbGVy
cyIsCi0gICAgIyBhY3Rpb25zIHVucmVsYXRlZCB0byBmaWxldHlwZS4gVGhlc2UgY2FuIGJlIGVp
dGhlciBidWlsdCBpbnRvIHRoZSBzZXJ2ZXIKLSAgICAjIG9yIGFkZGVkIHdpdGggdGhlIEFjdGlv
biBjb21tYW5kIChzZWUgYmVsb3cpCi0gICAgIwotICAgICMgSWYgeW91IHdhbnQgdG8gdXNlIHNl
cnZlciBzaWRlIGluY2x1ZGVzLCBvciBDR0kgb3V0c2lkZQotICAgICMgU2NyaXB0QWxpYXNlZCBk
aXJlY3RvcmllcywgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZXMuCi0gICAgIwotICAgICMg
VG8gdXNlIENHSSBzY3JpcHRzOgotICAgICMKLSAgICBBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNn
aSAucGwKLQotICAgICMKLSAgICAjIFRvIHVzZSBzZXJ2ZXItcGFyc2VkIEhUTUwgZmlsZXMKLSAg
ICAjCi0gICAgQWRkVHlwZSB0ZXh0L2h0bWwgLnNodG1sCi0gICAgQWRkSGFuZGxlciBzZXJ2ZXIt
cGFyc2VkIC5zaHRtbAotCi0gICAgIwotICAgICMgVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGlu
ZSB0byBlbmFibGUgQXBhY2hlJ3Mgc2VuZC1hc2lzIEhUVFAgZmlsZQotICAgICMgZmVhdHVyZQot
ICAgICMKLSAgICBBZGRIYW5kbGVyIHNlbmQtYXMtaXMgYXNpcwotCi0gICAgIwotICAgICMgSWYg
eW91IHdpc2ggdG8gdXNlIHNlcnZlci1wYXJzZWQgaW1hZ2VtYXAgZmlsZXMsIHVzZQotICAgICMK
LSAgICAjQWRkSGFuZGxlciBpbWFwLWZpbGUgbWFwCi0KLSAgICAjCi0gICAgIyBUbyBlbmFibGUg
dHlwZSBtYXBzLCB5b3UgbWlnaHQgd2FudCB0byB1c2UKLSAgICAjCi0gICAgI0FkZEhhbmRsZXIg
dHlwZS1tYXAgdmFyCi0KLTwvSWZNb2R1bGU+Ci0jIEVuZCBvZiBkb2N1bWVudCB0eXBlcy4KLQot
IwotIyBBY3Rpb24gbGV0cyB5b3UgZGVmaW5lIG1lZGlhIHR5cGVzIHRoYXQgd2lsbCBleGVjdXRl
IGEgc2NyaXB0IHdoZW5ldmVyCi0jIGEgbWF0Y2hpbmcgZmlsZSBpcyBjYWxsZWQuIFRoaXMgZWxp
bWluYXRlcyB0aGUgbmVlZCBmb3IgcmVwZWF0ZWQgVVJMCi0jIHBhdGhuYW1lcyBmb3Igb2Z0LXVz
ZWQgQ0dJIGZpbGUgcHJvY2Vzc29ycy4KLSMgRm9ybWF0OiBBY3Rpb24gbWVkaWEvdHlwZSAvY2dp
LXNjcmlwdC9sb2NhdGlvbgotIyBGb3JtYXQ6IEFjdGlvbiBoYW5kbGVyLW5hbWUgL2NnaS1zY3Jp
cHQvbG9jYXRpb24KLSMKLQotIwotIyBNZXRhRGlyOiBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhl
IGRpcmVjdG9yeSBpbiB3aGljaCBBcGFjaGUgY2FuIGZpbmQKLSMgbWV0YSBpbmZvcm1hdGlvbiBm
aWxlcy4gVGhlc2UgZmlsZXMgY29udGFpbiBhZGRpdGlvbmFsIEhUVFAgaGVhZGVycwotIyB0byBp
bmNsdWRlIHdoZW4gc2VuZGluZyB0aGUgZG9jdW1lbnQKLSMKLSNNZXRhRGlyIC53ZWIKLQotIwot
IyBNZXRhU3VmZml4OiBzcGVjaWZpZXMgdGhlIGZpbGUgbmFtZSBzdWZmaXggZm9yIHRoZSBmaWxl
IGNvbnRhaW5pbmcgdGhlCi0jIG1ldGEgaW5mb3JtYXRpb24uCi0jCi0jTWV0YVN1ZmZpeCAubWV0
YQotCi0jCi0jIEN1c3RvbWl6YWJsZSBlcnJvciByZXNwb25zZSAoQXBhY2hlIHN0eWxlKQotIyAg
dGhlc2UgY29tZSBpbiB0aHJlZSBmbGF2b3JzCi0jCi0jICAgIDEpIHBsYWluIHRleHQKLSNFcnJv
ckRvY3VtZW50IDUwMCAiVGhlIHNlcnZlciBtYWRlIGEgYm9vIGJvby4KLSMgIG4uYi4gIHRoZSBz
aW5nbGUgbGVhZGluZyAoIikgbWFya3MgaXQgYXMgdGV4dCwgaXQgZG9lcyBub3QgZ2V0IG91dHB1
dAotIwotIyAgICAyKSBsb2NhbCByZWRpcmVjdHMKLSNFcnJvckRvY3VtZW50IDQwNCAvbWlzc2lu
Zy5odG1sCi0jICB0byByZWRpcmVjdCB0byBsb2NhbCBVUkwgL21pc3NpbmcuaHRtbAotI0Vycm9y
RG9jdW1lbnQgNDA0IC9jZ2ktYmluL21pc3NpbmdfaGFuZGxlci5wbAotIyAgTi5CLjogWW91IGNh
biByZWRpcmVjdCB0byBhIHNjcmlwdCBvciBhIGRvY3VtZW50IHVzaW5nIHNlcnZlci1zaWRlLWlu
Y2x1ZGVzLgotIwotIyAgICAzKSBleHRlcm5hbCByZWRpcmVjdHMKLSNFcnJvckRvY3VtZW50IDQw
MiBodHRwOi8vc29tZS5vdGhlci1zZXJ2ZXIuY29tL3N1YnNjcmlwdGlvbl9pbmZvLmh0bWwKLSMg
IE4uQi46IE1hbnkgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhc3NvY2lhdGVkIHdpdGgg
dGhlIG9yaWdpbmFsCi0jICByZXF1ZXN0IHdpbGwgKm5vdCogYmUgYXZhaWxhYmxlIHRvIHN1Y2gg
YSBzY3JpcHQuCi0KLSMKLSMgUHJveHkgU2VydmVyIGRpcmVjdGl2ZXMuIFVuY29tbWVudCB0aGUg
Zm9sbG93aW5nIGxpbmVzIHRvCi0jIGVuYWJsZSB0aGUgcHJveHkgc2VydmVyOgotIwotIzxJZk1v
ZHVsZSBtb2RfcHJveHkuYz4KLSMgICAgUHJveHlSZXF1ZXN0cyBPbgotCi0jICAgIDxEaXJlY3Rv
cnkgcHJveHk6Kj4KLSMgICAgICAgIE9yZGVyIGRlbnksYWxsb3cKLSMgICAgICAgIERlbnkgZnJv
bSBhbGwKLSMgICAgICAgIEFsbG93IGZyb20gLnlvdXItZG9tYWluLmNvbQotIyAgICA8L0RpcmVj
dG9yeT4KLQotICAgICMKLSAgICAjIEVuYWJsZS9kaXNhYmxlIHRoZSBoYW5kbGluZyBvZiBIVFRQ
LzEuMSAiVmlhOiIgaGVhZGVycy4KLSAgICAjICgiRnVsbCIgYWRkcyB0aGUgc2VydmVyIHZlcnNp
b247ICJCbG9jayIgcmVtb3ZlcyBhbGwgb3V0Z29pbmcgVmlhOiBoZWFkZXJzKQotICAgICMgU2V0
IHRvIG9uZSBvZjogT2ZmIHwgT24gfCBGdWxsIHwgQmxvY2sKLSAgICAjCi0jICAgIFByb3h5Vmlh
IE9uCi0KLSAgICAjCi0gICAgIyBUbyBlbmFibGUgdGhlIGNhY2hlIGFzIHdlbGwsIGVkaXQgYW5k
IHVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmVzOgotICAgICMgKG5vIGNhY2hlaW5nIHdpdGhv
dXQgQ2FjaGVSb290KQotICAgICMKLSMgICAgQ2FjaGVSb290ICIvcHJpdmF0ZS92YXIvcnVuL3By
b3h5IgotIyAgICBDYWNoZVNpemUgNQotIyAgICBDYWNoZUdjSW50ZXJ2YWwgNAotIyAgICBDYWNo
ZU1heEV4cGlyZSAyNAotIyAgICBDYWNoZUxhc3RNb2RpZmllZEZhY3RvciAwLjEKLSMgICAgQ2Fj
aGVEZWZhdWx0RXhwaXJlIDEKLSMgICAgTm9DYWNoZSBhLWRvbWFpbi5jb20gYW5vdGhlci1kb21h
aW4uZWR1IGpvZXMuZ2FyYWdlLXNhbGUuY29tCi0KLSM8L0lmTW9kdWxlPgotIyBFbmQgb2YgcHJv
eHkgZGlyZWN0aXZlcy4KLQotCi08SWZNb2R1bGUgbW9kX3BocDQuYz4KLSAgICAjIElmIHBocCBp
cyB0dXJuZWQgb24sIHdlIHJlcHNlY3QgLnBocCBhbmQgLnBocHMgZmlsZXMuCi0gICAgQWRkVHlw
ZSBhcHBsaWNhdGlvbi94LWh0dHBkLXBocCAucGhwCi0gICAgQWRkVHlwZSBhcHBsaWNhdGlvbi94
LWh0dHBkLXBocCAuYmF0Ci0gICAgQWRkVHlwZSBhcHBsaWNhdGlvbi94LWh0dHBkLXBocC1zb3Vy
Y2UgLnBocHMKLQotICAgICMgU2luY2UgbW9zdCB1c2VycyB3aWxsIHdhbnQgaW5kZXgucGhwIHRv
IHdvcmsgd2UKLSAgICAjIGFsc28gYXV0b21hdGljYWxseSBlbmFibGUgaW5kZXgucGhwCi0gICAg
PElmTW9kdWxlIG1vZF9kaXIuYz4KLSAgICAgICAgRGlyZWN0b3J5SW5kZXggaW5kZXguaHRtbCBp
bmRleC5waHAKLSAgICA8L0lmTW9kdWxlPgotCi0gICAgcGhwX2ZsYWcgbG9nX2Vycm9ycyBvbgot
ICAgIHBocF9mbGFnIHNob3J0X29wZW5fdGFnIG9uCi08L0lmTW9kdWxlPgotCi08SWZNb2R1bGUg
bW9kX3Jld3JpdGUuYz4KLSAgICBSZXdyaXRlRW5naW5lIE9uCi0gICAgUmV3cml0ZUNvbmQgJXtS
RVFVRVNUX01FVEhPRH0gXlRSQUNFCi0gICAgUmV3cml0ZVJ1bGUgLiogLSBbRl0KLTwvSWZNb2R1
bGU+Ci0KLTxWaXJ0dWFsSG9zdCAqOjg0NDM+Ci0gICAgU2VydmVyTmFtZSAxMjcuMC4wLjEKLSAg
ICBTU0xFbmdpbmUgT24KLTwvVmlydHVhbEhvc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWJmMjRlZTYxYWI3YTNjZTQ2Y2VhY2NmNDViNjA5
ZGZlYWNkMmNlNy4uYTM5YTA1NDhlMzU0ZDNkMDViOWUyYWZjMWUzYTYwNDM1MWQzZWEyZSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ1IEBACisyMDExLTA3LTExICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAg
ICAgICBbUXRdIE5SV1Qgc2hvdWxkIHBpY2sgdXAgdGhlIHJpZ2h0IGh0dHBkIGNvbmZpZyBmaWxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDA4Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMg
bW9yZSBmYWxsLW91dCBmcm9tIHRoZSBQb3J0IGNsYXNzIGluYXBwcm9wcmlhdGVseSBlbmNhcHN1
bGF0aW5nCisgICAgICAgIGJvdGggcGxhdGZvcm0gYW5kIHBvcnQga25vd2xlZGdlLiAgV2UgbmVl
ZCB0byBzcGxpdCBvdXQgc29tZSBvZiB0aGlzCisgICAgICAgIHBsYXRmb3JtIGtub3dsZWRnZSBp
bnRvIGEgc2VwYXJhdGUgY2xhc3Mgd2hpY2ggY2FuIGJlIGJldHRlciBzaGFyZWQKKyAgICAgICAg
YmV0d2VlbiBwb3J0cy4KKworICAgICAgICBUaGUgZml4IHdhcyB0byBtb3ZlIGFsbCB0aGUgX3Bh
dGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlIGxvZ2ljIGRvd24KKyAgICAgICAgaW50byB0aGUgV2Vi
S2l0UG9ydCBiYXNlY2xhc3Mgc28gdGhhdCBhbGwgb2YgdGhlIHBvcnRzIGNhbiBmaW5kIHRoZQor
ICAgICAgICByaWdodCBhcGFjaGUgY29uZmlnIGZpbGUsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBwbGF0
Zm9ybSB0aGV5IG1heSBiZSBydW5uaW5nIG9uLgorCisgICAgICAgIEkgZGlkIG5vdCBtb3ZlIHRo
aXMgZG93biBpbnRvIGJhc2UuUG9ydCAoZXZlbiB0aG91Z2ggSSBjb25zaWRlcmVkIGl0KS4KKyAg
ICAgICAgQ2hyb21pdW0gZHVwbGljYXRlcyBzb21lIG9mIHRoaXMgbG9naWMsIGJ1dCBzaW5jZSB0
aGV5IGhhdmUgc2VwYXJhdGUKKyAgICAgICAgc3ViY2xhc3NlcyBmb3IgZWFjaCBwb3J0LU9TIGNv
bWJpbmF0aW9uIChlLmcuIENocm9taXVtTWFjLCBDaHJvbWl1bVdpbikKKyAgICAgICAgdGhleSB3
b3VsZG4ndCBub3RpY2UgdGhlIGNoYW5nZS4gIEV2ZW50dWFsbHkgd2UnbGwgbW92ZSB0aGlzIGxv
Z2ljCisgICAgICAgIG91dCBvZiBQb3J0IGVudGlyZWx5LCBhbmQgdGhlbiBpdCB3aWxsIGJlIHNo
YXJlZCBieSBhbGwgcG9ydHMuCisKKyAgICAgICAgSSBhbHNvIGNsZWFuZWQgdXAgdGhlIGh0dHAt
Y29uZmlnIGxvZ2ljIGZvciBPUldUIHdoaWxlIEkgd2FzIHRoZXJlLAorICAgICAgICBhbHRob3Vn
aCBzaW5jZSB3ZSdyZSBraWxsaW5nIHRoYXQgY29kZSwgSSdtIGhhcHB5IHRvIHJldmVydCB0aGF0
IHBhcnQKKyAgICAgICAgb2YgdGhlIGNoYW5nZSBpZiBjaGFuZ2luZyBpdCBpcyB2aWV3ZWQgYXMg
bmVlZGxlc3NseSByaXNreS4KKworICAgICAgICBEdXJpbmcgdGhpcyBjbGVhbnVwLCBJIG5vdGlj
ZWQgdGhhdCBubyBwb3J0cyB1c2UgdGhlICJkZWZhdWx0IiBodHRwZC5jb25mCisgICAgICAgIHdo
aWNoIGlzIGxlZnQgb3ZlciBmcm9tIE1hYyBPUyBYIFRpZ2VyIChhbmQgb2xkIGxpbnV4IGRpc3Ry
b3MpIHdoaWNoIHVzZWQKKyAgICAgICAgQXBhY2hlIDEuMy4gIEkndmUgcmVtb3ZlZCBodHRwZC5j
b25mIChhbmQgYXNzb2NpYXRlZCBzdXBwb3J0IGluIE9SV1QpIHNpbmNlCisgICAgICAgIHdlIG5v
IGxvbmdlciBzdXBwb3J0IGFueSBwb3J0cyB3aGljaCB1c2UgdGhpcyBodHRwZC5jb25mLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtOgorICAgICAgICAoZ2V0SFRUUERD
b25maWdQYXRoRm9yVGVzdERpcmVjdG9yeSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbWFjLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvcXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93aW4ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHk6CisKIDIwMTEtMDctMTEgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBnYXJkZW4tby1tYXRpYyBzaG91
bGQgYmUgYWJsZSB0byByb2xsIG91dCBwYXRjaGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvaHR0cGQucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG0K
aW5kZXggODZhODQ2MWNhZjhlM2RlMmY0MjFhYjM4ODJkMjE0ZTUzYmQ1NGQ0NS4uMWFkYjdhZGJl
MTdmZjE4ZmE2ZDk4OGM2OWE5MTg0MTczYzI5YjY0NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL2h0dHBkLnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9odHRw
ZC5wbQpAQCAtMTM2LDI2ICsxMzYsMzAgQEAgc3ViIGdldEhUVFBEQ29uZmlnUGF0aEZvclRlc3RE
aXJlY3RvcnkKIHsKICAgICBteSAoJHRlc3REaXJlY3RvcnkpID0gQF87CiAgICAgZGllICJObyB0
ZXN0IGRpcmVjdG9yeSBoYXMgYmVlbiBzcGVjaWZpZWQuIiB1bmxlc3MgKCR0ZXN0RGlyZWN0b3J5
KTsKKwogICAgIG15ICRodHRwZENvbmZpZzsKICAgICBteSAkaHR0cGRQYXRoID0gZ2V0SFRUUERQ
YXRoKCk7CisgICAgbXkgJGh0dHBkQ29uZkRpcmVjdG9yeSA9ICIkdGVzdERpcmVjdG9yeS9odHRw
L2NvbmYvIjsKKwogICAgIGlmIChpc0N5Z3dpbigpKSB7Ci0gICAgICAgIG15ICR3aW5kb3dzQ29u
ZkRpcmVjdG9yeSA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvIjsKLSAgICAgICAgdW5sZXNz
ICgteCAiL3Vzci9saWIvYXBhY2hlL2xpYnBocDQuZGxsIikgewotICAgICAgICAgICAgY29weSgi
JHdpbmRvd3NDb25mRGlyZWN0b3J5L2xpYnBocDQuZGxsIiwgIi91c3IvbGliL2FwYWNoZS9saWJw
aHA0LmRsbCIpOwotICAgICAgICAgICAgY2htb2QoMDc1NSwgIi91c3IvbGliL2FwYWNoZS9saWJw
aHA0LmRsbCIpOworICAgICAgICBteSAkbGliUEhQNERsbFBhdGggPSAiL3Vzci9saWIvYXBhY2hl
L2xpYnBocDQuZGxsIjsKKyAgICAgICAgIyBGSVhNRTogcnVuLXdlYmtpdC10ZXN0cyBzaG91bGQg
bm90IG1vZGlmeSB0aGUgdXNlcidzIHN5c3RlbSwgZXNwZWNpYWxseSBub3QgaW4gdGhpcyBtZXRo
b2QhCisgICAgICAgIHVubGVzcyAoLXggJGxpYlBIUDREbGxQYXRoKSB7CisgICAgICAgICAgICBj
b3B5KCIkaHR0cGRDb25mRGlyZWN0b3J5L2xpYnBocDQuZGxsIiwgJGxpYlBIUDREbGxQYXRoKTsK
KyAgICAgICAgICAgIGNobW9kKDA3NTUsICRsaWJQSFA0RGxsUGF0aCk7CiAgICAgICAgIH0KLSAg
ICAgICAgJGh0dHBkQ29uZmlnID0gIiR3aW5kb3dzQ29uZkRpcmVjdG9yeS9jeWd3aW4taHR0cGQu
Y29uZiI7CisgICAgICAgICRodHRwZENvbmZpZyA9ICJjeWd3aW4taHR0cGQuY29uZiI7ICAjIFRo
aXMgaXMgYW4gYXBhY2hlIDEuMyBjb25maWcuCiAgICAgfSBlbHNpZiAoaXNNc3lzKCkpIHsKLSAg
ICAgICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9hcGFjaGUyLW1z
eXMtaHR0cGQuY29uZiI7CisgICAgICAgICRodHRwZENvbmZpZyA9ICJhcGFjaGUyLW1zeXMtaHR0
cGQuY29uZiI7CiAgICAgfSBlbHNpZiAoaXNEZWJpYW5CYXNlZCgpKSB7Ci0gICAgICAgICRodHRw
ZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvYXBhY2hlMi1kZWJpYW4taHR0cGQu
Y29uZiI7CisgICAgICAgICRodHRwZENvbmZpZyA9ICJhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25m
IjsKICAgICB9IGVsc2lmIChpc0ZlZG9yYUJhc2VkKCkpIHsKLSAgICAgICAgJGh0dHBkQ29uZmln
ID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9mZWRvcmEtaHR0cGQuY29uZiI7CisgICAgICAg
ICRodHRwZENvbmZpZyA9ICJmZWRvcmEtaHR0cGQuY29uZiI7ICMgVGhpcyBpcyBhbiBhcGFjaGUy
IGNvbmZpZywgZGVzcGl0ZSB0aGUgbmFtZS4KICAgICB9IGVsc2UgewotICAgICAgICAkaHR0cGRD
b25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2h0dHBkLmNvbmYiOwotICAgICAgICAk
aHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2FwYWNoZTItaHR0cGQuY29u
ZiIgaWYgYCRodHRwZFBhdGggLXZgID1+IG18QXBhY2hlLzJ8OworICAgICAgICAjIEFsbCBvdGhl
ciBwb3J0cyB1c2UgYXBhY2hlMiwgc28ganVzdCB1c2Ugb3VyIGRlZmF1bHQgYXBhY2hlMiBjb25m
aWcuCisgICAgICAgICRodHRwZENvbmZpZyA9ICJhcGFjaGUyLWh0dHBkLmNvbmYiOwogICAgIH0K
LSAgICByZXR1cm4gJGh0dHBkQ29uZmlnOworICAgIHJldHVybiAiJGh0dHBkQ29uZkRpcmVjdG9y
eS8kaHR0cGRDb25maWciOwogfQogCiBzdWIgb3BlbkhUVFBEKEApCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggZGZkYmIwMzM4NzY0
ZTU2ZmQ3ZmZjZTJlMTgyOGU1YTJhNjVjNTcxZi4uY2U0NTFkM2IxYzQxZGEzYTMxMDU1MTc1Mjk5
ZWZkODQxMjk2YmQ2NyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weQpAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBEdW1teU9wdGlvbnMob2Jq
ZWN0KToKICAgICAgICAgICAgIHNlbGYuX19kaWN0X19ba2V5XSA9IHZhbHVlCiAKIAotIyBGSVhN
RTogVGhpcyBjbGFzcyBzaG91bGQgbWVyZ2Ugd2l0aCB3ZWJraXRweS5jb21tb24uY29uZmlnLnBv
cnRzLgorIyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgbWVyZ2Ugd2l0aCBXZWJLaXRQb3J0IG5v
dyB0aGF0IENocm9taXVtIGJlaGF2ZXMgbW9zdGx5IGxpa2Ugb3RoZXIgd2Via2l0IHBvcnRzLgog
Y2xhc3MgUG9ydChvYmplY3QpOgogICAgICIiIkFic3RyYWN0IGNsYXNzIGZvciBQb3J0LXNwZWNp
ZmljIGhvb2tzIGZvciB0aGUgbGF5b3V0X3Rlc3QgcGFja2FnZS4iIiIKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weQppbmRleCA1MzBhY2RjYjQ5
YmQ1MGI5NDc1ODY1MDg5NzRkMDIxMWI4YjM4ZmM3Li5jOTBlM2JiOTgxZThkZGY1NzZjNGRhMDg2
ZTQ0ODJlNzVkN2ZlZjUxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2d0ay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2d0ay5weQpAQCAtNjcsMTMgKzY3LDggQEAgY2xhc3MgR3RrUG9ydCh3ZWJraXQu
V2ViS2l0UG9ydCk6CiAgICAgICAgIGVudmlyb25tZW50WydHVEtfTU9EVUxFUyddID0gJ2dhaWwn
CiAgICAgICAgIGVudmlyb25tZW50WydMSUJPVkVSTEFZX1NDUk9MTEJBUiddID0gJzAnCiAgICAg
ICAgIGVudmlyb25tZW50WydXRUJLSVRfSU5TUEVDVE9SX1BBVEgnXSA9IHNlbGYuX2J1aWxkX3Bh
dGgoJ1Byb2dyYW1zL3Jlc291cmNlcy9pbnNwZWN0b3InKQotCiAgICAgICAgIHJldHVybiBlbnZp
cm9ubWVudAogCi0gICAgZGVmIF9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZShzZWxmKToKLSAg
ICAgICAgIyBGSVhNRTogVGhpcyBuZWVkcyB0byBkZXRlY3QgdGhlIGRpc3RyaWJ1dGlvbiBhbmQg
Y2hhbmdlIGNvbmZpZyBmaWxlcy4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsICdhcGFjaGUyLWRlYmlh
bi1odHRwZC5jb25mJykKLQogICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZik6CiAgICAgICAg
IHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdQcm9ncmFtcycsIHNlbGYuZHJpdmVyX25hbWUoKSkK
IApAQCAtODYsMjMgKzgxLDEyIEBAIGNsYXNzIEd0a1BvcnQod2Via2l0LldlYktpdFBvcnQpOgog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuICcvdXNyL3NiaW4vYXBhY2hlMicKIAot
ICAgIGRlZiBfcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoc2VsZik6Ci0gICAgICAgIGlmIHNl
bGYuX2lzX3JlZGhhdF9iYXNlZCgpOgotICAgICAgICAgICAgY29uZmlnX25hbWUgPSAnZmVkb3Jh
LWh0dHBkLmNvbmYnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb25maWdfbmFtZSA9ICdh
cGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJwotCi0gICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lz
dGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdodHRwJywgJ2NvbmYnLCBjb25maWdf
bmFtZSkKLQogICAgIGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToKICAgICAgICAgaWYgc2VsZi5f
aXNfcmVkaGF0X2Jhc2VkKCk6CiAgICAgICAgICAgICByZXR1cm4gJy91c3IvYmluL2R3ZGlmZicK
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiAnL3Vzci9iaW4vd2RpZmYnCiAKLSAg
ICBkZWYgX2lzX3JlZGhhdF9iYXNlZChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVz
eXN0ZW0uZXhpc3RzKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbignL2V0YycsICdyZWRoYXQtcmVsZWFz
ZScpKQotCiAgICAgZGVmIF9wYXRoX3RvX3dlYmNvcmVfbGlicmFyeShzZWxmKToKICAgICAgICAg
Z3RrX2xpYnJhcnlfbmFtZXMgPSBbCiAgICAgICAgICAgICAibGlid2Via2l0Z3RrLTEuMC5zbyIs
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21h
Yy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5Cmlu
ZGV4IDUwNmZhOGE1OTg4NWIxNDAxZWFiMzNhMDI5MDI4YmZmZmYwMzVkNWUuLjc2MjFhYmZmMWE3
NTlhYjQyMzA2YWJiMTU1YmJhZTQyNTdlYjY1OGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CkBAIC0xMTMsOCArMTEzLDUgQEAgY2xhc3Mg
TWFjUG9ydChXZWJLaXRQb3J0KToKICAgICBkZWYgX2NoZWNrX3BvcnRfYnVpbGQoc2VsZik6CiAg
ICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9qYXZhX3Rlc3Rfc3VwcG9ydCgpCiAKLSAgICBkZWYg
X3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5f
ZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywg
J2FwYWNoZTItaHR0cGQuY29uZicpCi0KICAgICBkZWYgX3BhdGhfdG9fd2ViY29yZV9saWJyYXJ5
KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnV2ViQ29yZS5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9XZWJDb3JlJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3F0LnB5CmluZGV4IDg4MjBiMzg3ZDFiYTFlM2ViMmE5ZDZmMzBmZDQxMTI1
MWEzOGM4NTMuLmE2YThjMmVmMzNlMzFlYTlhYzMxMDI0M2IyNTQ0MGZlOWUzNDY4NjggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdC5weQpAQCAtNjMs
MTAgKzYzLDYgQEAgY2xhc3MgUXRQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICAgICAgbmFtZV9j
b21wb25lbnRzLmFwcGVuZChzZWxmLl9vcGVyYXRpbmdfc3lzdGVtKQogICAgICAgICBzZWxmLl9u
YW1lID0gIi0iLmpvaW4obmFtZV9jb21wb25lbnRzKQogCi0gICAgZGVmIF9wYXRoX3RvX2FwYWNo
ZV9jb25maWdfZmlsZShzZWxmKToKLSAgICAgICAgIyBGSVhNRTogVGhpcyBuZWVkcyB0byBkZXRl
Y3QgdGhlIGRpc3RyaWJ1dGlvbiBhbmQgY2hhbmdlIGNvbmZpZyBmaWxlcy4KLSAgICAgICAgcmV0
dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAn
LCAnY29uZicsICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJykKLQogICAgIGRlZiBfYnVpbGRf
ZHJpdmVyKHNlbGYpOgogICAgICAgICAjIFRoZSBRdCBwb3J0IGJ1aWxkcyBEUlQgYXMgcGFydCBv
ZiB0aGUgbWFpbiBidWlsZCBzdGVwCiAgICAgICAgIHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IDYxMTYy
OGJlODk1YWFhZDljZTc1ZDI1MmQ4MzVlZGZiYjRhNWEzNTMuLjM5MDM5YWVkYTU3YjMwODk2OTQ4
OWJlMWE2NzU2NGJhYTRkYjYyY2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC0zNiw4ICszNiwxMCBAQCBpbXBvcnQgbG9n
Z2luZwogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgb3MKIGltcG9ydCByZQoraW1wb3J0IHN5cwog
aW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9p
emVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90CiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYnVpbGRlcnMsIHNlcnZlcl9w
cm9jZXNzLCBQb3J0LCBEcml2ZXIsIERyaXZlck91dHB1dApAQCAtNDksNyArNTEsNiBAQCBfbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiBjbGFzcyBXZWJLaXRQb3J0KFBvcnQpOgog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgIFBvcnQuX19pbml0X18o
c2VsZiwgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuX2NhY2hlZF9hcGFjaGVfcGF0aCA9IE5vbmUg
ICMgRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIHVzZSBAbWVtb2l6ZWQgaW5zdGVhZC4KIAogICAg
ICAgICAjIEZJWE1FOiBEaXNhYmxlIHBpeGVsIHRlc3RzIHVudGlsIHRoZXkgYXJlIHJ1biBieSBk
ZWZhdWx0IG9uIGJ1aWxkLndlYmtpdC5vcmcuCiAgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZh
dWx0KCJwaXhlbF90ZXN0cyIsIEZhbHNlKQpAQCAtMzU4LDE5ICszNTksMzkgQEAgY2xhc3MgV2Vi
S2l0UG9ydChQb3J0KToKICAgICAgICAgIyBGSVhNRTogVGhpcyBkb2VzIG5vdCBleGlzdCBvbiBh
IGRlZmF1bHQgTWFjIE9TIFggTGVvcGFyZCBpbnN0YWxsLgogICAgICAgICByZXR1cm4gJ3dkaWZm
JwogCisgICAgIyBGSVhNRTogVGhpcyBkb2VzIG5vdCBiZWxvbmcgb24gdGhlIHBvcnQgb2JqZWN0
LgorICAgIEBtZW1vaXplZAogICAgIGRlZiBfcGF0aF90b19hcGFjaGUoc2VsZik6Ci0gICAgICAg
IGlmIG5vdCBzZWxmLl9jYWNoZWRfYXBhY2hlX3BhdGg6Ci0gICAgICAgICAgICAjIFRoZSBBcGFj
aGUgYmluYXJ5IHBhdGggY2FuIHZhcnkgZGVwZW5kaW5nIG9uIE9TIGFuZCBkaXN0cmlidXRpb24K
LSAgICAgICAgICAgICMgU2VlIGh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvaHR0cGQvRGlzdHJvc0Rl
ZmF1bHRMYXlvdXQKLSAgICAgICAgICAgIGZvciBwYXRoIGluIFsiL3Vzci9zYmluL2h0dHBkIiwg
Ii91c3Ivc2Jpbi9hcGFjaGUyIl06Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3Rl
bS5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlZF9hcGFjaGVf
cGF0aCA9IHBhdGgKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgaWYg
bm90IHNlbGYuX2NhY2hlZF9hcGFjaGVfcGF0aDoKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9y
KCJDb3VsZCBub3QgZmluZCBhcGFjaGUuIE5vdCBpbnN0YWxsZWQgb3IgdW5rbm93biBwYXRoLiIp
Ci0KLSAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlZF9hcGFjaGVfcGF0aAorICAgICAgICAjIFRo
ZSBBcGFjaGUgYmluYXJ5IHBhdGggY2FuIHZhcnkgZGVwZW5kaW5nIG9uIE9TIGFuZCBkaXN0cmli
dXRpb24KKyAgICAgICAgIyBTZWUgaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9EaXN0cm9z
RGVmYXVsdExheW91dAorICAgICAgICBmb3IgcGF0aCBpbiBbIi91c3Ivc2Jpbi9odHRwZCIsICIv
dXNyL3NiaW4vYXBhY2hlMiJdOgorICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlz
dHMocGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGgKKyAgICAgICAgICAgIF9sb2cu
ZXJyb3IoIkNvdWxkIG5vdCBmaW5kIGFwYWNoZS4gTm90IGluc3RhbGxlZCBvciB1bmtub3duIHBh
dGguIikKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICMgRklYTUU6IFRoaXMgYmVsb25ncyBv
biBzb21lIHBsYXRmb3JtIGFic3RyYWN0aW9uIGluc3RlYWQgb2YgUG9ydC4KKyAgICBkZWYgX2lz
X3JlZGhhdF9iYXNlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uZXhp
c3RzKCcvZXRjL3JlZGhhdC1yZWxlYXNlJykKKworICAgIGRlZiBfaXNfZGViaWFuX2Jhc2VkKHNl
bGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoJy9ldGMvZGViaWFu
X3ZlcnNpb24nKQorCisgICAgIyBXZSBwYXNzIHN5c19wbGF0Zm9ybSBpbnRvIHRoaXMgbWV0aG9k
IHRvIG1ha2UgaXQgZWFzeSB0byB1bml0IHRlc3QuCisgICAgZGVmIF9hcGFjaGVfY29uZmlnX2Zp
bGVfbmFtZV9mb3JfcGxhdGZvcm0oc2VsZiwgc3lzX3BsYXRmb3JtKToKKyAgICAgICAgaWYgc3lz
X3BsYXRmb3JtID09ICdjeWd3aW4nOgorICAgICAgICAgICAgcmV0dXJuICdjeWd3aW4taHR0cGQu
Y29uZicgICMgQ1lHV0lOIGlzIHRoZSBvbmx5IHBsYXRmb3JtIHRvIHN0aWxsIHVzZSBBcGFjaGUg
MS4zLgorICAgICAgICBpZiBzeXNfcGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKKyAgICAg
ICAgICAgIGlmIHNlbGYuX2lzX3JlZGhhdF9iYXNlZCgpOgorICAgICAgICAgICAgICAgIHJldHVy
biAnZmVkb3JhLWh0dHBkLmNvbmYnICAjIFRoaXMgaXMgYW4gQXBhY2hlIDIueCBjb25maWcgZmls
ZSBkZXNwaXRlIHRoZSBuYW1pbmcuCisgICAgICAgICAgICBpZiBzZWxmLl9pc19kZWJpYW5fYmFz
ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYn
CisgICAgICAgICMgQWxsIHBsYXRmb3JtcyB1c2UgYXBhY2hlMiBleGNlcHQgZm9yIENZR1dJTiAo
YW5kIE1hYyBPUyBYIFRpZ2VyIGFuZCBwcmlvciwgd2hpY2ggd2Ugbm8gbG9uZ2VyIHN1cHBvcnQp
LgorICAgICAgICByZXR1cm4gImFwYWNoZTItaHR0cGQuY29uZiIKKworICAgIGRlZiBfcGF0aF90
b19hcGFjaGVfY29uZmlnX2ZpbGUoc2VsZik6CisgICAgICAgIGNvbmZpZ19maWxlX25hbWUgPSBz
ZWxmLl9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0oc3lzLnBsYXRmb3JtKQor
ICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2Rp
cigpLCAnaHR0cCcsICdjb25mJywgY29uZmlnX2ZpbGVfbmFtZSkKIAogCiBjbGFzcyBXZWJLaXRE
cml2ZXIoRHJpdmVyKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKaW5kZXggODJmYmVkYTY1NmQ1YjRm
MzMxZGQ3MGNmMzM1MDJmYzE5ZjQyZTVlNS4uNjAzZWE1NGNiMzllNDM1YWFjY2Y3ODRmMWRjMDYw
OTViZjlhNDdkZSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKQEAgLTE0NiwzICsxNDYsNDMgQEAg
QlVHX1NLSVBQRUQgU0tJUCA6IG1lZGlhID0gRkFJTCIiIikKICAgICAgICAgcG9ydC5fZXhlY3V0
aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUsIHNob3VsZF90aHJvdz1UcnVlKQog
ICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXInLCAnLS1yZWxlYXNlJ11cbiIKICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJp
dmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKSkKKworICAgIGRlZiBfYXNzZXJ0
X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShzZWxmLCBwb3J0LCBwbGF0Zm9ybSwgY29uZmlnX2Zp
bGUpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVf
bmFtZV9mb3JfcGxhdGZvcm0ocGxhdGZvcm0pLCBjb25maWdfZmlsZSkKKworICAgIGRlZiB0ZXN0
X2xpbnV4X2Rpc3Ryb19kZXRlY3Rpb24oc2VsZik6CisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0
UG9ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfcmVkaGF0X2Jhc2VkKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfZGViaWFuX2Jhc2VkKCkpCisKKyAg
ICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsnL2V0Yy9yZWRoYXQtcmVs
ZWFzZSc6ICcnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX2lzX3JlZGhhdF9iYXNl
ZCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuX2lzX2RlYmlhbl9iYXNlZCgpKQor
CisgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Jy9ldGMvZGViaWFu
X3ZlcnNpb24nOiAnJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfcmVkaGF0
X2Jhc2VkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9pc19kZWJpYW5fYmFzZWQo
KSkKKworICAgIGRlZiB0ZXN0X2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShz
ZWxmKToKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnY3lnd2luJywgJ2N5Z3dpbi1odHRw
ZC5jb25mJykKKworICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3Jt
KHBvcnQsICdsaW51eDInLCAnYXBhY2hlMi1odHRwZC5jb25mJykKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnbGludXgzJywgJ2FwYWNoZTItaHR0
cGQuY29uZicpCisKKyAgICAgICAgcG9ydC5faXNfcmVkaGF0X2Jhc2VkID0gbGFtYmRhOiBUcnVl
CisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xp
bnV4MicsICdmZWRvcmEtaHR0cGQuY29uZicpCisKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQ
b3J0KCkKKyAgICAgICAgcG9ydC5faXNfZGViaWFuX2Jhc2VkID0gbGFtYmRhOiBUcnVlCisgICAg
ICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4Mics
ICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJykKKworICAgICAgICBzZWxmLl9hc3NlcnRfY29u
ZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdtYWMnLCAnYXBhY2hlMi1odHRwZC5jb25mJykK
KyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnd2lu
MzInLCAnYXBhY2hlMi1odHRwZC5jb25mJykgICMgd2luMzIgaXNuJ3QgYSBzdXBwb3J0ZWQgc3lz
LnBsYXRmb3JtLiAgQXBwbGVXaW4vV2luQ2Fpcm8vV2luQ0UgcG9ydHMgYWxsIHVzZSBjeWd3aW4u
CisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2Jh
cmYnLCAnYXBhY2hlMi1odHRwZC5jb25mJykKKworICAgIGRlZiB0ZXN0X3BhdGhfdG9fYXBhY2hl
X2NvbmZpZ19maWxlKHNlbGYpOgorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAg
ICAgICAjIE1vY2sgb3V0IF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gdG8g
aWdub3JlIHRoZSBwYXNzZWQgc3lzLnBsYXRmb3JtIHZhbHVlLgorICAgICAgICBwb3J0Ll9hcGFj
aGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gPSBsYW1iZGEgcGxhdGZvcm06ICdodHRw
ZC5jb25mJworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9wYXRoX3RvX2FwYWNoZV9j
b25maWdfZmlsZSgpLCAnL21vY2svTGF5b3V0VGVzdHMvaHR0cC9jb25mL2h0dHBkLmNvbmYnKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4u
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weQppbmRl
eCBhMDZiZDE2MDhiOGFiMDY4NTIwNjU1Yzk5YjU0ODM2Y2QzMGI3YzE4Li5lZjIwNTMxNGUxNDVi
MzNiMmQ0YTI3ZDdjMWNiYzBmMzViMjlkZWU1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weQpAQCAtNTcsNSArNTcsNiBAQCBjbGFzcyBXaW5Q
b3J0KFdlYktpdFBvcnQpOgogICAgICAgICAjIEZJWE1FOiBUaGlzIGRvZXMgbm90IHdvcmsgZm9y
IFdlYktpdDIuCiAgICAgICAgIHJldHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgs
IHNlbGYuRkFMTEJBQ0tfUEFUSFNbc2VsZi5fdmVyc2lvbl0pCiAKLSAgICBkZWYgX3BhdGhfdG9f
YXBhY2hlX2NvbmZpZ19maWxlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywgJ2N5Z3dpbi1o
dHRwZC5jb25mJykKKyAgICAjIEZJWE1FOiB3ZWJraXRwZXJsL2h0dHBkLnBtIGluc3RhbGxzIC91
c3IvbGliL2FwYWNoZS9saWJwaHA0LmRsbCBvbiBjeWN3aW4gYXV0b21hdGljYWxseQorICAgICMg
YXMgcGFydCBvZiBydW5uaW5nIG9sZC1ydW4td2Via2l0LXRlc3RzLiAgVGhhdCdzIGJhZCBkZXNp
Z24sIGJ1dCB3ZSBtYXkgbmVlZCBzb21lIHNpbWlsYXIgaGFjay4KKyAgICAjIFdlIG1pZ2h0IHVz
ZSBzZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIgZm9yIHN1Y2ggYSBoYWNrIChvciBtb2RpZnkgYXBh
Y2hlX2h0dHBfc2VydmVyLnB5KS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKaW5k
ZXggYzYyM2M5ZjhkZWJmZWY0MDI4NDRjY2ZkYTVlOGVhZTVkMGM4ZDJjZS4uNjIyNjhmMjgxNjcz
MmY5ZTg2OGUwODI2NDEyZTc2ODVhODUzOGQ5NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9z
ZXJ2ZXIucHkKQEAgLTYyLDEzICs2MiwxMCBAQCBjbGFzcyBMYXlvdXRUZXN0QXBhY2hlSHR0cGQo
aHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAgICAgICAgIHNlbGYuX3BpZF9maWxl
ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3J1bnRpbWVfcGF0aCwgJyVzLnBpZCcgJSBz
ZWxmLl9uYW1lKQogCiAgICAgICAgIHRlc3RfZGlyID0gc2VsZi5fcG9ydF9vYmoubGF5b3V0X3Rl
c3RzX2RpcigpCi0gICAgICAgIGpzX3Rlc3RfcmVzb3VyY2VzX2RpciA9IHNlbGYuX2N5Z3dpbl9z
YWZlX2pvaW4odGVzdF9kaXIsICJmYXN0IiwgImpzIiwKLSAgICAgICAgICAgICJyZXNvdXJjZXMi
KQorICAgICAgICBqc190ZXN0X3Jlc291cmNlc19kaXIgPSBzZWxmLl9jeWd3aW5fc2FmZV9qb2lu
KHRlc3RfZGlyLCAiZmFzdCIsICJqcyIsICJyZXNvdXJjZXMiKQogICAgICAgICBtZWRpYV9yZXNv
dXJjZXNfZGlyID0gc2VsZi5fY3lnd2luX3NhZmVfam9pbih0ZXN0X2RpciwgIm1lZGlhIikKLSAg
ICAgICAgbWltZV90eXBlc19wYXRoID0gc2VsZi5fY3lnd2luX3NhZmVfam9pbih0ZXN0X2Rpciwg
Imh0dHAiLCAiY29uZiIsCi0gICAgICAgICAgICAibWltZS50eXBlcyIpCi0gICAgICAgIGNlcnRf
ZmlsZSA9IHNlbGYuX2N5Z3dpbl9zYWZlX2pvaW4odGVzdF9kaXIsICJodHRwIiwgImNvbmYiLAot
ICAgICAgICAgICAgIndlYmtpdC1odHRwZC5wZW0iKQorICAgICAgICBtaW1lX3R5cGVzX3BhdGgg
PSBzZWxmLl9jeWd3aW5fc2FmZV9qb2luKHRlc3RfZGlyLCAiaHR0cCIsICJjb25mIiwgIm1pbWUu
dHlwZXMiKQorICAgICAgICBjZXJ0X2ZpbGUgPSBzZWxmLl9jeWd3aW5fc2FmZV9qb2luKHRlc3Rf
ZGlyLCAiaHR0cCIsICJjb25mIiwgIndlYmtpdC1odHRwZC5wZW0iKQogICAgICAgICBhY2Nlc3Nf
bG9nID0gc2VsZi5fY3lnd2luX3NhZmVfam9pbihvdXRwdXRfZGlyLCAiYWNjZXNzX2xvZy50eHQi
KQogICAgICAgICBlcnJvcl9sb2cgPSBzZWxmLl9jeWd3aW5fc2FmZV9qb2luKG91dHB1dF9kaXIs
ICJlcnJvcl9sb2cudHh0IikKICAgICAgICAgZG9jdW1lbnRfcm9vdCA9IHNlbGYuX2N5Z3dpbl9z
YWZlX2pvaW4odGVzdF9kaXIsICJodHRwIiwgInRlc3RzIikKQEAgLTk5LDggKzk2LDcgQEAgY2xh
c3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2Up
OgogICAgICAgICAgICAgJy1rJywgInN0b3AiXQogCiAgICAgICAgIGlmIHNlbGYuX2lzX2N5Z3dp
bigpOgotICAgICAgICAgICAgY3lnYmluID0gc2VsZi5fcG9ydF9vYmouX3BhdGhfZnJvbV9iYXNl
KCd0aGlyZF9wYXJ0eScsICdjeWd3aW4nLAotICAgICAgICAgICAgICAgICdiaW4nKQorICAgICAg
ICAgICAgY3lnYmluID0gc2VsZi5fcG9ydF9vYmouX3BhdGhfZnJvbV9iYXNlKCd0aGlyZF9wYXJ0
eScsICdjeWd3aW4nLCAnYmluJykKICAgICAgICAgICAgICMgTm90IGVudGlyZWx5IHN1cmUgd2h5
LCBidXQgZnJvbSBjeWd3aW4gd2UgbmVlZCB0byBydW4gdGhlCiAgICAgICAgICAgICAjIGh0dHBk
IGNvbW1hbmQgdGhyb3VnaCBiYXNoLgogICAgICAgICAgICAgc2VsZi5fc3RhcnRfY21kID0gWwpA
QCAtMTI2LDggKzEyMiw4IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZl
cl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToKICAgICBkZWYgX2lzX2N5Z3dpbihzZWxmKToKICAgICAg
ICAgcmV0dXJuIHN5cy5wbGF0Zm9ybSBpbiAoIndpbjMyIiwgImN5Z3dpbiIpCiAKKyAgICAjIEZJ
WE1FOiBUaGlzIGlzIHRoZSB3cm9uZyBwbGFjZSB0byBoYXZlIHRoaXMgbWV0aG9kLiAgUGVyaGFw
cyB0aGlzIGJlbG9uZ3MgaW4gZmlsZXN5c3RlbS5weT8KICAgICBkZWYgX2N5Z3dpbl9zYWZlX2pv
aW4oc2VsZiwgKnBhcnRzKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHBsYXRmb3JtIGFwcHJvcHJp
YXRlIHBhdGguIiIiCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oKnBhcnRzKQogICAgICAg
ICBpZiBzZWxmLl9pc19jeWd3aW4oKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY3ln
d2luX3BhdGgocGF0aCkKQEAgLTE2MCw2ICsxNTYsNyBAQCBjbGFzcyBMYXlvdXRUZXN0QXBhY2hl
SHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAgICAgICAgIGh0dHBkX2Nv
bmZpZyA9IHNlbGYuX3BvcnRfb2JqLl9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSgpCiAgICAg
ICAgIGh0dHBkX2NvbmZpZ19jb3B5ID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXIsICJodHRwZC5j
b25mIikKICAgICAgICAgaHR0cGRfY29uZiA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2Zp
bGUoaHR0cGRfY29uZmlnKQorICAgICAgICAjIEZJWE1FOiBUaGlzIG9ubHkgd29ya3MgZm9yIENo
cm9taXVtLiBJbnN0ZWFkIGl0IHNob3VsZCB1c2Ugc29tZSBhYnN0cmFjdGlvbiBvbiB0aGUgcG9y
dCBvYmplY3QuCiAgICAgICAgIGlmIHNlbGYuX2lzX2N5Z3dpbigpOgogICAgICAgICAgICAgIyBU
aGlzIGlzIGEgZ3Jvc3MgaGFjaywgYnV0IGl0IGxldHMgdXMgdXNlIHRoZSB1cHN0cmVhbSAuY29u
ZiBmaWxlCiAgICAgICAgICAgICAjIGFuZCBvdXIgY2hlY2tlZCBpbiBjeWd3aW4uIFRoaXMgdGVs
bHMgdGhlIHNlcnZlciB0aGUgcm9vdApAQCAtMTY3LDEwICsxNjQsOCBAQCBjbGFzcyBMYXlvdXRU
ZXN0QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAgICAgICAg
ICAgICAjIHBsdXMgdGhlIHJlbGF0aXZlIHBhdGhzIHRvIHRoZSAuc28gZmlsZXMgbGlzdGVkIGlu
IHRoZSAuY29uZgogICAgICAgICAgICAgIyBmaWxlLiBXZSBoYXZlIGFwYWNoZS9jeWd3aW4gY2hl
Y2tlZCBpbnRvIG91ciB0cmVlIHNvCiAgICAgICAgICAgICAjIHBlb3BsZSBkb24ndCBoYXZlIHRv
IGluc3RhbGwgaXQgaW50byB0aGVpciBjeWd3aW4uCi0gICAgICAgICAgICBjeWd1c3IgPSBzZWxm
Ll9wb3J0X29iai5fcGF0aF9mcm9tX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsCi0gICAg
ICAgICAgICAgICAgJ3VzcicpCi0gICAgICAgICAgICBodHRwZF9jb25mID0gaHR0cGRfY29uZi5y
ZXBsYWNlKCdTZXJ2ZXJSb290ICIvdXNyIicsCi0gICAgICAgICAgICAgICAgJ1NlcnZlclJvb3Qg
IiVzIicgJSBzZWxmLl9nZXRfY3lnd2luX3BhdGgoY3lndXNyKSkKKyAgICAgICAgICAgIGN5Z3Vz
ciA9IHNlbGYuX3BvcnRfb2JqLl9wYXRoX2Zyb21fYmFzZSgndGhpcmRfcGFydHknLCAnY3lnd2lu
JywgJ3VzcicpCisgICAgICAgICAgICBodHRwZF9jb25mID0gaHR0cGRfY29uZi5yZXBsYWNlKCdT
ZXJ2ZXJSb290ICIvdXNyIicsICdTZXJ2ZXJSb290ICIlcyInICUgc2VsZi5fZ2V0X2N5Z3dpbl9w
YXRoKGN5Z3VzcikpCiAKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUo
aHR0cGRfY29uZmlnX2NvcHksIGh0dHBkX2NvbmYpCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>